[152] | 1 | #include "buffer_pair.hpp" |
---|
| 2 | |
---|
| 3 | namespace xmlioserver |
---|
| 4 | { |
---|
| 5 | namespace comm |
---|
| 6 | { |
---|
| 7 | /// ////////////////////// Définitions ////////////////////// /// |
---|
[178] | 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 */ } |
---|
[152] | 14 | |
---|
[178] | 15 | CBufferPair::~CBufferPair(void) |
---|
| 16 | { /* Ne rien faire de plus */ } |
---|
[152] | 17 | |
---|
[178] | 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 | |
---|
[152] | 69 | } // namespace tree |
---|
| 70 | } // namespace xmlioserver |
---|
| 71 | |
---|