| // MessagePack for C++ example |
| // |
| // Copyright (C) 2008-2015 FURUHASHI Sadayuki and 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> |
| |
| int main(void) |
| { |
| msgpack::type::tuple<int, bool, std::string> src(1, true, "example"); |
| |
| // serialize the object into the buffer. |
| // any classes that implements write(const char*,size_t) can be a buffer. |
| std::stringstream buffer; |
| msgpack::pack(buffer, src); |
| |
| // send the buffer ... |
| buffer.seekg(0); |
| |
| // deserialize the buffer into msgpack::object instance. |
| std::string str(buffer.str()); |
| |
| msgpack::unpacked result; |
| |
| msgpack::unpack(result, str.data(), str.size()); |
| |
| // deserialized object is valid during the msgpack::unpacked instance alive. |
| msgpack::object deserialized = result.get(); |
| |
| // msgpack::object supports ostream. |
| std::cout << deserialized << std::endl; |
| |
| // convert msgpack::object instance into the original type. |
| // if the type is mismatched, it throws msgpack::type_error exception. |
| msgpack::type::tuple<int, bool, std::string> dst; |
| deserialized.convert(dst); |
| |
| return 0; |
| } |