diff --git a/libraries/chain/event_object.cpp b/libraries/chain/event_object.cpp index 4c2fce14..d00e1be8 100644 --- a/libraries/chain/event_object.cpp +++ b/libraries/chain/event_object.cpp @@ -31,8 +31,6 @@ #include #include #include -#include -#include #include namespace graphene { namespace chain { @@ -476,18 +474,6 @@ namespace graphene { namespace chain { }; } - void event_object::pack_impl(std::ostream& stream) const - { - boost::archive::binary_oarchive oa(stream, boost::archive::no_header|boost::archive::no_codecvt|boost::archive::no_xml_tag_checking); - oa << my->state_machine; - } - - void event_object::unpack_impl(std::istream& stream) - { - boost::archive::binary_iarchive ia(stream, boost::archive::no_header|boost::archive::no_codecvt|boost::archive::no_xml_tag_checking); - ia >> my->state_machine; - } - void event_object::on_upcoming_event(database& db) { my->state_machine.process_event(upcoming_event(db)); @@ -551,34 +537,4 @@ namespace graphene { namespace chain { } } // graphene::chain -namespace fc { - // Manually reflect event_object to variant to properly reflect "state" - void to_variant(const graphene::chain::event_object& event_obj, fc::variant& v, uint32_t max_depth) - { - fc::mutable_variant_object o; - o("id", fc::variant(event_obj.id, max_depth)) - ("name", fc::variant(event_obj.name, max_depth)) - ("season", fc::variant(event_obj.season, max_depth)) - ("start_time", fc::variant(event_obj.start_time, max_depth)) - ("event_group_id", fc::variant(event_obj.event_group_id, max_depth)) - ("scores", fc::variant(event_obj.scores, max_depth)) - ("status", fc::variant(event_obj.get_status(), max_depth)); - - v = o; - } - - // Manually reflect event_object to variant to properly reflect "state" - void from_variant(const fc::variant& v, graphene::chain::event_object& event_obj, uint32_t max_depth) - { - event_obj.id = v["id"].as( max_depth ); - event_obj.name = v["name"].as( max_depth ); - event_obj.season = v["season"].as( max_depth ); - event_obj.start_time = v["start_time"].as >( max_depth ); - event_obj.event_group_id = v["event_group_id"].as( max_depth ); - event_obj.scores = v["scores"].as>( max_depth ); - graphene::chain::event_status status = v["status"].as( max_depth ); - const_cast(event_obj.my->state_machine.current_state())[0] = (int)status; - } -} //end namespace fc - diff --git a/libraries/chain/include/graphene/chain/event_object.hpp b/libraries/chain/include/graphene/chain/event_object.hpp index 56330029..ae69dc0e 100644 --- a/libraries/chain/include/graphene/chain/event_object.hpp +++ b/libraries/chain/include/graphene/chain/event_object.hpp @@ -24,22 +24,12 @@ #pragma once #include +#include #include #include -#include -#include #include -namespace graphene { namespace chain { - class event_object; -} } - -namespace fc { - void to_variant(const graphene::chain::event_object& event_obj, fc::variant& v, uint32_t max_depth = 1); - void from_variant(const fc::variant& v, graphene::chain::event_object& event_obj, uint32_t max_depth = 1); -} //end namespace fc - namespace graphene { namespace chain { class database; @@ -68,21 +58,6 @@ class event_object : public graphene::db::abstract_object< event_object > event_status get_status() const; vector scores; - // serialization functions: - // for serializing to raw, go through a temporary sstream object to avoid - // having to implement serialization in the header file - template - friend Stream& operator<<( Stream& s, const event_object& event_obj ); - - template - friend Stream& operator>>( Stream& s, event_object& event_obj ); - - friend void ::fc::to_variant(const graphene::chain::event_object& event_obj, fc::variant& v, uint32_t max_depth); - friend void ::fc::from_variant(const fc::variant& v, graphene::chain::event_object& event_obj, uint32_t max_depth); - - void pack_impl(std::ostream& stream) const; - void unpack_impl(std::istream& stream); - void on_upcoming_event(database& db); void on_in_progress_event(database& db); void on_frozen_event(database& db); @@ -111,53 +86,10 @@ typedef multi_index_container< member > > > > event_object_multi_index_type; typedef generic_index event_object_index; - - template - inline Stream& operator<<( Stream& s, const event_object& event_obj ) - { - fc_elog(fc::logger::get("event"), "In event_obj to_raw"); - // pack all fields exposed in the header in the usual way - // instead of calling the derived pack, just serialize the one field in the base class - // fc::raw::pack >(s, event_obj); - fc::raw::pack(s, event_obj.id); - fc::raw::pack(s, event_obj.name); - fc::raw::pack(s, event_obj.season); - fc::raw::pack(s, event_obj.start_time); - fc::raw::pack(s, event_obj.event_group_id); - fc::raw::pack(s, event_obj.at_least_one_betting_market_group_settled); - fc::raw::pack(s, event_obj.scores); - - // fc::raw::pack the contents hidden in the impl class - std::ostringstream stream; - event_obj.pack_impl(stream); - std::string stringified_stream(stream.str()); - fc::raw::pack(s, stream.str()); - - return s; - } - template - inline Stream& operator>>( Stream& s, event_object& event_obj ) - { - fc_elog(fc::logger::get("event"), "In event_obj from_raw"); - // unpack all fields exposed in the header in the usual way - //fc::raw::unpack >(s, event_obj); - fc::raw::unpack(s, event_obj.id); - fc::raw::unpack(s, event_obj.name); - fc::raw::unpack(s, event_obj.season); - fc::raw::unpack(s, event_obj.start_time); - fc::raw::unpack(s, event_obj.event_group_id); - fc::raw::unpack(s, event_obj.at_least_one_betting_market_group_settled); - fc::raw::unpack(s, event_obj.scores); - - // fc::raw::unpack the contents hidden in the impl class - std::string stringified_stream; - fc::raw::unpack(s, stringified_stream); - std::istringstream stream(stringified_stream); - event_obj.unpack_impl(stream); - - return s; - } } } // graphene::chain + FC_REFLECT(graphene::chain::event_object, (name)(season)(start_time)(event_group_id)(at_least_one_betting_market_group_settled)(scores)) +GRAPHENE_EXTERNAL_SERIALIZATION( extern, graphene::chain::event_object ) + diff --git a/libraries/chain/small_objects.cpp b/libraries/chain/small_objects.cpp index ba0f5b79..33e57271 100644 --- a/libraries/chain/small_objects.cpp +++ b/libraries/chain/small_objects.cpp @@ -45,6 +45,7 @@ #include #include #include +#include #include #include @@ -77,4 +78,5 @@ GRAPHENE_EXTERNAL_SERIALIZATION( /*not extern*/, graphene::chain::witness_schedu GRAPHENE_EXTERNAL_SERIALIZATION( /*not extern*/, graphene::chain::worker_object ) GRAPHENE_EXTERNAL_SERIALIZATION( /*not extern*/, graphene::chain::game_object ) GRAPHENE_EXTERNAL_SERIALIZATION( /*not extern*/, graphene::chain::tournament_object ) +GRAPHENE_EXTERNAL_SERIALIZATION( /*not extern*/, graphene::chain::event_object ) GRAPHENE_EXTERNAL_SERIALIZATION( /*not extern*/, graphene::chain::match_object )