35 class DtDisObjectManager;
40 class DtPduDecoderFactory;
41 class DtPduEncoderFactory;
42 class DtStateRepositoryExtensionEncoderFactory;
43 class DtStateRepositoryExtensionDecoderFactory;
51 typedef DtPdu* (*DtPduInterceptFcn)(
DtPdu* pdu,
int *retCode);
66 typedef int (*DtPredicate)(
DtPdu *pdu,
void *arg);
70 DtNET_READ_SUCCESS =0,
71 DtNET_READ_NO_PACKETS =1,
72 DtNET_READ_BAD_PACKET =2,
73 DtNET_READ_SERVER_MSG =3,
74 DtNET_READ_SIZE_MISMATCH =4
78 DtPROCESS_PDU_SUCCESS =0,
79 DtPROCESS_PDU_WRONG_EXID =5,
80 DtPROCESS_PDU_NO_PDU =6,
81 DtNET_READ_FILTERED_PACKET =7
92 enum InitializationStatus {
94 DtCOULD_NOT_CREATE_SOCKET =1
110 int site_id,
int application_num,
111 InitializationStatus* status = 0,
bool use_async_io =
false,
112 bool useIpv6 =
false,
bool suppressSelfReflect =
false);
117 int site_id,
int application_num, InitializationStatus* status = 0,
118 bool use_async_io =
false,
bool suppressSelfReflect =
false);
123 int site_id,
int application_num, InitializationStatus* status = 0);
142 virtual void addPduCallback(
DtPduKind pduKind, DtPduCallbackFcn fcn,
void *usr);
147 virtual void removePduCallback(
DtPduKind pduKind, DtPduCallbackFcn fcn,
void *usr);
163 virtual int drainInput(
DtTime timeout=-1,
int nReadPerTimeCheck=100);
167 virtual int readAndProcess(
void);
172 virtual int processPdu(
DtPdu *pdu);
178 virtual DtPdu *netRead(
int *retCode = 0);
185 virtual void addInterestInPduKind(
DtPduKind kind);
192 virtual void subtractInterestInPduKind(
DtPduKind kind);
198 virtual DtPduKind readUntil(DtPredicate predicate,
void *arg,
203 virtual void addInterestInMcastAddr(
const DtInetAddr& addr);
207 virtual void subtractInterestInMcastAddr(
const DtInetAddr& addr);
246 virtual bool addDestination(
const DtInetAddr& destination,
DtU16 port=0);
254 virtual bool removeDestination(
const DtInetAddr& destination,
DtU16 port=0);
257 virtual void setExerciseId(
int exercise_id);
277 virtual DtPduFactory *pduFactory();
282 virtual DtPduEncoderFactory* pduEncoderFactory();
287 virtual DtPduDecoderFactory* pduDecoderFactory();
294 virtual void setPduFactory(DtPduFactory* fact);
298 virtual DtStateRepositoryExtensionEncoderFactory* stateRepoExtensionEncoderFactory();
302 virtual DtStateRepositoryExtensionDecoderFactory* stateRepoExtensionDecoderFactory();
305 virtual void enableFiltering();
308 virtual void disableFiltering();
319 virtual void setTimeStampType(
int relOrAbs);
322 virtual DtDisObjectManager* disObjectManager();
332 void setRelativeTimeRatio(
float ratio);
333 float relativeTimeRatio();
340 void setPduInterceptor(DtPduInterceptFcn interceptor);
341 DtPduInterceptFcn pduInterceptor()
const;
349 static const int nSizeMismatchComplain;
357 virtual DtTime currentTimeForStamping();
360 void init0(
int port,
int exerId,
int siteId,
int applNum,
361 InitializationStatus* status,
bool async_io,
bool useIpv6,
362 bool suppressSelfReflect);
365 void init0(
DtInetSocket* s,
int exerId,
int siteId,
int applNum,
366 InitializationStatus* status);
368 virtual void setRemoteEndpoint(
const DtInetAddr& addr,
int port );
372 int exerId,
int siteId,
int applNum, InitializationStatus* status);
375 bool useAsyncIo,
DtInetDevice* device,
bool suppressSelfReflect);
381 DtPduCallbackManager myPduCbMgr;
382 DtIffPduCallbackManager myIffPduCbMgr;
383 int pduInterest[DtMAX_PDU_KINDS + 1];
384 void zeroPduInterestList();
388 DtPduFactory* myPduFact;
389 DtPduFactory* myDfltPduFact;
390 DtPduEncoderFactory* myPduEncFact;
391 DtPduDecoderFactory* myPduDecFact;
392 DtStateRepositoryExtensionEncoderFactory* myStateRepoExtensionEncFac;
393 DtStateRepositoryExtensionDecoderFactory* myStateRepoExtensionDecFac;
396 DtDisObjectManager* myDisObjectManager;
398 DtPduInterceptFcn myPduInterceptor;
404 char* myPacketBuffer;
408 float myRelativeTimeRatio;
416 int ap, InitializationStatus* status,
bool use_async_io,
bool useIpv6,
417 bool suppressSelfReflect)
423 , myEndpointReceivedFrom()
424 , myOwnershipHandler(0)
425 , myPduInterceptor(0)
429 init0(po, ex, si, ap, status, use_async_io, useIpv6, suppressSelfReflect);
434 int ap, InitializationStatus* status)
440 , myEndpointReceivedFrom()
441 , myOwnershipHandler(0)
442 , myPduInterceptor(0)
446 init0(so, ex, si, ap, status);
449 inline int DtExerciseConn::readAndProcess()
452 DtPdu *pdu = netRead(&result);
453 if (result == DtNET_READ_SUCCESS)
455 result = processPdu(pdu);
469 inline DtPduFactory *DtExerciseConn::pduFactory()
475 inline DtPduEncoderFactory *DtExerciseConn::pduEncoderFactory()
481 inline DtPduDecoderFactory *DtExerciseConn::pduDecoderFactory()
486 inline DtStateRepositoryExtensionEncoderFactory* DtExerciseConn::stateRepoExtensionEncoderFactory()
488 return myStateRepoExtensionEncFac;
491 inline DtStateRepositoryExtensionDecoderFactory* DtExerciseConn::stateRepoExtensionDecoderFactory()
493 return myStateRepoExtensionDecFac;
502 inline DtDisObjectManager* DtExerciseConn::disObjectManager()
504 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:61
#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
DtIffInteractionType
Definition: disEnums.h:2134
DtU16 DtExerciseId
Definition: baseExerciseConn.h:16
This file contains typedefs for machine dependant types.