Version: 8.3.0
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Groups Pages
SALOME_Comm.idl
Go to the documentation of this file.
1 // Copyright (C) 2007-2016 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, 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 #ifndef _SALOME_COMM_IDL_
24 #define _SALOME_COMM_IDL_
25 
26 #include "SALOME_Exception.idl"
27 
33 module SALOME {
34 
35  enum TypeOfDataTransmitted { _DOUBLE_,_INT_ };
36 
37  enum TypeOfCommunication { CORBA_ , MPI_ , SOCKET_ };
38 
39  typedef sequence<double> vectorOfDouble;
40 
41  typedef sequence<long> vectorOfLong;
42 
43  interface MultiCommClass {
44  void setProtocol(in TypeOfCommunication typ);
45  };
46 
47  interface ServantLifeCycle {
48  void release();
49  };
50 
51  interface Sender {
52  TypeOfDataTransmitted getTypeOfDataTransmitted();
53  void release();
54  };
55 
56  interface SenderDouble : Sender {
57  SenderDouble buildOtherWithProtocol(in TypeOfCommunication type);
58  };
59 
60  interface SenderInt : Sender {
61  SenderInt buildOtherWithProtocol(in TypeOfCommunication type);
62  };
63 
64  //No compulsory copy between double and CORBA::Double
66  unsigned long getSize();
67  vectorOfDouble sendPart(in unsigned long n1,in unsigned long n2);
68  vectorOfDouble send();
69  };
70 
71  //Compulsory copy between double and CORBA::Double
73  unsigned long getSize();
74  //unsigned long getSize2();
75  vectorOfDouble sendPart(in unsigned long n1,in unsigned long n2);
76  };
77 
78  //No compulsory copy between int and CORBA::Long
80  unsigned long getSize();
81  vectorOfLong sendPart(in unsigned long n1,in unsigned long n2);
82  vectorOfLong send();
83  };
84 
85  //Compulsory copy between int and CORBA::Long
87  unsigned long getSize();
88  vectorOfLong sendPart(in unsigned long n1,in unsigned long n2);
89  };
90 
91  interface MPISender : Sender {
92  typedef struct Parameter {
93  unsigned long myproc;
94  unsigned long tag1;
95  unsigned long tag2;
96  string service;
97  } param;
98  param getParam();
99  void send();
100  void close(in param p);
101  };
102 
104  };
105 
107  };
108 
109  interface SocketSender : Sender {
110  typedef struct Parameter {
111  unsigned long lstart;
112  unsigned long lend;
113  unsigned long myport;
114  string internet_address;
115  } param;
116  param getParam();
117  void initCom() raises(SALOME_Exception);
118  void acceptCom() raises(SALOME_Exception);
119  void closeCom();
120  void endOfCom() raises(SALOME_Exception);
121  void send();
122  };
123 
125  };
126 
128  };
129 
130  interface Matrix {
131  SenderDouble getData();
132  long getSizeOfColumn();
133  void release();
134  };
135 };
136 
137 #endif