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;