7eaa394e64baed2b37cd0cfacc7fb08ddaadbe27
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_haveAddr(false),
33)   m_pNoFrameData(pNoFrameData),
34)   m_pData(pNoFrameData)
35) {
36)   // set up
37)   getAddr();
38) }
39) 
40) /// destructor
41) template<typename ADDR, typename SOCK>
42) Sender<ADDR, SOCK>::Dest::~Dest()
43) {
44)   // send "no frame" protocol data to old address
45)   send(m_pNoFrameData);
46) }
47) 
48) /// check for update of configuration
49) template<typename ADDR, typename SOCK>
50) void Sender<ADDR, SOCK>::Dest::updateConfig()
51) {
52)   // address file was modified -> re-get address
53)   if (m_fileAddr.checkModified())
54)     getAddr();
55) }
56) 
57) /**
58)  * @brief set current protocol data
Stefan Schuermans simplified sender module a...

Stefan Schuermans authored 12 years ago

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

Stefan Schuermans authored 12 years ago

60)  */
61) template<typename ADDR, typename SOCK>
62) void Sender<ADDR, SOCK>::Dest::setProtoData(const std::string *pData)
63) {
64)   // remember new data
65)   m_pData = pData;
66) 
67)   // send new protocol data to current address
68)   send(m_pData);
69) }
70) 
71) /// (re-)get address
72) template<typename ADDR, typename SOCK>
73) void Sender<ADDR, SOCK>::Dest::getAddr()
74) {
75)   std::string strAddr;
76) 
77)   // send "no frame" protocol data to old address
78)   send(m_pNoFrameData);
79) 
80)   // parse new address from file
81)   m_haveAddr = m_fileAddr.getStr(strAddr) && m_addr.fromStr(strAddr);
82) 
83)   // send current protocol data to new address
84)   send(m_pData);
85) }
86) 
87) /**
88)  * @brief send protocol data to address
Stefan Schuermans simplified sender module a...

Stefan Schuermans authored 12 years ago

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

Stefan Schuermans authored 12 years ago

90)  */
91) template<typename ADDR, typename SOCK>
92) void Sender<ADDR, SOCK>::Dest::send(const std::string *pData)
93) {
Stefan Schuermans simplified sender module a...

Stefan Schuermans authored 12 years ago

94)   if (m_sender.m_pSock && m_haveAddr && !pData->empty())