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

Last change on this file since 196 was 196, checked in by hozdoba, 12 years ago
File size: 2.2 KB
Line 
1#include "buffer_pair.hpp"
2
3namespace xmlioserver
4{
5   namespace comm
6   {
7      /// ////////////////////// Définitions ////////////////////// ///
8      CBufferPair::CBufferPair(MPIComm com_client_server)
9         : com_client_server(com_client_server) 
10         , first(BUFFER_CLIENT_SIZE), second(BUFFER_CLIENT_SIZE)
11         , first_request(-1), second_request(-1)
12         , currentBuffer(0)
13      { /* Ne rien faire de plus */ }
14
15      CBufferPair::~CBufferPair(void)
16      { /* Ne rien faire de plus */ }
17
18      ///--------------------------------------------------------------
19
20      bool CBufferPair::mustBeSent(void)
21      {
22         if (((currentBuffer  ==  0) && (first.getUsedSize()  != 0) &&
23             ((second_request == -1) || CMPIManager::Test (second_request))) ||
24             ((currentBuffer  ==  1) && (second.getUsedSize() != 0) &&
25             ((first_request  == -1) || CMPIManager::Test (first_request))))
26            return (true);
27         return (false);
28      }
29     
30      //---------------------------------------------------------------
31     
32      void CBufferPair::wait(void)
33      {
34         if (this->currentBuffer == 0)
35              CMPIManager::Wait(this->second_request);
36         else CMPIManager::Wait(this->first_request);
37      }
38     
39      //---------------------------------------------------------------
40     
41      void CBufferPair::sendCurrentBuffer(void)
42      {
43         if (this->currentBuffer == 0)
44         {
45            CMPIManager::SendLinearBuffer
46               (this->com_client_server, 0, this->first, this->first_request);
47            this->currentBuffer = 1;
48            this->second.clear();
49         }
50         else
51         {
52            CMPIManager::SendLinearBuffer
53               (this->com_client_server, 0, this->second, this->second_request);
54            this->currentBuffer = 0;
55            this->first.clear();
56         }
57      }
58     
59      //---------------------------------------------------------------
60     
61      CLinearBuffer & CBufferPair::getCurrentBuffer(void)
62      {
63         if (currentBuffer == 0) return (this->first);
64         return (this->second);
65      }
66     
67      ///--------------------------------------------------------------
68
69   } // namespace tree
70} // namespace xmlioserver
71
Note: See TracBrowser for help on using the repository browser.