68 lines
2.1 KiB
C
68 lines
2.1 KiB
C
/* -*- Mode: C; tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*- */
|
|
#ifndef MEMCACHED_CALLBACK_H
|
|
#define MEMCACHED_CALLBACK_H
|
|
|
|
#include "memcached/engine_common.h"
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
/**
|
|
* Event types for callbacks to the engine indicating state
|
|
* changes in the server.
|
|
*/
|
|
typedef enum {
|
|
ON_CONNECT = 0, /**< A new connection was established. */
|
|
ON_DISCONNECT = 1, /**< A connection was terminated. */
|
|
ON_AUTH = 2, /**< A connection was authenticated. */
|
|
ON_SWITCH_CONN = 3, /**< Processing a different connection on this thread. */
|
|
ON_LOG_LEVEL = 4 /**< Changed log level */
|
|
} ENGINE_EVENT_TYPE;
|
|
|
|
#define MAX_ENGINE_EVENT_TYPE 5
|
|
|
|
/**
|
|
* Callback for server events.
|
|
*
|
|
* @param cookie The cookie provided by the frontend
|
|
* @param type the type of event
|
|
* @param event_data additional event-specific data.
|
|
* @param cb_data data as registered
|
|
*/
|
|
typedef void (*EVENT_CALLBACK)(const void *cookie,
|
|
ENGINE_EVENT_TYPE type,
|
|
const void *event_data,
|
|
const void *cb_data);
|
|
|
|
/**
|
|
* The API provided by the server to manipulate callbacks
|
|
*/
|
|
typedef struct {
|
|
/**
|
|
* Register an event callback.
|
|
*
|
|
* @param type the type of event to register
|
|
* @param cb the callback to fire when the event occurs
|
|
* @param cb_data opaque data to be given back to the caller
|
|
* on event
|
|
*/
|
|
void (*register_callback)(ENGINE_HANDLE *engine,
|
|
ENGINE_EVENT_TYPE type,
|
|
EVENT_CALLBACK cb,
|
|
const void *cb_data);
|
|
|
|
/**
|
|
* Fire callbacks
|
|
*/
|
|
void (*perform_callbacks)(ENGINE_EVENT_TYPE type,
|
|
const void *data,
|
|
const void *cookie);
|
|
} SERVER_CALLBACK_API;
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif
|