f670ca05dd608c9d5b0300ca1dc493f6ffd8afa1
Stefan Schuermans implemented stream receiver

Stefan Schuermans authored 12 years ago

src/noarch/Receiver_impl.h   1) /* Blinker
Stefan Schuermans update copyright years

Stefan Schuermans authored 10 years ago

src/noarch/Receiver_impl.h   2)    Copyright 2011-2014 Stefan Schuermans <stefan@blinkenarea.org>
Stefan Schuermans implemented stream receiver

Stefan Schuermans authored 12 years ago

src/noarch/Receiver_impl.h   3)    Copyleft GNU public license - http://www.gnu.org/copyleft/gpl.html
src/noarch/Receiver_impl.h   4)    a blinkenarea.org project */
src/noarch/Receiver_impl.h   5) 
src/noarch/Receiver_impl.h   6) #ifndef BLINKER_RECEIVER_IMPL_H
src/noarch/Receiver_impl.h   7) #define BLINKER_RECEIVER_IMPL_H
src/noarch/Receiver_impl.h   8) 
src/noarch/Receiver_impl.h   9) #include <string>
src/noarch/Receiver_impl.h  10) 
src/noarch/Receiver_impl.h  11) #include <BlinkenLib/BlinkenProto.h>
src/noarch/Receiver_impl.h  12) #include <BlinkenLib/BlinkenFrame.h>
src/noarch/Receiver_impl.h  13) 
src/noarch/Receiver_impl.h  14) #include "Directory.h"
src/noarch/Receiver_impl.h  15) #include "File.h"
src/noarch/Receiver_impl.h  16) #include "IoCallee.h"
Stefan Schuermans put all managers in one str...

Stefan Schuermans authored 12 years ago

src/noarch/Receiver_impl.h  17) #include "Mgrs.h"
Stefan Schuermans implemented stream receiver

Stefan Schuermans authored 12 years ago

src/noarch/Receiver_impl.h  18) #include "Module.h"
src/noarch/Receiver_impl.h  19) #include "OutStreamFile.h"
src/noarch/Receiver_impl.h  20) #include "Protocol.h"
src/noarch/Receiver_impl.h  21) #include "ProtocolFile.h"
src/noarch/Receiver_impl.h  22) #include "Receiver.h"
src/noarch/Receiver_impl.h  23) #include "SettingFile.h"
src/noarch/Receiver_impl.h  24) #include "Time.h"
src/noarch/Receiver_impl.h  25) #include "TimeCallee.h"
src/noarch/Receiver_impl.h  26) 
src/noarch/Receiver_impl.h  27) namespace Blinker {
src/noarch/Receiver_impl.h  28) 
src/noarch/Receiver_impl.h  29) /**
src/noarch/Receiver_impl.h  30)  * @brief constructor
Stefan Schuermans make modules know their name

Stefan Schuermans authored 12 years ago

src/noarch/Receiver_impl.h  31)  * @param[in] name module name
Stefan Schuermans put all managers in one str...

Stefan Schuermans authored 12 years ago

src/noarch/Receiver_impl.h  32)  * @param[in] mgrs managers
Stefan Schuermans implemented stream receiver

Stefan Schuermans authored 12 years ago

src/noarch/Receiver_impl.h  33)  * @param[in] dirBase base directory
src/noarch/Receiver_impl.h  34)  */
src/noarch/Receiver_impl.h  35) template<typename ADDR, typename SOCK>
Stefan Schuermans make modules know their name

Stefan Schuermans authored 12 years ago

src/noarch/Receiver_impl.h  36) Receiver<ADDR, SOCK>::Receiver(const std::string &name, Mgrs &mgrs,
src/noarch/Receiver_impl.h  37)                                const Directory &dirBase):
src/noarch/Receiver_impl.h  38)   Module(name, mgrs, dirBase),
Stefan Schuermans put all managers in one str...

