/**************************************************************************** * @source : VMSThread.h * @description : VMS Server Socket Thread header **************************************************************************** * DATE AUTHOR DESCRIPTION * -------------------------------------------------------------------------- * 2012/03/09 CYM [100] First Cut * ****************************************************************************/ //--------------------------------------------------------------------------- #ifndef VMSThreadH #define VMSThreadH //--------------------------------------------------------------------------- #include #include #include "VMSProtocol.h" //--------------------------------------------------------------------------- /*************************************** ** ** Constants ** */ #define SERVER_MSG_BUF_SIZE 65536 /* message buffer size */ #define SERVER_MAX_PACKET_SIZE 65536 /* max packet size */ #define SERVER_CONNECT_RETRY_TIME 20 /* connect retry time */ enum { /* common */ ST_IDLE = 1, ST_INITIATE, ST_SECTION, ST_CLOSE, /* sender */ ST_LOCAL_COMMAND, ST_CLIENT_COMMAND, /* receiver */ ST_LOCAL_WAIT, ST_CLIENT_WAIT }; enum { SET_SERVER_SUCC, SET_SERVER_FAIL }; /*************************************** ** ** Type definitions ** */ typedef struct { BOOL GeneralStatus; /* ±âº»»óÅÂÁ¤º¸ */ BOOL ModuleStatus; /* ¸ðµâ»óÅÂÁ¤º¸ */ } ACCEPT_REGISTERED; typedef union { } COMMAND_ARGUMENT; //--------------------------------------------------------------------------- class TVMSThread : public TClientSocketThread { private: TCustomIpClient* pClientSocket; bool *ThreadActiveIndicator; AnsiString m_strName; /* thread name */ int m_RxLen; /* received data length */ int m_TxLen; /* data length to transmit */ BYTE m_RxBuff[SERVER_MAX_PACKET_SIZE]; /* receive data buffer */ BYTE m_TxBuff[SERVER_MAX_PACKET_SIZE]; /* transmit data buffer */ TDateTime m_rTimer; /* timer for receiver */ TDateTime m_WatchDogTimer; /* watchdog timer */ TCOMMLOG *m_Log; /* log */ SERVER_THREAD_STRUCT m_Server; /* server thread */ bool m_InitFlag; /* Init Flag */ DWORD m_DataPacketNumber; /* DataPacket Number */ DWORD m_FrEDConfirmPacketNumber; /* FrEDConfirmPacket Number */ bool m_LoginFlag; /* Login Flag */ DWORD m_PublishSerialNbr; /* Publish Serial Nbr */ ACCEPT_REGISTERED m_Registered; /* Accept Registered Subscription */ VMS_CURRENT_STATE *m_pState; /* VMS »óÅ Á¤º¸ */ REQ_INFO_STRUCT m_Req; /* client request */ SET_INFO_STRUCT m_Set; /* client set */ int __fastcall ServerInitMem(void); void __fastcall ServerInitInfo(void); void __fastcall ServerTerminate(void); void ProcLog(BYTE bKind, char *fmt, ...); void __fastcall LOG_WriteTime(Time_t *pTime); int __fastcall SaveStateData(void *pData); void __fastcall ClientResponse(int error); int __fastcall SendCommMessage(UINT Msg, int wParam, int lParam); int __fastcall SendCommDataMessage(UINT Msg, void *pData, int iLen); int __fastcall RecvPacket(void *Data, int Len); int __fastcall ProcessPacket(BYTE *pBuffer, int Len); int __fastcall SendPacket(void *Data, int Len); int __fastcall ProcessCommand(BYTE cmd, COMMAND_ARGUMENT *pArg); void __fastcall ServerStateMachine(void); void __fastcall ProcErrorState(bool flag, int result); void __fastcall SetServerState(int Case); int __fastcall CheckRegistered(); int __fastcall CheckLocalData(bool *pflag); int __fastcall CheckClientData(bool *pflag); protected: void __fastcall Execute(); void __fastcall TcpServerClientError(TObject *Sender, int SocketError); bool __fastcall SocketActivity(void); public: __fastcall TVMSThread(TServerSocketThread* ServerSocketThread, TCustomIpClient* ClientSocket, int Tag, bool *ActiveIndicator); __fastcall ~TVMSThread(); }; //--------------------------------------------------------------------------- #endif