simplified implementation of sender module
Stefan Schuermans

Stefan Schuermans commited on 2011-11-22 22:43:29
Showing 2 changed files, with 33 additions and 120 deletions.

... ...
@@ -138,11 +138,8 @@ protected:
138 138
   /// remove timed-out dynamic destinations
139 139
   void removeTimedOutDynDests();
140 140
 
141
-  /**
142
-   * @brief send frame to all destinations
143
-   * @param[in] pFrame frame to send
144
-   */
145
-  void sendAllFrame(stBlinkenFrame *pFrame);
141
+  /// send current protocol data to all destinations
142
+  void sendAllProto();
146 143
 
147 144
   /// send "no frame" to all destinations
148 145
   void sendAllNoFrame();
... ...
@@ -157,27 +154,11 @@ protected:
157 154
                  const DynDests dynDests);
158 155
 
159 156
   /**
160
-   * @brief send current frame to address
161
-   * @param[in] addr address to send to
162
-   * @param[in] proto Blinken protocol identifier
163
-   TODO: still needed?
164
-   */
165
-  void sendCurFrame(const ADDR &addr, etBlinkenProto proto) const;
166
-
167
-  /**
168
-   * @brief send "no frame" to address
169
-   * @param[in] addr address to send to
170
-   * @param[in] proto Blinken protocol identifier
171
-   TODO: still needed?
172
-   */
173
-  void sendNoFrame(const ADDR &addr, etBlinkenProto proto) const;
174
-
175
-  /**
176
-   * @brief send frame to address
157
+   * @brief send protocol data to address
177 158
    * @param[in] data protcol data of frame
178 159
    * @param[in] addr address to send to
179 160
    */
180
-  void sendFrame(const std::string &data, const ADDR &addr) const;
161
+  void sendProto(const std::string &data, const ADDR &addr) const;
181 162
 
182 163
   /**
183 164
    * @brief convert frame to protocol data
... ...
@@ -127,8 +127,13 @@ template<typename ADDR, typename SOCK>
127 127
 void Sender<ADDR, SOCK>::setFrame(const std::string &stream,
128 128
                                   stBlinkenFrame *pFrame)
129 129
 {
130
-  // send frame to all destinations
131
-  sendAllFrame(pFrame);
130
+  // convert new frame to protocol data
131
+  frame2data(pFrame, BlinkenProtoBlp, m_dataBlp);
132
+  frame2data(pFrame, BlinkenProtoEblp, m_dataEblp);
133
+  frame2data(pFrame, BlinkenProtoMcuf, m_dataMcuf);
134
+
135
+  // send new protocol data to all destinations
136
+  sendAllProto();
132 137
 
133 138
   (void)stream; // unused
134 139
 }
... ...
@@ -140,8 +145,13 @@ void Sender<ADDR, SOCK>::setFrame(const std::string &stream,
140 145
 template<typename ADDR, typename SOCK>
141 146
 void Sender<ADDR, SOCK>::setNoFrame(const std::string &stream)
142 147
 {
143
-  // send "no frame" to all destinations
144
-  sendAllNoFrame();
148
+  // set protocol data
149
+  m_dataBlp = m_noFrameDataBlp;
150
+  m_dataEblp = m_noFrameDataEblp;
151
+  m_dataMcuf = m_noFrameDataMcuf;
152
+
153
+  // send new protocol data to all destinations
154
+  sendAllProto();
145 155
 
146 156
   (void)stream; // unused
147 157
 }
... ...
@@ -150,18 +160,8 @@ void Sender<ADDR, SOCK>::setNoFrame(const std::string &stream)
150 160
 template<typename ADDR, typename SOCK>
151 161
 void Sender<ADDR, SOCK>::timeCall()
152 162
 {
153
-  stBlinkenFrame *pFrame;
154
-  std::string data;
155
-
156
-  // get current frame from stream
157
-  if (m_pInStream && m_pInStream->getCurFrame(pFrame))
158
-    // repeat frame to all destinations
159
-    sendAllFrame(pFrame);
160
-
161
-  // no stream of no current frame
162
-  else
163
-    // repeat "no frame" to all destinations
164
-    sendAllNoFrame();
163
+  // repeat current protocol data to all destinations
164
+  sendAllProto();
165 165
 }
166 166
 
167 167
 /**
... ...
@@ -266,7 +266,7 @@ void Sender<ADDR, SOCK>::destroySock()
266 266
   sendAllNoFrame();
267 267
 
268 268
   // clear dynamic destinations
269
-  // (they registered with this socket adn this socket is gone)
269
+  // (they registered with this socket and this socket is gone)
270 270
   m_dynDestsBlp.clear();
271 271
   m_dynDestsEblp.clear();
272 272
   m_dynDestsMcuf.clear();
... ...
@@ -378,29 +378,17 @@ void Sender<ADDR, SOCK>::removeTimedOutDynDests()
378 378
       ++itDyn;
379 379
 }
380 380
 
381
-/**
382
- * @brief send frame to all destinations
383
- * @param[in] pFrame frame to send
384
- */
381
+/// send current protocol data to all destinations
385 382
 template<typename ADDR, typename SOCK>