Stefan Schuermans authored 12 years ago

src/noarch/Receiver_impl.h  39)   m_fileOutStream(dirBase.getFile("outstream"), mgrs.m_streamMgr),
Stefan Schuermans implemented stream receiver

Stefan Schuermans authored 12 years ago

src/noarch/Receiver_impl.h  40)   m_fileBind(dirBase.getFile("bind")),
src/noarch/Receiver_impl.h  41)   m_fileSrc(dirBase.getFile("source")),
src/noarch/Receiver_impl.h  42)   m_fileProtocol(dirBase.getFile("protocol")),
src/noarch/Receiver_impl.h  43)   m_pSock(NULL),
src/noarch/Receiver_impl.h  44)   m_needTimeout(false),
src/noarch/Receiver_impl.h  45)   m_needNextReq(false)
src/noarch/Receiver_impl.h  46) {
src/noarch/Receiver_impl.h  47)   // read protocol and source address
src/noarch/Receiver_impl.h  48)   readProto();
src/noarch/Receiver_impl.h  49)   readSrc();
src/noarch/Receiver_impl.h  50) 
src/noarch/Receiver_impl.h  51)   // create and bind socket
src/noarch/Receiver_impl.h  52)   createSock();
src/noarch/Receiver_impl.h  53) }
src/noarch/Receiver_impl.h  54) 
src/noarch/Receiver_impl.h  55) /// virtual destructor
src/noarch/Receiver_impl.h  56) template<typename ADDR, typename SOCK>
src/noarch/Receiver_impl.h  57) Receiver<ADDR, SOCK>::~Receiver()
src/noarch/Receiver_impl.h  58) {
src/noarch/Receiver_impl.h  59)   // cancel stream request
src/noarch/Receiver_impl.h  60)   request(false);
src/noarch/Receiver_impl.h  61) 
src/noarch/Receiver_impl.h  62)   // destroy socket
src/noarch/Receiver_impl.h  63)   destroySock();
src/noarch/Receiver_impl.h  64) }
src/noarch/Receiver_impl.h  65) 
src/noarch/Receiver_impl.h  66) /// check for update of configuration
src/noarch/Receiver_impl.h  67) template<typename ADDR, typename SOCK>
src/noarch/Receiver_impl.h  68) void Receiver<ADDR, SOCK>::updateConfig()
src/noarch/Receiver_impl.h  69) {
src/noarch/Receiver_impl.h  70)   // output stream name file was modified -> re-get output stream
src/noarch/Receiver_impl.h  71)   if (m_fileOutStream.checkModified())
src/noarch/Receiver_impl.h  72)     m_fileOutStream.update();
src/noarch/Receiver_impl.h  73) 
src/noarch/Receiver_impl.h  74)   // bind address file was modified -> re-create socket
src/noarch/Receiver_impl.h  75)   if (m_fileBind.checkModified()) {
src/noarch/Receiver_impl.h  76)     destroySock();
src/noarch/Receiver_impl.h  77)     createSock();
src/noarch/Receiver_impl.h  78)   }
src/noarch/Receiver_impl.h  79) 
src/noarch/Receiver_impl.h  80)   // source address file was modified -> re-read source address
src/noarch/Receiver_impl.h  81)   if (m_fileSrc.checkModified())
src/noarch/Receiver_impl.h  82)     readSrc();
src/noarch/Receiver_impl.h  83) 
src/noarch/Receiver_impl.h  84)   // protocol file was modified -> re-read protocol
src/noarch/Receiver_impl.h  85)   if (m_fileProtocol.checkModified())
src/noarch/Receiver_impl.h  86)     readProto();
src/noarch/Receiver_impl.h  87) }
src/noarch/Receiver_impl.h  88) 
src/noarch/Receiver_impl.h  89) /// callback when requested time reached
src/noarch/Receiver_impl.h  90) template<typename ADDR, typename SOCK>
src/noarch/Receiver_impl.h  91) void Receiver<ADDR, SOCK>::timeCall()
src/noarch/Receiver_impl.h  92) {
src/noarch/Receiver_impl.h  93)   Time now = Time::now();
src/noarch/Receiver_impl.h  94) 
src/noarch/Receiver_impl.h  95)   // stream timeout
src/noarch/Receiver_impl.h  96)   if (m_needTimeout && m_timeout <= now) {
src/noarch/Receiver_impl.h  97)     m_needTimeout = false;
src/noarch/Receiver_impl.h  98)     m_fileOutStream.setFrame(NULL);
src/noarch/Receiver_impl.h  99)   }
src/noarch/Receiver_impl.h 100) 
src/noarch/Receiver_impl.h 101)   // re-request stream
src/noarch/Receiver_impl.h 102)   if (m_needNextReq && m_nextReq <= now)
src/noarch/Receiver_impl.h 103)     request(true);
src/noarch/Receiver_impl.h 104) 
src/noarch/Receiver_impl.h 105)   updateTimeCallback();
src/noarch/Receiver_impl.h 106) }
src/noarch/Receiver_impl.h 107) 
src/noarch/Receiver_impl.h 108) /**
src/noarch/Receiver_impl.h 109)  * @brief callback when I/O object is readable
src/noarch/Receiver_impl.h 110)  * @param[in] io I/O object that is readable
src/noarch/Receiver_impl.h 111)  */
src/noarch/Receiver_impl.h 112) template<typename ADDR, typename SOCK>
src/noarch/Receiver_impl.h 113) void Receiver<ADDR, SOCK>::ioReadCall(Io *io)
src/noarch/Receiver_impl.h 114) {
src/noarch/Receiver_impl.h 115)   // reception on socket
src/noarch/Receiver_impl.h 116)   if (io == m_pSock)
src/noarch/Receiver_impl.h 117)     receiveFromSock();
src/noarch/Receiver_impl.h 118) }
src/noarch/Receiver_impl.h 119) 
src/noarch/Receiver_impl.h 120) /**
src/noarch/Receiver_impl.h 121)  * @brief callback when I/O object is writable
src/noarch/Receiver_impl.h 122)  * @param[in] io I/O object that is writable
src/noarch/Receiver_impl.h 123)  */
src/noarch/Receiver_impl.h 124) template<typename ADDR, typename SOCK>
src/noarch/Receiver_impl.h 125) void Receiver<ADDR, SOCK>::ioWriteCall(Io *io)
src/noarch/Receiver_impl.h 126) {
src/noarch/Receiver_impl.h 127)   (void)io; // unused
src/noarch/Receiver_impl.h 128) }
src/noarch/Receiver_impl.h 129) 
src/noarch/Receiver_impl.h 130) /// (re-)read source address
src/noarch/Receiver_impl.h 131) template<typename ADDR, typename SOCK>
src/noarch/Receiver_impl.h 132) void Receiver<ADDR, SOCK>::readSrc()
src/noarch/Receiver_impl.h 133) {
src/noarch/Receiver_impl.h 134)   // cancel old stream request
src/noarch/Receiver_impl.h 135)   request(false);
src/noarch/Receiver_impl.h 136)   // set "no frame", because stream is going to change
src/noarch/Receiver_impl.h 137)   m_fileOutStream.setFrame(NULL);
src/noarch/Receiver_impl.h 138) 
src/noarch/Receiver_impl.h 139)   m_fileSrc.update();
src/noarch/Receiver_impl.h 140) 
src/noarch/Receiver_impl.h 141)   // send new stream request
src/noarch/Receiver_impl.h 142)   request(true);
src/noarch/Receiver_impl.h 143) }
src/noarch/Receiver_impl.h 144) 
src/noarch/Receiver_impl.h 145) /// (re-)read protocol
src/noarch/Receiver_impl.h 146) template<typename ADDR, typename SOCK>
src/noarch/Receiver_impl.h 147) void Receiver<ADDR, SOCK>::readProto()
src/noarch/Receiver_impl.h 148) {
src/noarch/Receiver_impl.h 149)   // cancel old stream request
src/noarch/Receiver_impl.h 150)   request(false);
src/noarch/Receiver_impl.h 151)   // set "no frame", because stream is going to change
src/noarch/Receiver_impl.h 152)   m_fileOutStream.setFrame(NULL);
src/noarch/Receiver_impl.h 153) 
src/noarch/Receiver_impl.h 154)   // read new protocol from file
src/noarch/Receiver_impl.h 155)   m_fileProtocol.update();
src/noarch/Receiver_impl.h 156) 
src/noarch/Receiver_impl.h 157)   // send new stream request
src/noarch/Receiver_impl.h 158)   request(true);
src/noarch/Receiver_impl.h 159) }
src/noarch/Receiver_impl.h 160) 
src/noarch/Receiver_impl.h 161) /// create socket and bind it
src/noarch/Receiver_impl.h 162) template<typename ADDR, typename SOCK>
src/noarch/Receiver_impl.h 163) void Receiver<ADDR, SOCK>::createSock()
src/noarch/Receiver_impl.h 164) {
src/noarch/Receiver_impl.h 165)   // create socket
src/noarch/Receiver_impl.h 166)   if (!m_pSock) {
src/noarch/Receiver_impl.h 167)     m_pSock = new SOCK();
src/noarch/Receiver_impl.h 168)     if (!m_pSock)
src/noarch/Receiver_impl.h 169)       return;
src/noarch/Receiver_impl.h 170)   }
src/noarch/Receiver_impl.h 171) 
src/noarch/Receiver_impl.h 172)   // get bind address from bind address setting file
src/noarch/Receiver_impl.h 173)   m_fileBind.update();
src/noarch/Receiver_impl.h 174)   if (!m_fileBind.m_valid) {
src/noarch/Receiver_impl.h 175)     delete m_pSock;
src/noarch/Receiver_impl.h 176)     m_pSock = NULL;
src/noarch/Receiver_impl.h 177)     return;
src/noarch/Receiver_impl.h 178)   }
src/noarch/Receiver_impl.h 179) 
src/noarch/Receiver_impl.h 180)   // bind socket
src/noarch/Receiver_impl.h 181)   if (!m_pSock->bind(m_fileBind.m_obj)) {
src/noarch/Receiver_impl.h 182)     delete m_pSock;
src/noarch/Receiver_impl.h 183)     m_pSock = NULL;
src/noarch/Receiver_impl.h 184)     return;
src/noarch/Receiver_impl.h 185)   }
src/noarch/Receiver_impl.h 186) 
src/noarch/Receiver_impl.h 187)   // request callback on recepetion
Stefan Schuermans put all managers in one str...

