msgpack/example/cpp03/protocol_new.cpp
Takatoshi Kondo ba15089d86 Version 1.3.0.
Updated the license from the license from the Apache License Version 2.0
to the Boost Software License, Version 1.0.
Removed unused files.
2015-11-21 12:41:46 +09:00

85 lines
1.8 KiB
C++

// MessagePack for C++ example
//
// Copyright (C) 2015 KONDO Takatoshi
//
// Distributed under the Boost Software License, Version 1.0.
// (See accompanying file LICENSE_1_0.txt or copy at
// http://www.boost.org/LICENSE_1_0.txt)
//
#include <msgpack.hpp>
#include <string>
#include <iostream>
#include <sstream>
// This example uses obsolete APIs
// See protocol_new.cpp
namespace myprotocol {
struct Get {
Get() {}
Get(uint32_t f, const std::string& k) : flags(f), key(k) {}
uint32_t flags;
std::string key;
MSGPACK_DEFINE(flags, key);
};
typedef std::vector<Get> MultiGet;
}
int main(void)
{
// send Get request
std::stringstream stream;
{
myprotocol::Get req;
req.flags = 0;
req.key = "key0";
msgpack::pack(stream, req);
}
stream.seekg(0);
// receive Get request
{
std::string buffer(stream.str());
msgpack::unpacked result;
msgpack::unpack(result, buffer.data(), buffer.size());
msgpack::object o = result.get();
myprotocol::Get req;
o.convert(req);
std::cout << "received: " << o << std::endl;
}
stream.str("");
// send MultiGet request
{
myprotocol::MultiGet req;
req.push_back( myprotocol::Get(1, "key1") );
req.push_back( myprotocol::Get(2, "key2") );
req.push_back( myprotocol::Get(3, "key3") );
msgpack::pack(stream, req);
}
stream.seekg(0);
// receive MultiGet request
{
std::string buffer(stream.str());
msgpack::unpacked result;
msgpack::unpack(result, buffer.data(), buffer.size());
msgpack::object o = result.get();
myprotocol::MultiGet req;
o.convert(req);
std::cout << "received: " << o << std::endl;
}
}