MACE  1.0.0
 All Classes Namespaces Files Functions Variables Enumerations Defines
libs/rpc/include/mace/rpc/raw/message.hpp
00001 #ifndef _MACE_RPC_RAW_MESSAGE_HPP_
00002 #define _MACE_RPC_RAW_MESSAGE_HPP_
00003 #include <mace/rpc/varint.hpp>
00004 #include <mace/rpc/message.hpp>
00005 #include <mace/reflect/reflect.hpp>
00006 
00007 namespace mace { namespace rpc { namespace raw {
00008   typedef std::vector<char>   datavec;
00009   struct message {
00010     message(){};
00011     message( mace::rpc::message&& m )
00012     :id( m.id ? *m.id : 0 ),method(std::move(m.meth)),error_code(m.err),data(std::move(m.data))
00013     {}
00014 
00015     operator mace::rpc::message() {
00016       return mace::rpc::message(
00017                     std::move(method), 
00018                     std::move(data),
00019                     id.value,
00020                     mace::rpc::message::error_type(error_code.value)
00021                     );
00022     }
00023 
00024     signed_int      id;
00025     std::string     method;
00026     signed_int      error_code;
00027     datavec         data;
00028   };
00029 
00030 } } } 
00031 
00032 MACE_REFLECT( mace::rpc::raw::message, (id)(method)(error_code)(data) )
00033 
00034 #endif