f0c104c5056a43dc4a9f4267fd08c8b521d2f660
Stefan Schuermans sender static destination n...

Stefan Schuermans authored 12 years ago

1) /* Blinker
2)    Copyright 2011 Stefan Schuermans <stefan@blinkenarea.org>
3)    Copyleft GNU public license - http://www.gnu.org/copyleft/gpl.html
4)    a blinkenarea.org project */
5) 
6) #ifndef SENDERDEST_IMPL_H
7) #define SENDERDEST_IMPL_H
8) 
9) #include <string>
10) 
11) #include "Directory.h"
12) #include "File.h"
13) #include "Module.h"
14) #include "Sender.h"
15) #include "SenderDest.h"
16) #include "SettingFile.h"
17) 
18) namespace Blinker {
19) 
20) /**
21)  * @brief constructor
22)  * @param[in] sender owning sender object
23)  * @param[in] dirBase base directory
24)  * @param[in] pNoFrameData protocol data for "no frame" packet
Stefan Schuermans simplified sender module a...

Stefan Schuermans authored 12 years ago

25)  *                         (empty if unknown)
Stefan Schuermans sender static destination n...

Stefan Schuermans authored 12 years ago

26)  */
27) template<typename ADDR, typename SOCK>
28) Sender<ADDR, SOCK>::Dest::Dest(Sender &sender, const Directory &dirBase,
29)                                const std::string *pNoFrameData):
30)   m_sender(sender),
31)   m_fileAddr(dirBase.getFile("addr")),
32)   m_pNoFrameData(pNoFrameData),
33)   m_pData(pNoFrameData)
34) {
35)   // set up
36)   getAddr();
37) }
38) 
39) /// destructor
40) template<typename ADDR, typename SOCK>
41) Sender<ADDR, SOCK>::Dest::~Dest()
42) {
43)   // send "no frame" protocol data to old address
44)   send(m_pNoFrameData);
45) }
46) 
47) /// check for update of configuration
48) template<typename ADDR, typename SOCK>
49) void Sender<ADDR, SOCK>::Dest::updateConfig()
50) {
51)   // address file was modified -> re-get address
52)   if (m_fileAddr.checkModified())
53)     getAddr();
54) }
55) 
56) /**
57)  * @brief set current protocol data
Stefan Schuermans simplified sender module a...

Stefan Schuermans authored 12 years ago

58)  * @param[in] pData protocol data to send to address (empty if unknown)
Stefan Schuermans sender static destination n...

Stefan Schuermans authored 12 years ago

59)  */
60) template<typename ADDR, typename SOCK>
61) void Sender<ADDR, SOCK>::Dest::setProtoData(const std::string *pData)
62) {
63)   // remember new data
64)   m_pData = pData;
65) 
66)   // send new protocol data to current address
67)   send(m_pData);
68) }
69) 
70) /// (re-)get address
71) template<typename ADDR, typename SOCK>
72) void Sender<ADDR, SOCK>::Dest::getAddr()
73) {
74)   std::string strAddr;
75) 
76)   // send "no frame" protocol data to old address
77)   send(m_pNoFrameData);
78) 
Stefan Schuermans implemented specialized set...

Stefan Schuermans authored 12 years ago

79)   // get new address from file
80)   m_fileAddr.update();
Stefan Schuermans sender static destination n...

Stefan Schuermans authored 12 years ago

81) 
82)   // send current protocol data to new address
83)   send(m_pData);
84) }
85) 
86) /**
87)  * @brief send protocol data to address
Stefan Schuermans simplified sender module a...

Stefan Schuermans authored 12 years ago

88)  * @param[in] pData protocol data to send to address (empty if unknown)
Stefan Schuermans sender static destination n...

Stefan Schuermans authored 12 years ago

89)  */
90) template<typename ADDR, typename SOCK>
91) void Sender<ADDR, SOCK>::Dest::send(const std::string *pData)
92) {
Stefan Schuermans implemented specialized set...

Stefan Schuermans authored 12 years ago

93)   if (m_sender.m_pSock && m_fileAddr.m_valid && !pData->empty())
94)     m_sender.m_pSock->send(*pData, m_fileAddr.m_obj);