messagepack implementation for embedded systems (mbed / arduino)

Dependents:   hello_message_pack

msgpack-c & msgpack-c++ https://github.com/msgpack/msgpack-c implementation for embedded systems (mbed / Arduino)

Committer:
hideakitai
Date:
Mon Feb 22 01:43:48 2016 +0000
Revision:
4:bd0c06dd6e92
Parent:
0:3f9dbf1e2cb0
fix throw error

Who changed what in which revision?

UserRevisionLine numberNew contents of line
hideakitai 0:3f9dbf1e2cb0 1 //
hideakitai 0:3f9dbf1e2cb0 2 // MessagePack for C++ FILE* buffer adaptor
hideakitai 0:3f9dbf1e2cb0 3 //
hideakitai 0:3f9dbf1e2cb0 4 // Copyright (C) 2013 Vladimir Volodko
hideakitai 0:3f9dbf1e2cb0 5 //
hideakitai 0:3f9dbf1e2cb0 6 // Distributed under the Boost Software License, Version 1.0.
hideakitai 0:3f9dbf1e2cb0 7 // (See accompanying file LICENSE_1_0.txt or copy at
hideakitai 0:3f9dbf1e2cb0 8 // http://www.boost.org/LICENSE_1_0.txt)
hideakitai 0:3f9dbf1e2cb0 9 //
hideakitai 0:3f9dbf1e2cb0 10 #ifndef MSGPACK_FBUFFER_HPP__
hideakitai 0:3f9dbf1e2cb0 11 #define MSGPACK_FBUFFER_HPP__
hideakitai 0:3f9dbf1e2cb0 12
hideakitai 0:3f9dbf1e2cb0 13 #include "msgpack/versioning.hpp"
hideakitai 0:3f9dbf1e2cb0 14
hideakitai 0:3f9dbf1e2cb0 15 #include <cstdio>
hideakitai 0:3f9dbf1e2cb0 16 #include <stdexcept>
hideakitai 0:3f9dbf1e2cb0 17
hideakitai 0:3f9dbf1e2cb0 18 namespace msgpack {
hideakitai 0:3f9dbf1e2cb0 19
hideakitai 0:3f9dbf1e2cb0 20 /// @cond
hideakitai 0:3f9dbf1e2cb0 21 MSGPACK_API_VERSION_NAMESPACE(v1) {
hideakitai 0:3f9dbf1e2cb0 22 /// @endcond
hideakitai 0:3f9dbf1e2cb0 23
hideakitai 0:3f9dbf1e2cb0 24 class fbuffer {
hideakitai 0:3f9dbf1e2cb0 25 public:
hideakitai 0:3f9dbf1e2cb0 26 explicit fbuffer(FILE* file) : m_file(file) { }
hideakitai 0:3f9dbf1e2cb0 27
hideakitai 0:3f9dbf1e2cb0 28 public:
hideakitai 0:3f9dbf1e2cb0 29 void write(const char* buf, unsigned int len)
hideakitai 0:3f9dbf1e2cb0 30 {
hideakitai 0:3f9dbf1e2cb0 31 if (1 != fwrite(buf, len, 1, m_file)) {
hideakitai 0:3f9dbf1e2cb0 32 throw std::runtime_error("fwrite() failed");
hideakitai 0:3f9dbf1e2cb0 33 }
hideakitai 0:3f9dbf1e2cb0 34 }
hideakitai 0:3f9dbf1e2cb0 35
hideakitai 0:3f9dbf1e2cb0 36 FILE* file() const
hideakitai 0:3f9dbf1e2cb0 37 {
hideakitai 0:3f9dbf1e2cb0 38 return m_file;
hideakitai 0:3f9dbf1e2cb0 39 }
hideakitai 0:3f9dbf1e2cb0 40
hideakitai 0:3f9dbf1e2cb0 41 #if defined(MSGPACK_USE_CPP03)
hideakitai 0:3f9dbf1e2cb0 42 private:
hideakitai 0:3f9dbf1e2cb0 43 fbuffer(const fbuffer&);
hideakitai 0:3f9dbf1e2cb0 44 fbuffer& operator=(const fbuffer&);
hideakitai 0:3f9dbf1e2cb0 45 #else // defined(MSGPACK_USE_CPP03)
hideakitai 0:3f9dbf1e2cb0 46 fbuffer(const fbuffer&) = delete;
hideakitai 0:3f9dbf1e2cb0 47 fbuffer& operator=(const fbuffer&) = delete;
hideakitai 0:3f9dbf1e2cb0 48 #endif // defined(MSGPACK_USE_CPP03)
hideakitai 0:3f9dbf1e2cb0 49
hideakitai 0:3f9dbf1e2cb0 50 private:
hideakitai 0:3f9dbf1e2cb0 51 FILE* m_file;
hideakitai 0:3f9dbf1e2cb0 52 };
hideakitai 0:3f9dbf1e2cb0 53
hideakitai 0:3f9dbf1e2cb0 54 /// @cond
hideakitai 0:3f9dbf1e2cb0 55 } // MSGPACK_API_VERSION_NAMESPACE(v1)
hideakitai 0:3f9dbf1e2cb0 56 /// @endcond
hideakitai 0:3f9dbf1e2cb0 57
hideakitai 0:3f9dbf1e2cb0 58 } // namespace msgpack
hideakitai 0:3f9dbf1e2cb0 59
hideakitai 0:3f9dbf1e2cb0 60 #endif /* msgpack/fbuffer.hpp */