AMQP-CPP/src/framecheck.h

62 lines
1.0 KiB
C++

/**
* FrameCheck.h
*
* Class that checks incoming frames for their size
*
* @copyright 2014 Copernica BV
*/
/**
* Set up namespace
*/
namespace AMQP {
/**
* Internal helper class that checks if there is enough room left in the frame
*/
class FrameCheck
{
private:
/**
* The frame
* @var ReceivedFrame
*/
ReceivedFrame *_frame;
/**
* The size that is checked
* @var size_t
*/
size_t _size;
public:
/**
* Constructor
* @param frame
* @param size
*/
FrameCheck(ReceivedFrame *frame, size_t size) : _frame(frame), _size(size)
{
// no problem is there are still enough bytes left
if (frame->_buffer.size() - frame->_skip >= size) return;
// frame buffer is too small
throw ProtocolException("frame out of range");
}
/**
* Destructor
*/
virtual ~FrameCheck()
{
// update the number of bytes to skip
_frame->_skip += (uint32_t)_size;
}
};
/**
* End namespace
*/
}