add msgpack_unpacker_message_size

This commit is contained in:
frsyuki (none) 2009-02-26 01:27:00 +09:00
parent 65ef9cab66
commit c0baf9b873
2 changed files with 18 additions and 4 deletions

View File

@ -61,7 +61,8 @@ msgpack_zone* msgpack_unpacker_release_zone(msgpack_unpacker* mpac);
void msgpack_unpacker_reset(msgpack_unpacker* mpac); void msgpack_unpacker_reset(msgpack_unpacker* mpac);
static inline size_t msgpack_unpacker_parsed_size(const msgpack_unpacker* mpac); static inline size_t msgpack_unpacker_message_size(const msgpack_unpacker* mpac);
typedef enum { typedef enum {
@ -76,6 +77,8 @@ msgpack_unpack(const char* data, size_t len, size_t* off,
msgpack_zone* z, msgpack_object* result); msgpack_zone* z, msgpack_object* result);
static inline size_t msgpack_unpacker_parsed_size(const msgpack_unpacker* mpac);
bool msgpack_unpacker_flush_zone(msgpack_unpacker* mpac); bool msgpack_unpacker_flush_zone(msgpack_unpacker* mpac);
bool msgpack_unpacker_expand_buffer(msgpack_unpacker* mpac, size_t size); bool msgpack_unpacker_expand_buffer(msgpack_unpacker* mpac, size_t size);
@ -102,6 +105,11 @@ void msgpack_unpacker_buffer_consumed(msgpack_unpacker* mpac, size_t size)
mpac->free -= size; mpac->free -= size;
} }
size_t msgpack_unpacker_message_size(const msgpack_unpacker* mpac)
{
return mpac->parsed - mpac->off + mpac->used;
}
size_t msgpack_unpacker_parsed_size(const msgpack_unpacker* mpac) size_t msgpack_unpacker_parsed_size(const msgpack_unpacker* mpac)
{ {
return mpac->parsed; return mpac->parsed;

View File

@ -67,8 +67,8 @@ public:
/*! 5.3. after release_zone(), re-initialize unpacker */ /*! 5.3. after release_zone(), re-initialize unpacker */
void reset(); void reset();
/*! 6. check if the parsed message size doesn't exceed assumption. */ /*! 6. check if the size of message doesn't exceed assumption. */
size_t parsed_size() const; size_t message_size() const;
// Basic usage of the unpacker is as following: // Basic usage of the unpacker is as following:
@ -112,6 +112,7 @@ public:
public: public:
// These functions are usable when non-MessagePack message follows after // These functions are usable when non-MessagePack message follows after
// MessagePack message. // MessagePack message.
size_t parsed_size() const;
/*! get address of the buffer that is not parsed */ /*! get address of the buffer that is not parsed */
char* nonparsed_buffer(); char* nonparsed_buffer();
@ -218,12 +219,17 @@ inline void unpacker::reset()
msgpack_unpacker_reset(this); msgpack_unpacker_reset(this);
} }
inline size_t unpacker::message_size() const
{
return msgpack_unpacker_message_size(this);
}
inline size_t unpacker::parsed_size() const inline size_t unpacker::parsed_size() const
{ {
return msgpack_unpacker_parsed_size(this); return msgpack_unpacker_parsed_size(this);
} }
inline char* unpacker::nonparsed_buffer() inline char* unpacker::nonparsed_buffer()
{ {
return buf + off; return buf + off;