34 class DtDisObjectManager;
39 class DtPduDecoderFactory;
40 class DtPduEncoderFactory;
60 typedef int (*DtPredicate)(
DtPdu *pdu,
void *arg);
64 DtNET_READ_SUCCESS =0,
65 DtNET_READ_NO_PACKETS =1,
66 DtNET_READ_BAD_PACKET =2,
67 DtNET_READ_SERVER_MSG =3,
68 DtNET_READ_SIZE_MISMATCH =4
72 DtPROCESS_PDU_SUCCESS =0,
73 DtPROCESS_PDU_WRONG_EXID =5,
74 DtPROCESS_PDU_NO_PDU =6,
75 DtNET_READ_FILTERED_PACKET =7
86 enum InitializationStatus {
88 DtCOULD_NOT_CREATE_SOCKET =1
104 int site_id,
int application_num,
105 InitializationStatus* status = 0,
bool use_async_io =
false,
106 bool useIpv6 =
false,
bool suppressSelfReflect =
false);
111 int site_id,
int application_num, InitializationStatus* status = 0,
112 bool use_async_io =
false,
bool suppressSelfReflect =
false);
117 int site_id,
int application_num, InitializationStatus* status = 0);
136 virtual void addPduCallback(
DtPduKind pduKind, DtPduCallbackFcn fcn,
void *usr);
141 virtual void removePduCallback(
DtPduKind pduKind, DtPduCallbackFcn fcn,
void *usr);
148 virtual int drainInput(
DtTime timeout=-1,
int nReadPerTimeCheck=100);
152 virtual int readAndProcess(
void);
157 virtual int processPdu(
DtPdu *pdu);
163 virtual DtPdu *netRead(
int *retCode = 0);
170 virtual void addInterestInPduKind(
DtPduKind kind);
177 virtual void subtractInterestInPduKind(
DtPduKind kind);
183 virtual DtPduKind readUntil(DtPredicate predicate,
void *arg,
188 virtual void addInterestInMcastAddr(
const DtInetAddr& addr);
192 virtual void subtractInterestInMcastAddr(
const DtInetAddr& addr);
231 virtual bool addDestination(
const DtInetAddr& destination,
DtU16 port=0);
239 virtual bool removeDestination(
const DtInetAddr& destination,
DtU16 port=0);
242 virtual void setExerciseId(
int exercise_id);
262 virtual DtPduFactory *pduFactory();
267 virtual DtPduEncoderFactory* pduEncoderFactory();
272 virtual DtPduDecoderFactory* pduDecoderFactory();
279 virtual void setPduFactory(DtPduFactory* fact);
282 virtual void enableFiltering();
285 virtual void disableFiltering();
296 virtual void setTimeStampType(
int relOrAbs);
299 virtual DtDisObjectManager* disObjectManager();
315 static const int nSizeMismatchComplain;
323 virtual DtTime currentTimeForStamping();
326 void init0(
int port,
int exerId,
int siteId,
int applNum,
327 InitializationStatus* status,
bool async_io,
bool useIpv6,
328 bool suppressSelfReflect);
331 void init0(
DtInetSocket* s,
int exerId,
int siteId,
int applNum,
332 InitializationStatus* status);
334 virtual void setRemoteEndpoint(
const DtInetAddr& addr,
int port );
338 int exerId,
int siteId,
int applNum, InitializationStatus* status);
341 bool useAsyncIo,
DtInetDevice* device,
bool suppressSelfReflect);
347 DtPduCallbackManager myPduCbMgr;
348 int pduInterest[DtMAX_PDU_KINDS + 1];
349 void zeroPduInterestList();
353 DtPduFactory* myPduFact;
354 DtPduFactory* myDfltPduFact;
355 DtPduEncoderFactory* myPduEncFact;
356 DtPduDecoderFactory* myPduDecFact;
359 DtDisObjectManager* myDisObjectManager;
366 char* myPacketBuffer;
372 int ap, InitializationStatus* status,
bool use_async_io,
bool useIpv6,
373 bool suppressSelfReflect)
379 , myEndpointReceivedFrom()
380 , myOwnershipHandler(0)
382 init0(po, ex, si, ap, status, use_async_io, useIpv6, suppressSelfReflect);
387 int ap, InitializationStatus* status)
393 , myEndpointReceivedFrom()
394 , myOwnershipHandler(0)
396 init0(so, ex, si, ap, status);
399 inline int DtExerciseConn::readAndProcess()
402 DtPdu *pdu = netRead(&result);
403 if (result == DtNET_READ_SUCCESS)
405 result = processPdu(pdu);
419 inline DtPduFactory *DtExerciseConn::pduFactory()
425 inline DtPduEncoderFactory *DtExerciseConn::pduEncoderFactory()
431 inline DtPduDecoderFactory *DtExerciseConn::pduDecoderFactory()
442 inline DtDisObjectManager* DtExerciseConn::disObjectManager()
444 return myDisObjectManager;