36 class DtDisObjectManager;
59 typedef int (*DtPredicate)(
DtPdu *pdu,
void *arg);
63 DtNET_READ_SUCCESS =0,
64 DtNET_READ_NO_PACKETS =1,
65 DtNET_READ_BAD_PACKET =2,
66 DtNET_READ_SERVER_MSG =3,
67 DtNET_READ_SIZE_MISMATCH =4
71 DtPROCESS_PDU_SUCCESS =0,
72 DtPROCESS_PDU_WRONG_EXID =5,
73 DtPROCESS_PDU_NO_PDU =6,
74 DtNET_READ_FILTERED_PACKET =7
85 enum InitializationStatus {
87 DtCOULD_NOT_CREATE_SOCKET =1
103 int site_id,
int application_num,
104 InitializationStatus* status = 0,
bool use_async_io =
false,
105 bool useIpv6 =
false,
bool suppressSelfReflect =
false);
110 int site_id,
int application_num, InitializationStatus* status = 0,
111 bool use_async_io =
false,
bool suppressSelfReflect =
false);
116 int site_id,
int application_num, InitializationStatus* status = 0);
135 virtual void addPduCallback(
DtPduKind pduKind, DtPduCallbackFcn fcn,
void *usr);
140 virtual void removePduCallback(
DtPduKind pduKind, DtPduCallbackFcn fcn,
void *usr);
147 virtual int drainInput(
DtTime timeout=-1,
int nReadPerTimeCheck=100);
151 virtual int readAndProcess(
void);
156 virtual int processPdu(
DtPdu *pdu);
162 virtual DtPdu *netRead(
int *retCode = 0);
169 virtual void addInterestInPduKind(
DtPduKind kind);
176 virtual void subtractInterestInPduKind(
DtPduKind kind);
182 virtual DtPduKind readUntil(DtPredicate predicate,
void *arg,
187 virtual void addInterestInMcastAddr(
const DtInetAddr& addr);
191 virtual void subtractInterestInMcastAddr(
const DtInetAddr& addr);
230 virtual bool addDestination(
const DtInetAddr& destination,
DtU16 port=0);
238 virtual bool removeDestination(
const DtInetAddr& destination,
DtU16 port=0);
241 virtual void setExerciseId(
int exercise_id);
261 virtual DtPduFactory *pduFactory();
268 virtual void setPduFactory(DtPduFactory* fact);
271 virtual void enableFiltering();
274 virtual void disableFiltering();
285 virtual void setTimeStampType(
int relOrAbs);
288 virtual DtDisObjectManager* disObjectManager();
296 static const int nSizeMismatchComplain;
304 virtual DtTime currentTimeForStamping();
307 void init0(
int port,
int exerId,
int siteId,
int applNum,
308 InitializationStatus* status,
bool async_io,
bool useIpv6,
309 bool suppressSelfReflect);
312 void init0(
DtInetSocket* s,
int exerId,
int siteId,
int applNum,
313 InitializationStatus* status);
315 virtual void setRemoteEndpoint(
const DtInetAddr& addr,
int port );
319 int exerId,
int siteId,
int applNum, InitializationStatus* status);
322 bool useAsyncIo,
DtInetDevice* device,
bool suppressSelfReflect);
328 DtPduCallbackManager myPduCbMgr;
329 int pduInterest[DtMAX_PDU_KINDS + 1];
330 void zeroPduInterestList();
334 DtPduFactory* myPduFact;
335 DtPduFactory* myDfltPduFact;
338 DtDisObjectManager* myDisObjectManager;
344 char* myPacketBuffer;
350 int ap, InitializationStatus* status,
bool use_async_io,
bool useIpv6,
351 bool suppressSelfReflect)
357 , myEndpointReceivedFrom()
359 init0(po, ex, si, ap, status, use_async_io, useIpv6, suppressSelfReflect);
364 int ap, InitializationStatus* status)
370 , myEndpointReceivedFrom()
372 init0(so, ex, si, ap, status);
375 inline int DtExerciseConn::readAndProcess()
378 DtPdu *pdu = netRead(&result);
379 if (result == DtNET_READ_SUCCESS)
381 result = processPdu(pdu);
395 inline DtPduFactory *DtExerciseConn::pduFactory()
405 inline DtDisObjectManager* DtExerciseConn::disObjectManager()
407 return myDisObjectManager;