mirror of
https://github.com/KingDuckZ/dindexer.git
synced 2024-11-29 01:33:46 +00:00
Add support for 'status string' replies from Redis.
This commit is contained in:
parent
2e68e639bf
commit
7f25fdb37c
2 changed files with 28 additions and 2 deletions
|
@ -50,6 +50,11 @@ namespace redis {
|
||||||
return boost::get<std::vector<Reply>>(parReply);
|
return boost::get<std::vector<Reply>>(parReply);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const ErrorString& get_error_string (const Reply& parReply) {
|
||||||
|
assert(RedisVariantType_Error == parReply.which());
|
||||||
|
return boost::get<ErrorString>(parReply);
|
||||||
|
}
|
||||||
|
|
||||||
template <>
|
template <>
|
||||||
const std::string& get<std::string> (const Reply& parReply) {
|
const std::string& get<std::string> (const Reply& parReply) {
|
||||||
return get_string(parReply);
|
return get_string(parReply);
|
||||||
|
@ -65,7 +70,13 @@ namespace redis {
|
||||||
return get_integer(parReply);
|
return get_integer(parReply);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
template <>
|
||||||
|
const ErrorString& get<ErrorString> (const Reply& parReply) {
|
||||||
|
return get_error_string(parReply);
|
||||||
|
}
|
||||||
|
|
||||||
template const std::string& get<std::string> ( const Reply& parReply );
|
template const std::string& get<std::string> ( const Reply& parReply );
|
||||||
template const std::vector<Reply>& get<std::vector<Reply>> ( const Reply& parReply );
|
template const std::vector<Reply>& get<std::vector<Reply>> ( const Reply& parReply );
|
||||||
template const long long& get<long long> ( const Reply& parReply );
|
template const long long& get<long long> ( const Reply& parReply );
|
||||||
|
template const ErrorString& get<ErrorString> ( const Reply& parReply );
|
||||||
} //namespace redis
|
} //namespace redis
|
||||||
|
|
|
@ -32,6 +32,17 @@ namespace redis {
|
||||||
{ }
|
{ }
|
||||||
const std::string& message ( void ) const noexcept { return m_msg; }
|
const std::string& message ( void ) const noexcept { return m_msg; }
|
||||||
|
|
||||||
|
private:
|
||||||
|
std::string m_msg;
|
||||||
|
};
|
||||||
|
class StatusString {
|
||||||
|
public:
|
||||||
|
StatusString ( const char* parCStr, std::size_t parLen ) :
|
||||||
|
m_msg(parCStr, parLen)
|
||||||
|
{ }
|
||||||
|
const std::string& message ( void ) const noexcept { return m_msg; }
|
||||||
|
bool is_ok ( void ) const { return "OK" == m_msg; }
|
||||||
|
|
||||||
private:
|
private:
|
||||||
std::string m_msg;
|
std::string m_msg;
|
||||||
};
|
};
|
||||||
|
@ -41,14 +52,16 @@ namespace redis {
|
||||||
long long,
|
long long,
|
||||||
std::string,
|
std::string,
|
||||||
std::vector<Reply>,
|
std::vector<Reply>,
|
||||||
ErrorString
|
ErrorString,
|
||||||
|
StatusString
|
||||||
>;
|
>;
|
||||||
} //namespace implem
|
} //namespace implem
|
||||||
enum RedisVariantTypes {
|
enum RedisVariantTypes {
|
||||||
RedisVariantType_Integer = 0,
|
RedisVariantType_Integer = 0,
|
||||||
RedisVariantType_String,
|
RedisVariantType_String,
|
||||||
RedisVariantType_Array,
|
RedisVariantType_Array,
|
||||||
RedisVariantType_Error
|
RedisVariantType_Error,
|
||||||
|
RedisVariantType_Status
|
||||||
};
|
};
|
||||||
|
|
||||||
struct Reply : implem::RedisVariantType {
|
struct Reply : implem::RedisVariantType {
|
||||||
|
@ -59,6 +72,7 @@ namespace redis {
|
||||||
Reply ( std::string&& parVal ) : base_class(std::move(parVal)) {}
|
Reply ( std::string&& parVal ) : base_class(std::move(parVal)) {}
|
||||||
Reply ( std::vector<Reply>&& parVal ) : base_class(std::move(parVal)) {}
|
Reply ( std::vector<Reply>&& parVal ) : base_class(std::move(parVal)) {}
|
||||||
Reply ( ErrorString&& parVal ) : base_class(std::move(parVal)) {}
|
Reply ( ErrorString&& parVal ) : base_class(std::move(parVal)) {}
|
||||||
|
Reply ( StatusString&& parVal ) : base_class(std::move(parVal)) {}
|
||||||
~Reply ( void ) noexcept = default;
|
~Reply ( void ) noexcept = default;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -66,6 +80,7 @@ namespace redis {
|
||||||
long long get_integer_autoconv_if_str ( const Reply& parReply );
|
long long get_integer_autoconv_if_str ( const Reply& parReply );
|
||||||
const std::string& get_string ( const Reply& parReply );
|
const std::string& get_string ( const Reply& parReply );
|
||||||
const std::vector<Reply>& get_array ( const Reply& parReply );
|
const std::vector<Reply>& get_array ( const Reply& parReply );
|
||||||
|
const ErrorString& get_error_string ( const Reply& parReply );
|
||||||
|
|
||||||
template <typename T>
|
template <typename T>
|
||||||
const T& get ( const Reply& parReply );
|
const T& get ( const Reply& parReply );
|
||||||
|
|
Loading…
Reference in a new issue