34 class DtDisObjectManager;
39 class DtPduDecoderFactory;
40 class DtPduEncoderFactory;
41 class DtStateRepositoryExtensionEncoderFactory;
42 class DtStateRepositoryExtensionDecoderFactory;
50 typedef DtPdu* (*DtPduInterceptFcn)(
DtPdu* pdu,
int *retCode);
65 typedef int (*DtPredicate)(
DtPdu *pdu,
void *arg);
69 DtNET_READ_SUCCESS =0,
70 DtNET_READ_NO_PACKETS =1,
71 DtNET_READ_BAD_PACKET =2,
72 DtNET_READ_SERVER_MSG =3,
73 DtNET_READ_SIZE_MISMATCH =4
77 DtPROCESS_PDU_SUCCESS =0,
78 DtPROCESS_PDU_WRONG_EXID =5,
79 DtPROCESS_PDU_NO_PDU =6,
80 DtNET_READ_FILTERED_PACKET =7
91 enum InitializationStatus {
93 DtCOULD_NOT_CREATE_SOCKET =1
109 int site_id,
int application_num,
110 InitializationStatus* status = 0,
bool use_async_io =
false,
111 bool useIpv6 =
false,
bool suppressSelfReflect =
false);
116 int site_id,
int application_num, InitializationStatus* status = 0,
117 bool use_async_io =
false,
bool suppressSelfReflect =
false);
122 int site_id,
int application_num, InitializationStatus* status = 0);
141 virtual void addPduCallback(
DtPduKind pduKind, DtPduCallbackFcn fcn,
void *usr);
146 virtual void removePduCallback(
DtPduKind pduKind, DtPduCallbackFcn fcn,
void *usr);
153 virtual int drainInput(
DtTime timeout=-1,
int nReadPerTimeCheck=100);
157 virtual int readAndProcess(
void);
162 virtual int processPdu(
DtPdu *pdu);
168 virtual DtPdu *netRead(
int *retCode = 0);
175 virtual void addInterestInPduKind(
DtPduKind kind);
182 virtual void subtractInterestInPduKind(
DtPduKind kind);
188 virtual DtPduKind readUntil(DtPredicate predicate,
void *arg,
193 virtual void addInterestInMcastAddr(
const DtInetAddr& addr);
197 virtual void subtractInterestInMcastAddr(
const DtInetAddr& addr);
236 virtual bool addDestination(
const DtInetAddr& destination,
DtU16 port=0);
244 virtual bool removeDestination(
const DtInetAddr& destination,
DtU16 port=0);
247 virtual void setExerciseId(
int exercise_id);
267 virtual DtPduFactory *pduFactory();
272 virtual DtPduEncoderFactory* pduEncoderFactory();
277 virtual DtPduDecoderFactory* pduDecoderFactory();
284 virtual void setPduFactory(DtPduFactory* fact);
288 virtual DtStateRepositoryExtensionEncoderFactory* stateRepoExtensionEncoderFactory();
292 virtual DtStateRepositoryExtensionDecoderFactory* stateRepoExtensionDecoderFactory();
295 virtual void enableFiltering();
298 virtual void disableFiltering();
309 virtual void setTimeStampType(
int relOrAbs);
312 virtual DtDisObjectManager* disObjectManager();
322 void setRelativeTimeRatio(
float ratio);
323 float relativeTimeRatio();
330 void setPduInterceptor(DtPduInterceptFcn interceptor);
331 DtPduInterceptFcn pduInterceptor()
const;
339 static const int nSizeMismatchComplain;
347 virtual DtTime currentTimeForStamping();
350 void init0(
int port,
int exerId,
int siteId,
int applNum,
351 InitializationStatus* status,
bool async_io,
bool useIpv6,
352 bool suppressSelfReflect);
355 void init0(
DtInetSocket* s,
int exerId,
int siteId,
int applNum,
356 InitializationStatus* status);
358 virtual void setRemoteEndpoint(
const DtInetAddr& addr,
int port );
362 int exerId,
int siteId,
int applNum, InitializationStatus* status);
365 bool useAsyncIo,
DtInetDevice* device,
bool suppressSelfReflect);
371 DtPduCallbackManager myPduCbMgr;
372 int pduInterest[DtMAX_PDU_KINDS + 1];
373 void zeroPduInterestList();
377 DtPduFactory* myPduFact;
378 DtPduFactory* myDfltPduFact;
379 DtPduEncoderFactory* myPduEncFact;
380 DtPduDecoderFactory* myPduDecFact;
381 DtStateRepositoryExtensionEncoderFactory* myStateRepoExtensionEncFac;
382 DtStateRepositoryExtensionDecoderFactory* myStateRepoExtensionDecFac;
385 DtDisObjectManager* myDisObjectManager;
387 DtPduInterceptFcn myPduInterceptor;
393 char* myPacketBuffer;
397 float myRelativeTimeRatio;
405 int ap, InitializationStatus* status,
bool use_async_io,
bool useIpv6,
406 bool suppressSelfReflect)
412 , myEndpointReceivedFrom()
413 , myOwnershipHandler(0)
414 , myPduInterceptor(0)
417 init0(po, ex, si, ap, status, use_async_io, useIpv6, suppressSelfReflect);
422 int ap, InitializationStatus* status)
428 , myEndpointReceivedFrom()
429 , myOwnershipHandler(0)
430 , myPduInterceptor(0)
433 init0(so, ex, si, ap, status);
436 inline int DtExerciseConn::readAndProcess()
439 DtPdu *pdu = netRead(&result);
440 if (result == DtNET_READ_SUCCESS)
442 result = processPdu(pdu);
456 inline DtPduFactory *DtExerciseConn::pduFactory()
462 inline DtPduEncoderFactory *DtExerciseConn::pduEncoderFactory()
468 inline DtPduDecoderFactory *DtExerciseConn::pduDecoderFactory()
473 inline DtStateRepositoryExtensionEncoderFactory* DtExerciseConn::stateRepoExtensionEncoderFactory()
475 return myStateRepoExtensionEncFac;
478 inline DtStateRepositoryExtensionDecoderFactory* DtExerciseConn::stateRepoExtensionDecoderFactory()
480 return myStateRepoExtensionDecFac;
489 inline DtDisObjectManager* DtExerciseConn::disObjectManager()
491 return myDisObjectManager;
DtInteraction is an abstract base class for representing HLA interactions (or events) (as opposed to ...
Definition: interactionHLA.h:33
DtExerciseConn(const DtExerciseConnInitializer &init, InitializationStatus *status=0)
This constructor takes a DtExerciseConnInitializer and creates an exercise connection based on the pa...
This file contains the declaration of the DtInetSocket base class.
Instances of DtExerciseConn are used to provide an application's interface or connection to the netwo...
Definition: exerciseConnHLA.h:60
#define DT_DLL_VL
Definition: vlMachineTypes.h:108
Instances of DtExerciseConnInitializer are used to provide the DtExerciseConn with initialization dat...
Definition: exerciseConnInitializerHLA.h:41
DtBaseExerciseConn & operator=(const DtBaseExerciseConn &)
Assignment Operator – Not Implemented.
std::vector< DtInetBuffer * > DtInetBufferChain
Socket state enumeration.
Definition: vlInetSocket.h:105
Definition: vlTimeStampType.h:18
The DtInetSocket class provides a protocol independant, address family independant base class for TCP...
Definition: vlInetSocket.h:201
DtBaseExerciseConn is an abstract base class.
Definition: baseExerciseConn.h:31
This file declares macros which specify the VR-Link version.
This file contains the declaration of the DtInetEndpoint class.
The DtInetEndpoint class provides a protocol independant, address family independent mechanism to rep...
Definition: vlInetEndpoint.h:33
The DtDisSocket class provides an address family independent datagram socket.
Definition: vlDisSocket.h:75
This file defines math constants and methods which may be useful in simulations.
virtual void sendStamped(const DtStateMsg &msg)=0
Send a state message to the network which has been time stamped with the current time.
Defines DtHashlist and several helper functions.
Represents a IPv4 or IPv6 address.
Definition: vlInetAddr.h:36
Definition: vlAttributePduStrategy.h:19
virtual void send(const DtStateMsg &msg)=0
Send a state message to the network.
DtPdu is the base class for all PDU's in VR-Link.
Definition: pdu.h:69
std::vector< char > DtInetBuffer
Socket state enumeration.
Definition: vlInetSocket.h:104
DtAttributePduStrategy
Definition: vlAttributePduStrategy.h:16
Represents Events in the RPR FOM.
Definition: eventId.h:52
This file contains the declaration of the DtInetAddr class.
Definition: vlInetDevice.h:101
int socket(int, int, int)
#define DtDEFAULT_SOCK_BUFF_SIZE
Definition: vlInet.h:69
This file contains the declaration of the DtInetDevice class.
DtHashlist is deprecated and provided for backwards compatibility only.
Definition: vlHashlist.h:69
This is a base class meant to encapsulate user callbacks on ownership management services.
Definition: ownershipHandlerHLA.h:27
unsigned short DtU16
A 16 bit unsigned integer value.
Definition: vlMachineTypes.h:140
Contains the standard DIS enumerations.
Definition: vlAttributePduStrategy.h:20
DtTimeStampType
Definition: vlTimeStampType.h:16
int DtProtocolVersionToSend
DtReal DtTime
A definition of DtTime.
Definition: vlTime.h:19
Contains the DtEventId class declaration.
DtPduKind
([UID 4]) - PDU Type
Definition: disEnums.h:238
Instances of DtString are used to represent strings.
Definition: vlString.h:29
This file provides a declaration of the class DtBaseExerciseConn.
class DtStateMsg:
Definition: stateMsgHLA.h:32
DtU16 DtExerciseId
Definition: baseExerciseConn.h:16
This file contains typedefs for machine dependant types.