00001 
00002 
00003 
00004 
00005 
00006 
00007 
00008 
00009 
00010 
00011 
00012 
00013 
00014 
00015 
00016 
00017 
00018 
00019 
00020 #ifndef _C_PROTOCOLBINARYBODYNOTINTERPRETED_H_
00021 #define _C_PROTOCOLBINARYBODYNOTINTERPRETED_H_
00022 #include "C_ProtocolBinary.hpp"
00023 
00024 #include "map_t.hpp"
00025 
00026 
00027 class C_ProtocolBinaryBodyNotInterpreted : public C_ProtocolBinary {
00028 
00029 public:
00030 
00031   C_ProtocolBinaryBodyNotInterpreted() ;
00032   
00033   virtual ~C_ProtocolBinaryBodyNotInterpreted();
00034 
00035 
00036   virtual C_MessageFrame*     create_new_message (void                *P_xml,
00037                                                   T_pInstanceDataList  P_list,
00038                                                   int                 *P_nb_value);
00039   
00040   virtual C_MessageFrame*     create_new_message(C_MessageFrame *P_msg) ;
00041 
00042 
00043   virtual int   decode_body   (unsigned char *P_buf, 
00044                                size_t         P_size,
00045                                T_pBodyValue   P_valDec,
00046                                int           *P_nbValDec,
00047                                int           *P_headerId);
00048 
00049   virtual C_ProtocolFrame::T_MsgError  encode_body (int            P_nbVal, 
00050                                                     T_pBodyValue   P_val,
00051                                                     unsigned char *P_buf, 
00052                                                     size_t        *P_size) ;
00053 
00054   virtual T_ManagementSessionId* get_manage_session_elt (int P_id);
00055   virtual int get_nb_management_session () ;
00056   virtual bool check_present_session (int P_msg_id,int P_id) ;
00057   virtual bool find_present_session (int P_msg_id,int P_id) ;
00058 
00059   virtual iostream_output& print_body  (iostream_output&  P_stream, 
00060                                         int          P_nb,
00061                                         T_pBodyValue P_val,
00062                                         int          P_level = 0) ;
00063 
00064   typedef struct _struct_header_body_size_pos {
00065     size_t m_position;
00066     size_t m_size;
00067   } T_HeaderBodyPositionSize, 
00068     *T_pHeaderBodyPositionSize;
00069 
00070   typedef map_t<int,T_HeaderBodyPositionSize> T_HeaderBodyPositionSizeMap, 
00071     *T_pHeaderBodyPositionSizeMap ;
00072 
00073   void get_field_position (T_pHeaderBodyPositionSize P_pos, int P_id) ;
00074 
00075 protected:
00076 
00077   bool                       **m_field_present_table         ;
00078 
00079   virtual int xml_interpretor(C_XmlData *P_def);
00080   virtual int analyze_body_from_xml (C_XmlData *P_def);
00081   virtual int get_header_body_values_from_xml (C_XmlData *P_def) ;
00082   virtual int get_header_values_from_xml (C_XmlData *P_def) ;
00083 
00084   virtual int analyze_sessions_id_from_xml (C_XmlData *P_def) ;
00085 
00086   T_pHeaderBodyPositionSizeMap     m_header_body_position_size_map ;
00087 
00088   T_pManagementSessionId           m_value_sessions_table      ;
00089   int                              m_value_sessions_table_size ;
00090 
00091 } ;
00092 
00093 #endif // _C_PROTOCOLBINARYBODYNOTINTERPRETED_H_
00094 
00095 
00096 
00097