]> SALOME platform Git repositories - modules/kernel.git/blob - idl/SALOME_Ports.idl
Salome HOME
To see which hdf5 we're using in configure log
[modules/kernel.git] / idl / SALOME_Ports.idl
1 //  Copyright (C) 2007-2008  CEA/DEN, EDF R&D, 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.
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 //  File   : SALOME_Ports.idl
23 //  Author : Andre RIBES, EDF
24
25 #ifndef _SALOME_PORTS_IDL_
26 #define _SALOME_PORTS_IDL_
27
28 /*! \file SALOME_Ports.idl
29   \brief This file contains the IDL base interfaces for ports in the SALOME component model.
30  */
31
32 /*! \brief module that contains interfaces to define the kind of ports provided by the
33 SALOME component model.
34 */
35 module Ports {
36   
37   /*! \brief Interface of a DSC Port.
38     This interface defines a Port.
39     A port is a CORBA interface.
40   */
41   interface Port {};
42
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.
46
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.
49   */
50   interface Control_Port : Ports::Port {};
51   
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.
55
56     Each Data Port has a Put operation for the emitter and a Get operation 
57     for the receiver.
58
59     \note Data_Port is currently empty but it permits to identified 
60     the behaviour of a port.
61   */
62   interface Data_Port : Ports::Port {};
63
64   /*! \brief Data_And_Control_Port.
65     This interface defines a combination of a Control_Port and a Data_Port.
66
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.
69   */
70   interface Data_And_Control_Port : Ports::Port {};
71
72   //!  This exception indicates that the property doesn't not exist.
73   exception NotDefined {};
74
75   //!  This exception indicates that the given value to the property is not of a good type.
76   exception BadType {};
77
78   //!  This exception indicates that the given value to the property is not authorized.
79   exception BadValue {};
80
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.
85   */
86   interface PortProperties {
87     
88     //!  This operation permits to set a value of a property.
89     /*!
90
91       \param name property's name.
92       \param value value of the property.
93
94       \exception Ports::BadType
95       \exception Ports::NotDefined
96     */
97     void set_property(in string name, in any value) raises (Ports::BadType,
98                                                             Ports::BadValue,
99                                                             Ports::NotDefined);
100
101     //!  This operation permits to get property's value.
102     /*!
103
104       \param name property's name.
105       \return value of the property.
106
107       \exception Ports::NotDefined
108     */
109     any  get_property(in string name) raises (Ports::NotDefined);
110   };
111
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.
116   */
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);
120   };
121 };
122
123 #endif