1 // Copyright (C) 2007-2020 CEA/DEN, EDF R&D, OPEN CASCADE
3 // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
4 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
6 // This library is free software; you can redistribute it and/or
7 // modify it under the terms of the GNU Lesser General Public
8 // License as published by the Free Software Foundation; either
9 // version 2.1 of the License, or (at your option) any later version.
11 // This library is distributed in the hope that it will be useful,
12 // but WITHOUT ANY WARRANTY; without even the implied warranty of
13 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 // Lesser General Public License for more details.
16 // You should have received a copy of the GNU Lesser General Public
17 // License along with this library; if not, write to the Free Software
18 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
20 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
23 // File : DSC_interface.hxx
24 // Author : André RIBES (EDF)
27 #ifndef _DSC_INTERFACE_HXX_
28 #define _DSC_INTERFACE_HXX_
35 #include "DSC_Callbacks.hxx"
37 /*! \class Engines_DSC_interface
38 * \brief This class implements the interface Engines::DSC
40 * This class is used by the sequential DSC implementation
41 * and the parallel DSC implementation.
43 class Engines_DSC_interface:
47 Engines_DSC_interface();
48 virtual ~Engines_DSC_interface();
51 * \see Engines::DSC::add_provides_port
53 virtual void add_provides_port(Ports::Port_ptr ref,
54 const char* provides_port_name,
55 Ports::PortProperties_ptr port_prop);
58 * \see Engines::DSC::add_uses_port
60 virtual void add_uses_port(const char* repository_id,
61 const char* uses_port_name,
62 Ports::PortProperties_ptr port_prop);
65 * \see Engines::DSC::get_provides_port
67 virtual Ports::Port_ptr get_provides_port(const char* provides_port_name,
68 const CORBA::Boolean connection_error);
71 * \see Engines::DSC::get_uses_port
73 virtual Engines::DSC::uses_port * get_uses_port(const char* uses_port_name);
76 * \see Engines::DSC::connect_provides_port
78 * \note This method uses Callbacks mechanism to inform the provides
79 * port how much uses ports are connected with. Currently, the provides
80 * port doesn't know its uses ports references. It's framework or application role
81 * to manage connections between ports.
83 virtual void connect_provides_port(const char* provides_port_name);
86 * \see Engines::DSC::connect_uses_port
88 * \note This method uses Callbacks mechanism to inform the uses
89 * port how much provides ports are connected with.
91 virtual void connect_uses_port(const char* uses_port_name,
92 Ports::Port_ptr provides_port_ref);
95 * \see Engines::DSC::is_connected
97 virtual CORBA::Boolean is_connected(const char* port_name);
100 * \see Engines::DSC::disconnect_provides_port
102 * \note This method uses Callbacks mechanism to inform the provides
103 * port how much uses ports are connected with. Currently, the provides
104 * port doesn't know its uses ports references. It's framework or application role
105 * to manage connections between ports.
107 virtual void disconnect_provides_port(const char* provides_port_name,
108 const Engines::DSC::Message message);
111 * \see Engines::DSC::disconnect_uses_port
114 * \note This method uses Callbacks mechanism to inform the uses
115 * port how much provides ports are connected with.
117 * \warning The new sequence of the uses port is sended by the callback.
118 * The old sequence is not destoyed. Is uses port user's role to destroy
121 virtual void disconnect_uses_port(const char* uses_port_name,
122 Ports::Port_ptr provides_port_ref,
123 const Engines::DSC::Message message);
126 * \see Engines::DSC::get_port_properties
128 virtual Ports::PortProperties_ptr get_port_properties(const char* port_name);
130 static void writeEvent(const char* request,const std::string& containerName, const char* instance_name,
131 const char* port_name, const char* error, const char* message);
135 /*-------------------------------------------------*/
136 /* Definition des types pour le stockage des ports */
138 enum port_type {uses, provides, none};
144 // Specifique aux uses port
145 Engines::DSC::uses_port uses_port_refs;
146 std::string repository_id;
148 // Specifique aux provides port;
149 Ports::Port_var provides_port_ref;
151 Ports::PortProperties_var port_prop;
154 typedef std::map<std::string, port_t *> ports;
156 /*-------------------------------------------------*/
157 /*-------------------------------------------------*/
160 ports::iterator my_ports_it;