/*************************************************************************** Parser Class Header ( Parser.h ) ----------------------------------------- begin : 2013/02/19 copyright : (C) 2013 Solbox Inc. author : Development 1 Team - 2013/02/19 - 1st dadamin email : dev1@solbox.com version : 3.2.0 CopyRight(C) 2005 Solbox Inc. All Rights reserved. Redistribution and use in source and binary forms, with or with out modification, are not permitted in outside of Solbox Inc. ***************************************************************************/ #ifndef __PARSER_H__ #define __PARSER_H__ // XML #ifdef HAVE_CONFIG_H #include #endif #include #include "Protocol.h" ///< BYTE ŸÀÔ Á¤ÀÇ #ifndef _BYTE_DEFINED #define _BYTE_DEFINED typedef unsigned char BYTE; #endif // _BYTE_DEFINED class CServiceInfo; class CSocketControl; // Parser Class class CParser { public: CParser(); virtual ~CParser(); int SetSocket(int sfd, SSL* ssl); virtual int ReadHeader() = 0; virtual int ReadBody() = 0; virtual int ConvertJobData(void *pData) = 0; virtual int WriteHeader(int32_t bodylen = 0) = 0; virtual int WriteBoad(int32_t bodylen = 0) = 0; virtual int ConvertClient(void *pData, int nCode = 0) = 0; protected: CSocketControl * m_sock; int32_t m_resp; private: }; class CXMLParser : public CParser { public: CXMLParser(); virtual ~CXMLParser(); virtual int ReadHeader() ; virtual int ReadBody(); virtual int ConvertJobData(void *pData); virtual int WriteHeader(int32_t bodylen = 0); virtual int WriteBoad(int32_t bodylen = 0); virtual int ConvertClient(void *pData, int nCode = 0); xmlpp::Node* GetXMLJobNode() { return m_Job; } protected: bool GetXMJobLNode(); int Parsering(const char * pstrxml); private: MgeHeaderXML m_header; BYTE* m_pBodyData; xmlpp::DomParser m_xmlparser; //xmlpp::Node::NodeList m_reqList; xmlpp::Node* m_Job; }; class CSDKParser : public CParser { public: CSDKParser(); virtual ~CSDKParser(); virtual int ReadHeader(); virtual int ReadBody(); virtual int ConvertJobData(void *pData); virtual int WriteHeader(int32_t bodylen = 0); virtual int WriteBoad(int32_t bodylen = 0); virtual int ConvertClient(void *pData, int nCode = 0); protected: private: MgeHeaderSDK m_header; BYTE* m_pBodyData; }; class CEtcParser : public CParser { public: CEtcParser(); virtual ~CEtcParser(); virtual int ReadHeader(); virtual int ReadBody(); virtual int ConvertJobData(void *pData); virtual int WriteHeader(int32_t bodylen = 0); virtual int WriteBoad(int32_t bodylen = 0); virtual int ConvertClient(void *pData, int nCode = 0); protected: private: MgeHeaderEtc m_header; BYTE* m_pBodyData; }; class CStrXMLParser : public CXMLParser { public: CStrXMLParser(); virtual ~CStrXMLParser(); virtual int ReadHeader(); virtual int ReadBody(); virtual int ConvertJobData(void *pData); virtual int WriteHeader(int32_t bodylen = 0); virtual int WriteBoad(int32_t bodylen = 0); virtual int ConvertClient(void *pData, int nCode = 0); protected: private: string m_readdata; }; // Abstract Factory returning a Parser class CParserFactory { public: CParser* CreateParser(CServiceInfo &info); }; #endif // __PARSER_H__