added support for static BLP and EBLP to sender
Stefan Schuermans

Stefan Schuermans commited on 2011-11-14 21:51:42
Showing 1 changed files, with 37 additions and 5 deletions.

... ...
@@ -145,10 +145,14 @@ protected:
145 145
 protected:
146 146
   SettingFile m_fileInStream; ///< input stream name file
147 147
   SettingFile m_fileBind;     ///< bind address file
148
+  Directory   m_dirDestsBlp;  ///< static BLP destinations directory
149
+  Directory   m_dirDestsEblp; ///< static EBLP destinations directory
148 150
   Directory   m_dirDestsMcuf; ///< static MCUF destinations directory
149 151
   std::string m_nameInStream; ///< name of input stream
150 152
   Stream      *m_pInStream;   ///< input stream
151 153
   SOCK        *m_pSock;       ///< socket to use for sending streams
154
+  Dests        m_destsBlp;    ///< current static BLP destinations
155
+  Dests        m_destsEblp;   ///< current static EBLP destinations
152 156
   Dests        m_destsMcuf;   ///< current static MCUF destinations
153 157
 }; // class Sender
154 158
 
... ...
@@ -168,6 +172,8 @@ Sender<ADDR, SOCK>::Sender(CallMgr &callMgr, StreamMgr &streamMgr,
168 172
   Module(callMgr, streamMgr, dirBase),
169 173
   m_fileInStream(dirBase.getFile("instream")),
170 174
   m_fileBind(dirBase.getFile("bind")),
175
+  m_dirDestsBlp(dirBase.getSubdir("blp")),
176
+  m_dirDestsEblp(dirBase.getSubdir("eblp")),
171 177
   m_dirDestsMcuf(dirBase.getSubdir("mcuf")),
172 178
   m_pInStream(NULL),
173 179
   m_pSock(NULL)
... ...
@@ -178,6 +184,8 @@ Sender<ADDR, SOCK>::Sender(CallMgr &callMgr, StreamMgr &streamMgr,
178 184
   createSock();
179 185
 
180 186
   // load static destinations
187
+  updateDestsFull(m_dirDestsBlp, m_destsBlp, BlinkenProtoBlp);
188
+  updateDestsFull(m_dirDestsEblp, m_destsEblp, BlinkenProtoEblp);
181 189
   updateDestsFull(m_dirDestsMcuf, m_destsMcuf, BlinkenProtoMcuf);
182 190
 }
183 191
 
... ...
@@ -214,6 +222,14 @@ void Sender<ADDR, SOCK>::updateConfig()
214 222
 
215 223
   // static destinations update
216 224
   // (directory modified -> full, otherwise -> light)
225
+  if (m_dirDestsBlp.checkModified())
226
+    updateDestsFull(m_dirDestsBlp, m_destsBlp, BlinkenProtoBlp);
227
+  else
228
+    updateDestsLight(m_destsBlp, BlinkenProtoBlp);
229
+  if (m_dirDestsEblp.checkModified())
230
+    updateDestsFull(m_dirDestsEblp, m_destsEblp, BlinkenProtoEblp);
231
+  else
232
+    updateDestsLight(m_destsEblp, BlinkenProtoEblp);
217 233
   if (m_dirDestsMcuf.checkModified())
218 234
     updateDestsFull(m_dirDestsMcuf, m_destsMcuf, BlinkenProtoMcuf);
219 235
   else
... ...
@@ -227,14 +243,22 @@ void Sender<ADDR, SOCK>::updateConfig()
227 243
 template<typename ADDR, typename SOCK>
228 244
 void Sender<ADDR, SOCK>::setFrame(stBlinkenFrame *pFrame)
229 245
 {
230
-  std::string mcuf;
246
+  std::string blp, eblp, mcuf;
231 247
 
232 248
   // convert frame to protocol data
249
+  if (!m_destsBlp.empty())
250
+    frame2data(pFrame, BlinkenProtoBlp, blp);
251
+  if (!m_destsEblp.empty())
252
+    frame2data(pFrame, BlinkenProtoEblp, eblp);
233 253
   if (!m_destsMcuf.empty())
234 254
     frame2data(pFrame, BlinkenProtoMcuf, mcuf);
235 255
 
236
-  // send frame to all static MCUF destinations
256
+  // send frame to all static destinations
237 257
   typename Dests::const_iterator itDest;
258
+  for (itDest = m_destsBlp.begin(); itDest != m_destsBlp.end(); ++itDest)
259
+    sendFrame(blp, itDest->m_addr);
260
+  for (itDest = m_destsEblp.begin(); itDest != m_destsEblp.end(); ++itDest)
261
+    sendFrame(eblp, itDest->m_addr);
238 262
   for (itDest = m_destsMcuf.begin(); itDest != m_destsMcuf.end(); ++itDest)
239 263
     sendFrame(mcuf, itDest->m_addr);
240 264
 
... ...
@@ -246,14 +270,22 @@ void Sender<ADDR, SOCK>::setFrame(stBlinkenFrame *pFrame)
246 270
 template<typename ADDR, typename SOCK>
247 271
 void Sender<ADDR, SOCK>::setNoFrame()
248 272
 {
249
-  std::string mcuf;
273
+  std::string blp, eblp, mcuf;
250 274
 
251 275
   // get "no frame" protocol data
276
+  if (!m_destsBlp.empty())
277
+    noFrame2data(BlinkenProtoBlp, blp);
278
+  if (!m_destsEblp.empty())
279
+    noFrame2data(BlinkenProtoEblp, eblp);
252 280
   if (!m_destsMcuf.empty())
253 281
     noFrame2data(BlinkenProtoMcuf, mcuf);
254 282
 
255
-  // send "no frame" to all static MCUF destinations
283
+  // send "no frame" to all staticdestinations
256 284
   typename Dests::const_iterator itDest;
285
+  for (itDest = m_destsBlp.begin(); itDest != m_destsBlp.end(); ++itDest)
286
+    sendFrame(blp, itDest->m_addr);
287
+  for (itDest = m_destsEblp.begin(); itDest != m_destsEblp.end(); ++itDest)
288
+    sendFrame(eblp, itDest->m_addr);
257 289
   for (itDest = m_destsMcuf.begin(); itDest != m_destsMcuf.end(); ++itDest)
258 290
     sendFrame(mcuf, itDest->m_addr);
259 291
 
... ...
@@ -522,7 +554,7 @@ void Sender<ADDR, SOCK>::noFrame2data(etBlinkenProto proto, std::string &data)
522 554
 {
523 555
   // obtain "no frame" protcol data
524 556
   (void)proto; // FIXME
525
-  data.clear(); // FIXME
557
+  data.assign("", 1); // FIXME
526 558
 }
527 559
 
528 560
 /* ################
529 561