Mini Shell
/*
+--------------------------------------------------------------------+
| libmemcached-awesome - C/C++ Client Library for memcached |
+--------------------------------------------------------------------+
| Redistribution and use in source and binary forms, with or without |
| modification, are permitted under the terms of the BSD license. |
| You should have received a copy of the license in a bundled file |
| named LICENSE; in case you did not receive a copy you can review |
| the terms online at: https://opensource.org/licenses/BSD-3-Clause |
+--------------------------------------------------------------------+
| Copyright (c) 2006-2014 Brian Aker https://datadifferential.com/ |
| Copyright (c) 2020-2021 Michael Wallner https://awesome.co/ |
+--------------------------------------------------------------------+
*/
#pragma once
struct memcached_st {
/**
@note these are static and should not change without a call to behavior.
*/
struct {
bool is_purging : 1;
bool is_processing_input : 1;
bool is_time_for_rebuild : 1;
bool is_parsing : 1;
} state;
struct {
// Everything below here is pretty static.
bool auto_eject_hosts : 1;
bool binary_protocol : 1;
bool buffer_requests : 1;
bool hash_with_namespace : 1;
bool no_block : 1; // Don't block
bool reply : 1;
bool randomize_replica_read : 1;
bool support_cas : 1;
bool tcp_nodelay : 1;
bool use_sort_hosts : 1;
bool use_udp : 1;
bool verify_key : 1;
bool tcp_keepalive : 1;
bool is_aes : 1;
bool is_fetching_version : 1;
bool not_used : 1;
} flags;
memcached_server_distribution_t distribution;
hashkit_st hashkit;
struct {
unsigned int version;
} server_info;
uint32_t number_of_hosts;
memcached_instance_st *servers;
memcached_instance_st *last_disconnected_server;
int32_t snd_timeout;
int32_t rcv_timeout;
uint32_t server_failure_limit;
uint32_t server_timeout_limit;
uint32_t io_msg_watermark;
uint32_t io_bytes_watermark;
uint32_t io_key_prefetch;
uint32_t tcp_keepidle;
int32_t poll_timeout;
int32_t connect_timeout; // How long we will wait on connect() before we will timeout
int32_t retry_timeout;
int32_t dead_timeout;
int send_size;
int recv_size;
void *user_data;
uint64_t query_id;
uint32_t number_of_replicas;
memcached_result_st result;
struct {
bool weighted_;
uint32_t continuum_count; // Ketama
uint32_t continuum_points_counter; // Ketama
time_t next_distribution_rebuild; // Ketama
struct memcached_continuum_item_st *continuum; // Ketama
} ketama;
struct memcached_virtual_bucket_t *virtual_bucket;
struct memcached_allocator_t allocators;
memcached_clone_fn on_clone;
memcached_cleanup_fn on_cleanup;
memcached_trigger_key_fn get_key_failure;
memcached_trigger_delete_key_fn delete_trigger;
memcached_callback_st *callbacks;
struct memcached_sasl_st sasl;
struct memcached_error_t *error_messages;
struct memcached_array_st *_namespace;
struct {
uint32_t initial_pool_size;
uint32_t max_pool_size;
int32_t
version; // This is used by pool and others to determine if the memcached_st is out of date.
struct memcached_array_st *filename;
} configure;
struct {
bool is_allocated : 1;
} options;
};