MAK RTIspy API Documentation for HLA 1.3
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
asynchronousFileDistributor.h
Go to the documentation of this file.
1 /*********************************************************************
2 ** Copyright (c) 2007 MaK Technologies, Inc.
3 ** All rights reserved.
4 *********************************************************************/
5 /*********************************************************************
6 ** $RCSfile: asynchronousFileDistributor.h,v $ $Revision: 1.9 $ $State: Exp $
7 *********************************************************************/
8 
11 
12 #ifndef DtAsyncFileDistributorRunnable_H_
13 #define DtAsyncFileDistributorRunnable_H_
14 
15 
16 #include "fileDistributor.h"
18 #include <vlutil/vlRunnable.h>
19 #include <vlutil/vlThread.h>
20 #include "vlThreadSafeQueue.h"
21 #include <vlutil/vlThreadSafe.h>
22 #include "vlThreadedObject.h"
23 #include "fedex.h"
24 
28 
29 
34 {
35 
36 public:
37 
40 
43 
44 
45  //Event processing.
46 
47  virtual DtUniquePtr<DtDistributorThreadEvent> getNextEvent();
48 
49  virtual void postCommand( DtUniquePtr<DtFedExecDistribFunctor> cmd);
50 
51  virtual void setOnExitHandler( const DtDistributorThreadEvent& fn );
52 
53  //Register/ Unregister event calls:
54  virtual void registerUploadFedFileToExecEvent( const DtDistribFunctor& fn );
55  virtual void registerFedFileRequestsEvent( const DtDistribFunctor& fn );
56  virtual void registerRequestedModulesArrivedEvent( const DtDistribFunctor& fn );
57  virtual void registerTakeFileEvent( const DtDistribFunctor& fn );
58  virtual void registerPushFedFileToFederatesEvent( const DtDistribFunctor& fn );
59  virtual void registerPushFedFileToSingleFederateEvent( const DtDistribFunctor& fn );
60 
61 
62 public:
63 
65  virtual void run();
66 
67  static DtAsyncFileDistributorRunnable* create( DtFedExec* parent );
68 
69  virtual void requestFedFileUploadToExec( const unsigned long initiatingFedID,
70  const std::vector<DtString>* modules);
71  virtual bool sendFedFile(const std::vector<DtString>& modules, DtFederateHandle recipient);
72 
74  virtual void fedFileUploaded(const DtString fileUploaded);
75 
76  void processTakeFileCmd(std::map<DtString, DtFileInformation*>);
77 
78  void processPushFedFileToAllFederates(DtString name, int size, const char* buff, unsigned long destination);
79  void processFileRequested( const DtFomModuleRequestMsg& cmd );
80  void processFileReceived( const DtFomModuleDistributionMsg& cmd );
81 
82 
84  bool requestsPending() const;
85 
86 private:
90 
91 
92 private:
93 
95 
96 protected:
97 
98  typedef std::list<DtDistributorThreadEvent*> DtDistributorThreadEventList;
99 
100 protected:
101  void signalFrontEnd() const;
102  bool executeCommand();
103  void processInternalCommands();
104  void changeCallbackEvents( const DtDistribFunctorChangeRequest& fn );
105  void clearEventList( rtiMsgList& theEventList );
106  bool myStopped;
107 
108 protected:
109  DtUniquePtr<DtFedExecDistribFunctor> mySignal;
110  DtUniquePtr<DtDistributorThreadEvent> myOnExitEvent;
111 
113 
115 
117 
126 
127 
128  typedef std::pair< DtDistributorThreadEvent*, bool> DtMsgFunctorIsMomMsgPair;
129 
130 
131 
132 };
133 
134 #endif
std::pair< DtDistributorThreadEvent *, bool > DtMsgFunctorIsMomMsgPair
Definition: asynchronousFileDistributor.h:128
DtDistributorThreadEventList myRequestedModuleArrivedEvents
Registered event functors.
Definition: asynchronousFileDistributor.h:119
DtDistributorThreadEventList myTakeFileEvents
Definition: asynchronousFileDistributor.h:120
Distributes fomModule files from initiating federate to RtiExec and then from RtiExec to all joining ...
Definition: fileDistributor.h:126
DtDistributorThreadEventList myFedFileReceivedEvents
Definition: asynchronousFileDistributor.h:122
DtUniquePtr< DtFedExecDistribFunctor > mySignal
Definition: asynchronousFileDistributor.h:109
Definition: fedex.h:117
DtFedExec * myFedEx
Definition: asynchronousFileDistributor.h:94
Sent by Federates to request fed file from RtiExec.
Definition: fomModuleRequestMsg.h:24
DtHandle DtFederateHandle
Definition: internalTypes.h:46
End Fedex Specific Event Definitions.
Definition: distributorThreadEvents.h:325
DtDistributorThreadEventList myPushFedFileToAllFederatesEvents
Definition: asynchronousFileDistributor.h:123
Definition: fomModuleDistributionMsg.h:25
and provides a very basic functor comparison operator
Definition: distributorThreadEvents.h:38
bool myStopped
Definition: asynchronousFileDistributor.h:106
Distributes fomModule files from initiating federate to RtiExec and then from RtiExec to all joining ...
Definition: asynchronousFileDistributor.h:33
DtDistributorThreadEventList myUploadRequestEvents
Definition: asynchronousFileDistributor.h:125
End Functor FedExec Functor Classes.
Definition: distributorThreadEvents.h:185
DtFileDistributor & operator=(const DtFileDistributor &orig)
DtDistributorThreadEventList myPushFedFileToSingleFederateEvents
Definition: asynchronousFileDistributor.h:124
DtUniquePtr< DtDistributorThreadEvent > myOnExitEvent
Definition: asynchronousFileDistributor.h:110
DtDistributorThreadEventList myFedFileRequestedEvents
Definition: asynchronousFileDistributor.h:121
virtual void fedFileUploaded(const MAKRti::DtString fileUploaded)
Called when Fom Module received successfully.
bool requestsPending() const
Are there outstanding requests to be handled?
virtual bool sendFedFile(const std::vector< MAKRti::DtString > &modules)
Override sendFedFile upload fed files passed in.
std::list< DtDistributorThreadEvent * > DtDistributorThreadEventList
Definition: asynchronousFileDistributor.h:98
Defines a ThreadedObject which can run a DtRunnable object in a thread.
std::list< DtRtiMsg * > rtiMsgList
Definition: fileDistributor.h:226
DtThreadSafeQueue< DtDistributorThreadEvent > myInternalCmdQueue
Definition: asynchronousFileDistributor.h:116
#define DT_DLL_EXEC
Definition: rtiMsConfig.h:152
DtThreadSafeQueue< DtDistributorThreadEvent > myPendingCommands
Definition: asynchronousFileDistributor.h:112
DtThreadSafeQueue< DtDistributorThreadEvent > myEventQueue
Definition: asynchronousFileDistributor.h:114

Document ID: Generated on Wed Jul 8 16:20:32 EDT 2026 from SVN revision 291616
Copyright © 2005-2025 MAK Technologies Inc. All Rights Reserved (www.mak.com)