#endif
+namespace xapp {
+
// ------------------------------------------------------------------------
class Message {
private:
- static const int NOCHANGE = -99; // internal constant indicating no change to something
-
rmr_mbuf_t* mbuf; // the underlying RMR message buffer
void* mrc; // message router context
std::shared_ptr<char> psp; // shared pointer to the payload to give out
public:
+ static const int NO_CHANGE = -99; // indicates no change to a send/reply parameter
+ static const int NO_WHID = -1; // no wormhole id applies
static const int INVALID_MTYPE = -1;
static const int INVALID_STATUS = -1;
static const int INVALID_SUBID = -2;
static const int RESPONSE = 0; // send types
static const int MESSAGE = 1;
+ static const int WORMHOLE_MSG = 2;
Message( rmr_mbuf_t* mbuf, void* mrc ); // builders
Message( void* mrc, int payload_len );
+ Message( const Message& soi ); // copy cat
+ Message& operator=( const Message& soi ); // copy operator
+ Message( Message&& soi ); // mover
+ Message& operator=( Message&& soi ); // move operator
~Message(); // destroyer
std::unique_ptr<unsigned char> Copy_payload( ); // copy the payload; deletable smart pointer
- std::unique_ptr<unsigned char> Get_meid(); // returns a copy of the meid bytes
- int Get_available_size();
- int Get_len();
- int Get_mtype();
- Msg_component Get_payload();
- std::unique_ptr<unsigned char> Get_src();
- int Get_state( );
- int Get_subid();
+ std::unique_ptr<unsigned char> Get_meid() const; // returns a copy of the meid bytes
+ int Get_available_size() const;
+ int Get_len() const;
+ int Get_mtype() const;
+ Msg_component Get_payload() const;
+ std::unique_ptr<unsigned char> Get_src() const;
+ int Get_state( ) const;
+ int Get_subid() const;
- void Set_meid( std::unique_ptr<unsigned char> new_meid );
+ void Set_meid( std::shared_ptr<unsigned char> new_meid );
void Set_mtype( int new_type );
void Set_subid( int new_subid );
+ void Set_len( int new_len );
bool Reply( );
bool Send( );
- bool Send( int mtype, int subid, int payload_len, unsigned char* payload, int stype );
+ bool Send( int mtype, int subid, int payload_len, unsigned char* payload, int stype, int whid );
- bool Send_msg( int mtype, int subid, int payload_len, std::unique_ptr<unsigned char> payload );
+ bool Send_msg( int mtype, int subid, int payload_len, std::shared_ptr<unsigned char> payload );
bool Send_msg( int mtype, int subid, int payload_len, unsigned char* payload );
- bool Send_msg( int payload_len, std::unique_ptr<unsigned char> payload );
+ bool Send_msg( int payload_len, std::shared_ptr<unsigned char> payload );
bool Send_msg( int payload_len, unsigned char* payload );
- bool Send_response( int mtype, int subid, int payload_len, std::unique_ptr<unsigned char> response );
+ bool Send_response( int mtype, int subid, int payload_len, std::shared_ptr<unsigned char> response );
bool Send_response( int mtype, int subid, int payload_len, unsigned char* response );
- bool Send_response( int payload_len, std::unique_ptr<unsigned char> response );
+ bool Send_response( int payload_len, std::shared_ptr<unsigned char> response );
bool Send_response( int payload_len, unsigned char* response );
+
+ bool Wormhole_send( int whid, int mtype, int subid, int payload_len, std::shared_ptr<unsigned char> payload );
};
+} // namespace
#endif