00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #ifndef CLIENT_SERVER_DETECT_H
00021 #define CLIENT_SERVER_DETECT_H
00022
00023 #include <boost/regex.hpp>
00024
00025 class ServerDetect
00026 {
00027 public:
00028 enum server_type {
00029 SERVER_MYSQL_FOUND,
00030 SERVER_DRIZZLE_FOUND,
00031 SERVER_UNKNOWN_FOUND
00032 };
00033
00034 server_type getServerType() { return type; }
00035 std::string& getServerVersion() { return version; }
00036
00037 ServerDetect(drizzle_con_st *connection) :
00038 type(SERVER_UNKNOWN_FOUND),
00039 version("")
00040 {
00041 boost::match_flag_type flags = boost::match_default;
00042
00043 boost::regex mysql_regex("(5\\.[0-9]+\\.[0-9]+)");
00044 boost::regex drizzle_regex("(20[0-9]{2}\\.(0[1-9]|1[012])\\.[0-9]+)");
00045
00046 version= drizzle_con_server_version(connection);
00047
00048 if (regex_search(version, mysql_regex, flags))
00049 type= SERVER_MYSQL_FOUND;
00050 else if (regex_search(version, drizzle_regex, flags))
00051 type= SERVER_DRIZZLE_FOUND;
00052 else
00053 type= SERVER_UNKNOWN_FOUND;
00054 }
00055
00056 private:
00057 server_type type;
00058 std::string version;
00059 };
00060
00061 #endif