SALOME documentation central

src/DSC/DSC_Basic/ConnectionManager_i.hxx

00001 //  Copyright (C) 2007-2008  CEA/DEN, EDF R&D, OPEN CASCADE
00002 //
00003 //  Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
00004 //  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
00005 //
00006 //  This library is free software; you can redistribute it and/or
00007 //  modify it under the terms of the GNU Lesser General Public
00008 //  License as published by the Free Software Foundation; either
00009 //  version 2.1 of the License.
00010 //
00011 //  This library is distributed in the hope that it will be useful,
00012 //  but WITHOUT ANY WARRANTY; without even the implied warranty of
00013 //  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00014 //  Lesser General Public License for more details.
00015 //
00016 //  You should have received a copy of the GNU Lesser General Public
00017 //  License along with this library; if not, write to the Free Software
00018 //  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
00019 //
00020 //  See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
00021 //
00022 //  File   : ConnectionManager_i.hxx
00023 //  Author : André RIBES (EDF)
00024 //  Module : KERNEL
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