Revert "semver: 1.0 -> 1"
authorMichael Wallner <mike@php.net>
Wed, 23 Dec 2020 09:00:35 +0000 (10:00 +0100)
committerMichael Wallner <mike@php.net>
Wed, 23 Dec 2020 09:10:54 +0000 (10:10 +0100)
This reverts commit 3ffc968aaf182bf1ff1e18157c7bde2bdb41668d
and 3ffc968aaf182bf1ff1e18157c7bde2bdb41668d.

210 files changed:
CMake/InstallPublicHeaders.cmake
CMakeVersions.txt
ChangeLog-1.1.md
contrib/bin/memaslap/ms_conn.h
docs/source/ChangeLog-1.1.rst
docs/source/libmemcached/versioning.rst
example/interface_v0.cc
example/interface_v1.cc
example/memcached_light.cc
include/CMakeLists.txt
include/libhashkit-1.0 [deleted symlink]
include/libhashkit-1.0/CMakeLists.txt [new file with mode: 0644]
include/libhashkit-1.0/algorithm.h [new file with mode: 0644]
include/libhashkit-1.0/basic_string.h [new file with mode: 0644]
include/libhashkit-1.0/behavior.h [new file with mode: 0644]
include/libhashkit-1.0/configure.h.in [new file with mode: 0644]
include/libhashkit-1.0/digest.h [new file with mode: 0644]
include/libhashkit-1.0/function.h [new file with mode: 0644]
include/libhashkit-1.0/has.h [new file with mode: 0644]
include/libhashkit-1.0/hashkit.h [new file with mode: 0644]
include/libhashkit-1.0/hashkit.hpp [new file with mode: 0644]
include/libhashkit-1.0/str_algorithm.h [new file with mode: 0644]
include/libhashkit-1.0/strerror.h [new file with mode: 0644]
include/libhashkit-1.0/string.h [new file with mode: 0644]
include/libhashkit-1.0/types.h [new file with mode: 0644]
include/libhashkit-1.0/visibility.h [new file with mode: 0644]
include/libhashkit-1/CMakeLists.txt [deleted file]
include/libhashkit-1/algorithm.h [deleted file]
include/libhashkit-1/basic_string.h [deleted file]
include/libhashkit-1/behavior.h [deleted file]
include/libhashkit-1/configure.h.in [deleted file]
include/libhashkit-1/digest.h [deleted file]
include/libhashkit-1/function.h [deleted file]
include/libhashkit-1/has.h [deleted file]
include/libhashkit-1/hashkit.h [deleted file]
include/libhashkit-1/hashkit.hpp [deleted file]
include/libhashkit-1/str_algorithm.h [deleted file]
include/libhashkit-1/strerror.h [deleted file]
include/libhashkit-1/string.h [deleted file]
include/libhashkit-1/types.h [deleted file]
include/libhashkit-1/visibility.h [deleted file]
include/libmemcached-1.0 [deleted symlink]
include/libmemcached-1.0/CMakeLists.txt [new file with mode: 0644]
include/libmemcached-1.0/alloc.h [new file with mode: 0644]
include/libmemcached-1.0/allocators.h [new file with mode: 0644]
include/libmemcached-1.0/analyze.h [new file with mode: 0644]
include/libmemcached-1.0/auto.h [new file with mode: 0644]
include/libmemcached-1.0/basic_string.h [new file with mode: 0644]
include/libmemcached-1.0/behavior.h [new file with mode: 0644]
include/libmemcached-1.0/callback.h [new file with mode: 0644]
include/libmemcached-1.0/callbacks.h [new file with mode: 0644]
include/libmemcached-1.0/configure.h.in [new file with mode: 0644]
include/libmemcached-1.0/defaults.h [new file with mode: 0644]
include/libmemcached-1.0/delete.h [new file with mode: 0644]
include/libmemcached-1.0/deprecated_types.h [new file with mode: 0644]
include/libmemcached-1.0/dump.h [new file with mode: 0644]
include/libmemcached-1.0/encoding_key.h [new file with mode: 0644]
include/libmemcached-1.0/error.h [new file with mode: 0644]
include/libmemcached-1.0/exception.hpp [new file with mode: 0644]
include/libmemcached-1.0/exist.h [new file with mode: 0644]
include/libmemcached-1.0/fetch.h [new file with mode: 0644]
include/libmemcached-1.0/flush.h [new file with mode: 0644]
include/libmemcached-1.0/flush_buffers.h [new file with mode: 0644]
include/libmemcached-1.0/get.h [new file with mode: 0644]
include/libmemcached-1.0/hash.h [new file with mode: 0644]
include/libmemcached-1.0/limits.h [new file with mode: 0644]
include/libmemcached-1.0/memcached.h [new file with mode: 0644]
include/libmemcached-1.0/memcached.hpp [new file with mode: 0644]
include/libmemcached-1.0/options.h [new file with mode: 0644]
include/libmemcached-1.0/parse.h [new file with mode: 0644]
include/libmemcached-1.0/platform.h [new file with mode: 0644]
include/libmemcached-1.0/quit.h [new file with mode: 0644]
include/libmemcached-1.0/result.h [new file with mode: 0644]
include/libmemcached-1.0/return.h [new file with mode: 0644]
include/libmemcached-1.0/sasl.h [new file with mode: 0644]
include/libmemcached-1.0/server.h [new file with mode: 0644]
include/libmemcached-1.0/server_list.h [new file with mode: 0644]
include/libmemcached-1.0/stats.h [new file with mode: 0644]
include/libmemcached-1.0/storage.h [new file with mode: 0644]
include/libmemcached-1.0/strerror.h [new file with mode: 0644]
include/libmemcached-1.0/struct/CMakeLists.txt [new file with mode: 0644]
include/libmemcached-1.0/struct/allocator.h [new file with mode: 0644]
include/libmemcached-1.0/struct/analysis.h [new file with mode: 0644]
include/libmemcached-1.0/struct/callback.h [new file with mode: 0644]
include/libmemcached-1.0/struct/memcached.h [new file with mode: 0644]
include/libmemcached-1.0/struct/result.h [new file with mode: 0644]
include/libmemcached-1.0/struct/sasl.h [new file with mode: 0644]
include/libmemcached-1.0/struct/server.h [new file with mode: 0644]
include/libmemcached-1.0/struct/stat.h [new file with mode: 0644]
include/libmemcached-1.0/struct/string.h [new file with mode: 0644]
include/libmemcached-1.0/touch.h [new file with mode: 0644]
include/libmemcached-1.0/triggers.h [new file with mode: 0644]
include/libmemcached-1.0/types.h [new file with mode: 0644]
include/libmemcached-1.0/types/CMakeLists.txt [new file with mode: 0644]
include/libmemcached-1.0/types/behavior.h [new file with mode: 0644]
include/libmemcached-1.0/types/callback.h [new file with mode: 0644]
include/libmemcached-1.0/types/connection.h [new file with mode: 0644]
include/libmemcached-1.0/types/hash.h [new file with mode: 0644]
include/libmemcached-1.0/types/return.h [new file with mode: 0644]
include/libmemcached-1.0/types/server_distribution.h [new file with mode: 0644]
include/libmemcached-1.0/verbosity.h [new file with mode: 0644]
include/libmemcached-1.0/version.h [new file with mode: 0644]
include/libmemcached-1.0/visibility.h [new file with mode: 0644]
include/libmemcached-1/CMakeLists.txt [deleted file]
include/libmemcached-1/alloc.h [deleted file]
include/libmemcached-1/allocators.h [deleted file]
include/libmemcached-1/analyze.h [deleted file]
include/libmemcached-1/auto.h [deleted file]
include/libmemcached-1/basic_string.h [deleted file]
include/libmemcached-1/behavior.h [deleted file]
include/libmemcached-1/callback.h [deleted file]
include/libmemcached-1/callbacks.h [deleted file]
include/libmemcached-1/configure.h.in [deleted file]
include/libmemcached-1/defaults.h [deleted file]
include/libmemcached-1/delete.h [deleted file]
include/libmemcached-1/deprecated_types.h [deleted file]
include/libmemcached-1/dump.h [deleted file]
include/libmemcached-1/encoding_key.h [deleted file]
include/libmemcached-1/error.h [deleted file]
include/libmemcached-1/exception.hpp [deleted file]
include/libmemcached-1/exist.h [deleted file]
include/libmemcached-1/fetch.h [deleted file]
include/libmemcached-1/flush.h [deleted file]
include/libmemcached-1/flush_buffers.h [deleted file]
include/libmemcached-1/get.h [deleted file]
include/libmemcached-1/hash.h [deleted file]
include/libmemcached-1/limits.h [deleted file]
include/libmemcached-1/memcached.h [deleted file]
include/libmemcached-1/memcached.hpp [deleted file]
include/libmemcached-1/options.h [deleted file]
include/libmemcached-1/parse.h [deleted file]
include/libmemcached-1/platform.h [deleted file]
include/libmemcached-1/quit.h [deleted file]
include/libmemcached-1/result.h [deleted file]
include/libmemcached-1/return.h [deleted file]
include/libmemcached-1/sasl.h [deleted file]
include/libmemcached-1/server.h [deleted file]
include/libmemcached-1/server_list.h [deleted file]
include/libmemcached-1/stats.h [deleted file]
include/libmemcached-1/storage.h [deleted file]
include/libmemcached-1/strerror.h [deleted file]
include/libmemcached-1/struct/CMakeLists.txt [deleted file]
include/libmemcached-1/struct/allocator.h [deleted file]
include/libmemcached-1/struct/analysis.h [deleted file]
include/libmemcached-1/struct/callback.h [deleted file]
include/libmemcached-1/struct/memcached.h [deleted file]
include/libmemcached-1/struct/result.h [deleted file]
include/libmemcached-1/struct/sasl.h [deleted file]
include/libmemcached-1/struct/server.h [deleted file]
include/libmemcached-1/struct/stat.h [deleted file]
include/libmemcached-1/struct/string.h [deleted file]
include/libmemcached-1/touch.h [deleted file]
include/libmemcached-1/triggers.h [deleted file]
include/libmemcached-1/types.h [deleted file]
include/libmemcached-1/types/CMakeLists.txt [deleted file]
include/libmemcached-1/types/behavior.h [deleted file]
include/libmemcached-1/types/callback.h [deleted file]
include/libmemcached-1/types/connection.h [deleted file]
include/libmemcached-1/types/hash.h [deleted file]
include/libmemcached-1/types/return.h [deleted file]
include/libmemcached-1/types/server_distribution.h [deleted file]
include/libmemcached-1/verbosity.h [deleted file]
include/libmemcached-1/version.h [deleted file]
include/libmemcached-1/visibility.h [deleted file]
include/libmemcachedprotocol-0.0 [deleted symlink]
include/libmemcachedprotocol-0.0/CMakeLists.txt [new file with mode: 0644]
include/libmemcachedprotocol-0.0/binary.h [new file with mode: 0644]
include/libmemcachedprotocol-0.0/callback.h [new file with mode: 0644]
include/libmemcachedprotocol-0.0/handler.h [new file with mode: 0644]
include/libmemcachedprotocol-0.0/vbucket.h [new file with mode: 0644]
include/libmemcachedprotocol-0/CMakeLists.txt [deleted file]
include/libmemcachedprotocol-0/binary.h [deleted file]
include/libmemcachedprotocol-0/callback.h [deleted file]
include/libmemcachedprotocol-0/handler.h [deleted file]
include/libmemcachedprotocol-0/vbucket.h [deleted file]
include/libmemcachedutil-1.0 [deleted symlink]
include/libmemcachedutil-1.0/CMakeLists.txt [new file with mode: 0644]
include/libmemcachedutil-1.0/flush.h [new file with mode: 0644]
include/libmemcachedutil-1.0/ostream.hpp [new file with mode: 0644]
include/libmemcachedutil-1.0/pid.h [new file with mode: 0644]
include/libmemcachedutil-1.0/ping.h [new file with mode: 0644]
include/libmemcachedutil-1.0/pool.h [new file with mode: 0644]
include/libmemcachedutil-1.0/util.h [new file with mode: 0644]
include/libmemcachedutil-1.0/version.h [new file with mode: 0644]
include/libmemcachedutil-1/CMakeLists.txt [deleted file]
include/libmemcachedutil-1/flush.h [deleted file]
include/libmemcachedutil-1/ostream.hpp [deleted file]
include/libmemcachedutil-1/pid.h [deleted file]
include/libmemcachedutil-1/ping.h [deleted file]
include/libmemcachedutil-1/pool.h [deleted file]
include/libmemcachedutil-1/util.h [deleted file]
include/libmemcachedutil-1/version.h [deleted file]
src/bin/memcapable.cc
src/bin/memparse.cc
src/libhashkit/common.h
src/libhashkit/hashkit.h
src/libmemcached/common.h
src/libmemcached/memcached.h
src/libmemcached/memcached.hpp
src/libmemcached/util.h
src/libmemcachedprotocol/common.h
src/libmemcachedutil/common.h
src/p9y/gettimeofday.hpp
src/p9y/poll.hpp
src/p9y/socket.hpp
src/win32/wrappers.h [new file with mode: 0644]
support/ax_libmemcached.m4
test/tests/hashkit/basic.cpp
test/tests/memcached/regression/lp_000-962-815.cpp
test/tests/memcached/util_pool_thread.cpp

index ae2fa711c53be2d26ab1a71f177778d09456747a..05629d67458f8855edd28c8fb716c7d9e1351566 100644 (file)
@@ -23,8 +23,8 @@ function(install_public_headers DIRECTORY)
         string(TOUPPER ${LIBRARY} LIBRARY_UCASE)
         math(EXPR DASH "${DASH} + 1")
         string(SUBSTRING ${TOP} ${DASH} -1 VERSION)
-        if(NOT ${LIBRARY_UCASE}_VERSION_MAJOR VERSION_EQUAL ${VERSION})
-            message(SEND_ERROR "${LIBRARY} public include directory version ${VERSION} != " ${${LIBRARY_UCASE}_VERSION_MAJOR})
+        if(NOT ${LIBRARY_UCASE}_VERSION_INC VERSION_EQUAL ${VERSION})
+            message(SEND_ERROR "${LIBRARY} public include directory version ${VERSION} != " ${${LIBRARY_UCASE}_VERSION_INC})
             set(ENV{INVALID_CONFIGURATION} 1)
         endif()
     endif()
index 965c1106dce5204d9f72630eaeb762dcba829e41..aa77bdaa1815c2a76f1e7bec678cc61fb85f5952 100644 (file)
@@ -22,10 +22,11 @@ endfunction()
 #
 
 set(LIBMEMCACHED_VERSION_MAJOR 1)
-set(LIBMEMCACHED_VERSION_MINOR 1)
-set(LIBMEMCACHED_VERSION_PATCH 0)
+set(LIBMEMCACHED_VERSION_MINOR 0)
+set(LIBMEMCACHED_VERSION_PATCH 99)
 
 set(LIBMEMCACHED_VERSION ${LIBMEMCACHED_VERSION_MAJOR}.${LIBMEMCACHED_VERSION_MINOR}.${LIBMEMCACHED_VERSION_PATCH})
+set(LIBMEMCACHED_VERSION_INC ${LIBMEMCACHED_VERSION_MAJOR}.${LIBMEMCACHED_VERSION_MINOR})
 to_hex(LIBMEMCACHED_VERSION_HEX ${LIBMEMCACHED_VERSION_MAJOR} ${LIBMEMCACHED_VERSION_MINOR} ${LIBMEMCACHED_VERSION_PATCH})
 
 # libmemcached.so
@@ -45,6 +46,7 @@ set(LIBMEMCACHEDUTIL_VERSION_MINOR 0)
 set(LIBMEMCACHEDUTIL_VERSION_PATCH 0)
 
 set(LIBMEMCACHEDUTIL_VERSION ${LIBMEMCACHEDUTIL_VERSION_MAJOR}.${LIBMEMCACHEDUTIL_VERSION_MINOR}.${LIBMEMCACHEDUTIL_VERSION_PATCH})
+set(LIBMEMCACHEDUTIL_VERSION_INC ${LIBMEMCACHEDUTIL_VERSION_MAJOR}.${LIBMEMCACHEDUTIL_VERSION_MINOR})
 to_hex(LIBMEMCACHEDUTIL_VERSION_HEX ${LIBMEMCACHEDUTIL_VERSION_MAJOR} ${LIBMEMCACHEDUTIL_VERSION_MINOR} ${LIBMEMCACHEDUTIL_VERSION_PATCH})
 
 # libmemcachedutil.so
@@ -64,6 +66,7 @@ set(LIBMEMCACHEDPROTOCOL_VERSION_MINOR 0)
 set(LIBMEMCACHEDPROTOCOL_VERSION_PATCH 0)
 
 set(LIBMEMCACHEDPROTOCOL_VERSION ${LIBMEMCACHEDPROTOCOL_VERSION_MAJOR}.${LIBMEMCACHEDPROTOCOL_VERSION_MINOR}.${LIBMEMCACHEDPROTOCOL_VERSION_PATCH})
+set(LIBMEMCACHEDPROTOCOL_VERSION_INC ${LIBMEMCACHEDPROTOCOL_VERSION_MAJOR}.${LIBMEMCACHEDPROTOCOL_VERSION_MINOR})
 to_hex(LIBMEMCACHEDPROTOCOL_VERSION_HEX ${LIBMEMCACHEDPROTOCOL_VERSION_MAJOR} ${LIBMEMCACHEDPROTOCOL_VERSION_MINOR} ${LIBMEMCACHEDPROTOCOL_VERSION_PATCH})
 
 # libmemcachedprotocol.so
@@ -83,6 +86,7 @@ set(LIBHASHKIT_VERSION_MINOR 0)
 set(LIBHASHKIT_VERSION_PATCH 0)
 
 set(LIBHASHKIT_VERSION ${LIBHASHKIT_VERSION_MAJOR}.${LIBHASHKIT_VERSION_MINOR}.${LIBHASHKIT_VERSION_PATCH})
+set(LIBHASHKIT_VERSION_INC ${LIBHASHKIT_VERSION_MAJOR}.${LIBHASHKIT_VERSION_MINOR})
 to_hex(LIBHASHKIT_VERSION_HEX ${LIBHASHKIT_VERSION_MAJOR} ${LIBHASHKIT_VERSION_MINOR} ${LIBHASHKIT_VERSION_PATCH})
 
 # libhashkit.so
index de38ca82948eebda9d71209f0c249016b49d10e0..3001d4c9c67421c410dfc26868b7610640330176 100644 (file)
@@ -13,10 +13,6 @@ was incremented due to the following changes:
 * Build requires C++11 compiler support.
 * Tests require C++17 compiler support.
 * Moved to the Semantic Versioning Specification: https://semver.org
-  * Public include directories have been renamed from `${lib}-${major}.${minor}`
-    to `${lib}-${major}` due to having the minor version (always having been 0
-    in this case) in the public interface being unreasonable when using semantic
-    versioning. Symbolic links are provided for backwards compatibility, though.
 * Moved the project from launchpad to github:
     * Source: https://github.com/m6w6/libmemcached
     * Documentation: https://m6w6.github.io/libmemcached
index e3c4f91ecabd566b588f56421b069d2d03a313a5..426eae82d44264d5a39571d5692ee9f7a1e5a970 100644 (file)
@@ -22,7 +22,7 @@
 #include <netdb.h>
 
 #include "ms_task.h"
-#include "libmemcachedprotocol-0/binary.h"
+#include "libmemcachedprotocol-0.0/binary.h"
 
 #ifdef __cplusplus
 extern "C" {
index 324ef7b2dbabc0beca8d7482e63bd73d1050381f..3c1d8623a6ae9891b595141df00ca014ce83d9dc 100644 (file)
@@ -23,12 +23,6 @@ was incremented due to the following changes:
 * Build requires C++11 compiler support.
 * Tests require C++17 compiler support.
 * Moved to the Semantic Versioning Specification: https://semver.org
-
-  * Public include directories have been renamed from ``${lib}-${major}.${minor}``
-    to ``${lib}-${major}`` due to having the minor version (always having been 0
-    in this case) in the public interface being unreasonable when using semantic
-    versioning. Symbolic links are provided for backwards compatibility, though.
-
 * Moved the project from launchpad to github:
 
   * Source: https://github.com/m6w6/libmemcached
index 161e2d8de9f41021f53f3bac446c5e467244bd22..c7e13270b017fa583d80dbc358593a036fef5c05 100644 (file)
@@ -1,12 +1,10 @@
 libmemcached Versioning
 =======================
 
-Libmemcached is laid out by interface version and strives to adhere to the
-``Semantic Versioning Specification`` since version ``1.1``.
+Libmemcached is laid out by interface version. The 1.0 version would be found
+in: ``libmemcached-1.0/memcached.h``
 
-.. seealso::
-    `https://semver.org/ <http://semver.org/>`_
+The historic ``libmemcached/memcached.h`` includes
+``libmemcached-1.0/memcached.h``. For best practice you should include the
+version of libmemcached that you used during development.
 
-The 1.x version would be found in: ``libmemcached-1/memcached.h``. The historic 
-``libmemcached/memcached.h`` includes ``libmemcached-1/memcached.h`` and on
-previously supported platforms ``libmemcached-1.0`` points to ``libmemcached-1``. 
index cf53dded75c22283b86c3772cfaac735063de42f..cf6001243b1cc6b08fabe642170a6e12402d2f85 100644 (file)
@@ -18,7 +18,7 @@
 #include <cstdlib>
 #include <cstring>
 
-#include <libmemcachedprotocol-0/handler.h>
+#include <libmemcachedprotocol-0.0/handler.h>
 #include <example/byteorder.h>
 #include "example/memcached_light.h"
 #include "example/storage.h"
index e0a38355971c2aa756b88b7cf044edba814407c3..c6f5bf199f9c83929df65bb36cac3f5e83659ad9 100644 (file)
@@ -20,7 +20,7 @@
 #if HAVE_UNISTD_H
 #  include <unistd.h>
 #endif
-#include <libmemcachedprotocol-0/handler.h>
+#include <libmemcachedprotocol-0.0/handler.h>
 #include <example/byteorder.h>
 #include "example/memcached_light.h"
 #include "example/storage.h"
index c76a42c24630dd40c46d317038b8d4461310b19e..714bb16f3dedafb216c753a81cb870f9b074df6e 100644 (file)
@@ -25,7 +25,7 @@
 
 #include <mem_config.h>
 
-#include <libmemcachedprotocol-0/handler.h>
+#include <libmemcachedprotocol-0.0/handler.h>
 #include <libmemcached/socket.hpp>
 #include <example/byteorder.h>
 #include "example/storage.h"
index 136c23d7a01e0f50eee7321fad57c9235c63f5e8..bc3dadc5323a5dffb3dd48289dde5760cd6faad2 100644 (file)
@@ -1,23 +1,5 @@
 
-add_subdirectory(libhashkit-1)
-add_subdirectory(libmemcached-1)
-add_subdirectory(libmemcachedutil-1)
-add_subdirectory(libmemcachedprotocol-0)
-
-# v1.0 compatibility
-if(NOT WIN32)
-    file(COPY libhashkit-1.0 DESTINATION .)
-    file(COPY libmemcached-1.0 DESTINATION .)
-    file(COPY libmemcachedutil-1.0 DESTINATION .)
-    file(COPY libmemcachedprotocol-0.0 DESTINATION .)
-    install(CODE "
-        file(INSTALL
-                ${CMAKE_CURRENT_BINARY_DIR}/libhashkit-1.0
-                ${CMAKE_CURRENT_BINARY_DIR}/libmemcached-1.0
-                ${CMAKE_CURRENT_BINARY_DIR}/libmemcachedutil-1.0
-                ${CMAKE_CURRENT_BINARY_DIR}/libmemcachedprotocol-0.0
-            DESTINATION \${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_INCLUDEDIR})
-        "
-        COMPONENT dev
-        )
-endif()
+add_subdirectory(libhashkit-1.0)
+add_subdirectory(libmemcached-1.0)
+add_subdirectory(libmemcachedutil-1.0)
+add_subdirectory(libmemcachedprotocol-0.0)
diff --git a/include/libhashkit-1.0 b/include/libhashkit-1.0
deleted file mode 120000 (symlink)
index 17f4a36..0000000
+++ /dev/null
@@ -1 +0,0 @@
-libhashkit-1
\ No newline at end of file
diff --git a/include/libhashkit-1.0/CMakeLists.txt b/include/libhashkit-1.0/CMakeLists.txt
new file mode 100644 (file)
index 0000000..24fefd5
--- /dev/null
@@ -0,0 +1,17 @@
+
+install_public_headers(libhashkit-1.0
+        @configure.h
+        algorithm.h
+        basic_string.h
+        behavior.h
+        digest.h
+        function.h
+        has.h
+        hashkit.h
+        hashkit.hpp
+        str_algorithm.h
+        strerror.h
+        string.h
+        types.h
+        visibility.h
+        )
diff --git a/include/libhashkit-1.0/algorithm.h b/include/libhashkit-1.0/algorithm.h
new file mode 100644 (file)
index 0000000..92d037e
--- /dev/null
@@ -0,0 +1,60 @@
+/*
+    +--------------------------------------------------------------------+
+    | libmemcached - 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 Michael Wallner   <mike@php.net>                |
+    +--------------------------------------------------------------------+
+*/
+
+#pragma once
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+HASHKIT_API
+uint32_t libhashkit_one_at_a_time(const char *key, size_t key_length);
+
+HASHKIT_API
+uint32_t libhashkit_fnv1_64(const char *key, size_t key_length);
+
+HASHKIT_API
+uint32_t libhashkit_fnv1a_64(const char *key, size_t key_length);
+
+HASHKIT_API
+uint32_t libhashkit_fnv1_32(const char *key, size_t key_length);
+
+HASHKIT_API
+uint32_t libhashkit_fnv1a_32(const char *key, size_t key_length);
+
+HASHKIT_API
+uint32_t libhashkit_crc32(const char *key, size_t key_length);
+
+HASHKIT_API
+uint32_t libhashkit_hsieh(const char *key, size_t key_length);
+
+HASHKIT_API
+uint32_t libhashkit_murmur(const char *key, size_t key_length);
+
+HASHKIT_API
+uint32_t libhashkit_murmur3(const char *key, size_t key_length);
+
+HASHKIT_API
+uint32_t libhashkit_jenkins(const char *key, size_t key_length);
+
+HASHKIT_API
+uint32_t libhashkit_md5(const char *key, size_t key_length);
+
+HASHKIT_API
+void libhashkit_md5_signature(const unsigned char *key, size_t length, unsigned char *result);
+
+#ifdef __cplusplus
+}
+#endif
diff --git a/include/libhashkit-1.0/basic_string.h b/include/libhashkit-1.0/basic_string.h
new file mode 100644 (file)
index 0000000..3531e2c
--- /dev/null
@@ -0,0 +1,28 @@
+/*
+    +--------------------------------------------------------------------+
+    | libmemcached - 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 Michael Wallner   <mike@php.net>                |
+    +--------------------------------------------------------------------+
+*/
+
+#pragma once
+
+// No assumptions of NULL should be made
+
+#define hashkit_size(X)         (X).size;
+#define hashkit_c_str(X)        (X).c_str;
+#define hashkit_string_param(X) (X).c_str, (X).size
+
+#ifdef __cplusplus
+#  define hashkit_string_printf(X) int((X).size), (X).c_str
+#else
+#  define hashkit_string_printf(X) (int) ((X).size), (X).c_str
+#endif
diff --git a/include/libhashkit-1.0/behavior.h b/include/libhashkit-1.0/behavior.h
new file mode 100644 (file)
index 0000000..ac7ccd3
--- /dev/null
@@ -0,0 +1,24 @@
+/*
+    +--------------------------------------------------------------------+
+    | libmemcached - 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 Michael Wallner   <mike@php.net>                |
+    +--------------------------------------------------------------------+
+*/
+
+#pragma once
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#ifdef __cplusplus
+}
+#endif
diff --git a/include/libhashkit-1.0/configure.h.in b/include/libhashkit-1.0/configure.h.in
new file mode 100644 (file)
index 0000000..8cef3b5
--- /dev/null
@@ -0,0 +1,19 @@
+/*
+    +--------------------------------------------------------------------+
+    | libmemcached - 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 Michael Wallner   <mike@php.net>                |
+    +--------------------------------------------------------------------+
+*/
+
+#pragma once
+
+#define LIBHASHKIT_VERSION_STRING "@LIBHASHKIT_VERSION@"
+#define LIBHASHKIT_VERSION_HEX    @LIBHASHKIT_VERSION_HEX@
diff --git a/include/libhashkit-1.0/digest.h b/include/libhashkit-1.0/digest.h
new file mode 100644 (file)
index 0000000..e9c490f
--- /dev/null
@@ -0,0 +1,35 @@
+/*
+    +--------------------------------------------------------------------+
+    | libmemcached - 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 Michael Wallner   <mike@php.net>                |
+    +--------------------------------------------------------------------+
+*/
+
+#pragma once
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+HASHKIT_API
+uint32_t hashkit_digest(const hashkit_st *self, const char *key, size_t key_length);
+
+/**
+  This is a utilitly function provided so that you can directly access hashes with a hashkit_st.
+*/
+
+HASHKIT_API
+uint32_t libhashkit_digest(const char *key, size_t key_length,
+                           hashkit_hash_algorithm_t hash_algorithm);
+
+#ifdef __cplusplus
+}
+#endif
diff --git a/include/libhashkit-1.0/function.h b/include/libhashkit-1.0/function.h
new file mode 100644 (file)
index 0000000..6161d81
--- /dev/null
@@ -0,0 +1,51 @@
+/*
+    +--------------------------------------------------------------------+
+    | libmemcached - 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 Michael Wallner   <mike@php.net>                |
+    +--------------------------------------------------------------------+
+*/
+
+#pragma once
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/**
+  This sets/gets the default function we will be using.
+*/
+HASHKIT_API
+hashkit_return_t hashkit_set_function(hashkit_st *hash, hashkit_hash_algorithm_t hash_algorithm);
+
+HASHKIT_API
+hashkit_return_t hashkit_set_custom_function(hashkit_st *hash, hashkit_hash_fn function,
+                                             void *context);
+
+HASHKIT_API
+hashkit_hash_algorithm_t hashkit_get_function(const hashkit_st *hash);
+
+/**
+  This sets/gets the function we use for distribution.
+*/
+HASHKIT_API
+hashkit_return_t hashkit_set_distribution_function(hashkit_st *hash,
+                                                   hashkit_hash_algorithm_t hash_algorithm);
+
+HASHKIT_API
+hashkit_return_t hashkit_set_custom_distribution_function(hashkit_st *self,
+                                                          hashkit_hash_fn function, void *context);
+
+HASHKIT_API
+hashkit_hash_algorithm_t hashkit_get_distribution_function(const hashkit_st *self);
+
+#ifdef __cplusplus
+}
+#endif
diff --git a/include/libhashkit-1.0/has.h b/include/libhashkit-1.0/has.h
new file mode 100644 (file)
index 0000000..3e03b07
--- /dev/null
@@ -0,0 +1,27 @@
+/*
+    +--------------------------------------------------------------------+
+    | libmemcached - 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 Michael Wallner   <mike@php.net>                |
+    +--------------------------------------------------------------------+
+*/
+
+#pragma once
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+HASHKIT_API
+bool libhashkit_has_algorithm(const hashkit_hash_algorithm_t);
+
+#ifdef __cplusplus
+}
+#endif
diff --git a/include/libhashkit-1.0/hashkit.h b/include/libhashkit-1.0/hashkit.h
new file mode 100644 (file)
index 0000000..9842f8e
--- /dev/null
@@ -0,0 +1,82 @@
+/*
+    +--------------------------------------------------------------------+
+    | libmemcached - 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 Michael Wallner   <mike@php.net>                |
+    +--------------------------------------------------------------------+
+*/
+
+#pragma once
+
+#if !defined(__cplusplus)
+#  include <stdbool.h>
+#  include <inttypes.h>
+#else
+#  include <cinttypes>
+#endif
+#include <sys/types.h>
+
+#include <libhashkit-1.0/visibility.h>
+#include <libhashkit-1.0/configure.h>
+#include <libhashkit-1.0/types.h>
+#include <libhashkit-1.0/has.h>
+#include <libhashkit-1.0/algorithm.h>
+#include <libhashkit-1.0/behavior.h>
+#include <libhashkit-1.0/digest.h>
+#include <libhashkit-1.0/function.h>
+#include <libhashkit-1.0/str_algorithm.h>
+#include <libhashkit-1.0/strerror.h>
+#include <libhashkit-1.0/string.h>
+
+struct hashkit_st {
+  struct hashkit_function_st {
+    hashkit_hash_fn function;
+    void *context;
+  } base_hash, distribution_hash;
+
+  struct {
+    bool is_base_same_distributed : 1;
+  } flags;
+
+  struct {
+    bool is_allocated : 1;
+  } options;
+
+  void *_key;
+};
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+HASHKIT_API
+hashkit_st *hashkit_create(hashkit_st *hash);
+
+HASHKIT_API
+hashkit_st *hashkit_clone(hashkit_st *destination, const hashkit_st *ptr);
+
+HASHKIT_API
+bool hashkit_compare(const hashkit_st *first, const hashkit_st *second);
+
+HASHKIT_API
+void hashkit_free(hashkit_st *hash);
+
+HASHKIT_API
+hashkit_string_st *hashkit_encrypt(hashkit_st *, const char *source, size_t source_length);
+
+HASHKIT_API
+hashkit_string_st *hashkit_decrypt(hashkit_st *, const char *source, size_t source_length);
+
+HASHKIT_API
+bool hashkit_key(hashkit_st *, const char *key, const size_t key_length);
+
+#ifdef __cplusplus
+} // extern "C"
+#endif
diff --git a/include/libhashkit-1.0/hashkit.hpp b/include/libhashkit-1.0/hashkit.hpp
new file mode 100644 (file)
index 0000000..1690f15
--- /dev/null
@@ -0,0 +1,56 @@
+/*
+    +--------------------------------------------------------------------+
+    | libmemcached - 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 Michael Wallner   <mike@php.net>                |
+    +--------------------------------------------------------------------+
+*/
+
+#pragma once
+
+#include <libhashkit-1.0/hashkit.h>
+#include <string>
+
+class Hashkit {
+public:
+  Hashkit() { hashkit_create(&self); }
+
+  Hashkit(const Hashkit &source) { hashkit_clone(&self, &source.self); }
+
+  Hashkit &operator=(const Hashkit &source) {
+    hashkit_free(&self);
+    hashkit_clone(&self, &source.self);
+
+    return *this;
+  }
+
+  friend bool operator==(const Hashkit &left, const Hashkit &right) {
+    return hashkit_compare(&left.self, &right.self);
+  }
+
+  uint32_t digest(std::string &str) { return hashkit_digest(&self, str.c_str(), str.length()); }
+
+  uint32_t digest(const char *key, size_t key_length) {
+    return hashkit_digest(&self, key, key_length);
+  }
+
+  hashkit_return_t set_function(hashkit_hash_algorithm_t hash_algorithm) {
+    return hashkit_set_function(&self, hash_algorithm);
+  }
+
+  hashkit_return_t set_distribution_function(hashkit_hash_algorithm_t hash_algorithm) {
+    return hashkit_set_distribution_function(&self, hash_algorithm);
+  }
+
+  ~Hashkit() { hashkit_free(&self); }
+
+private:
+  hashkit_st self;
+};
diff --git a/include/libhashkit-1.0/str_algorithm.h b/include/libhashkit-1.0/str_algorithm.h
new file mode 100644 (file)
index 0000000..fec3f9f
--- /dev/null
@@ -0,0 +1,27 @@
+/*
+    +--------------------------------------------------------------------+
+    | libmemcached - 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 Michael Wallner   <mike@php.net>                |
+    +--------------------------------------------------------------------+
+*/
+
+#pragma once
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+HASHKIT_API
+const char *libhashkit_string_hash(hashkit_hash_algorithm_t type);
+
+#ifdef __cplusplus
+}
+#endif
diff --git a/include/libhashkit-1.0/strerror.h b/include/libhashkit-1.0/strerror.h
new file mode 100644 (file)
index 0000000..972e30c
--- /dev/null
@@ -0,0 +1,27 @@
+/*
+    +--------------------------------------------------------------------+
+    | libmemcached - 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 Michael Wallner   <mike@php.net>                |
+    +--------------------------------------------------------------------+
+*/
+
+#pragma once
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+HASHKIT_API
+const char *hashkit_strerror(hashkit_st *ptr, hashkit_return_t rc);
+
+#ifdef __cplusplus
+}
+#endif
diff --git a/include/libhashkit-1.0/string.h b/include/libhashkit-1.0/string.h
new file mode 100644 (file)
index 0000000..69df49b
--- /dev/null
@@ -0,0 +1,37 @@
+/*
+    +--------------------------------------------------------------------+
+    | libmemcached - 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 Michael Wallner   <mike@php.net>                |
+    +--------------------------------------------------------------------+
+*/
+
+#pragma once
+
+#ifdef __cplusplus
+struct hashkit_string_st;
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+HASHKIT_API
+void hashkit_string_free(hashkit_string_st *ptr);
+
+HASHKIT_API
+size_t hashkit_string_length(const hashkit_string_st *self);
+
+HASHKIT_API
+const char *hashkit_string_c_str(const hashkit_string_st *self);
+
+#ifdef __cplusplus
+} // extern "C"
+#endif
diff --git a/include/libhashkit-1.0/types.h b/include/libhashkit-1.0/types.h
new file mode 100644 (file)
index 0000000..fec60ce
--- /dev/null
@@ -0,0 +1,72 @@
+/*
+    +--------------------------------------------------------------------+
+    | libmemcached - 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 Michael Wallner   <mike@php.net>                |
+    +--------------------------------------------------------------------+
+*/
+
+#pragma once
+
+typedef enum {
+  HASHKIT_SUCCESS,
+  HASHKIT_FAILURE,
+  HASHKIT_MEMORY_ALLOCATION_FAILURE,
+  HASHKIT_INVALID_HASH,
+  HASHKIT_INVALID_ARGUMENT,
+  HASHKIT_MAXIMUM_RETURN /* Always add new error code before */
+} hashkit_return_t;
+
+static inline bool hashkit_success(const hashkit_return_t rc) {
+  return (rc == HASHKIT_SUCCESS);
+}
+
+static inline bool hashkit_failed(const hashkit_return_t rc) {
+  return (rc != HASHKIT_SUCCESS);
+}
+
+typedef enum {
+  HASHKIT_HASH_DEFAULT = 0, // hashkit_one_at_a_time()
+  HASHKIT_HASH_MD5,
+  HASHKIT_HASH_CRC,
+  HASHKIT_HASH_FNV1_64,
+  HASHKIT_HASH_FNV1A_64,
+  HASHKIT_HASH_FNV1_32,
+  HASHKIT_HASH_FNV1A_32,
+  HASHKIT_HASH_HSIEH,
+  HASHKIT_HASH_MURMUR,
+  HASHKIT_HASH_JENKINS,
+  HASHKIT_HASH_MURMUR3,
+  HASHKIT_HASH_CUSTOM,
+  HASHKIT_HASH_MAX
+} hashkit_hash_algorithm_t;
+
+/**
+ * Hash distributions that are available to use.
+ */
+typedef enum {
+  HASHKIT_DISTRIBUTION_MODULA,
+  HASHKIT_DISTRIBUTION_RANDOM,
+  HASHKIT_DISTRIBUTION_KETAMA,
+  HASHKIT_DISTRIBUTION_MAX /* Always add new values before this. */
+} hashkit_distribution_t;
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+typedef struct hashkit_st hashkit_st;
+typedef struct hashkit_string_st hashkit_string_st;
+
+typedef uint32_t (*hashkit_hash_fn)(const char *key, size_t key_length, void *context);
+
+#ifdef __cplusplus
+}
+#endif
diff --git a/include/libhashkit-1.0/visibility.h b/include/libhashkit-1.0/visibility.h
new file mode 100644 (file)
index 0000000..74f4e20
--- /dev/null
@@ -0,0 +1,48 @@
+/*
+    +--------------------------------------------------------------------+
+    | libmemcached - 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 Michael Wallner   <mike@php.net>                |
+    +--------------------------------------------------------------------+
+*/
+
+#pragma once
+
+/**
+ *
+ * HASHKIT_API is used for the public API symbols. It either DLL imports or
+ * DLL exports (or does nothing for static build).
+ *
+ * HASHKIT_LOCAL is used for non-api symbols.
+ */
+
+#if defined(BUILDING_HASHKIT)
+#  if defined(HAVE_VISIBILITY) && HAVE_VISIBILITY
+#    define HASHKIT_API   __attribute__((visibility("default")))
+#    define HASHKIT_LOCAL __attribute__((visibility("hidden")))
+#  elif defined(__SUNPRO_C) && (__SUNPRO_C >= 0x550)
+#    define HASHKIT_API   __global
+#    define HASHKIT_LOCAL __hidden
+#  elif defined(_MSC_VER)
+#    define HASHKIT_API extern __declspec(dllexport)
+#    define HASHKIT_LOCAL
+#  else
+#    define HASHKIT_API
+#    define HASHKIT_LOCAL
+#  endif /* defined(HAVE_VISIBILITY) */
+#else    /* defined(BUILDING_HASHKIT) */
+#  if defined(_MSC_VER)
+#    define HASHKIT_API extern __declspec(dllimport)
+#    define HASHKIT_LOCAL
+#  else
+#    define HASHKIT_API
+#    define HASHKIT_LOCAL
+#  endif /* defined(_MSC_VER) */
+#endif   /* defined(BUILDING_HASHKIT) */
diff --git a/include/libhashkit-1/CMakeLists.txt b/include/libhashkit-1/CMakeLists.txt
deleted file mode 100644 (file)
index aae1cd1..0000000
+++ /dev/null
@@ -1,17 +0,0 @@
-
-install_public_headers(libhashkit-1
-        @configure.h
-        algorithm.h
-        basic_string.h
-        behavior.h
-        digest.h
-        function.h
-        has.h
-        hashkit.h
-        hashkit.hpp
-        str_algorithm.h
-        strerror.h
-        string.h
-        types.h
-        visibility.h
-        )
diff --git a/include/libhashkit-1/algorithm.h b/include/libhashkit-1/algorithm.h
deleted file mode 100644 (file)
index 92d037e..0000000
+++ /dev/null
@@ -1,60 +0,0 @@
-/*
-    +--------------------------------------------------------------------+
-    | libmemcached - 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 Michael Wallner   <mike@php.net>                |
-    +--------------------------------------------------------------------+
-*/
-
-#pragma once
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-HASHKIT_API
-uint32_t libhashkit_one_at_a_time(const char *key, size_t key_length);
-
-HASHKIT_API
-uint32_t libhashkit_fnv1_64(const char *key, size_t key_length);
-
-HASHKIT_API
-uint32_t libhashkit_fnv1a_64(const char *key, size_t key_length);
-
-HASHKIT_API
-uint32_t libhashkit_fnv1_32(const char *key, size_t key_length);
-
-HASHKIT_API
-uint32_t libhashkit_fnv1a_32(const char *key, size_t key_length);
-
-HASHKIT_API
-uint32_t libhashkit_crc32(const char *key, size_t key_length);
-
-HASHKIT_API
-uint32_t libhashkit_hsieh(const char *key, size_t key_length);
-
-HASHKIT_API
-uint32_t libhashkit_murmur(const char *key, size_t key_length);
-
-HASHKIT_API
-uint32_t libhashkit_murmur3(const char *key, size_t key_length);
-
-HASHKIT_API
-uint32_t libhashkit_jenkins(const char *key, size_t key_length);
-
-HASHKIT_API
-uint32_t libhashkit_md5(const char *key, size_t key_length);
-
-HASHKIT_API
-void libhashkit_md5_signature(const unsigned char *key, size_t length, unsigned char *result);
-
-#ifdef __cplusplus
-}
-#endif
diff --git a/include/libhashkit-1/basic_string.h b/include/libhashkit-1/basic_string.h
deleted file mode 100644 (file)
index 3531e2c..0000000
+++ /dev/null
@@ -1,28 +0,0 @@
-/*
-    +--------------------------------------------------------------------+
-    | libmemcached - 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 Michael Wallner   <mike@php.net>                |
-    +--------------------------------------------------------------------+
-*/
-
-#pragma once
-
-// No assumptions of NULL should be made
-
-#define hashkit_size(X)         (X).size;
-#define hashkit_c_str(X)        (X).c_str;
-#define hashkit_string_param(X) (X).c_str, (X).size
-
-#ifdef __cplusplus
-#  define hashkit_string_printf(X) int((X).size), (X).c_str
-#else
-#  define hashkit_string_printf(X) (int) ((X).size), (X).c_str
-#endif
diff --git a/include/libhashkit-1/behavior.h b/include/libhashkit-1/behavior.h
deleted file mode 100644 (file)
index ac7ccd3..0000000
+++ /dev/null
@@ -1,24 +0,0 @@
-/*
-    +--------------------------------------------------------------------+
-    | libmemcached - 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 Michael Wallner   <mike@php.net>                |
-    +--------------------------------------------------------------------+
-*/
-
-#pragma once
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#ifdef __cplusplus
-}
-#endif
diff --git a/include/libhashkit-1/configure.h.in b/include/libhashkit-1/configure.h.in
deleted file mode 100644 (file)
index 8cef3b5..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-/*
-    +--------------------------------------------------------------------+
-    | libmemcached - 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 Michael Wallner   <mike@php.net>                |
-    +--------------------------------------------------------------------+
-*/
-
-#pragma once
-
-#define LIBHASHKIT_VERSION_STRING "@LIBHASHKIT_VERSION@"
-#define LIBHASHKIT_VERSION_HEX    @LIBHASHKIT_VERSION_HEX@
diff --git a/include/libhashkit-1/digest.h b/include/libhashkit-1/digest.h
deleted file mode 100644 (file)
index e9c490f..0000000
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
-    +--------------------------------------------------------------------+
-    | libmemcached - 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 Michael Wallner   <mike@php.net>                |
-    +--------------------------------------------------------------------+
-*/
-
-#pragma once
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-HASHKIT_API
-uint32_t hashkit_digest(const hashkit_st *self, const char *key, size_t key_length);
-
-/**
-  This is a utilitly function provided so that you can directly access hashes with a hashkit_st.
-*/
-
-HASHKIT_API
-uint32_t libhashkit_digest(const char *key, size_t key_length,
-                           hashkit_hash_algorithm_t hash_algorithm);
-
-#ifdef __cplusplus
-}
-#endif
diff --git a/include/libhashkit-1/function.h b/include/libhashkit-1/function.h
deleted file mode 100644 (file)
index 6161d81..0000000
+++ /dev/null
@@ -1,51 +0,0 @@
-/*
-    +--------------------------------------------------------------------+
-    | libmemcached - 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 Michael Wallner   <mike@php.net>                |
-    +--------------------------------------------------------------------+
-*/
-
-#pragma once
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/**
-  This sets/gets the default function we will be using.
-*/
-HASHKIT_API
-hashkit_return_t hashkit_set_function(hashkit_st *hash, hashkit_hash_algorithm_t hash_algorithm);
-
-HASHKIT_API
-hashkit_return_t hashkit_set_custom_function(hashkit_st *hash, hashkit_hash_fn function,
-                                             void *context);
-
-HASHKIT_API
-hashkit_hash_algorithm_t hashkit_get_function(const hashkit_st *hash);
-
-/**
-  This sets/gets the function we use for distribution.
-*/
-HASHKIT_API
-hashkit_return_t hashkit_set_distribution_function(hashkit_st *hash,
-                                                   hashkit_hash_algorithm_t hash_algorithm);
-
-HASHKIT_API
-hashkit_return_t hashkit_set_custom_distribution_function(hashkit_st *self,
-                                                          hashkit_hash_fn function, void *context);
-
-HASHKIT_API
-hashkit_hash_algorithm_t hashkit_get_distribution_function(const hashkit_st *self);
-
-#ifdef __cplusplus
-}
-#endif
diff --git a/include/libhashkit-1/has.h b/include/libhashkit-1/has.h
deleted file mode 100644 (file)
index 3e03b07..0000000
+++ /dev/null
@@ -1,27 +0,0 @@
-/*
-    +--------------------------------------------------------------------+
-    | libmemcached - 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 Michael Wallner   <mike@php.net>                |
-    +--------------------------------------------------------------------+
-*/
-
-#pragma once
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-HASHKIT_API
-bool libhashkit_has_algorithm(const hashkit_hash_algorithm_t);
-
-#ifdef __cplusplus
-}
-#endif
diff --git a/include/libhashkit-1/hashkit.h b/include/libhashkit-1/hashkit.h
deleted file mode 100644 (file)
index 5e01939..0000000
+++ /dev/null
@@ -1,82 +0,0 @@
-/*
-    +--------------------------------------------------------------------+
-    | libmemcached - 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 Michael Wallner   <mike@php.net>                |
-    +--------------------------------------------------------------------+
-*/
-
-#pragma once
-
-#if !defined(__cplusplus)
-#  include <stdbool.h>
-#  include <inttypes.h>
-#else
-#  include <cinttypes>
-#endif
-#include <sys/types.h>
-
-#include <libhashkit-1/visibility.h>
-#include <libhashkit-1/configure.h>
-#include <libhashkit-1/types.h>
-#include <libhashkit-1/has.h>
-#include <libhashkit-1/algorithm.h>
-#include <libhashkit-1/behavior.h>
-#include <libhashkit-1/digest.h>
-#include <libhashkit-1/function.h>
-#include <libhashkit-1/str_algorithm.h>
-#include <libhashkit-1/strerror.h>
-#include <libhashkit-1/string.h>
-
-struct hashkit_st {
-  struct hashkit_function_st {
-    hashkit_hash_fn function;
-    void *context;
-  } base_hash, distribution_hash;
-
-  struct {
-    bool is_base_same_distributed : 1;
-  } flags;
-
-  struct {
-    bool is_allocated : 1;
-  } options;
-
-  void *_key;
-};
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-HASHKIT_API
-hashkit_st *hashkit_create(hashkit_st *hash);
-
-HASHKIT_API
-hashkit_st *hashkit_clone(hashkit_st *destination, const hashkit_st *ptr);
-
-HASHKIT_API
-bool hashkit_compare(const hashkit_st *first, const hashkit_st *second);
-
-HASHKIT_API
-void hashkit_free(hashkit_st *hash);
-
-HASHKIT_API
-hashkit_string_st *hashkit_encrypt(hashkit_st *, const char *source, size_t source_length);
-
-HASHKIT_API
-hashkit_string_st *hashkit_decrypt(hashkit_st *, const char *source, size_t source_length);
-
-HASHKIT_API
-bool hashkit_key(hashkit_st *, const char *key, const size_t key_length);
-
-#ifdef __cplusplus
-} // extern "C"
-#endif
diff --git a/include/libhashkit-1/hashkit.hpp b/include/libhashkit-1/hashkit.hpp
deleted file mode 100644 (file)
index c178ecc..0000000
+++ /dev/null
@@ -1,56 +0,0 @@
-/*
-    +--------------------------------------------------------------------+
-    | libmemcached - 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 Michael Wallner   <mike@php.net>                |
-    +--------------------------------------------------------------------+
-*/
-
-#pragma once
-
-#include <libhashkit-1/hashkit.h>
-#include <string>
-
-class Hashkit {
-public:
-  Hashkit() { hashkit_create(&self); }
-
-  Hashkit(const Hashkit &source) { hashkit_clone(&self, &source.self); }
-
-  Hashkit &operator=(const Hashkit &source) {
-    hashkit_free(&self);
-    hashkit_clone(&self, &source.self);
-
-    return *this;
-  }
-
-  friend bool operator==(const Hashkit &left, const Hashkit &right) {
-    return hashkit_compare(&left.self, &right.self);
-  }
-
-  uint32_t digest(std::string &str) { return hashkit_digest(&self, str.c_str(), str.length()); }
-
-  uint32_t digest(const char *key, size_t key_length) {
-    return hashkit_digest(&self, key, key_length);
-  }
-
-  hashkit_return_t set_function(hashkit_hash_algorithm_t hash_algorithm) {
-    return hashkit_set_function(&self, hash_algorithm);
-  }
-
-  hashkit_return_t set_distribution_function(hashkit_hash_algorithm_t hash_algorithm) {
-    return hashkit_set_distribution_function(&self, hash_algorithm);
-  }
-
-  ~Hashkit() { hashkit_free(&self); }
-
-private:
-  hashkit_st self;
-};
diff --git a/include/libhashkit-1/str_algorithm.h b/include/libhashkit-1/str_algorithm.h
deleted file mode 100644 (file)
index fec3f9f..0000000
+++ /dev/null
@@ -1,27 +0,0 @@
-/*
-    +--------------------------------------------------------------------+
-    | libmemcached - 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 Michael Wallner   <mike@php.net>                |
-    +--------------------------------------------------------------------+
-*/
-
-#pragma once
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-HASHKIT_API
-const char *libhashkit_string_hash(hashkit_hash_algorithm_t type);
-
-#ifdef __cplusplus
-}
-#endif
diff --git a/include/libhashkit-1/strerror.h b/include/libhashkit-1/strerror.h
deleted file mode 100644 (file)
index 972e30c..0000000
+++ /dev/null
@@ -1,27 +0,0 @@
-/*
-    +--------------------------------------------------------------------+
-    | libmemcached - 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 Michael Wallner   <mike@php.net>                |
-    +--------------------------------------------------------------------+
-*/
-
-#pragma once
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-HASHKIT_API
-const char *hashkit_strerror(hashkit_st *ptr, hashkit_return_t rc);
-
-#ifdef __cplusplus
-}
-#endif
diff --git a/include/libhashkit-1/string.h b/include/libhashkit-1/string.h
deleted file mode 100644 (file)
index 69df49b..0000000
+++ /dev/null
@@ -1,37 +0,0 @@
-/*
-    +--------------------------------------------------------------------+
-    | libmemcached - 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 Michael Wallner   <mike@php.net>                |
-    +--------------------------------------------------------------------+
-*/
-
-#pragma once
-
-#ifdef __cplusplus
-struct hashkit_string_st;
-#endif
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-HASHKIT_API
-void hashkit_string_free(hashkit_string_st *ptr);
-
-HASHKIT_API
-size_t hashkit_string_length(const hashkit_string_st *self);
-
-HASHKIT_API
-const char *hashkit_string_c_str(const hashkit_string_st *self);
-
-#ifdef __cplusplus
-} // extern "C"
-#endif
diff --git a/include/libhashkit-1/types.h b/include/libhashkit-1/types.h
deleted file mode 100644 (file)
index fec60ce..0000000
+++ /dev/null
@@ -1,72 +0,0 @@
-/*
-    +--------------------------------------------------------------------+
-    | libmemcached - 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 Michael Wallner   <mike@php.net>                |
-    +--------------------------------------------------------------------+
-*/
-
-#pragma once
-
-typedef enum {
-  HASHKIT_SUCCESS,
-  HASHKIT_FAILURE,
-  HASHKIT_MEMORY_ALLOCATION_FAILURE,
-  HASHKIT_INVALID_HASH,
-  HASHKIT_INVALID_ARGUMENT,
-  HASHKIT_MAXIMUM_RETURN /* Always add new error code before */
-} hashkit_return_t;
-
-static inline bool hashkit_success(const hashkit_return_t rc) {
-  return (rc == HASHKIT_SUCCESS);
-}
-
-static inline bool hashkit_failed(const hashkit_return_t rc) {
-  return (rc != HASHKIT_SUCCESS);
-}
-
-typedef enum {
-  HASHKIT_HASH_DEFAULT = 0, // hashkit_one_at_a_time()
-  HASHKIT_HASH_MD5,
-  HASHKIT_HASH_CRC,
-  HASHKIT_HASH_FNV1_64,
-  HASHKIT_HASH_FNV1A_64,
-  HASHKIT_HASH_FNV1_32,
-  HASHKIT_HASH_FNV1A_32,
-  HASHKIT_HASH_HSIEH,
-  HASHKIT_HASH_MURMUR,
-  HASHKIT_HASH_JENKINS,
-  HASHKIT_HASH_MURMUR3,
-  HASHKIT_HASH_CUSTOM,
-  HASHKIT_HASH_MAX
-} hashkit_hash_algorithm_t;
-
-/**
- * Hash distributions that are available to use.
- */
-typedef enum {
-  HASHKIT_DISTRIBUTION_MODULA,
-  HASHKIT_DISTRIBUTION_RANDOM,
-  HASHKIT_DISTRIBUTION_KETAMA,
-  HASHKIT_DISTRIBUTION_MAX /* Always add new values before this. */
-} hashkit_distribution_t;
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-typedef struct hashkit_st hashkit_st;
-typedef struct hashkit_string_st hashkit_string_st;
-
-typedef uint32_t (*hashkit_hash_fn)(const char *key, size_t key_length, void *context);
-
-#ifdef __cplusplus
-}
-#endif
diff --git a/include/libhashkit-1/visibility.h b/include/libhashkit-1/visibility.h
deleted file mode 100644 (file)
index 74f4e20..0000000
+++ /dev/null
@@ -1,48 +0,0 @@
-/*
-    +--------------------------------------------------------------------+
-    | libmemcached - 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 Michael Wallner   <mike@php.net>                |
-    +--------------------------------------------------------------------+
-*/
-
-#pragma once
-
-/**
- *
- * HASHKIT_API is used for the public API symbols. It either DLL imports or
- * DLL exports (or does nothing for static build).
- *
- * HASHKIT_LOCAL is used for non-api symbols.
- */
-
-#if defined(BUILDING_HASHKIT)
-#  if defined(HAVE_VISIBILITY) && HAVE_VISIBILITY
-#    define HASHKIT_API   __attribute__((visibility("default")))
-#    define HASHKIT_LOCAL __attribute__((visibility("hidden")))
-#  elif defined(__SUNPRO_C) && (__SUNPRO_C >= 0x550)
-#    define HASHKIT_API   __global
-#    define HASHKIT_LOCAL __hidden
-#  elif defined(_MSC_VER)
-#    define HASHKIT_API extern __declspec(dllexport)
-#    define HASHKIT_LOCAL
-#  else
-#    define HASHKIT_API
-#    define HASHKIT_LOCAL
-#  endif /* defined(HAVE_VISIBILITY) */
-#else    /* defined(BUILDING_HASHKIT) */
-#  if defined(_MSC_VER)
-#    define HASHKIT_API extern __declspec(dllimport)
-#    define HASHKIT_LOCAL
-#  else
-#    define HASHKIT_API
-#    define HASHKIT_LOCAL
-#  endif /* defined(_MSC_VER) */
-#endif   /* defined(BUILDING_HASHKIT) */
diff --git a/include/libmemcached-1.0 b/include/libmemcached-1.0
deleted file mode 120000 (symlink)
index ad6872d..0000000
+++ /dev/null
@@ -1 +0,0 @@
-libmemcached-1
\ No newline at end of file
diff --git a/include/libmemcached-1.0/CMakeLists.txt b/include/libmemcached-1.0/CMakeLists.txt
new file mode 100644 (file)
index 0000000..c9b4f7c
--- /dev/null
@@ -0,0 +1,51 @@
+
+add_subdirectory(struct)
+add_subdirectory(types)
+
+install_public_headers(
+        libmemcached-1.0
+
+        @configure.h
+        alloc.h
+        allocators.h
+        analyze.h
+        auto.h
+        basic_string.h
+        behavior.h
+        callback.h
+        callbacks.h
+        defaults.h
+        delete.h
+        deprecated_types.h
+        dump.h
+        encoding_key.h
+        error.h
+        exception.hpp
+        exist.h
+        fetch.h
+        flush_buffers.h
+        flush.h
+        get.h
+        hash.h
+        limits.h
+        memcached.h
+        memcached.hpp
+        options.h
+        parse.h
+        platform.h
+        quit.h
+        result.h
+        return.h
+        sasl.h
+        server.h
+        server_list.h
+        stats.h
+        storage.h
+        strerror.h
+        touch.h
+        triggers.h
+        types.h
+        verbosity.h
+        version.h
+        visibility.h
+        )
diff --git a/include/libmemcached-1.0/alloc.h b/include/libmemcached-1.0/alloc.h
new file mode 100644 (file)
index 0000000..23bc5cb
--- /dev/null
@@ -0,0 +1,34 @@
+/*
+    +--------------------------------------------------------------------+
+    | libmemcached - 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 Michael Wallner   <mike@php.net>                |
+    +--------------------------------------------------------------------+
+*/
+
+#pragma once
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/**
+  Memory allocation functions.
+*/
+typedef void (*memcached_free_fn)(const memcached_st *ptr, void *mem, void *context);
+typedef void *(*memcached_malloc_fn)(const memcached_st *ptr, const size_t size, void *context);
+typedef void *(*memcached_realloc_fn)(const memcached_st *ptr, void *mem, const size_t size,
+                                      void *context);
+typedef void *(*memcached_calloc_fn)(const memcached_st *ptr, size_t nelem, const size_t elsize,
+                                     void *context);
+
+#ifdef __cplusplus
+}
+#endif
diff --git a/include/libmemcached-1.0/allocators.h b/include/libmemcached-1.0/allocators.h
new file mode 100644 (file)
index 0000000..c473e72
--- /dev/null
@@ -0,0 +1,39 @@
+/*
+    +--------------------------------------------------------------------+
+    | libmemcached - 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 Michael Wallner   <mike@php.net>                |
+    +--------------------------------------------------------------------+
+*/
+
+#pragma once
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+LIBMEMCACHED_API
+memcached_return_t memcached_set_memory_allocators(memcached_st *ptr,
+                                                   memcached_malloc_fn mem_malloc,
+                                                   memcached_free_fn mem_free,
+                                                   memcached_realloc_fn mem_realloc,
+                                                   memcached_calloc_fn mem_calloc, void *context);
+
+LIBMEMCACHED_API
+void memcached_get_memory_allocators(const memcached_st *ptr, memcached_malloc_fn *mem_malloc,
+                                     memcached_free_fn *mem_free, memcached_realloc_fn *mem_realloc,
+                                     memcached_calloc_fn *mem_calloc);
+
+LIBMEMCACHED_API
+void *memcached_get_memory_allocators_context(const memcached_st *ptr);
+
+#ifdef __cplusplus
+}
+#endif
diff --git a/include/libmemcached-1.0/analyze.h b/include/libmemcached-1.0/analyze.h
new file mode 100644 (file)
index 0000000..a5c9d45
--- /dev/null
@@ -0,0 +1,33 @@
+/*
+    +--------------------------------------------------------------------+
+    | libmemcached - 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 Michael Wallner   <mike@php.net>                |
+    +--------------------------------------------------------------------+
+*/
+
+#include "libmemcached-1.0/struct/analysis.h"
+
+#pragma once
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+LIBMEMCACHED_API
+memcached_analysis_st *memcached_analyze(memcached_st *memc, memcached_stat_st *memc_stat,
+                                         memcached_return_t *error);
+
+LIBMEMCACHED_API
+void memcached_analyze_free(memcached_analysis_st *);
+
+#ifdef __cplusplus
+}
+#endif
diff --git a/include/libmemcached-1.0/auto.h b/include/libmemcached-1.0/auto.h
new file mode 100644 (file)
index 0000000..ca1896e
--- /dev/null
@@ -0,0 +1,67 @@
+/*
+    +--------------------------------------------------------------------+
+    | libmemcached - 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 Michael Wallner   <mike@php.net>                |
+    +--------------------------------------------------------------------+
+*/
+
+#pragma once
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+LIBMEMCACHED_API
+memcached_return_t memcached_increment(memcached_st *ptr, const char *key, size_t key_length,
+                                       uint32_t offset, uint64_t *value);
+LIBMEMCACHED_API
+memcached_return_t memcached_decrement(memcached_st *ptr, const char *key, size_t key_length,
+                                       uint32_t offset, uint64_t *value);
+
+LIBMEMCACHED_API
+memcached_return_t memcached_increment_by_key(memcached_st *ptr, const char *group_key,
+                                              size_t group_key_length, const char *key,
+                                              size_t key_length, uint64_t offset, uint64_t *value);
+
+LIBMEMCACHED_API
+memcached_return_t memcached_decrement_by_key(memcached_st *ptr, const char *group_key,
+                                              size_t group_key_length, const char *key,
+                                              size_t key_length, uint64_t offset, uint64_t *value);
+
+LIBMEMCACHED_API
+memcached_return_t memcached_increment_with_initial(memcached_st *ptr, const char *key,
+                                                    size_t key_length, uint64_t offset,
+                                                    uint64_t initial, time_t expiration,
+                                                    uint64_t *value);
+
+LIBMEMCACHED_API
+memcached_return_t memcached_decrement_with_initial(memcached_st *ptr, const char *key,
+                                                    size_t key_length, uint64_t offset,
+                                                    uint64_t initial, time_t expiration,
+                                                    uint64_t *value);
+
+LIBMEMCACHED_API
+memcached_return_t memcached_increment_with_initial_by_key(memcached_st *ptr, const char *group_key,
+                                                           size_t group_key_length, const char *key,
+                                                           size_t key_length, uint64_t offset,
+                                                           uint64_t initial, time_t expiration,
+                                                           uint64_t *value);
+
+LIBMEMCACHED_API
+memcached_return_t memcached_decrement_with_initial_by_key(memcached_st *ptr, const char *group_key,
+                                                           size_t group_key_length, const char *key,
+                                                           size_t key_length, uint64_t offset,
+                                                           uint64_t initial, time_t expiration,
+                                                           uint64_t *value);
+
+#ifdef __cplusplus
+}
+#endif
diff --git a/include/libmemcached-1.0/basic_string.h b/include/libmemcached-1.0/basic_string.h
new file mode 100644 (file)
index 0000000..27b160c
--- /dev/null
@@ -0,0 +1,33 @@
+/*
+    +--------------------------------------------------------------------+
+    | libmemcached - 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 Michael Wallner   <mike@php.net>                |
+    +--------------------------------------------------------------------+
+*/
+
+#pragma once
+
+// No assumptions of NULL should be made
+
+struct memcached_string_t {
+  const char *c_str;
+  size_t size;
+};
+
+#define memcached_size(X)         (X).size;
+#define memcached_c_str(X)        (X).c_str;
+#define memcached_string_param(X) (X).c_str, (X).size
+
+#ifdef __cplusplus
+#  define memcached_string_printf(X) int((X).size), (X).c_str
+#else
+#  define memcached_string_printf(X) (int) ((X).size), (X).c_str
+#endif
diff --git a/include/libmemcached-1.0/behavior.h b/include/libmemcached-1.0/behavior.h
new file mode 100644 (file)
index 0000000..42864b4
--- /dev/null
@@ -0,0 +1,62 @@
+/*
+    +--------------------------------------------------------------------+
+    | libmemcached - 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 Michael Wallner   <mike@php.net>                |
+    +--------------------------------------------------------------------+
+*/
+
+#pragma once
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+LIBMEMCACHED_API
+memcached_return_t memcached_behavior_set(memcached_st *ptr, const memcached_behavior_t flag,
+                                          uint64_t data);
+
+LIBMEMCACHED_API
+uint64_t memcached_behavior_get(memcached_st *ptr, const memcached_behavior_t flag);
+
+LIBMEMCACHED_API
+memcached_return_t memcached_behavior_set_distribution(memcached_st *ptr,
+                                                       memcached_server_distribution_t type);
+
+LIBMEMCACHED_API
+memcached_server_distribution_t memcached_behavior_get_distribution(memcached_st *ptr);
+
+LIBMEMCACHED_API
+memcached_return_t memcached_behavior_set_key_hash(memcached_st *ptr, memcached_hash_t type);
+
+LIBMEMCACHED_API
+memcached_hash_t memcached_behavior_get_key_hash(memcached_st *ptr);
+
+LIBMEMCACHED_API
+memcached_return_t memcached_behavior_set_distribution_hash(memcached_st *ptr,
+                                                            memcached_hash_t type);
+
+LIBMEMCACHED_API
+memcached_hash_t memcached_behavior_get_distribution_hash(memcached_st *ptr);
+
+LIBMEMCACHED_API
+const char *libmemcached_string_behavior(const memcached_behavior_t flag);
+
+LIBMEMCACHED_API
+const char *libmemcached_string_distribution(const memcached_server_distribution_t flag);
+
+LIBMEMCACHED_API
+memcached_return_t memcached_bucket_set(memcached_st *self, const uint32_t *host_map,
+                                        const uint32_t *forward_map, const uint32_t buckets,
+                                        const uint32_t replicas);
+
+#ifdef __cplusplus
+}
+#endif
diff --git a/include/libmemcached-1.0/callback.h b/include/libmemcached-1.0/callback.h
new file mode 100644 (file)
index 0000000..2adef8e
--- /dev/null
@@ -0,0 +1,31 @@
+/*
+    +--------------------------------------------------------------------+
+    | libmemcached - 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 Michael Wallner   <mike@php.net>                |
+    +--------------------------------------------------------------------+
+*/
+
+#pragma once
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+LIBMEMCACHED_API
+memcached_return_t memcached_callback_set(memcached_st *ptr, const memcached_callback_t flag,
+                                          const void *data);
+LIBMEMCACHED_API
+void *memcached_callback_get(memcached_st *ptr, const memcached_callback_t flag,
+                             memcached_return_t *error);
+
+#ifdef __cplusplus
+}
+#endif
diff --git a/include/libmemcached-1.0/callbacks.h b/include/libmemcached-1.0/callbacks.h
new file mode 100644 (file)
index 0000000..4c578ac
--- /dev/null
@@ -0,0 +1,34 @@
+/*
+    +--------------------------------------------------------------------+
+    | libmemcached - 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 Michael Wallner   <mike@php.net>                |
+    +--------------------------------------------------------------------+
+*/
+
+#pragma once
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+typedef memcached_return_t (*memcached_execute_fn)(const memcached_st *ptr,
+                                                   memcached_result_st *result, void *context);
+typedef memcached_return_t (*memcached_server_fn)(const memcached_st *ptr,
+                                                  const memcached_instance_st *server,
+                                                  void *context);
+typedef memcached_return_t (*memcached_stat_fn)(const memcached_instance_st *server,
+                                                const char *key, size_t key_length,
+                                                const char *value, size_t value_length,
+                                                void *context);
+
+#ifdef __cplusplus
+}
+#endif
diff --git a/include/libmemcached-1.0/configure.h.in b/include/libmemcached-1.0/configure.h.in
new file mode 100644 (file)
index 0000000..dfa55eb
--- /dev/null
@@ -0,0 +1,31 @@
+/*
+    +--------------------------------------------------------------------+
+    | libmemcached - 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 Michael Wallner   <mike@php.net>                |
+    +--------------------------------------------------------------------+
+*/
+
+#pragma once
+
+#cmakedefine01 LIBMEMCACHED_ENABLE_DEPRECATED
+#cmakedefine01 LIBMEMCACHED_WITH_SASL_SUPPORT
+
+#cmakedefine HAVE_VISIBILITY 1
+
+#cmakedefine HAVE_NETDB_H 1
+
+#cmakedefine HAVE_IN_PORT_T 1
+#cmakedefine HAVE_PID_T 1
+#cmakedefine HAVE_SSIZE_T 1
+
+#define LIBMEMCACHED_VERSION_STRING "@LIBMEMCACHED_VERSION@"
+#define LIBMEMCACHED_VERSION_HEX    @LIBMEMCACHED_VERSION_HEX@
+
diff --git a/include/libmemcached-1.0/defaults.h b/include/libmemcached-1.0/defaults.h
new file mode 100644 (file)
index 0000000..3ce5667
--- /dev/null
@@ -0,0 +1,34 @@
+/*
+    +--------------------------------------------------------------------+
+    | libmemcached - 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 Michael Wallner   <mike@php.net>                |
+    +--------------------------------------------------------------------+
+*/
+
+#pragma once
+
+/* Public defines */
+#define MEMCACHED_DEFAULT_PORT             11211
+#define MEMCACHED_DEFAULT_PORT_STRING      "11211"
+#define MEMCACHED_POINTS_PER_SERVER        100
+#define MEMCACHED_POINTS_PER_SERVER_KETAMA 160
+#define MEMCACHED_CONTINUUM_SIZE \
+  MEMCACHED_POINTS_PER_SERVER * 100 /* This would then set max hosts to 100 */
+#define MEMCACHED_STRIDE                  4
+#define MEMCACHED_DEFAULT_TIMEOUT         5000
+#define MEMCACHED_DEFAULT_CONNECT_TIMEOUT 4000
+#define MEMCACHED_CONTINUUM_ADDITION \
+  10 /* How many extra slots we should build for in the continuum */
+#define MEMCACHED_EXPIRATION_NOT_ADD           0xffffffffU
+#define MEMCACHED_SERVER_FAILURE_LIMIT         5
+#define MEMCACHED_SERVER_FAILURE_RETRY_TIMEOUT 2
+#define MEMCACHED_SERVER_FAILURE_DEAD_TIMEOUT  0
+#define MEMCACHED_SERVER_TIMEOUT_LIMIT         0
diff --git a/include/libmemcached-1.0/delete.h b/include/libmemcached-1.0/delete.h
new file mode 100644 (file)
index 0000000..8064506
--- /dev/null
@@ -0,0 +1,33 @@
+/*
+    +--------------------------------------------------------------------+
+    | libmemcached - 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 Michael Wallner   <mike@php.net>                |
+    +--------------------------------------------------------------------+
+*/
+
+#pragma once
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+LIBMEMCACHED_API
+memcached_return_t memcached_delete(memcached_st *ptr, const char *key, size_t key_length,
+                                    time_t expiration);
+
+LIBMEMCACHED_API
+memcached_return_t memcached_delete_by_key(memcached_st *ptr, const char *group_key,
+                                           size_t group_key_length, const char *key,
+                                           size_t key_length, time_t expiration);
+
+#ifdef __cplusplus
+}
+#endif
diff --git a/include/libmemcached-1.0/deprecated_types.h b/include/libmemcached-1.0/deprecated_types.h
new file mode 100644 (file)
index 0000000..cae0173
--- /dev/null
@@ -0,0 +1,34 @@
+/*
+    +--------------------------------------------------------------------+
+    | libmemcached - 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 Michael Wallner   <mike@php.net>                |
+    +--------------------------------------------------------------------+
+*/
+
+#pragma once
+
+/**
+  @note The following definitions are just here for backwards compatibility.
+*/
+typedef memcached_return_t memcached_return;
+typedef memcached_server_distribution_t memcached_server_distribution;
+typedef memcached_behavior_t memcached_behavior;
+typedef memcached_callback_t memcached_callback;
+typedef memcached_hash_t memcached_hash;
+typedef memcached_connection_t memcached_connection;
+typedef memcached_clone_fn memcached_clone_func;
+typedef memcached_cleanup_fn memcached_cleanup_func;
+typedef memcached_execute_fn memcached_execute_function;
+typedef memcached_server_fn memcached_server_function;
+typedef memcached_trigger_key_fn memcached_trigger_key;
+typedef memcached_trigger_delete_key_fn memcached_trigger_delete_key;
+typedef memcached_dump_fn memcached_dump_func;
+typedef memcached_instance_st *memcached_server_instance_st;
diff --git a/include/libmemcached-1.0/dump.h b/include/libmemcached-1.0/dump.h
new file mode 100644 (file)
index 0000000..96ed43f
--- /dev/null
@@ -0,0 +1,28 @@
+/*
+    +--------------------------------------------------------------------+
+    | libmemcached - 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 Michael Wallner   <mike@php.net>                |
+    +--------------------------------------------------------------------+
+*/
+
+#pragma once
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+LIBMEMCACHED_API
+memcached_return_t memcached_dump(memcached_st *ptr, memcached_dump_fn *function, void *context,
+                                  uint32_t number_of_callbacks);
+
+#ifdef __cplusplus
+}
+#endif
diff --git a/include/libmemcached-1.0/encoding_key.h b/include/libmemcached-1.0/encoding_key.h
new file mode 100644 (file)
index 0000000..7028945
--- /dev/null
@@ -0,0 +1,27 @@
+/*
+    +--------------------------------------------------------------------+
+    | libmemcached - 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 Michael Wallner   <mike@php.net>                |
+    +--------------------------------------------------------------------+
+*/
+
+#pragma once
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+LIBMEMCACHED_API
+memcached_return_t memcached_set_encoding_key(memcached_st *, const char *str, size_t length);
+
+#ifdef __cplusplus
+}
+#endif
diff --git a/include/libmemcached-1.0/error.h b/include/libmemcached-1.0/error.h
new file mode 100644 (file)
index 0000000..56eac9d
--- /dev/null
@@ -0,0 +1,45 @@
+/*
+    +--------------------------------------------------------------------+
+    | libmemcached - 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 Michael Wallner   <mike@php.net>                |
+    +--------------------------------------------------------------------+
+*/
+
+#pragma once
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+LIBMEMCACHED_API
+const char *memcached_error(const memcached_st *);
+
+LIBMEMCACHED_API
+const char *memcached_last_error_message(const memcached_st *);
+
+LIBMEMCACHED_API
+void memcached_error_print(const memcached_st *);
+
+LIBMEMCACHED_API
+memcached_return_t memcached_last_error(const memcached_st *);
+
+LIBMEMCACHED_API
+int memcached_last_error_errno(const memcached_st *);
+
+LIBMEMCACHED_API
+const char *memcached_server_error(const memcached_instance_st *ptr);
+
+LIBMEMCACHED_API
+memcached_return_t memcached_server_error_return(const memcached_instance_st *ptr);
+
+#ifdef __cplusplus
+} // extern "C"
+#endif
diff --git a/include/libmemcached-1.0/exception.hpp b/include/libmemcached-1.0/exception.hpp
new file mode 100644 (file)
index 0000000..d7d7481
--- /dev/null
@@ -0,0 +1,57 @@
+/*
+    +--------------------------------------------------------------------+
+    | libmemcached - 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 Michael Wallner   <mike@php.net>                |
+    +--------------------------------------------------------------------+
+*/
+
+#pragma once
+
+#include <stdexcept>
+#include <string>
+
+namespace memcache {
+class Exception : public std::runtime_error {
+public:
+  Exception(const std::string &msg, int in_errno)
+  : std::runtime_error(msg)
+  , _errno(in_errno) {}
+
+  Exception(const char *msg, int in_errno)
+  : std::runtime_error(std::string(msg))
+  , _errno(in_errno) {}
+
+  virtual ~Exception() throw() {}
+
+  int getErrno() const { return _errno; }
+
+private:
+  int _errno;
+};
+
+class Warning : public Exception {
+public:
+  Warning(const std::string &msg, int in_errno)
+  : Exception(msg, in_errno) {}
+  Warning(const char *msg, int in_errno)
+  : Exception(msg, in_errno) {}
+};
+
+class Error : public Exception {
+public:
+  Error(const std::string &msg, int in_errno)
+  : Exception(msg, in_errno) {}
+  Error(const char *msg, int in_errno)
+  : Exception(msg, in_errno) {}
+  virtual ~Error() throw() {}
+};
+
+} // namespace memcache
diff --git a/include/libmemcached-1.0/exist.h b/include/libmemcached-1.0/exist.h
new file mode 100644 (file)
index 0000000..7ec1e4b
--- /dev/null
@@ -0,0 +1,31 @@
+/*
+    +--------------------------------------------------------------------+
+    | libmemcached - 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 Michael Wallner   <mike@php.net>                |
+    +--------------------------------------------------------------------+
+*/
+
+#pragma once
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+LIBMEMCACHED_API
+memcached_return_t memcached_exist(memcached_st *memc, const char *key, size_t key_length);
+
+LIBMEMCACHED_API
+memcached_return_t memcached_exist_by_key(memcached_st *memc, const char *group_key,
+                                          size_t group_key_length, const char *key,
+                                          size_t key_length);
+#ifdef __cplusplus
+}
+#endif
diff --git a/include/libmemcached-1.0/fetch.h b/include/libmemcached-1.0/fetch.h
new file mode 100644 (file)
index 0000000..62a6c13
--- /dev/null
@@ -0,0 +1,28 @@
+/*
+    +--------------------------------------------------------------------+
+    | libmemcached - 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 Michael Wallner   <mike@php.net>                |
+    +--------------------------------------------------------------------+
+*/
+
+#pragma once
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+LIBMEMCACHED_API
+memcached_return_t memcached_fetch_execute(memcached_st *ptr, memcached_execute_fn *callback,
+                                           void *context, uint32_t number_of_callbacks);
+
+#ifdef __cplusplus
+}
+#endif
diff --git a/include/libmemcached-1.0/flush.h b/include/libmemcached-1.0/flush.h
new file mode 100644 (file)
index 0000000..cdf35a2
--- /dev/null
@@ -0,0 +1,27 @@
+/*
+    +--------------------------------------------------------------------+
+    | libmemcached - 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 Michael Wallner   <mike@php.net>                |
+    +--------------------------------------------------------------------+
+*/
+
+#pragma once
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+LIBMEMCACHED_API
+memcached_return_t memcached_flush(memcached_st *ptr, time_t expiration);
+
+#ifdef __cplusplus
+}
+#endif
diff --git a/include/libmemcached-1.0/flush_buffers.h b/include/libmemcached-1.0/flush_buffers.h
new file mode 100644 (file)
index 0000000..49df03c
--- /dev/null
@@ -0,0 +1,27 @@
+/*
+    +--------------------------------------------------------------------+
+    | libmemcached - 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 Michael Wallner   <mike@php.net>                |
+    +--------------------------------------------------------------------+
+*/
+
+#pragma once
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+LIBMEMCACHED_API
+memcached_return_t memcached_flush_buffers(memcached_st *mem);
+
+#ifdef __cplusplus
+}
+#endif
diff --git a/include/libmemcached-1.0/get.h b/include/libmemcached-1.0/get.h
new file mode 100644 (file)
index 0000000..db94dfc
--- /dev/null
@@ -0,0 +1,64 @@
+/*
+    +--------------------------------------------------------------------+
+    | libmemcached - 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 Michael Wallner   <mike@php.net>                |
+    +--------------------------------------------------------------------+
+*/
+
+#pragma once
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Public defines */
+LIBMEMCACHED_API
+char *memcached_get(memcached_st *ptr, const char *key, size_t key_length, size_t *value_length,
+                    uint32_t *flags, memcached_return_t *error);
+
+LIBMEMCACHED_API
+memcached_return_t memcached_mget(memcached_st *ptr, const char *const *keys,
+                                  const size_t *key_length, size_t number_of_keys);
+
+LIBMEMCACHED_API
+char *memcached_get_by_key(memcached_st *ptr, const char *group_key, size_t group_key_length,
+                           const char *key, size_t key_length, size_t *value_length,
+                           uint32_t *flags, memcached_return_t *error);
+
+LIBMEMCACHED_API
+memcached_return_t memcached_mget_by_key(memcached_st *ptr, const char *group_key,
+                                         size_t group_key_length, const char *const *keys,
+                                         const size_t *key_length, const size_t number_of_keys);
+
+LIBMEMCACHED_API
+char *memcached_fetch(memcached_st *ptr, char *key, size_t *key_length, size_t *value_length,
+                      uint32_t *flags, memcached_return_t *error);
+
+LIBMEMCACHED_API
+memcached_result_st *memcached_fetch_result(memcached_st *ptr, memcached_result_st *result,
+                                            memcached_return_t *error);
+
+LIBMEMCACHED_API
+memcached_return_t memcached_mget_execute(memcached_st *ptr, const char *const *keys,
+                                          const size_t *key_length, const size_t number_of_keys,
+                                          memcached_execute_fn *callback, void *context,
+                                          const uint32_t number_of_callbacks);
+
+LIBMEMCACHED_API
+memcached_return_t memcached_mget_execute_by_key(memcached_st *ptr, const char *group_key,
+                                                 size_t group_key_length, const char *const *keys,
+                                                 const size_t *key_length, size_t number_of_keys,
+                                                 memcached_execute_fn *callback, void *context,
+                                                 const uint32_t number_of_callbacks);
+
+#ifdef __cplusplus
+}
+#endif
diff --git a/include/libmemcached-1.0/hash.h b/include/libmemcached-1.0/hash.h
new file mode 100644 (file)
index 0000000..d72e679
--- /dev/null
@@ -0,0 +1,44 @@
+/*
+    +--------------------------------------------------------------------+
+    | libmemcached - 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 Michael Wallner   <mike@php.net>                |
+    +--------------------------------------------------------------------+
+*/
+
+#pragma once
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* The two public hash bits */
+LIBMEMCACHED_API
+uint32_t memcached_generate_hash_value(const char *key, size_t key_length,
+                                       memcached_hash_t hash_algorithm);
+
+LIBMEMCACHED_API
+const hashkit_st *memcached_get_hashkit(const memcached_st *ptr);
+
+LIBMEMCACHED_API
+memcached_return_t memcached_set_hashkit(memcached_st *ptr, hashkit_st *hashk);
+
+LIBMEMCACHED_API
+uint32_t memcached_generate_hash(const memcached_st *ptr, const char *key, size_t key_length);
+
+LIBMEMCACHED_API
+void memcached_autoeject(memcached_st *ptr);
+
+LIBMEMCACHED_API
+const char *libmemcached_string_hash(memcached_hash_t type);
+
+#ifdef __cplusplus
+}
+#endif
diff --git a/include/libmemcached-1.0/limits.h b/include/libmemcached-1.0/limits.h
new file mode 100644 (file)
index 0000000..f4d0ed6
--- /dev/null
@@ -0,0 +1,28 @@
+/*
+    +--------------------------------------------------------------------+
+    | libmemcached - 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 Michael Wallner   <mike@php.net>                |
+    +--------------------------------------------------------------------+
+*/
+
+#pragma once
+
+#define MEMCACHED_MAX_BUFFER    8196
+#define MEMCACHED_MAX_KEY       251 /* We add one to have it null terminated */
+#define MEMCACHED_MAX_NAMESPACE 128
+
+#define MEMCACHED_MAX_HOST_SORT_LENGTH       86 /* Used for Ketama */
+#define MEMCACHED_MAX_INTEGER_DISPLAY_LENGTH 20
+#define MEMCACHED_VERSION_STRING_LENGTH      24
+
+/* legacy */
+#define MEMCACHED_MAXIMUM_INTEGER_DISPLAY_LENGTH MEMCACHED_MAX_INTEGER_DISPLAY_LENGTH
+#define MEMCACHED_PREFIX_KEY_MAX_SIZE            MEMCACHED_MAX_NAMESPACE
diff --git a/include/libmemcached-1.0/memcached.h b/include/libmemcached-1.0/memcached.h
new file mode 100644 (file)
index 0000000..e3eac4e
--- /dev/null
@@ -0,0 +1,130 @@
+/*
+    +--------------------------------------------------------------------+
+    | libmemcached - 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 Michael Wallner   <mike@php.net>                |
+    +--------------------------------------------------------------------+
+*/
+
+#pragma once
+
+#include "libmemcached-1.0/configure.h"
+#include "libmemcached-1.0/visibility.h"
+#include "libmemcached-1.0/platform.h"
+
+#include "libmemcached-1.0/limits.h"
+#include "libmemcached-1.0/defaults.h"
+
+#include "libmemcached-1.0/types/behavior.h"
+#include "libmemcached-1.0/types/callback.h"
+#include "libmemcached-1.0/types/connection.h"
+#include "libmemcached-1.0/types/hash.h"
+#include "libmemcached-1.0/types/return.h"
+#include "libmemcached-1.0/types/server_distribution.h"
+
+#include "libmemcached-1.0/return.h"
+
+#include "libmemcached-1.0/types.h"
+#include "libmemcached-1.0/callbacks.h"
+#include "libmemcached-1.0/alloc.h"
+#include "libmemcached-1.0/triggers.h"
+
+#include "libhashkit-1.0/hashkit.h"
+
+#include "libmemcached-1.0/struct/callback.h"
+#include "libmemcached-1.0/struct/string.h"
+#include "libmemcached-1.0/struct/result.h"
+#include "libmemcached-1.0/struct/allocator.h"
+#include "libmemcached-1.0/struct/sasl.h"
+#include "libmemcached-1.0/struct/memcached.h"
+#include "libmemcached-1.0/struct/server.h"
+#include "libmemcached-1.0/struct/stat.h"
+
+#include "libmemcached-1.0/basic_string.h"
+#include "libmemcached-1.0/error.h"
+#include "libmemcached-1.0/stats.h"
+
+// Everything above this line must be in the order specified.
+#include "libmemcached-1.0/allocators.h"
+#include "libmemcached-1.0/analyze.h"
+#include "libmemcached-1.0/auto.h"
+#include "libmemcached-1.0/behavior.h"
+#include "libmemcached-1.0/callback.h"
+#include "libmemcached-1.0/delete.h"
+#include "libmemcached-1.0/dump.h"
+#include "libmemcached-1.0/encoding_key.h"
+#include "libmemcached-1.0/exist.h"
+#include "libmemcached-1.0/fetch.h"
+#include "libmemcached-1.0/flush.h"
+#include "libmemcached-1.0/flush_buffers.h"
+#include "libmemcached-1.0/get.h"
+#include "libmemcached-1.0/hash.h"
+#include "libmemcached-1.0/options.h"
+#include "libmemcached-1.0/parse.h"
+#include "libmemcached-1.0/quit.h"
+#include "libmemcached-1.0/result.h"
+#include "libmemcached-1.0/server.h"
+#include "libmemcached-1.0/server_list.h"
+#include "libmemcached-1.0/storage.h"
+#include "libmemcached-1.0/strerror.h"
+#include "libmemcached-1.0/touch.h"
+#include "libmemcached-1.0/verbosity.h"
+#include "libmemcached-1.0/version.h"
+#include "libmemcached-1.0/sasl.h"
+
+#include "libmemcached-1.0/deprecated_types.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+LIBMEMCACHED_API
+void memcached_servers_reset(memcached_st *ptr);
+
+LIBMEMCACHED_API
+memcached_st *memcached_create(memcached_st *ptr);
+
+LIBMEMCACHED_API
+memcached_st *memcached(const char *string, size_t string_length);
+
+LIBMEMCACHED_API
+void memcached_free(memcached_st *ptr);
+
+LIBMEMCACHED_API
+memcached_return_t memcached_reset(memcached_st *ptr);
+
+LIBMEMCACHED_API
+void memcached_reset_last_disconnected_server(memcached_st *ptr);
+
+LIBMEMCACHED_API
+memcached_st *memcached_clone(memcached_st *clone, const memcached_st *ptr);
+
+LIBMEMCACHED_API
+void *memcached_get_user_data(const memcached_st *ptr);
+
+LIBMEMCACHED_API
+void *memcached_set_user_data(memcached_st *ptr, void *data);
+
+LIBMEMCACHED_API
+memcached_return_t memcached_push(memcached_st *destination, const memcached_st *source);
+
+LIBMEMCACHED_API
+const memcached_instance_st *memcached_server_instance_by_position(const memcached_st *ptr,
+                                                                   uint32_t server_key);
+
+LIBMEMCACHED_API
+uint32_t memcached_server_count(const memcached_st *);
+
+LIBMEMCACHED_API
+uint64_t memcached_query_id(const memcached_st *);
+
+#ifdef __cplusplus
+} // extern "C"
+#endif
diff --git a/include/libmemcached-1.0/memcached.hpp b/include/libmemcached-1.0/memcached.hpp
new file mode 100644 (file)
index 0000000..aaeb4df
--- /dev/null
@@ -0,0 +1,677 @@
+/*
+    +--------------------------------------------------------------------+
+    | libmemcached - 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 Michael Wallner   <mike@php.net>                |
+    +--------------------------------------------------------------------+
+*/
+
+#pragma once
+
+#include "libmemcached-1.0/memcached.h"
+#if 0
+#  include "libmemcached/exception.hpp"
+#endif
+
+#include <cstring>
+#include <sstream>
+#include <string>
+#include <vector>
+#include <map>
+
+namespace memcache {
+
+/**
+ * This is the core memcached library (if later, other objects
+ * are needed, they will be created from this class).
+ */
+class Memcache {
+public:
+  Memcache() { memc_ = memcached(NULL, 0); }
+
+  Memcache(const std::string &config) { memc_ = memcached(config.c_str(), config.size()); }
+
+  Memcache(const std::string &hostname, in_port_t port) {
+    memc_ = memcached(NULL, 0);
+    if (memc_) {
+      memcached_server_add(memc_, hostname.c_str(), port);
+    }
+  }
+
+  Memcache(memcached_st *clone) { memc_ = memcached_clone(NULL, clone); }
+
+  Memcache(const Memcache &rhs) { memc_ = memcached_clone(NULL, rhs.getImpl()); }
+
+  Memcache &operator=(const Memcache &rhs) {
+    if (this != &rhs) {
+      memcached_free(memc_);
+      memc_ = memcached_clone(NULL, rhs.getImpl());
+    }
+
+    return *this;
+  }
+
+  ~Memcache() { memcached_free(memc_); }
+
+  /**
+   * Get the internal memcached_st *
+   */
+  const memcached_st *getImpl() const { return memc_; }
+
+  /**
+   * Return an error string for the given return structure.
+   *
+   * @param[in] rc a memcached_return_t structure
+   * @return error string corresponding to given return code in the library.
+   */
+  const std::string getError(memcached_return_t rc) const {
+    /* first parameter to strerror is unused */
+    return memcached_strerror(NULL, rc);
+  }
+
+  bool error(std::string &error_message) const {
+    if (memcached_failed(memcached_last_error(memc_))) {
+      error_message += memcached_last_error_message(memc_);
+      return true;
+    }
+
+    return false;
+  }
+
+  bool error() const {
+    if (memcached_failed(memcached_last_error(memc_))) {
+      return true;
+    }
+
+    return false;
+  }
+
+  bool error(memcached_return_t &arg) const {
+    arg = memcached_last_error(memc_);
+    return memcached_failed(arg);
+  }
+
+  bool setBehavior(memcached_behavior_t flag, uint64_t data) {
+    return (memcached_success(memcached_behavior_set(memc_, flag, data)));
+  }
+
+  uint64_t getBehavior(memcached_behavior_t flag) { return memcached_behavior_get(memc_, flag); }
+
+  /**
+   * Configure the memcache object
+   *
+   * @param[in] in_config configuration
+   * @return true on success; false otherwise
+   */
+  bool configure(const std::string &configuration) {
+    memcached_st *new_memc = memcached(configuration.c_str(), configuration.size());
+
+    if (new_memc) {
+      memcached_free(memc_);
+      memc_ = new_memc;
+
+      return true;
+    }
+
+    return false;
+  }
+
+  /**
+   * Add a server to the list of memcached servers to use.
+   *
+   * @param[in] server_name name of the server to add
+   * @param[in] port port number of server to add
+   * @return true on success; false otherwise
+   */
+  bool addServer(const std::string &server_name, in_port_t port) {
+    return memcached_success(memcached_server_add(memc_, server_name.c_str(), port));
+  }
+
+  /**
+   * Remove a server from the list of memcached servers to use.
+   *
+   * @param[in] server_name name of the server to remove
+   * @param[in] port port number of server to remove
+   * @return true on success; false otherwise
+   */
+  bool removeServer(const std::string &server_name, in_port_t port) {
+    std::string tmp_str;
+    std::ostringstream strstm;
+    tmp_str.append(",");
+    tmp_str.append(server_name);
+    tmp_str.append(":");
+    strstm << port;
+    tmp_str.append(strstm.str());
+
+    // memcached_return_t rc= memcached_server_remove(server);
+
+    return false;
+  }
+
+  /**
+   * Fetches an individual value from the server. mget() must always
+   * be called before using this method.
+   *
+   * @param[in] key key of object to fetch
+   * @param[out] ret_val store returned object in this vector
+   * @return a memcached return structure
+   */
+  memcached_return_t fetch(std::string &key, std::vector<char> &ret_val, uint32_t &flags,
+                           uint64_t &cas_value) {
+    memcached_return_t rc;
+
+    memcached_result_st *result;
+    if ((result = memcached_fetch_result(memc_, NULL, &rc))) {
+      // Key
+      key.assign(memcached_result_key_value(result), memcached_result_key_length(result));
+
+      // Actual value, null terminated
+      ret_val.reserve(memcached_result_length(result) + 1);
+      ret_val.assign(memcached_result_value(result),
+                     memcached_result_value(result) + memcached_result_length(result) + 1);
+      ret_val.resize(memcached_result_length(result));
+
+      // Misc
+      flags = memcached_result_flags(result);
+      cas_value = memcached_result_cas(result);
+    }
+    memcached_result_free(result);
+
+    return rc;
+  }
+
+  memcached_return_t fetch(std::string &key, std::vector<char> &ret_val) {
+    uint32_t flags = 0;
+    uint64_t cas_value = 0;
+
+    return fetch(key, ret_val, flags, cas_value);
+  }
+
+  /**
+   * Fetches an individual value from the server.
+   *
+   * @param[in] key key of object whose value to get
+   * @param[out] ret_val object that is retrieved is stored in
+   *                     this vector
+   * @return true on success; false otherwise
+   */
+  bool get(const std::string &key, std::vector<char> &ret_val) {
+    uint32_t flags = 0;
+    memcached_return_t rc;
+    size_t value_length = 0;
+
+    char *value = memcached_get(memc_, key.c_str(), key.length(), &value_length, &flags, &rc);
+    if (value != NULL && ret_val.empty()) {
+      ret_val.reserve(value_length + 1); // Always provide null
+      ret_val.assign(value, value + value_length + 1);
+      ret_val.resize(value_length);
+      free(value);
+
+      return true;
+    }
+
+    return false;
+  }
+
+  /**
+   * Fetches an individual from a server which is specified by
+   * the master_key parameter that is used for determining which
+   * server an object was stored in if key partitioning was
+   * used for storage.
+   *
+   * @param[in] master_key key that specifies server object is stored on
+   * @param[in] key key of object whose value to get
+   * @param[out] ret_val object that is retrieved is stored in
+   *                     this vector
+   * @return true on success; false otherwise
+   */
+  bool getByKey(const std::string &master_key, const std::string &key, std::vector<char> &ret_val) {
+    uint32_t flags = 0;
+    memcached_return_t rc;
+    size_t value_length = 0;
+
+    char *value = memcached_get_by_key(memc_, master_key.c_str(), master_key.length(), key.c_str(),
+                                       key.length(), &value_length, &flags, &rc);
+    if (value) {
+      ret_val.reserve(value_length + 1); // Always provide null
+      ret_val.assign(value, value + value_length + 1);
+      ret_val.resize(value_length);
+      free(value);
+
+      return true;
+    }
+    return false;
+  }
+
+  /**
+   * Selects multiple keys at once. This method always
+   * works asynchronously.
+   *
+   * @param[in] keys vector of keys to select
+   * @return true if all keys are found
+   */
+  bool mget(const std::vector<std::string> &keys) {
+    std::vector<const char *> real_keys;
+    std::vector<size_t> key_len;
+    /*
+     * Construct an array which will contain the length
+     * of each of the strings in the input vector. Also, to
+     * interface with the memcached C API, we need to convert
+     * the vector of std::string's to a vector of char *.
+     */
+    real_keys.reserve(keys.size());
+    key_len.reserve(keys.size());
+
+    std::vector<std::string>::const_iterator it = keys.begin();
+
+    while (it != keys.end()) {
+      real_keys.push_back(const_cast<char *>((*it).c_str()));
+      key_len.push_back((*it).length());
+      ++it;
+    }
+
+    /*
+     * If the std::vector of keys is empty then we cannot
+     * call memcached_mget as we will get undefined behavior.
+     */
+    if (not real_keys.empty()) {
+      return memcached_success(memcached_mget(memc_, &real_keys[0], &key_len[0], real_keys.size()));
+    }
+
+    return false;
+  }
+
+  /**
+   * Writes an object to the server. If the object already exists, it will
+   * overwrite the existing object. This method always returns true
+   * when using non-blocking mode unless a network error occurs.
+   *
+   * @param[in] key key of object to write to server
+   * @param[in] value value of object to write to server
+   * @param[in] expiration time to keep the object stored in the server for
+   * @param[in] flags flags to store with the object
+   * @return true on succcess; false otherwise
+   */
+  bool set(const std::string &key, const std::vector<char> &value, time_t expiration,
+           uint32_t flags) {
+    memcached_return_t rc = memcached_set(memc_, key.c_str(), key.length(), value.data(),
+                                          value.size(), expiration, flags);
+    return memcached_success(rc);
+  }
+
+  bool set(const std::string &key, const char *value, const size_t value_length, time_t expiration,
+           uint32_t flags) {
+    memcached_return_t rc =
+        memcached_set(memc_, key.c_str(), key.length(), value, value_length, expiration, flags);
+    return memcached_success(rc);
+  }
+
+  /**
+   * Writes an object to a server specified by the master_key parameter.
+   * If the object already exists, it will overwrite the existing object.
+   *
+   * @param[in] master_key key that specifies server to write to
+   * @param[in] key key of object to write to server
+   * @param[in] value value of object to write to server
+   * @param[in] expiration time to keep the object stored in the server for
+   * @param[in] flags flags to store with the object
+   * @return true on succcess; false otherwise
+   */
+  bool setByKey(const std::string &master_key, const std::string &key,
+                const std::vector<char> &value, time_t expiration, uint32_t flags) {
+    return memcached_success(memcached_set_by_key(memc_, master_key.c_str(), master_key.length(),
+                                                  key.c_str(), key.length(), &value[0],
+                                                  value.size(), expiration, flags));
+  }
+
+  /**
+   * Writes a list of objects to the server. Objects are specified by
+   * 2 vectors - 1 vector of keys and 1 vector of values.
+   *
+   * @param[in] keys vector of keys of objects to write to server
+   * @param[in] values vector of values of objects to write to server
+   * @param[in] expiration time to keep the objects stored in server for
+   * @param[in] flags flags to store with the objects
+   * @return true on success; false otherwise
+   */
+  bool setAll(const std::vector<std::string> &keys, const std::vector<std::vector<char> *> &values,
+              time_t expiration, uint32_t flags) {
+    bool retval = true;
+    std::vector<std::string>::const_iterator key_it = keys.begin();
+    std::vector<std::vector<char> *>::const_iterator val_it = values.begin();
+    while (key_it != keys.end()) {
+      retval = set((*key_it), *(*val_it), expiration, flags);
+      if (retval == false) {
+        return retval;
+      }
+      ++key_it;
+      ++val_it;
+    }
+    return retval;
+  }
+
+  /**
+   * Writes a list of objects to the server. Objects are specified by
+   * a map of keys to values.
+   *
+   * @param[in] key_value_map map of keys and values to store in server
+   * @param[in] expiration time to keep the objects stored in server for
+   * @param[in] flags flags to store with the objects
+   * @return true on success; false otherwise
+   */
+  bool setAll(const std::map<const std::string, std::vector<char>> &key_value_map,
+              time_t expiration, uint32_t flags) {
+    std::map<const std::string, std::vector<char>>::const_iterator it = key_value_map.begin();
+
+    while (it != key_value_map.end()) {
+      if (!set(it->first, it->second, expiration, flags)) {
+        // We should tell the user what the key that failed was
+        return false;
+      }
+      ++it;
+    }
+
+    return true;
+  }
+
+  /**
+   * Increment the value of the object associated with the specified
+   * key by the offset given. The resulting value is saved in the value
+   * parameter.
+   *
+   * @param[in] key key of object in server whose value to increment
+   * @param[in] offset amount to increment object's value by
+   * @param[out] value store the result of the increment here
+   * @return true on success; false otherwise
+   */
+  bool increment(const std::string &key, uint32_t offset, uint64_t *value) {
+    return memcached_success(memcached_increment(memc_, key.c_str(), key.length(), offset, value));
+  }
+
+  /**
+   * Decrement the value of the object associated with the specified
+   * key by the offset given. The resulting value is saved in the value
+   * parameter.
+   *
+   * @param[in] key key of object in server whose value to decrement
+   * @param[in] offset amount to increment object's value by
+   * @param[out] value store the result of the decrement here
+   * @return true on success; false otherwise
+   */
+  bool decrement(const std::string &key, uint32_t offset, uint64_t *value) {
+    return memcached_success(memcached_decrement(memc_, key.c_str(), key.length(), offset, value));
+  }
+
+  /**
+   * Add an object with the specified key and value to the server. This
+   * function returns false if the object already exists on the server.
+   *
+   * @param[in] key key of object to add
+   * @param[in] value of object to add
+   * @return true on success; false otherwise
+   */
+  bool add(const std::string &key, const std::vector<char> &value) {
+    return memcached_success(
+        memcached_add(memc_, key.c_str(), key.length(), &value[0], value.size(), 0, 0));
+  }
+
+  /**
+   * Add an object with the specified key and value to the server. This
+   * function returns false if the object already exists on the server. The
+   * server to add the object to is specified by the master_key parameter.
+   *
+   * @param[in[ master_key key of server to add object to
+   * @param[in] key key of object to add
+   * @param[in] value of object to add
+   * @return true on success; false otherwise
+   */
+  bool addByKey(const std::string &master_key, const std::string &key,
+                const std::vector<char> &value) {
+    return memcached_success(memcached_add_by_key(memc_, master_key.c_str(), master_key.length(),
+                                                  key.c_str(), key.length(), &value[0],
+                                                  value.size(), 0, 0));
+  }
+
+  /**
+   * Replaces an object on the server. This method only succeeds
+   * if the object is already present on the server.
+   *
+   * @param[in] key key of object to replace
+   * @param[in[ value value to replace object with
+   * @return true on success; false otherwise
+   */
+  bool replace(const std::string &key, const std::vector<char> &value) {
+    return memcached_success(
+        memcached_replace(memc_, key.c_str(), key.length(), &value[0], value.size(), 0, 0));
+  }
+
+  /**
+   * Replaces an object on the server. This method only succeeds
+   * if the object is already present on the server. The server
+   * to replace the object on is specified by the master_key param.
+   *
+   * @param[in] master_key key of server to replace object on
+   * @param[in] key key of object to replace
+   * @param[in[ value value to replace object with
+   * @return true on success; false otherwise
+   */
+  bool replaceByKey(const std::string &master_key, const std::string &key,
+                    const std::vector<char> &value) {
+    return memcached_success(memcached_replace_by_key(memc_, master_key.c_str(),
+                                                      master_key.length(), key.c_str(),
+                                                      key.length(), &value[0], value.size(), 0, 0));
+  }
+
+  /**
+   * Places a segment of data before the last piece of data stored.
+   *
+   * @param[in] key key of object whose value we will prepend data to
+   * @param[in] value data to prepend to object's value
+   * @return true on success; false otherwise
+   */
+  bool prepend(const std::string &key, const std::vector<char> &value) {
+    return memcached_success(
+        memcached_prepend(memc_, key.c_str(), key.length(), &value[0], value.size(), 0, 0));
+  }
+
+  /**
+   * Places a segment of data before the last piece of data stored. The
+   * server on which the object where we will be prepending data is stored
+   * on is specified by the master_key parameter.
+   *
+   * @param[in] master_key key of server where object is stored
+   * @param[in] key key of object whose value we will prepend data to
+   * @param[in] value data to prepend to object's value
+   * @return true on success; false otherwise
+   */
+  bool prependByKey(const std::string &master_key, const std::string &key,
+                    const std::vector<char> &value) {
+    return memcached_success(memcached_prepend_by_key(memc_, master_key.c_str(),
+                                                      master_key.length(), key.c_str(),
+                                                      key.length(), &value[0], value.size(), 0, 0));
+  }
+
+  /**
+   * Places a segment of data at the end of the last piece of data stored.
+   *
+   * @param[in] key key of object whose value we will append data to
+   * @param[in] value data to append to object's value
+   * @return true on success; false otherwise
+   */
+  bool append(const std::string &key, const std::vector<char> &value) {
+    return memcached_success(
+        memcached_append(memc_, key.c_str(), key.length(), &value[0], value.size(), 0, 0));
+  }
+
+  /**
+   * Places a segment of data at the end of the last piece of data stored. The
+   * server on which the object where we will be appending data is stored
+   * on is specified by the master_key parameter.
+   *
+   * @param[in] master_key key of server where object is stored
+   * @param[in] key key of object whose value we will append data to
+   * @param[in] value data to append to object's value
+   * @return true on success; false otherwise
+   */
+  bool appendByKey(const std::string &master_key, const std::string &key,
+                   const std::vector<char> &value) {
+    return memcached_success(memcached_append_by_key(memc_, master_key.c_str(), master_key.length(),
+                                                     key.c_str(), key.length(), &value[0],
+                                                     value.size(), 0, 0));
+  }
+
+  /**
+   * Overwrite data in the server as long as the cas_arg value
+   * is still the same in the server.
+   *
+   * @param[in] key key of object in server
+   * @param[in] value value to store for object in server
+   * @param[in] cas_arg "cas" value
+   */
+  bool cas(const std::string &key, const std::vector<char> &value, uint64_t cas_arg) {
+    return memcached_success(
+        memcached_cas(memc_, key.c_str(), key.length(), &value[0], value.size(), 0, 0, cas_arg));
+  }
+
+  /**
+   * Overwrite data in the server as long as the cas_arg value
+   * is still the same in the server. The server to use is
+   * specified by the master_key parameter.
+   *
+   * @param[in] master_key specifies server to operate on
+   * @param[in] key key of object in server
+   * @param[in] value value to store for object in server
+   * @param[in] cas_arg "cas" value
+   */
+  bool casByKey(const std::string &master_key, const std::string &key,
+                const std::vector<char> &value, uint64_t cas_arg) {
+    return memcached_success(memcached_cas_by_key(memc_, master_key.c_str(), master_key.length(),
+                                                  key.c_str(), key.length(), &value[0],
+                                                  value.size(), 0, 0, cas_arg));
+  }
+
+  /**
+   * Delete an object from the server specified by the key given.
+   *
+   * @param[in] key key of object to delete
+   * @return true on success; false otherwise
+   */
+  bool remove(const std::string &key) {
+    return memcached_success(memcached_delete(memc_, key.c_str(), key.length(), 0));
+  }
+
+  /**
+   * Delete an object from the server specified by the key given.
+   *
+   * @param[in] key key of object to delete
+   * @param[in] expiration time to delete the object after
+   * @return true on success; false otherwise
+   */
+  bool remove(const std::string &key, time_t expiration) {
+    return memcached_success(memcached_delete(memc_, key.c_str(), key.length(), expiration));
+  }
+
+  /**
+   * Delete an object from the server specified by the key given.
+   *
+   * @param[in] master_key specifies server to remove object from
+   * @param[in] key key of object to delete
+   * @return true on success; false otherwise
+   */
+  bool removeByKey(const std::string &master_key, const std::string &key) {
+    return memcached_success(memcached_delete_by_key(memc_, master_key.c_str(), master_key.length(),
+                                                     key.c_str(), key.length(), 0));
+  }
+
+  /**
+   * Delete an object from the server specified by the key given.
+   *
+   * @param[in] master_key specifies server to remove object from
+   * @param[in] key key of object to delete
+   * @param[in] expiration time to delete the object after
+   * @return true on success; false otherwise
+   */
+  bool removeByKey(const std::string &master_key, const std::string &key, time_t expiration) {
+    return memcached_success(memcached_delete_by_key(memc_, master_key.c_str(), master_key.length(),
+                                                     key.c_str(), key.length(), expiration));
+  }
+
+  /**
+   * Wipe the contents of memcached servers.
+   *
+   * @param[in] expiration time to wait until wiping contents of
+   *                       memcached servers
+   * @return true on success; false otherwise
+   */
+  bool flush(time_t expiration = 0) {
+    return memcached_success(memcached_flush(memc_, expiration));
+  }
+
+  /**
+   * Get the library version string.
+   * @return std::string containing a copy of the library version string.
+   */
+  const std::string libVersion() const {
+    const char *ver = memcached_lib_version();
+    const std::string version(ver);
+    return version;
+  }
+
+  /**
+   * Retrieve memcached statistics. Populate a std::map with the retrieved
+   * stats. Each server will map to another std::map of the key:value stats.
+   *
+   * @param[out] stats_map a std::map to be populated with the memcached
+   *                       stats
+   * @return true on success; false otherwise
+   */
+  bool getStats(std::map<std::string, std::map<std::string, std::string>> &stats_map) {
+    memcached_return_t rc;
+    memcached_stat_st *stats = memcached_stat(memc_, NULL, &rc);
+
+    if (rc != MEMCACHED_SUCCESS && rc != MEMCACHED_SOME_ERRORS) {
+      return false;
+    }
+
+    uint32_t server_count = memcached_server_count(memc_);
+
+    /*
+     * For each memcached server, construct a std::map for its stats and add
+     * it to the std::map of overall stats.
+     */
+    for (uint32_t x = 0; x < server_count; x++) {
+      const memcached_instance_st *instance = memcached_server_instance_by_position(memc_, x);
+      std::ostringstream strstm;
+      std::string server_name(memcached_server_name(instance));
+      server_name.append(":");
+      strstm << memcached_server_port(instance);
+      server_name.append(strstm.str());
+
+      std::map<std::string, std::string> server_stats;
+      char **list = memcached_stat_get_keys(memc_, &stats[x], &rc);
+      for (char **ptr = list; *ptr; ptr++) {
+        char *value = memcached_stat_get_value(memc_, &stats[x], *ptr, &rc);
+        server_stats[*ptr] = value;
+        free(value);
+      }
+
+      stats_map[server_name] = server_stats;
+      free(list);
+    }
+
+    memcached_stat_free(memc_, stats);
+    return true;
+  }
+
+private:
+  memcached_st *memc_;
+};
+
+} // namespace memcache
diff --git a/include/libmemcached-1.0/options.h b/include/libmemcached-1.0/options.h
new file mode 100644 (file)
index 0000000..adba74c
--- /dev/null
@@ -0,0 +1,28 @@
+/*
+    +--------------------------------------------------------------------+
+    | libmemcached - 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 Michael Wallner   <mike@php.net>                |
+    +--------------------------------------------------------------------+
+*/
+
+#pragma once
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+LIBMEMCACHED_API
+memcached_return_t libmemcached_check_configuration(const char *option_string, size_t length,
+                                                    char *error_buffer, size_t error_buffer_size);
+
+#ifdef __cplusplus
+}
+#endif
diff --git a/include/libmemcached-1.0/parse.h b/include/libmemcached-1.0/parse.h
new file mode 100644 (file)
index 0000000..b8029ae
--- /dev/null
@@ -0,0 +1,27 @@
+/*
+    +--------------------------------------------------------------------+
+    | libmemcached - 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 Michael Wallner   <mike@php.net>                |
+    +--------------------------------------------------------------------+
+*/
+
+#pragma once
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+LIBMEMCACHED_API
+memcached_server_list_st memcached_servers_parse(const char *server_strings);
+
+#ifdef __cplusplus
+}
+#endif
diff --git a/include/libmemcached-1.0/platform.h b/include/libmemcached-1.0/platform.h
new file mode 100644 (file)
index 0000000..1bf2c3d
--- /dev/null
@@ -0,0 +1,63 @@
+/*
+    +--------------------------------------------------------------------+
+    | libmemcached - 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 Michael Wallner   <mike@php.net>                |
+    +--------------------------------------------------------------------+
+*/
+
+#pragma once
+
+#include "libmemcached-1.0/configure.h"
+
+/* This seems to be required for older compilers @note
+ * http://stackoverflow.com/questions/8132399/how-to-printf-uint64-t  */
+#ifndef __STDC_FORMAT_MACROS
+#  define __STDC_FORMAT_MACROS
+#endif
+
+#ifdef __cplusplus
+#  include <cinttypes>
+#  include <cstddef>
+#  include <cstdlib>
+#else
+#  include <inttypes.h>
+#  include <stddef.h>
+#  include <stdlib.h>
+#  include <stdbool.h>
+#endif
+
+#include <sys/types.h>
+
+#if defined HAVE_NETDB_H
+# include <netdb.h>
+#endif
+
+#if !defined HAVE_IN_PORT_T
+typedef int in_port_t;
+#endif
+
+#if !defined HAVE_PID_T
+typedef int pid_t;
+#endif
+
+#ifndef HAVE_SSIZE_T
+typedef long int ssize_t;
+#endif
+
+#if defined _WIN32
+# define WINVER 0x0600
+# define _WIN32_WINNT 0x0600
+# include <winsock2.h>
+# include <ws2tcpip.h>
+typedef SOCKET memcached_socket_t;
+#else
+typedef int memcached_socket_t;
+#endif // _WIN32
diff --git a/include/libmemcached-1.0/quit.h b/include/libmemcached-1.0/quit.h
new file mode 100644 (file)
index 0000000..f9ad396
--- /dev/null
@@ -0,0 +1,27 @@
+/*
+    +--------------------------------------------------------------------+
+    | libmemcached - 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 Michael Wallner   <mike@php.net>                |
+    +--------------------------------------------------------------------+
+*/
+
+#pragma once
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+LIBMEMCACHED_API
+void memcached_quit(memcached_st *ptr);
+
+#ifdef __cplusplus
+}
+#endif
diff --git a/include/libmemcached-1.0/result.h b/include/libmemcached-1.0/result.h
new file mode 100644 (file)
index 0000000..301d0c1
--- /dev/null
@@ -0,0 +1,67 @@
+/*
+    +--------------------------------------------------------------------+
+    | libmemcached - 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 Michael Wallner   <mike@php.net>                |
+    +--------------------------------------------------------------------+
+*/
+
+#include "libmemcached-1.0/struct/result.h"
+
+#pragma once
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Result Struct */
+LIBMEMCACHED_API
+void memcached_result_free(memcached_result_st *result);
+
+LIBMEMCACHED_API
+void memcached_result_reset(memcached_result_st *ptr);
+
+LIBMEMCACHED_API
+memcached_result_st *memcached_result_create(const memcached_st *ptr, memcached_result_st *result);
+
+LIBMEMCACHED_API
+const char *memcached_result_key_value(const memcached_result_st *self);
+
+LIBMEMCACHED_API
+size_t memcached_result_key_length(const memcached_result_st *self);
+
+LIBMEMCACHED_API
+const char *memcached_result_value(const memcached_result_st *self);
+
+LIBMEMCACHED_API
+char *memcached_result_take_value(memcached_result_st *self);
+
+LIBMEMCACHED_API
+size_t memcached_result_length(const memcached_result_st *self);
+
+LIBMEMCACHED_API
+uint32_t memcached_result_flags(const memcached_result_st *self);
+
+LIBMEMCACHED_API
+uint64_t memcached_result_cas(const memcached_result_st *self);
+
+LIBMEMCACHED_API
+memcached_return_t memcached_result_set_value(memcached_result_st *ptr, const char *value,
+                                              size_t length);
+
+LIBMEMCACHED_API
+void memcached_result_set_flags(memcached_result_st *self, uint32_t flags);
+
+LIBMEMCACHED_API
+void memcached_result_set_expiration(memcached_result_st *self, time_t expiration);
+
+#ifdef __cplusplus
+} // extern "C"
+#endif
diff --git a/include/libmemcached-1.0/return.h b/include/libmemcached-1.0/return.h
new file mode 100644 (file)
index 0000000..3d3d282
--- /dev/null
@@ -0,0 +1,39 @@
+/*
+    +--------------------------------------------------------------------+
+    | libmemcached - 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 Michael Wallner   <mike@php.net>                |
+    +--------------------------------------------------------------------+
+*/
+
+#pragma once
+
+static inline bool memcached_success(memcached_return_t rc) {
+  return (rc == MEMCACHED_BUFFERED || rc == MEMCACHED_DELETED || rc == MEMCACHED_END
+          || rc == MEMCACHED_ITEM || rc == MEMCACHED_STAT || rc == MEMCACHED_STORED
+          || rc == MEMCACHED_SUCCESS || rc == MEMCACHED_VALUE);
+}
+
+static inline bool memcached_failed(memcached_return_t rc) {
+  return (rc != MEMCACHED_AUTH_CONTINUE && rc != MEMCACHED_BUFFERED && rc != MEMCACHED_DELETED
+          && rc != MEMCACHED_END && rc != MEMCACHED_ITEM && rc != MEMCACHED_STAT
+          && rc != MEMCACHED_STORED && rc != MEMCACHED_SUCCESS && rc != MEMCACHED_VALUE);
+}
+
+static inline bool memcached_fatal(memcached_return_t rc) {
+  return (rc != MEMCACHED_AUTH_CONTINUE && rc != MEMCACHED_BUFFERED && rc != MEMCACHED_CLIENT_ERROR
+          && rc != MEMCACHED_DATA_EXISTS && rc != MEMCACHED_DELETED && rc != MEMCACHED_E2BIG
+          && rc != MEMCACHED_END && rc != MEMCACHED_ITEM && rc != MEMCACHED_ERROR
+          && rc != MEMCACHED_NOTFOUND && rc != MEMCACHED_NOTSTORED
+          && rc != MEMCACHED_SERVER_MEMORY_ALLOCATION_FAILURE && rc != MEMCACHED_STAT
+          && rc != MEMCACHED_STORED && rc != MEMCACHED_SUCCESS && rc != MEMCACHED_VALUE);
+}
+
+#define memcached_continue(__memcached_return_t) ((__memcached_return_t) == MEMCACHED_IN_PROGRESS)
diff --git a/include/libmemcached-1.0/sasl.h b/include/libmemcached-1.0/sasl.h
new file mode 100644 (file)
index 0000000..832084b
--- /dev/null
@@ -0,0 +1,45 @@
+/*
+    +--------------------------------------------------------------------+
+    | libmemcached - 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 Michael Wallner   <mike@php.net>                |
+    +--------------------------------------------------------------------+
+*/
+
+#pragma once
+
+#if defined(LIBMEMCACHED_WITH_SASL_SUPPORT) && LIBMEMCACHED_WITH_SASL_SUPPORT
+#  include <sasl/sasl.h>
+#else
+#  define sasl_callback_t void
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+LIBMEMCACHED_API
+void memcached_set_sasl_callbacks(memcached_st *ptr, const sasl_callback_t *callbacks);
+
+LIBMEMCACHED_API
+memcached_return_t memcached_set_sasl_auth_data(memcached_st *ptr, const char *username,
+                                                const char *password);
+
+LIBMEMCACHED_API
+memcached_return_t memcached_destroy_sasl_auth_data(memcached_st *ptr);
+
+LIBMEMCACHED_API
+sasl_callback_t *memcached_get_sasl_callbacks(memcached_st *ptr);
+
+#ifdef __cplusplus
+}
+#endif
+
+#include "libmemcached-1.0/struct/sasl.h"
diff --git a/include/libmemcached-1.0/server.h b/include/libmemcached-1.0/server.h
new file mode 100644 (file)
index 0000000..86928c3
--- /dev/null
@@ -0,0 +1,93 @@
+/*
+    +--------------------------------------------------------------------+
+    | libmemcached - 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 Michael Wallner   <mike@php.net>                |
+    +--------------------------------------------------------------------+
+*/
+
+#pragma once
+
+#include "libmemcached-1.0/struct/server.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+LIBMEMCACHED_API
+memcached_return_t memcached_server_cursor(const memcached_st *ptr,
+                                           const memcached_server_fn *callback, void *context,
+                                           uint32_t number_of_callbacks);
+
+LIBMEMCACHED_API
+const memcached_instance_st *memcached_server_by_key(memcached_st *ptr, const char *key,
+                                                     size_t key_length, memcached_return_t *error);
+
+LIBMEMCACHED_API
+void memcached_server_error_reset(memcached_server_st *ptr);
+
+LIBMEMCACHED_API
+void memcached_server_free(memcached_server_st *ptr);
+
+LIBMEMCACHED_API
+const memcached_instance_st *memcached_server_get_last_disconnect(const memcached_st *ptr);
+
+LIBMEMCACHED_API
+memcached_return_t memcached_server_add_udp(memcached_st *ptr, const char *hostname,
+                                            in_port_t port);
+LIBMEMCACHED_API
+memcached_return_t memcached_server_add_unix_socket(memcached_st *ptr, const char *filename);
+LIBMEMCACHED_API
+memcached_return_t memcached_server_add(memcached_st *ptr, const char *hostname, in_port_t port);
+
+LIBMEMCACHED_API
+memcached_return_t memcached_server_add_udp_with_weight(memcached_st *ptr, const char *hostname,
+                                                        in_port_t port, uint32_t weight);
+LIBMEMCACHED_API
+memcached_return_t memcached_server_add_unix_socket_with_weight(memcached_st *ptr,
+                                                                const char *filename,
+                                                                uint32_t weight);
+LIBMEMCACHED_API
+memcached_return_t memcached_server_add_with_weight(memcached_st *ptr, const char *hostname,
+                                                    in_port_t port, uint32_t weight);
+
+/**
+  Operations on Single Servers.
+*/
+LIBMEMCACHED_API
+uint32_t memcached_server_response_count(const memcached_instance_st *self);
+
+LIBMEMCACHED_API
+const char *memcached_server_name(const memcached_instance_st *self);
+
+LIBMEMCACHED_API
+in_port_t memcached_server_port(const memcached_instance_st *self);
+
+LIBMEMCACHED_API
+in_port_t memcached_server_srcport(const memcached_instance_st *self);
+
+LIBMEMCACHED_API
+void memcached_instance_next_retry(const memcached_instance_st *self, const time_t absolute_time);
+
+LIBMEMCACHED_API
+const char *memcached_server_type(const memcached_instance_st *ptr);
+
+LIBMEMCACHED_API
+uint8_t memcached_server_major_version(const memcached_instance_st *ptr);
+
+LIBMEMCACHED_API
+uint8_t memcached_server_minor_version(const memcached_instance_st *ptr);
+
+LIBMEMCACHED_API
+uint8_t memcached_server_micro_version(const memcached_instance_st *ptr);
+
+#ifdef __cplusplus
+} // extern "C"
+#endif
diff --git a/include/libmemcached-1.0/server_list.h b/include/libmemcached-1.0/server_list.h
new file mode 100644 (file)
index 0000000..ebf2a2d
--- /dev/null
@@ -0,0 +1,43 @@
+/*
+    +--------------------------------------------------------------------+
+    | libmemcached - 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 Michael Wallner   <mike@php.net>                |
+    +--------------------------------------------------------------------+
+*/
+
+#pragma once
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Server List Public functions */
+LIBMEMCACHED_API
+void memcached_server_list_free(memcached_server_list_st ptr);
+
+LIBMEMCACHED_API
+memcached_return_t memcached_server_push(memcached_st *ptr, const memcached_server_list_st list);
+
+LIBMEMCACHED_API
+memcached_server_list_st memcached_server_list_append(memcached_server_list_st ptr,
+                                                      const char *hostname, in_port_t port,
+                                                      memcached_return_t *error);
+LIBMEMCACHED_API
+memcached_server_list_st memcached_server_list_append_with_weight(memcached_server_list_st ptr,
+                                                                  const char *hostname,
+                                                                  in_port_t port, uint32_t weight,
+                                                                  memcached_return_t *error);
+LIBMEMCACHED_API
+uint32_t memcached_server_list_count(const memcached_server_list_st ptr);
+
+#ifdef __cplusplus
+} // extern "C"
+#endif
diff --git a/include/libmemcached-1.0/stats.h b/include/libmemcached-1.0/stats.h
new file mode 100644 (file)
index 0000000..5661f50
--- /dev/null
@@ -0,0 +1,48 @@
+/*
+    +--------------------------------------------------------------------+
+    | libmemcached - 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 Michael Wallner   <mike@php.net>                |
+    +--------------------------------------------------------------------+
+*/
+
+#include "libmemcached-1.0/struct/stat.h"
+
+#pragma once
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+LIBMEMCACHED_API
+void memcached_stat_free(const memcached_st *, memcached_stat_st *);
+
+LIBMEMCACHED_API
+memcached_stat_st *memcached_stat(memcached_st *ptr, char *args, memcached_return_t *error);
+
+LIBMEMCACHED_API
+memcached_return_t memcached_stat_servername(memcached_stat_st *memc_stat, char *args,
+                                             const char *hostname, in_port_t port);
+
+LIBMEMCACHED_API
+char *memcached_stat_get_value(const memcached_st *ptr, memcached_stat_st *memc_stat,
+                               const char *key, memcached_return_t *error);
+
+LIBMEMCACHED_API
+char **memcached_stat_get_keys(memcached_st *ptr, memcached_stat_st *memc_stat,
+                               memcached_return_t *error);
+
+LIBMEMCACHED_API
+memcached_return_t memcached_stat_execute(memcached_st *memc, const char *args,
+                                          memcached_stat_fn func, void *context);
+
+#ifdef __cplusplus
+} // extern "C"
+#endif
diff --git a/include/libmemcached-1.0/storage.h b/include/libmemcached-1.0/storage.h
new file mode 100644 (file)
index 0000000..f23a9d9
--- /dev/null
@@ -0,0 +1,86 @@
+/*
+    +--------------------------------------------------------------------+
+    | libmemcached - 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 Michael Wallner   <mike@php.net>                |
+    +--------------------------------------------------------------------+
+*/
+
+#pragma once
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* All of the functions for adding data to the server */
+LIBMEMCACHED_API
+memcached_return_t memcached_set(memcached_st *ptr, const char *key, size_t key_length,
+                                 const char *value, size_t value_length, time_t expiration,
+                                 uint32_t flags);
+LIBMEMCACHED_API
+memcached_return_t memcached_add(memcached_st *ptr, const char *key, size_t key_length,
+                                 const char *value, size_t value_length, time_t expiration,
+                                 uint32_t flags);
+LIBMEMCACHED_API
+memcached_return_t memcached_replace(memcached_st *ptr, const char *key, size_t key_length,
+                                     const char *value, size_t value_length, time_t expiration,
+                                     uint32_t flags);
+LIBMEMCACHED_API
+memcached_return_t memcached_append(memcached_st *ptr, const char *key, size_t key_length,
+                                    const char *value, size_t value_length, time_t expiration,
+                                    uint32_t flags);
+LIBMEMCACHED_API
+memcached_return_t memcached_prepend(memcached_st *ptr, const char *key, size_t key_length,
+                                     const char *value, size_t value_length, time_t expiration,
+                                     uint32_t flags);
+LIBMEMCACHED_API
+memcached_return_t memcached_cas(memcached_st *ptr, const char *key, size_t key_length,
+                                 const char *value, size_t value_length, time_t expiration,
+                                 uint32_t flags, uint64_t cas);
+
+LIBMEMCACHED_API
+memcached_return_t memcached_set_by_key(memcached_st *ptr, const char *group_key,
+                                        size_t group_key_length, const char *key, size_t key_length,
+                                        const char *value, size_t value_length, time_t expiration,
+                                        uint32_t flags);
+
+LIBMEMCACHED_API
+memcached_return_t memcached_add_by_key(memcached_st *ptr, const char *group_key,
+                                        size_t group_key_length, const char *key, size_t key_length,
+                                        const char *value, size_t value_length, time_t expiration,
+                                        uint32_t flags);
+
+LIBMEMCACHED_API
+memcached_return_t memcached_replace_by_key(memcached_st *ptr, const char *group_key,
+                                            size_t group_key_length, const char *key,
+                                            size_t key_length, const char *value,
+                                            size_t value_length, time_t expiration, uint32_t flags);
+
+LIBMEMCACHED_API
+memcached_return_t memcached_prepend_by_key(memcached_st *ptr, const char *group_key,
+                                            size_t group_key_length, const char *key,
+                                            size_t key_length, const char *value,
+                                            size_t value_length, time_t expiration, uint32_t flags);
+
+LIBMEMCACHED_API
+memcached_return_t memcached_append_by_key(memcached_st *ptr, const char *group_key,
+                                           size_t group_key_length, const char *key,
+                                           size_t key_length, const char *value,
+                                           size_t value_length, time_t expiration, uint32_t flags);
+
+LIBMEMCACHED_API
+memcached_return_t memcached_cas_by_key(memcached_st *ptr, const char *group_key,
+                                        size_t group_key_length, const char *key, size_t key_length,
+                                        const char *value, size_t value_length, time_t expiration,
+                                        uint32_t flags, uint64_t cas);
+
+#ifdef __cplusplus
+}
+#endif
diff --git a/include/libmemcached-1.0/strerror.h b/include/libmemcached-1.0/strerror.h
new file mode 100644 (file)
index 0000000..42b70fa
--- /dev/null
@@ -0,0 +1,27 @@
+/*
+    +--------------------------------------------------------------------+
+    | libmemcached - 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 Michael Wallner   <mike@php.net>                |
+    +--------------------------------------------------------------------+
+*/
+
+#pragma once
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+LIBMEMCACHED_API
+const char *memcached_strerror(const memcached_st *ptr, memcached_return_t rc);
+
+#ifdef __cplusplus
+}
+#endif
diff --git a/include/libmemcached-1.0/struct/CMakeLists.txt b/include/libmemcached-1.0/struct/CMakeLists.txt
new file mode 100644 (file)
index 0000000..548f993
--- /dev/null
@@ -0,0 +1,14 @@
+
+install_public_headers(
+        libmemcached-1.0/struct
+
+        allocator.h
+        analysis.h
+        callback.h
+        memcached.h
+        result.h
+        sasl.h
+        server.h
+        stat.h
+        string.h
+)
diff --git a/include/libmemcached-1.0/struct/allocator.h b/include/libmemcached-1.0/struct/allocator.h
new file mode 100644 (file)
index 0000000..fd65721
--- /dev/null
@@ -0,0 +1,24 @@
+/*
+    +--------------------------------------------------------------------+
+    | libmemcached - 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 Michael Wallner   <mike@php.net>                |
+    +--------------------------------------------------------------------+
+*/
+
+#pragma once
+
+struct memcached_allocator_t {
+  memcached_calloc_fn calloc;
+  memcached_free_fn free;
+  memcached_malloc_fn malloc;
+  memcached_realloc_fn realloc;
+  void *context;
+};
diff --git a/include/libmemcached-1.0/struct/analysis.h b/include/libmemcached-1.0/struct/analysis.h
new file mode 100644 (file)
index 0000000..94c6220
--- /dev/null
@@ -0,0 +1,28 @@
+/*
+    +--------------------------------------------------------------------+
+    | libmemcached - 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 Michael Wallner   <mike@php.net>                |
+    +--------------------------------------------------------------------+
+*/
+
+#pragma once
+
+struct memcached_analysis_st {
+  memcached_st *root;
+  uint32_t average_item_size;
+  uint32_t longest_uptime;
+  uint32_t least_free_server;
+  uint32_t most_consumed_server;
+  uint32_t oldest_server;
+  double pool_hit_ratio;
+  uint64_t most_used_bytes;
+  uint64_t least_remaining_bytes;
+};
diff --git a/include/libmemcached-1.0/struct/callback.h b/include/libmemcached-1.0/struct/callback.h
new file mode 100644 (file)
index 0000000..2bfac14
--- /dev/null
@@ -0,0 +1,22 @@
+/*
+    +--------------------------------------------------------------------+
+    | libmemcached - 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 Michael Wallner   <mike@php.net>                |
+    +--------------------------------------------------------------------+
+*/
+
+#pragma once
+
+struct memcached_callback_st {
+  memcached_execute_fn *callback;
+  void *context;
+  uint32_t number_of_callback;
+};
diff --git a/include/libmemcached-1.0/struct/memcached.h b/include/libmemcached-1.0/struct/memcached.h
new file mode 100644 (file)
index 0000000..f59e68e
--- /dev/null
@@ -0,0 +1,106 @@
+/*
+    +--------------------------------------------------------------------+
+    | libmemcached - 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 Michael Wallner   <mike@php.net>                |
+    +--------------------------------------------------------------------+
+*/
+
+#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;
+};
diff --git a/include/libmemcached-1.0/struct/result.h b/include/libmemcached-1.0/struct/result.h
new file mode 100644 (file)
index 0000000..d651bdc
--- /dev/null
@@ -0,0 +1,33 @@
+/*
+    +--------------------------------------------------------------------+
+    | libmemcached - 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 Michael Wallner   <mike@php.net>                |
+    +--------------------------------------------------------------------+
+*/
+
+#pragma once
+
+struct memcached_result_st {
+  uint32_t item_flags;
+  time_t item_expiration;
+  size_t key_length;
+  uint64_t item_cas;
+  struct memcached_st *root;
+  memcached_string_st value;
+  uint64_t numeric_value;
+  uint64_t count;
+  char item_key[MEMCACHED_MAX_KEY];
+  struct {
+    bool is_allocated : 1;
+    bool is_initialized : 1;
+  } options;
+  /* Add result callback function */
+};
diff --git a/include/libmemcached-1.0/struct/sasl.h b/include/libmemcached-1.0/struct/sasl.h
new file mode 100644 (file)
index 0000000..98c4fec
--- /dev/null
@@ -0,0 +1,31 @@
+/*
+    +--------------------------------------------------------------------+
+    | libmemcached - 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 Michael Wallner   <mike@php.net>                |
+    +--------------------------------------------------------------------+
+*/
+
+#if defined(LIBMEMCACHED_WITH_SASL_SUPPORT) && LIBMEMCACHED_WITH_SASL_SUPPORT
+#  include <sasl/sasl.h>
+#else
+#  define sasl_callback_t void
+#endif
+
+#pragma once
+
+struct memcached_sasl_st {
+  sasl_callback_t *callbacks;
+  /*
+   ** Did we allocate data inside the callbacks, or did the user
+   ** supply that.
+   */
+  bool is_allocated;
+};
diff --git a/include/libmemcached-1.0/struct/server.h b/include/libmemcached-1.0/struct/server.h
new file mode 100644 (file)
index 0000000..e74767a
--- /dev/null
@@ -0,0 +1,79 @@
+/*
+    +--------------------------------------------------------------------+
+    | libmemcached - 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 Michael Wallner   <mike@php.net>                |
+    +--------------------------------------------------------------------+
+*/
+
+#pragma once
+
+#include "libmemcached-1.0/configure.h"
+
+#ifdef HAVE_NETDB_H
+#  include <netdb.h>
+#endif
+
+#ifdef NI_MAXHOST
+#  define MEMCACHED_NI_MAXHOST NI_MAXHOST
+#else
+#  define MEMCACHED_NI_MAXHOST 1025
+#endif
+
+#ifdef NI_MAXSERV
+#  define MEMCACHED_NI_MAXSERV NI_MAXSERV
+#else
+#  define MEMCACHED_NI_MAXSERV 32
+#endif
+
+enum memcached_server_state_t {
+  MEMCACHED_SERVER_STATE_NEW,      // fd == -1, no address lookup has been done
+  MEMCACHED_SERVER_STATE_ADDRINFO, // ADDRRESS information has been gathered
+  MEMCACHED_SERVER_STATE_IN_PROGRESS,
+  MEMCACHED_SERVER_STATE_CONNECTED,
+  MEMCACHED_SERVER_STATE_IN_TIMEOUT,
+  MEMCACHED_SERVER_STATE_DISABLED
+};
+
+struct memcached_server_st {
+  struct {
+    bool is_allocated : 1;
+    bool is_initialized : 1;
+    bool is_shutting_down : 1;
+    bool is_dead : 1;
+  } options;
+  uint32_t number_of_hosts;
+  uint32_t cursor_active;
+  in_port_t port;
+  uint32_t io_bytes_sent; /* # bytes sent since last read */
+  uint32_t request_id;
+  uint32_t server_failure_counter;
+  uint64_t server_failure_counter_query_id;
+  uint32_t server_timeout_counter;
+  uint64_t server_timeout_counter_query_id;
+  uint32_t weight;
+  uint32_t version;
+  enum memcached_server_state_t state;
+  struct {
+    uint32_t read;
+    uint32_t write;
+    uint32_t timeouts;
+    size_t _bytes_read;
+  } io_wait_count;
+  uint8_t major_version; // Default definition of UINT8_MAX means that it has not been set.
+  uint8_t micro_version; // ditto, and note that this is the third, not second version bit
+  uint8_t minor_version; // ditto
+  memcached_connection_t type;
+  time_t next_retry;
+  struct memcached_st *root;
+  uint64_t limit_maxbytes;
+  struct memcached_error_t *error_messages;
+  char hostname[MEMCACHED_NI_MAXHOST];
+};
diff --git a/include/libmemcached-1.0/struct/stat.h b/include/libmemcached-1.0/struct/stat.h
new file mode 100644 (file)
index 0000000..cc6be4e
--- /dev/null
@@ -0,0 +1,45 @@
+/*
+    +--------------------------------------------------------------------+
+    | libmemcached - 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 Michael Wallner   <mike@php.net>                |
+    +--------------------------------------------------------------------+
+*/
+
+#pragma once
+
+struct memcached_stat_st {
+  unsigned long connection_structures;
+  unsigned long curr_connections;
+  unsigned long curr_items;
+  pid_t pid;
+  unsigned long pointer_size;
+  unsigned long rusage_system_microseconds;
+  unsigned long rusage_system_seconds;
+  unsigned long rusage_user_microseconds;
+  unsigned long rusage_user_seconds;
+  unsigned long threads;
+  unsigned long time;
+  unsigned long total_connections;
+  unsigned long total_items;
+  unsigned long uptime;
+  unsigned long long bytes;
+  unsigned long long bytes_read;
+  unsigned long long bytes_written;
+  unsigned long long cmd_get;
+  unsigned long long cmd_set;
+  unsigned long long evictions;
+  unsigned long long get_hits;
+  unsigned long long get_misses;
+  unsigned long long limit_maxbytes;
+  char version[MEMCACHED_VERSION_STRING_LENGTH];
+  void *__future; // @todo create a new structure to place here for future usage
+  memcached_st *root;
+};
diff --git a/include/libmemcached-1.0/struct/string.h b/include/libmemcached-1.0/struct/string.h
new file mode 100644 (file)
index 0000000..aef7b9f
--- /dev/null
@@ -0,0 +1,37 @@
+/*
+    +--------------------------------------------------------------------+
+    | libmemcached - 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 Michael Wallner   <mike@php.net>                |
+    +--------------------------------------------------------------------+
+*/
+
+#pragma once
+
+/**
+  Strings are always under our control so we make some assumptions
+  about them.
+
+  1) is_initialized is always valid.
+  2) A string once intialized will always be, until free where we
+     unset this flag.
+  3) A string always has a root.
+*/
+
+struct memcached_string_st {
+  char *end;
+  char *string;
+  size_t current_size;
+  struct memcached_st *root;
+  struct {
+    bool is_allocated : 1;
+    bool is_initialized : 1;
+  } options;
+};
diff --git a/include/libmemcached-1.0/touch.h b/include/libmemcached-1.0/touch.h
new file mode 100644 (file)
index 0000000..98e57c6
--- /dev/null
@@ -0,0 +1,33 @@
+/*
+    +--------------------------------------------------------------------+
+    | libmemcached - 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 Michael Wallner   <mike@php.net>                |
+    +--------------------------------------------------------------------+
+*/
+
+#pragma once
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+LIBMEMCACHED_API
+memcached_return_t memcached_touch(memcached_st *ptr, const char *key, size_t key_length,
+                                   time_t expiration);
+
+LIBMEMCACHED_API
+memcached_return_t memcached_touch_by_key(memcached_st *ptr, const char *group_key,
+                                          size_t group_key_length, const char *key,
+                                          size_t key_length, time_t expiration);
+
+#ifdef __cplusplus
+}
+#endif
diff --git a/include/libmemcached-1.0/triggers.h b/include/libmemcached-1.0/triggers.h
new file mode 100644 (file)
index 0000000..406a37d
--- /dev/null
@@ -0,0 +1,40 @@
+/*
+    +--------------------------------------------------------------------+
+    | libmemcached - 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 Michael Wallner   <mike@php.net>                |
+    +--------------------------------------------------------------------+
+*/
+
+#pragma once
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+typedef memcached_return_t (*memcached_clone_fn)(memcached_st *destination,
+                                                 const memcached_st *source);
+typedef memcached_return_t (*memcached_cleanup_fn)(const memcached_st *ptr);
+
+/**
+  Trigger functions.
+*/
+typedef memcached_return_t (*memcached_trigger_key_fn)(const memcached_st *ptr, const char *key,
+                                                       size_t key_length,
+                                                       memcached_result_st *result);
+typedef memcached_return_t (*memcached_trigger_delete_key_fn)(const memcached_st *ptr,
+                                                              const char *key, size_t key_length);
+
+typedef memcached_return_t (*memcached_dump_fn)(const memcached_st *ptr, const char *key,
+                                                size_t key_length, void *context);
+
+#ifdef __cplusplus
+}
+#endif
diff --git a/include/libmemcached-1.0/types.h b/include/libmemcached-1.0/types.h
new file mode 100644 (file)
index 0000000..30fe2f7
--- /dev/null
@@ -0,0 +1,60 @@
+/*
+    +--------------------------------------------------------------------+
+    | libmemcached - 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 Michael Wallner   <mike@php.net>                |
+    +--------------------------------------------------------------------+
+*/
+
+#pragma once
+
+#ifdef __cplusplus
+
+struct memcached_st;
+struct memcached_stat_st;
+struct memcached_analysis_st;
+struct memcached_result_st;
+struct memcached_array_st;
+struct memcached_error_t;
+
+// All of the flavors of memcache_server_st
+struct memcached_server_st;
+struct memcached_instance_st;
+typedef struct memcached_instance_st memcached_instance_st;
+typedef struct memcached_server_st *memcached_server_list_st;
+
+struct memcached_callback_st;
+
+// The following two structures are internal, and never exposed to users.
+struct memcached_string_st;
+struct memcached_string_t;
+struct memcached_continuum_item_st;
+
+#else
+
+typedef struct memcached_st memcached_st;
+typedef struct memcached_stat_st memcached_stat_st;
+typedef struct memcached_analysis_st memcached_analysis_st;
+typedef struct memcached_result_st memcached_result_st;
+typedef struct memcached_array_st memcached_array_st;
+typedef struct memcached_error_t memcached_error_t;
+
+// All of the flavors of memcache_server_st
+typedef struct memcached_server_st memcached_server_st;
+typedef struct memcached_instance_st memcached_instance_st;
+typedef struct memcached_server_st *memcached_server_list_st;
+
+typedef struct memcached_callback_st memcached_callback_st;
+
+// The following two structures are internal, and never exposed to users.
+typedef struct memcached_string_st memcached_string_st;
+typedef struct memcached_string_t memcached_string_t;
+
+#endif
diff --git a/include/libmemcached-1.0/types/CMakeLists.txt b/include/libmemcached-1.0/types/CMakeLists.txt
new file mode 100644 (file)
index 0000000..14ec107
--- /dev/null
@@ -0,0 +1,11 @@
+
+install_public_headers(
+        libmemcached-1.0/types
+
+        behavior.h
+        callback.h
+        connection.h
+        hash.h
+        return.h
+        server_distribution.h
+        )
diff --git a/include/libmemcached-1.0/types/behavior.h b/include/libmemcached-1.0/types/behavior.h
new file mode 100644 (file)
index 0000000..1f80e24
--- /dev/null
@@ -0,0 +1,62 @@
+/*
+    +--------------------------------------------------------------------+
+    | libmemcached - 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 Michael Wallner   <mike@php.net>                |
+    +--------------------------------------------------------------------+
+*/
+
+#pragma once
+
+enum memcached_behavior_t {
+  MEMCACHED_BEHAVIOR_NO_BLOCK,
+  MEMCACHED_BEHAVIOR_TCP_NODELAY,
+  MEMCACHED_BEHAVIOR_HASH,
+  MEMCACHED_BEHAVIOR_KETAMA,
+  MEMCACHED_BEHAVIOR_SOCKET_SEND_SIZE,
+  MEMCACHED_BEHAVIOR_SOCKET_RECV_SIZE,
+  MEMCACHED_BEHAVIOR_CACHE_LOOKUPS,
+  MEMCACHED_BEHAVIOR_SUPPORT_CAS,
+  MEMCACHED_BEHAVIOR_POLL_TIMEOUT,
+  MEMCACHED_BEHAVIOR_DISTRIBUTION,
+  MEMCACHED_BEHAVIOR_BUFFER_REQUESTS,
+  MEMCACHED_BEHAVIOR_USER_DATA,
+  MEMCACHED_BEHAVIOR_SORT_HOSTS,
+  MEMCACHED_BEHAVIOR_VERIFY_KEY,
+  MEMCACHED_BEHAVIOR_CONNECT_TIMEOUT,
+  MEMCACHED_BEHAVIOR_RETRY_TIMEOUT,
+  MEMCACHED_BEHAVIOR_KETAMA_WEIGHTED,
+  MEMCACHED_BEHAVIOR_KETAMA_HASH,
+  MEMCACHED_BEHAVIOR_BINARY_PROTOCOL,
+  MEMCACHED_BEHAVIOR_SND_TIMEOUT,
+  MEMCACHED_BEHAVIOR_RCV_TIMEOUT,
+  MEMCACHED_BEHAVIOR_SERVER_FAILURE_LIMIT,
+  MEMCACHED_BEHAVIOR_IO_MSG_WATERMARK,
+  MEMCACHED_BEHAVIOR_IO_BYTES_WATERMARK,
+  MEMCACHED_BEHAVIOR_IO_KEY_PREFETCH,
+  MEMCACHED_BEHAVIOR_HASH_WITH_PREFIX_KEY,
+  MEMCACHED_BEHAVIOR_NOREPLY,
+  MEMCACHED_BEHAVIOR_USE_UDP,
+  MEMCACHED_BEHAVIOR_AUTO_EJECT_HOSTS,
+  MEMCACHED_BEHAVIOR_NUMBER_OF_REPLICAS,
+  MEMCACHED_BEHAVIOR_RANDOMIZE_REPLICA_READ,
+  MEMCACHED_BEHAVIOR_CORK,
+  MEMCACHED_BEHAVIOR_TCP_KEEPALIVE,
+  MEMCACHED_BEHAVIOR_TCP_KEEPIDLE,
+  MEMCACHED_BEHAVIOR_LOAD_FROM_FILE,
+  MEMCACHED_BEHAVIOR_REMOVE_FAILED_SERVERS,
+  MEMCACHED_BEHAVIOR_DEAD_TIMEOUT,
+  MEMCACHED_BEHAVIOR_SERVER_TIMEOUT_LIMIT,
+  MEMCACHED_BEHAVIOR_MAX
+};
+
+#ifndef __cplusplus
+typedef enum memcached_behavior_t memcached_behavior_t;
+#endif
diff --git a/include/libmemcached-1.0/types/callback.h b/include/libmemcached-1.0/types/callback.h
new file mode 100644 (file)
index 0000000..6e67bf7
--- /dev/null
@@ -0,0 +1,31 @@
+/*
+    +--------------------------------------------------------------------+
+    | libmemcached - 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 Michael Wallner   <mike@php.net>                |
+    +--------------------------------------------------------------------+
+*/
+
+#pragma once
+
+enum memcached_callback_t {
+  MEMCACHED_CALLBACK_PREFIX_KEY = 0,
+  MEMCACHED_CALLBACK_USER_DATA = 1,
+  MEMCACHED_CALLBACK_CLEANUP_FUNCTION = 2,
+  MEMCACHED_CALLBACK_CLONE_FUNCTION = 3,
+  MEMCACHED_CALLBACK_GET_FAILURE = 7,
+  MEMCACHED_CALLBACK_DELETE_TRIGGER = 8,
+  MEMCACHED_CALLBACK_MAX,
+  MEMCACHED_CALLBACK_NAMESPACE = MEMCACHED_CALLBACK_PREFIX_KEY
+};
+
+#ifndef __cplusplus
+typedef enum memcached_callback_t memcached_callback_t;
+#endif
diff --git a/include/libmemcached-1.0/types/connection.h b/include/libmemcached-1.0/types/connection.h
new file mode 100644 (file)
index 0000000..6052f2e
--- /dev/null
@@ -0,0 +1,26 @@
+/*
+    +--------------------------------------------------------------------+
+    | libmemcached - 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 Michael Wallner   <mike@php.net>                |
+    +--------------------------------------------------------------------+
+*/
+
+#pragma once
+
+enum memcached_connection_t {
+  MEMCACHED_CONNECTION_TCP,
+  MEMCACHED_CONNECTION_UDP,
+  MEMCACHED_CONNECTION_UNIX_SOCKET
+};
+
+#ifndef __cplusplus
+typedef enum memcached_connection_t memcached_connection_t;
+#endif
diff --git a/include/libmemcached-1.0/types/hash.h b/include/libmemcached-1.0/types/hash.h
new file mode 100644 (file)
index 0000000..4714fc9
--- /dev/null
@@ -0,0 +1,36 @@
+/*
+    +--------------------------------------------------------------------+
+    | libmemcached - 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 Michael Wallner   <mike@php.net>                |
+    +--------------------------------------------------------------------+
+*/
+
+#pragma once
+
+enum memcached_hash_t {
+  MEMCACHED_HASH_DEFAULT = 0,
+  MEMCACHED_HASH_MD5,
+  MEMCACHED_HASH_CRC,
+  MEMCACHED_HASH_FNV1_64,
+  MEMCACHED_HASH_FNV1A_64,
+  MEMCACHED_HASH_FNV1_32,
+  MEMCACHED_HASH_FNV1A_32,
+  MEMCACHED_HASH_HSIEH,
+  MEMCACHED_HASH_MURMUR,
+  MEMCACHED_HASH_JENKINS,
+  MEMCACHED_HASH_MURMUR3,
+  MEMCACHED_HASH_CUSTOM,
+  MEMCACHED_HASH_MAX
+};
+
+#ifndef __cplusplus
+typedef enum memcached_hash_t memcached_hash_t;
+#endif
diff --git a/include/libmemcached-1.0/types/return.h b/include/libmemcached-1.0/types/return.h
new file mode 100644 (file)
index 0000000..f37548d
--- /dev/null
@@ -0,0 +1,74 @@
+/*
+    +--------------------------------------------------------------------+
+    | libmemcached - 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 Michael Wallner   <mike@php.net>                |
+    +--------------------------------------------------------------------+
+*/
+
+#pragma once
+
+enum memcached_return_t {
+  MEMCACHED_SUCCESS,
+  MEMCACHED_FAILURE,
+  MEMCACHED_HOST_LOOKUP_FAILURE, // getaddrinfo() and getnameinfo() only
+  MEMCACHED_CONNECTION_FAILURE,
+  MEMCACHED_CONNECTION_BIND_FAILURE, // DEPRECATED, see MEMCACHED_HOST_LOOKUP_FAILURE
+  MEMCACHED_WRITE_FAILURE,
+  MEMCACHED_READ_FAILURE,
+  MEMCACHED_UNKNOWN_READ_FAILURE,
+  MEMCACHED_PROTOCOL_ERROR,
+  MEMCACHED_CLIENT_ERROR,
+  MEMCACHED_SERVER_ERROR, // Server returns "SERVER_ERROR"
+  MEMCACHED_ERROR,        // Server returns "ERROR"
+  MEMCACHED_DATA_EXISTS,
+  MEMCACHED_DATA_DOES_NOT_EXIST,
+  MEMCACHED_NOTSTORED,
+  MEMCACHED_STORED,
+  MEMCACHED_NOTFOUND,
+  MEMCACHED_MEMORY_ALLOCATION_FAILURE,
+  MEMCACHED_PARTIAL_READ,
+  MEMCACHED_SOME_ERRORS,
+  MEMCACHED_NO_SERVERS,
+  MEMCACHED_END,
+  MEMCACHED_DELETED,
+  MEMCACHED_VALUE,
+  MEMCACHED_STAT,
+  MEMCACHED_ITEM,
+  MEMCACHED_ERRNO,
+  MEMCACHED_FAIL_UNIX_SOCKET, // DEPRECATED
+  MEMCACHED_NOT_SUPPORTED,
+  MEMCACHED_NO_KEY_PROVIDED, /* Deprecated. Use MEMCACHED_BAD_KEY_PROVIDED! */
+  MEMCACHED_FETCH_NOTFINISHED,
+  MEMCACHED_TIMEOUT,
+  MEMCACHED_BUFFERED,
+  MEMCACHED_BAD_KEY_PROVIDED,
+  MEMCACHED_INVALID_HOST_PROTOCOL,
+  MEMCACHED_SERVER_MARKED_DEAD,
+  MEMCACHED_UNKNOWN_STAT_KEY,
+  MEMCACHED_E2BIG,
+  MEMCACHED_INVALID_ARGUMENTS,
+  MEMCACHED_KEY_TOO_BIG,
+  MEMCACHED_AUTH_PROBLEM,
+  MEMCACHED_AUTH_FAILURE,
+  MEMCACHED_AUTH_CONTINUE,
+  MEMCACHED_PARSE_ERROR,
+  MEMCACHED_PARSE_USER_ERROR,
+  MEMCACHED_DEPRECATED,
+  MEMCACHED_IN_PROGRESS,
+  MEMCACHED_SERVER_TEMPORARILY_DISABLED,
+  MEMCACHED_SERVER_MEMORY_ALLOCATION_FAILURE,
+  MEMCACHED_MAXIMUM_RETURN, /* Always add new error code before */
+  MEMCACHED_CONNECTION_SOCKET_CREATE_FAILURE = MEMCACHED_ERROR
+};
+
+#ifndef __cplusplus
+typedef enum memcached_return_t memcached_return_t;
+#endif
diff --git a/include/libmemcached-1.0/types/server_distribution.h b/include/libmemcached-1.0/types/server_distribution.h
new file mode 100644 (file)
index 0000000..648c295
--- /dev/null
@@ -0,0 +1,31 @@
+/*
+    +--------------------------------------------------------------------+
+    | libmemcached - 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 Michael Wallner   <mike@php.net>                |
+    +--------------------------------------------------------------------+
+*/
+
+#pragma once
+
+enum memcached_server_distribution_t {
+  MEMCACHED_DISTRIBUTION_MODULA,
+  MEMCACHED_DISTRIBUTION_CONSISTENT,
+  MEMCACHED_DISTRIBUTION_CONSISTENT_KETAMA,
+  MEMCACHED_DISTRIBUTION_RANDOM,
+  MEMCACHED_DISTRIBUTION_CONSISTENT_KETAMA_SPY,
+  MEMCACHED_DISTRIBUTION_CONSISTENT_WEIGHTED,
+  MEMCACHED_DISTRIBUTION_VIRTUAL_BUCKET,
+  MEMCACHED_DISTRIBUTION_CONSISTENT_MAX
+};
+
+#ifndef __cplusplus
+typedef enum memcached_server_distribution_t memcached_server_distribution_t;
+#endif
diff --git a/include/libmemcached-1.0/verbosity.h b/include/libmemcached-1.0/verbosity.h
new file mode 100644 (file)
index 0000000..3ab7a33
--- /dev/null
@@ -0,0 +1,27 @@
+/*
+    +--------------------------------------------------------------------+
+    | libmemcached - 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 Michael Wallner   <mike@php.net>                |
+    +--------------------------------------------------------------------+
+*/
+
+#pragma once
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+LIBMEMCACHED_API
+memcached_return_t memcached_verbosity(memcached_st *ptr, uint32_t verbosity);
+
+#ifdef __cplusplus
+}
+#endif
diff --git a/include/libmemcached-1.0/version.h b/include/libmemcached-1.0/version.h
new file mode 100644 (file)
index 0000000..db8ccb7
--- /dev/null
@@ -0,0 +1,30 @@
+/*
+    +--------------------------------------------------------------------+
+    | libmemcached - 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 Michael Wallner   <mike@php.net>                |
+    +--------------------------------------------------------------------+
+*/
+
+#pragma once
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+LIBMEMCACHED_API
+memcached_return_t memcached_version(memcached_st *ptr);
+
+LIBMEMCACHED_API
+const char *memcached_lib_version(void);
+
+#ifdef __cplusplus
+}
+#endif
diff --git a/include/libmemcached-1.0/visibility.h b/include/libmemcached-1.0/visibility.h
new file mode 100644 (file)
index 0000000..419b3d5
--- /dev/null
@@ -0,0 +1,64 @@
+/*
+    +--------------------------------------------------------------------+
+    | libmemcached - 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 Michael Wallner   <mike@php.net>                |
+    +--------------------------------------------------------------------+
+*/
+
+#pragma once
+
+/**
+ *
+ * LIBMEMCACHED_API is used for the public API symbols. It either DLL imports or
+ * DLL exports (or does nothing for static build).
+ *
+ * LIBMEMCACHED_LOCAL is used for non-api symbols.
+ */
+
+#if defined(BUILDING_LIBMEMCACHEDINTERNAL)
+#  if defined(HAVE_VISIBILITY) && HAVE_VISIBILITY
+#    define LIBMEMCACHED_API   __attribute__((visibility("default")))
+#    define LIBMEMCACHED_LOCAL __attribute__((visibility("default")))
+#  elif defined(__SUNPRO_C) && (__SUNPRO_C >= 0x550)
+#    define LIBMEMCACHED_API   __global
+#    define LIBMEMCACHED_LOCAL __global
+#  elif defined(_MSC_VER)
+#    define LIBMEMCACHED_API   extern __declspec(dllexport)
+#    define LIBMEMCACHED_LOCAL extern __declspec(dllexport)
+#  else
+#    define LIBMEMCACHED_API
+#    define LIBMEMCACHED_LOCAL
+#  endif
+#else
+#  if defined(BUILDING_LIBMEMCACHED)
+#    if defined(HAVE_VISIBILITY) && HAVE_VISIBILITY
+#      define LIBMEMCACHED_API   __attribute__((visibility("default")))
+#      define LIBMEMCACHED_LOCAL __attribute__((visibility("hidden")))
+#    elif defined(__SUNPRO_C) && (__SUNPRO_C >= 0x550)
+#      define LIBMEMCACHED_API   __global
+#      define LIBMEMCACHED_LOCAL __hidden
+#    elif defined(_MSC_VER)
+#      define LIBMEMCACHED_API extern __declspec(dllexport)
+#      define LIBMEMCACHED_LOCAL
+#    else
+#      define LIBMEMCACHED_API
+#      define LIBMEMCACHED_LOCAL
+#    endif /* defined(HAVE_VISIBILITY) */
+#  else    /* defined(BUILDING_LIBMEMCACHED) */
+#    if defined(_MSC_VER)
+#      define LIBMEMCACHED_API extern __declspec(dllimport)
+#      define LIBMEMCACHED_LOCAL
+#    else
+#      define LIBMEMCACHED_API
+#      define LIBMEMCACHED_LOCAL
+#    endif /* defined(_MSC_VER) */
+#  endif   /* defined(BUILDING_LIBMEMCACHED) */
+#endif     /* defined(BUILDING_LIBMEMCACHEDINTERNAL) */
diff --git a/include/libmemcached-1/CMakeLists.txt b/include/libmemcached-1/CMakeLists.txt
deleted file mode 100644 (file)
index 4f19a88..0000000
+++ /dev/null
@@ -1,51 +0,0 @@
-
-add_subdirectory(struct)
-add_subdirectory(types)
-
-install_public_headers(
-        libmemcached-1
-
-        @configure.h
-        alloc.h
-        allocators.h
-        analyze.h
-        auto.h
-        basic_string.h
-        behavior.h
-        callback.h
-        callbacks.h
-        defaults.h
-        delete.h
-        deprecated_types.h
-        dump.h
-        encoding_key.h
-        error.h
-        exception.hpp
-        exist.h
-        fetch.h
-        flush_buffers.h
-        flush.h
-        get.h
-        hash.h
-        limits.h
-        memcached.h
-        memcached.hpp
-        options.h
-        parse.h
-        platform.h
-        quit.h
-        result.h
-        return.h
-        sasl.h
-        server.h
-        server_list.h
-        stats.h
-        storage.h
-        strerror.h
-        touch.h
-        triggers.h
-        types.h
-        verbosity.h
-        version.h
-        visibility.h
-        )
diff --git a/include/libmemcached-1/alloc.h b/include/libmemcached-1/alloc.h
deleted file mode 100644 (file)
index 23bc5cb..0000000
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
-    +--------------------------------------------------------------------+
-    | libmemcached - 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 Michael Wallner   <mike@php.net>                |
-    +--------------------------------------------------------------------+
-*/
-
-#pragma once
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/**
-  Memory allocation functions.
-*/
-typedef void (*memcached_free_fn)(const memcached_st *ptr, void *mem, void *context);
-typedef void *(*memcached_malloc_fn)(const memcached_st *ptr, const size_t size, void *context);
-typedef void *(*memcached_realloc_fn)(const memcached_st *ptr, void *mem, const size_t size,
-                                      void *context);
-typedef void *(*memcached_calloc_fn)(const memcached_st *ptr, size_t nelem, const size_t elsize,
-                                     void *context);
-
-#ifdef __cplusplus
-}
-#endif
diff --git a/include/libmemcached-1/allocators.h b/include/libmemcached-1/allocators.h
deleted file mode 100644 (file)
index c473e72..0000000
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
-    +--------------------------------------------------------------------+
-    | libmemcached - 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 Michael Wallner   <mike@php.net>                |
-    +--------------------------------------------------------------------+
-*/
-
-#pragma once
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-LIBMEMCACHED_API
-memcached_return_t memcached_set_memory_allocators(memcached_st *ptr,
-                                                   memcached_malloc_fn mem_malloc,
-                                                   memcached_free_fn mem_free,
-                                                   memcached_realloc_fn mem_realloc,
-                                                   memcached_calloc_fn mem_calloc, void *context);
-
-LIBMEMCACHED_API
-void memcached_get_memory_allocators(const memcached_st *ptr, memcached_malloc_fn *mem_malloc,
-                                     memcached_free_fn *mem_free, memcached_realloc_fn *mem_realloc,
-                                     memcached_calloc_fn *mem_calloc);
-
-LIBMEMCACHED_API
-void *memcached_get_memory_allocators_context(const memcached_st *ptr);
-
-#ifdef __cplusplus
-}
-#endif
diff --git a/include/libmemcached-1/analyze.h b/include/libmemcached-1/analyze.h
deleted file mode 100644 (file)
index 5800973..0000000
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
-    +--------------------------------------------------------------------+
-    | libmemcached - 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 Michael Wallner   <mike@php.net>                |
-    +--------------------------------------------------------------------+
-*/
-
-#include "libmemcached-1/struct/analysis.h"
-
-#pragma once
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-LIBMEMCACHED_API
-memcached_analysis_st *memcached_analyze(memcached_st *memc, memcached_stat_st *memc_stat,
-                                         memcached_return_t *error);
-
-LIBMEMCACHED_API
-void memcached_analyze_free(memcached_analysis_st *);
-
-#ifdef __cplusplus
-}
-#endif
diff --git a/include/libmemcached-1/auto.h b/include/libmemcached-1/auto.h
deleted file mode 100644 (file)
index ca1896e..0000000
+++ /dev/null
@@ -1,67 +0,0 @@
-/*
-    +--------------------------------------------------------------------+
-    | libmemcached - 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 Michael Wallner   <mike@php.net>                |
-    +--------------------------------------------------------------------+
-*/
-
-#pragma once
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-LIBMEMCACHED_API
-memcached_return_t memcached_increment(memcached_st *ptr, const char *key, size_t key_length,
-                                       uint32_t offset, uint64_t *value);
-LIBMEMCACHED_API
-memcached_return_t memcached_decrement(memcached_st *ptr, const char *key, size_t key_length,
-                                       uint32_t offset, uint64_t *value);
-
-LIBMEMCACHED_API
-memcached_return_t memcached_increment_by_key(memcached_st *ptr, const char *group_key,
-                                              size_t group_key_length, const char *key,
-                                              size_t key_length, uint64_t offset, uint64_t *value);
-
-LIBMEMCACHED_API
-memcached_return_t memcached_decrement_by_key(memcached_st *ptr, const char *group_key,
-                                              size_t group_key_length, const char *key,
-                                              size_t key_length, uint64_t offset, uint64_t *value);
-
-LIBMEMCACHED_API
-memcached_return_t memcached_increment_with_initial(memcached_st *ptr, const char *key,
-                                                    size_t key_length, uint64_t offset,
-                                                    uint64_t initial, time_t expiration,
-                                                    uint64_t *value);
-
-LIBMEMCACHED_API
-memcached_return_t memcached_decrement_with_initial(memcached_st *ptr, const char *key,
-                                                    size_t key_length, uint64_t offset,
-                                                    uint64_t initial, time_t expiration,
-                                                    uint64_t *value);
-
-LIBMEMCACHED_API
-memcached_return_t memcached_increment_with_initial_by_key(memcached_st *ptr, const char *group_key,
-                                                           size_t group_key_length, const char *key,
-                                                           size_t key_length, uint64_t offset,
-                                                           uint64_t initial, time_t expiration,
-                                                           uint64_t *value);
-
-LIBMEMCACHED_API
-memcached_return_t memcached_decrement_with_initial_by_key(memcached_st *ptr, const char *group_key,
-                                                           size_t group_key_length, const char *key,
-                                                           size_t key_length, uint64_t offset,
-                                                           uint64_t initial, time_t expiration,
-                                                           uint64_t *value);
-
-#ifdef __cplusplus
-}
-#endif
diff --git a/include/libmemcached-1/basic_string.h b/include/libmemcached-1/basic_string.h
deleted file mode 100644 (file)
index 27b160c..0000000
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
-    +--------------------------------------------------------------------+
-    | libmemcached - 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 Michael Wallner   <mike@php.net>                |
-    +--------------------------------------------------------------------+
-*/
-
-#pragma once
-
-// No assumptions of NULL should be made
-
-struct memcached_string_t {
-  const char *c_str;
-  size_t size;
-};
-
-#define memcached_size(X)         (X).size;
-#define memcached_c_str(X)        (X).c_str;
-#define memcached_string_param(X) (X).c_str, (X).size
-
-#ifdef __cplusplus
-#  define memcached_string_printf(X) int((X).size), (X).c_str
-#else
-#  define memcached_string_printf(X) (int) ((X).size), (X).c_str
-#endif
diff --git a/include/libmemcached-1/behavior.h b/include/libmemcached-1/behavior.h
deleted file mode 100644 (file)
index 42864b4..0000000
+++ /dev/null
@@ -1,62 +0,0 @@
-/*
-    +--------------------------------------------------------------------+
-    | libmemcached - 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 Michael Wallner   <mike@php.net>                |
-    +--------------------------------------------------------------------+
-*/
-
-#pragma once
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-LIBMEMCACHED_API
-memcached_return_t memcached_behavior_set(memcached_st *ptr, const memcached_behavior_t flag,
-                                          uint64_t data);
-
-LIBMEMCACHED_API
-uint64_t memcached_behavior_get(memcached_st *ptr, const memcached_behavior_t flag);
-
-LIBMEMCACHED_API
-memcached_return_t memcached_behavior_set_distribution(memcached_st *ptr,
-                                                       memcached_server_distribution_t type);
-
-LIBMEMCACHED_API
-memcached_server_distribution_t memcached_behavior_get_distribution(memcached_st *ptr);
-
-LIBMEMCACHED_API
-memcached_return_t memcached_behavior_set_key_hash(memcached_st *ptr, memcached_hash_t type);
-
-LIBMEMCACHED_API
-memcached_hash_t memcached_behavior_get_key_hash(memcached_st *ptr);
-
-LIBMEMCACHED_API
-memcached_return_t memcached_behavior_set_distribution_hash(memcached_st *ptr,
-                                                            memcached_hash_t type);
-
-LIBMEMCACHED_API
-memcached_hash_t memcached_behavior_get_distribution_hash(memcached_st *ptr);
-
-LIBMEMCACHED_API
-const char *libmemcached_string_behavior(const memcached_behavior_t flag);
-
-LIBMEMCACHED_API
-const char *libmemcached_string_distribution(const memcached_server_distribution_t flag);
-
-LIBMEMCACHED_API
-memcached_return_t memcached_bucket_set(memcached_st *self, const uint32_t *host_map,
-                                        const uint32_t *forward_map, const uint32_t buckets,
-                                        const uint32_t replicas);
-
-#ifdef __cplusplus
-}
-#endif
diff --git a/include/libmemcached-1/callback.h b/include/libmemcached-1/callback.h
deleted file mode 100644 (file)
index 2adef8e..0000000
+++ /dev/null
@@ -1,31 +0,0 @@
-/*
-    +--------------------------------------------------------------------+
-    | libmemcached - 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 Michael Wallner   <mike@php.net>                |
-    +--------------------------------------------------------------------+
-*/
-
-#pragma once
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-LIBMEMCACHED_API
-memcached_return_t memcached_callback_set(memcached_st *ptr, const memcached_callback_t flag,
-                                          const void *data);
-LIBMEMCACHED_API
-void *memcached_callback_get(memcached_st *ptr, const memcached_callback_t flag,
-                             memcached_return_t *error);
-
-#ifdef __cplusplus
-}
-#endif
diff --git a/include/libmemcached-1/callbacks.h b/include/libmemcached-1/callbacks.h
deleted file mode 100644 (file)
index 4c578ac..0000000
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
-    +--------------------------------------------------------------------+
-    | libmemcached - 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 Michael Wallner   <mike@php.net>                |
-    +--------------------------------------------------------------------+
-*/
-
-#pragma once
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-typedef memcached_return_t (*memcached_execute_fn)(const memcached_st *ptr,
-                                                   memcached_result_st *result, void *context);
-typedef memcached_return_t (*memcached_server_fn)(const memcached_st *ptr,
-                                                  const memcached_instance_st *server,
-                                                  void *context);
-typedef memcached_return_t (*memcached_stat_fn)(const memcached_instance_st *server,
-                                                const char *key, size_t key_length,
-                                                const char *value, size_t value_length,
-                                                void *context);
-
-#ifdef __cplusplus
-}
-#endif
diff --git a/include/libmemcached-1/configure.h.in b/include/libmemcached-1/configure.h.in
deleted file mode 100644 (file)
index dfa55eb..0000000
+++ /dev/null
@@ -1,31 +0,0 @@
-/*
-    +--------------------------------------------------------------------+
-    | libmemcached - 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 Michael Wallner   <mike@php.net>                |
-    +--------------------------------------------------------------------+
-*/
-
-#pragma once
-
-#cmakedefine01 LIBMEMCACHED_ENABLE_DEPRECATED
-#cmakedefine01 LIBMEMCACHED_WITH_SASL_SUPPORT
-
-#cmakedefine HAVE_VISIBILITY 1
-
-#cmakedefine HAVE_NETDB_H 1
-
-#cmakedefine HAVE_IN_PORT_T 1
-#cmakedefine HAVE_PID_T 1
-#cmakedefine HAVE_SSIZE_T 1
-
-#define LIBMEMCACHED_VERSION_STRING "@LIBMEMCACHED_VERSION@"
-#define LIBMEMCACHED_VERSION_HEX    @LIBMEMCACHED_VERSION_HEX@
-
diff --git a/include/libmemcached-1/defaults.h b/include/libmemcached-1/defaults.h
deleted file mode 100644 (file)
index 3ce5667..0000000
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
-    +--------------------------------------------------------------------+
-    | libmemcached - 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 Michael Wallner   <mike@php.net>                |
-    +--------------------------------------------------------------------+
-*/
-
-#pragma once
-
-/* Public defines */
-#define MEMCACHED_DEFAULT_PORT             11211
-#define MEMCACHED_DEFAULT_PORT_STRING      "11211"
-#define MEMCACHED_POINTS_PER_SERVER        100
-#define MEMCACHED_POINTS_PER_SERVER_KETAMA 160
-#define MEMCACHED_CONTINUUM_SIZE \
-  MEMCACHED_POINTS_PER_SERVER * 100 /* This would then set max hosts to 100 */
-#define MEMCACHED_STRIDE                  4
-#define MEMCACHED_DEFAULT_TIMEOUT         5000
-#define MEMCACHED_DEFAULT_CONNECT_TIMEOUT 4000
-#define MEMCACHED_CONTINUUM_ADDITION \
-  10 /* How many extra slots we should build for in the continuum */
-#define MEMCACHED_EXPIRATION_NOT_ADD           0xffffffffU
-#define MEMCACHED_SERVER_FAILURE_LIMIT         5
-#define MEMCACHED_SERVER_FAILURE_RETRY_TIMEOUT 2
-#define MEMCACHED_SERVER_FAILURE_DEAD_TIMEOUT  0
-#define MEMCACHED_SERVER_TIMEOUT_LIMIT         0
diff --git a/include/libmemcached-1/delete.h b/include/libmemcached-1/delete.h
deleted file mode 100644 (file)
index 8064506..0000000
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
-    +--------------------------------------------------------------------+
-    | libmemcached - 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 Michael Wallner   <mike@php.net>                |
-    +--------------------------------------------------------------------+
-*/
-
-#pragma once
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-LIBMEMCACHED_API
-memcached_return_t memcached_delete(memcached_st *ptr, const char *key, size_t key_length,
-                                    time_t expiration);
-
-LIBMEMCACHED_API
-memcached_return_t memcached_delete_by_key(memcached_st *ptr, const char *group_key,
-                                           size_t group_key_length, const char *key,
-                                           size_t key_length, time_t expiration);
-
-#ifdef __cplusplus
-}
-#endif
diff --git a/include/libmemcached-1/deprecated_types.h b/include/libmemcached-1/deprecated_types.h
deleted file mode 100644 (file)
index cae0173..0000000
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
-    +--------------------------------------------------------------------+
-    | libmemcached - 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 Michael Wallner   <mike@php.net>                |
-    +--------------------------------------------------------------------+
-*/
-
-#pragma once
-
-/**
-  @note The following definitions are just here for backwards compatibility.
-*/
-typedef memcached_return_t memcached_return;
-typedef memcached_server_distribution_t memcached_server_distribution;
-typedef memcached_behavior_t memcached_behavior;
-typedef memcached_callback_t memcached_callback;
-typedef memcached_hash_t memcached_hash;
-typedef memcached_connection_t memcached_connection;
-typedef memcached_clone_fn memcached_clone_func;
-typedef memcached_cleanup_fn memcached_cleanup_func;
-typedef memcached_execute_fn memcached_execute_function;
-typedef memcached_server_fn memcached_server_function;
-typedef memcached_trigger_key_fn memcached_trigger_key;
-typedef memcached_trigger_delete_key_fn memcached_trigger_delete_key;
-typedef memcached_dump_fn memcached_dump_func;
-typedef memcached_instance_st *memcached_server_instance_st;
diff --git a/include/libmemcached-1/dump.h b/include/libmemcached-1/dump.h
deleted file mode 100644 (file)
index 96ed43f..0000000
+++ /dev/null
@@ -1,28 +0,0 @@
-/*
-    +--------------------------------------------------------------------+
-    | libmemcached - 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 Michael Wallner   <mike@php.net>                |
-    +--------------------------------------------------------------------+
-*/
-
-#pragma once
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-LIBMEMCACHED_API
-memcached_return_t memcached_dump(memcached_st *ptr, memcached_dump_fn *function, void *context,
-                                  uint32_t number_of_callbacks);
-
-#ifdef __cplusplus
-}
-#endif
diff --git a/include/libmemcached-1/encoding_key.h b/include/libmemcached-1/encoding_key.h
deleted file mode 100644 (file)
index 7028945..0000000
+++ /dev/null
@@ -1,27 +0,0 @@
-/*
-    +--------------------------------------------------------------------+
-    | libmemcached - 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 Michael Wallner   <mike@php.net>                |
-    +--------------------------------------------------------------------+
-*/
-
-#pragma once
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-LIBMEMCACHED_API
-memcached_return_t memcached_set_encoding_key(memcached_st *, const char *str, size_t length);
-
-#ifdef __cplusplus
-}
-#endif
diff --git a/include/libmemcached-1/error.h b/include/libmemcached-1/error.h
deleted file mode 100644 (file)
index 56eac9d..0000000
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
-    +--------------------------------------------------------------------+
-    | libmemcached - 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 Michael Wallner   <mike@php.net>                |
-    +--------------------------------------------------------------------+
-*/
-
-#pragma once
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-LIBMEMCACHED_API
-const char *memcached_error(const memcached_st *);
-
-LIBMEMCACHED_API
-const char *memcached_last_error_message(const memcached_st *);
-
-LIBMEMCACHED_API
-void memcached_error_print(const memcached_st *);
-
-LIBMEMCACHED_API
-memcached_return_t memcached_last_error(const memcached_st *);
-
-LIBMEMCACHED_API
-int memcached_last_error_errno(const memcached_st *);
-
-LIBMEMCACHED_API
-const char *memcached_server_error(const memcached_instance_st *ptr);
-
-LIBMEMCACHED_API
-memcached_return_t memcached_server_error_return(const memcached_instance_st *ptr);
-
-#ifdef __cplusplus
-} // extern "C"
-#endif
diff --git a/include/libmemcached-1/exception.hpp b/include/libmemcached-1/exception.hpp
deleted file mode 100644 (file)
index d7d7481..0000000
+++ /dev/null
@@ -1,57 +0,0 @@
-/*
-    +--------------------------------------------------------------------+
-    | libmemcached - 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 Michael Wallner   <mike@php.net>                |
-    +--------------------------------------------------------------------+
-*/
-
-#pragma once
-
-#include <stdexcept>
-#include <string>
-
-namespace memcache {
-class Exception : public std::runtime_error {
-public:
-  Exception(const std::string &msg, int in_errno)
-  : std::runtime_error(msg)
-  , _errno(in_errno) {}
-
-  Exception(const char *msg, int in_errno)
-  : std::runtime_error(std::string(msg))
-  , _errno(in_errno) {}
-
-  virtual ~Exception() throw() {}
-
-  int getErrno() const { return _errno; }
-
-private:
-  int _errno;
-};
-
-class Warning : public Exception {
-public:
-  Warning(const std::string &msg, int in_errno)
-  : Exception(msg, in_errno) {}
-  Warning(const char *msg, int in_errno)
-  : Exception(msg, in_errno) {}
-};
-
-class Error : public Exception {
-public:
-  Error(const std::string &msg, int in_errno)
-  : Exception(msg, in_errno) {}
-  Error(const char *msg, int in_errno)
-  : Exception(msg, in_errno) {}
-  virtual ~Error() throw() {}
-};
-
-} // namespace memcache
diff --git a/include/libmemcached-1/exist.h b/include/libmemcached-1/exist.h
deleted file mode 100644 (file)
index 7ec1e4b..0000000
+++ /dev/null
@@ -1,31 +0,0 @@
-/*
-    +--------------------------------------------------------------------+
-    | libmemcached - 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 Michael Wallner   <mike@php.net>                |
-    +--------------------------------------------------------------------+
-*/
-
-#pragma once
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-LIBMEMCACHED_API
-memcached_return_t memcached_exist(memcached_st *memc, const char *key, size_t key_length);
-
-LIBMEMCACHED_API
-memcached_return_t memcached_exist_by_key(memcached_st *memc, const char *group_key,
-                                          size_t group_key_length, const char *key,
-                                          size_t key_length);
-#ifdef __cplusplus
-}
-#endif
diff --git a/include/libmemcached-1/fetch.h b/include/libmemcached-1/fetch.h
deleted file mode 100644 (file)
index 62a6c13..0000000
+++ /dev/null
@@ -1,28 +0,0 @@
-/*
-    +--------------------------------------------------------------------+
-    | libmemcached - 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 Michael Wallner   <mike@php.net>                |
-    +--------------------------------------------------------------------+
-*/
-
-#pragma once
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-LIBMEMCACHED_API
-memcached_return_t memcached_fetch_execute(memcached_st *ptr, memcached_execute_fn *callback,
-                                           void *context, uint32_t number_of_callbacks);
-
-#ifdef __cplusplus
-}
-#endif
diff --git a/include/libmemcached-1/flush.h b/include/libmemcached-1/flush.h
deleted file mode 100644 (file)
index cdf35a2..0000000
+++ /dev/null
@@ -1,27 +0,0 @@
-/*
-    +--------------------------------------------------------------------+
-    | libmemcached - 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 Michael Wallner   <mike@php.net>                |
-    +--------------------------------------------------------------------+
-*/
-
-#pragma once
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-LIBMEMCACHED_API
-memcached_return_t memcached_flush(memcached_st *ptr, time_t expiration);
-
-#ifdef __cplusplus
-}
-#endif
diff --git a/include/libmemcached-1/flush_buffers.h b/include/libmemcached-1/flush_buffers.h
deleted file mode 100644 (file)
index 49df03c..0000000
+++ /dev/null
@@ -1,27 +0,0 @@
-/*
-    +--------------------------------------------------------------------+
-    | libmemcached - 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 Michael Wallner   <mike@php.net>                |
-    +--------------------------------------------------------------------+
-*/
-
-#pragma once
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-LIBMEMCACHED_API
-memcached_return_t memcached_flush_buffers(memcached_st *mem);
-
-#ifdef __cplusplus
-}
-#endif
diff --git a/include/libmemcached-1/get.h b/include/libmemcached-1/get.h
deleted file mode 100644 (file)
index db94dfc..0000000
+++ /dev/null
@@ -1,64 +0,0 @@
-/*
-    +--------------------------------------------------------------------+
-    | libmemcached - 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 Michael Wallner   <mike@php.net>                |
-    +--------------------------------------------------------------------+
-*/
-
-#pragma once
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/* Public defines */
-LIBMEMCACHED_API
-char *memcached_get(memcached_st *ptr, const char *key, size_t key_length, size_t *value_length,
-                    uint32_t *flags, memcached_return_t *error);
-
-LIBMEMCACHED_API
-memcached_return_t memcached_mget(memcached_st *ptr, const char *const *keys,
-                                  const size_t *key_length, size_t number_of_keys);
-
-LIBMEMCACHED_API
-char *memcached_get_by_key(memcached_st *ptr, const char *group_key, size_t group_key_length,
-                           const char *key, size_t key_length, size_t *value_length,
-                           uint32_t *flags, memcached_return_t *error);
-
-LIBMEMCACHED_API
-memcached_return_t memcached_mget_by_key(memcached_st *ptr, const char *group_key,
-                                         size_t group_key_length, const char *const *keys,
-                                         const size_t *key_length, const size_t number_of_keys);
-
-LIBMEMCACHED_API
-char *memcached_fetch(memcached_st *ptr, char *key, size_t *key_length, size_t *value_length,
-                      uint32_t *flags, memcached_return_t *error);
-
-LIBMEMCACHED_API
-memcached_result_st *memcached_fetch_result(memcached_st *ptr, memcached_result_st *result,
-                                            memcached_return_t *error);
-
-LIBMEMCACHED_API
-memcached_return_t memcached_mget_execute(memcached_st *ptr, const char *const *keys,
-                                          const size_t *key_length, const size_t number_of_keys,
-                                          memcached_execute_fn *callback, void *context,
-                                          const uint32_t number_of_callbacks);
-
-LIBMEMCACHED_API
-memcached_return_t memcached_mget_execute_by_key(memcached_st *ptr, const char *group_key,
-                                                 size_t group_key_length, const char *const *keys,
-                                                 const size_t *key_length, size_t number_of_keys,
-                                                 memcached_execute_fn *callback, void *context,
-                                                 const uint32_t number_of_callbacks);
-
-#ifdef __cplusplus
-}
-#endif
diff --git a/include/libmemcached-1/hash.h b/include/libmemcached-1/hash.h
deleted file mode 100644 (file)
index d72e679..0000000
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
-    +--------------------------------------------------------------------+
-    | libmemcached - 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 Michael Wallner   <mike@php.net>                |
-    +--------------------------------------------------------------------+
-*/
-
-#pragma once
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/* The two public hash bits */
-LIBMEMCACHED_API
-uint32_t memcached_generate_hash_value(const char *key, size_t key_length,
-                                       memcached_hash_t hash_algorithm);
-
-LIBMEMCACHED_API
-const hashkit_st *memcached_get_hashkit(const memcached_st *ptr);
-
-LIBMEMCACHED_API
-memcached_return_t memcached_set_hashkit(memcached_st *ptr, hashkit_st *hashk);
-
-LIBMEMCACHED_API
-uint32_t memcached_generate_hash(const memcached_st *ptr, const char *key, size_t key_length);
-
-LIBMEMCACHED_API
-void memcached_autoeject(memcached_st *ptr);
-
-LIBMEMCACHED_API
-const char *libmemcached_string_hash(memcached_hash_t type);
-
-#ifdef __cplusplus
-}
-#endif
diff --git a/include/libmemcached-1/limits.h b/include/libmemcached-1/limits.h
deleted file mode 100644 (file)
index f4d0ed6..0000000
+++ /dev/null
@@ -1,28 +0,0 @@
-/*
-    +--------------------------------------------------------------------+
-    | libmemcached - 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 Michael Wallner   <mike@php.net>                |
-    +--------------------------------------------------------------------+
-*/
-
-#pragma once
-
-#define MEMCACHED_MAX_BUFFER    8196
-#define MEMCACHED_MAX_KEY       251 /* We add one to have it null terminated */
-#define MEMCACHED_MAX_NAMESPACE 128
-
-#define MEMCACHED_MAX_HOST_SORT_LENGTH       86 /* Used for Ketama */
-#define MEMCACHED_MAX_INTEGER_DISPLAY_LENGTH 20
-#define MEMCACHED_VERSION_STRING_LENGTH      24
-
-/* legacy */
-#define MEMCACHED_MAXIMUM_INTEGER_DISPLAY_LENGTH MEMCACHED_MAX_INTEGER_DISPLAY_LENGTH
-#define MEMCACHED_PREFIX_KEY_MAX_SIZE            MEMCACHED_MAX_NAMESPACE
diff --git a/include/libmemcached-1/memcached.h b/include/libmemcached-1/memcached.h
deleted file mode 100644 (file)
index a1d0522..0000000
+++ /dev/null
@@ -1,130 +0,0 @@
-/*
-    +--------------------------------------------------------------------+
-    | libmemcached - 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 Michael Wallner   <mike@php.net>                |
-    +--------------------------------------------------------------------+
-*/
-
-#pragma once
-
-#include "libmemcached-1/configure.h"
-#include "libmemcached-1/visibility.h"
-#include "libmemcached-1/platform.h"
-
-#include "libmemcached-1/limits.h"
-#include "libmemcached-1/defaults.h"
-
-#include "libmemcached-1/types/behavior.h"
-#include "libmemcached-1/types/callback.h"
-#include "libmemcached-1/types/connection.h"
-#include "libmemcached-1/types/hash.h"
-#include "libmemcached-1/types/return.h"
-#include "libmemcached-1/types/server_distribution.h"
-
-#include "libmemcached-1/return.h"
-
-#include "libmemcached-1/types.h"
-#include "libmemcached-1/callbacks.h"
-#include "libmemcached-1/alloc.h"
-#include "libmemcached-1/triggers.h"
-
-#include "libhashkit-1/hashkit.h"
-
-#include "libmemcached-1/struct/callback.h"
-#include "libmemcached-1/struct/string.h"
-#include "libmemcached-1/struct/result.h"
-#include "libmemcached-1/struct/allocator.h"
-#include "libmemcached-1/struct/sasl.h"
-#include "libmemcached-1/struct/memcached.h"
-#include "libmemcached-1/struct/server.h"
-#include "libmemcached-1/struct/stat.h"
-
-#include "libmemcached-1/basic_string.h"
-#include "libmemcached-1/error.h"
-#include "libmemcached-1/stats.h"
-
-// Everything above this line must be in the order specified.
-#include "libmemcached-1/allocators.h"
-#include "libmemcached-1/analyze.h"
-#include "libmemcached-1/auto.h"
-#include "libmemcached-1/behavior.h"
-#include "libmemcached-1/callback.h"
-#include "libmemcached-1/delete.h"
-#include "libmemcached-1/dump.h"
-#include "libmemcached-1/encoding_key.h"
-#include "libmemcached-1/exist.h"
-#include "libmemcached-1/fetch.h"
-#include "libmemcached-1/flush.h"
-#include "libmemcached-1/flush_buffers.h"
-#include "libmemcached-1/get.h"
-#include "libmemcached-1/hash.h"
-#include "libmemcached-1/options.h"
-#include "libmemcached-1/parse.h"
-#include "libmemcached-1/quit.h"
-#include "libmemcached-1/result.h"
-#include "libmemcached-1/server.h"
-#include "libmemcached-1/server_list.h"
-#include "libmemcached-1/storage.h"
-#include "libmemcached-1/strerror.h"
-#include "libmemcached-1/touch.h"
-#include "libmemcached-1/verbosity.h"
-#include "libmemcached-1/version.h"
-#include "libmemcached-1/sasl.h"
-
-#include "libmemcached-1/deprecated_types.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-LIBMEMCACHED_API
-void memcached_servers_reset(memcached_st *ptr);
-
-LIBMEMCACHED_API
-memcached_st *memcached_create(memcached_st *ptr);
-
-LIBMEMCACHED_API
-memcached_st *memcached(const char *string, size_t string_length);
-
-LIBMEMCACHED_API
-void memcached_free(memcached_st *ptr);
-
-LIBMEMCACHED_API
-memcached_return_t memcached_reset(memcached_st *ptr);
-
-LIBMEMCACHED_API
-void memcached_reset_last_disconnected_server(memcached_st *ptr);
-
-LIBMEMCACHED_API
-memcached_st *memcached_clone(memcached_st *clone, const memcached_st *ptr);
-
-LIBMEMCACHED_API
-void *memcached_get_user_data(const memcached_st *ptr);
-
-LIBMEMCACHED_API
-void *memcached_set_user_data(memcached_st *ptr, void *data);
-
-LIBMEMCACHED_API
-memcached_return_t memcached_push(memcached_st *destination, const memcached_st *source);
-
-LIBMEMCACHED_API
-const memcached_instance_st *memcached_server_instance_by_position(const memcached_st *ptr,
-                                                                   uint32_t server_key);
-
-LIBMEMCACHED_API
-uint32_t memcached_server_count(const memcached_st *);
-
-LIBMEMCACHED_API
-uint64_t memcached_query_id(const memcached_st *);
-
-#ifdef __cplusplus
-} // extern "C"
-#endif
diff --git a/include/libmemcached-1/memcached.hpp b/include/libmemcached-1/memcached.hpp
deleted file mode 100644 (file)
index 5d90256..0000000
+++ /dev/null
@@ -1,677 +0,0 @@
-/*
-    +--------------------------------------------------------------------+
-    | libmemcached - 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 Michael Wallner   <mike@php.net>                |
-    +--------------------------------------------------------------------+
-*/
-
-#pragma once
-
-#include "libmemcached-1/memcached.h"
-#if 0
-#  include "libmemcached/exception.hpp"
-#endif
-
-#include <cstring>
-#include <sstream>
-#include <string>
-#include <vector>
-#include <map>
-
-namespace memcache {
-
-/**
- * This is the core memcached library (if later, other objects
- * are needed, they will be created from this class).
- */
-class Memcache {
-public:
-  Memcache() { memc_ = memcached(NULL, 0); }
-
-  Memcache(const std::string &config) { memc_ = memcached(config.c_str(), config.size()); }
-
-  Memcache(const std::string &hostname, in_port_t port) {
-    memc_ = memcached(NULL, 0);
-    if (memc_) {
-      memcached_server_add(memc_, hostname.c_str(), port);
-    }
-  }
-
-  Memcache(memcached_st *clone) { memc_ = memcached_clone(NULL, clone); }
-
-  Memcache(const Memcache &rhs) { memc_ = memcached_clone(NULL, rhs.getImpl()); }
-
-  Memcache &operator=(const Memcache &rhs) {
-    if (this != &rhs) {
-      memcached_free(memc_);
-      memc_ = memcached_clone(NULL, rhs.getImpl());
-    }
-
-    return *this;
-  }
-
-  ~Memcache() { memcached_free(memc_); }
-
-  /**
-   * Get the internal memcached_st *
-   */
-  const memcached_st *getImpl() const { return memc_; }
-
-  /**
-   * Return an error string for the given return structure.
-   *
-   * @param[in] rc a memcached_return_t structure
-   * @return error string corresponding to given return code in the library.
-   */
-  const std::string getError(memcached_return_t rc) const {
-    /* first parameter to strerror is unused */
-    return memcached_strerror(NULL, rc);
-  }
-
-  bool error(std::string &error_message) const {
-    if (memcached_failed(memcached_last_error(memc_))) {
-      error_message += memcached_last_error_message(memc_);
-      return true;
-    }
-
-    return false;
-  }
-
-  bool error() const {
-    if (memcached_failed(memcached_last_error(memc_))) {
-      return true;
-    }
-
-    return false;
-  }
-
-  bool error(memcached_return_t &arg) const {
-    arg = memcached_last_error(memc_);
-    return memcached_failed(arg);
-  }
-
-  bool setBehavior(memcached_behavior_t flag, uint64_t data) {
-    return (memcached_success(memcached_behavior_set(memc_, flag, data)));
-  }
-
-  uint64_t getBehavior(memcached_behavior_t flag) { return memcached_behavior_get(memc_, flag); }
-
-  /**
-   * Configure the memcache object
-   *
-   * @param[in] in_config configuration
-   * @return true on success; false otherwise
-   */
-  bool configure(const std::string &configuration) {
-    memcached_st *new_memc = memcached(configuration.c_str(), configuration.size());
-
-    if (new_memc) {
-      memcached_free(memc_);
-      memc_ = new_memc;
-
-      return true;
-    }
-
-    return false;
-  }
-
-  /**
-   * Add a server to the list of memcached servers to use.
-   *
-   * @param[in] server_name name of the server to add
-   * @param[in] port port number of server to add
-   * @return true on success; false otherwise
-   */
-  bool addServer(const std::string &server_name, in_port_t port) {
-    return memcached_success(memcached_server_add(memc_, server_name.c_str(), port));
-  }
-
-  /**
-   * Remove a server from the list of memcached servers to use.
-   *
-   * @param[in] server_name name of the server to remove
-   * @param[in] port port number of server to remove
-   * @return true on success; false otherwise
-   */
-  bool removeServer(const std::string &server_name, in_port_t port) {
-    std::string tmp_str;
-    std::ostringstream strstm;
-    tmp_str.append(",");
-    tmp_str.append(server_name);
-    tmp_str.append(":");
-    strstm << port;
-    tmp_str.append(strstm.str());
-
-    // memcached_return_t rc= memcached_server_remove(server);
-
-    return false;
-  }
-
-  /**
-   * Fetches an individual value from the server. mget() must always
-   * be called before using this method.
-   *
-   * @param[in] key key of object to fetch
-   * @param[out] ret_val store returned object in this vector
-   * @return a memcached return structure
-   */
-  memcached_return_t fetch(std::string &key, std::vector<char> &ret_val, uint32_t &flags,
-                           uint64_t &cas_value) {
-    memcached_return_t rc;
-
-    memcached_result_st *result;
-    if ((result = memcached_fetch_result(memc_, NULL, &rc))) {
-      // Key
-      key.assign(memcached_result_key_value(result), memcached_result_key_length(result));
-
-      // Actual value, null terminated
-      ret_val.reserve(memcached_result_length(result) + 1);
-      ret_val.assign(memcached_result_value(result),
-                     memcached_result_value(result) + memcached_result_length(result) + 1);
-      ret_val.resize(memcached_result_length(result));
-
-      // Misc
-      flags = memcached_result_flags(result);
-      cas_value = memcached_result_cas(result);
-    }
-    memcached_result_free(result);
-
-    return rc;
-  }
-
-  memcached_return_t fetch(std::string &key, std::vector<char> &ret_val) {
-    uint32_t flags = 0;
-    uint64_t cas_value = 0;
-
-    return fetch(key, ret_val, flags, cas_value);
-  }
-
-  /**
-   * Fetches an individual value from the server.
-   *
-   * @param[in] key key of object whose value to get
-   * @param[out] ret_val object that is retrieved is stored in
-   *                     this vector
-   * @return true on success; false otherwise
-   */
-  bool get(const std::string &key, std::vector<char> &ret_val) {
-    uint32_t flags = 0;
-    memcached_return_t rc;
-    size_t value_length = 0;
-
-    char *value = memcached_get(memc_, key.c_str(), key.length(), &value_length, &flags, &rc);
-    if (value != NULL && ret_val.empty()) {
-      ret_val.reserve(value_length + 1); // Always provide null
-      ret_val.assign(value, value + value_length + 1);
-      ret_val.resize(value_length);
-      free(value);
-
-      return true;
-    }
-
-    return false;
-  }
-
-  /**
-   * Fetches an individual from a server which is specified by
-   * the master_key parameter that is used for determining which
-   * server an object was stored in if key partitioning was
-   * used for storage.
-   *
-   * @param[in] master_key key that specifies server object is stored on
-   * @param[in] key key of object whose value to get
-   * @param[out] ret_val object that is retrieved is stored in
-   *                     this vector
-   * @return true on success; false otherwise
-   */
-  bool getByKey(const std::string &master_key, const std::string &key, std::vector<char> &ret_val) {
-    uint32_t flags = 0;
-    memcached_return_t rc;
-    size_t value_length = 0;
-
-    char *value = memcached_get_by_key(memc_, master_key.c_str(), master_key.length(), key.c_str(),
-                                       key.length(), &value_length, &flags, &rc);
-    if (value) {
-      ret_val.reserve(value_length + 1); // Always provide null
-      ret_val.assign(value, value + value_length + 1);
-      ret_val.resize(value_length);
-      free(value);
-
-      return true;
-    }
-    return false;
-  }
-
-  /**
-   * Selects multiple keys at once. This method always
-   * works asynchronously.
-   *
-   * @param[in] keys vector of keys to select
-   * @return true if all keys are found
-   */
-  bool mget(const std::vector<std::string> &keys) {
-    std::vector<const char *> real_keys;
-    std::vector<size_t> key_len;
-    /*
-     * Construct an array which will contain the length
-     * of each of the strings in the input vector. Also, to
-     * interface with the memcached C API, we need to convert
-     * the vector of std::string's to a vector of char *.
-     */
-    real_keys.reserve(keys.size());
-    key_len.reserve(keys.size());
-
-    std::vector<std::string>::const_iterator it = keys.begin();
-
-    while (it != keys.end()) {
-      real_keys.push_back(const_cast<char *>((*it).c_str()));
-      key_len.push_back((*it).length());
-      ++it;
-    }
-
-    /*
-     * If the std::vector of keys is empty then we cannot
-     * call memcached_mget as we will get undefined behavior.
-     */
-    if (not real_keys.empty()) {
-      return memcached_success(memcached_mget(memc_, &real_keys[0], &key_len[0], real_keys.size()));
-    }
-
-    return false;
-  }
-
-  /**
-   * Writes an object to the server. If the object already exists, it will
-   * overwrite the existing object. This method always returns true
-   * when using non-blocking mode unless a network error occurs.
-   *
-   * @param[in] key key of object to write to server
-   * @param[in] value value of object to write to server
-   * @param[in] expiration time to keep the object stored in the server for
-   * @param[in] flags flags to store with the object
-   * @return true on succcess; false otherwise
-   */
-  bool set(const std::string &key, const std::vector<char> &value, time_t expiration,
-           uint32_t flags) {
-    memcached_return_t rc = memcached_set(memc_, key.c_str(), key.length(), value.data(),
-                                          value.size(), expiration, flags);
-    return memcached_success(rc);
-  }
-
-  bool set(const std::string &key, const char *value, const size_t value_length, time_t expiration,
-           uint32_t flags) {
-    memcached_return_t rc =
-        memcached_set(memc_, key.c_str(), key.length(), value, value_length, expiration, flags);
-    return memcached_success(rc);
-  }
-
-  /**
-   * Writes an object to a server specified by the master_key parameter.
-   * If the object already exists, it will overwrite the existing object.
-   *
-   * @param[in] master_key key that specifies server to write to
-   * @param[in] key key of object to write to server
-   * @param[in] value value of object to write to server
-   * @param[in] expiration time to keep the object stored in the server for
-   * @param[in] flags flags to store with the object
-   * @return true on succcess; false otherwise
-   */
-  bool setByKey(const std::string &master_key, const std::string &key,
-                const std::vector<char> &value, time_t expiration, uint32_t flags) {
-    return memcached_success(memcached_set_by_key(memc_, master_key.c_str(), master_key.length(),
-                                                  key.c_str(), key.length(), &value[0],
-                                                  value.size(), expiration, flags));
-  }
-
-  /**
-   * Writes a list of objects to the server. Objects are specified by
-   * 2 vectors - 1 vector of keys and 1 vector of values.
-   *
-   * @param[in] keys vector of keys of objects to write to server
-   * @param[in] values vector of values of objects to write to server
-   * @param[in] expiration time to keep the objects stored in server for
-   * @param[in] flags flags to store with the objects
-   * @return true on success; false otherwise
-   */
-  bool setAll(const std::vector<std::string> &keys, const std::vector<std::vector<char> *> &values,
-              time_t expiration, uint32_t flags) {
-    bool retval = true;
-    std::vector<std::string>::const_iterator key_it = keys.begin();
-    std::vector<std::vector<char> *>::const_iterator val_it = values.begin();
-    while (key_it != keys.end()) {
-      retval = set((*key_it), *(*val_it), expiration, flags);
-      if (retval == false) {
-        return retval;
-      }
-      ++key_it;
-      ++val_it;
-    }
-    return retval;
-  }
-
-  /**
-   * Writes a list of objects to the server. Objects are specified by
-   * a map of keys to values.
-   *
-   * @param[in] key_value_map map of keys and values to store in server
-   * @param[in] expiration time to keep the objects stored in server for
-   * @param[in] flags flags to store with the objects
-   * @return true on success; false otherwise
-   */
-  bool setAll(const std::map<const std::string, std::vector<char>> &key_value_map,
-              time_t expiration, uint32_t flags) {
-    std::map<const std::string, std::vector<char>>::const_iterator it = key_value_map.begin();
-
-    while (it != key_value_map.end()) {
-      if (!set(it->first, it->second, expiration, flags)) {
-        // We should tell the user what the key that failed was
-        return false;
-      }
-      ++it;
-    }
-
-    return true;
-  }
-
-  /**
-   * Increment the value of the object associated with the specified
-   * key by the offset given. The resulting value is saved in the value
-   * parameter.
-   *
-   * @param[in] key key of object in server whose value to increment
-   * @param[in] offset amount to increment object's value by
-   * @param[out] value store the result of the increment here
-   * @return true on success; false otherwise
-   */
-  bool increment(const std::string &key, uint32_t offset, uint64_t *value) {
-    return memcached_success(memcached_increment(memc_, key.c_str(), key.length(), offset, value));
-  }
-
-  /**
-   * Decrement the value of the object associated with the specified
-   * key by the offset given. The resulting value is saved in the value
-   * parameter.
-   *
-   * @param[in] key key of object in server whose value to decrement
-   * @param[in] offset amount to increment object's value by
-   * @param[out] value store the result of the decrement here
-   * @return true on success; false otherwise
-   */
-  bool decrement(const std::string &key, uint32_t offset, uint64_t *value) {
-    return memcached_success(memcached_decrement(memc_, key.c_str(), key.length(), offset, value));
-  }
-
-  /**
-   * Add an object with the specified key and value to the server. This
-   * function returns false if the object already exists on the server.
-   *
-   * @param[in] key key of object to add
-   * @param[in] value of object to add
-   * @return true on success; false otherwise
-   */
-  bool add(const std::string &key, const std::vector<char> &value) {
-    return memcached_success(
-        memcached_add(memc_, key.c_str(), key.length(), &value[0], value.size(), 0, 0));
-  }
-
-  /**
-   * Add an object with the specified key and value to the server. This
-   * function returns false if the object already exists on the server. The
-   * server to add the object to is specified by the master_key parameter.
-   *
-   * @param[in[ master_key key of server to add object to
-   * @param[in] key key of object to add
-   * @param[in] value of object to add
-   * @return true on success; false otherwise
-   */
-  bool addByKey(const std::string &master_key, const std::string &key,
-                const std::vector<char> &value) {
-    return memcached_success(memcached_add_by_key(memc_, master_key.c_str(), master_key.length(),
-                                                  key.c_str(), key.length(), &value[0],
-                                                  value.size(), 0, 0));
-  }
-
-  /**
-   * Replaces an object on the server. This method only succeeds
-   * if the object is already present on the server.
-   *
-   * @param[in] key key of object to replace
-   * @param[in[ value value to replace object with
-   * @return true on success; false otherwise
-   */
-  bool replace(const std::string &key, const std::vector<char> &value) {
-    return memcached_success(
-        memcached_replace(memc_, key.c_str(), key.length(), &value[0], value.size(), 0, 0));
-  }
-
-  /**
-   * Replaces an object on the server. This method only succeeds
-   * if the object is already present on the server. The server
-   * to replace the object on is specified by the master_key param.
-   *
-   * @param[in] master_key key of server to replace object on
-   * @param[in] key key of object to replace
-   * @param[in[ value value to replace object with
-   * @return true on success; false otherwise
-   */
-  bool replaceByKey(const std::string &master_key, const std::string &key,
-                    const std::vector<char> &value) {
-    return memcached_success(memcached_replace_by_key(memc_, master_key.c_str(),
-                                                      master_key.length(), key.c_str(),
-                                                      key.length(), &value[0], value.size(), 0, 0));
-  }
-
-  /**
-   * Places a segment of data before the last piece of data stored.
-   *
-   * @param[in] key key of object whose value we will prepend data to
-   * @param[in] value data to prepend to object's value
-   * @return true on success; false otherwise
-   */
-  bool prepend(const std::string &key, const std::vector<char> &value) {
-    return memcached_success(
-        memcached_prepend(memc_, key.c_str(), key.length(), &value[0], value.size(), 0, 0));
-  }
-
-  /**
-   * Places a segment of data before the last piece of data stored. The
-   * server on which the object where we will be prepending data is stored
-   * on is specified by the master_key parameter.
-   *
-   * @param[in] master_key key of server where object is stored
-   * @param[in] key key of object whose value we will prepend data to
-   * @param[in] value data to prepend to object's value
-   * @return true on success; false otherwise
-   */
-  bool prependByKey(const std::string &master_key, const std::string &key,
-                    const std::vector<char> &value) {
-    return memcached_success(memcached_prepend_by_key(memc_, master_key.c_str(),
-                                                      master_key.length(), key.c_str(),
-                                                      key.length(), &value[0], value.size(), 0, 0));
-  }
-
-  /**
-   * Places a segment of data at the end of the last piece of data stored.
-   *
-   * @param[in] key key of object whose value we will append data to
-   * @param[in] value data to append to object's value
-   * @return true on success; false otherwise
-   */
-  bool append(const std::string &key, const std::vector<char> &value) {
-    return memcached_success(
-        memcached_append(memc_, key.c_str(), key.length(), &value[0], value.size(), 0, 0));
-  }
-
-  /**
-   * Places a segment of data at the end of the last piece of data stored. The
-   * server on which the object where we will be appending data is stored
-   * on is specified by the master_key parameter.
-   *
-   * @param[in] master_key key of server where object is stored
-   * @param[in] key key of object whose value we will append data to
-   * @param[in] value data to append to object's value
-   * @return true on success; false otherwise
-   */
-  bool appendByKey(const std::string &master_key, const std::string &key,
-                   const std::vector<char> &value) {
-    return memcached_success(memcached_append_by_key(memc_, master_key.c_str(), master_key.length(),
-                                                     key.c_str(), key.length(), &value[0],
-                                                     value.size(), 0, 0));
-  }
-
-  /**
-   * Overwrite data in the server as long as the cas_arg value
-   * is still the same in the server.
-   *
-   * @param[in] key key of object in server
-   * @param[in] value value to store for object in server
-   * @param[in] cas_arg "cas" value
-   */
-  bool cas(const std::string &key, const std::vector<char> &value, uint64_t cas_arg) {
-    return memcached_success(
-        memcached_cas(memc_, key.c_str(), key.length(), &value[0], value.size(), 0, 0, cas_arg));
-  }
-
-  /**
-   * Overwrite data in the server as long as the cas_arg value
-   * is still the same in the server. The server to use is
-   * specified by the master_key parameter.
-   *
-   * @param[in] master_key specifies server to operate on
-   * @param[in] key key of object in server
-   * @param[in] value value to store for object in server
-   * @param[in] cas_arg "cas" value
-   */
-  bool casByKey(const std::string &master_key, const std::string &key,
-                const std::vector<char> &value, uint64_t cas_arg) {
-    return memcached_success(memcached_cas_by_key(memc_, master_key.c_str(), master_key.length(),
-                                                  key.c_str(), key.length(), &value[0],
-                                                  value.size(), 0, 0, cas_arg));
-  }
-
-  /**
-   * Delete an object from the server specified by the key given.
-   *
-   * @param[in] key key of object to delete
-   * @return true on success; false otherwise
-   */
-  bool remove(const std::string &key) {
-    return memcached_success(memcached_delete(memc_, key.c_str(), key.length(), 0));
-  }
-
-  /**
-   * Delete an object from the server specified by the key given.
-   *
-   * @param[in] key key of object to delete
-   * @param[in] expiration time to delete the object after
-   * @return true on success; false otherwise
-   */
-  bool remove(const std::string &key, time_t expiration) {
-    return memcached_success(memcached_delete(memc_, key.c_str(), key.length(), expiration));
-  }
-
-  /**
-   * Delete an object from the server specified by the key given.
-   *
-   * @param[in] master_key specifies server to remove object from
-   * @param[in] key key of object to delete
-   * @return true on success; false otherwise
-   */
-  bool removeByKey(const std::string &master_key, const std::string &key) {
-    return memcached_success(memcached_delete_by_key(memc_, master_key.c_str(), master_key.length(),
-                                                     key.c_str(), key.length(), 0));
-  }
-
-  /**
-   * Delete an object from the server specified by the key given.
-   *
-   * @param[in] master_key specifies server to remove object from
-   * @param[in] key key of object to delete
-   * @param[in] expiration time to delete the object after
-   * @return true on success; false otherwise
-   */
-  bool removeByKey(const std::string &master_key, const std::string &key, time_t expiration) {
-    return memcached_success(memcached_delete_by_key(memc_, master_key.c_str(), master_key.length(),
-                                                     key.c_str(), key.length(), expiration));
-  }
-
-  /**
-   * Wipe the contents of memcached servers.
-   *
-   * @param[in] expiration time to wait until wiping contents of
-   *                       memcached servers
-   * @return true on success; false otherwise
-   */
-  bool flush(time_t expiration = 0) {
-    return memcached_success(memcached_flush(memc_, expiration));
-  }
-
-  /**
-   * Get the library version string.
-   * @return std::string containing a copy of the library version string.
-   */
-  const std::string libVersion() const {
-    const char *ver = memcached_lib_version();
-    const std::string version(ver);
-    return version;
-  }
-
-  /**
-   * Retrieve memcached statistics. Populate a std::map with the retrieved
-   * stats. Each server will map to another std::map of the key:value stats.
-   *
-   * @param[out] stats_map a std::map to be populated with the memcached
-   *                       stats
-   * @return true on success; false otherwise
-   */
-  bool getStats(std::map<std::string, std::map<std::string, std::string>> &stats_map) {
-    memcached_return_t rc;
-    memcached_stat_st *stats = memcached_stat(memc_, NULL, &rc);
-
-    if (rc != MEMCACHED_SUCCESS && rc != MEMCACHED_SOME_ERRORS) {
-      return false;
-    }
-
-    uint32_t server_count = memcached_server_count(memc_);
-
-    /*
-     * For each memcached server, construct a std::map for its stats and add
-     * it to the std::map of overall stats.
-     */
-    for (uint32_t x = 0; x < server_count; x++) {
-      const memcached_instance_st *instance = memcached_server_instance_by_position(memc_, x);
-      std::ostringstream strstm;
-      std::string server_name(memcached_server_name(instance));
-      server_name.append(":");
-      strstm << memcached_server_port(instance);
-      server_name.append(strstm.str());
-
-      std::map<std::string, std::string> server_stats;
-      char **list = memcached_stat_get_keys(memc_, &stats[x], &rc);
-      for (char **ptr = list; *ptr; ptr++) {
-        char *value = memcached_stat_get_value(memc_, &stats[x], *ptr, &rc);
-        server_stats[*ptr] = value;
-        free(value);
-      }
-
-      stats_map[server_name] = server_stats;
-      free(list);
-    }
-
-    memcached_stat_free(memc_, stats);
-    return true;
-  }
-
-private:
-  memcached_st *memc_;
-};
-
-} // namespace memcache
diff --git a/include/libmemcached-1/options.h b/include/libmemcached-1/options.h
deleted file mode 100644 (file)
index adba74c..0000000
+++ /dev/null
@@ -1,28 +0,0 @@
-/*
-    +--------------------------------------------------------------------+
-    | libmemcached - 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 Michael Wallner   <mike@php.net>                |
-    +--------------------------------------------------------------------+
-*/
-
-#pragma once
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-LIBMEMCACHED_API
-memcached_return_t libmemcached_check_configuration(const char *option_string, size_t length,
-                                                    char *error_buffer, size_t error_buffer_size);
-
-#ifdef __cplusplus
-}
-#endif
diff --git a/include/libmemcached-1/parse.h b/include/libmemcached-1/parse.h
deleted file mode 100644 (file)
index b8029ae..0000000
+++ /dev/null
@@ -1,27 +0,0 @@
-/*
-    +--------------------------------------------------------------------+
-    | libmemcached - 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 Michael Wallner   <mike@php.net>                |
-    +--------------------------------------------------------------------+
-*/
-
-#pragma once
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-LIBMEMCACHED_API
-memcached_server_list_st memcached_servers_parse(const char *server_strings);
-
-#ifdef __cplusplus
-}
-#endif
diff --git a/include/libmemcached-1/platform.h b/include/libmemcached-1/platform.h
deleted file mode 100644 (file)
index ad345f6..0000000
+++ /dev/null
@@ -1,63 +0,0 @@
-/*
-    +--------------------------------------------------------------------+
-    | libmemcached - 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 Michael Wallner   <mike@php.net>                |
-    +--------------------------------------------------------------------+
-*/
-
-#pragma once
-
-#include "libmemcached-1/configure.h"
-
-/* This seems to be required for older compilers @note
- * http://stackoverflow.com/questions/8132399/how-to-printf-uint64-t  */
-#ifndef __STDC_FORMAT_MACROS
-#  define __STDC_FORMAT_MACROS
-#endif
-
-#ifdef __cplusplus
-#  include <cinttypes>
-#  include <cstddef>
-#  include <cstdlib>
-#else
-#  include <inttypes.h>
-#  include <stddef.h>
-#  include <stdlib.h>
-#  include <stdbool.h>
-#endif
-
-#include <sys/types.h>
-
-#if defined HAVE_NETDB_H
-# include <netdb.h>
-#endif
-
-#if !defined HAVE_IN_PORT_T
-typedef int in_port_t;
-#endif
-
-#if !defined HAVE_PID_T
-typedef int pid_t;
-#endif
-
-#ifndef HAVE_SSIZE_T
-typedef long int ssize_t;
-#endif
-
-#if defined _WIN32
-# define WINVER 0x0600
-# define _WIN32_WINNT 0x0600
-# include <winsock2.h>
-# include <ws2tcpip.h>
-typedef SOCKET memcached_socket_t;
-#else
-typedef int memcached_socket_t;
-#endif // _WIN32
diff --git a/include/libmemcached-1/quit.h b/include/libmemcached-1/quit.h
deleted file mode 100644 (file)
index f9ad396..0000000
+++ /dev/null
@@ -1,27 +0,0 @@
-/*
-    +--------------------------------------------------------------------+
-    | libmemcached - 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 Michael Wallner   <mike@php.net>                |
-    +--------------------------------------------------------------------+
-*/
-
-#pragma once
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-LIBMEMCACHED_API
-void memcached_quit(memcached_st *ptr);
-
-#ifdef __cplusplus
-}
-#endif
diff --git a/include/libmemcached-1/result.h b/include/libmemcached-1/result.h
deleted file mode 100644 (file)
index e1c5b2b..0000000
+++ /dev/null
@@ -1,67 +0,0 @@
-/*
-    +--------------------------------------------------------------------+
-    | libmemcached - 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 Michael Wallner   <mike@php.net>                |
-    +--------------------------------------------------------------------+
-*/
-
-#include "libmemcached-1/struct/result.h"
-
-#pragma once
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/* Result Struct */
-LIBMEMCACHED_API
-void memcached_result_free(memcached_result_st *result);
-
-LIBMEMCACHED_API
-void memcached_result_reset(memcached_result_st *ptr);
-
-LIBMEMCACHED_API
-memcached_result_st *memcached_result_create(const memcached_st *ptr, memcached_result_st *result);
-
-LIBMEMCACHED_API
-const char *memcached_result_key_value(const memcached_result_st *self);
-
-LIBMEMCACHED_API
-size_t memcached_result_key_length(const memcached_result_st *self);
-
-LIBMEMCACHED_API
-const char *memcached_result_value(const memcached_result_st *self);
-
-LIBMEMCACHED_API
-char *memcached_result_take_value(memcached_result_st *self);
-
-LIBMEMCACHED_API
-size_t memcached_result_length(const memcached_result_st *self);
-
-LIBMEMCACHED_API
-uint32_t memcached_result_flags(const memcached_result_st *self);
-
-LIBMEMCACHED_API
-uint64_t memcached_result_cas(const memcached_result_st *self);
-
-LIBMEMCACHED_API
-memcached_return_t memcached_result_set_value(memcached_result_st *ptr, const char *value,
-                                              size_t length);
-
-LIBMEMCACHED_API
-void memcached_result_set_flags(memcached_result_st *self, uint32_t flags);
-
-LIBMEMCACHED_API
-void memcached_result_set_expiration(memcached_result_st *self, time_t expiration);
-
-#ifdef __cplusplus
-} // extern "C"
-#endif
diff --git a/include/libmemcached-1/return.h b/include/libmemcached-1/return.h
deleted file mode 100644 (file)
index 3d3d282..0000000
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
-    +--------------------------------------------------------------------+
-    | libmemcached - 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 Michael Wallner   <mike@php.net>                |
-    +--------------------------------------------------------------------+
-*/
-
-#pragma once
-
-static inline bool memcached_success(memcached_return_t rc) {
-  return (rc == MEMCACHED_BUFFERED || rc == MEMCACHED_DELETED || rc == MEMCACHED_END
-          || rc == MEMCACHED_ITEM || rc == MEMCACHED_STAT || rc == MEMCACHED_STORED
-          || rc == MEMCACHED_SUCCESS || rc == MEMCACHED_VALUE);
-}
-
-static inline bool memcached_failed(memcached_return_t rc) {
-  return (rc != MEMCACHED_AUTH_CONTINUE && rc != MEMCACHED_BUFFERED && rc != MEMCACHED_DELETED
-          && rc != MEMCACHED_END && rc != MEMCACHED_ITEM && rc != MEMCACHED_STAT
-          && rc != MEMCACHED_STORED && rc != MEMCACHED_SUCCESS && rc != MEMCACHED_VALUE);
-}
-
-static inline bool memcached_fatal(memcached_return_t rc) {
-  return (rc != MEMCACHED_AUTH_CONTINUE && rc != MEMCACHED_BUFFERED && rc != MEMCACHED_CLIENT_ERROR
-          && rc != MEMCACHED_DATA_EXISTS && rc != MEMCACHED_DELETED && rc != MEMCACHED_E2BIG
-          && rc != MEMCACHED_END && rc != MEMCACHED_ITEM && rc != MEMCACHED_ERROR
-          && rc != MEMCACHED_NOTFOUND && rc != MEMCACHED_NOTSTORED
-          && rc != MEMCACHED_SERVER_MEMORY_ALLOCATION_FAILURE && rc != MEMCACHED_STAT
-          && rc != MEMCACHED_STORED && rc != MEMCACHED_SUCCESS && rc != MEMCACHED_VALUE);
-}
-
-#define memcached_continue(__memcached_return_t) ((__memcached_return_t) == MEMCACHED_IN_PROGRESS)
diff --git a/include/libmemcached-1/sasl.h b/include/libmemcached-1/sasl.h
deleted file mode 100644 (file)
index 22d3b61..0000000
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
-    +--------------------------------------------------------------------+
-    | libmemcached - 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 Michael Wallner   <mike@php.net>                |
-    +--------------------------------------------------------------------+
-*/
-
-#pragma once
-
-#if defined(LIBMEMCACHED_WITH_SASL_SUPPORT) && LIBMEMCACHED_WITH_SASL_SUPPORT
-#  include <sasl/sasl.h>
-#else
-#  define sasl_callback_t void
-#endif
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-LIBMEMCACHED_API
-void memcached_set_sasl_callbacks(memcached_st *ptr, const sasl_callback_t *callbacks);
-
-LIBMEMCACHED_API
-memcached_return_t memcached_set_sasl_auth_data(memcached_st *ptr, const char *username,
-                                                const char *password);
-
-LIBMEMCACHED_API
-memcached_return_t memcached_destroy_sasl_auth_data(memcached_st *ptr);
-
-LIBMEMCACHED_API
-sasl_callback_t *memcached_get_sasl_callbacks(memcached_st *ptr);
-
-#ifdef __cplusplus
-}
-#endif
-
-#include "libmemcached-1/struct/sasl.h"
diff --git a/include/libmemcached-1/server.h b/include/libmemcached-1/server.h
deleted file mode 100644 (file)
index 3ad5199..0000000
+++ /dev/null
@@ -1,93 +0,0 @@
-/*
-    +--------------------------------------------------------------------+
-    | libmemcached - 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 Michael Wallner   <mike@php.net>                |
-    +--------------------------------------------------------------------+
-*/
-
-#pragma once
-
-#include "libmemcached-1/struct/server.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-LIBMEMCACHED_API
-memcached_return_t memcached_server_cursor(const memcached_st *ptr,
-                                           const memcached_server_fn *callback, void *context,
-                                           uint32_t number_of_callbacks);
-
-LIBMEMCACHED_API
-const memcached_instance_st *memcached_server_by_key(memcached_st *ptr, const char *key,
-                                                     size_t key_length, memcached_return_t *error);
-
-LIBMEMCACHED_API
-void memcached_server_error_reset(memcached_server_st *ptr);
-
-LIBMEMCACHED_API
-void memcached_server_free(memcached_server_st *ptr);
-
-LIBMEMCACHED_API
-const memcached_instance_st *memcached_server_get_last_disconnect(const memcached_st *ptr);
-
-LIBMEMCACHED_API
-memcached_return_t memcached_server_add_udp(memcached_st *ptr, const char *hostname,
-                                            in_port_t port);
-LIBMEMCACHED_API
-memcached_return_t memcached_server_add_unix_socket(memcached_st *ptr, const char *filename);
-LIBMEMCACHED_API
-memcached_return_t memcached_server_add(memcached_st *ptr, const char *hostname, in_port_t port);
-
-LIBMEMCACHED_API
-memcached_return_t memcached_server_add_udp_with_weight(memcached_st *ptr, const char *hostname,
-                                                        in_port_t port, uint32_t weight);
-LIBMEMCACHED_API
-memcached_return_t memcached_server_add_unix_socket_with_weight(memcached_st *ptr,
-                                                                const char *filename,
-                                                                uint32_t weight);
-LIBMEMCACHED_API
-memcached_return_t memcached_server_add_with_weight(memcached_st *ptr, const char *hostname,
-                                                    in_port_t port, uint32_t weight);
-
-/**
-  Operations on Single Servers.
-*/
-LIBMEMCACHED_API
-uint32_t memcached_server_response_count(const memcached_instance_st *self);
-
-LIBMEMCACHED_API
-const char *memcached_server_name(const memcached_instance_st *self);
-
-LIBMEMCACHED_API
-in_port_t memcached_server_port(const memcached_instance_st *self);
-
-LIBMEMCACHED_API
-in_port_t memcached_server_srcport(const memcached_instance_st *self);
-
-LIBMEMCACHED_API
-void memcached_instance_next_retry(const memcached_instance_st *self, const time_t absolute_time);
-
-LIBMEMCACHED_API
-const char *memcached_server_type(const memcached_instance_st *ptr);
-
-LIBMEMCACHED_API
-uint8_t memcached_server_major_version(const memcached_instance_st *ptr);
-
-LIBMEMCACHED_API
-uint8_t memcached_server_minor_version(const memcached_instance_st *ptr);
-
-LIBMEMCACHED_API
-uint8_t memcached_server_micro_version(const memcached_instance_st *ptr);
-
-#ifdef __cplusplus
-} // extern "C"
-#endif
diff --git a/include/libmemcached-1/server_list.h b/include/libmemcached-1/server_list.h
deleted file mode 100644 (file)
index ebf2a2d..0000000
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
-    +--------------------------------------------------------------------+
-    | libmemcached - 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 Michael Wallner   <mike@php.net>                |
-    +--------------------------------------------------------------------+
-*/
-
-#pragma once
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/* Server List Public functions */
-LIBMEMCACHED_API
-void memcached_server_list_free(memcached_server_list_st ptr);
-
-LIBMEMCACHED_API
-memcached_return_t memcached_server_push(memcached_st *ptr, const memcached_server_list_st list);
-
-LIBMEMCACHED_API
-memcached_server_list_st memcached_server_list_append(memcached_server_list_st ptr,
-                                                      const char *hostname, in_port_t port,
-                                                      memcached_return_t *error);
-LIBMEMCACHED_API
-memcached_server_list_st memcached_server_list_append_with_weight(memcached_server_list_st ptr,
-                                                                  const char *hostname,
-                                                                  in_port_t port, uint32_t weight,
-                                                                  memcached_return_t *error);
-LIBMEMCACHED_API
-uint32_t memcached_server_list_count(const memcached_server_list_st ptr);
-
-#ifdef __cplusplus
-} // extern "C"
-#endif
diff --git a/include/libmemcached-1/stats.h b/include/libmemcached-1/stats.h
deleted file mode 100644 (file)
index eb02bac..0000000
+++ /dev/null
@@ -1,48 +0,0 @@
-/*
-    +--------------------------------------------------------------------+
-    | libmemcached - 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 Michael Wallner   <mike@php.net>                |
-    +--------------------------------------------------------------------+
-*/
-
-#include "libmemcached-1/struct/stat.h"
-
-#pragma once
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-LIBMEMCACHED_API
-void memcached_stat_free(const memcached_st *, memcached_stat_st *);
-
-LIBMEMCACHED_API
-memcached_stat_st *memcached_stat(memcached_st *ptr, char *args, memcached_return_t *error);
-
-LIBMEMCACHED_API
-memcached_return_t memcached_stat_servername(memcached_stat_st *memc_stat, char *args,
-                                             const char *hostname, in_port_t port);
-
-LIBMEMCACHED_API
-char *memcached_stat_get_value(const memcached_st *ptr, memcached_stat_st *memc_stat,
-                               const char *key, memcached_return_t *error);
-
-LIBMEMCACHED_API
-char **memcached_stat_get_keys(memcached_st *ptr, memcached_stat_st *memc_stat,
-                               memcached_return_t *error);
-
-LIBMEMCACHED_API
-memcached_return_t memcached_stat_execute(memcached_st *memc, const char *args,
-                                          memcached_stat_fn func, void *context);
-
-#ifdef __cplusplus
-} // extern "C"
-#endif
diff --git a/include/libmemcached-1/storage.h b/include/libmemcached-1/storage.h
deleted file mode 100644 (file)
index f23a9d9..0000000
+++ /dev/null
@@ -1,86 +0,0 @@
-/*
-    +--------------------------------------------------------------------+
-    | libmemcached - 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 Michael Wallner   <mike@php.net>                |
-    +--------------------------------------------------------------------+
-*/
-
-#pragma once
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/* All of the functions for adding data to the server */
-LIBMEMCACHED_API
-memcached_return_t memcached_set(memcached_st *ptr, const char *key, size_t key_length,
-                                 const char *value, size_t value_length, time_t expiration,
-                                 uint32_t flags);
-LIBMEMCACHED_API
-memcached_return_t memcached_add(memcached_st *ptr, const char *key, size_t key_length,
-                                 const char *value, size_t value_length, time_t expiration,
-                                 uint32_t flags);
-LIBMEMCACHED_API
-memcached_return_t memcached_replace(memcached_st *ptr, const char *key, size_t key_length,
-                                     const char *value, size_t value_length, time_t expiration,
-                                     uint32_t flags);
-LIBMEMCACHED_API
-memcached_return_t memcached_append(memcached_st *ptr, const char *key, size_t key_length,
-                                    const char *value, size_t value_length, time_t expiration,
-                                    uint32_t flags);
-LIBMEMCACHED_API
-memcached_return_t memcached_prepend(memcached_st *ptr, const char *key, size_t key_length,
-                                     const char *value, size_t value_length, time_t expiration,
-                                     uint32_t flags);
-LIBMEMCACHED_API
-memcached_return_t memcached_cas(memcached_st *ptr, const char *key, size_t key_length,
-                                 const char *value, size_t value_length, time_t expiration,
-                                 uint32_t flags, uint64_t cas);
-
-LIBMEMCACHED_API
-memcached_return_t memcached_set_by_key(memcached_st *ptr, const char *group_key,
-                                        size_t group_key_length, const char *key, size_t key_length,
-                                        const char *value, size_t value_length, time_t expiration,
-                                        uint32_t flags);
-
-LIBMEMCACHED_API
-memcached_return_t memcached_add_by_key(memcached_st *ptr, const char *group_key,
-                                        size_t group_key_length, const char *key, size_t key_length,
-                                        const char *value, size_t value_length, time_t expiration,
-                                        uint32_t flags);
-
-LIBMEMCACHED_API
-memcached_return_t memcached_replace_by_key(memcached_st *ptr, const char *group_key,
-                                            size_t group_key_length, const char *key,
-                                            size_t key_length, const char *value,
-                                            size_t value_length, time_t expiration, uint32_t flags);
-
-LIBMEMCACHED_API
-memcached_return_t memcached_prepend_by_key(memcached_st *ptr, const char *group_key,
-                                            size_t group_key_length, const char *key,
-                                            size_t key_length, const char *value,
-                                            size_t value_length, time_t expiration, uint32_t flags);
-
-LIBMEMCACHED_API
-memcached_return_t memcached_append_by_key(memcached_st *ptr, const char *group_key,
-                                           size_t group_key_length, const char *key,
-                                           size_t key_length, const char *value,
-                                           size_t value_length, time_t expiration, uint32_t flags);
-
-LIBMEMCACHED_API
-memcached_return_t memcached_cas_by_key(memcached_st *ptr, const char *group_key,
-                                        size_t group_key_length, const char *key, size_t key_length,
-                                        const char *value, size_t value_length, time_t expiration,
-                                        uint32_t flags, uint64_t cas);
-
-#ifdef __cplusplus
-}
-#endif
diff --git a/include/libmemcached-1/strerror.h b/include/libmemcached-1/strerror.h
deleted file mode 100644 (file)
index 42b70fa..0000000
+++ /dev/null
@@ -1,27 +0,0 @@
-/*
-    +--------------------------------------------------------------------+
-    | libmemcached - 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 Michael Wallner   <mike@php.net>                |
-    +--------------------------------------------------------------------+
-*/
-
-#pragma once
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-LIBMEMCACHED_API
-const char *memcached_strerror(const memcached_st *ptr, memcached_return_t rc);
-
-#ifdef __cplusplus
-}
-#endif
diff --git a/include/libmemcached-1/struct/CMakeLists.txt b/include/libmemcached-1/struct/CMakeLists.txt
deleted file mode 100644 (file)
index adebbfe..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
-
-install_public_headers(
-        libmemcached-1/struct
-
-        allocator.h
-        analysis.h
-        callback.h
-        memcached.h
-        result.h
-        sasl.h
-        server.h
-        stat.h
-        string.h
-)
diff --git a/include/libmemcached-1/struct/allocator.h b/include/libmemcached-1/struct/allocator.h
deleted file mode 100644 (file)
index fd65721..0000000
+++ /dev/null
@@ -1,24 +0,0 @@
-/*
-    +--------------------------------------------------------------------+
-    | libmemcached - 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 Michael Wallner   <mike@php.net>                |
-    +--------------------------------------------------------------------+
-*/
-
-#pragma once
-
-struct memcached_allocator_t {
-  memcached_calloc_fn calloc;
-  memcached_free_fn free;
-  memcached_malloc_fn malloc;
-  memcached_realloc_fn realloc;
-  void *context;
-};
diff --git a/include/libmemcached-1/struct/analysis.h b/include/libmemcached-1/struct/analysis.h
deleted file mode 100644 (file)
index 94c6220..0000000
+++ /dev/null
@@ -1,28 +0,0 @@
-/*
-    +--------------------------------------------------------------------+
-    | libmemcached - 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 Michael Wallner   <mike@php.net>                |
-    +--------------------------------------------------------------------+
-*/
-
-#pragma once
-
-struct memcached_analysis_st {
-  memcached_st *root;
-  uint32_t average_item_size;
-  uint32_t longest_uptime;
-  uint32_t least_free_server;
-  uint32_t most_consumed_server;
-  uint32_t oldest_server;
-  double pool_hit_ratio;
-  uint64_t most_used_bytes;
-  uint64_t least_remaining_bytes;
-};
diff --git a/include/libmemcached-1/struct/callback.h b/include/libmemcached-1/struct/callback.h
deleted file mode 100644 (file)
index 2bfac14..0000000
+++ /dev/null
@@ -1,22 +0,0 @@
-/*
-    +--------------------------------------------------------------------+
-    | libmemcached - 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 Michael Wallner   <mike@php.net>                |
-    +--------------------------------------------------------------------+
-*/
-
-#pragma once
-
-struct memcached_callback_st {
-  memcached_execute_fn *callback;
-  void *context;
-  uint32_t number_of_callback;
-};
diff --git a/include/libmemcached-1/struct/memcached.h b/include/libmemcached-1/struct/memcached.h
deleted file mode 100644 (file)
index f59e68e..0000000
+++ /dev/null
@@ -1,106 +0,0 @@
-/*
-    +--------------------------------------------------------------------+
-    | libmemcached - 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 Michael Wallner   <mike@php.net>                |
-    +--------------------------------------------------------------------+
-*/
-
-#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;
-};
diff --git a/include/libmemcached-1/struct/result.h b/include/libmemcached-1/struct/result.h
deleted file mode 100644 (file)
index d651bdc..0000000
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
-    +--------------------------------------------------------------------+
-    | libmemcached - 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 Michael Wallner   <mike@php.net>                |
-    +--------------------------------------------------------------------+
-*/
-
-#pragma once
-
-struct memcached_result_st {
-  uint32_t item_flags;
-  time_t item_expiration;
-  size_t key_length;
-  uint64_t item_cas;
-  struct memcached_st *root;
-  memcached_string_st value;
-  uint64_t numeric_value;
-  uint64_t count;
-  char item_key[MEMCACHED_MAX_KEY];
-  struct {
-    bool is_allocated : 1;
-    bool is_initialized : 1;
-  } options;
-  /* Add result callback function */
-};
diff --git a/include/libmemcached-1/struct/sasl.h b/include/libmemcached-1/struct/sasl.h
deleted file mode 100644 (file)
index 98c4fec..0000000
+++ /dev/null
@@ -1,31 +0,0 @@
-/*
-    +--------------------------------------------------------------------+
-    | libmemcached - 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 Michael Wallner   <mike@php.net>                |
-    +--------------------------------------------------------------------+
-*/
-
-#if defined(LIBMEMCACHED_WITH_SASL_SUPPORT) && LIBMEMCACHED_WITH_SASL_SUPPORT
-#  include <sasl/sasl.h>
-#else
-#  define sasl_callback_t void
-#endif
-
-#pragma once
-
-struct memcached_sasl_st {
-  sasl_callback_t *callbacks;
-  /*
-   ** Did we allocate data inside the callbacks, or did the user
-   ** supply that.
-   */
-  bool is_allocated;
-};
diff --git a/include/libmemcached-1/struct/server.h b/include/libmemcached-1/struct/server.h
deleted file mode 100644 (file)
index 4109c56..0000000
+++ /dev/null
@@ -1,79 +0,0 @@
-/*
-    +--------------------------------------------------------------------+
-    | libmemcached - 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 Michael Wallner   <mike@php.net>                |
-    +--------------------------------------------------------------------+
-*/
-
-#pragma once
-
-#include "libmemcached-1/configure.h"
-
-#ifdef HAVE_NETDB_H
-#  include <netdb.h>
-#endif
-
-#ifdef NI_MAXHOST
-#  define MEMCACHED_NI_MAXHOST NI_MAXHOST
-#else
-#  define MEMCACHED_NI_MAXHOST 1025
-#endif
-
-#ifdef NI_MAXSERV
-#  define MEMCACHED_NI_MAXSERV NI_MAXSERV
-#else
-#  define MEMCACHED_NI_MAXSERV 32
-#endif
-
-enum memcached_server_state_t {
-  MEMCACHED_SERVER_STATE_NEW,      // fd == -1, no address lookup has been done
-  MEMCACHED_SERVER_STATE_ADDRINFO, // ADDRRESS information has been gathered
-  MEMCACHED_SERVER_STATE_IN_PROGRESS,
-  MEMCACHED_SERVER_STATE_CONNECTED,
-  MEMCACHED_SERVER_STATE_IN_TIMEOUT,
-  MEMCACHED_SERVER_STATE_DISABLED
-};
-
-struct memcached_server_st {
-  struct {
-    bool is_allocated : 1;
-    bool is_initialized : 1;
-    bool is_shutting_down : 1;
-    bool is_dead : 1;
-  } options;
-  uint32_t number_of_hosts;
-  uint32_t cursor_active;
-  in_port_t port;
-  uint32_t io_bytes_sent; /* # bytes sent since last read */
-  uint32_t request_id;
-  uint32_t server_failure_counter;
-  uint64_t server_failure_counter_query_id;
-  uint32_t server_timeout_counter;
-  uint64_t server_timeout_counter_query_id;
-  uint32_t weight;
-  uint32_t version;
-  enum memcached_server_state_t state;
-  struct {
-    uint32_t read;
-    uint32_t write;
-    uint32_t timeouts;
-    size_t _bytes_read;
-  } io_wait_count;
-  uint8_t major_version; // Default definition of UINT8_MAX means that it has not been set.
-  uint8_t micro_version; // ditto, and note that this is the third, not second version bit
-  uint8_t minor_version; // ditto
-  memcached_connection_t type;
-  time_t next_retry;
-  struct memcached_st *root;
-  uint64_t limit_maxbytes;
-  struct memcached_error_t *error_messages;
-  char hostname[MEMCACHED_NI_MAXHOST];
-};
diff --git a/include/libmemcached-1/struct/stat.h b/include/libmemcached-1/struct/stat.h
deleted file mode 100644 (file)
index cc6be4e..0000000
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
-    +--------------------------------------------------------------------+
-    | libmemcached - 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 Michael Wallner   <mike@php.net>                |
-    +--------------------------------------------------------------------+
-*/
-
-#pragma once
-
-struct memcached_stat_st {
-  unsigned long connection_structures;
-  unsigned long curr_connections;
-  unsigned long curr_items;
-  pid_t pid;
-  unsigned long pointer_size;
-  unsigned long rusage_system_microseconds;
-  unsigned long rusage_system_seconds;
-  unsigned long rusage_user_microseconds;
-  unsigned long rusage_user_seconds;
-  unsigned long threads;
-  unsigned long time;
-  unsigned long total_connections;
-  unsigned long total_items;
-  unsigned long uptime;
-  unsigned long long bytes;
-  unsigned long long bytes_read;
-  unsigned long long bytes_written;
-  unsigned long long cmd_get;
-  unsigned long long cmd_set;
-  unsigned long long evictions;
-  unsigned long long get_hits;
-  unsigned long long get_misses;
-  unsigned long long limit_maxbytes;
-  char version[MEMCACHED_VERSION_STRING_LENGTH];
-  void *__future; // @todo create a new structure to place here for future usage
-  memcached_st *root;
-};
diff --git a/include/libmemcached-1/struct/string.h b/include/libmemcached-1/struct/string.h
deleted file mode 100644 (file)
index aef7b9f..0000000
+++ /dev/null
@@ -1,37 +0,0 @@
-/*
-    +--------------------------------------------------------------------+
-    | libmemcached - 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 Michael Wallner   <mike@php.net>                |
-    +--------------------------------------------------------------------+
-*/
-
-#pragma once
-
-/**
-  Strings are always under our control so we make some assumptions
-  about them.
-
-  1) is_initialized is always valid.
-  2) A string once intialized will always be, until free where we
-     unset this flag.
-  3) A string always has a root.
-*/
-
-struct memcached_string_st {
-  char *end;
-  char *string;
-  size_t current_size;
-  struct memcached_st *root;
-  struct {
-    bool is_allocated : 1;
-    bool is_initialized : 1;
-  } options;
-};
diff --git a/include/libmemcached-1/touch.h b/include/libmemcached-1/touch.h
deleted file mode 100644 (file)
index 98e57c6..0000000
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
-    +--------------------------------------------------------------------+
-    | libmemcached - 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 Michael Wallner   <mike@php.net>                |
-    +--------------------------------------------------------------------+
-*/
-
-#pragma once
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-LIBMEMCACHED_API
-memcached_return_t memcached_touch(memcached_st *ptr, const char *key, size_t key_length,
-                                   time_t expiration);
-
-LIBMEMCACHED_API
-memcached_return_t memcached_touch_by_key(memcached_st *ptr, const char *group_key,
-                                          size_t group_key_length, const char *key,
-                                          size_t key_length, time_t expiration);
-
-#ifdef __cplusplus
-}
-#endif
diff --git a/include/libmemcached-1/triggers.h b/include/libmemcached-1/triggers.h
deleted file mode 100644 (file)
index 406a37d..0000000
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
-    +--------------------------------------------------------------------+
-    | libmemcached - 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 Michael Wallner   <mike@php.net>                |
-    +--------------------------------------------------------------------+
-*/
-
-#pragma once
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-typedef memcached_return_t (*memcached_clone_fn)(memcached_st *destination,
-                                                 const memcached_st *source);
-typedef memcached_return_t (*memcached_cleanup_fn)(const memcached_st *ptr);
-
-/**
-  Trigger functions.
-*/
-typedef memcached_return_t (*memcached_trigger_key_fn)(const memcached_st *ptr, const char *key,
-                                                       size_t key_length,
-                                                       memcached_result_st *result);
-typedef memcached_return_t (*memcached_trigger_delete_key_fn)(const memcached_st *ptr,
-                                                              const char *key, size_t key_length);
-
-typedef memcached_return_t (*memcached_dump_fn)(const memcached_st *ptr, const char *key,
-                                                size_t key_length, void *context);
-
-#ifdef __cplusplus
-}
-#endif
diff --git a/include/libmemcached-1/types.h b/include/libmemcached-1/types.h
deleted file mode 100644 (file)
index 30fe2f7..0000000
+++ /dev/null
@@ -1,60 +0,0 @@
-/*
-    +--------------------------------------------------------------------+
-    | libmemcached - 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 Michael Wallner   <mike@php.net>                |
-    +--------------------------------------------------------------------+
-*/
-
-#pragma once
-
-#ifdef __cplusplus
-
-struct memcached_st;
-struct memcached_stat_st;
-struct memcached_analysis_st;
-struct memcached_result_st;
-struct memcached_array_st;
-struct memcached_error_t;
-
-// All of the flavors of memcache_server_st
-struct memcached_server_st;
-struct memcached_instance_st;
-typedef struct memcached_instance_st memcached_instance_st;
-typedef struct memcached_server_st *memcached_server_list_st;
-
-struct memcached_callback_st;
-
-// The following two structures are internal, and never exposed to users.
-struct memcached_string_st;
-struct memcached_string_t;
-struct memcached_continuum_item_st;
-
-#else
-
-typedef struct memcached_st memcached_st;
-typedef struct memcached_stat_st memcached_stat_st;
-typedef struct memcached_analysis_st memcached_analysis_st;
-typedef struct memcached_result_st memcached_result_st;
-typedef struct memcached_array_st memcached_array_st;
-typedef struct memcached_error_t memcached_error_t;
-
-// All of the flavors of memcache_server_st
-typedef struct memcached_server_st memcached_server_st;
-typedef struct memcached_instance_st memcached_instance_st;
-typedef struct memcached_server_st *memcached_server_list_st;
-
-typedef struct memcached_callback_st memcached_callback_st;
-
-// The following two structures are internal, and never exposed to users.
-typedef struct memcached_string_st memcached_string_st;
-typedef struct memcached_string_t memcached_string_t;
-
-#endif
diff --git a/include/libmemcached-1/types/CMakeLists.txt b/include/libmemcached-1/types/CMakeLists.txt
deleted file mode 100644 (file)
index 9bc619d..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-
-install_public_headers(
-        libmemcached-1/types
-
-        behavior.h
-        callback.h
-        connection.h
-        hash.h
-        return.h
-        server_distribution.h
-        )
diff --git a/include/libmemcached-1/types/behavior.h b/include/libmemcached-1/types/behavior.h
deleted file mode 100644 (file)
index 1f80e24..0000000
+++ /dev/null
@@ -1,62 +0,0 @@
-/*
-    +--------------------------------------------------------------------+
-    | libmemcached - 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 Michael Wallner   <mike@php.net>                |
-    +--------------------------------------------------------------------+
-*/
-
-#pragma once
-
-enum memcached_behavior_t {
-  MEMCACHED_BEHAVIOR_NO_BLOCK,
-  MEMCACHED_BEHAVIOR_TCP_NODELAY,
-  MEMCACHED_BEHAVIOR_HASH,
-  MEMCACHED_BEHAVIOR_KETAMA,
-  MEMCACHED_BEHAVIOR_SOCKET_SEND_SIZE,
-  MEMCACHED_BEHAVIOR_SOCKET_RECV_SIZE,
-  MEMCACHED_BEHAVIOR_CACHE_LOOKUPS,
-  MEMCACHED_BEHAVIOR_SUPPORT_CAS,
-  MEMCACHED_BEHAVIOR_POLL_TIMEOUT,
-  MEMCACHED_BEHAVIOR_DISTRIBUTION,
-  MEMCACHED_BEHAVIOR_BUFFER_REQUESTS,
-  MEMCACHED_BEHAVIOR_USER_DATA,
-  MEMCACHED_BEHAVIOR_SORT_HOSTS,
-  MEMCACHED_BEHAVIOR_VERIFY_KEY,
-  MEMCACHED_BEHAVIOR_CONNECT_TIMEOUT,
-  MEMCACHED_BEHAVIOR_RETRY_TIMEOUT,
-  MEMCACHED_BEHAVIOR_KETAMA_WEIGHTED,
-  MEMCACHED_BEHAVIOR_KETAMA_HASH,
-  MEMCACHED_BEHAVIOR_BINARY_PROTOCOL,
-  MEMCACHED_BEHAVIOR_SND_TIMEOUT,
-  MEMCACHED_BEHAVIOR_RCV_TIMEOUT,
-  MEMCACHED_BEHAVIOR_SERVER_FAILURE_LIMIT,
-  MEMCACHED_BEHAVIOR_IO_MSG_WATERMARK,
-  MEMCACHED_BEHAVIOR_IO_BYTES_WATERMARK,
-  MEMCACHED_BEHAVIOR_IO_KEY_PREFETCH,
-  MEMCACHED_BEHAVIOR_HASH_WITH_PREFIX_KEY,
-  MEMCACHED_BEHAVIOR_NOREPLY,
-  MEMCACHED_BEHAVIOR_USE_UDP,
-  MEMCACHED_BEHAVIOR_AUTO_EJECT_HOSTS,
-  MEMCACHED_BEHAVIOR_NUMBER_OF_REPLICAS,
-  MEMCACHED_BEHAVIOR_RANDOMIZE_REPLICA_READ,
-  MEMCACHED_BEHAVIOR_CORK,
-  MEMCACHED_BEHAVIOR_TCP_KEEPALIVE,
-  MEMCACHED_BEHAVIOR_TCP_KEEPIDLE,
-  MEMCACHED_BEHAVIOR_LOAD_FROM_FILE,
-  MEMCACHED_BEHAVIOR_REMOVE_FAILED_SERVERS,
-  MEMCACHED_BEHAVIOR_DEAD_TIMEOUT,
-  MEMCACHED_BEHAVIOR_SERVER_TIMEOUT_LIMIT,
-  MEMCACHED_BEHAVIOR_MAX
-};
-
-#ifndef __cplusplus
-typedef enum memcached_behavior_t memcached_behavior_t;
-#endif
diff --git a/include/libmemcached-1/types/callback.h b/include/libmemcached-1/types/callback.h
deleted file mode 100644 (file)
index 6e67bf7..0000000
+++ /dev/null
@@ -1,31 +0,0 @@
-/*
-    +--------------------------------------------------------------------+
-    | libmemcached - 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 Michael Wallner   <mike@php.net>                |
-    +--------------------------------------------------------------------+
-*/
-
-#pragma once
-
-enum memcached_callback_t {
-  MEMCACHED_CALLBACK_PREFIX_KEY = 0,
-  MEMCACHED_CALLBACK_USER_DATA = 1,
-  MEMCACHED_CALLBACK_CLEANUP_FUNCTION = 2,
-  MEMCACHED_CALLBACK_CLONE_FUNCTION = 3,
-  MEMCACHED_CALLBACK_GET_FAILURE = 7,
-  MEMCACHED_CALLBACK_DELETE_TRIGGER = 8,
-  MEMCACHED_CALLBACK_MAX,
-  MEMCACHED_CALLBACK_NAMESPACE = MEMCACHED_CALLBACK_PREFIX_KEY
-};
-
-#ifndef __cplusplus
-typedef enum memcached_callback_t memcached_callback_t;
-#endif
diff --git a/include/libmemcached-1/types/connection.h b/include/libmemcached-1/types/connection.h
deleted file mode 100644 (file)
index 6052f2e..0000000
+++ /dev/null
@@ -1,26 +0,0 @@
-/*
-    +--------------------------------------------------------------------+
-    | libmemcached - 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 Michael Wallner   <mike@php.net>                |
-    +--------------------------------------------------------------------+
-*/
-
-#pragma once
-
-enum memcached_connection_t {
-  MEMCACHED_CONNECTION_TCP,
-  MEMCACHED_CONNECTION_UDP,
-  MEMCACHED_CONNECTION_UNIX_SOCKET
-};
-
-#ifndef __cplusplus
-typedef enum memcached_connection_t memcached_connection_t;
-#endif
diff --git a/include/libmemcached-1/types/hash.h b/include/libmemcached-1/types/hash.h
deleted file mode 100644 (file)
index 4714fc9..0000000
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
-    +--------------------------------------------------------------------+
-    | libmemcached - 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 Michael Wallner   <mike@php.net>                |
-    +--------------------------------------------------------------------+
-*/
-
-#pragma once
-
-enum memcached_hash_t {
-  MEMCACHED_HASH_DEFAULT = 0,
-  MEMCACHED_HASH_MD5,
-  MEMCACHED_HASH_CRC,
-  MEMCACHED_HASH_FNV1_64,
-  MEMCACHED_HASH_FNV1A_64,
-  MEMCACHED_HASH_FNV1_32,
-  MEMCACHED_HASH_FNV1A_32,
-  MEMCACHED_HASH_HSIEH,
-  MEMCACHED_HASH_MURMUR,
-  MEMCACHED_HASH_JENKINS,
-  MEMCACHED_HASH_MURMUR3,
-  MEMCACHED_HASH_CUSTOM,
-  MEMCACHED_HASH_MAX
-};
-
-#ifndef __cplusplus
-typedef enum memcached_hash_t memcached_hash_t;
-#endif
diff --git a/include/libmemcached-1/types/return.h b/include/libmemcached-1/types/return.h
deleted file mode 100644 (file)
index f37548d..0000000
+++ /dev/null
@@ -1,74 +0,0 @@
-/*
-    +--------------------------------------------------------------------+
-    | libmemcached - 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 Michael Wallner   <mike@php.net>                |
-    +--------------------------------------------------------------------+
-*/
-
-#pragma once
-
-enum memcached_return_t {
-  MEMCACHED_SUCCESS,
-  MEMCACHED_FAILURE,
-  MEMCACHED_HOST_LOOKUP_FAILURE, // getaddrinfo() and getnameinfo() only
-  MEMCACHED_CONNECTION_FAILURE,
-  MEMCACHED_CONNECTION_BIND_FAILURE, // DEPRECATED, see MEMCACHED_HOST_LOOKUP_FAILURE
-  MEMCACHED_WRITE_FAILURE,
-  MEMCACHED_READ_FAILURE,
-  MEMCACHED_UNKNOWN_READ_FAILURE,
-  MEMCACHED_PROTOCOL_ERROR,
-  MEMCACHED_CLIENT_ERROR,
-  MEMCACHED_SERVER_ERROR, // Server returns "SERVER_ERROR"
-  MEMCACHED_ERROR,        // Server returns "ERROR"
-  MEMCACHED_DATA_EXISTS,
-  MEMCACHED_DATA_DOES_NOT_EXIST,
-  MEMCACHED_NOTSTORED,
-  MEMCACHED_STORED,
-  MEMCACHED_NOTFOUND,
-  MEMCACHED_MEMORY_ALLOCATION_FAILURE,
-  MEMCACHED_PARTIAL_READ,
-  MEMCACHED_SOME_ERRORS,
-  MEMCACHED_NO_SERVERS,
-  MEMCACHED_END,
-  MEMCACHED_DELETED,
-  MEMCACHED_VALUE,
-  MEMCACHED_STAT,
-  MEMCACHED_ITEM,
-  MEMCACHED_ERRNO,
-  MEMCACHED_FAIL_UNIX_SOCKET, // DEPRECATED
-  MEMCACHED_NOT_SUPPORTED,
-  MEMCACHED_NO_KEY_PROVIDED, /* Deprecated. Use MEMCACHED_BAD_KEY_PROVIDED! */
-  MEMCACHED_FETCH_NOTFINISHED,
-  MEMCACHED_TIMEOUT,
-  MEMCACHED_BUFFERED,
-  MEMCACHED_BAD_KEY_PROVIDED,
-  MEMCACHED_INVALID_HOST_PROTOCOL,
-  MEMCACHED_SERVER_MARKED_DEAD,
-  MEMCACHED_UNKNOWN_STAT_KEY,
-  MEMCACHED_E2BIG,
-  MEMCACHED_INVALID_ARGUMENTS,
-  MEMCACHED_KEY_TOO_BIG,
-  MEMCACHED_AUTH_PROBLEM,
-  MEMCACHED_AUTH_FAILURE,
-  MEMCACHED_AUTH_CONTINUE,
-  MEMCACHED_PARSE_ERROR,
-  MEMCACHED_PARSE_USER_ERROR,
-  MEMCACHED_DEPRECATED,
-  MEMCACHED_IN_PROGRESS,
-  MEMCACHED_SERVER_TEMPORARILY_DISABLED,
-  MEMCACHED_SERVER_MEMORY_ALLOCATION_FAILURE,
-  MEMCACHED_MAXIMUM_RETURN, /* Always add new error code before */
-  MEMCACHED_CONNECTION_SOCKET_CREATE_FAILURE = MEMCACHED_ERROR
-};
-
-#ifndef __cplusplus
-typedef enum memcached_return_t memcached_return_t;
-#endif
diff --git a/include/libmemcached-1/types/server_distribution.h b/include/libmemcached-1/types/server_distribution.h
deleted file mode 100644 (file)
index 648c295..0000000
+++ /dev/null
@@ -1,31 +0,0 @@
-/*
-    +--------------------------------------------------------------------+
-    | libmemcached - 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 Michael Wallner   <mike@php.net>                |
-    +--------------------------------------------------------------------+
-*/
-
-#pragma once
-
-enum memcached_server_distribution_t {
-  MEMCACHED_DISTRIBUTION_MODULA,
-  MEMCACHED_DISTRIBUTION_CONSISTENT,
-  MEMCACHED_DISTRIBUTION_CONSISTENT_KETAMA,
-  MEMCACHED_DISTRIBUTION_RANDOM,
-  MEMCACHED_DISTRIBUTION_CONSISTENT_KETAMA_SPY,
-  MEMCACHED_DISTRIBUTION_CONSISTENT_WEIGHTED,
-  MEMCACHED_DISTRIBUTION_VIRTUAL_BUCKET,
-  MEMCACHED_DISTRIBUTION_CONSISTENT_MAX
-};
-
-#ifndef __cplusplus
-typedef enum memcached_server_distribution_t memcached_server_distribution_t;
-#endif
diff --git a/include/libmemcached-1/verbosity.h b/include/libmemcached-1/verbosity.h
deleted file mode 100644 (file)
index 3ab7a33..0000000
+++ /dev/null
@@ -1,27 +0,0 @@
-/*
-    +--------------------------------------------------------------------+
-    | libmemcached - 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 Michael Wallner   <mike@php.net>                |
-    +--------------------------------------------------------------------+
-*/
-
-#pragma once
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-LIBMEMCACHED_API
-memcached_return_t memcached_verbosity(memcached_st *ptr, uint32_t verbosity);
-
-#ifdef __cplusplus
-}
-#endif
diff --git a/include/libmemcached-1/version.h b/include/libmemcached-1/version.h
deleted file mode 100644 (file)
index db8ccb7..0000000
+++ /dev/null
@@ -1,30 +0,0 @@
-/*
-    +--------------------------------------------------------------------+
-    | libmemcached - 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 Michael Wallner   <mike@php.net>                |
-    +--------------------------------------------------------------------+
-*/
-
-#pragma once
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-LIBMEMCACHED_API
-memcached_return_t memcached_version(memcached_st *ptr);
-
-LIBMEMCACHED_API
-const char *memcached_lib_version(void);
-
-#ifdef __cplusplus
-}
-#endif
diff --git a/include/libmemcached-1/visibility.h b/include/libmemcached-1/visibility.h
deleted file mode 100644 (file)
index 419b3d5..0000000
+++ /dev/null
@@ -1,64 +0,0 @@
-/*
-    +--------------------------------------------------------------------+
-    | libmemcached - 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 Michael Wallner   <mike@php.net>                |
-    +--------------------------------------------------------------------+
-*/
-
-#pragma once
-
-/**
- *
- * LIBMEMCACHED_API is used for the public API symbols. It either DLL imports or
- * DLL exports (or does nothing for static build).
- *
- * LIBMEMCACHED_LOCAL is used for non-api symbols.
- */
-
-#if defined(BUILDING_LIBMEMCACHEDINTERNAL)
-#  if defined(HAVE_VISIBILITY) && HAVE_VISIBILITY
-#    define LIBMEMCACHED_API   __attribute__((visibility("default")))
-#    define LIBMEMCACHED_LOCAL __attribute__((visibility("default")))
-#  elif defined(__SUNPRO_C) && (__SUNPRO_C >= 0x550)
-#    define LIBMEMCACHED_API   __global
-#    define LIBMEMCACHED_LOCAL __global
-#  elif defined(_MSC_VER)
-#    define LIBMEMCACHED_API   extern __declspec(dllexport)
-#    define LIBMEMCACHED_LOCAL extern __declspec(dllexport)
-#  else
-#    define LIBMEMCACHED_API
-#    define LIBMEMCACHED_LOCAL
-#  endif
-#else
-#  if defined(BUILDING_LIBMEMCACHED)
-#    if defined(HAVE_VISIBILITY) && HAVE_VISIBILITY
-#      define LIBMEMCACHED_API   __attribute__((visibility("default")))
-#      define LIBMEMCACHED_LOCAL __attribute__((visibility("hidden")))
-#    elif defined(__SUNPRO_C) && (__SUNPRO_C >= 0x550)
-#      define LIBMEMCACHED_API   __global
-#      define LIBMEMCACHED_LOCAL __hidden
-#    elif defined(_MSC_VER)
-#      define LIBMEMCACHED_API extern __declspec(dllexport)
-#      define LIBMEMCACHED_LOCAL
-#    else
-#      define LIBMEMCACHED_API
-#      define LIBMEMCACHED_LOCAL
-#    endif /* defined(HAVE_VISIBILITY) */
-#  else    /* defined(BUILDING_LIBMEMCACHED) */
-#    if defined(_MSC_VER)
-#      define LIBMEMCACHED_API extern __declspec(dllimport)
-#      define LIBMEMCACHED_LOCAL
-#    else
-#      define LIBMEMCACHED_API
-#      define LIBMEMCACHED_LOCAL
-#    endif /* defined(_MSC_VER) */
-#  endif   /* defined(BUILDING_LIBMEMCACHED) */
-#endif     /* defined(BUILDING_LIBMEMCACHEDINTERNAL) */
diff --git a/include/libmemcachedprotocol-0.0 b/include/libmemcachedprotocol-0.0
deleted file mode 120000 (symlink)
index 9157c76..0000000
+++ /dev/null
@@ -1 +0,0 @@
-libmemcachedprotocol-0
\ No newline at end of file
diff --git a/include/libmemcachedprotocol-0.0/CMakeLists.txt b/include/libmemcachedprotocol-0.0/CMakeLists.txt
new file mode 100644 (file)
index 0000000..6d4fb22
--- /dev/null
@@ -0,0 +1,9 @@
+
+install_public_headers(
+        libmemcachedprotocol-0.0
+
+        binary.h
+        callback.h
+        handler.h
+        vbucket.h
+)
diff --git a/include/libmemcachedprotocol-0.0/binary.h b/include/libmemcachedprotocol-0.0/binary.h
new file mode 100644 (file)
index 0000000..837f3ad
--- /dev/null
@@ -0,0 +1,699 @@
+/*
+    +--------------------------------------------------------------------+
+    | libmemcached - 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 Michael Wallner   <mike@php.net>                |
+    +--------------------------------------------------------------------+
+*/
+
+#ifndef PROTOCOL_BINARY_H
+#define PROTOCOL_BINARY_H
+
+#include "libmemcachedprotocol-0.0/vbucket.h"
+
+/**
+ * \addtogroup Protocol
+ * @{
+ */
+
+/**
+ * This file contains definitions of the constants and packet formats
+ * defined in the binary specification. Please note that you _MUST_ remember
+ * to convert each multibyte field to / from network byte order to / from
+ * host order.
+ */
+#ifdef __cplusplus
+# include <cstdint>
+extern "C" {
+#else
+# include <stdint.h>
+#endif
+
+/**
+ * Definition of the legal "magic" values used in a packet.
+ * See section 3.1 Magic byte
+ */
+typedef enum { PROTOCOL_BINARY_REQ = 0x80, PROTOCOL_BINARY_RES = 0x81 } protocol_binary_magic;
+
+/**
+ * Definition of the valid response status numbers.
+ * See section 3.2 Response Status
+ */
+typedef enum {
+  PROTOCOL_BINARY_RESPONSE_SUCCESS = 0x00,
+  PROTOCOL_BINARY_RESPONSE_KEY_ENOENT = 0x01,
+  PROTOCOL_BINARY_RESPONSE_KEY_EEXISTS = 0x02,
+  PROTOCOL_BINARY_RESPONSE_E2BIG = 0x03,
+  PROTOCOL_BINARY_RESPONSE_EINVAL = 0x04,
+  PROTOCOL_BINARY_RESPONSE_NOT_STORED = 0x05,
+  PROTOCOL_BINARY_RESPONSE_DELTA_BADVAL = 0x06,
+  PROTOCOL_BINARY_RESPONSE_NOT_MY_VBUCKET = 0x07,
+  PROTOCOL_BINARY_RESPONSE_AUTH_ERROR = 0x20,
+  PROTOCOL_BINARY_RESPONSE_AUTH_CONTINUE = 0x21,
+  PROTOCOL_BINARY_RESPONSE_UNKNOWN_COMMAND = 0x81,
+  PROTOCOL_BINARY_RESPONSE_ENOMEM = 0x82,
+  PROTOCOL_BINARY_RESPONSE_NOT_SUPPORTED = 0x83,
+  PROTOCOL_BINARY_RESPONSE_EINTERNAL = 0x84,
+  PROTOCOL_BINARY_RESPONSE_EBUSY = 0x85,
+  PROTOCOL_BINARY_RESPONSE_ETMPFAIL = 0x86
+} protocol_binary_response_status;
+
+/**
+ * Defintion of the different command opcodes.
+ * See section 3.3 Command Opcodes
+ */
+typedef enum {
+  PROTOCOL_BINARY_CMD_GET = 0x00,
+  PROTOCOL_BINARY_CMD_SET = 0x01,
+  PROTOCOL_BINARY_CMD_ADD = 0x02,
+  PROTOCOL_BINARY_CMD_REPLACE = 0x03,
+  PROTOCOL_BINARY_CMD_DELETE = 0x04,
+  PROTOCOL_BINARY_CMD_INCREMENT = 0x05,
+  PROTOCOL_BINARY_CMD_DECREMENT = 0x06,
+  PROTOCOL_BINARY_CMD_QUIT = 0x07,
+  PROTOCOL_BINARY_CMD_FLUSH = 0x08,
+  PROTOCOL_BINARY_CMD_GETQ = 0x09,
+  PROTOCOL_BINARY_CMD_NOOP = 0x0a,
+  PROTOCOL_BINARY_CMD_VERSION = 0x0b,
+  PROTOCOL_BINARY_CMD_GETK = 0x0c,
+  PROTOCOL_BINARY_CMD_GETKQ = 0x0d,
+  PROTOCOL_BINARY_CMD_APPEND = 0x0e,
+  PROTOCOL_BINARY_CMD_PREPEND = 0x0f,
+  PROTOCOL_BINARY_CMD_STAT = 0x10,
+  PROTOCOL_BINARY_CMD_SETQ = 0x11,
+  PROTOCOL_BINARY_CMD_ADDQ = 0x12,
+  PROTOCOL_BINARY_CMD_REPLACEQ = 0x13,
+  PROTOCOL_BINARY_CMD_DELETEQ = 0x14,
+  PROTOCOL_BINARY_CMD_INCREMENTQ = 0x15,
+  PROTOCOL_BINARY_CMD_DECREMENTQ = 0x16,
+  PROTOCOL_BINARY_CMD_QUITQ = 0x17,
+  PROTOCOL_BINARY_CMD_FLUSHQ = 0x18,
+  PROTOCOL_BINARY_CMD_APPENDQ = 0x19,
+  PROTOCOL_BINARY_CMD_PREPENDQ = 0x1a,
+  PROTOCOL_BINARY_CMD_VERBOSITY = 0x1b,
+  PROTOCOL_BINARY_CMD_TOUCH = 0x1c,
+  PROTOCOL_BINARY_CMD_GAT = 0x1d,
+  PROTOCOL_BINARY_CMD_GATQ = 0x1e,
+  PROTOCOL_BINARY_CMD_GATK = 0x23,
+  PROTOCOL_BINARY_CMD_GATKQ = 0x24,
+
+  PROTOCOL_BINARY_CMD_SASL_LIST_MECHS = 0x20,
+  PROTOCOL_BINARY_CMD_SASL_AUTH = 0x21,
+  PROTOCOL_BINARY_CMD_SASL_STEP = 0x22,
+
+  /* These commands are used for range operations and exist within
+   * this header for use in other projects.  Range operations are
+   * not expected to be implemented in the memcached server itself.
+   */
+  PROTOCOL_BINARY_CMD_RGET = 0x30,
+  PROTOCOL_BINARY_CMD_RSET = 0x31,
+  PROTOCOL_BINARY_CMD_RSETQ = 0x32,
+  PROTOCOL_BINARY_CMD_RAPPEND = 0x33,
+  PROTOCOL_BINARY_CMD_RAPPENDQ = 0x34,
+  PROTOCOL_BINARY_CMD_RPREPEND = 0x35,
+  PROTOCOL_BINARY_CMD_RPREPENDQ = 0x36,
+  PROTOCOL_BINARY_CMD_RDELETE = 0x37,
+  PROTOCOL_BINARY_CMD_RDELETEQ = 0x38,
+  PROTOCOL_BINARY_CMD_RINCR = 0x39,
+  PROTOCOL_BINARY_CMD_RINCRQ = 0x3a,
+  PROTOCOL_BINARY_CMD_RDECR = 0x3b,
+  PROTOCOL_BINARY_CMD_RDECRQ = 0x3c,
+  /* End Range operations */
+
+  /* VBucket commands */
+  PROTOCOL_BINARY_CMD_SET_VBUCKET = 0x3d,
+  PROTOCOL_BINARY_CMD_GET_VBUCKET = 0x3e,
+  PROTOCOL_BINARY_CMD_DEL_VBUCKET = 0x3f,
+  /* End VBucket commands */
+
+  /* TAP commands */
+  PROTOCOL_BINARY_CMD_TAP_CONNECT = 0x40,
+  PROTOCOL_BINARY_CMD_TAP_MUTATION = 0x41,
+  PROTOCOL_BINARY_CMD_TAP_DELETE = 0x42,
+  PROTOCOL_BINARY_CMD_TAP_FLUSH = 0x43,
+  PROTOCOL_BINARY_CMD_TAP_OPAQUE = 0x44,
+  PROTOCOL_BINARY_CMD_TAP_VBUCKET_SET = 0x45,
+  PROTOCOL_BINARY_CMD_TAP_CHECKPOINT_START = 0x46,
+  PROTOCOL_BINARY_CMD_TAP_CHECKPOINT_END = 0x47,
+  /* End TAP */
+
+  PROTOCOL_BINARY_CMD_LAST_RESERVED = 0xef,
+
+  /* Scrub the data */
+  PROTOCOL_BINARY_CMD_SCRUB = 0xf0
+} protocol_binary_command;
+
+/**
+ * Definition of the data types in the packet
+ * See section 3.4 Data Types
+ */
+typedef enum { PROTOCOL_BINARY_RAW_BYTES = 0x00 } protocol_binary_datatypes;
+
+/**
+ * Definition of the header structure for a request packet.
+ * See section 2
+ */
+typedef union {
+  struct {
+    uint8_t magic;
+    uint8_t opcode;
+    uint16_t keylen;
+    uint8_t extlen;
+    uint8_t datatype;
+    uint16_t vbucket;
+    uint32_t bodylen;
+    uint32_t opaque;
+    uint64_t cas;
+  } request;
+  uint8_t bytes[24];
+} protocol_binary_request_header;
+
+/**
+ * Definition of the header structure for a response packet.
+ * See section 2
+ */
+typedef union {
+  struct {
+    uint8_t magic;
+    uint8_t opcode;
+    uint16_t keylen;
+    uint8_t extlen;
+    uint8_t datatype;
+    uint16_t status;
+    uint32_t bodylen;
+    uint32_t opaque;
+    uint64_t cas;
+  } response;
+  uint8_t bytes[24];
+} protocol_binary_response_header;
+
+/**
+ * Definition of a request-packet containing no extras
+ */
+union protocol_binary_request_no_extras {
+  struct {
+    protocol_binary_request_header header;
+  } message;
+  uint8_t bytes[sizeof(protocol_binary_request_header)];
+};
+typedef union protocol_binary_request_no_extras protocol_binary_request_no_extras;
+
+/**
+ * Definition of a response-packet containing no extras
+ */
+typedef union {
+  struct {
+    protocol_binary_response_header header;
+  } message;
+  uint8_t bytes[sizeof(protocol_binary_response_header)];
+} protocol_binary_response_no_extras;
+
+/**
+ * Definition of the packet used by the get, getq, getk and getkq command.
+ * See section 4
+ */
+typedef protocol_binary_request_no_extras protocol_binary_request_get;
+typedef protocol_binary_request_no_extras protocol_binary_request_getq;
+typedef protocol_binary_request_no_extras protocol_binary_request_getk;
+typedef protocol_binary_request_no_extras protocol_binary_request_getkq;
+
+/**
+ * Definition of the packet returned from a successful get, getq, getk and
+ * getkq.
+ * See section 4
+ */
+typedef union {
+  struct {
+    protocol_binary_response_header header;
+    struct {
+      uint32_t flags;
+    } body;
+  } message;
+  uint8_t bytes[sizeof(protocol_binary_response_header) + 4];
+} protocol_binary_response_get;
+
+typedef protocol_binary_response_get protocol_binary_response_getq;
+typedef protocol_binary_response_get protocol_binary_response_getk;
+typedef protocol_binary_response_get protocol_binary_response_getkq;
+
+/**
+ * Definition of the packet used by the delete command
+ * See section 4
+ */
+typedef protocol_binary_request_no_extras protocol_binary_request_delete;
+
+/**
+ * Definition of the packet returned by the delete command
+ * See section 4
+ */
+typedef protocol_binary_response_no_extras protocol_binary_response_delete;
+
+/**
+ * Definition of the packet used by the flush command
+ * See section 4
+ * Please note that the expiration field is optional, so remember to see
+ * check the header.bodysize to see if it is present.
+ */
+typedef union {
+  struct {
+    protocol_binary_request_header header;
+    struct {
+      uint32_t expiration;
+    } body;
+  } message;
+  uint8_t bytes[sizeof(protocol_binary_request_header) + 4];
+} protocol_binary_request_flush;
+
+/**
+ * Definition of the packet returned by the flush command
+ * See section 4
+ */
+typedef protocol_binary_response_no_extras protocol_binary_response_flush;
+
+/**
+ * Definition of the packet used by set, add and replace
+ * See section 4
+ */
+typedef union {
+  struct {
+    protocol_binary_request_header header;
+    struct {
+      uint32_t flags;
+      uint32_t expiration;
+    } body;
+  } message;
+  uint8_t bytes[sizeof(protocol_binary_request_header) + 8];
+} protocol_binary_request_set;
+typedef protocol_binary_request_set protocol_binary_request_add;
+typedef protocol_binary_request_set protocol_binary_request_replace;
+
+/**
+ * Definition of the packet returned by set, add and replace
+ * See section 4
+ */
+typedef protocol_binary_response_no_extras protocol_binary_response_set;
+typedef protocol_binary_response_no_extras protocol_binary_response_add;
+typedef protocol_binary_response_no_extras protocol_binary_response_replace;
+
+/**
+ * Definition of the noop packet
+ * See section 4
+ */
+typedef protocol_binary_request_no_extras protocol_binary_request_noop;
+
+/**
+ * Definition of the packet returned by the noop command
+ * See section 4
+ */
+typedef protocol_binary_response_no_extras protocol_binary_response_noop;
+
+/**
+ * Definition of the structure used by the increment and decrement
+ * command.
+ * See section 4
+ */
+typedef union {
+  struct {
+    protocol_binary_request_header header;
+    struct {
+      uint64_t delta;
+      uint64_t initial;
+      uint32_t expiration;
+    } body;
+  } message;
+  uint8_t bytes[sizeof(protocol_binary_request_header) + 20];
+} protocol_binary_request_incr;
+typedef protocol_binary_request_incr protocol_binary_request_decr;
+
+/**
+ * Definition of the response from an incr or decr command
+ * command.
+ * See section 4
+ */
+typedef union {
+  struct {
+    protocol_binary_response_header header;
+    struct {
+      uint64_t value;
+    } body;
+  } message;
+  uint8_t bytes[sizeof(protocol_binary_response_header) + 8];
+} protocol_binary_response_incr;
+typedef protocol_binary_response_incr protocol_binary_response_decr;
+
+/**
+ * Definition of the quit
+ * See section 4
+ */
+typedef protocol_binary_request_no_extras protocol_binary_request_quit;
+
+/**
+ * Definition of the packet returned by the quit command
+ * See section 4
+ */
+typedef protocol_binary_response_no_extras protocol_binary_response_quit;
+
+/**
+ * Definition of the packet used by append and prepend command
+ * See section 4
+ */
+typedef protocol_binary_request_no_extras protocol_binary_request_append;
+typedef protocol_binary_request_no_extras protocol_binary_request_prepend;
+
+/**
+ * Definition of the packet returned from a successful append or prepend
+ * See section 4
+ */
+typedef protocol_binary_response_no_extras protocol_binary_response_append;
+typedef protocol_binary_response_no_extras protocol_binary_response_prepend;
+
+/**
+ * Definition of the packet used by the version command
+ * See section 4
+ */
+typedef protocol_binary_request_no_extras protocol_binary_request_version;
+
+/**
+ * Definition of the packet returned from a successful version command
+ * See section 4
+ */
+typedef protocol_binary_response_no_extras protocol_binary_response_version;
+
+/**
+ * Definition of the packet used by the stats command.
+ * See section 4
+ */
+typedef protocol_binary_request_no_extras protocol_binary_request_stats;
+
+/**
+ * Definition of the packet returned from a successful stats command
+ * See section 4
+ */
+typedef protocol_binary_response_no_extras protocol_binary_response_stats;
+
+/**
+ * Definition of the packet used by the verbosity command
+ */
+typedef union {
+  struct {
+    protocol_binary_request_header header;
+    struct {
+      uint32_t level;
+    } body;
+  } message;
+  uint8_t bytes[sizeof(protocol_binary_request_header) + 4];
+} protocol_binary_request_verbosity;
+
+/**
+ * Definition of the packet returned from the verbosity command
+ */
+typedef protocol_binary_response_no_extras protocol_binary_response_verbosity;
+
+/**
+ * Definition of the packet used by the touch command.
+ */
+typedef union {
+  struct {
+    protocol_binary_request_header header;
+    struct {
+      uint32_t expiration;
+    } body;
+  } message;
+  uint8_t bytes[sizeof(protocol_binary_request_header) + 4];
+} protocol_binary_request_touch;
+
+/**
+ * Definition of the packet returned from the touch command
+ */
+typedef protocol_binary_response_no_extras protocol_binary_response_touch;
+
+/**
+ * Definition of the packet used by the GAT(Q) command.
+ */
+typedef union {
+  struct {
+    protocol_binary_request_header header;
+    struct {
+      uint32_t expiration;
+    } body;
+  } message;
+  uint8_t bytes[sizeof(protocol_binary_request_header) + 4];
+} protocol_binary_request_gat;
+
+typedef protocol_binary_request_gat protocol_binary_request_gatq;
+
+/**
+ * Definition of the packet returned from the GAT(Q)
+ */
+typedef protocol_binary_response_get protocol_binary_response_gat;
+typedef protocol_binary_response_get protocol_binary_response_gatq;
+
+/**
+ * Definition of a request for a range operation.
+ * See http://code.google.com/p/memcached/wiki/RangeOps
+ *
+ * These types are used for range operations and exist within
+ * this header for use in other projects.  Range operations are
+ * not expected to be implemented in the memcached server itself.
+ */
+typedef union {
+  struct {
+    protocol_binary_response_header header;
+    struct {
+      uint16_t size;
+      uint8_t reserved;
+      uint8_t flags;
+      uint32_t max_results;
+    } body;
+  } message;
+  uint8_t bytes[sizeof(protocol_binary_request_header) + 4];
+} protocol_binary_request_rangeop;
+
+typedef protocol_binary_request_rangeop protocol_binary_request_rget;
+typedef protocol_binary_request_rangeop protocol_binary_request_rset;
+typedef protocol_binary_request_rangeop protocol_binary_request_rsetq;
+typedef protocol_binary_request_rangeop protocol_binary_request_rappend;
+typedef protocol_binary_request_rangeop protocol_binary_request_rappendq;
+typedef protocol_binary_request_rangeop protocol_binary_request_rprepend;
+typedef protocol_binary_request_rangeop protocol_binary_request_rprependq;
+typedef protocol_binary_request_rangeop protocol_binary_request_rdelete;
+typedef protocol_binary_request_rangeop protocol_binary_request_rdeleteq;
+typedef protocol_binary_request_rangeop protocol_binary_request_rincr;
+typedef protocol_binary_request_rangeop protocol_binary_request_rincrq;
+typedef protocol_binary_request_rangeop protocol_binary_request_rdecr;
+typedef protocol_binary_request_rangeop protocol_binary_request_rdecrq;
+
+/**
+ * Definition of tap commands
+ * See To be written
+ *
+ */
+
+typedef union {
+  struct {
+    protocol_binary_request_header header;
+    struct {
+      /**
+       * flags is a bitmask used to set properties for the
+       * the connection. Please In order to be forward compatible
+       * you should set all undefined bits to 0.
+       *
+       * If the bit require extra userdata, it will be stored
+       * in the user-data field of the body (passed to the engine
+       * as enginespeciffic). That means that when you parse the
+       * flags and the engine-specific data, you have to work your
+       * way from bit 0 and upwards to find the correct offset for
+       * the data.
+       *
+       */
+      uint32_t flags;
+
+      /**
+       * Backfill age
+       *
+       * By using this flag you can limit the amount of data being
+       * transmitted. If you don't specify a backfill age, the
+       * server will transmit everything it contains.
+       *
+       * The first 8 bytes in the engine specific data contains
+       * the oldest entry (from epoc) you're interested in.
+       * Specifying a time in the future (for the server you are
+       * connecting to), will cause it to start streaming current
+       * changes.
+       */
+#define TAP_CONNECT_FLAG_BACKFILL 0x01
+      /**
+       * Dump will cause the server to send the data stored on the
+       * server, but disconnect when the keys stored in the server
+       * are transmitted.
+       */
+#define TAP_CONNECT_FLAG_DUMP 0x02
+      /**
+       * The body contains a list of 16 bits words in network byte
+       * order specifying the vbucket ids to monitor. The first 16
+       * bit word contains the number of buckets. The number of 0
+       * means "all buckets"
+       */
+#define TAP_CONNECT_FLAG_LIST_VBUCKETS 0x04
+      /**
+       * The responsibility of the vbuckets is to be transferred
+       * over to the caller when all items are transferred.
+       */
+#define TAP_CONNECT_FLAG_TAKEOVER_VBUCKETS 0x08
+      /**
+       * The tap consumer supports ack'ing of tap messages
+       */
+#define TAP_CONNECT_SUPPORT_ACK 0x10
+      /**
+       * The tap consumer would prefer to just get the keys
+       * back. If the engine supports this it will set
+       * the TAP_FLAG_NO_VALUE flag in each of the
+       * tap packets returned.
+       */
+#define TAP_CONNECT_REQUEST_KEYS_ONLY 0x20
+      /**
+       * The body contains a list of (vbucket_id, last_checkpoint_id)
+       * pairs. This provides the checkpoint support in TAP streams.
+       * The last checkpoint id represents the last checkpoint that
+       * was successfully persisted.
+       */
+#define TAP_CONNECT_CHECKPOINT 0x40
+      /**
+       * The tap consumer is a registered tap client, which means that
+       * the tap server will maintain its checkpoint cursor permanently.
+       */
+#define TAP_CONNECT_REGISTERED_CLIENT 0x80
+    } body;
+  } message;
+  uint8_t bytes[sizeof(protocol_binary_request_header) + 4];
+} protocol_binary_request_tap_connect;
+
+typedef union {
+  struct {
+    protocol_binary_request_header header;
+    struct {
+      struct {
+        uint16_t enginespecific_length;
+        /*
+         * The flag section support the following flags
+         */
+        /**
+         * Request that the consumer send a response packet
+         * for this packet. The opaque field must be preserved
+         * in the response.
+         */
+#define TAP_FLAG_ACK 0x01
+        /**
+         * The value for the key is not included in the packet
+         */
+#define TAP_FLAG_NO_VALUE 0x02
+        uint16_t flags;
+        uint8_t ttl;
+        uint8_t res1;
+        uint8_t res2;
+        uint8_t res3;
+      } tap;
+      struct {
+        uint32_t flags;
+        uint32_t expiration;
+      } item;
+    } body;
+  } message;
+  uint8_t bytes[sizeof(protocol_binary_request_header) + 16];
+} protocol_binary_request_tap_mutation;
+
+typedef union {
+  struct {
+    protocol_binary_request_header header;
+    struct {
+      struct {
+        uint16_t enginespecific_length;
+        /**
+         * See the definition of the flags for
+         * protocol_binary_request_tap_mutation for a description
+         * of the available flags.
+         */
+        uint16_t flags;
+        uint8_t ttl;
+        uint8_t res1;
+        uint8_t res2;
+        uint8_t res3;
+      } tap;
+    } body;
+  } message;
+  uint8_t bytes[sizeof(protocol_binary_request_header) + 8];
+} protocol_binary_request_tap_no_extras;
+
+typedef protocol_binary_request_tap_no_extras protocol_binary_request_tap_delete;
+typedef protocol_binary_request_tap_no_extras protocol_binary_request_tap_flush;
+typedef protocol_binary_request_tap_no_extras protocol_binary_request_tap_opaque;
+typedef protocol_binary_request_tap_no_extras protocol_binary_request_tap_vbucket_set;
+
+/**
+ * Definition of the packet used by the scrub.
+ */
+typedef protocol_binary_request_no_extras protocol_binary_request_scrub;
+
+/**
+ * Definition of the packet returned from scrub.
+ */
+typedef protocol_binary_response_no_extras protocol_binary_response_scrub;
+
+/**
+ * Definition of the packet used by set vbucket
+ */
+typedef union {
+  struct {
+    protocol_binary_request_header header;
+    struct {
+      vbucket_state_t state;
+    } body;
+  } message;
+  uint8_t bytes[sizeof(protocol_binary_request_header) + sizeof(vbucket_state_t)];
+} protocol_binary_request_set_vbucket;
+/**
+ * Definition of the packet returned from set vbucket
+ */
+typedef protocol_binary_response_no_extras protocol_binary_response_set_vbucket;
+/**
+ * Definition of the packet used by del vbucket
+ */
+typedef protocol_binary_request_no_extras protocol_binary_request_del_vbucket;
+/**
+ * Definition of the packet returned from del vbucket
+ */
+typedef protocol_binary_response_no_extras protocol_binary_response_del_vbucket;
+
+/**
+ * Definition of the packet used by get vbucket
+ */
+typedef protocol_binary_request_no_extras protocol_binary_request_get_vbucket;
+
+/**
+ * Definition of the packet returned from get vbucket
+ */
+typedef union {
+  struct {
+    protocol_binary_response_header header;
+    struct {
+      vbucket_state_t state;
+    } body;
+  } message;
+  uint8_t bytes[sizeof(protocol_binary_response_header) + sizeof(vbucket_state_t)];
+} protocol_binary_response_get_vbucket;
+
+/**
+ * @}
+ */
+
+#ifdef __cplusplus
+}
+#endif
+#endif /* PROTOCOL_BINARY_H */
diff --git a/include/libmemcachedprotocol-0.0/callback.h b/include/libmemcachedprotocol-0.0/callback.h
new file mode 100644 (file)
index 0000000..02f9566
--- /dev/null
@@ -0,0 +1,379 @@
+/*
+    +--------------------------------------------------------------------+
+    | libmemcached - 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 Michael Wallner   <mike@php.net>                |
+    +--------------------------------------------------------------------+
+*/
+
+#pragma once
+
+#ifdef __cplusplus
+# include <cstdint>
+extern "C" {
+#else
+# include <stdint.h>
+#endif
+
+#if defined _WIN32
+# undef interface
+#endif
+
+/**
+ * Callback to send data back from a successful GET/GETQ/GETK/GETKQ command
+ *
+ * @param cookie Just pass along the cookie supplied in the callback
+ * @param key What to insert as key in the reply
+ * @param keylen The length of the key
+ * @param body What to store in the body of the package
+ * @param bodylen The number of bytes of the body
+ * @param flags The flags stored with the item
+ * @param cas The CAS value to insert into the response (should be 0
+ *            if you don't care)
+ */
+typedef protocol_binary_response_status (*memcached_binary_protocol_get_response_handler)(
+    const void *cookie, const void *key, uint16_t keylen, const void *body, uint32_t bodylen,
+    uint32_t flags, uint64_t cas);
+/**
+ * Callback to send data back from a STAT command
+ *
+ * @param cookie Just pass along the cookie supplied in the callback
+ * @param key What to insert as key in the reply
+ * @param keylen The length of the key
+ * @param body What to store in the body of the package
+ * @param bodylen The number of bytes of the body
+ */
+typedef protocol_binary_response_status (*memcached_binary_protocol_stat_response_handler)(
+    const void *cookie, const void *key, uint16_t keylen, const void *body, uint32_t bodylen);
+/**
+ * Callback to send data back from a VERSION command
+ *
+ * @param cookie Just pass along the cookie supplied in the callback
+ * @param text The version string
+ * @param length The number of bytes in the version string
+ */
+typedef protocol_binary_response_status (*memcached_binary_protocol_version_response_handler)(
+    const void *cookie, const void *text, uint32_t length);
+
+/**
+ * In the low level interface you need to format the response
+ * packet yourself (giving you complete freedom :-)
+ *
+ * @param cookie Just pass along the cookie supplied in the callback
+ * @param request Pointer to the request packet you are sending a reply to
+ * @param response Pointer to the response packet to send
+ *
+ */
+typedef protocol_binary_response_status (*memcached_binary_protocol_raw_response_handler)(
+    const void *cookie, protocol_binary_request_header *request,
+    protocol_binary_response_header *response);
+
+/**
+ * In the low lever interface you have to do most of the work by
+ * yourself, but it also gives you a lot of freedom :-)
+ * @param cookie identification for this connection, just pass it along to
+ *               the response handler
+ * @param header the command received over the wire. Never try to access
+ *               <u>anything</u> outside the command.
+ * @param resonse_handler call this function to send data back to the client
+ */
+typedef protocol_binary_response_status (*memcached_binary_protocol_command_handler)(
+    const void *cookie, protocol_binary_request_header *header,
+    memcached_binary_protocol_raw_response_handler response_handler);
+
+/**
+ * The raw interface to the packets is implemented in version 0. It contains
+ * just an array with command handlers. The inxed in the array is the
+ * com code.
+ */
+typedef struct {
+  memcached_binary_protocol_command_handler comcode[256];
+} memcached_binary_protocol_callback_v0_st;
+
+/**
+ * The first version of the callback struct containing all of the
+ * documented commands in the initial release of the binary protocol
+ * (aka. memcached 1.4.0).
+ *
+ * You might miss the Q commands (addq etc) but the response function
+ * knows how to deal with them so you don't need to worry about that :-)
+ */
+typedef struct {
+  /**
+   * Add an item to the cache
+   * @param cookie id of the client receiving the command
+   * @param key the key to add
+   * @param len the length of the key
+   * @param val the value to store for the key (may be NIL)
+   * @param vallen the length of the data
+   * @param flags the flags to store with the key
+   * @param exptime the expiry time for the key-value pair
+   * @param cas the resulting cas for the add operation (if success)
+   */
+  protocol_binary_response_status (*add)(const void *cookie, const void *key, uint16_t keylen,
+                                         const void *val, uint32_t vallen, uint32_t flags,
+                                         uint32_t exptime, uint64_t *cas);
+
+  /**
+   * Append data to an <b>existing</b> key-value pair.
+   *
+   * @param cookie id of the client receiving the command
+   * @param key the key to add data to
+   * @param len the length of the key
+   * @param val the value to append to the value
+   * @param vallen the length of the data
+   * @param cas the CAS in the request
+   * @param result_cas the resulting cas for the append operation
+   *
+   */
+  protocol_binary_response_status (*append)(const void *cookie, const void *key, uint16_t keylen,
+                                            const void *val, uint32_t vallen, uint64_t cas,
+                                            uint64_t *result_cas);
+
+  /**
+   * Decrement the value for a key
+   *
+   * @param cookie id of the client receiving the command
+   * @param key the key to decrement the value for
+   * @param len the length of the key
+   * @param delta the amount to decrement
+   * @param initial initial value to store (if the key doesn't exist)
+   * @param expiration expiration time for the object (if the key doesn't exist)
+   * @param cas the CAS in the request
+   * @param result the result from the decrement
+   * @param result_cas the cas of the item
+   *
+   */
+  protocol_binary_response_status (*decrement)(const void *cookie, const void *key, uint16_t keylen,
+                                               uint64_t delta, uint64_t initial,
+                                               uint32_t expiration, uint64_t *result,
+                                               uint64_t *result_cas);
+
+  /**
+   * Delete an existing key
+   *
+   * @param cookie id of the client receiving the command
+   * @param key the key to delete_object
+   * @param len the length of the key
+   * @param cas the CAS in the request
+   */
+  protocol_binary_response_status (*delete_object)(const void *cookie, const void *key,
+                                                   uint16_t keylen, uint64_t cas);
+
+  /**
+   * Flush the cache
+   *
+   * @param cookie id of the client receiving the command
+   * @param when when the cache should be flushed (0 == immediately)
+   */
+  protocol_binary_response_status (*flush_object)(const void *cookie, uint32_t when);
+
+  /**
+   * Get a key-value pair
+   *
+   * @param cookie id of the client receiving the command
+   * @param key the key to get
+   * @param len the length of the key
+   * @param response_handler to send the result back to the client
+   */
+  protocol_binary_response_status (*get)(
+      const void *cookie, const void *key, uint16_t keylen,
+      memcached_binary_protocol_get_response_handler response_handler);
+
+  /**
+   * Increment the value for a key
+   *
+   * @param cookie id of the client receiving the command
+   * @param key the key to increment the value on
+   * @param len the length of the key
+   * @param delta the amount to increment
+   * @param initial initial value to store (if the key doesn't exist)
+   * @param expiration expiration time for the object (if the key doesn't exist)
+   * @param cas the CAS in the request
+   * @param result the result from the decrement
+   * @param result_cas the cas of the item
+   *
+   */
+  protocol_binary_response_status (*increment)(const void *cookie, const void *key, uint16_t keylen,
+                                               uint64_t delta, uint64_t initial,
+                                               uint32_t expiration, uint64_t *result,
+                                               uint64_t *result_cas);
+
+  /**
+   * The noop command was received. This is just a notification callback (the
+   * response is automatically created).
+   *
+   * @param cookie id of the client receiving the command
+   */
+  protocol_binary_response_status (*noop)(const void *cookie);
+
+  /**
+   * Prepend data to an <b>existing</b> key-value pair.
+   *
+   * @param cookie id of the client receiving the command
+   * @param key the key to prepend data to
+   * @param len the length of the key
+   * @param val the value to prepend to the value
+   * @param vallen the length of the data
+   * @param cas the CAS in the request
+   * @param result-cas the cas id of the item
+   *
+   */
+  protocol_binary_response_status (*prepend)(const void *cookie, const void *key, uint16_t keylen,
+                                             const void *val, uint32_t vallen, uint64_t cas,
+                                             uint64_t *result_cas);
+
+  /**
+   * The quit command was received. This is just a notification callback (the
+   * response is automatically created).
+   *
+   * @param cookie id of the client receiving the command
+   */
+  protocol_binary_response_status (*quit)(const void *cookie);
+
+  /**
+   * Replace an <b>existing</b> item to the cache
+   *
+   * @param cookie id of the client receiving the command
+   * @param key the key to replace the content for
+   * @param len the length of the key
+   * @param val the value to store for the key (may be NIL)
+   * @param vallen the length of the data
+   * @param flags the flags to store with the key
+   * @param exptime the expiry time for the key-value pair
+   * @param cas the cas id in the request
+   * @param result_cas the cas id of the item
+   */
+  protocol_binary_response_status (*replace)(const void *cookie, const void *key, uint16_t keylen,
+                                             const void *val, uint32_t vallen, uint32_t flags,
+                                             uint32_t exptime, uint64_t cas, uint64_t *result_cas);
+
+  /**
+   * Set a key-value pair in the cache
+   *
+   * @param cookie id of the client receiving the command
+   * @param key the key to insert
+   * @param len the length of the key
+   * @param val the value to store for the key (may be NIL)
+   * @param vallen the length of the data
+   * @param flags the flags to store with the key
+   * @param exptime the expiry time for the key-value pair
+   * @param cas the cas id in the request
+   * @param result_cas the cas id of the new item
+   */
+  protocol_binary_response_status (*set)(const void *cookie, const void *key, uint16_t keylen,
+                                         const void *val, uint32_t vallen, uint32_t flags,
+                                         uint32_t exptime, uint64_t cas, uint64_t *result_cas);
+
+  /**
+   * Get status information
+   *
+   * @param cookie id of the client receiving the command
+   * @param key the key to get status for (or NIL to request all status).
+   *            Remember to insert the terminating packet if multiple
+   *            packets should be returned.
+   * @param keylen the length of the key
+   * @param response_handler to send the result back to the client, but
+   *                         don't send reply on success!
+   *
+   */
+  protocol_binary_response_status (*stat)(
+      const void *cookie, const void *key, uint16_t keylen,
+      memcached_binary_protocol_stat_response_handler response_handler);
+
+  /**
+   * Get the version information
+   *
+   * @param cookie id of the client receiving the command
+   * @param response_handler to send the result back to the client, but
+   *                         don't send reply on success!
+   *
+   */
+  protocol_binary_response_status (*version)(
+      const void *cookie, memcached_binary_protocol_version_response_handler response_handler);
+} memcached_binary_protocol_callback_v1_st;
+
+/**
+ * The version numbers for the different callback structures.
+ */
+typedef enum {
+  /** Version 0 is a lowlevel interface that tries to maximize your freedom */
+  MEMCACHED_PROTOCOL_HANDLER_V0 = 0,
+  /**
+   * Version 1 abstracts more of the protocol details, and let you work at
+   * a logical level
+   */
+  MEMCACHED_PROTOCOL_HANDLER_V1 = 1
+} memcached_protocol_interface_version_t;
+
+/**
+ * Definition of the protocol callback structure.
+ */
+typedef struct {
+  /**
+   * The interface version you provide callbacks for.
+   */
+  memcached_protocol_interface_version_t interface_version;
+
+  /**
+   * Callback fired just before the command will be executed.
+   *
+   * @param cookie id of the client receiving the command
+   * @param header the command header as received on the wire. If you look
+   *               at the content you <b>must</b> ensure that you don't
+   *               try to access beyond the end of the message.
+   */
+  void (*pre_execute)(const void *cookie, protocol_binary_request_header *header);
+  /**
+   * Callback fired just after the command was exected (please note
+   * that the data transfer back to the client is not finished at this
+   * time).
+   *
+   * @param cookie id of the client receiving the command
+   * @param header the command header as received on the wire. If you look
+   *               at the content you <b>must</b> ensure that you don't
+   *               try to access beyond the end of the message.
+   */
+  void (*post_execute)(const void *cookie, protocol_binary_request_header *header);
+
+  /**
+   * Callback fired if no specialized callback is registered for this
+   * specific command code.
+   *
+   * @param cookie id of the client receiving the command
+   * @param header the command header as received on the wire. You <b>must</b>
+   *               ensure that you don't try to access beyond the end of the
+   *               message.
+   * @param response_handler The response handler to send data back.
+   */
+  protocol_binary_response_status (*unknown)(
+      const void *cookie, protocol_binary_request_header *header,
+      memcached_binary_protocol_raw_response_handler response_handler);
+
+  /**
+   * The different interface levels we support. A pointer is used so the
+   * size of the structure is fixed. You must ensure that the memory area
+   * passed as the pointer is valid as long as you use the protocol handler.
+   */
+  union {
+    memcached_binary_protocol_callback_v0_st v0;
+
+    /**
+     * The first version of the callback struct containing all of the
+     * documented commands in the initial release of the binary protocol
+     * (aka. memcached 1.4.0).
+     */
+    memcached_binary_protocol_callback_v1_st v1;
+  } interface;
+} memcached_binary_protocol_callback_st;
+
+#ifdef __cplusplus
+}
+#endif
diff --git a/include/libmemcachedprotocol-0.0/handler.h b/include/libmemcachedprotocol-0.0/handler.h
new file mode 100644 (file)
index 0000000..5f00905
--- /dev/null
@@ -0,0 +1,227 @@
+/*
+    +--------------------------------------------------------------------+
+    | libmemcached - 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 Michael Wallner   <mike@php.net>                |
+    +--------------------------------------------------------------------+
+*/
+
+#pragma once
+
+#include <sys/types.h>
+#ifndef HAVE_SSIZE_T
+typedef long int ssize_t;
+#endif
+
+#ifndef __cplusplus
+#  include <stdbool.h>
+#  include <stdint.h>
+#  include <stddef.h>
+#else
+#  include <cstdint>
+#endif
+
+#include "libmemcached-1.0/visibility.h"
+#include "libmemcached-1.0/platform.h"
+#include "libmemcachedprotocol-0.0/binary.h"
+#include "libmemcachedprotocol-0.0/callback.h"
+
+/* Forward declarations */
+/*
+ * You should only access memcached_protocol_st from one thread!,
+ * and never assume anything about the internal layout / sizes of the
+ * structures.
+ */
+typedef struct memcached_protocol_st memcached_protocol_st;
+typedef struct memcached_protocol_client_st memcached_protocol_client_st;
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/**
+ * Function the protocol handler should call to receive data.
+ * This function should behave exactly like read(2)
+ *
+ * @param cookie a cookie used to represent a given client
+ * @param fd the filedescriptor associated with the client
+ * @param buf destination buffer
+ * @param nbuf number of bytes to receive
+ * @return the number of bytes copied into buf
+ *         or -1 upon error (errno should contain more information)
+ */
+typedef ssize_t (*memcached_protocol_recv_func)(const void *cookie, memcached_socket_t fd,
+                                                void *buf, size_t nbuf);
+
+/**
+ * Function the protocol handler should call to send data.
+ * This function should behave exactly like write(2)
+ *
+ * @param cookie a cookie used to represent a given client
+ * @param fd the filedescriptor associated with the client
+ * @param buf the source buffer
+ * @param nbuf number of bytes to send
+ * @return the number of bytes sent
+ *         or -1 upon error (errno should contain more information)
+ */
+typedef ssize_t (*memcached_protocol_send_func)(const void *cookie, memcached_socket_t fd,
+                                                const void *buf, size_t nbuf);
+
+/**
+ * Create an instance of the protocol handler
+ *
+ * @return NULL if allocation of an instance fails
+ */
+LIBMEMCACHED_API
+memcached_protocol_st *memcached_protocol_create_instance(void);
+
+/**
+ * Get the callbacks associated with a protocol handler instance
+ * @return the callbacks currently used
+ */
+LIBMEMCACHED_API
+memcached_binary_protocol_callback_st *
+memcached_binary_protocol_get_callbacks(memcached_protocol_st *instance);
+
+/**
+ * Set the callbacks to be used by the given protocol handler instance
+ * @param instance the instance to update
+ * @param callback the callbacks to use
+ */
+LIBMEMCACHED_API
+void memcached_binary_protocol_set_callbacks(memcached_protocol_st *instance,
+                                             memcached_binary_protocol_callback_st *callback);
+
+/**
+ * Should the library inspect the packages being sent and received and verify
+ * that they are according to the specification? If it encounters an invalid
+ * packet, it will return an EINVAL packet.
+ *
+ * @param instance the instance to update
+ * @param enable true if you want the library to check packages, false otherwise
+ */
+LIBMEMCACHED_API
+void memcached_binary_protocol_set_pedantic(memcached_protocol_st *instance, bool enable);
+
+/**
+ * Is the library inpecting each package?
+ * @param instance the instance to check
+ * @return true it the library is inspecting each package, false otherwise
+ */
+LIBMEMCACHED_API
+bool memcached_binary_protocol_get_pedantic(memcached_protocol_st *instance);
+
+/**
+ * Destroy an instance of the protocol handler
+ *
+ * @param instance The instance to destroy
+ */
+LIBMEMCACHED_API
+void memcached_protocol_destroy_instance(memcached_protocol_st *instance);
+
+/**
+ * Set the IO functions used by the instance to send and receive data. The
+ * functions should behave like recv(3socket) and send(3socket).
+ *
+ * @param instance the instance to specify the IO functions for
+ * @param recv the function to call for reciving data
+ * @param send the function to call for sending data
+ */
+LIBMEMCACHED_API
+void memached_protocol_set_io_functions(memcached_protocol_st *instance,
+                                        memcached_protocol_recv_func recv,
+                                        memcached_protocol_send_func send);
+
+/**
+ * Create a new client instance and associate it with a socket
+ * @param instance the protocol instance to bind the client to
+ * @param sock the client socket
+ * @return NULL if allocation fails, otherwise an instance
+ */
+LIBMEMCACHED_API
+memcached_protocol_client_st *memcached_protocol_create_client(memcached_protocol_st *instance,
+                                                               memcached_socket_t sock);
+
+/**
+ * Destroy a client handle.
+ * The caller needs to close the socket accociated with the client
+ * <b>before</b> calling this function. This function invalidates the
+ * client memory area.
+ *
+ * @param client the client to destroy
+ */
+LIBMEMCACHED_API
+void memcached_protocol_client_destroy(memcached_protocol_client_st *client);
+
+LIBMEMCACHED_API
+void memcached_protocol_client_set_verbose(struct memcached_protocol_client_st *client, bool arg);
+
+/**
+ * Error event means that the client encountered an error with the
+ * connection so you should shut it down
+ */
+#define MEMCACHED_PROTOCOL_ERROR_EVENT 1
+/**
+ * Please notify when there is more data available to read
+ */
+#define MEMCACHED_PROTOCOL_READ_EVENT 2
+/**
+ * Please notify when it is possible to send more data
+ */
+#define MEMCACHED_PROTOCOL_WRITE_EVENT 4
+/**
+ * Backed paused the execution for this client
+ */
+#define MEMCACHED_PROTOCOL_PAUSE_EVENT 8
+
+/**
+ * The different events the client is interested in. This is a bitmask of
+ * the constants defined above.
+ */
+typedef uint32_t memcached_protocol_event_t;
+
+/**
+ * Let the client do some work. This might involve reading / sending data
+ * to/from the client, or perform callbacks to execute a command.
+ * @param client the client structure to work on
+ * @return The next event the protocol handler will be notified for
+ */
+LIBMEMCACHED_API
+memcached_protocol_event_t memcached_protocol_client_work(memcached_protocol_client_st *client);
+
+/**
+ * Get the socket attached to a client handle
+ * @param client the client to query
+ * @return the socket handle
+ */
+LIBMEMCACHED_API
+memcached_socket_t memcached_protocol_client_get_socket(memcached_protocol_client_st *client);
+
+/**
+ * Get the error id socket attached to a client handle
+ * @param client the client to query for an error code
+ * @return the OS error code from the client
+ */
+LIBMEMCACHED_API
+int memcached_protocol_client_get_errno(memcached_protocol_client_st *client);
+
+/**
+ * Get a raw response handler for the given cookie
+ * @param cookie the cookie passed along into the callback
+ * @return the raw reponse handler you may use if you find
+ *         the generic callback too limiting
+ */
+LIBMEMCACHED_API
+memcached_binary_protocol_raw_response_handler
+memcached_binary_protocol_get_raw_response_handler(const void *cookie);
+
+#ifdef __cplusplus
+}
+#endif
diff --git a/include/libmemcachedprotocol-0.0/vbucket.h b/include/libmemcachedprotocol-0.0/vbucket.h
new file mode 100644 (file)
index 0000000..768d8ac
--- /dev/null
@@ -0,0 +1,35 @@
+/*
+    +--------------------------------------------------------------------+
+    | libmemcached - 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 Michael Wallner   <mike@php.net>                |
+    +--------------------------------------------------------------------+
+*/
+
+#pragma once
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+typedef enum {
+  vbucket_state_active = 1, /**< Actively servicing a vbucket. */
+  vbucket_state_replica,    /**< Servicing a vbucket as a replica only. */
+  vbucket_state_pending,    /**< Pending active. */
+  vbucket_state_dead        /**< Not in use, pending deletion. */
+} vbucket_state_t;
+
+#define is_valid_vbucket_state_t(state) \
+  (state == vbucket_state_active || state == vbucket_state_replica \
+   || state == vbucket_state_pending || state == vbucket_state_dead)
+
+#ifdef __cplusplus
+}
+#endif
diff --git a/include/libmemcachedprotocol-0/CMakeLists.txt b/include/libmemcachedprotocol-0/CMakeLists.txt
deleted file mode 100644 (file)
index 62f739c..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-
-install_public_headers(
-        libmemcachedprotocol-0
-
-        binary.h
-        callback.h
-        handler.h
-        vbucket.h
-)
diff --git a/include/libmemcachedprotocol-0/binary.h b/include/libmemcachedprotocol-0/binary.h
deleted file mode 100644 (file)
index 9478c86..0000000
+++ /dev/null
@@ -1,699 +0,0 @@
-/*
-    +--------------------------------------------------------------------+
-    | libmemcached - 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 Michael Wallner   <mike@php.net>                |
-    +--------------------------------------------------------------------+
-*/
-
-#ifndef PROTOCOL_BINARY_H
-#define PROTOCOL_BINARY_H
-
-#include "libmemcachedprotocol-0/vbucket.h"
-
-/**
- * \addtogroup Protocol
- * @{
- */
-
-/**
- * This file contains definitions of the constants and packet formats
- * defined in the binary specification. Please note that you _MUST_ remember
- * to convert each multibyte field to / from network byte order to / from
- * host order.
- */
-#ifdef __cplusplus
-# include <cstdint>
-extern "C" {
-#else
-# include <stdint.h>
-#endif
-
-/**
- * Definition of the legal "magic" values used in a packet.
- * See section 3.1 Magic byte
- */
-typedef enum { PROTOCOL_BINARY_REQ = 0x80, PROTOCOL_BINARY_RES = 0x81 } protocol_binary_magic;
-
-/**
- * Definition of the valid response status numbers.
- * See section 3.2 Response Status
- */
-typedef enum {
-  PROTOCOL_BINARY_RESPONSE_SUCCESS = 0x00,
-  PROTOCOL_BINARY_RESPONSE_KEY_ENOENT = 0x01,
-  PROTOCOL_BINARY_RESPONSE_KEY_EEXISTS = 0x02,
-  PROTOCOL_BINARY_RESPONSE_E2BIG = 0x03,
-  PROTOCOL_BINARY_RESPONSE_EINVAL = 0x04,
-  PROTOCOL_BINARY_RESPONSE_NOT_STORED = 0x05,
-  PROTOCOL_BINARY_RESPONSE_DELTA_BADVAL = 0x06,
-  PROTOCOL_BINARY_RESPONSE_NOT_MY_VBUCKET = 0x07,
-  PROTOCOL_BINARY_RESPONSE_AUTH_ERROR = 0x20,
-  PROTOCOL_BINARY_RESPONSE_AUTH_CONTINUE = 0x21,
-  PROTOCOL_BINARY_RESPONSE_UNKNOWN_COMMAND = 0x81,
-  PROTOCOL_BINARY_RESPONSE_ENOMEM = 0x82,
-  PROTOCOL_BINARY_RESPONSE_NOT_SUPPORTED = 0x83,
-  PROTOCOL_BINARY_RESPONSE_EINTERNAL = 0x84,
-  PROTOCOL_BINARY_RESPONSE_EBUSY = 0x85,
-  PROTOCOL_BINARY_RESPONSE_ETMPFAIL = 0x86
-} protocol_binary_response_status;
-
-/**
- * Defintion of the different command opcodes.
- * See section 3.3 Command Opcodes
- */
-typedef enum {
-  PROTOCOL_BINARY_CMD_GET = 0x00,
-  PROTOCOL_BINARY_CMD_SET = 0x01,
-  PROTOCOL_BINARY_CMD_ADD = 0x02,
-  PROTOCOL_BINARY_CMD_REPLACE = 0x03,
-  PROTOCOL_BINARY_CMD_DELETE = 0x04,
-  PROTOCOL_BINARY_CMD_INCREMENT = 0x05,
-  PROTOCOL_BINARY_CMD_DECREMENT = 0x06,
-  PROTOCOL_BINARY_CMD_QUIT = 0x07,
-  PROTOCOL_BINARY_CMD_FLUSH = 0x08,
-  PROTOCOL_BINARY_CMD_GETQ = 0x09,
-  PROTOCOL_BINARY_CMD_NOOP = 0x0a,
-  PROTOCOL_BINARY_CMD_VERSION = 0x0b,
-  PROTOCOL_BINARY_CMD_GETK = 0x0c,
-  PROTOCOL_BINARY_CMD_GETKQ = 0x0d,
-  PROTOCOL_BINARY_CMD_APPEND = 0x0e,
-  PROTOCOL_BINARY_CMD_PREPEND = 0x0f,
-  PROTOCOL_BINARY_CMD_STAT = 0x10,
-  PROTOCOL_BINARY_CMD_SETQ = 0x11,
-  PROTOCOL_BINARY_CMD_ADDQ = 0x12,
-  PROTOCOL_BINARY_CMD_REPLACEQ = 0x13,
-  PROTOCOL_BINARY_CMD_DELETEQ = 0x14,
-  PROTOCOL_BINARY_CMD_INCREMENTQ = 0x15,
-  PROTOCOL_BINARY_CMD_DECREMENTQ = 0x16,
-  PROTOCOL_BINARY_CMD_QUITQ = 0x17,
-  PROTOCOL_BINARY_CMD_FLUSHQ = 0x18,
-  PROTOCOL_BINARY_CMD_APPENDQ = 0x19,
-  PROTOCOL_BINARY_CMD_PREPENDQ = 0x1a,
-  PROTOCOL_BINARY_CMD_VERBOSITY = 0x1b,
-  PROTOCOL_BINARY_CMD_TOUCH = 0x1c,
-  PROTOCOL_BINARY_CMD_GAT = 0x1d,
-  PROTOCOL_BINARY_CMD_GATQ = 0x1e,
-  PROTOCOL_BINARY_CMD_GATK = 0x23,
-  PROTOCOL_BINARY_CMD_GATKQ = 0x24,
-
-  PROTOCOL_BINARY_CMD_SASL_LIST_MECHS = 0x20,
-  PROTOCOL_BINARY_CMD_SASL_AUTH = 0x21,
-  PROTOCOL_BINARY_CMD_SASL_STEP = 0x22,
-
-  /* These commands are used for range operations and exist within
-   * this header for use in other projects.  Range operations are
-   * not expected to be implemented in the memcached server itself.
-   */
-  PROTOCOL_BINARY_CMD_RGET = 0x30,
-  PROTOCOL_BINARY_CMD_RSET = 0x31,
-  PROTOCOL_BINARY_CMD_RSETQ = 0x32,
-  PROTOCOL_BINARY_CMD_RAPPEND = 0x33,
-  PROTOCOL_BINARY_CMD_RAPPENDQ = 0x34,
-  PROTOCOL_BINARY_CMD_RPREPEND = 0x35,
-  PROTOCOL_BINARY_CMD_RPREPENDQ = 0x36,
-  PROTOCOL_BINARY_CMD_RDELETE = 0x37,
-  PROTOCOL_BINARY_CMD_RDELETEQ = 0x38,
-  PROTOCOL_BINARY_CMD_RINCR = 0x39,
-  PROTOCOL_BINARY_CMD_RINCRQ = 0x3a,
-  PROTOCOL_BINARY_CMD_RDECR = 0x3b,
-  PROTOCOL_BINARY_CMD_RDECRQ = 0x3c,
-  /* End Range operations */
-
-  /* VBucket commands */
-  PROTOCOL_BINARY_CMD_SET_VBUCKET = 0x3d,
-  PROTOCOL_BINARY_CMD_GET_VBUCKET = 0x3e,
-  PROTOCOL_BINARY_CMD_DEL_VBUCKET = 0x3f,
-  /* End VBucket commands */
-
-  /* TAP commands */
-  PROTOCOL_BINARY_CMD_TAP_CONNECT = 0x40,
-  PROTOCOL_BINARY_CMD_TAP_MUTATION = 0x41,
-  PROTOCOL_BINARY_CMD_TAP_DELETE = 0x42,
-  PROTOCOL_BINARY_CMD_TAP_FLUSH = 0x43,
-  PROTOCOL_BINARY_CMD_TAP_OPAQUE = 0x44,
-  PROTOCOL_BINARY_CMD_TAP_VBUCKET_SET = 0x45,
-  PROTOCOL_BINARY_CMD_TAP_CHECKPOINT_START = 0x46,
-  PROTOCOL_BINARY_CMD_TAP_CHECKPOINT_END = 0x47,
-  /* End TAP */
-
-  PROTOCOL_BINARY_CMD_LAST_RESERVED = 0xef,
-
-  /* Scrub the data */
-  PROTOCOL_BINARY_CMD_SCRUB = 0xf0
-} protocol_binary_command;
-
-/**
- * Definition of the data types in the packet
- * See section 3.4 Data Types
- */
-typedef enum { PROTOCOL_BINARY_RAW_BYTES = 0x00 } protocol_binary_datatypes;
-
-/**
- * Definition of the header structure for a request packet.
- * See section 2
- */
-typedef union {
-  struct {
-    uint8_t magic;
-    uint8_t opcode;
-    uint16_t keylen;
-    uint8_t extlen;
-    uint8_t datatype;
-    uint16_t vbucket;
-    uint32_t bodylen;
-    uint32_t opaque;
-    uint64_t cas;
-  } request;
-  uint8_t bytes[24];
-} protocol_binary_request_header;
-
-/**
- * Definition of the header structure for a response packet.
- * See section 2
- */
-typedef union {
-  struct {
-    uint8_t magic;
-    uint8_t opcode;
-    uint16_t keylen;
-    uint8_t extlen;
-    uint8_t datatype;
-    uint16_t status;
-    uint32_t bodylen;
-    uint32_t opaque;
-    uint64_t cas;
-  } response;
-  uint8_t bytes[24];
-} protocol_binary_response_header;
-
-/**
- * Definition of a request-packet containing no extras
- */
-union protocol_binary_request_no_extras {
-  struct {
-    protocol_binary_request_header header;
-  } message;
-  uint8_t bytes[sizeof(protocol_binary_request_header)];
-};
-typedef union protocol_binary_request_no_extras protocol_binary_request_no_extras;
-
-/**
- * Definition of a response-packet containing no extras
- */
-typedef union {
-  struct {
-    protocol_binary_response_header header;
-  } message;
-  uint8_t bytes[sizeof(protocol_binary_response_header)];
-} protocol_binary_response_no_extras;
-
-/**
- * Definition of the packet used by the get, getq, getk and getkq command.
- * See section 4
- */
-typedef protocol_binary_request_no_extras protocol_binary_request_get;
-typedef protocol_binary_request_no_extras protocol_binary_request_getq;
-typedef protocol_binary_request_no_extras protocol_binary_request_getk;
-typedef protocol_binary_request_no_extras protocol_binary_request_getkq;
-
-/**
- * Definition of the packet returned from a successful get, getq, getk and
- * getkq.
- * See section 4
- */
-typedef union {
-  struct {
-    protocol_binary_response_header header;
-    struct {
-      uint32_t flags;
-    } body;
-  } message;
-  uint8_t bytes[sizeof(protocol_binary_response_header) + 4];
-} protocol_binary_response_get;
-
-typedef protocol_binary_response_get protocol_binary_response_getq;
-typedef protocol_binary_response_get protocol_binary_response_getk;
-typedef protocol_binary_response_get protocol_binary_response_getkq;
-
-/**
- * Definition of the packet used by the delete command
- * See section 4
- */
-typedef protocol_binary_request_no_extras protocol_binary_request_delete;
-
-/**
- * Definition of the packet returned by the delete command
- * See section 4
- */
-typedef protocol_binary_response_no_extras protocol_binary_response_delete;
-
-/**
- * Definition of the packet used by the flush command
- * See section 4
- * Please note that the expiration field is optional, so remember to see
- * check the header.bodysize to see if it is present.
- */
-typedef union {
-  struct {
-    protocol_binary_request_header header;
-    struct {
-      uint32_t expiration;
-    } body;
-  } message;
-  uint8_t bytes[sizeof(protocol_binary_request_header) + 4];
-} protocol_binary_request_flush;
-
-/**
- * Definition of the packet returned by the flush command
- * See section 4
- */
-typedef protocol_binary_response_no_extras protocol_binary_response_flush;
-
-/**
- * Definition of the packet used by set, add and replace
- * See section 4
- */
-typedef union {
-  struct {
-    protocol_binary_request_header header;
-    struct {
-      uint32_t flags;
-      uint32_t expiration;
-    } body;
-  } message;
-  uint8_t bytes[sizeof(protocol_binary_request_header) + 8];
-} protocol_binary_request_set;
-typedef protocol_binary_request_set protocol_binary_request_add;
-typedef protocol_binary_request_set protocol_binary_request_replace;
-
-/**
- * Definition of the packet returned by set, add and replace
- * See section 4
- */
-typedef protocol_binary_response_no_extras protocol_binary_response_set;
-typedef protocol_binary_response_no_extras protocol_binary_response_add;
-typedef protocol_binary_response_no_extras protocol_binary_response_replace;
-
-/**
- * Definition of the noop packet
- * See section 4
- */
-typedef protocol_binary_request_no_extras protocol_binary_request_noop;
-
-/**
- * Definition of the packet returned by the noop command
- * See section 4
- */
-typedef protocol_binary_response_no_extras protocol_binary_response_noop;
-
-/**
- * Definition of the structure used by the increment and decrement
- * command.
- * See section 4
- */
-typedef union {
-  struct {
-    protocol_binary_request_header header;
-    struct {
-      uint64_t delta;
-      uint64_t initial;
-      uint32_t expiration;
-    } body;
-  } message;
-  uint8_t bytes[sizeof(protocol_binary_request_header) + 20];
-} protocol_binary_request_incr;
-typedef protocol_binary_request_incr protocol_binary_request_decr;
-
-/**
- * Definition of the response from an incr or decr command
- * command.
- * See section 4
- */
-typedef union {
-  struct {
-    protocol_binary_response_header header;
-    struct {
-      uint64_t value;
-    } body;
-  } message;
-  uint8_t bytes[sizeof(protocol_binary_response_header) + 8];
-} protocol_binary_response_incr;
-typedef protocol_binary_response_incr protocol_binary_response_decr;
-
-/**
- * Definition of the quit
- * See section 4
- */
-typedef protocol_binary_request_no_extras protocol_binary_request_quit;
-
-/**
- * Definition of the packet returned by the quit command
- * See section 4
- */
-typedef protocol_binary_response_no_extras protocol_binary_response_quit;
-
-/**
- * Definition of the packet used by append and prepend command
- * See section 4
- */
-typedef protocol_binary_request_no_extras protocol_binary_request_append;
-typedef protocol_binary_request_no_extras protocol_binary_request_prepend;
-
-/**
- * Definition of the packet returned from a successful append or prepend
- * See section 4
- */
-typedef protocol_binary_response_no_extras protocol_binary_response_append;
-typedef protocol_binary_response_no_extras protocol_binary_response_prepend;
-
-/**
- * Definition of the packet used by the version command
- * See section 4
- */
-typedef protocol_binary_request_no_extras protocol_binary_request_version;
-
-/**
- * Definition of the packet returned from a successful version command
- * See section 4
- */
-typedef protocol_binary_response_no_extras protocol_binary_response_version;
-
-/**
- * Definition of the packet used by the stats command.
- * See section 4
- */
-typedef protocol_binary_request_no_extras protocol_binary_request_stats;
-
-/**
- * Definition of the packet returned from a successful stats command
- * See section 4
- */
-typedef protocol_binary_response_no_extras protocol_binary_response_stats;
-
-/**
- * Definition of the packet used by the verbosity command
- */
-typedef union {
-  struct {
-    protocol_binary_request_header header;
-    struct {
-      uint32_t level;
-    } body;
-  } message;
-  uint8_t bytes[sizeof(protocol_binary_request_header) + 4];
-} protocol_binary_request_verbosity;
-
-/**
- * Definition of the packet returned from the verbosity command
- */
-typedef protocol_binary_response_no_extras protocol_binary_response_verbosity;
-
-/**
- * Definition of the packet used by the touch command.
- */
-typedef union {
-  struct {
-    protocol_binary_request_header header;
-    struct {
-      uint32_t expiration;
-    } body;
-  } message;
-  uint8_t bytes[sizeof(protocol_binary_request_header) + 4];
-} protocol_binary_request_touch;
-
-/**
- * Definition of the packet returned from the touch command
- */
-typedef protocol_binary_response_no_extras protocol_binary_response_touch;
-
-/**
- * Definition of the packet used by the GAT(Q) command.
- */
-typedef union {
-  struct {
-    protocol_binary_request_header header;
-    struct {
-      uint32_t expiration;
-    } body;
-  } message;
-  uint8_t bytes[sizeof(protocol_binary_request_header) + 4];
-} protocol_binary_request_gat;
-
-typedef protocol_binary_request_gat protocol_binary_request_gatq;
-
-/**
- * Definition of the packet returned from the GAT(Q)
- */
-typedef protocol_binary_response_get protocol_binary_response_gat;
-typedef protocol_binary_response_get protocol_binary_response_gatq;
-
-/**
- * Definition of a request for a range operation.
- * See http://code.google.com/p/memcached/wiki/RangeOps
- *
- * These types are used for range operations and exist within
- * this header for use in other projects.  Range operations are
- * not expected to be implemented in the memcached server itself.
- */
-typedef union {
-  struct {
-    protocol_binary_response_header header;
-    struct {
-      uint16_t size;
-      uint8_t reserved;
-      uint8_t flags;
-      uint32_t max_results;
-    } body;
-  } message;
-  uint8_t bytes[sizeof(protocol_binary_request_header) + 4];
-} protocol_binary_request_rangeop;
-
-typedef protocol_binary_request_rangeop protocol_binary_request_rget;
-typedef protocol_binary_request_rangeop protocol_binary_request_rset;
-typedef protocol_binary_request_rangeop protocol_binary_request_rsetq;
-typedef protocol_binary_request_rangeop protocol_binary_request_rappend;
-typedef protocol_binary_request_rangeop protocol_binary_request_rappendq;
-typedef protocol_binary_request_rangeop protocol_binary_request_rprepend;
-typedef protocol_binary_request_rangeop protocol_binary_request_rprependq;
-typedef protocol_binary_request_rangeop protocol_binary_request_rdelete;
-typedef protocol_binary_request_rangeop protocol_binary_request_rdeleteq;
-typedef protocol_binary_request_rangeop protocol_binary_request_rincr;
-typedef protocol_binary_request_rangeop protocol_binary_request_rincrq;
-typedef protocol_binary_request_rangeop protocol_binary_request_rdecr;
-typedef protocol_binary_request_rangeop protocol_binary_request_rdecrq;
-
-/**
- * Definition of tap commands
- * See To be written
- *
- */
-
-typedef union {
-  struct {
-    protocol_binary_request_header header;
-    struct {
-      /**
-       * flags is a bitmask used to set properties for the
-       * the connection. Please In order to be forward compatible
-       * you should set all undefined bits to 0.
-       *
-       * If the bit require extra userdata, it will be stored
-       * in the user-data field of the body (passed to the engine
-       * as enginespeciffic). That means that when you parse the
-       * flags and the engine-specific data, you have to work your
-       * way from bit 0 and upwards to find the correct offset for
-       * the data.
-       *
-       */
-      uint32_t flags;
-
-      /**
-       * Backfill age
-       *
-       * By using this flag you can limit the amount of data being
-       * transmitted. If you don't specify a backfill age, the
-       * server will transmit everything it contains.
-       *
-       * The first 8 bytes in the engine specific data contains
-       * the oldest entry (from epoc) you're interested in.
-       * Specifying a time in the future (for the server you are
-       * connecting to), will cause it to start streaming current
-       * changes.
-       */
-#define TAP_CONNECT_FLAG_BACKFILL 0x01
-      /**
-       * Dump will cause the server to send the data stored on the
-       * server, but disconnect when the keys stored in the server
-       * are transmitted.
-       */
-#define TAP_CONNECT_FLAG_DUMP 0x02
-      /**
-       * The body contains a list of 16 bits words in network byte
-       * order specifying the vbucket ids to monitor. The first 16
-       * bit word contains the number of buckets. The number of 0
-       * means "all buckets"
-       */
-#define TAP_CONNECT_FLAG_LIST_VBUCKETS 0x04
-      /**
-       * The responsibility of the vbuckets is to be transferred
-       * over to the caller when all items are transferred.
-       */
-#define TAP_CONNECT_FLAG_TAKEOVER_VBUCKETS 0x08
-      /**
-       * The tap consumer supports ack'ing of tap messages
-       */
-#define TAP_CONNECT_SUPPORT_ACK 0x10
-      /**
-       * The tap consumer would prefer to just get the keys
-       * back. If the engine supports this it will set
-       * the TAP_FLAG_NO_VALUE flag in each of the
-       * tap packets returned.
-       */
-#define TAP_CONNECT_REQUEST_KEYS_ONLY 0x20
-      /**
-       * The body contains a list of (vbucket_id, last_checkpoint_id)
-       * pairs. This provides the checkpoint support in TAP streams.
-       * The last checkpoint id represents the last checkpoint that
-       * was successfully persisted.
-       */
-#define TAP_CONNECT_CHECKPOINT 0x40
-      /**
-       * The tap consumer is a registered tap client, which means that
-       * the tap server will maintain its checkpoint cursor permanently.
-       */
-#define TAP_CONNECT_REGISTERED_CLIENT 0x80
-    } body;
-  } message;
-  uint8_t bytes[sizeof(protocol_binary_request_header) + 4];
-} protocol_binary_request_tap_connect;
-
-typedef union {
-  struct {
-    protocol_binary_request_header header;
-    struct {
-      struct {
-        uint16_t enginespecific_length;
-        /*
-         * The flag section support the following flags
-         */
-        /**
-         * Request that the consumer send a response packet
-         * for this packet. The opaque field must be preserved
-         * in the response.
-         */
-#define TAP_FLAG_ACK 0x01
-        /**
-         * The value for the key is not included in the packet
-         */
-#define TAP_FLAG_NO_VALUE 0x02
-        uint16_t flags;
-        uint8_t ttl;
-        uint8_t res1;
-        uint8_t res2;
-        uint8_t res3;
-      } tap;
-      struct {
-        uint32_t flags;
-        uint32_t expiration;
-      } item;
-    } body;
-  } message;
-  uint8_t bytes[sizeof(protocol_binary_request_header) + 16];
-} protocol_binary_request_tap_mutation;
-
-typedef union {
-  struct {
-    protocol_binary_request_header header;
-    struct {
-      struct {
-        uint16_t enginespecific_length;
-        /**
-         * See the definition of the flags for
-         * protocol_binary_request_tap_mutation for a description
-         * of the available flags.
-         */
-        uint16_t flags;
-        uint8_t ttl;
-        uint8_t res1;
-        uint8_t res2;
-        uint8_t res3;
-      } tap;
-    } body;
-  } message;
-  uint8_t bytes[sizeof(protocol_binary_request_header) + 8];
-} protocol_binary_request_tap_no_extras;
-
-typedef protocol_binary_request_tap_no_extras protocol_binary_request_tap_delete;
-typedef protocol_binary_request_tap_no_extras protocol_binary_request_tap_flush;
-typedef protocol_binary_request_tap_no_extras protocol_binary_request_tap_opaque;
-typedef protocol_binary_request_tap_no_extras protocol_binary_request_tap_vbucket_set;
-
-/**
- * Definition of the packet used by the scrub.
- */
-typedef protocol_binary_request_no_extras protocol_binary_request_scrub;
-
-/**
- * Definition of the packet returned from scrub.
- */
-typedef protocol_binary_response_no_extras protocol_binary_response_scrub;
-
-/**
- * Definition of the packet used by set vbucket
- */
-typedef union {
-  struct {
-    protocol_binary_request_header header;
-    struct {
-      vbucket_state_t state;
-    } body;
-  } message;
-  uint8_t bytes[sizeof(protocol_binary_request_header) + sizeof(vbucket_state_t)];
-} protocol_binary_request_set_vbucket;
-/**
- * Definition of the packet returned from set vbucket
- */
-typedef protocol_binary_response_no_extras protocol_binary_response_set_vbucket;
-/**
- * Definition of the packet used by del vbucket
- */
-typedef protocol_binary_request_no_extras protocol_binary_request_del_vbucket;
-/**
- * Definition of the packet returned from del vbucket
- */
-typedef protocol_binary_response_no_extras protocol_binary_response_del_vbucket;
-
-/**
- * Definition of the packet used by get vbucket
- */
-typedef protocol_binary_request_no_extras protocol_binary_request_get_vbucket;
-
-/**
- * Definition of the packet returned from get vbucket
- */
-typedef union {
-  struct {
-    protocol_binary_response_header header;
-    struct {
-      vbucket_state_t state;
-    } body;
-  } message;
-  uint8_t bytes[sizeof(protocol_binary_response_header) + sizeof(vbucket_state_t)];
-} protocol_binary_response_get_vbucket;
-
-/**
- * @}
- */
-
-#ifdef __cplusplus
-}
-#endif
-#endif /* PROTOCOL_BINARY_H */
diff --git a/include/libmemcachedprotocol-0/callback.h b/include/libmemcachedprotocol-0/callback.h
deleted file mode 100644 (file)
index 02f9566..0000000
+++ /dev/null
@@ -1,379 +0,0 @@
-/*
-    +--------------------------------------------------------------------+
-    | libmemcached - 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 Michael Wallner   <mike@php.net>                |
-    +--------------------------------------------------------------------+
-*/
-
-#pragma once
-
-#ifdef __cplusplus
-# include <cstdint>
-extern "C" {
-#else
-# include <stdint.h>
-#endif
-
-#if defined _WIN32
-# undef interface
-#endif
-
-/**
- * Callback to send data back from a successful GET/GETQ/GETK/GETKQ command
- *
- * @param cookie Just pass along the cookie supplied in the callback
- * @param key What to insert as key in the reply
- * @param keylen The length of the key
- * @param body What to store in the body of the package
- * @param bodylen The number of bytes of the body
- * @param flags The flags stored with the item
- * @param cas The CAS value to insert into the response (should be 0
- *            if you don't care)
- */
-typedef protocol_binary_response_status (*memcached_binary_protocol_get_response_handler)(
-    const void *cookie, const void *key, uint16_t keylen, const void *body, uint32_t bodylen,
-    uint32_t flags, uint64_t cas);
-/**
- * Callback to send data back from a STAT command
- *
- * @param cookie Just pass along the cookie supplied in the callback
- * @param key What to insert as key in the reply
- * @param keylen The length of the key
- * @param body What to store in the body of the package
- * @param bodylen The number of bytes of the body
- */
-typedef protocol_binary_response_status (*memcached_binary_protocol_stat_response_handler)(
-    const void *cookie, const void *key, uint16_t keylen, const void *body, uint32_t bodylen);
-/**
- * Callback to send data back from a VERSION command
- *
- * @param cookie Just pass along the cookie supplied in the callback
- * @param text The version string
- * @param length The number of bytes in the version string
- */
-typedef protocol_binary_response_status (*memcached_binary_protocol_version_response_handler)(
-    const void *cookie, const void *text, uint32_t length);
-
-/**
- * In the low level interface you need to format the response
- * packet yourself (giving you complete freedom :-)
- *
- * @param cookie Just pass along the cookie supplied in the callback
- * @param request Pointer to the request packet you are sending a reply to
- * @param response Pointer to the response packet to send
- *
- */
-typedef protocol_binary_response_status (*memcached_binary_protocol_raw_response_handler)(
-    const void *cookie, protocol_binary_request_header *request,
-    protocol_binary_response_header *response);
-
-/**
- * In the low lever interface you have to do most of the work by
- * yourself, but it also gives you a lot of freedom :-)
- * @param cookie identification for this connection, just pass it along to
- *               the response handler
- * @param header the command received over the wire. Never try to access
- *               <u>anything</u> outside the command.
- * @param resonse_handler call this function to send data back to the client
- */
-typedef protocol_binary_response_status (*memcached_binary_protocol_command_handler)(
-    const void *cookie, protocol_binary_request_header *header,
-    memcached_binary_protocol_raw_response_handler response_handler);
-
-/**
- * The raw interface to the packets is implemented in version 0. It contains
- * just an array with command handlers. The inxed in the array is the
- * com code.
- */
-typedef struct {
-  memcached_binary_protocol_command_handler comcode[256];
-} memcached_binary_protocol_callback_v0_st;
-
-/**
- * The first version of the callback struct containing all of the
- * documented commands in the initial release of the binary protocol
- * (aka. memcached 1.4.0).
- *
- * You might miss the Q commands (addq etc) but the response function
- * knows how to deal with them so you don't need to worry about that :-)
- */
-typedef struct {
-  /**
-   * Add an item to the cache
-   * @param cookie id of the client receiving the command
-   * @param key the key to add
-   * @param len the length of the key
-   * @param val the value to store for the key (may be NIL)
-   * @param vallen the length of the data
-   * @param flags the flags to store with the key
-   * @param exptime the expiry time for the key-value pair
-   * @param cas the resulting cas for the add operation (if success)
-   */
-  protocol_binary_response_status (*add)(const void *cookie, const void *key, uint16_t keylen,
-                                         const void *val, uint32_t vallen, uint32_t flags,
-                                         uint32_t exptime, uint64_t *cas);
-
-  /**
-   * Append data to an <b>existing</b> key-value pair.
-   *
-   * @param cookie id of the client receiving the command
-   * @param key the key to add data to
-   * @param len the length of the key
-   * @param val the value to append to the value
-   * @param vallen the length of the data
-   * @param cas the CAS in the request
-   * @param result_cas the resulting cas for the append operation
-   *
-   */
-  protocol_binary_response_status (*append)(const void *cookie, const void *key, uint16_t keylen,
-                                            const void *val, uint32_t vallen, uint64_t cas,
-                                            uint64_t *result_cas);
-
-  /**
-   * Decrement the value for a key
-   *
-   * @param cookie id of the client receiving the command
-   * @param key the key to decrement the value for
-   * @param len the length of the key
-   * @param delta the amount to decrement
-   * @param initial initial value to store (if the key doesn't exist)
-   * @param expiration expiration time for the object (if the key doesn't exist)
-   * @param cas the CAS in the request
-   * @param result the result from the decrement
-   * @param result_cas the cas of the item
-   *
-   */
-  protocol_binary_response_status (*decrement)(const void *cookie, const void *key, uint16_t keylen,
-                                               uint64_t delta, uint64_t initial,
-                                               uint32_t expiration, uint64_t *result,
-                                               uint64_t *result_cas);
-
-  /**
-   * Delete an existing key
-   *
-   * @param cookie id of the client receiving the command
-   * @param key the key to delete_object
-   * @param len the length of the key
-   * @param cas the CAS in the request
-   */
-  protocol_binary_response_status (*delete_object)(const void *cookie, const void *key,
-                                                   uint16_t keylen, uint64_t cas);
-
-  /**
-   * Flush the cache
-   *
-   * @param cookie id of the client receiving the command
-   * @param when when the cache should be flushed (0 == immediately)
-   */
-  protocol_binary_response_status (*flush_object)(const void *cookie, uint32_t when);
-
-  /**
-   * Get a key-value pair
-   *
-   * @param cookie id of the client receiving the command
-   * @param key the key to get
-   * @param len the length of the key
-   * @param response_handler to send the result back to the client
-   */
-  protocol_binary_response_status (*get)(
-      const void *cookie, const void *key, uint16_t keylen,
-      memcached_binary_protocol_get_response_handler response_handler);
-
-  /**
-   * Increment the value for a key
-   *
-   * @param cookie id of the client receiving the command
-   * @param key the key to increment the value on
-   * @param len the length of the key
-   * @param delta the amount to increment
-   * @param initial initial value to store (if the key doesn't exist)
-   * @param expiration expiration time for the object (if the key doesn't exist)
-   * @param cas the CAS in the request
-   * @param result the result from the decrement
-   * @param result_cas the cas of the item
-   *
-   */
-  protocol_binary_response_status (*increment)(const void *cookie, const void *key, uint16_t keylen,
-                                               uint64_t delta, uint64_t initial,
-                                               uint32_t expiration, uint64_t *result,
-                                               uint64_t *result_cas);
-
-  /**
-   * The noop command was received. This is just a notification callback (the
-   * response is automatically created).
-   *
-   * @param cookie id of the client receiving the command
-   */
-  protocol_binary_response_status (*noop)(const void *cookie);
-
-  /**
-   * Prepend data to an <b>existing</b> key-value pair.
-   *
-   * @param cookie id of the client receiving the command
-   * @param key the key to prepend data to
-   * @param len the length of the key
-   * @param val the value to prepend to the value
-   * @param vallen the length of the data
-   * @param cas the CAS in the request
-   * @param result-cas the cas id of the item
-   *
-   */
-  protocol_binary_response_status (*prepend)(const void *cookie, const void *key, uint16_t keylen,
-                                             const void *val, uint32_t vallen, uint64_t cas,
-                                             uint64_t *result_cas);
-
-  /**
-   * The quit command was received. This is just a notification callback (the
-   * response is automatically created).
-   *
-   * @param cookie id of the client receiving the command
-   */
-  protocol_binary_response_status (*quit)(const void *cookie);
-
-  /**
-   * Replace an <b>existing</b> item to the cache
-   *
-   * @param cookie id of the client receiving the command
-   * @param key the key to replace the content for
-   * @param len the length of the key
-   * @param val the value to store for the key (may be NIL)
-   * @param vallen the length of the data
-   * @param flags the flags to store with the key
-   * @param exptime the expiry time for the key-value pair
-   * @param cas the cas id in the request
-   * @param result_cas the cas id of the item
-   */
-  protocol_binary_response_status (*replace)(const void *cookie, const void *key, uint16_t keylen,
-                                             const void *val, uint32_t vallen, uint32_t flags,
-                                             uint32_t exptime, uint64_t cas, uint64_t *result_cas);
-
-  /**
-   * Set a key-value pair in the cache
-   *
-   * @param cookie id of the client receiving the command
-   * @param key the key to insert
-   * @param len the length of the key
-   * @param val the value to store for the key (may be NIL)
-   * @param vallen the length of the data
-   * @param flags the flags to store with the key
-   * @param exptime the expiry time for the key-value pair
-   * @param cas the cas id in the request
-   * @param result_cas the cas id of the new item
-   */
-  protocol_binary_response_status (*set)(const void *cookie, const void *key, uint16_t keylen,
-                                         const void *val, uint32_t vallen, uint32_t flags,
-                                         uint32_t exptime, uint64_t cas, uint64_t *result_cas);
-
-  /**
-   * Get status information
-   *
-   * @param cookie id of the client receiving the command
-   * @param key the key to get status for (or NIL to request all status).
-   *            Remember to insert the terminating packet if multiple
-   *            packets should be returned.
-   * @param keylen the length of the key
-   * @param response_handler to send the result back to the client, but
-   *                         don't send reply on success!
-   *
-   */
-  protocol_binary_response_status (*stat)(
-      const void *cookie, const void *key, uint16_t keylen,
-      memcached_binary_protocol_stat_response_handler response_handler);
-
-  /**
-   * Get the version information
-   *
-   * @param cookie id of the client receiving the command
-   * @param response_handler to send the result back to the client, but
-   *                         don't send reply on success!
-   *
-   */
-  protocol_binary_response_status (*version)(
-      const void *cookie, memcached_binary_protocol_version_response_handler response_handler);
-} memcached_binary_protocol_callback_v1_st;
-
-/**
- * The version numbers for the different callback structures.
- */
-typedef enum {
-  /** Version 0 is a lowlevel interface that tries to maximize your freedom */
-  MEMCACHED_PROTOCOL_HANDLER_V0 = 0,
-  /**
-   * Version 1 abstracts more of the protocol details, and let you work at
-   * a logical level
-   */
-  MEMCACHED_PROTOCOL_HANDLER_V1 = 1
-} memcached_protocol_interface_version_t;
-
-/**
- * Definition of the protocol callback structure.
- */
-typedef struct {
-  /**
-   * The interface version you provide callbacks for.
-   */
-  memcached_protocol_interface_version_t interface_version;
-
-  /**
-   * Callback fired just before the command will be executed.
-   *
-   * @param cookie id of the client receiving the command
-   * @param header the command header as received on the wire. If you look
-   *               at the content you <b>must</b> ensure that you don't
-   *               try to access beyond the end of the message.
-   */
-  void (*pre_execute)(const void *cookie, protocol_binary_request_header *header);
-  /**
-   * Callback fired just after the command was exected (please note
-   * that the data transfer back to the client is not finished at this
-   * time).
-   *
-   * @param cookie id of the client receiving the command
-   * @param header the command header as received on the wire. If you look
-   *               at the content you <b>must</b> ensure that you don't
-   *               try to access beyond the end of the message.
-   */
-  void (*post_execute)(const void *cookie, protocol_binary_request_header *header);
-
-  /**
-   * Callback fired if no specialized callback is registered for this
-   * specific command code.
-   *
-   * @param cookie id of the client receiving the command
-   * @param header the command header as received on the wire. You <b>must</b>
-   *               ensure that you don't try to access beyond the end of the
-   *               message.
-   * @param response_handler The response handler to send data back.
-   */
-  protocol_binary_response_status (*unknown)(
-      const void *cookie, protocol_binary_request_header *header,
-      memcached_binary_protocol_raw_response_handler response_handler);
-
-  /**
-   * The different interface levels we support. A pointer is used so the
-   * size of the structure is fixed. You must ensure that the memory area
-   * passed as the pointer is valid as long as you use the protocol handler.
-   */
-  union {
-    memcached_binary_protocol_callback_v0_st v0;
-
-    /**
-     * The first version of the callback struct containing all of the
-     * documented commands in the initial release of the binary protocol
-     * (aka. memcached 1.4.0).
-     */
-    memcached_binary_protocol_callback_v1_st v1;
-  } interface;
-} memcached_binary_protocol_callback_st;
-
-#ifdef __cplusplus
-}
-#endif
diff --git a/include/libmemcachedprotocol-0/handler.h b/include/libmemcachedprotocol-0/handler.h
deleted file mode 100644 (file)
index 94cc5e5..0000000
+++ /dev/null
@@ -1,227 +0,0 @@
-/*
-    +--------------------------------------------------------------------+
-    | libmemcached - 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 Michael Wallner   <mike@php.net>                |
-    +--------------------------------------------------------------------+
-*/
-
-#pragma once
-
-#include <sys/types.h>
-#ifndef HAVE_SSIZE_T
-typedef long int ssize_t;
-#endif
-
-#ifndef __cplusplus
-#  include <stdbool.h>
-#  include <stdint.h>
-#  include <stddef.h>
-#else
-#  include <cstdint>
-#endif
-
-#include "libmemcached-1/visibility.h"
-#include "libmemcached-1/platform.h"
-#include "libmemcachedprotocol-0/binary.h"
-#include "libmemcachedprotocol-0/callback.h"
-
-/* Forward declarations */
-/*
- * You should only access memcached_protocol_st from one thread!,
- * and never assume anything about the internal layout / sizes of the
- * structures.
- */
-typedef struct memcached_protocol_st memcached_protocol_st;
-typedef struct memcached_protocol_client_st memcached_protocol_client_st;
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/**
- * Function the protocol handler should call to receive data.
- * This function should behave exactly like read(2)
- *
- * @param cookie a cookie used to represent a given client
- * @param fd the filedescriptor associated with the client
- * @param buf destination buffer
- * @param nbuf number of bytes to receive
- * @return the number of bytes copied into buf
- *         or -1 upon error (errno should contain more information)
- */
-typedef ssize_t (*memcached_protocol_recv_func)(const void *cookie, memcached_socket_t fd,
-                                                void *buf, size_t nbuf);
-
-/**
- * Function the protocol handler should call to send data.
- * This function should behave exactly like write(2)
- *
- * @param cookie a cookie used to represent a given client
- * @param fd the filedescriptor associated with the client
- * @param buf the source buffer
- * @param nbuf number of bytes to send
- * @return the number of bytes sent
- *         or -1 upon error (errno should contain more information)
- */
-typedef ssize_t (*memcached_protocol_send_func)(const void *cookie, memcached_socket_t fd,
-                                                const void *buf, size_t nbuf);
-
-/**
- * Create an instance of the protocol handler
- *
- * @return NULL if allocation of an instance fails
- */
-LIBMEMCACHED_API
-memcached_protocol_st *memcached_protocol_create_instance(void);
-
-/**
- * Get the callbacks associated with a protocol handler instance
- * @return the callbacks currently used
- */
-LIBMEMCACHED_API
-memcached_binary_protocol_callback_st *
-memcached_binary_protocol_get_callbacks(memcached_protocol_st *instance);
-
-/**
- * Set the callbacks to be used by the given protocol handler instance
- * @param instance the instance to update
- * @param callback the callbacks to use
- */
-LIBMEMCACHED_API
-void memcached_binary_protocol_set_callbacks(memcached_protocol_st *instance,
-                                             memcached_binary_protocol_callback_st *callback);
-
-/**
- * Should the library inspect the packages being sent and received and verify
- * that they are according to the specification? If it encounters an invalid
- * packet, it will return an EINVAL packet.
- *
- * @param instance the instance to update
- * @param enable true if you want the library to check packages, false otherwise
- */
-LIBMEMCACHED_API
-void memcached_binary_protocol_set_pedantic(memcached_protocol_st *instance, bool enable);
-
-/**
- * Is the library inpecting each package?
- * @param instance the instance to check
- * @return true it the library is inspecting each package, false otherwise
- */
-LIBMEMCACHED_API
-bool memcached_binary_protocol_get_pedantic(memcached_protocol_st *instance);
-
-/**
- * Destroy an instance of the protocol handler
- *
- * @param instance The instance to destroy
- */
-LIBMEMCACHED_API
-void memcached_protocol_destroy_instance(memcached_protocol_st *instance);
-
-/**
- * Set the IO functions used by the instance to send and receive data. The
- * functions should behave like recv(3socket) and send(3socket).
- *
- * @param instance the instance to specify the IO functions for
- * @param recv the function to call for reciving data
- * @param send the function to call for sending data
- */
-LIBMEMCACHED_API
-void memached_protocol_set_io_functions(memcached_protocol_st *instance,
-                                        memcached_protocol_recv_func recv,
-                                        memcached_protocol_send_func send);
-
-/**
- * Create a new client instance and associate it with a socket
- * @param instance the protocol instance to bind the client to
- * @param sock the client socket
- * @return NULL if allocation fails, otherwise an instance
- */
-LIBMEMCACHED_API
-memcached_protocol_client_st *memcached_protocol_create_client(memcached_protocol_st *instance,
-                                                               memcached_socket_t sock);
-
-/**
- * Destroy a client handle.
- * The caller needs to close the socket accociated with the client
- * <b>before</b> calling this function. This function invalidates the
- * client memory area.
- *
- * @param client the client to destroy
- */
-LIBMEMCACHED_API
-void memcached_protocol_client_destroy(memcached_protocol_client_st *client);
-
-LIBMEMCACHED_API
-void memcached_protocol_client_set_verbose(struct memcached_protocol_client_st *client, bool arg);
-
-/**
- * Error event means that the client encountered an error with the
- * connection so you should shut it down
- */
-#define MEMCACHED_PROTOCOL_ERROR_EVENT 1
-/**
- * Please notify when there is more data available to read
- */
-#define MEMCACHED_PROTOCOL_READ_EVENT 2
-/**
- * Please notify when it is possible to send more data
- */
-#define MEMCACHED_PROTOCOL_WRITE_EVENT 4
-/**
- * Backed paused the execution for this client
- */
-#define MEMCACHED_PROTOCOL_PAUSE_EVENT 8
-
-/**
- * The different events the client is interested in. This is a bitmask of
- * the constants defined above.
- */
-typedef uint32_t memcached_protocol_event_t;
-
-/**
- * Let the client do some work. This might involve reading / sending data
- * to/from the client, or perform callbacks to execute a command.
- * @param client the client structure to work on
- * @return The next event the protocol handler will be notified for
- */
-LIBMEMCACHED_API
-memcached_protocol_event_t memcached_protocol_client_work(memcached_protocol_client_st *client);
-
-/**
- * Get the socket attached to a client handle
- * @param client the client to query
- * @return the socket handle
- */
-LIBMEMCACHED_API
-memcached_socket_t memcached_protocol_client_get_socket(memcached_protocol_client_st *client);
-
-/**
- * Get the error id socket attached to a client handle
- * @param client the client to query for an error code
- * @return the OS error code from the client
- */
-LIBMEMCACHED_API
-int memcached_protocol_client_get_errno(memcached_protocol_client_st *client);
-
-/**
- * Get a raw response handler for the given cookie
- * @param cookie the cookie passed along into the callback
- * @return the raw reponse handler you may use if you find
- *         the generic callback too limiting
- */
-LIBMEMCACHED_API
-memcached_binary_protocol_raw_response_handler
-memcached_binary_protocol_get_raw_response_handler(const void *cookie);
-
-#ifdef __cplusplus
-}
-#endif
diff --git a/include/libmemcachedprotocol-0/vbucket.h b/include/libmemcachedprotocol-0/vbucket.h
deleted file mode 100644 (file)
index 768d8ac..0000000
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
-    +--------------------------------------------------------------------+
-    | libmemcached - 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 Michael Wallner   <mike@php.net>                |
-    +--------------------------------------------------------------------+
-*/
-
-#pragma once
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-typedef enum {
-  vbucket_state_active = 1, /**< Actively servicing a vbucket. */
-  vbucket_state_replica,    /**< Servicing a vbucket as a replica only. */
-  vbucket_state_pending,    /**< Pending active. */
-  vbucket_state_dead        /**< Not in use, pending deletion. */
-} vbucket_state_t;
-
-#define is_valid_vbucket_state_t(state) \
-  (state == vbucket_state_active || state == vbucket_state_replica \
-   || state == vbucket_state_pending || state == vbucket_state_dead)
-
-#ifdef __cplusplus
-}
-#endif
diff --git a/include/libmemcachedutil-1.0 b/include/libmemcachedutil-1.0
deleted file mode 120000 (symlink)
index e74e2a9..0000000
+++ /dev/null
@@ -1 +0,0 @@
-libmemcachedutil-1
\ No newline at end of file
diff --git a/include/libmemcachedutil-1.0/CMakeLists.txt b/include/libmemcachedutil-1.0/CMakeLists.txt
new file mode 100644 (file)
index 0000000..a6e353d
--- /dev/null
@@ -0,0 +1,12 @@
+
+install_public_headers(
+        libmemcachedutil-1.0
+
+        flush.h
+        ostream.hpp
+        pid.h
+        ping.h
+        pool.h
+        util.h
+        version.h
+        )
diff --git a/include/libmemcachedutil-1.0/flush.h b/include/libmemcachedutil-1.0/flush.h
new file mode 100644 (file)
index 0000000..1c99d45
--- /dev/null
@@ -0,0 +1,27 @@
+/*
+    +--------------------------------------------------------------------+
+    | libmemcached - 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 Michael Wallner   <mike@php.net>                |
+    +--------------------------------------------------------------------+
+*/
+
+#pragma once
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+LIBMEMCACHED_API
+bool libmemcached_util_flush(const char *hostname, in_port_t port, memcached_return_t *ret);
+
+#ifdef __cplusplus
+}
+#endif
diff --git a/include/libmemcachedutil-1.0/ostream.hpp b/include/libmemcachedutil-1.0/ostream.hpp
new file mode 100644 (file)
index 0000000..9c300b7
--- /dev/null
@@ -0,0 +1,27 @@
+/*
+    +--------------------------------------------------------------------+
+    | libmemcached - 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 Michael Wallner   <mike@php.net>                |
+    +--------------------------------------------------------------------+
+*/
+
+#pragma once
+
+static inline std::ostream &operator<<(std::ostream &output, const enum memcached_return_t &arg) {
+  output << memcached_strerror(NULL, arg);
+  return output;
+}
+
+static inline std::ostream &operator<<(std::ostream &output, const memcached_st &arg) {
+  output << " query_id: " << memcached_query_id(&arg);
+  output << " error: " << memcached_last_error_message(&arg);
+  return output;
+}
diff --git a/include/libmemcachedutil-1.0/pid.h b/include/libmemcachedutil-1.0/pid.h
new file mode 100644 (file)
index 0000000..5bb018d
--- /dev/null
@@ -0,0 +1,37 @@
+/*
+    +--------------------------------------------------------------------+
+    | libmemcached - 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 Michael Wallner   <mike@php.net>                |
+    +--------------------------------------------------------------------+
+*/
+
+#pragma once
+
+#ifndef _WIN32
+#  include <netdb.h>
+#endif
+
+#include <sys/types.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+LIBMEMCACHED_API
+pid_t libmemcached_util_getpid(const char *hostname, in_port_t port, memcached_return_t *ret);
+
+LIBMEMCACHED_API
+pid_t libmemcached_util_getpid2(const char *hostname, in_port_t port, const char *username,
+                                const char *password, memcached_return_t *ret);
+
+#ifdef __cplusplus
+}
+#endif
diff --git a/include/libmemcachedutil-1.0/ping.h b/include/libmemcachedutil-1.0/ping.h
new file mode 100644 (file)
index 0000000..8084392
--- /dev/null
@@ -0,0 +1,31 @@
+/*
+    +--------------------------------------------------------------------+
+    | libmemcached - 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 Michael Wallner   <mike@php.net>                |
+    +--------------------------------------------------------------------+
+*/
+
+#pragma once
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+LIBMEMCACHED_API
+bool libmemcached_util_ping(const char *hostname, in_port_t port, memcached_return_t *ret);
+
+LIBMEMCACHED_API
+bool libmemcached_util_ping2(const char *hostname, in_port_t port, const char *username,
+                             const char *password, memcached_return_t *ret);
+
+#ifdef __cplusplus
+}
+#endif
diff --git a/include/libmemcachedutil-1.0/pool.h b/include/libmemcachedutil-1.0/pool.h
new file mode 100644 (file)
index 0000000..e93b65e
--- /dev/null
@@ -0,0 +1,56 @@
+/*
+    +--------------------------------------------------------------------+
+    | libmemcached - 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 Michael Wallner   <mike@php.net>                |
+    +--------------------------------------------------------------------+
+*/
+
+#pragma once
+
+#include "libmemcached-1.0/memcached.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+struct memcached_pool_st;
+typedef struct memcached_pool_st memcached_pool_st;
+
+LIBMEMCACHED_API
+memcached_pool_st *memcached_pool_create(memcached_st *mmc, uint32_t initial, uint32_t max);
+
+LIBMEMCACHED_API
+memcached_pool_st *memcached_pool(const char *option_string, size_t option_string_length);
+
+LIBMEMCACHED_API
+memcached_st *memcached_pool_destroy(memcached_pool_st *pool);
+
+LIBMEMCACHED_API
+memcached_st *memcached_pool_pop(memcached_pool_st *pool, bool block, memcached_return_t *rc);
+LIBMEMCACHED_API
+memcached_return_t memcached_pool_push(memcached_pool_st *pool, memcached_st *mmc);
+LIBMEMCACHED_API
+memcached_return_t memcached_pool_release(memcached_pool_st *pool, memcached_st *mmc);
+
+LIBMEMCACHED_API
+memcached_st *memcached_pool_fetch(memcached_pool_st *, struct timespec *relative_time,
+                                   memcached_return_t *rc);
+
+LIBMEMCACHED_API
+memcached_return_t memcached_pool_behavior_set(memcached_pool_st *ptr, memcached_behavior_t flag,
+                                               uint64_t data);
+LIBMEMCACHED_API
+memcached_return_t memcached_pool_behavior_get(memcached_pool_st *ptr, memcached_behavior_t flag,
+                                               uint64_t *value);
+
+#ifdef __cplusplus
+} // extern "C"
+#endif
diff --git a/include/libmemcachedutil-1.0/util.h b/include/libmemcachedutil-1.0/util.h
new file mode 100644 (file)
index 0000000..b4cf2e4
--- /dev/null
@@ -0,0 +1,24 @@
+/*
+    +--------------------------------------------------------------------+
+    | libmemcached - 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 Michael Wallner   <mike@php.net>                |
+    +--------------------------------------------------------------------+
+*/
+
+#pragma once
+
+#include "libmemcached-1.0/memcached.h"
+
+#include "libmemcachedutil-1.0/pid.h"
+#include "libmemcachedutil-1.0/flush.h"
+#include "libmemcachedutil-1.0/ping.h"
+#include "libmemcachedutil-1.0/pool.h"
+#include "libmemcachedutil-1.0/version.h"
diff --git a/include/libmemcachedutil-1.0/version.h b/include/libmemcachedutil-1.0/version.h
new file mode 100644 (file)
index 0000000..08e4a30
--- /dev/null
@@ -0,0 +1,28 @@
+/*
+    +--------------------------------------------------------------------+
+    | libmemcached - 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 Michael Wallner   <mike@php.net>                |
+    +--------------------------------------------------------------------+
+*/
+
+#pragma once
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+LIBMEMCACHED_API
+bool libmemcached_util_version_check(memcached_st *memc, uint8_t major_version,
+                                     uint8_t minor_version, uint8_t micro_version);
+
+#ifdef __cplusplus
+}
+#endif
diff --git a/include/libmemcachedutil-1/CMakeLists.txt b/include/libmemcachedutil-1/CMakeLists.txt
deleted file mode 100644 (file)
index d15f2e8..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-
-install_public_headers(
-        libmemcachedutil-1
-
-        flush.h
-        ostream.hpp
-        pid.h
-        ping.h
-        pool.h
-        util.h
-        version.h
-        )
diff --git a/include/libmemcachedutil-1/flush.h b/include/libmemcachedutil-1/flush.h
deleted file mode 100644 (file)
index 1c99d45..0000000
+++ /dev/null
@@ -1,27 +0,0 @@
-/*
-    +--------------------------------------------------------------------+
-    | libmemcached - 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 Michael Wallner   <mike@php.net>                |
-    +--------------------------------------------------------------------+
-*/
-
-#pragma once
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-LIBMEMCACHED_API
-bool libmemcached_util_flush(const char *hostname, in_port_t port, memcached_return_t *ret);
-
-#ifdef __cplusplus
-}
-#endif
diff --git a/include/libmemcachedutil-1/ostream.hpp b/include/libmemcachedutil-1/ostream.hpp
deleted file mode 100644 (file)
index 9c300b7..0000000
+++ /dev/null
@@ -1,27 +0,0 @@
-/*
-    +--------------------------------------------------------------------+
-    | libmemcached - 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 Michael Wallner   <mike@php.net>                |
-    +--------------------------------------------------------------------+
-*/
-
-#pragma once
-
-static inline std::ostream &operator<<(std::ostream &output, const enum memcached_return_t &arg) {
-  output << memcached_strerror(NULL, arg);
-  return output;
-}
-
-static inline std::ostream &operator<<(std::ostream &output, const memcached_st &arg) {
-  output << " query_id: " << memcached_query_id(&arg);
-  output << " error: " << memcached_last_error_message(&arg);
-  return output;
-}
diff --git a/include/libmemcachedutil-1/pid.h b/include/libmemcachedutil-1/pid.h
deleted file mode 100644 (file)
index 5bb018d..0000000
+++ /dev/null
@@ -1,37 +0,0 @@
-/*
-    +--------------------------------------------------------------------+
-    | libmemcached - 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 Michael Wallner   <mike@php.net>                |
-    +--------------------------------------------------------------------+
-*/
-
-#pragma once
-
-#ifndef _WIN32
-#  include <netdb.h>
-#endif
-
-#include <sys/types.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-LIBMEMCACHED_API
-pid_t libmemcached_util_getpid(const char *hostname, in_port_t port, memcached_return_t *ret);
-
-LIBMEMCACHED_API
-pid_t libmemcached_util_getpid2(const char *hostname, in_port_t port, const char *username,
-                                const char *password, memcached_return_t *ret);
-
-#ifdef __cplusplus
-}
-#endif
diff --git a/include/libmemcachedutil-1/ping.h b/include/libmemcachedutil-1/ping.h
deleted file mode 100644 (file)
index 8084392..0000000
+++ /dev/null
@@ -1,31 +0,0 @@
-/*
-    +--------------------------------------------------------------------+
-    | libmemcached - 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 Michael Wallner   <mike@php.net>                |
-    +--------------------------------------------------------------------+
-*/
-
-#pragma once
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-LIBMEMCACHED_API
-bool libmemcached_util_ping(const char *hostname, in_port_t port, memcached_return_t *ret);
-
-LIBMEMCACHED_API
-bool libmemcached_util_ping2(const char *hostname, in_port_t port, const char *username,
-                             const char *password, memcached_return_t *ret);
-
-#ifdef __cplusplus
-}
-#endif
diff --git a/include/libmemcachedutil-1/pool.h b/include/libmemcachedutil-1/pool.h
deleted file mode 100644 (file)
index 155862e..0000000
+++ /dev/null
@@ -1,56 +0,0 @@
-/*
-    +--------------------------------------------------------------------+
-    | libmemcached - 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 Michael Wallner   <mike@php.net>                |
-    +--------------------------------------------------------------------+
-*/
-
-#pragma once
-
-#include "libmemcached-1/memcached.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-struct memcached_pool_st;
-typedef struct memcached_pool_st memcached_pool_st;
-
-LIBMEMCACHED_API
-memcached_pool_st *memcached_pool_create(memcached_st *mmc, uint32_t initial, uint32_t max);
-
-LIBMEMCACHED_API
-memcached_pool_st *memcached_pool(const char *option_string, size_t option_string_length);
-
-LIBMEMCACHED_API
-memcached_st *memcached_pool_destroy(memcached_pool_st *pool);
-
-LIBMEMCACHED_API
-memcached_st *memcached_pool_pop(memcached_pool_st *pool, bool block, memcached_return_t *rc);
-LIBMEMCACHED_API
-memcached_return_t memcached_pool_push(memcached_pool_st *pool, memcached_st *mmc);
-LIBMEMCACHED_API
-memcached_return_t memcached_pool_release(memcached_pool_st *pool, memcached_st *mmc);
-
-LIBMEMCACHED_API
-memcached_st *memcached_pool_fetch(memcached_pool_st *, struct timespec *relative_time,
-                                   memcached_return_t *rc);
-
-LIBMEMCACHED_API
-memcached_return_t memcached_pool_behavior_set(memcached_pool_st *ptr, memcached_behavior_t flag,
-                                               uint64_t data);
-LIBMEMCACHED_API
-memcached_return_t memcached_pool_behavior_get(memcached_pool_st *ptr, memcached_behavior_t flag,
-                                               uint64_t *value);
-
-#ifdef __cplusplus
-} // extern "C"
-#endif
diff --git a/include/libmemcachedutil-1/util.h b/include/libmemcachedutil-1/util.h
deleted file mode 100644 (file)
index 48e5a9a..0000000
+++ /dev/null
@@ -1,24 +0,0 @@
-/*
-    +--------------------------------------------------------------------+
-    | libmemcached - 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 Michael Wallner   <mike@php.net>                |
-    +--------------------------------------------------------------------+
-*/
-
-#pragma once
-
-#include "libmemcached-1/memcached.h"
-
-#include "libmemcachedutil-1/pid.h"
-#include "libmemcachedutil-1/flush.h"
-#include "libmemcachedutil-1/ping.h"
-#include "libmemcachedutil-1/pool.h"
-#include "libmemcachedutil-1/version.h"
diff --git a/include/libmemcachedutil-1/version.h b/include/libmemcachedutil-1/version.h
deleted file mode 100644 (file)
index 08e4a30..0000000
+++ /dev/null
@@ -1,28 +0,0 @@
-/*
-    +--------------------------------------------------------------------+
-    | libmemcached - 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 Michael Wallner   <mike@php.net>                |
-    +--------------------------------------------------------------------+
-*/
-
-#pragma once
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-LIBMEMCACHED_API
-bool libmemcached_util_version_check(memcached_st *memc, uint8_t major_version,
-                                     uint8_t minor_version, uint8_t micro_version);
-
-#ifdef __cplusplus
-}
-#endif
index a95fc1d10ee5827d3ca294fce0b1f0ed8d2cd240..54e9c2242bea3c28061814a83fda375e75dba85f 100644 (file)
@@ -36,8 +36,8 @@
 #include "p9y/socket.hpp"
 #include "p9y/poll.hpp"
 
-#include "libmemcached-1/memcached.h"
-#include "libmemcachedprotocol-0/binary.h"
+#include "libmemcached-1.0/memcached.h"
+#include "libmemcachedprotocol-0.0/binary.h"
 #include "libmemcached/byteorder.h"
 
 #include <vector>
index be3211cef21f3a1c7d3d35c15d8bd23abcf4d379..d08c9d993bb7f1461c42d8a06e581e6ae5cfe90f 100644 (file)
@@ -19,7 +19,7 @@
 #include <cstring>
 #include <iostream>
 
-#include "libmemcached-1/memcached.h"
+#include "libmemcached-1.0/memcached.h"
 
 int main(int argc, char *argv[]) {
   if (argc < 2) {
index ddd7bb034b128f242bc4676ad2b1f12bac5e1dd3..6d4835840b21c069c24832f7f218ed636bc4d7ab 100644 (file)
@@ -30,7 +30,7 @@
 #  endif
 #endif
 
-#include "libhashkit-1/hashkit.h"
+#include "libhashkit-1.0/hashkit.h"
 #include "libhashkit/algorithm.h"
 #include "libhashkit/is.h"
 #include "libhashkit/string.h"
index 35380dff162e6727f8a6264ca36066692c73bfa3..e4285233db59686b8f593eb0729326481818b681 100644 (file)
@@ -15,4 +15,4 @@
 
 #pragma once
 
-#include "libhashkit-1/hashkit.h"
+#include "libhashkit-1.0/hashkit.h"
index ed878cb1329d00979705ee89504f40ab937c303f..c36384b2aafc170654a8e3a19d90577c7bdeccfb 100644 (file)
@@ -54,7 +54,7 @@
 #  include <dlfcn.h>
 #endif
 
-#include "libmemcached-1/memcached.h"
+#include "libmemcached-1.0/memcached.h"
 #include "libmemcached/watchpoint.h"
 #include "libmemcached/is.h"
 typedef struct memcached_st Memcached;
@@ -69,7 +69,7 @@ memcached_instance_st *memcached_instance_fetch(memcached_st *ptr, uint32_t serv
 #include "libmemcached/io.h"
 #ifdef __cplusplus
 #  include "libmemcached/string.hpp"
-#  include "libmemcachedprotocol-0/binary.h"
+#  include "libmemcachedprotocol-0.0/binary.h"
 #  include "libmemcached/io.hpp"
 #  include "libmemcached/udp.hpp"
 #  include "libmemcached/do.hpp"
index b3dbcb27ac6e6be5f9a3950590de7150ac2f0438..c0878dc33c54bfd7a99a18c8254e0bca6cb18e2a 100644 (file)
@@ -15,4 +15,4 @@
 
 #pragma once
 
-#include "libmemcached-1/memcached.h"
+#include "libmemcached-1.0/memcached.h"
index 381ca13b53030926057ad51ddac953491420b402..6ebb5c4d4526cbcfc74448fa4a553117437a1d09 100644 (file)
@@ -15,4 +15,4 @@
 
 #pragma once
 
-#include "libmemcached-1/memcached.hpp"
+#include "libmemcached-1.0/memcached.hpp"
index 7b808283813174c94f5b0fbc03e831b5ca6da0df..48c7fc49da51fdcf181f32bb4db4c06862350f0d 100644 (file)
@@ -15,4 +15,4 @@
 
 #pragma once
 
-#include "libmemcachedutil-1/util.h"
+#include "libmemcachedutil-1.0/util.h"
index 0e6a1005c666a8faf4dcde2516238f8249457e01..39f0464ef277600203bee43ff1804a9dd514ebb5 100644 (file)
@@ -18,7 +18,7 @@
 #include "mem_config.h"
 #include <assert.h>
 
-#include "libmemcachedprotocol-0/handler.h"
+#include "libmemcachedprotocol-0.0/handler.h"
 #include "libmemcachedprotocol/cache.h"
 #include "libmemcached/byteorder.h"
 
index ddfac58911dd9b11f4fd4eb41ed037a128ce8263..680f85c023efcba5e6dda25b2f0a1e37a66171ab 100644 (file)
@@ -22,6 +22,6 @@
 #include <cstdio>
 #include <ciso646>
 
-#include "libmemcachedutil-1/util.h"
+#include "libmemcachedutil-1.0/util.h"
 #include "libmemcached/assert.hpp"
 #include "libmemcached/backtrace.hpp"
index 93452b664eb5ed29018ef95f620fc02434caf15e..8eb06fa24f629780b76b189f0063191b0e29e6f4 100644 (file)
@@ -1,6 +1,6 @@
 #pragma once
 
-#include "libmemcached-1/platform.h"
+#include "libmemcached-1.0/platform.h"
 
 #if defined __cplusplus
 # include <ctime>
index bff0f1b72c3817a9b8243418e7b3133634be779d..9d410dd339909ff7ed96b60afc3c46a54afca540 100644 (file)
@@ -1,6 +1,6 @@
 #pragma once
 
-#include "libmemcached-1/platform.h"
+#include "libmemcached-1.0/platform.h"
 
 #if defined HAVE_POLL_H
 #  include <poll.h>
index 9678b39fec231f03ba3ae2d17ec59c490706f812..a9a18ad28f79d20e77c1b2babbc5655580f240d3 100644 (file)
@@ -1,6 +1,6 @@
 #pragma once
 
-#include "libmemcached-1/platform.h"
+#include "libmemcached-1.0/platform.h"
 
 #if defined __cplusplus
 # include <cerrno>
diff --git a/src/win32/wrappers.h b/src/win32/wrappers.h
new file mode 100644 (file)
index 0000000..a009fbd
--- /dev/null
@@ -0,0 +1,104 @@
+/* LibMemcached
+ * Copyright (C) 2010 Brian Aker, Trond Norbye
+ * All rights reserved.
+ *
+ * Use and distribution licensed under the BSD license.  See
+ * the COPYING file in the parent directory for full text.
+ *
+ * Summary: "Implementation" of the function we don't have on windows
+ *          to avoid a bunch of ifdefs in the rest of the code
+ *
+ */
+#pragma once 
+
+#include <inttypes.h>
+
+/*
+ * One of the Windows headers define interface as a macro, but that
+ * is causing problems with the member named "interface" in some of the
+ * structs.
+ */
+#undef interface
+
+#undef malloc
+#undef realloc
+
+
+/*
+ * WinSock use a separate range for error codes. Let's just map to the
+ * WinSock ones.
+ */
+#ifndef EADDRINUSE
+# define EADDRINUSE WSAEADDRINUSE
+#endif
+
+#ifndef EWOULDBLOCK
+# define EWOULDBLOCK WSAEWOULDBLOCK
+#endif
+
+#ifndef EINPROGRESS
+# define EINPROGRESS WSAEINPROGRESS
+#endif
+
+#ifndef EALREADY
+# define EALREADY WSAEALREADY
+#endif
+
+#ifndef EISCONN
+# define EISCONN WSAEISCONN
+#endif
+
+#ifndef ENOTCONN
+# define ENOTCONN WSAENOTCONN
+#endif
+
+#ifndef ENOBUFS
+# define ENOBUFS WSAENOBUFS
+#endif
+
+#ifndef SHUT_RDWR
+# define SHUT_RDWR SD_BOTH
+#endif
+#ifndef SHUT_WR
+# define SHUT_WR SD_SEND
+#endif
+#ifndef SHUT_RD
+# define SHUT_RD SD_RECEIVE
+#endif
+
+/* EAI_SYSTEM isn't defined anywhere... just set it to... 11? */
+#ifndef EAI_SYSTEM
+# define EAI_SYSTEM 11
+#endif
+
+/* Best effort mapping of functions to alternative functions */
+#define index(a,b) strchr(a,b)
+#define rindex(a,b) strrchr(a,b)
+#define random() rand()
+#define srandom(a) while (false) {}
+#define kill(a, b) while (false) {}
+#define fork() (-1)
+#define waitpid(a,b,c) (-1)
+#define fnmatch(a,b,c) (-1)
+#define sleep(a) Sleep(a*1000)
+
+#ifdef __cplusplus
+#  include <chrono>
+static inline int gettimeofday(struct timeval* tp, struct timezone* tzp) {
+  using clock = std::chrono::system_clock;
+  auto as_sec = [] (auto d) {
+      return std::chrono::duration_cast<std::chrono::seconds>(d);
+  };
+  auto as_usec = [] (auto d) {
+      return std::chrono::duration_cast<std::chrono::microseconds>(d);
+  };
+
+  auto now = clock::now().time_since_epoch();
+  auto sec = as_sec(now);
+  auto usec = as_usec(now - sec);
+
+  tp->tv_sec = sec.count();
+  tp->tv_usec = usec.count();
+  return 0;
+}
+#endif
\ No newline at end of file
index d847f99b1b819300040d9ddbe85b77ce9fc66f51..95e5c9f7fbbd282b7a6152b8058e77107592c6dc 100644 (file)
 #serial 1
 
 AC_DEFUN([AX_LIBMEMCACHED], [
-    AC_CHECK_HEADER([libmemcached-1/memcached.h], [
+    AC_CHECK_HEADER([libmemcached-1.0/memcached.h], [
       AC_CACHE_CHECK([check for -lmemcached], [ax_cv_libmemcached], [
         AC_LANG_PUSH([C])
         AX_SAVE_FLAGS
         LIBS="-lmemcached $LIBS"
         AC_RUN_IFELSE([
-          AC_LANG_PROGRAM([#include <libmemcached-1/memcached.h>], [
+          AC_LANG_PROGRAM([#include <libmemcached-1.0/memcached.h>], [
             memcached_st *memc;
             memc= memcached(NULL, 0);
             memcached_free(memc);
@@ -72,22 +72,22 @@ AC_DEFUN([AX_LIBMEMCACHED], [
       ])
 
   AS_IF([test "x$ax_cv_libmemcached" = "xyes"], [
-      AC_DEFINE([HAVE_LIBMEMCACHED_MEMCACHED_H], [1], [Have libmemcached-1/memcached.h])
+      AC_DEFINE([HAVE_LIBMEMCACHED_MEMCACHED_H], [1], [Have libmemcached-1.0/memcached.h])
       ],[
-      AC_DEFINE([HAVE_LIBMEMCACHED_MEMCACHED_H], [0], [Have libmemcached-1/memcached.h])
+      AC_DEFINE([HAVE_LIBMEMCACHED_MEMCACHED_H], [0], [Have libmemcached-1.0/memcached.h])
       ])
   ])
 
   AC_DEFUN([AX_LIBMEMCACHED_UTIL], [
       AC_REQUIRE([AX_LIBMEMCACHED])
       AS_IF([test "$ax_cv_libmemcached" = yes], [
-        AC_CHECK_HEADER([libmemcachedutil-1/util.h], [
+        AC_CHECK_HEADER([libmemcachedutil-1.0/util.h], [
           AC_CACHE_CHECK([check for -lmemcachedutil], [ax_cv_libmemcached_util], [
             AX_SAVE_FLAGS
             AC_LANG_PUSH([C])
             LIBS="-lmemcachedutil -lmemcached $LIBS"
             AC_RUN_IFELSE([
-              AC_LANG_PROGRAM([#include <libmemcachedutil-1/util.h>], [
+              AC_LANG_PROGRAM([#include <libmemcachedutil-1.0/util.h>], [
                 memcached_pool_st *memc_pool= memcached_pool_create(NULL, 0, 3);
                 memcached_pool_destroy(memc_pool);
                 ])],
@@ -101,9 +101,9 @@ AC_DEFUN([AX_LIBMEMCACHED], [
         ])
 
       AS_IF([test "x$ax_cv_libmemcached_util" = "xyes"], [
-        AC_DEFINE([HAVE_LIBMEMCACHED_UTIL_H], [1], [Have libmemcachedutil-1/util.h])
+        AC_DEFINE([HAVE_LIBMEMCACHED_UTIL_H], [1], [Have libmemcachedutil-1.0/util.h])
         ],[
-        AC_DEFINE([HAVE_LIBMEMCACHED_UTIL_H], [0], [Have libmemcachedutil-1/util.h])
+        AC_DEFINE([HAVE_LIBMEMCACHED_UTIL_H], [0], [Have libmemcachedutil-1.0/util.h])
         ])
       ])
 
index 1a3cc22e51b76ab16c91ae4a2fd8d9308ff3e30f..369b530ffa8cac3fd26c52085f4d4dfda39905a2 100644 (file)
@@ -1,7 +1,7 @@
 #include "test/lib/common.hpp"
 #include "test/fixtures/hashes.hpp"
 
-#include "libhashkit-1/hashkit.hpp"
+#include "libhashkit-1.0/hashkit.hpp"
 
 TEST_CASE("hashkit") {
   hashkit_st st, *hp = hashkit_create(nullptr);
index 389064db8baf7efb44fa27899525183e2401230a..bde4dfce9a5be736ba2fe62094c0fc9d4d5bda16 100644 (file)
@@ -1,7 +1,7 @@
 #include "test/lib/common.hpp"
 #include "test/lib/MemcachedCluster.hpp"
 
-#include "libmemcachedutil-1/pool.h"
+#include "libmemcachedutil-1.0/pool.h"
 
 #include <atomic>
 #include <sstream>
index b177b2a3e013e23b96362bfc0c72f783ade183cf..f8ac8501594c9882f8b054784ea75601d71edc05 100644 (file)
@@ -1,6 +1,6 @@
 #include "test/lib/common.hpp"
 
-#include "libmemcachedutil-1/pool.h"
+#include "libmemcachedutil-1.0/pool.h"
 #include <cassert>
 
 struct test_pool_context_st {