diff options
Diffstat (limited to 'cpp/src/qpid/framing')
| -rw-r--r-- | cpp/src/qpid/framing/Buffer.cpp | 11 | ||||
| -rw-r--r-- | cpp/src/qpid/framing/Buffer.h | 3 |
2 files changed, 12 insertions, 2 deletions
diff --git a/cpp/src/qpid/framing/Buffer.cpp b/cpp/src/qpid/framing/Buffer.cpp index 758d0b5f3c..eaa4433b5f 100644 --- a/cpp/src/qpid/framing/Buffer.cpp +++ b/cpp/src/qpid/framing/Buffer.cpp @@ -34,8 +34,17 @@ void Buffer::record(){ r_position = position; } -void Buffer::restore(){ +void Buffer::restore(bool reRecord){ + uint32_t savedPosition = position; + position = r_position; + + if (reRecord) + r_position = savedPosition; +} + +void Buffer::reset(){ + position = 0; } uint32_t Buffer::available(){ diff --git a/cpp/src/qpid/framing/Buffer.h b/cpp/src/qpid/framing/Buffer.h index 3b2e611881..190f736f46 100644 --- a/cpp/src/qpid/framing/Buffer.h +++ b/cpp/src/qpid/framing/Buffer.h @@ -41,7 +41,8 @@ public: Buffer(char* data, uint32_t size); void record(); - void restore(); + void restore(bool reRecord = false); + void reset(); uint32_t available(); void putOctet(uint8_t i); |