386
-void Sender<ADDR, SOCK>::sendAllFrame(stBlinkenFrame *pFrame)
383
+void Sender<ADDR, SOCK>::sendAllProto()
387 384
 {
388 385
   // remove timed-out dynamic destinations
389 386
   removeTimedOutDynDests();
390 387
 
391
-  // convert frame to protocol data and send to all static/dynamic destinations
392
-  if (!m_destListBlp.empty() || !m_dynDestsBlp.empty()) {
393
-    frame2data(pFrame, BlinkenProtoBlp, m_dataBlp);
388
+  // send current protocol data to all static/dynamic destinations
394 389
   sendDests(&m_dataBlp, m_destListBlp, m_dynDestsBlp);
395
-  }
396
-  if (!m_destListEblp.empty() || !m_dynDestsEblp.empty()) {
397
-    frame2data(pFrame, BlinkenProtoEblp, m_dataEblp);
398 390
   sendDests(&m_dataEblp, m_destListEblp, m_dynDestsEblp);
399
-  }
400
-  if (!m_destListMcuf.empty() || !m_dynDestsMcuf.empty()) {
401
-    frame2data(pFrame, BlinkenProtoMcuf, m_dataMcuf);
402 391
   sendDests(&m_dataMcuf, m_destListMcuf, m_dynDestsMcuf);
403
-  }
404 392
 
405 393
   // request time callback in one second
406 394
   m_callMgr.requestTimeCall(this, Time::now() + Time(1));
... ...
@@ -414,18 +402,9 @@ void Sender<ADDR, SOCK>::sendAllNoFrame()
414 402
   removeTimedOutDynDests();
415 403
 
416 404
   // get "no frame" protocol data and send to all static/dynamic destinations
417
-  if (!m_destListBlp.empty() || !m_dynDestsBlp.empty()) {
418
-    noFrame2data(BlinkenProtoBlp, m_dataBlp);
419
-    sendDests(&m_dataBlp, m_destListBlp, m_dynDestsBlp);
420
-  }
421
-  if (!m_destListEblp.empty() || !m_dynDestsEblp.empty()) {
422
-    noFrame2data(BlinkenProtoEblp, m_dataEblp);
423
-    sendDests(&m_dataEblp, m_destListEblp, m_dynDestsEblp);
424
-  }
425
-  if (!m_destListMcuf.empty() || !m_dynDestsMcuf.empty()) {
426
-    noFrame2data(BlinkenProtoMcuf, m_dataMcuf);
427
-    sendDests(&m_dataMcuf, m_destListMcuf, m_dynDestsMcuf);
428
-  }
405
+  sendDests(&m_noFrameDataBlp, m_destListBlp, m_dynDestsBlp);
406
+  sendDests(&m_noFrameDataEblp, m_destListEblp, m_dynDestsEblp);
407
+  sendDests(&m_noFrameDataMcuf, m_destListMcuf, m_dynDestsMcuf);
429 408
 
430 409
   // request time callback in one second
431 410
   m_callMgr.requestTimeCall(this, Time::now() + Time(1));
... ...
@@ -450,63 +429,16 @@ void Sender<ADDR, SOCK>::sendDests(const std::string *pData,
450 429
   // send data to all dynamic destinations
451 430
   typename DynDests::const_iterator itDyn;
452 431
   for (itDyn = dynDests.begin(); itDyn != dynDests.end(); ++itDyn)
453
-    sendFrame(*pData, itDyn->first);
454
-}
455
-
456
-/**
457
- * @brief send current frame to address
458
- * @param[in] addr address to send to
459
- * @param[in] proto Blinken protocol identifier
460
- */
461
-template<typename ADDR, typename SOCK>
462
-void Sender<ADDR, SOCK>::sendCurFrame(const ADDR &addr,
463
-                                      etBlinkenProto proto) const
464
-{
465
-  stBlinkenFrame *pFrame;
466
-  std::string data;
467
-
468
-  // get current frame from stream
469
-  if (m_pInStream && m_pInStream->getCurFrame(pFrame)) {
470
-    // convert frame to protocal data
471
-    frame2data(pFrame, proto, data);
472
-    // send frame to address
473
-    sendFrame(data, addr);
474
-  }
475
-
476
-  // no stream of no current frame
477
-  else {
478
-    // get "no frame" ad protocal data
479
-    noFrame2data(proto, data);
480
-    // send "no frame" to address
481
-    sendFrame(data, addr);
482
-  }
483
-}
484
-
485
-/**
486
- * @brief send "no frame" to address
487
- * @param[in] addr address to send to
488
- * @param[in] proto Blinken protocol identifier
489
- */
490
-template<typename ADDR, typename SOCK>
491
-void Sender<ADDR, SOCK>::sendNoFrame(const ADDR &addr,
492
-                                     etBlinkenProto proto) const
493
-{
494
-  std::string data;
495
-
496
-  // get "no frame" ad protocal data
497
-  noFrame2data(proto, data);
498
-
499
-  // send "no frame" to address
500
-  sendFrame(data, addr);
432
+    sendProto(*pData, itDyn->first);
501 433
 }
502 434
 
503 435
 /**
504
- * @brief send frame to address
436
+ * @brief send protocol data to address
505 437
  * @param[in] data protocol data of frame
506 438
  * @param[in] addr address to send to
507 439
  */
508 440
 template<typename ADDR, typename SOCK>
509
-void Sender<ADDR, SOCK>::sendFrame(const std::string &data,
441
+void Sender<ADDR, SOCK>::sendProto(const std::string &data,
510 442
                                    const ADDR &addr) const
511 443
 {
512 444
   if (m_pSock) {
... ...
@@ -580,15 +512,15 @@ void Sender<ADDR, SOCK>::receiveFromSock()
580 512
       switch (proto) {
581 513
         case BlinkenProtoBlp:
582 514
           m_dynDestsBlp[addr] = Time::now();
583
-          sendCurFrame(addr, BlinkenProtoBlp);
515
+          sendProto(m_dataBlp, addr);
584 516
           break;
585 517
         case BlinkenProtoEblp:
586 518
           m_dynDestsEblp[addr] = Time::now();
587
-          sendCurFrame(addr, BlinkenProtoEblp);
519
+          sendProto(m_dataEblp, addr);
588 520
           break;
589 521
         case BlinkenProtoMcuf:
590 522
           m_dynDestsMcuf[addr] = Time::now();
591
-          sendCurFrame(addr, BlinkenProtoMcuf);
523
+          sendProto(m_dataMcuf, addr);
592 524
           break;
593 525
         default:
594 526
           break;
595 527