#include "xmlioserver_spl.hpp" #include "event_client.hpp" #include "buffer_out.hpp" #include "message.hpp" #include "type.hpp" #include "mpi.hpp" namespace xios { CEventClient::CEventClient(int classId_,int typeId_) { classId=classId_ ; typeId=typeId_ ; } void CEventClient::push(int rank,int nbSender,CMessage & msg) { nbSenders.push_back(nbSender) ; ranks.push_back(rank) ; messages.push_back(&msg) ; } bool CEventClient::isEmpty(void) { return ranks.empty() ; } list CEventClient::getRanks(void) { return ranks ; } list CEventClient::getSizes(void) { list::iterator it ; list sizes ; size_t headerSize=sizeof(int)+sizeof(classId)+sizeof(typeId) ; for(it=messages.begin();it!=messages.end();++it) sizes.push_back((*it)->size()+headerSize) ; return sizes ; } void CEventClient::send(list& buffers) { list::iterator itBuff ; list::iterator itMsg ; list::iterator itSenders ; for(itBuff=buffers.begin(),itMsg=messages.begin(),itSenders=nbSenders.begin();itBuff!=buffers.end();++itBuff,++itMsg,++itSenders) { **itBuff<<*itSenders<& serverList_) { client=&client_ ; nbSender=nbSender_ ; serverList=serverList_ ; client->registerEvent(*this) ; } list CEventClient::newEvent(int classId, int type, list sizes) { list::iterator it ; list::iterator itBuff; CMessage msg; msg< buffers=client->newEvent(*this,sizes) ; for(itBuff=buffers.begin();itBuff!=buffers.end();itBuff++) *(*itBuff)<sendEvent(*this) ; } */ }