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 : SALOME_Ports.idl
24 // Author : Andre RIBES, EDF
26 #ifndef _SALOME_PORTS_IDL_
27 #define _SALOME_PORTS_IDL_
29 /*! \file SALOME_Ports.idl
30 \brief This file contains the IDL base interfaces for ports in the SALOME component model.
33 /*! \brief module that contains interfaces to define the kind of ports provided by the
34 SALOME component model.
38 /*! \brief Interface of a DSC Port.
39 This interface defines a Port.
40 A port is a CORBA interface.
44 /*! \brief Interface of a Control_Port.
45 This interface defines a Control Port. When a component uses a control port,
46 it says that the service associated to the provides port can be started.
48 \note Currently Control_Port can not employed since it is not recognized
49 by the supervisor. But this type can be used to classified the port.
51 interface Control_Port : Ports::Port {};
53 /*! \brief Interface a Data_Port.
54 This interface defines a Data Port.
55 A Data Port is a port that transmit data between two components.
57 Each Data Port has a Put operation for the emitter and a Get operation
60 \note Data_Port is currently empty but it permits to identified
61 the behaviour of a port.
63 interface Data_Port : Ports::Port {};
65 /*! \brief Data_And_Control_Port.
66 This interface defines a combination of a Control_Port and a Data_Port.
68 \note Like Control_Port, Data_And_Control_Port can not employed since it is
69 not recognized by the supervisor. But this type can be used to classified the port.
71 interface Data_And_Control_Port : Ports::Port {};
73 //! This exception indicates that the property doesn't not exist.
74 exception NotDefined {};
76 //! This exception indicates that the given value to the property is not of a good type.
79 //! This exception indicates that the given value to the property is not authorized.
80 exception BadValue {};
82 /*! \brief Interface of a PortProperties.
83 This interface permits to set and get properties
84 associated to a port. Each uses or provides port have a
85 PortProperties object. But this object could be empty.
87 interface PortProperties {
89 //! This operation permits to set a value of a property.
92 \param name property's name.
93 \param value value of the property.
95 \exception Ports::BadType
96 \exception Ports::NotDefined
98 void set_property(in string name, in any value) raises (Ports::BadType,
102 //! This operation permits to get property's value.
105 \param name property's name.
106 \return value of the property.
108 \exception Ports::NotDefined
110 any get_property(in string name) raises (Ports::NotDefined);
113 /*! \brief Interface of a basic datastream short port
114 This interface defines a Data_Port that transmit a CORBA::Short.
115 This interface can be seen as an example of an integration of
116 a port in the DSC_User programming model.
118 interface Data_Short_Port : Ports::Data_Port {
119 //! this operation can be used by a uses port to send me a short
120 void put(in short data);