1 #include "SenderFactory.hxx"
3 #include "SALOMEMultiComm.hxx"
4 #include "SALOME_Comm_i.hxx"
6 #ifdef COMP_CORBA_DOUBLE
7 #define SALOME_CorbaDoubleSender SALOME_CorbaDoubleNCSender_i
9 #define SALOME_CorbaDoubleSender SALOME_CorbaDoubleCSender_i
12 #ifdef COMP_CORBA_LONG
13 #define SALOME_CorbaLongSender SALOME_CorbaLongNCSender_i
15 #define SALOME_CorbaLongSender SALOME_CorbaLongCSender_i
18 SALOME::Sender_ptr SenderFactory::buildSender(SALOMEMultiComm &multiCommunicator,const double *tab,long lgr)throw(MultiCommException){
19 switch(multiCommunicator.getProtocol())
23 SALOME_CorbaDoubleSender * retc=new SALOME_CorbaDoubleSender(tab,lgr);
29 SALOME_MPISender_i* retm=new SALOME_MPISender_i(SALOME::DOUBLE_,tab,lgr,sizeof(double));
36 SALOME_SocketSender_i* rets=new SALOME_SocketSender_i(SALOME::DOUBLE_,tab,lgr,sizeof(double));
42 multiCommunicator.setProtocol(SALOME::CORBA_);
43 MESSAGE("PROTOCOL CHANGED TO CORBA");
44 SALOME_CorbaDoubleSender * retc=new SALOME_CorbaDoubleSender(tab,lgr);
47 // throw MultiCommException("Communication protocol not implemented");
51 SALOME::Sender_ptr SenderFactory::buildSender(SALOMEMultiComm &multiCommunicator,const int *tab,long lgr)throw(MultiCommException){
52 switch(multiCommunicator.getProtocol())
56 SALOME_CorbaLongSender * retc=new SALOME_CorbaLongSender(tab,lgr);
62 SALOME_MPISender_i* retm=new SALOME_MPISender_i(SALOME::INT_,tab,lgr,sizeof(int));
69 SALOME_SocketSender_i* rets=new SALOME_SocketSender_i(SALOME::INT_,tab,lgr,sizeof(int));
75 multiCommunicator.setProtocol(SALOME::CORBA_);
76 SALOME_CorbaLongSender * retc=new SALOME_CorbaLongSender(tab,lgr);
79 // throw MultiCommException("Communication protocol not implemented");
83 SALOME::Sender_ptr SenderFactory::buildSender(SALOME::TypeOfCommunication NewType,SALOME_Sender_i *src)
85 SALOMEMultiComm mc(NewType);
87 const void *data=src->getData(n);
88 switch(src->getTypeOfDataTransmitted())
91 return buildSender(mc,(const double *)data,n);
93 return buildSender(mc,(const int *)data,n);