Salome HOME
PR: merge from branch BR_UnitTests tag mergeto_trunk_17oct05
[modules/yacs.git] / idl / SALOME_Comm.idl
1 #ifndef _SALOME_COMM_IDL_
2 #define _SALOME_COMM_IDL_
3
4 #include "SALOME_Exception.idl"
5
6 module SALOME {
7   
8   enum TypeOfDataTransmitted { _DOUBLE_,_INT_ };
9
10   enum TypeOfCommunication { CORBA_ , MPI_ , SOCKET_ };
11
12   typedef sequence<double> vectorOfDouble;
13   
14   typedef sequence<long> vectorOfLong;
15   
16   interface MultiCommClass {
17     void setProtocol(in TypeOfCommunication typ);
18   };
19
20   interface ServantLifeCycle {
21     void release();
22   };
23
24   interface Sender {
25     TypeOfDataTransmitted getTypeOfDataTransmitted();
26     void release();
27   };
28
29   interface SenderDouble : Sender {
30     SenderDouble buildOtherWithProtocol(in TypeOfCommunication type);
31   };
32
33   interface SenderInt : Sender {
34     SenderInt buildOtherWithProtocol(in TypeOfCommunication type);
35   };
36
37   //No compulsory copy between double and CORBA::Double
38   interface CorbaDoubleNCSender : SenderDouble {
39     unsigned long getSize();
40     vectorOfDouble sendPart(in unsigned long n1,in unsigned long n2);
41     vectorOfDouble send();
42   };
43
44   //Compulsory copy between double and CORBA::Double
45   interface CorbaDoubleCSender : SenderDouble {
46     unsigned long getSize();
47     //unsigned long getSize2();
48     vectorOfDouble sendPart(in unsigned long n1,in unsigned long n2);
49   };
50
51   //No compulsory copy between int and CORBA::Long
52   interface CorbaLongNCSender : SenderInt {
53     unsigned long getSize();
54     vectorOfLong sendPart(in unsigned long n1,in unsigned long n2);
55     vectorOfLong send();
56   };
57
58   //Compulsory copy between int and CORBA::Long
59   interface CorbaLongCSender : SenderInt {
60     unsigned long getSize();
61     vectorOfLong sendPart(in unsigned long n1,in unsigned long n2);
62   };
63
64   interface MPISender : Sender {
65     typedef struct Parameter {
66       unsigned long myproc;
67       unsigned long tag1;
68       unsigned long tag2;
69       string service;
70     } param;
71     param getParam();
72     void send();
73     void close(in param p);
74   };
75
76   interface MPISenderDouble : SenderDouble,MPISender {
77   };
78
79   interface MPISenderInt : SenderInt,MPISender {
80   };
81
82   interface SocketSender : Sender {
83     typedef struct Parameter {
84       unsigned long lstart;
85       unsigned long lend;
86       unsigned long myport;
87      string internet_address;
88     } param;
89     param getParam();
90     void initCom() raises(SALOME_Exception);
91     void acceptCom() raises(SALOME_Exception);
92     void closeCom();
93     void endOfCom() raises(SALOME_Exception);
94     void send();
95   };
96
97   interface SocketSenderDouble : SenderDouble,SocketSender {
98   };
99
100   interface SocketSenderInt : SenderInt,SocketSender {
101   };
102 };
103
104 #endif