00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027 #ifndef _CONNECTION_MANAGER_I_HXX_
00028 #define _CONNECTION_MANAGER_I_HXX_
00029
00030 #include "DSC_Basic.hxx"
00031
00032 #include <iostream>
00033 #include <map>
00034 #include <pthread.h>
00035
00036 #include <SALOMEconfig.h>
00037 #include CORBA_SERVER_HEADER(DSC_Engines)
00038
00042 class ConnectionManager_i :
00043 public virtual POA_Engines::ConnectionManager
00044 {
00045 public :
00046 ConnectionManager_i(CORBA::ORB_ptr orb);
00047 virtual ~ConnectionManager_i();
00048
00053 Engines::ConnectionManager::connectionId connect(Engines::DSC_ptr uses_component,
00054 const char* uses_port_name,
00055 Engines::DSC_ptr provides_component,
00056 const char* provides_port_name);
00057
00064 void disconnect(Engines::ConnectionManager::connectionId id,
00065 Engines::DSC::Message message);
00066
00070 void ShutdownWithExit();
00071
00075 CORBA::Long getPID();
00076
00077 private :
00078
00079 struct connection_infos {
00080 Engines::DSC_var uses_component;
00081 std::string uses_port_name;
00082 Engines::DSC_var provides_component;
00083 std::string provides_port_name;
00084 Ports::Port_var provides_port;
00085 };
00086
00087 typedef std::map<Engines::ConnectionManager::connectionId,
00088 connection_infos *> ids_type;
00089 typedef std::map<Engines::ConnectionManager::connectionId,
00090 connection_infos *>::iterator ids_it_type;
00091
00092 ids_type ids;
00093 ids_it_type ids_it;
00094
00095 int current_id;
00096 pthread_mutex_t mutex;
00097 protected:
00098 CORBA::ORB_var _orb;
00099 };
00100
00101 #endif