1 // Copyright (C) 2007-2008 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.
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
22 // File : SALOME_Ports.idl
23 // Author : Andre RIBES, EDF
25 #ifndef _SALOME_PORTS_IDL_
26 #define _SALOME_PORTS_IDL_
28 /*! \file SALOME_Ports.idl
29 \brief This file contains the IDL base interfaces for ports in the SALOME component model.
32 /*! \brief module that contains interfaces to define the kind of ports provided by the
33 SALOME component model.
37 /*! \brief Interface of a DSC Port.
38 This interface defines a Port.
39 A port is a CORBA interface.
43 /*! \brief Interface of a Control_Port.
44 This interface defines a Control Port. When a component uses a control port,
45 it says that the service associated to the provides port can be started.
47 \note Currently Control_Port can not employed since it is not recognized
48 by the supervisor. But this type can be used to classified the port.
50 interface Control_Port : Ports::Port {};
52 /*! \brief Interface a Data_Port.
53 This interface defines a Data Port.
54 A Data Port is a port that transmit data between two components.
56 Each Data Port has a Put operation for the emitter and a Get operation
59 \note Data_Port is currently empty but it permits to identified
60 the behaviour of a port.
62 interface Data_Port : Ports::Port {};
64 /*! \brief Data_And_Control_Port.
65 This interface defines a combination of a Control_Port and a Data_Port.
67 \note Like Control_Port, Data_And_Control_Port can not employed since it is
68 not recognized by the supervisor. But this type can be used to classified the port.
70 interface Data_And_Control_Port : Ports::Port {};
72 //! This exception indicates that the property doesn't not exist.
73 exception NotDefined {};
75 //! This exception indicates that the given value to the property is not of a good type.
78 //! This exception indicates that the given value to the property is not authorized.
79 exception BadValue {};
81 /*! \brief Interface of a PortProperties.
82 This interface permits to set and get properties
83 associated to a port. Each uses or provides port have a
84 PortProperties object. But this object could be empty.
86 interface PortProperties {
88 //! This operation permits to set a value of a property.
91 \param name property's name.
92 \param value value of the property.
94 \exception Ports::BadType
95 \exception Ports::NotDefined
97 void set_property(in string name, in any value) raises (Ports::BadType,
101 //! This operation permits to get property's value.
104 \param name property's name.
105 \return value of the property.
107 \exception Ports::NotDefined
109 any get_property(in string name) raises (Ports::NotDefined);
112 /*! \brief Interface of a basic datastream short port
113 This interface defines a Data_Port that transmit a CORBA::Short.
114 This interface can be seen as an example of an integration of
115 a port in the DSC_User programming model.
117 interface Data_Short_Port : Ports::Data_Port {
118 //! this operation can be used by a uses port to send me a short
119 void put(in short data);