15 #include <vlutil/vlThreadSafe.h>
16 #include <vlutil/vlMutex.h>
18 #include <vlutil/vlLockfreeQueue.h>
24 #include <vlutil/vlSelectParamW.h>
33 class DtSelectParamWithWrite;
43 MAKRti::DtTransportType transport,
44 const MAKRti::DtInetAddr& addr = MAKRti::DtInetAddr::inaddrAny() );
65 DtBoost::shared_ptr<DtRtiAssistantLrcClient> assistantClient =
66 DtBoost::shared_ptr<DtRtiAssistantLrcClient>() );
86 virtual bool isAsynchronous();
92 #elif defined(DtIFSPEC13)
93 RTI::FederateAmbassador* fedAmb,
96 MAKRti::DtString fedExName,
102 virtual void queueMsg(
DtRtiMsg* msg,
103 MAKRti::DtTransportType transport,
104 const MAKRti::DtInetAddr& addr = MAKRti::DtInetAddr::inaddrAny() );
108 MAKRti::DtTransportType transport,
109 const MAKRti::DtInetAddr& addr = MAKRti::DtInetAddr::inaddrAny() );
114 MAKRti::DtTransportType transport,
115 const MAKRti::DtInetAddr& addr = MAKRti::DtInetAddr::inaddrAny() );
137 virtual bool flush();
140 virtual void receiveThread();
141 virtual void sendThread();
145 virtual bool wait( MAKRti::DtTime periodInSeconds,
bool unlockWhileWaiting =
false );
157 #elif defined(DtIFSPEC1516E)
165 virtual HANDLE waitEvent();
170 #elif defined(DtIFSPEC1516E)
173 virtual WSAEVENT readFileEvent(RTI::TransportType transport);
177 virtual int waitEvent();
182 virtual void signalReceiveEvent();
186 virtual void clearReceiveEvent();
190 virtual void signalSendEvent();
194 virtual void clearSendEvent();
197 virtual void yield();
208 virtual bool doReceiveProcessing(
unsigned long timeout);
211 virtual void doDisconnectFederation();
214 virtual bool doWait(MAKRti::DtTime period);
223 virtual bool sendPackets();
231 MAKRti::DtTransportType transportType,
unsigned int& receivedPacketCount);
237 virtual bool receivePackets();
243 unsigned int& receivedPacketCount);
247 virtual void processPendingMsgQueueCallbacks();
250 virtual void processPendingMsgMakeCallbacks();
253 virtual void setMessageTracking(
DtRtiMsg& msg);
257 virtual void destroyPackets();
269 virtual void startAsynchronousReceiveProcessing();
270 virtual void startAsynchronousSendProcessing();
273 virtual void stopAsynchronousReceiveProcessing();
274 virtual void stopAsynchronousSendProcessing();
288 virtual bool queueReceivePacket(
DtRtiMsg* rtiMessage, MAKRti::DtTransportType transportType,
289 bool& overflowWarning);
293 virtual void testIoIndicator(
const char* label,
unsigned int queueLevel,
294 unsigned int& lowWaterLine,
unsigned int& highWaterLine,
bool& overflowWarning);
300 DtBoost::shared_ptr<DtRtiAssistantLrcClient> assistantClient =
301 DtBoost::shared_ptr<DtRtiAssistantLrcClient>() );
307 static unsigned long runReceive(
void* usr );
308 static unsigned long runSend(
void* usr );
310 static void* runReceive(
void* usr );
311 static void* runSend(
void* usr );
333 HANDLE myReceiveThreadHandle;
334 HANDLE mySendThreadHandle;
336 HANDLE* myWaitEvents;
337 HANDLE mySendWaitEvent;
338 unsigned int myNumWaitEvents;
376 unsigned int myWaitEvent_BestEffortConn;
377 unsigned int myWaitEvent_PrimaryReliableConn;
378 unsigned int myWaitEvent_AncillaryReliableConnStart;
379 unsigned int myNoBestEffort;