Commit f0d7e5cf authored by gejun's avatar gejun

AdaptiveProtocolType saves unknown name and supports parameter after colon

parent 88ad7672
......@@ -43,18 +43,47 @@ public:
AdaptiveProtocolType(ProtocolType type) : _type(type) {}
~AdaptiveProtocolType() {}
void operator=(ProtocolType type) { _type = type; }
void operator=(const butil::StringPiece& name)
{ _type = StringToProtocolType(name); };
void operator=(ProtocolType type) {
_type = type;
_name.clear();
_param.clear();
}
void operator=(butil::StringPiece name) {
butil::StringPiece param;
const size_t pos = name.find(':');
if (pos != butil::StringPiece::npos) {
param = name.substr(pos + 1);
name.remove_suffix(name.size() - pos);
}
_type = StringToProtocolType(name);
if (_type == PROTOCOL_UNKNOWN) {
_name.assign(name.data(), name.size());
} else {
_name.clear();
}
if (!param.empty()) {
_param.assign(param.data(), param.size());
} else {
_param.clear();
}
};
operator ProtocolType() const { return _type; }
const char* name() const { return ProtocolTypeToString(_type); }
const char* name() const {
return _name.empty() ? ProtocolTypeToString(_type) : _name.c_str();
}
bool has_param() const { return !_param.empty(); }
const std::string& param() const { return _param; }
private:
ProtocolType _type;
std::string _name;
std::string _param;
};
} // namespace brpc
#endif // BRPC_ADAPTIVE_PROTOCOL_TYPE_H
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment