2014-09-07 22:24:14 +04:00
|
|
|
#include "msgpack.h"
|
|
|
|
|
#include <QDebug>
|
2014-09-14 23:40:30 +04:00
|
|
|
#include "private/unpack_p.h"
|
|
|
|
|
#include "private/pack_p.h"
|
|
|
|
|
#include <QByteArray>
|
2014-09-07 22:24:14 +04:00
|
|
|
|
2014-09-14 23:40:30 +04:00
|
|
|
QVariant MsgPack::unpack(const QByteArray &data)
|
2014-09-07 22:24:14 +04:00
|
|
|
{
|
|
|
|
|
quint8 *p = (quint8 *)data.data();
|
2014-09-08 18:40:20 +04:00
|
|
|
quint8 *end = p + data.size() - 1;
|
2014-09-07 22:24:14 +04:00
|
|
|
|
2014-09-08 18:40:20 +04:00
|
|
|
return MsgPackPrivate::unpack(p, end);
|
2014-09-07 22:24:14 +04:00
|
|
|
}
|
2014-09-14 23:40:30 +04:00
|
|
|
|
|
|
|
|
|
|
|
|
|
QByteArray MsgPack::pack(const QVariant &variant)
|
|
|
|
|
{
|
|
|
|
|
quint8 *p = 0;
|
2014-09-16 22:54:36 +04:00
|
|
|
quint8 *end = MsgPackPrivate::pack(variant, p, false);
|
2014-09-14 23:40:30 +04:00
|
|
|
quint32 size = end - p;
|
|
|
|
|
qDebug() << "size probe:" << size;
|
|
|
|
|
|
|
|
|
|
QByteArray arr;
|
|
|
|
|
arr.resize(size);
|
2014-09-16 22:54:36 +04:00
|
|
|
end = MsgPackPrivate::pack(variant, (quint8 *)arr.data(), true);
|
2014-09-14 23:40:30 +04:00
|
|
|
|
|
|
|
|
return arr;
|
|
|
|
|
}
|
2014-09-18 23:47:58 +04:00
|
|
|
|
|
|
|
|
|
|
|
|
|
bool MsgPack::registerPacker(QMetaType::Type qType, qint8 msgpackType, MsgPack::pack_user_f packer)
|
|
|
|
|
{
|
|
|
|
|
return MsgPackPrivate::register_packer(qType, msgpackType, packer);
|
|
|
|
|
}
|