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 #ifndef _CONNECTION_MANAGER_I_HXX_
00027 #define _CONNECTION_MANAGER_I_HXX_
00028
00029 #include "DSC_Basic.hxx"
00030
00031 #include <iostream>
00032 #include <map>
00033 #include <pthread.h>
00034
00035 #include <SALOMEconfig.h>
00036 #include CORBA_SERVER_HEADER(DSC_Engines)
00037
00041 class ConnectionManager_i :
00042 public virtual POA_Engines::ConnectionManager
00043 {
00044 public :
00045 ConnectionManager_i(CORBA::ORB_ptr orb);
00046 virtual ~ConnectionManager_i();
00047
00052 Engines::ConnectionManager::connectionId connect(Engines::DSC_ptr uses_component,
00053 const char* uses_port_name,
00054 Engines::DSC_ptr provides_component,
00055 const char* provides_port_name);
00056
00063 void disconnect(Engines::ConnectionManager::connectionId id,
00064 Engines::DSC::Message message);
00065
00069 void ShutdownWithExit();
00070
00074 CORBA::Long getPID();
00075
00076 private :
00077
00078 struct connection_infos {
00079 Engines::DSC_var uses_component;
00080 std::string uses_port_name;
00081 Engines::DSC_var provides_component;
00082 std::string provides_port_name;
00083 Ports::Port_var provides_port;
00084 };
00085
00086 typedef std::map<Engines::ConnectionManager::connectionId,
00087 connection_infos *> ids_type;
00088 typedef std::map<Engines::ConnectionManager::connectionId,
00089 connection_infos *>::iterator ids_it_type;
00090
00091 ids_type ids;
00092 ids_it_type ids_it;
00093
00094 int current_id;
00095 pthread_mutex_t mutex;
00096 protected:
00097 CORBA::ORB_var _orb;
00098 };
00099
00100 #endif