Stefan Schuermans authored 12 years ago

src/noarch/Receiver_impl.h 188)   m_mgrs.m_callMgr.requestIoReadCall(this, m_pSock);
Stefan Schuermans implemented stream receiver

Stefan Schuermans authored 12 years ago

src/noarch/Receiver_impl.h 189) 
src/noarch/Receiver_impl.h 190)   // send new stream request
src/noarch/Receiver_impl.h 191)   request(true);
src/noarch/Receiver_impl.h 192) }
src/noarch/Receiver_impl.h 193) 
src/noarch/Receiver_impl.h 194) /// destroy socket
src/noarch/Receiver_impl.h 195) template<typename ADDR, typename SOCK>
src/noarch/Receiver_impl.h 196) void Receiver<ADDR, SOCK>::destroySock()
src/noarch/Receiver_impl.h 197) {
src/noarch/Receiver_impl.h 198)   // cancel old stream request
src/noarch/Receiver_impl.h 199)   request(false);
src/noarch/Receiver_impl.h 200)   // set "no frame", because stream is going to change
src/noarch/Receiver_impl.h 201)   m_fileOutStream.setFrame(NULL);
src/noarch/Receiver_impl.h 202) 
src/noarch/Receiver_impl.h 203)   // cancel callback request
Stefan Schuermans put all managers in one str...

