Salome HOME
updated copyright message
[modules/kernel.git] / idl / SALOME_Ports.idl
1 // Copyright (C) 2007-2023  CEA, EDF, OPEN CASCADE
2 //
3 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
4 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
5 //
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.
10 //
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.
15 //
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
19 //
20 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
21 //
22
23 //  File   : SALOME_Ports.idl
24 //  Author : Andre RIBES, EDF
25 //
26 #ifndef _SALOME_PORTS_IDL_
27 #define _SALOME_PORTS_IDL_
28
29 /*! \file SALOME_Ports.idl
30   \brief This file contains the IDL base interfaces for ports in the SALOME component model.
31  */
32
33 /*! \brief module that contains interfaces to define the kind of ports provided by the
34 SALOME component model.
35 */
36 module Ports {
37   
38   /*! \brief Interface of a DSC Port.
39     This interface defines a Port.
40     A port is a CORBA interface.
41   */
42   interface Port {};
43
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.
47
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.
50   */
51   interface Control_Port : Ports::Port {};
52   
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.
56
57     Each Data Port has a Put operation for the emitter and a Get operation 
58     for the receiver.
59
60     \note Data_Port is currently empty but it permits to identified 
61     the behaviour of a port.
62   */
63   interface Data_Port : Ports::Port {};
64
65   /*! \brief Data_And_Control_Port.
66     This interface defines a combination of a Control_Port and a Data_Port.
67
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.
70   */
71   interface Data_And_Control_Port : Ports::Port {};
72
73   //!  This exception indicates that the property doesn't not exist.
74   exception NotDefined {};
75
76   //!  This exception indicates that the given value to the property is not of a good type.
77   exception BadType {};
78
79   //!  This exception indicates that the given value to the property is not authorized.
80   exception BadValue {};
81
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.
86   */
87   interface PortProperties {
88     
89     //!  This operation permits to set a value of a property.
90     /*!
91
92       \param name property's name.
93       \param value value of the property.
94
95       \exception Ports::BadType
96       \exception Ports::NotDefined
97     */
98     void set_property(in string name, in any value) raises (Ports::BadType,
99                                                             Ports::BadValue,
100                                                             Ports::NotDefined);
101
102     //!  This operation permits to get property's value.
103     /*!
104
105       \param name property's name.
106       \return value of the property.
107
108       \exception Ports::NotDefined
109     */
110     any  get_property(in string name) raises (Ports::NotDefined);
111   };
112
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.
117   */
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);
121   };
122 };
123
124 #endif