![]() |
VR-Link API Documentation for HLA 1.3
|
00001 /********************************************************************* 00002 ** Copyright (c) 1992-2010 VT MAK 00003 ** All rights reserved. 00004 *********************************************************************/ 00005 00006 00007 #if DtDIS 00008 00011 00012 #ifndef DtServiceRequestPdu_H_ 00013 #define DtServiceRequestPdu_H_ 00014 00015 #include "pdu.h" 00016 #include "packets/logisticsP.h" 00017 #include "hostStructs.h" 00018 #include "dInteraction.h" 00019 00020 #define DtSUPPLY_VALID 1 00021 #define DtSUPPLY_BAD_INDEX 0 00022 00023 class DT_DLL_VL DtExerciseConn; 00024 00025 class DT_DLL_VL DtServiceRequestPdu; 00026 typedef DtServiceRequestPdu DtServiceRequestInteraction; 00027 typedef void (*DtServiceRequestPduCb)(DtServiceRequestPdu *pdu, void *usr); 00028 00029 class DT_DLL_VL DtServiceRequestPdu : public DtInteraction 00030 { 00031 00032 public: 00033 00034 enum { PduStaticSize=28 }; 00035 00036 public: 00037 00038 00039 DtServiceRequestPdu(DtBufferPtr buffer = DtUSE_INTERNAL_BUFFER); 00040 DtServiceRequestPdu(const DtNetServiceRequestPdu *initial, 00041 DtBufferPtr buffer = DtUSE_INTERNAL_BUFFER); 00042 00043 DtServiceRequestPdu(const DtEntityIdentifier &requester, 00044 const DtEntityIdentifier &servicer, 00045 DtServiceType serviceType = DtServiceTypeRepair, 00046 DtBufferPtr another = DtUSE_INTERNAL_BUFFER); 00047 00048 00049 DtServiceRequestPdu(const DtEntityIdentifier &requester, 00050 const DtEntityIdentifier &servicer, 00051 const DtEntityType &supply, 00052 float quantity, 00053 DtBufferPtr buffer = DtUSE_INTERNAL_BUFFER); 00054 00055 00056 const DtEntityIdentifier &requestingId() const; 00057 void setRequestingId(const DtEntityIdentifier &requester); 00058 00059 const DtEntityIdentifier &servicingId() const; 00060 void setServicingId(const DtEntityIdentifier &servicer); 00061 00062 DtServiceType serviceType() const; 00063 void setServiceType(DtServiceType service); 00064 00065 int numSupplyTypes() const; 00066 void setNumSupplyTypes(int numTypes); 00067 00068 const DtEntityType &nthSupply(int supplyIndex, 00069 float *quantity = NULL, 00070 int *retCode = NULL) const; 00071 void setNthSupply(int supplyIndex, 00072 const DtEntityType &supply, 00073 float quantity, 00074 int *retCode = NULL); 00075 00076 float supplyQuantity(const DtEntityType &supply) const; 00077 00078 virtual void printData() const; 00079 virtual void printDataToStream(std::ostream& stream) const; 00080 00081 public: 00082 00083 static DtPdu *create(const DtNetPacket *initial, 00084 DtBufferPtr buffer = DtUSE_INTERNAL_BUFFER); 00085 static void addCallback(DtExerciseConn *conn, 00086 DtServiceRequestPduCb cb, void *usr); 00087 static void removeCallback(DtExerciseConn *conn, 00088 DtServiceRequestPduCb cb, void *usr); 00089 protected: 00090 DtPduKind internalGetPduKind() const {return DtServiceRequestPduKind;} 00091 int indexInBounds(int ind) const; 00092 DtEntityIdentifier reqId; 00093 DtEntityIdentifier servId; 00094 DtEntityType supType; 00095 }; 00096 00097 #endif 00098 #endif 00099 00100 00101