Stefan Schuermans authored 12 years ago

src/noarch/Receiver_impl.h 204)   m_mgrs.m_callMgr.cancelIoReadCall(this, m_pSock);
Stefan Schuermans implemented stream receiver

Stefan Schuermans authored 12 years ago

src/noarch/Receiver_impl.h 205) 
src/noarch/Receiver_impl.h 206)   // destroy socket
src/noarch/Receiver_impl.h 207)   if (m_pSock) {
src/noarch/Receiver_impl.h 208)     delete m_pSock;
src/noarch/Receiver_impl.h 209)     m_pSock = NULL;
src/noarch/Receiver_impl.h 210)   }
src/noarch/Receiver_impl.h 211) }
src/noarch/Receiver_impl.h 212) 
src/noarch/Receiver_impl.h 213) /**
src/noarch/Receiver_impl.h 214)  * @brief request stream / cancel stream request
src/noarch/Receiver_impl.h 215)  * @param req if to send a request (otherwise: cancel request)
src/noarch/Receiver_impl.h 216)  */
src/noarch/Receiver_impl.h 217) template<typename ADDR, typename SOCK>
src/noarch/Receiver_impl.h 218) void Receiver<ADDR, SOCK>::request(bool req)
src/noarch/Receiver_impl.h 219) {
src/noarch/Receiver_impl.h 220)   etBlinkenPacket type;
src/noarch/Receiver_impl.h 221)   char buf[65536];
src/noarch/Receiver_impl.h 222)   int len;
src/noarch/Receiver_impl.h 223)   std::string data;
src/noarch/Receiver_impl.h 224) 
src/noarch/Receiver_impl.h 225)   // check that there is a socket, a source address and a protocol
src/noarch/Receiver_impl.h 226)   if (!m_pSock || !m_fileSrc.m_valid || !m_fileProtocol.m_valid)
src/noarch/Receiver_impl.h 227)     return;
src/noarch/Receiver_impl.h 228) 
src/noarch/Receiver_impl.h 229)   // assemble request / cancel request
src/noarch/Receiver_impl.h 230)   type = req ? BlinkenPacketRequest: BlinkenPacketEndRequest;
src/noarch/Receiver_impl.h 231)   len = BlinkenProtoMakePacket(m_fileProtocol.m_obj.m_proto, type,
src/noarch/Receiver_impl.h 232)                                buf, sizeof(buf));
src/noarch/Receiver_impl.h 233)   if (len < 0)
src/noarch/Receiver_impl.h 234)     len = 0;
src/noarch/Receiver_impl.h 235)   data.assign(buf, len);
src/noarch/Receiver_impl.h 236) 
src/noarch/Receiver_impl.h 237)   // send request / cancel request
src/noarch/Receiver_impl.h 238)   m_pSock->send(data, m_fileSrc.m_obj);
src/noarch/Receiver_impl.h 239) 
src/noarch/Receiver_impl.h 240)   // set time for next request
src/noarch/Receiver_impl.h 241)   if (req)
src/noarch/Receiver_impl.h 242)     m_nextReq = Time::now() + Time(10);
src/noarch/Receiver_impl.h 243)   m_needNextReq = req;
src/noarch/Receiver_impl.h 244)   updateTimeCallback();
src/noarch/Receiver_impl.h 245) }
src/noarch/Receiver_impl.h 246) 
src/noarch/Receiver_impl.h 247) /// receive data from socket
src/noarch/Receiver_impl.h 248) template<typename ADDR, typename SOCK>
src/noarch/Receiver_impl.h 249) void Receiver<ADDR, SOCK>::receiveFromSock()
src/noarch/Receiver_impl.h 250) {
src/noarch/Receiver_impl.h 251)   etBlinkenProto proto;
src/noarch/Receiver_impl.h 252)   etBlinkenPacket packet;
src/noarch/Receiver_impl.h 253)   std::string data;
src/noarch/Receiver_impl.h 254)   ADDR addr;
src/noarch/Receiver_impl.h 255) 
src/noarch/Receiver_impl.h 256)   // make sure socket exists
src/noarch/Receiver_impl.h 257)   if (!m_pSock)
src/noarch/Receiver_impl.h 258)     return;
src/noarch/Receiver_impl.h 259) 
src/noarch/Receiver_impl.h 260)   // receive (leave if no reception)
src/noarch/Receiver_impl.h 261)   if (!m_pSock->recv(data, addr))
src/noarch/Receiver_impl.h 262)     return;
src/noarch/Receiver_impl.h 263) 
src/noarch/Receiver_impl.h 264)   // check source address (if configured)
src/noarch/Receiver_impl.h 265)   if (m_fileSrc.m_valid && addr != m_fileSrc.m_obj)
src/noarch/Receiver_impl.h 266)     return; // mismatch
src/noarch/Receiver_impl.h 267) 
Stefan Schuermans first check address and the...

