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

Last change on this file since 196 was 196, checked in by hozdoba, 13 years ago
File size: 2.4 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(CMPIManager::GetCommSize(com_client_server) - 1)
10         , com_client_server(com_client_server)
11         , nbbuffer(CMPIManager::GetCommSize(com_client_server) - 1)
12      { /* Ne rien faire de plus */ }
13
14      CBufferList::~CBufferList(void)
15      { /* Ne rien faire de plus */ }
16
17      ///--------------------------------------------------------------
18
19      bool CBufferList::hasRequests(void) const
20      {
21         bool retvalue = true;
22         for (StdSize i = 0; i < this->nbbuffer; i++)
23            retvalue = retvalue && SuperClass::operator[](i).hasRequest();
24         return (retvalue);
25      }
26
27      bool CBufferList::recvRequests(void)
28      {
29         while (!this->hasRequests())
30         {
31            for (int i = 1; i < CMPIManager::GetCommSize(com_client_server); i++)
32            {
33               if (CMPIManager::HasReceivedData(com_client_server, i))
34               {
35                  StdSize size = CMPIManager::GetReceivedDataSize(com_client_server, i);
36                  if (SuperClass::operator[](i-1).isAvailable(size))
37                  {
38                     std::cout << "b:" << i << std::endl;
39                     CMPIManager::ReceiveCircularBuffer
40                        (com_client_server, i, SuperClass::operator[](i-1));
41                  }
42                  else
43                  {
44                     DEBUG ("Impossible d'écrire dans le tampon " << i
45                             << " (Taille requise : " << size << " octets,"
46                             << " Taille du buffer circulaire : "
47                             << SuperClass::operator[](i-1).getSize() << " octets)");
48                  }
49               }
50            }
51         }
52         std::cout << "lol" << std::endl;
53         return (true);
54      }
55
56      void CBufferList::getRequests(std::vector<CLinearBuffer> & lbuffer)
57      {
58         for (StdSize i = 0; i < this->nbbuffer; i++)
59            lbuffer.push_back(SuperClass::operator[](i).getNextRequest());
60      }
61
62      StdSize CBufferList::getNumberOfBuffers(void) const
63      { 
64         return (this->nbbuffer) ;
65      }
66
67      ///--------------------------------------------------------------
68
69   } // namespace tree
70} // namespace xmlioserver
71
Note: See TracBrowser for help on using the repository browser.