+ protocol_binary_request_version request= {};
+
+ request.message.header.request.opcode= PROTOCOL_BINARY_CMD_VERSION;
+ request.message.header.request.datatype= PROTOCOL_BINARY_RAW_BYTES;
+
+ libmemcached_io_vector_st vector[]=
+ {
+ { request.bytes, sizeof(request.bytes) }
+ };
+
+ initialize_binary_request(instance, request.message.header);
+
+ (void)memcached_vdo(instance, vector, 1, false);
+ }
+}
+
+void memcached_version_instance(memcached_instance_st* instance)
+{
+ if (instance)
+ {
+ if (memcached_has_root(instance))
+ {
+ if (memcached_is_fetching_version(instance->root))
+ {
+ if (memcached_is_udp(instance->root) == false)
+ {
+
+ if (memcached_is_binary(instance->root))
+ {
+ version_binary_instance(instance);
+ return;
+ }
+
+ version_ascii_instance(instance);
+ }
+ }
+ }
+ }
+}
+
+int8_t memcached_version_instance_cmp(memcached_instance_st *instance,
+ uint8_t maj, uint8_t min, uint8_t mic)
+{
+ if (!instance || memcached_server_major_version(instance) == UINT8_MAX) {
+ return INT8_MIN;
+ } else {
+ uint32_t sv, cv;
+
+ sv = memcached_server_micro_version(instance)
+ |memcached_server_minor_version(instance) << 8
+ |memcached_server_major_version(instance) << 16
+ ;
+ cv = mic
+ |min << 8
+ |maj << 16
+ ;
+ if (sv < cv) {
+ return -1;
+ }
+ return sv != cv;