Stefan Schuermans authored 12 years ago

src/noarch/Receiver_impl.h 268)   // detect packet type and protocol
src/noarch/Receiver_impl.h 269)   BlinkenProtoDetectPacket(data.c_str(), data.size(), &proto, &packet);
src/noarch/Receiver_impl.h 270) 
Stefan Schuermans implemented stream receiver

Stefan Schuermans authored 12 years ago

src/noarch/Receiver_impl.h 271)   // check protocol (if configured)
src/noarch/Receiver_impl.h 272)   if (m_fileProtocol.m_valid && proto != m_fileProtocol.m_obj.m_proto)
src/noarch/Receiver_impl.h 273)     return; // mismatch
src/noarch/Receiver_impl.h 274) 
src/noarch/Receiver_impl.h 275)   switch (packet) {
src/noarch/Receiver_impl.h 276) 
src/noarch/Receiver_impl.h 277)     // frame -> process it
src/noarch/Receiver_impl.h 278)     case BlinkenPacketFrame:
src/noarch/Receiver_impl.h 279)       procFrame(data);
src/noarch/Receiver_impl.h 280)       break;
src/noarch/Receiver_impl.h 281) 
src/noarch/Receiver_impl.h 282)     // end of stream -> pass on "no frame"
src/noarch/Receiver_impl.h 283)     case BlinkenPacketStreamEnd:
src/noarch/Receiver_impl.h 284)       m_fileOutStream.setFrame(NULL);
src/noarch/Receiver_impl.h 285)       break;
src/noarch/Receiver_impl.h 286) 
src/noarch/Receiver_impl.h 287)     default:
src/noarch/Receiver_impl.h 288)       break;
src/noarch/Receiver_impl.h 289) 
src/noarch/Receiver_impl.h 290)   } // switch (packet)
src/noarch/Receiver_impl.h 291) }
src/noarch/Receiver_impl.h 292) 
src/noarch/Receiver_impl.h 293) /**
src/noarch/Receiver_impl.h 294)  * @brief process frame
src/noarch/Receiver_impl.h 295)  * @param[in] data received frame protocol data
src/noarch/Receiver_impl.h 296)  */
src/noarch/Receiver_impl.h 297) template<typename ADDR, typename SOCK>
src/noarch/Receiver_impl.h 298) void Receiver<ADDR, SOCK>::procFrame(const std::string &data)
src/noarch/Receiver_impl.h 299) {
src/noarch/Receiver_impl.h 300)   stBlinkenFrame *pFrame;
src/noarch/Receiver_impl.h 301) 
src/noarch/Receiver_impl.h 302)   // parse frame
src/noarch/Receiver_impl.h 303)   pFrame = BlinkenFrameFromNetwork(data.c_str(), data.size(), NULL);
src/noarch/Receiver_impl.h 304)   if (!pFrame)
src/noarch/Receiver_impl.h 305)     return;
src/noarch/Receiver_impl.h 306) 
src/noarch/Receiver_impl.h 307)   // pass on frame
src/noarch/Receiver_impl.h 308)   m_fileOutStream.setFrame(pFrame);
src/noarch/Receiver_impl.h 309) 
Stefan Schuermans fix memory leak

