#ifndef REPLICATOR_SERIALIZABLE_H #define REPLICATOR_SERIALIZABLE_H #include #include #include #include namespace replicator { class SerializableValue { private: boost::any value; public: SerializableValue () {} SerializableValue (const boost::any &value_) : value(value_) {} template inline SerializableValue& operator= (T value_) { value = boost::any(value_); return *this; } inline SerializableValue& operator= (const boost::any& value_) { value = value_; return *this; } template inline bool is() const { return value.type() == typeid(T); } template inline T as() const { return boost::any_cast(value); } std::string to_string() const { std::ostringstream s; if (is()) { s << as(); } else if (is()) { s << as(); } else if (is()) { s << as(); } else if (is()) { s << as(); } else if (is()) { s << as(); } else if (is()) { s << as(); } else if (is()) { s << as(); } else if (is()) { s << as(); } else if (is()) { s << as(); } else if (is()) { s << as(); } else if (is()) { s << as(); } else if (is()) { s << as(); } else if (is()) { s << as(); } return s.str(); } }; struct SerializableBinlogEvent { std::string binlog_name; unsigned long binlog_pos; unsigned long seconds_behind_master; unsigned long unix_timestamp; std::string database; std::string table; std::string event; std::map row; }; } // replicator #endif // REPLICATOR_SERIALIZABLE_H