00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00031 namespace LLRP
00032 {
00033
00034
00035
00036
00037
00038
00039
00040
00041
00042
00043
00044
00045
00046
00047
00048
00049
00050 class CPlatformSocket;
00051
00081 class CConnection
00082 {
00083 public:
00084 CConnection (
00085 const CTypeRegistry * pTypeRegistry,
00086 unsigned int nBufferSize);
00087
00088 ~CConnection (void);
00089
00090 int
00091 openConnectionToReader (
00092 const char * pReaderHostName);
00093
00094 const char *
00095 getConnectError (void);
00096
00097 int
00098 closeConnectionToReader (void);
00099
00100 CMessage *
00101 transact (
00102 CMessage * pSendMessage,
00103 int nMaxMS);
00104
00105 const CErrorDetails *
00106 getTransactError (void);
00107
00108 EResultCode
00109 sendMessage (
00110 CMessage * pMessage);
00111
00112 const CErrorDetails *
00113 getSendError (void);
00114
00115 CMessage *
00116 recvMessage (
00117 int nMaxMS);
00118
00119 CMessage *
00120 recvResponse (
00121 int nMaxMS,
00122 const CTypeDescriptor * pResponseType,
00123 llrp_u32_t ResponseMessageID);
00124
00125 const CErrorDetails *
00126 getRecvError (void);
00127
00128 private:
00130 CPlatformSocket * m_pPlatformSocket;
00131
00133 const char * m_pConnectErrorStr;
00134
00136 const CTypeRegistry * m_pTypeRegistry;
00137
00139 std::list<CMessage *> m_listInputQueue;
00140
00142 unsigned int m_nBufferSize;
00143
00145 struct RecvState
00146 {
00148 llrp_byte_t * pBuffer;
00149
00151 unsigned int nBuffer;
00152
00156 int bFrameValid;
00157
00159 CFrameExtract FrameExtract;
00160
00162 CErrorDetails ErrorDetails;
00163 } m_Recv;
00164
00166 struct SendState
00167 {
00169 llrp_byte_t * pBuffer;
00170
00172 unsigned int nBuffer;
00173
00175 CErrorDetails ErrorDetails;
00176 } m_Send;
00177
00178 private:
00179 EResultCode
00180 recvAdvance (
00181 int nMaxMS,
00182 time_t timeLimit);
00183
00184 time_t
00185 calculateTimeLimit (
00186 int nMaxMS);
00187 };
00188
00189
00190 };
00191