Stefan Schuermans authored 12 years ago

src/noarch/Receiver_impl.h 310)   // frame not needed any more (stream creates copy for it use)
src/noarch/Receiver_impl.h 311)   BlinkenFrameFree(pFrame);
src/noarch/Receiver_impl.h 312) 
Stefan Schuermans implemented stream receiver

Stefan Schuermans authored 12 years ago

src/noarch/Receiver_impl.h 313)   // set new stream timeout
src/noarch/Receiver_impl.h 314)   m_timeout = Time::now() + Time(5);
src/noarch/Receiver_impl.h 315)   m_needTimeout = true;
src/noarch/Receiver_impl.h 316)   updateTimeCallback();
src/noarch/Receiver_impl.h 317) }
src/noarch/Receiver_impl.h 318) 
src/noarch/Receiver_impl.h 319) /// update time callback
src/noarch/Receiver_impl.h 320) template<typename ADDR, typename SOCK>
src/noarch/Receiver_impl.h 321) void Receiver<ADDR, SOCK>::updateTimeCallback()
src/noarch/Receiver_impl.h 322) {
src/noarch/Receiver_impl.h 323)   if (m_needTimeout)
src/noarch/Receiver_impl.h 324)     if (m_needNextReq)
Stefan Schuermans put all managers in one str...

