#include "buffer_list.hpp" namespace xmlioserver { namespace comm { /// ////////////////////// Définitions ////////////////////// /// CBufferList::CBufferList(MPIComm com_client_server) : SuperClass() , com_client_server(com_client_server) , nbbuffer(CMPIManager::GetCommSize(com_client_server) - 1) { for (StdSize i = 0; i < this->nbbuffer; i++) SuperClass::push_back(BufferType(BUFFER_SERVER_SIZE)); } CBufferList::~CBufferList(void) { /* Ne rien faire de plus */ } ///-------------------------------------------------------------- bool CBufferList::hasRequests(void) const { bool retvalue = true; for (StdSize i = 0; i < this->nbbuffer; i++) retvalue = retvalue && SuperClass::operator[](i).hasRequest(); return (retvalue); } void CBufferList::recvRequests(void) { while (!this->hasRequests()) { for (int i = 1; i < CMPIManager::GetCommSize(com_client_server); i++) { if (CMPIManager::HasReceivedData(com_client_server, i)) { StdSize size = CMPIManager::GetReceivedDataSize(com_client_server, i); if (SuperClass::operator[](i-1).isAvailable(size)) CMPIManager::ReceiveCircularBuffer (com_client_server, i, SuperClass::operator[](i-1)); } } } } std::vector CBufferList::getRequests(void) { std::vector retvalue; for (StdSize i = 0; i < this->nbbuffer; i++) retvalue.push_back(SuperClass::operator[](i).getNextRequest()); return (retvalue); } StdSize CBufferList::getNumberOfBuffers(void) const { return (this->nbbuffer) ; } ///-------------------------------------------------------------- } // namespace tree } // namespace xmlioserver