codepad
[
create a new paste
]
login
|
about
Language:
C
C++
D
Haskell
Lua
OCaml
PHP
Perl
Plain Text
Python
Ruby
Scheme
Tcl
#ifndef __MESSAGE_H #define __MESSAGE_H #include <cassert> #include <boost/serialization/serialization.hpp> #include <boost/serialization/base_object.hpp> #include <boost/serialization/assume_abstract.hpp> #ifdef REMOTE_XML #include <boost/serialization/nvp.hpp> #endif //REMOTE_XML //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ #define REMOTE_MESSAGING_BEGIN_BASE(x) friend class boost::serialization::access; \ template<class Archive> \ void serialize(Archive& x, const unsigned int version) \ { //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ #define REMOTE_MESSAGING_BEGIN(x,y) friend class boost::serialization::access; \ template<class Archive> \ void serialize(Archive& y, const unsigned int version) \ { \ y & boost::serialization::base_object<Message>(*this); //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ #define REMOTE_MESSAGING_END } //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ class Message { friend class RemoteMessagingSystem; public: Message(){ m_kind = MESSAGE_KIND_REPLY; // reply message is the standard m_fromRemote = false; } virtual ~Message(){ } typedef enum _MESSAGE_TYPE { MESSAGE_TYPE_INVALID_FIRST, MESSAGE_TYPE_ALERT, MESSAGE_TYPE_ADDRESS_DISTRIBUTION, MESSAGE_TYPE_AGGREGATE_WATCH_VALUES, MESSAGE_TYPE_TIMER, MESSAGE_TYPE_AGGREGATE_LAST_SUSPICIOUS, MESSAGE_TYPE_AGGREGATE_INTERVAL_VALUES, MESSAGE_TYPE_ANOMALY_TYPE, MESSAGE_TYPE_INVALID_LAST, } MESSAGE_TYPE; virtual MESSAGE_TYPE getType () = 0; typedef enum _MESSAGE_KIND { MESSAGE_KIND_REQUEST, MESSAGE_KIND_REPLY, } MESSAGE_KIND; MESSAGE_KIND getKind(){ return m_kind; } void setKind( MESSAGE_KIND kind ){ m_kind = kind; } bool isRequest(){ return ( m_kind == MESSAGE_KIND_REQUEST ); } bool isReply(){ return ( m_kind == MESSAGE_KIND_REPLY ); } bool isFromRemote() { return m_fromRemote; } private: MESSAGE_KIND m_kind; // request or reply message bool m_fromRemote; // does the message originate from a remote system? REMOTE_MESSAGING_BEGIN_BASE(remote) MESSAGE_TYPE type = getType (); #ifdef REMOTE_XML remote & boost::serialization::make_nvp("Nachrichtentyp", type); remote & BOOST_SERIALIZATION_NVP(m_kind); remote & BOOST_SERIALIZATION_NVP(m_fromRemote); #else remote & type; remote & m_kind; remote & m_fromRemote; #endif //REMOTE_XML REMOTE_MESSAGING_END }; #ifdef REMOTE_XML //BOOST_CLASS_IS_WRAPPER(const Message); BOOST_CLASS_IS_WRAPPER(Message*); BOOST_CLASS_IS_WRAPPER(Message* const); BOOST_CLASS_IS_WRAPPER(Message); #endif #endif // __MESSAGE_H
Private
[
?
]
Run code
Submit