Stefan Schuermans authored 12 years ago

src/noarch/Receiver_impl.h 325)       m_mgrs.m_callMgr.requestTimeCall(this, m_timeout < m_nextReq ? m_timeout
Stefan Schuermans implemented stream receiver

Stefan Schuermans authored 12 years ago

src/noarch/Receiver_impl.h 326)                                                             : m_nextReq);
src/noarch/Receiver_impl.h 327)     else
Stefan Schuermans put all managers in one str...

Stefan Schuermans authored 12 years ago

src/noarch/Receiver_impl.h 328)       m_mgrs.m_callMgr.requestTimeCall(this, m_timeout);
Stefan Schuermans implemented stream receiver

Stefan Schuermans authored 12 years ago

src/noarch/Receiver_impl.h 329)   else
src/noarch/Receiver_impl.h 330)     if (m_needNextReq)
Stefan Schuermans put all managers in one str...

Stefan Schuermans authored 12 years ago

src/noarch/Receiver_impl.h 331)       m_mgrs.m_callMgr.requestTimeCall(this, m_nextReq);
Stefan Schuermans implemented stream receiver

Stefan Schuermans authored 12 years ago

src/noarch/Receiver_impl.h 332)     else
Stefan Schuermans put all managers in one str...

Stefan Schuermans authored 12 years ago

src/noarch/Receiver_impl.h 333)       m_mgrs.m_callMgr.cancelTimeCall(this);
Stefan Schuermans implemented stream receiver

Stefan Schuermans authored 12 years ago

src/noarch/Receiver_impl.h 334) }
src/noarch/Receiver_impl.h 335) 
src/noarch/Receiver_impl.h 336) } // namespace Blinker
src/noarch/Receiver_impl.h 337) 
Stefan Schuermans fix comment

Stefan Schuermans authored 12 years ago

src/noarch/Receiver_impl.h 338) #endif // #ifndef BLINKER_RECEIVER_IMPL_H