X-Git-Url: https://git.m6w6.name/?a=blobdiff_plain;f=libmemcached%2Fprotocol_handler.h;h=1eee5ca5ec52eb48c786bde553d6c06f54f4e6d6;hb=ea7a5dd332779c77eaef6d14eac58372cb3439e1;hp=e1528d50045d9655c87359828cc047080a483b99;hpb=90f605b1e1472f5c4400f862e4236be7670cae13;p=awesomized%2Flibmemcached diff --git a/libmemcached/protocol_handler.h b/libmemcached/protocol_handler.h index e1528d50..1eee5ca5 100644 --- a/libmemcached/protocol_handler.h +++ b/libmemcached/protocol_handler.h @@ -1,28 +1,40 @@ -/* - * Summary: Definition of the callback interface to the protocol handler +/* LibMemcached + * Copyright (C) 2006-2009 Brian Aker + * All rights reserved. * - * Copy: See Copyright for the status of this software. + * Use and distribution licensed under the BSD license. See + * the COPYING file in the parent directory for full text. + * + * Summary: Definition of the callback interface to the protocol handler * * Author: Trond Norbye + * */ -#ifndef MEMCACHED_PROTOCOL_H -#define MEMCACHED_PROTOCOL_H + +#pragma once #include -#include +#if !defined(__cplusplus) +# include +#endif +#include #include #include #include /* Forward declarations */ /* - * You should only access memcached_binary_protocol_st from one thread!, + * You should only access memcached_protocol_st from one thread!, * and never assume anything about the internal layout / sizes of the * structures. */ -struct memcached_binary_protocol_st; -struct memcached_binary_protocol_client_st; +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. @@ -35,10 +47,10 @@ struct memcached_binary_protocol_client_st; * @return the number of bytes copied into buf * or -1 upon error (errno should contain more information) */ -typedef ssize_t (*memcached_binary_protocol_recv_func)(const void *cookie, - int fd, - void *buf, - size_t nbuf); +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. @@ -51,10 +63,10 @@ typedef ssize_t (*memcached_binary_protocol_recv_func)(const void *cookie, * @return the number of bytes sent * or -1 upon error (errno should contain more information) */ -typedef ssize_t (*memcached_binary_protocol_send_func)(const void *cookie, - int fd, - const void *buf, - size_t nbuf); +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 @@ -62,14 +74,14 @@ typedef ssize_t (*memcached_binary_protocol_send_func)(const void *cookie, * @return NULL if allocation of an instance fails */ LIBMEMCACHED_API -struct memcached_binary_protocol_st *memcached_binary_protocol_create_instance(void); +memcached_protocol_st *memcached_protocol_create_instance(void); /** * Get the callbacks associated with a protocol handler instance * @return the callbacks currently used */ LIBMEMCACHED_API -struct memcached_binary_protocol_callback_st *memcached_binary_protocol_get_callbacks(struct memcached_binary_protocol_st *instance); +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 @@ -77,7 +89,7 @@ struct memcached_binary_protocol_callback_st *memcached_binary_protocol_get_call * @param callback the callbacks to use */ LIBMEMCACHED_API -void memcached_binary_protocol_set_callbacks(struct memcached_binary_protocol_st *instance, struct memcached_binary_protocol_callback_st *callback); +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 @@ -88,7 +100,7 @@ void memcached_binary_protocol_set_callbacks(struct memcached_binary_protocol_st * @param enable true if you want the library to check packages, false otherwise */ LIBMEMCACHED_API -void memcached_binary_protocol_set_pedantic(struct memcached_binary_protocol_st *instance, bool enable); +void memcached_binary_protocol_set_pedantic(memcached_protocol_st *instance, bool enable); /** * Is the library inpecting each package? @@ -96,7 +108,7 @@ void memcached_binary_protocol_set_pedantic(struct memcached_binary_protocol_st * @return true it the library is inspecting each package, false otherwise */ LIBMEMCACHED_API -bool memcached_binary_protocol_get_pedantic(struct memcached_binary_protocol_st *instance); +bool memcached_binary_protocol_get_pedantic(memcached_protocol_st *instance); /** * Destroy an instance of the protocol handler @@ -104,65 +116,74 @@ bool memcached_binary_protocol_get_pedantic(struct memcached_binary_protocol_st * @param instance The instance to destroy */ LIBMEMCACHED_API -void memcached_binary_protocol_destroy_instance(struct memcached_binary_protocol_st *instance); +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). - * + * 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_binary_protocol_set_io_functions(struct memcached_binary_protocol_st *instance, - memcached_binary_protocol_recv_func recv, - memcached_binary_protocol_send_func send); +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 + * @return NULL if allocation fails, otherwise an instance */ LIBMEMCACHED_API -struct memcached_binary_protocol_client_st *memcached_binary_protocol_create_client(struct memcached_binary_protocol_st *instance, int sock); +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 + * The caller needs to close the socket accociated with the client * before calling this function. This function invalidates the * client memory area. * * @param client the client to destroy */ LIBMEMCACHED_API -void memcached_binary_protocol_client_destroy(struct memcached_binary_protocol_client_st *client); +void memcached_protocol_client_destroy(memcached_protocol_client_st *client); /** - * The different events the client is interested in + * Error event means that the client encountered an error with the + * connection so you should shut it down */ -enum MEMCACHED_BINARY_PROTOCOL_EVENT { - /* Error event means that the client encountered an error with the - * connection so you should shut it down */ - ERROR_EVENT, - /* Please notify when there is more data available to read */ - READ_EVENT, - /* Please notify when it is possible to send more data */ - WRITE_EVENT, - /* Please notify when it is possible to send or receive data */ - READ_WRITE_EVENT -}; +#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 /** - * Let the client do some work. This might involve reading / sending data + * 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 -enum MEMCACHED_BINARY_PROTOCOL_EVENT memcached_binary_protocol_client_work(struct memcached_binary_protocol_client_st *client); +memcached_protocol_event_t memcached_protocol_client_work(memcached_protocol_client_st *client); /** * Get the socket attached to a client handle @@ -170,7 +191,7 @@ enum MEMCACHED_BINARY_PROTOCOL_EVENT memcached_binary_protocol_client_work(struc * @return the socket handle */ LIBMEMCACHED_API -int memcached_binary_protocol_client_get_socket(struct memcached_binary_protocol_client_st *client); +memcached_socket_t memcached_protocol_client_get_socket(memcached_protocol_client_st *client); /** * Get the error id socket attached to a client handle @@ -178,7 +199,7 @@ int memcached_binary_protocol_client_get_socket(struct memcached_binary_protocol * @return the OS error code from the client */ LIBMEMCACHED_API -int memcached_binary_protocol_client_get_errno(struct memcached_binary_protocol_client_st *client); +int memcached_protocol_client_get_errno(memcached_protocol_client_st *client); /** * Get a raw response handler for the given cookie @@ -188,4 +209,7 @@ int memcached_binary_protocol_client_get_errno(struct memcached_binary_protocol_ */ LIBMEMCACHED_API memcached_binary_protocol_raw_response_handler memcached_binary_protocol_get_raw_response_handler(const void *cookie); + +#ifdef __cplusplus +} #endif