162 lines
3.2 KiB
C++
162 lines
3.2 KiB
C++
/***************************************************************************
|
|
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 <config.h>
|
|
#endif
|
|
#include <libxml++/libxml++.h>
|
|
|
|
#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__
|