MAK RTIspy API Documentation for HLA Evolved
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
distributorThreadEvents.h
Go to the documentation of this file.
1 /*******************************************************************************
2 ** Copyright (c) 2007 MaK Technologies, Inc.
3 ** All rights reserved.
4 *******************************************************************************/
5 /*******************************************************************************
6 ** $RCSfile: distributorThreadEvents.h,v $ $Revision: 1.3 $ $State: Exp $
7 *******************************************************************************/
8 
11 
12 #ifndef DtDistributorThreadEvents_H_
13 #define DtDistributorThreadEvents_H_
14 
15 #include <rtiMsConfig.h>
16 #include <memory>
17 #include <typeinfo>
18 #include <vector>
19 #include <map>
20 #include <vlutil/vlString.h>
21 #include "rtiMsg.h"
22 #include "fomModuleRequestMsg.h"
24 
25 class DtFedExec;
28 class DtFileInformation;
32 class DtFederate;
33 
34 
35 //base class enforces clone() ability
39 {
40 public:
41 
43  virtual DtDistributorThreadEvent* clone() const = 0;
44 
49  virtual bool operator==( const DtDistributorThreadEvent& value )
50  {
51  return ( typeid( *this ) == typeid( value ));
52  }
53 
56  virtual void processResults() {}
57 };
58 
59 
61 
66 {
67 public:
68 
70  virtual void operator()( const DtAsyncFileDistributorRunnable& dist ) = 0;
71 };
72 
73 
75 {
76 public:
77  DtGetFileFromDistributorCmd( const std::vector<DtString>& fileNames,
78  const unsigned long ID) :
79  DtFedExecDistribFunctor(), myFileNames ( fileNames ), myInitiatorID(ID) {}
80 
82  virtual void operator()(const DtAsyncFileDistributorRunnable& dist );
84  { return new DtGetFileFromDistributorCmd(myFileNames, myInitiatorID); }
85 
86  virtual void processResults();
87 
88  std::vector<DtString> myFileNames;
89  unsigned long myInitiatorID;
90 };
91 
93 {
94 public:
95  DtFedexRemoveFileCmd( unsigned long ID, const std::vector<DtString>& fileNames ) :
96  DtFedExecDistribFunctor(), myFileNames( fileNames), myInitiatorID(ID) {}
97  virtual ~DtFedexRemoveFileCmd() {}
98  virtual void operator()(const DtAsyncFileDistributorRunnable& dist );
100  { return new DtFedexRemoveFileCmd(myInitiatorID, myFileNames); }
101 
102  std::vector<DtString> myFileNames;
103  unsigned long myInitiatorID;
104 };
105 
107 {
108 public:
109  DtPushFilesToAllFederatesCmd( const DtString fileName,
110  const char* fileBuff, unsigned long fileSize,
111  const unsigned int ID ) :
112  DtFedExecDistribFunctor(), myFileBuffer(fileBuff), myFileName(fileName),
113  myFileSize(fileSize), myDestination(ID) {}
115  virtual void operator()(const DtAsyncFileDistributorRunnable& dist);
117  { return new DtPushFilesToAllFederatesCmd(myFileName,
118  myFileBuffer, myFileSize, myDestination); }
119 
120  const char* myFileBuffer;
121  unsigned long myFileSize;
122  DtString myFileName;
123  unsigned long myDestination;
124 };
125 
126 
128 {
129 public:
130  DtDistributionMsgCmd(unsigned long ID, const DtFomModuleDistributionMsg msg ) :
131  DtFedExecDistribFunctor( ), myMsg(msg), myInitiatorID(ID) {};
132 
133  virtual DtDistributorThreadEvent* clone() const
134  {
135  return new DtDistributionMsgCmd(myInitiatorID, myMsg );
136  }
137  virtual void operator()(const DtAsyncFileDistributorRunnable& dist);
139  unsigned long myInitiatorID;
140 };
141 
142 
144 {
145 public:
146  DtFomModuleRequestMsgCmd( unsigned long ID, const DtFomModuleRequestMsg msg ) :
147  DtFedExecDistribFunctor(), myMsg(msg), myInitiatorID(ID) {};
149  {
150  return new DtFomModuleRequestMsgCmd(myInitiatorID, myMsg);
151  }
152  virtual void operator()(const DtAsyncFileDistributorRunnable& dist);
154  unsigned long myInitiatorID;
155 };
156 
160 {
161 public:
162  DtFedexTakeFileCmd( unsigned long ID,
163  const std::map<DtString, DtFileInformation*>& files ) :
165  myFiles(files), myInitiatorID(ID) {};
166  static DtFedexTakeFileCmd* createNamesOnlyTakeFileEvent(DtFedExec* parent,
167  const std::vector<DtString>& fileNames);
169  virtual DtDistributorThreadEvent* clone() const
170  {
171  return new DtFedexTakeFileCmd( myInitiatorID, myFiles );
172  }
173  virtual void operator()(const DtAsyncFileDistributorRunnable& dist);
174  std::map<DtString, DtFileInformation*> myFiles;
175  unsigned long myInitiatorID;
176 };
177 
178 
180 
181 
182 
183 
184 //Event Definitions
186 {
187 public:
188  virtual ~DtDistribFunctor() {};
189  virtual void operator()( const DtAsyncFileDistributorRunnable& dist ) = 0;
190 };
191 
192 
196 {
197 public:
199  DtDistribFunctor(), myParent ( parent) { };
200  virtual void operator()( const DtAsyncFileDistributorRunnable& dist ) {}
201 
203 };
204 
206 {
207 public:
209  DtFedexDistributionEvent( parent ) {};
210 
211  virtual DtDistributorThreadEvent* clone() const
212  {
213  return new DtRequestedModulesArrivedEvent( myParent );
214  }
215  virtual void operator()( const std::vector<DtString>& fileNames);
216  virtual void processResults();
217 
218  std::vector<DtString> myFileNames;
219 };
220 
222 {
223 public:
225  DtFedexDistributionEvent( parent ) {};
227  {
228  return new DtFedFileRequestMsgEvent( myParent );
229  }
230  virtual void operator()( const std::vector<DtString>& fileNames, unsigned long fedID);
231  virtual void processResults();
232 
233  std::vector<DtString> myFileNames;
234  unsigned long myInitiatingID;
235 };
236 
237 
239 {
240 public:
242  DtFedexDistributionEvent(parent) {};
243  virtual DtDistributorThreadEvent* clone() const { return new DtFedExTakeFileEvent(myParent); }
244  virtual void operator()( const std::map<DtString, DtFileInformation*>& fileNames );
245  virtual void processResults();
246 
247  std::map<DtString, DtFileInformation*> myFileNames;
248 };
249 
251 {
252 public:
254  DtFedexDistributionEvent(parent) {};
256  {
257  return new DtFileRequestedEvent( myParent );
258  }
259  virtual void operator()( const std::vector<DtString>& files );
260  virtual void processResults();
261 
262  std::vector<DtString> myFileNames;
263 };
264 
266 {
267 public:
269  DtFedexDistributionEvent(parent) {};
270 
272  {
273  return new DtFileReceivedEvent( myParent );
274  }
275  virtual void operator()( const DtFomModuleDistributionMsg& msg );
276  virtual void processResults();
277 
278 
280 };
281 
283 {
284 public:
286  DtFedexDistributionEvent( parent ) {};
288  {
289  return new DtPushFedFileToFederatesEvent(myParent);
290  }
291  virtual void operator()(DtString name, int fileSize, const char* buff);
292  virtual void processResults();
293 
294  DtString myFileName;
296  const char* myBuff;
297 };
298 
299 
300 
302 {
303 public:
305  mySingleFederate(0),
308  {
309  return new DtPushFedFileToSingleFederateEvent(myParent);
310  }
311  virtual void operator()(DtString name, int fileSize, const char* buff, DtFederateHandle recipientHandle)
312  {
313  DtPushFedFileToFederatesEvent::operator ()(name, fileSize, buff);
314  mySingleFederate = recipientHandle;
315  }
316  virtual void processResults();
318 };
319 
320 
321 
323 
324 
326 {
327 public:
328  enum EventType {
337  BackendExited
338  };
339 
341  const DtDistributorThreadEvent& newFunctor,
342  bool addition = true ):
343  myType( type ),
344  myAddition( addition ),
345  myFunctor( newFunctor.clone() ),
346  myMsgKind(),
347  myIsMomMsg( false )
348  {}
349 
351  const DtDistributorThreadEvent& newFunctor,
352  bool addition,
353  DtRtiMsgKind kind,
354  bool isMomMsg = false) :
355  myType( type ),
356  myAddition( addition ),
357  myFunctor( newFunctor.clone() ),
358  myMsgKind( kind ),
359  myIsMomMsg( isMomMsg )
360  {}
361 
363  myType( orig.myType ),
364  myAddition( orig.myAddition ),
365  myFunctor( orig.myFunctor->clone() ),
366  myMsgKind( orig.myMsgKind ),
367  myIsMomMsg( orig.myIsMomMsg )
368  {}
369 
370  virtual ~DtDistribFunctorChangeRequest() { delete myFunctor; myFunctor = 0; }
371 
373  {
374  return new DtDistribFunctorChangeRequest( myType, *myFunctor, myAddition,
375  myMsgKind, myIsMomMsg );
376  }
377 
379  {
380  if ( this == &orig ) return *this;
381 
382  DtDistributorThreadEvent* copy = orig.myFunctor->clone();
383  myFunctor = copy;
384  myType = orig.myType;
385  myAddition = orig.myAddition;
386  myMsgKind = orig.myMsgKind;
387  myIsMomMsg = orig.myIsMomMsg;
388 
389  return *this;
390  }
391 
392 
398 };
399 
400 
401 
402 
403 #endif //DtDistributorThreadEvents_H_
bool myIsMomMsg
Definition: distributorThreadEvents.h:397
virtual void operator()(const DtAsyncFileDistributorRunnable &dist)
Definition: distributorThreadEvents.h:200
virtual ~DtDistributorThreadEvent()
Definition: distributorThreadEvents.h:42
Definition: distributorThreadEvents.h:221
virtual DtDistributorThreadEvent * clone() const
Definition: distributorThreadEvents.h:83
virtual DtDistributorThreadEvent * clone() const
Definition: distributorThreadEvents.h:99
Definition: distributorThreadEvents.h:106
DtRtiMsgKind myMsgKind
Definition: distributorThreadEvents.h:396
DtRtiMsgKind
Definition: rtiMsgKind.h:9
unsigned long myInitiatorID
Definition: distributorThreadEvents.h:103
DtFederateHandle mySingleFederate
Definition: distributorThreadEvents.h:317
int myFileSize
Definition: distributorThreadEvents.h:295
virtual ~DtDistribFunctorChangeRequest()
Definition: distributorThreadEvents.h:370
Helper class for storing files by name.
Definition: fileDistributor.h:46
FedExec Functor Classes.
Definition: distributorThreadEvents.h:65
std::vector< DtString > myFileNames
Definition: distributorThreadEvents.h:233
DtPushFedFileToFederatesEvent(DtFedExec *parent)
Definition: distributorThreadEvents.h:285
virtual DtDistribFunctorChangeRequest & operator=(const DtDistribFunctorChangeRequest &orig)
Definition: distributorThreadEvents.h:378
DtDistribFunctorChangeRequest(EventType type, const DtDistributorThreadEvent &newFunctor, bool addition, DtRtiMsgKind kind, bool isMomMsg=false)
Definition: distributorThreadEvents.h:350
DtFileReceivedEvent(DtFedExec *parent)
Definition: distributorThreadEvents.h:268
virtual DtDistributorThreadEvent * clone() const
Definition: distributorThreadEvents.h:133
virtual DtDistributorThreadEvent * clone() const
Definition: distributorThreadEvents.h:307
Definition: distributorThreadEvents.h:333
Definition: fedex.h:134
DtFedFileRequestMsgEvent(DtFedExec *parent)
Definition: distributorThreadEvents.h:224
virtual DtFomModuleRequestMsgCmd * clone() const
Definition: distributorThreadEvents.h:148
DtFomModuleDistributionMsg myMsg
Definition: distributorThreadEvents.h:279
DtFedexDistributionEvent(DtFedExec *parent)
Definition: distributorThreadEvents.h:198
std::map< DtString, DtFileInformation * > myFileNames
Definition: distributorThreadEvents.h:247
virtual void processResults()
Derived events may override processResults to collect functor results without casting to dynamic type...
Definition: distributorThreadEvents.h:56
bool myAddition
Definition: distributorThreadEvents.h:394
virtual DtDistributorThreadEvent * clone() const
Definition: distributorThreadEvents.h:255
std::vector< DtString > myFileNames
Definition: distributorThreadEvents.h:262
DtString myFileName
Definition: distributorThreadEvents.h:294
const char * myFileBuffer
Definition: distributorThreadEvents.h:120
Definition: distributorThreadEvents.h:301
Sent by Federates to request fed file from RtiExec.
Definition: fomModuleRequestMsg.h:28
virtual DtDistributorThreadEvent * clone() const
Definition: distributorThreadEvents.h:271
Definition: federate.h:39
unsigned long myInitiatingID
Definition: distributorThreadEvents.h:234
Definition: distributorThreadEvents.h:127
const char * myBuff
Definition: distributorThreadEvents.h:296
Instances of DtRtiExecFederateMgr process federation-level messages (such as create, destroy, join, resign, and sync points) for HLA applications that are using the rtiexec.
Definition: execFedMgr.h:66
Definition: distributorThreadEvents.h:332
virtual DtDistributorThreadEvent * clone() const
Definition: distributorThreadEvents.h:372
unsigned long myInitiatorID
Definition: distributorThreadEvents.h:154
virtual void processResults()
Derived events may override processResults to collect functor results without casting to dynamic type...
Definition: distributorThreadEvents.h:143
Definition: distributorThreadEvents.h:74
DtDistributorThreadEvent * myFunctor
Definition: distributorThreadEvents.h:395
Definition: distributorThreadEvents.h:330
DtRequestedModulesArrivedEvent(DtFedExec *parent)
Definition: distributorThreadEvents.h:208
DtPushFedFileToSingleFederateEvent(DtFedExec *parent)
Definition: distributorThreadEvents.h:304
Definition: distributorThreadEvents.h:265
virtual bool operator==(const DtDistributorThreadEvent &value)
The default comparison uses RTTI typeid to treat functor as a standard function pointer (ie - same fu...
Definition: distributorThreadEvents.h:49
EventType
Definition: distributorThreadEvents.h:328
std::vector< DtString > myFileNames
Definition: distributorThreadEvents.h:88
DtHandle DtFederateHandle
Definition: internalTypes.h:29
Definition: distributorThreadEvents.h:282
const DtFomModuleRequestMsg myMsg
Definition: distributorThreadEvents.h:153
Definition: distributorThreadEvents.h:205
virtual DtDistributorThreadEvent * clone() const
Definition: distributorThreadEvents.h:243
std::vector< DtString > myFileNames
Definition: distributorThreadEvents.h:102
DtFedExec * myParent
Definition: distributorThreadEvents.h:202
EventType myType
Definition: distributorThreadEvents.h:393
End Fedex Specific Event Definitions.
Definition: distributorThreadEvents.h:325
virtual void operator()(DtString name, int fileSize, const char *buff)
DtFomModuleRequestMsgCmd(unsigned long ID, const DtFomModuleRequestMsg msg)
Definition: distributorThreadEvents.h:146
Definition: fomModuleDistributionMsg.h:25
virtual DtDistributorThreadEvent * clone() const
Definition: distributorThreadEvents.h:287
and provides a very basic functor comparison operator
Definition: distributorThreadEvents.h:38
unsigned long myDestination
Definition: distributorThreadEvents.h:123
unsigned long myInitiatorID
Definition: distributorThreadEvents.h:89
unsigned long myInitiatorID
Definition: distributorThreadEvents.h:139
virtual DtDistributorThreadEvent * clone() const
Definition: distributorThreadEvents.h:116
virtual DtDistributorThreadEvent * clone() const
Definition: distributorThreadEvents.h:226
Distributes fomModule files from initiating federate to RtiExec and then from RtiExec to all joining ...
Definition: asynchronousFileDistributor.h:33
DtDistribFunctorChangeRequest(const DtDistribFunctorChangeRequest &orig)
Definition: distributorThreadEvents.h:362
End Functor FedExec Functor Classes.
Definition: distributorThreadEvents.h:185
DtString myFileName
Definition: distributorThreadEvents.h:122
Definition: distributorThreadEvents.h:335
unsigned long myInitiatorID
Definition: distributorThreadEvents.h:175
virtual void operator()(DtString name, int fileSize, const char *buff, DtFederateHandle recipientHandle)
Definition: distributorThreadEvents.h:311
Definition: distributorThreadEvents.h:238
unsigned long myFileSize
Definition: distributorThreadEvents.h:121
const DtFomModuleDistributionMsg myMsg
Definition: distributorThreadEvents.h:138
virtual ~DtFedExecDistribFunctor()
Definition: distributorThreadEvents.h:69
virtual ~DtPushFilesToAllFederatesCmd()
Definition: distributorThreadEvents.h:114
Definition: distributorThreadEvents.h:329
DtFedexTakeFileCmd(unsigned long ID, const std::map< DtString, DtFileInformation * > &files)
Definition: distributorThreadEvents.h:162
virtual DtDistributorThreadEvent * clone() const
Clone does not copy internal data!
Definition: distributorThreadEvents.h:169
DtDistribFunctorChangeRequest(EventType type, const DtDistributorThreadEvent &newFunctor, bool addition=true)
Definition: distributorThreadEvents.h:340
virtual DtDistributorThreadEvent * clone() const
Definition: distributorThreadEvents.h:211
Take these files.
Definition: distributorThreadEvents.h:159
Definition: distributorThreadEvents.h:250
Definition: distributorThreadEvents.h:331
Fedex Specific Event Definitions.
Definition: distributorThreadEvents.h:195
virtual ~DtFedexRemoveFileCmd()
Definition: distributorThreadEvents.h:97
virtual ~DtDistribFunctor()
Definition: distributorThreadEvents.h:188
virtual DtDistributorThreadEvent * clone() const =0
DtFileRequestedEvent(DtFedExec *parent)
Definition: distributorThreadEvents.h:253
Definition: distributorThreadEvents.h:334
DtPushFilesToAllFederatesCmd(const DtString fileName, const char *fileBuff, unsigned long fileSize, const unsigned int ID)
Definition: distributorThreadEvents.h:109
virtual ~DtGetFileFromDistributorCmd()
Definition: distributorThreadEvents.h:81
#define DT_DLL_EXEC
Definition: rtiMsConfig.h:123
virtual void operator()(const DtAsyncFileDistributorRunnable &dist)=0
std::vector< DtString > myFileNames
Definition: distributorThreadEvents.h:218
DtDistributionMsgCmd(unsigned long ID, const DtFomModuleDistributionMsg msg)
Definition: distributorThreadEvents.h:130
Definition: distributorThreadEvents.h:92
DtFedexRemoveFileCmd(unsigned long ID, const std::vector< DtString > &fileNames)
Definition: distributorThreadEvents.h:95
Definition: distributorThreadEvents.h:336
std::map< DtString, DtFileInformation * > myFiles
Definition: distributorThreadEvents.h:174
DtGetFileFromDistributorCmd(const std::vector< DtString > &fileNames, const unsigned long ID)
Definition: distributorThreadEvents.h:77
DtFedExTakeFileEvent(DtFedExec *parent)
Definition: distributorThreadEvents.h:241

Document ID: Generated on Thu May 11 15:55:32 EDT 2023 from SVN revision 254743
Copyright © 2005-2020 MAK Technologies Inc. All Rights Reserved (www.mak.com)