From: Sage Weil Date: Wed, 12 Oct 2011 03:57:24 +0000 (-0700) Subject: msg: entity_name_t::parse() X-Git-Tag: v0.38~63^2~18 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=beaca74d5edd2d9fdcda541bedc028e4b9935c78;p=ceph.git msg: entity_name_t::parse() Signed-off-by: Sage Weil --- diff --git a/src/msg/msg_types.h b/src/msg/msg_types.h index 8539f6b2b80b..d520e3554f72 100644 --- a/src/msg/msg_types.h +++ b/src/msg/msg_types.h @@ -63,6 +63,36 @@ public: return n; } + bool parse(const string& s) { + const char *start = s.c_str(); + char *end; + bool got = parse(start, &end); + return got && end == start + s.length(); + } + bool parse(const char *start, char **end) { + if (strstr(start, "mon.") == start) { + _type = TYPE_MON; + start += 4; + } else if (strstr(start, "osd.") == start) { + _type = TYPE_OSD; + start += 4; + } else if (strstr(start, "mds.") == start) { + _type = TYPE_MDS; + start += 4; + } else if (strstr(start, "client.") == start) { + _type = TYPE_CLIENT; + start += 7; + } else { + return false; + } + if (isspace(*start)) + return false; + _num = strtoll(start, end, 10); + if (*end == NULL || *end == start) + return false; + return true; + } + }; inline void encode(const entity_name_t &a, bufferlist& bl) {