Skip to content
Snippets Groups Projects
Commit d61f0be0 authored by Robert Klöfkorn's avatar Robert Klöfkorn
Browse files

small change in commbuffer


git-svn-id: https://dune.mathematik.uni-freiburg.de/svn/alugrid/trunk@1146 0d966ed9-3843-0410-af09-ebfb50bd7c74
parent a706066f
No related branches found
No related tags found
No related merge requests found
...@@ -336,7 +336,7 @@ void GitterDunePll :: unpackOnMaster ( ...@@ -336,7 +336,7 @@ void GitterDunePll :: unpackOnMaster (
// read data marker // read data marker
recvBuff.readObject(hasdata); recvBuff.readObject(hasdata);
item.reserveBuffer( nl + 1 ); item.reserveAndClearBuffer( nl + 1 );
DataBufferType & data = item.commBuffer(); DataBufferType & data = item.commBuffer();
// only gather master data once // only gather master data once
...@@ -344,7 +344,6 @@ void GitterDunePll :: unpackOnMaster ( ...@@ -344,7 +344,6 @@ void GitterDunePll :: unpackOnMaster (
{ {
// pack master data // pack master data
BufferType & mData = data[nl]; BufferType & mData = data[nl];
mData.clear();
// write master data to fake buffer // write master data to fake buffer
dataHandle.sendData(mData,item); dataHandle.sendData(mData,item);
...@@ -353,13 +352,12 @@ void GitterDunePll :: unpackOnMaster ( ...@@ -353,13 +352,12 @@ void GitterDunePll :: unpackOnMaster (
// if data has been send, read data // if data has been send, read data
if (hasdata != noData) if (hasdata != noData)
{ {
// pack slave data to tmnp buffer // pack slave data to tmp buffer
BufferType & v = data[link]; BufferType & slaveBuff = data[link];
v.clear();
int dataSize; int dataSize;
recvBuff.readObject(dataSize); recvBuff.readObject(dataSize);
recvBuff.readStream(v,dataSize); recvBuff.readStream(slaveBuff, dataSize);
} }
} }
delete a.first; delete a.first;
......
...@@ -12,6 +12,7 @@ class Parallel { ...@@ -12,6 +12,7 @@ class Parallel {
class CommunicationBuffer class CommunicationBuffer
{ {
CommunicationBuffer ( const CommunicationBuffer& );
protected: protected:
typedef vector < SmallObjectStream > BufferType; typedef vector < SmallObjectStream > BufferType;
BufferType * _buff; BufferType * _buff;
...@@ -19,12 +20,14 @@ class Parallel { ...@@ -19,12 +20,14 @@ class Parallel {
CommunicationBuffer () : _buff(0) {} CommunicationBuffer () : _buff(0) {}
~CommunicationBuffer () { if(_buff) delete _buff; } ~CommunicationBuffer () { if(_buff) delete _buff; }
public: public:
void reserveBuffer (int size) void reserveAndClearBuffer (const size_t size)
{ {
if(_buff) if(_buff)
{ {
if(size > (int) _buff->size()) BufferType& buff = *_buff;
_buff->resize(size); if(size > buff.size()) buff.resize(size);
// reset read and write counters
for(size_t i=0; i<size; ++i) buff[i].clear();
} }
else else
{ {
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment