source: XMLIO_V2/dev/dev_rv/src/xmlio/buffer_list.cpp @ 178

Last change on this file since 178 was 178, checked in by hozdoba, 12 years ago
File size: 2.0 KB
Line 
1#include "buffer_list.hpp"
2
3namespace xmlioserver
4{
5   namespace comm
6   {
7      /// ////////////////////// Définitions ////////////////////// ///
8      CBufferList::CBufferList(MPIComm com_client_server)
9         : SuperClass()
10         , com_client_server(com_client_server)
11         , nbbuffer(CMPIManager::GetCommSize(com_client_server) - 1)
12      {
13         for (StdSize i = 0; i < this->nbbuffer; i++)
14            SuperClass::push_back(BufferType(BUFFER_SERVER_SIZE));
15      }
16
17      CBufferList::~CBufferList(void)
18      { /* Ne rien faire de plus */ }
19
20      ///--------------------------------------------------------------
21
22      bool CBufferList::hasRequests(void) const
23      {
24         bool retvalue = true;
25         for (StdSize i = 0; i < this->nbbuffer; i++)
26            retvalue = retvalue && SuperClass::operator[](i).hasRequest();
27         return (retvalue);
28      }
29
30      void CBufferList::recvRequests(void)
31      {
32         while (!this->hasRequests())
33         {
34            for (int i = 1; i < CMPIManager::GetCommSize(com_client_server); i++)
35            {
36               if (CMPIManager::HasReceivedData(com_client_server, i))
37               {
38                  StdSize size = CMPIManager::GetReceivedDataSize(com_client_server, i);
39                  if (SuperClass::operator[](i-1).isAvailable(size))
40                     CMPIManager::ReceiveCircularBuffer
41                        (com_client_server, i, SuperClass::operator[](i-1));
42               }
43            }
44         }
45      }
46
47      std::vector<CLinearBuffer> CBufferList::getRequests(void)
48      {
49         std::vector<CLinearBuffer> retvalue;
50         for (StdSize i = 0; i < this->nbbuffer; i++)
51            retvalue.push_back(SuperClass::operator[](i).getNextRequest());
52         return (retvalue);
53      }
54
55      StdSize CBufferList::getNumberOfBuffers(void) const
56      { 
57         return (this->nbbuffer) ;
58      }
59
60      ///--------------------------------------------------------------
61
62   } // namespace tree
63} // namespace xmlioserver
64
Note: See TracBrowser for help on using the repository browser.