00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #ifndef _C_TRANSPORTCONTROL_H
00021 #define _C_TRANSPORTCONTROL_H
00022
00023
00024 #include "string_t.hpp"
00025 #include "map_t.hpp"
00026 #include "select_t.hpp"
00027
00028 #include "C_IdGenerator.hpp"
00029 #include "C_XmlData.hpp"
00030 #include "C_Transport.hpp"
00031
00032 #include "C_ProtocolFrame.hpp"
00033
00034
00035 #define ERROR_TRANSPORT_UNKNOWN -1
00036 typedef map_t<string_t, int> T_TransportNameMap, *T_pTransportNameMap ;
00037
00038 class C_TransportControl {
00039
00040 public:
00041
00042 typedef struct _transport_context {
00043 int m_id ;
00044 T_pTransport m_instance ;
00045 T_TransportCreateInstance m_ext_create ;
00046 T_TransportDeleteInstance m_ext_delete ;
00047 void *m_lib_handle ;
00048 } T_TransportContext, *T_pTransportContext ;
00049
00050 C_TransportControl(T_logFunction P_logError,
00051 T_logFunction P_logInfo) ;
00052 ~C_TransportControl() ;
00053
00054 bool fromXml (C_XmlData *P_data) ;
00055
00056 bool set_config_value(T_pConfigValueList P_config_value_list) ;
00057
00058 C_Transport* get_transport (char *P_name);
00059 C_Transport* get_transport (int P_id);
00060 T_pTransportContext get_transport_context (int P_id);
00061 int get_transport_id (char *P_name);
00062
00063 T_SelectDef get_call_select () ;
00064
00065 protected:
00066
00067 private:
00068
00069 T_pTransportNameMap m_name_map ;
00070 T_pTransportContext *m_transport_context_table ;
00071 int m_transport_table_size ;
00072 T_pC_IdGenerator m_id_gen ;
00073
00074 T_logFunction m_log_error, m_log_info ;
00075
00076 bool update_context(T_pTransportContext P_context,
00077 void *P_value);
00078
00079 T_SelectDef m_call_select ;
00080
00081 } ;
00082
00083 #endif
00084
00085
00086
00087