* and never assume anything about the internal layout / sizes of the
* structures.
*/
-struct memcached_protocol_st;
-struct memcached_protocol_client_st;
+typedef struct memcached_protocol_st memcached_protocol_st;
+typedef struct memcached_protocol_client_st memcached_protocol_client_st;
/**
* Function the protocol handler should call to receive data.
*/
typedef ssize_t (*memcached_protocol_recv_func)(const void *cookie,
int fd,
- void *buf,
+ void *buf,
size_t nbuf);
/**
*/
typedef ssize_t (*memcached_protocol_send_func)(const void *cookie,
int fd,
- const void *buf,
+ const void *buf,
size_t nbuf);
/**
* @return NULL if allocation of an instance fails
*/
LIBMEMCACHED_API
-struct memcached_protocol_st *memcached_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_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
* @param callback the callbacks to use
*/
LIBMEMCACHED_API
-void memcached_binary_protocol_set_callbacks(struct memcached_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
* @param enable true if you want the library to check packages, false otherwise
*/
LIBMEMCACHED_API
-void memcached_binary_protocol_set_pedantic(struct memcached_protocol_st *instance, bool enable);
+void memcached_binary_protocol_set_pedantic(memcached_protocol_st *instance, bool enable);
/**
* Is the library inpecting each package?
* @return true it the library is inspecting each package, false otherwise
*/
LIBMEMCACHED_API
-bool memcached_binary_protocol_get_pedantic(struct memcached_protocol_st *instance);
+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(struct memcached_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_protocol_set_io_functions(struct memcached_protocol_st *instance,
- memcached_protocol_recv_func recv,
+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_protocol_client_st *memcached_protocol_create_client(struct memcached_protocol_st *instance, int sock);
+memcached_protocol_client_st *memcached_protocol_create_client(memcached_protocol_st *instance, int 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
* <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(struct memcached_protocol_client_st *client);
+void memcached_protocol_client_destroy(memcached_protocol_client_st *client);
+
+/**
+ * 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
+ * The different events the client is interested in. This is a bitmask of
+ * the constants defined above.
*/
-enum MEMCACHED_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
-};
+typedef uint32_t memcached_protocol_event_t;
/**
- * Let the client do some work. This might involve reading / sending data
+ * 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_PROTOCOL_EVENT memcached_protocol_client_work(struct memcached_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
* @return the socket handle
*/
LIBMEMCACHED_API
-int memcached_protocol_client_get_socket(struct memcached_protocol_client_st *client);
+int memcached_protocol_client_get_socket(memcached_protocol_client_st *client);
/**
* Get the error id socket attached to a client handle
* @return the OS error code from the client
*/
LIBMEMCACHED_API
-int memcached_protocol_client_get_errno(struct memcached_protocol_client_st *client);
+int memcached_protocol_client_get_errno(memcached_protocol_client_st *client);
/**
* Get a raw response handler for the given cookie