27 #ifndef _SUPERV_COMPONENT_I_HXX_
28 #define _SUPERV_COMPONENT_I_HXX_
53 virtual public POA_Engines::Superv_Component
57 PortableServer::POA_ptr
poa,
58 PortableServer::ObjectId * contId,
63 PortableServer::POA_ptr
poa,
68 bool regist =
false );
141 virtual void add_port(
const char * port_fab_type,
143 const char * port_name);
154 template <
typename SpecificPortType >
155 SpecificPortType *
add_port(
const char * port_fab_type,
157 const char * port_name);
166 const char* provides_port_name);
175 const char* uses_port_name);
184 const char* provides_port_name);
193 const char* uses_port_name);
204 const std::string servicename=
"")
const;
212 template <
typename SpecificPortType >
213 SpecificPortType *
get_port(
const char * port_name);
279 PortableServer::ServantBase* servant=
dynamic_cast<PortableServer::ServantBase*
>(
p_ref);
282 PortableServer::POA_var
poa =servant->_default_POA();
283 PortableServer::ObjectId_var oid =
poa->servant_to_id(servant);
284 poa->deactivate_object(oid);
285 servant->_remove_ref();
306 template <
typename SpecificPortType > SpecificPortType *
309 const char * port_name)
312 assert(port_fab_type);
315 SpecificPortType * retPort;
317 if (SALOME::VerbosityActivated())
318 std::cout <<
"---- Superv_Component_i::add_port : Mark 0 ---- " << port_name <<
"----" << std::endl;
321 if (s_port_type ==
"provides") {
324 retPort =
dynamic_cast<SpecificPortType *
>(
port);
325 if ( retPort == NULL ) {
delete port;
326 throw BadCast(
LOC(
"Can't cast to asked port type " ));
329 else if (s_port_type ==
"uses") {
332 if (SALOME::VerbosityActivated())
334 std::cout <<
"---- Superv_Component_i::add_port : Mark 1 ---- " <<
port <<
"----" << std::endl;
335 std::cout <<
"---- Superv_Component_i::add_port : Mark 1 ---- get_repository_id()" <<
port->get_repository_id() << std::endl;
337 retPort =
dynamic_cast<SpecificPortType *
>(
port);
338 if (SALOME::VerbosityActivated())
339 std::cout <<
"---- Superv_Component_i::add_port : Mark 2 ---- " << retPort <<
"----" << std::endl;
341 if ( retPort == NULL ) {
delete port;
342 throw BadCast(
LOC(
"Can't cast to asked port type " ));
346 throw BadType(
LOC(
OSS()<<
"port_type must be either 'provides' either 'uses' not "
353 template <
typename SpecificPortType > SpecificPortType *
359 SpecificPortType * retPort;
370 if ( superv_port->
p_ref != NULL ) {
374 else if ( superv_port->
u_ref != NULL ) {
384 << port_name <<
" does not exist."));
387 <<
" is not connected."));
390 retPort =
dynamic_cast<SpecificPortType *
>(
port);
391 if ( retPort == NULL ) {
392 throw BadCast(
LOC(
"Can't cast to required port type " ));
#define DSC_EXCEPTION(Derived)
Definition: DSC_Exception.hxx:161
#define LOC(message)
Definition: DSC_Exception.hxx:55
char * instanceName()
CORBA method: return name of the instance, unique in this Container.
Definition: Component_i.cxx:238
char * interfaceName()
CORBA method: return name of the component class.
Definition: Component_i.cxx:249
This class implements the interface Engines::DSC.
Definition: DSC_i.hxx:52
virtual Engines::DSC::uses_port * get_uses_port(const char *uses_port_name)
Definition: DSC_i.hxx:107
virtual Ports::Port_ptr get_provides_port(const char *provides_port_name, const CORBA::Boolean connection_error)
Definition: DSC_interface.cxx:109
port_type
Definition: DSC_interface.hxx:138
Class OSS is useful when streaming data through a function that expect a string as parameter.
Definition: DSC_Exception.hxx:65
This class implements DSC_User component.
Definition: Superv_Component_i.hxx:54
virtual void add_port(const char *port_fab_type, const char *port_type, const char *port_name)
Adds a port to the component.
Definition: Superv_Component_i.cxx:156
virtual void uses_port_changed(const char *uses_port_name, Engines::DSC::uses_port *new_uses_port, const Engines::DSC::Message message)
Definition: Superv_Component_i.cxx:301
virtual provides_port * create_provides_data_and_control_port(const char *)
Definition: Superv_Component_i.hxx:93
virtual port_factory * get_factory(const std::string &factory_name)
Get a factory from the component.
Definition: Superv_Component_i.cxx:92
virtual CORBA::Boolean init_service_with_multiple(const char *, const Engines::Superv_Component::seq_multiple_param &)
Definition: Superv_Component_i.hxx:258
virtual void provides_port_changed(const char *provides_port_name, int connection_nbr, const Engines::DSC::Message message)
Definition: Superv_Component_i.cxx:290
superv_ports::iterator my_superv_ports_it
Definition: Superv_Component_i.hxx:301
virtual ~Superv_Component_i()
Definition: Superv_Component_i.cxx:72
std::map< std::string, port_factory * > factory_map_t
Definition: Superv_Component_i.hxx:266
static void register_factory(const std::string &factory_name, port_factory *factory_ptr)
Add a factory the component.
Definition: Superv_Component_i.cxx:80
static void setTimeOut()
Definition: Superv_Component_i.cxx:327
virtual uses_port * create_uses_control_port()
Definition: Superv_Component_i.hxx:99
virtual provides_port * create_provides_control_port()
Definition: Superv_Component_i.hxx:87
static long dscTimeOut
Definition: Superv_Component_i.hxx:251
void beginService(const char *serviceName)
Definition: Superv_Component_i.cxx:340
static factory_map_t _factory_map
Definition: Superv_Component_i.hxx:267
virtual uses_port * create_uses_data_and_control_port(const char *)
Definition: Superv_Component_i.hxx:105
virtual void get_uses_port_names(std::vector< std::string > &port_names, const std::string servicename="") const
Gets the list of the ports of a service.
Definition: Superv_Component_i.cxx:316
Superv_Component_i(CORBA::ORB_ptr orb, PortableServer::POA_ptr poa, PortableServer::ObjectId *contId, const char *instanceName, const char *interfaceName, bool notif=false)
Definition: Superv_Component_i.cxx:43
virtual provides_port * create_provides_data_port(const std::string &port_fab_type)
This method permits to create a provides port provided by the platform.
Definition: Superv_Component_i.cxx:106
virtual uses_port * create_uses_data_port(const std::string &port_fab_type)
This method permits to create a uses port provided by the platform.
Definition: Superv_Component_i.cxx:131
std::map< std::string, superv_port_t * > superv_ports
Definition: Superv_Component_i.hxx:295
superv_ports my_superv_ports
Definition: Superv_Component_i.hxx:300
virtual void get_port(provides_port *&port, const char *provides_port_name)
Gets the provides port already added in the component.
Definition: Superv_Component_i.cxx:249
Definition: base_port.hxx:36
This class is an abstract for all the DSC ports factories that have to be registered into the compone...
Definition: port_factory.hxx:37
This class implements a DSC_User provides C++ port.
Definition: provides_port.hxx:41
This class implements a DSC_User uses C++ port.
Definition: uses_port.hxx:44
This exception is raised when you try to use a port that is not connected.
Definition: DSC_Engines.idl:90
This exception is raised when a port is used before it is added to the component.
Definition: DSC_Engines.idl:84
Message
This enumeration is used when the connection of a port (uses or provides) is changed.
Definition: DSC_Engines.idl:79
sequence< Ports::Port > uses_port
a uses port
Definition: DSC_Engines.idl:73
sequence< multiple_param > seq_multiple_param
Definition: DSC_Engines.idl:365
poa
Definition: SALOME_ContainerPy.py:377
container
Definition: TestComponentPy.py:63
port
Definition: salome_instance.py:114
orb
Definition: salome.py:122
Definition: Superv_Component_i.hxx:76
Definition: Superv_Component_i.hxx:74
Definition: Superv_Component_i.hxx:82
Definition: Superv_Component_i.hxx:75
Definition: Superv_Component_i.hxx:81
Definition: Superv_Component_i.hxx:78
Definition: Superv_Component_i.hxx:80
Definition: Superv_Component_i.hxx:79
Definition: Superv_Component_i.hxx:77
Definition: Superv_Component_i.hxx:271
uses_port * u_ref
Definition: Superv_Component_i.hxx:288
provides_port * p_ref
Definition: Superv_Component_i.hxx:292
~superv_port_t()
Definition: Superv_Component_i.hxx:273
superv_port_t()
Definition: Superv_Component_i.hxx:272