]> SALOME platform Git repositories - modules/kernel.git/blob - src/Communication/Receivers.hxx
Salome HOME
PR: mergefrom_BR_GEAY_05Nov04
[modules/kernel.git] / src / Communication / Receivers.hxx
1 #ifndef _RECEIVERS_HXX_
2 #define _RECEIVERS_HXX_
3
4 #include "SALOME_Comm_i.hxx"
5 #include "Receiver.hxx"
6 #ifdef HAVE_MPI2
7 #include "mpi.h"
8 #endif
9
10 /*!
11   Receiver used for transfert with CORBA when no copy is required remotely and locally.
12  */
13 template<class T,class TCorba,class TSeqCorba,class CorbaSender>
14 class CorbaNCNoCopyReceiver : public Receiver
15 {
16 private:
17   CorbaSender _mySender;
18 public:
19   CorbaNCNoCopyReceiver(CorbaSender mySender);
20   ~CorbaNCNoCopyReceiver();
21   void *getValue(long &size);
22 private:
23   void *getDistValue(long &size);
24 };
25
26 /*!
27   Receiver used for transfert with CORBA when copy is not required remotely but required locally.
28  */
29 template<class T,class TCorba,class TSeqCorba,class CorbaSender>
30 class CorbaNCWithCopyReceiver : public Receiver
31 {
32 private:
33   CorbaSender _mySender;
34 public:
35   CorbaNCWithCopyReceiver(CorbaSender mySender);
36   ~CorbaNCWithCopyReceiver();
37   void *getValue(long &size);
38 private:
39   void *getDistValue(long &size);
40 };
41
42 /*!
43   Receiver used for transfert with CORBA when copy is required remotely but not required locally.
44  */
45 template<class T,class TCorba,class TSeqCorba,class CorbaSender>
46 class CorbaWCNoCopyReceiver : public Receiver
47 {
48 private:
49   CorbaSender  _mySender;
50 public:
51   CorbaWCNoCopyReceiver(CorbaSender mySender);
52   ~CorbaWCNoCopyReceiver();
53   void *getValue(long &size);
54 private:
55   void *getDistValue(long &size);
56 };
57
58 /*!
59   Receiver used for transfert with CORBA when copy is required both remotely and locally.
60  */
61 template<class T,class TCorba,class TSeqCorba,class CorbaSender>
62 class CorbaWCWithCopyReceiver : public Receiver
63 {
64 private:
65   CorbaSender _mySender;
66 public:
67   CorbaWCWithCopyReceiver(CorbaSender mySender);
68   ~CorbaWCWithCopyReceiver();
69   void *getValue(long &size);
70 private:
71   void *getDistValue(long &size);
72 };
73
74 #ifdef HAVE_MPI2
75 /*!
76   Receiver for MPI transfert.
77  */
78 template<class T,MPI_Datatype T2>
79 class MPIReceiver : public Receiver
80 {
81 private:
82   SALOME::MPISender_ptr _mySender;
83 public:
84   MPIReceiver(SALOME::MPISender_ptr mySender);
85   ~MPIReceiver();
86   void *getValue(long &size);
87 private:
88   void *getDistValue(long &size);
89 };
90 #endif
91
92 #ifdef HAVE_SOCKET
93
94 class XDR;
95
96 /*!
97   Receiver for transfert with sockets.
98  */
99 template<class T,int (*myFunc)(XDR*,T*)>
100 class SocketReceiver : public Receiver
101 {
102 private:
103   SALOME::SocketSender_ptr _mySender;
104   int _clientSockfd;
105   bool _senderDestruc;
106 public:
107   SocketReceiver(SALOME::SocketSender_ptr mySender);
108   ~SocketReceiver();
109   void *getValue(long &size);
110 private:
111   void *getDistValue(long &size);
112   void initCom();
113   void connectCom(const char *, int);
114   void closeCom();
115 };
116 #endif
117
118 #include "Receivers.cxx"
119
120 #endif
121