From a886ba0720704d51483be1504bfbfbe215b251ba Mon Sep 17 00:00:00 2001 From: sageweil Date: Tue, 9 Oct 2007 17:51:30 +0000 Subject: [PATCH] ceph_message_header, etc. git-svn-id: https://ceph.svn.sf.net/svnroot/ceph@1898 29311d96-e01e-0410-9327-a35deaab8ce9 --- trunk/ceph/msg/FakeMessenger.cc | 2 +- trunk/ceph/msg/Message.cc | 2 +- trunk/ceph/msg/Message.h | 39 ++++++++++++--------------------- trunk/ceph/msg/ceph_msg_types.h | 11 ++++++++++ trunk/ceph/msg/msg_types.h | 8 +++++++ 5 files changed, 35 insertions(+), 27 deletions(-) diff --git a/trunk/ceph/msg/FakeMessenger.cc b/trunk/ceph/msg/FakeMessenger.cc index 8c6d9d71e7b19..ee80df3dc0626 100644 --- a/trunk/ceph/msg/FakeMessenger.cc +++ b/trunk/ceph/msg/FakeMessenger.cc @@ -218,7 +218,7 @@ int fakemessenger_do_loop_2() // encode if (m->empty_payload()) m->encode_payload(); - msg_envelope_t env = m->get_envelope(); + ceph_message_header env = m->get_envelope(); bufferlist bl; bl.claim( m->get_payload() ); //bl.c_str(); // condense into 1 buffer diff --git a/trunk/ceph/msg/Message.cc b/trunk/ceph/msg/Message.cc index 07867cf2b7d91..e3c7ce827ac61 100644 --- a/trunk/ceph/msg/Message.cc +++ b/trunk/ceph/msg/Message.cc @@ -105,7 +105,7 @@ using namespace std; Message * -decode_message(msg_envelope_t& env, bufferlist& payload) +decode_message(ceph_message_header& env, bufferlist& payload) { // make message Message *m = 0; diff --git a/trunk/ceph/msg/Message.h b/trunk/ceph/msg/Message.h index 208cf252c43fc..a0de9a24ddab7 100644 --- a/trunk/ceph/msg/Message.h +++ b/trunk/ceph/msg/Message.h @@ -159,22 +159,11 @@ using std::list; // abstract Message class - -typedef struct { - int32_t type; - entity_inst_t src, dst; - int32_t source_port, dest_port; - int32_t nchunks; -} msg_envelope_t; - -#define MSG_ENVELOPE_LEN sizeof(msg_envelope_t) - - class Message { private: protected: - msg_envelope_t env; // envelope + ceph_message_header env; // envelope bufferlist payload; // payload list chunk_payload_at; @@ -210,10 +199,10 @@ public: } const list& get_chunk_payload_at() const { return chunk_payload_at; } void set_chunk_payload_at(list& o) { chunk_payload_at.swap(o); } - msg_envelope_t& get_envelope() { + ceph_message_header& get_envelope() { return env; } - void set_envelope(msg_envelope_t& env) { + void set_envelope(ceph_message_header& env) { this->env = env; } @@ -229,23 +218,23 @@ public: virtual char *get_type_name() = 0; // source/dest - entity_inst_t& get_dest_inst() { return env.dst; } - void set_dest_inst(entity_inst_t& inst) { env.dst = inst; } + entity_inst_t& get_dest_inst() { return *(entity_inst_t*)&env.dst; } + void set_dest_inst(entity_inst_t& inst) { env.dst = *(ceph_entity_inst*)&inst; } - entity_inst_t& get_source_inst() { return env.src; } - void set_source_inst(entity_inst_t& inst) { env.src = inst; } + entity_inst_t& get_source_inst() { return *(entity_inst_t*)&env.src; } + void set_source_inst(entity_inst_t& inst) { env.src = *(ceph_entity_inst*)&inst; } - entity_name_t& get_dest() { return env.dst.name; } - void set_dest(entity_name_t a, int p) { env.dst.name = a; env.dest_port = p; } + entity_name_t& get_dest() { return *(entity_name_t*)&env.dst.name; } + void set_dest(entity_name_t a, int p) { env.dst.name = *(ceph_entity_name*)&a; env.dest_port = p; } int get_dest_port() { return env.dest_port; } void set_dest_port(int p) { env.dest_port = p; } - entity_name_t& get_source() { return env.src.name; } - void set_source(entity_name_t a, int p) { env.src.name = a; env.source_port = p; } + entity_name_t& get_source() { return *(entity_name_t*)&env.src.name; } + void set_source(entity_name_t a, int p) { env.src.name = *(ceph_entity_name*)&a; env.source_port = p; } int get_source_port() { return env.source_port; } - entity_addr_t& get_source_addr() { return env.src.addr; } - void set_source_addr(const entity_addr_t &i) { env.src.addr = i; } + entity_addr_t& get_source_addr() { return *(entity_addr_t*)&env.src.addr; } + void set_source_addr(const entity_addr_t &i) { env.src.addr = *(ceph_entity_addr*)&i; } // PAYLOAD ---- void reset_payload() { @@ -261,7 +250,7 @@ public: }; -extern Message *decode_message(msg_envelope_t &env, bufferlist& bl); +extern Message *decode_message(ceph_message_header &env, bufferlist& bl); inline ostream& operator<<(ostream& out, Message& m) { m.print(out); return out; diff --git a/trunk/ceph/msg/ceph_msg_types.h b/trunk/ceph/msg/ceph_msg_types.h index b6412976d6bf2..559c972a02bf8 100644 --- a/trunk/ceph/msg/ceph_msg_types.h +++ b/trunk/ceph/msg/ceph_msg_types.h @@ -35,4 +35,15 @@ struct ceph_entity_inst { struct ceph_entity_addr addr; }; + +/* + * message header + */ +struct ceph_message_header { + __u32 type; + struct ceph_entity_inst src, dst; + __u32 source_port, dest_port; + __u32 nchunks; +}; + #endif diff --git a/trunk/ceph/msg/msg_types.h b/trunk/ceph/msg/msg_types.h index 793520d4a446b..3c425f2b1ca0c 100644 --- a/trunk/ceph/msg/msg_types.h +++ b/trunk/ceph/msg/msg_types.h @@ -82,6 +82,9 @@ inline std::ostream& operator<<(std::ostream& out, const entity_name_t& addr) { else return out << addr.type_str() << addr.num(); } +inline std::ostream& operator<<(std::ostream& out, const ceph_entity_name& addr) { + return out << *(const entity_name_t*)&addr; +} namespace __gnu_cxx { template<> struct hash< entity_name_t > @@ -188,6 +191,11 @@ inline ostream& operator<<(ostream& out, const entity_inst_t &i) { return out << i.name << " " << i.addr; } +inline ostream& operator<<(ostream& out, const ceph_entity_inst &i) +{ + return out << *(const entity_inst_t*)&i; +} + #endif -- 2.39.5