Provided by: libqb-dev_0.16.0.real-1ubuntu5_amd64 bug

NAME

       qbipcs.h -

       Server IPC API.

SYNOPSIS

       #include <stdlib.h>
       #include <sys/uio.h>
       #include <qb/qbipc_common.h>
       #include <qb/qbhdb.h>
       #include <qb/qbloop.h>

   Data Structures
       struct qb_ipcs_stats
       struct qb_ipcs_connection_stats
       struct qb_ipcs_connection_stats_2
       struct qb_ipcs_poll_handlers
       struct qb_ipcs_service_handlers

   Typedefs
       typedef struct qb_ipcs_connection qb_ipcs_connection_t
       typedef struct qb_ipcs_service qb_ipcs_service_t
       typedef int32_t(* qb_ipcs_dispatch_fn_t )(int32_t fd, int32_t revents, void *data)
       typedef int32_t(* qb_ipcs_dispatch_add_fn )(enum qb_loop_priority p, int32_t fd, int32_t
           events, void *data, qb_ipcs_dispatch_fn_t fn)
       typedef int32_t(* qb_ipcs_dispatch_mod_fn )(enum qb_loop_priority p, int32_t fd, int32_t
           events, void *data, qb_ipcs_dispatch_fn_t fn)
       typedef int32_t(* qb_ipcs_dispatch_del_fn )(int32_t fd)
       typedef int32_t(* qb_ipcs_job_add_fn )(enum qb_loop_priority p, void *data,
           qb_loop_job_dispatch_fn dispatch_fn)
       typedef int32_t(* qb_ipcs_connection_accept_fn )(qb_ipcs_connection_t *c, uid_t uid, gid_t
           gid)
           This callback is to check wether you want to accept a new connection.
       typedef void(* qb_ipcs_connection_created_fn )(qb_ipcs_connection_t *c)
           This is called after a new connection has been created.
       typedef int32_t(* qb_ipcs_connection_closed_fn )(qb_ipcs_connection_t *c)
           This is called after a connection has been disconnected.
       typedef void(* qb_ipcs_connection_destroyed_fn )(qb_ipcs_connection_t *c)
           This is called just before a connection is freed.
       typedef int32_t(* qb_ipcs_msg_process_fn )(qb_ipcs_connection_t *c, void *data, size_t
           size)
           This is the message processing calback.

   Enumerations
       enum qb_ipcs_rate_limit { QB_IPCS_RATE_FAST, QB_IPCS_RATE_NORMAL, QB_IPCS_RATE_SLOW,
           QB_IPCS_RATE_OFF, QB_IPCS_RATE_OFF_2 }

   Functions
       qb_ipcs_service_t * qb_ipcs_create (const char *name, int32_t service_id, enum qb_ipc_type
           type, struct qb_ipcs_service_handlers *handlers)
           Create a new IPC server.
       void qb_ipcs_ref (qb_ipcs_service_t *s)
           Increase the reference counter on the service object.
       void qb_ipcs_unref (qb_ipcs_service_t *s)
           Decrease the reference counter on the service object.
       void qb_ipcs_poll_handlers_set (qb_ipcs_service_t *s, struct qb_ipcs_poll_handlers
           *handlers)
           Set your poll callbacks.
       void qb_ipcs_service_context_set (qb_ipcs_service_t *s, void *context)
           Associate a 'user' pointer with this service.
       void * qb_ipcs_service_context_get (qb_ipcs_service_t *s)
           Get the context (set previously)
       int32_t qb_ipcs_run (qb_ipcs_service_t *s)
           run the new IPC server.
       void qb_ipcs_destroy (qb_ipcs_service_t *s)
           Destroy the IPC server.
       void qb_ipcs_request_rate_limit (qb_ipcs_service_t *s, enum qb_ipcs_rate_limit rl)
           Limit the incomming request rate.
       ssize_t qb_ipcs_response_send (qb_ipcs_connection_t *c, const void *data, size_t size)
           Send a response to a incomming request.
       ssize_t qb_ipcs_response_sendv (qb_ipcs_connection_t *c, const struct iovec *iov, size_t
           iov_len)
           Send a response to a incomming request.
       ssize_t qb_ipcs_event_send (qb_ipcs_connection_t *c, const void *data, size_t size)
           Send an asyncronous event message to the client.
       ssize_t qb_ipcs_event_sendv (qb_ipcs_connection_t *c, const struct iovec *iov, size_t
           iov_len)
           Send an asyncronous event message to the client.
       void qb_ipcs_connection_ref (qb_ipcs_connection_t *c)
           Increment the connection's reference counter.
       void qb_ipcs_connection_unref (qb_ipcs_connection_t *c)
           Decrement the connection's reference counter.
       void qb_ipcs_disconnect (qb_ipcs_connection_t *c)
           Disconnect from this client.
       int32_t qb_ipcs_service_id_get (qb_ipcs_connection_t *c)
           Get the service id related to this connection's service.
       void qb_ipcs_context_set (qb_ipcs_connection_t *c, void *context)
           Associate a 'user' pointer with this connection.
       void * qb_ipcs_context_get (qb_ipcs_connection_t *c)
           Get the context (set previously)
       void * qb_ipcs_connection_service_context_get (qb_ipcs_connection_t *c)
           Get the context previously set on the service backing this connection.
       int32_t qb_ipcs_connection_stats_get (qb_ipcs_connection_t *c, struct
           qb_ipcs_connection_stats *stats, int32_t clear_after_read)
           Get the connection statistics.
       struct qb_ipcs_connection_stats_2 * qb_ipcs_connection_stats_get_2 (qb_ipcs_connection_t
           *c, int32_t clear_after_read)
           Get (and allocate) the connection statistics.
       int32_t qb_ipcs_stats_get (qb_ipcs_service_t *pt, struct qb_ipcs_stats *stats, int32_t
           clear_after_read)
           Get the service statistics.
       qb_ipcs_connection_t * qb_ipcs_connection_first_get (qb_ipcs_service_t *pt)
           Get the first connection.
       qb_ipcs_connection_t * qb_ipcs_connection_next_get (qb_ipcs_service_t *pt,
           qb_ipcs_connection_t *current)
           Get the next connection.
       void qb_ipcs_connection_auth_set (qb_ipcs_connection_t *conn, uid_t uid, gid_t gid, mode_t
           mode)
           Set the permissions on and shared memory files so that both processes can read and
           write to them.

Detailed Description

       Server IPC API.

Typedef Documentation

   typedef int32_t(* qb_ipcs_connection_accept_fn)(qb_ipcs_connection_t *c, uid_t uid, gid_t gid)
       This callback is to check wether you want to accept a new connection. The type of checks
       you should do are authentication, service availabilty or process resource constraints.

       Returns:
           0 to accept or -errno to indicate a failure (sent back to the client)

       Note:
           you can call qb_ipcs_connection_auth_set() within this function.

   typedef int32_t(* qb_ipcs_connection_closed_fn)(qb_ipcs_connection_t *c)
       This is called after a connection has been disconnected.

       Note:
           if you return anything but 0 this function will be repeativily called (until 0 is
           returned).

   typedef void(* qb_ipcs_connection_created_fn)(qb_ipcs_connection_t *c)
       This is called after a new connection has been created.

   typedef void(* qb_ipcs_connection_destroyed_fn)(qb_ipcs_connection_t *c)
       This is called just before a connection is freed.

   typedef struct qb_ipcs_connection qb_ipcs_connection_t
   typedef int32_t(* qb_ipcs_dispatch_add_fn)(enum qb_loop_priority p, int32_t fd, int32_t
       events, void *data, qb_ipcs_dispatch_fn_t fn)
   typedef int32_t(* qb_ipcs_dispatch_del_fn)(int32_t fd)
   typedef int32_t(* qb_ipcs_dispatch_fn_t)(int32_t fd, int32_t revents, void *data)
   typedef int32_t(* qb_ipcs_dispatch_mod_fn)(enum qb_loop_priority p, int32_t fd, int32_t
       events, void *data, qb_ipcs_dispatch_fn_t fn)
   typedef int32_t(* qb_ipcs_job_add_fn)(enum qb_loop_priority p, void *data,
       qb_loop_job_dispatch_fn dispatch_fn)
   typedef int32_t(* qb_ipcs_msg_process_fn)(qb_ipcs_connection_t *c, void *data, size_t size)
       This is the message processing calback. It is called with the message data.

   typedef struct qb_ipcs_service qb_ipcs_service_t

Enumeration Type Documentation

   enum qb_ipcs_rate_limit
       Enumerator

       QB_IPCS_RATE_FAST

       QB_IPCS_RATE_NORMAL

       QB_IPCS_RATE_SLOW

       QB_IPCS_RATE_OFF

       QB_IPCS_RATE_OFF_2

Function Documentation

   void qb_ipcs_connection_auth_set (qb_ipcs_connection_t *conn, uid_tuid, gid_tgid, mode_tmode)
       Set the permissions on and shared memory files so that both processes can read and write
       to them.

       Parameters:
           conn connection instance
           uid the user id to set.
           gid the group id to set.
           mode the mode to set.

       See Also:
           chmod() chown()

       Note:
           this must be called within the qb_ipcs_connection_accept_fn() callback.

   qb_ipcs_connection_t* qb_ipcs_connection_first_get (qb_ipcs_service_t *pt)
       Get the first connection.

       Note:
           call qb_ipcs_connection_unref() after using the connection.

       Parameters:
           pt service instance

       Returns:
           first connection

   qb_ipcs_connection_t* qb_ipcs_connection_next_get (qb_ipcs_service_t *pt, qb_ipcs_connection_t
       *current)
       Get the next connection.

       Note:
           call qb_ipcs_connection_unref() after using the connection.

       Parameters:
           pt service instance
           current current connection

       Returns:
           next connection

   void qb_ipcs_connection_ref (qb_ipcs_connection_t *c)
       Increment the connection's reference counter.

       Parameters:
           c connection instance

   void* qb_ipcs_connection_service_context_get (qb_ipcs_connection_t *c)
       Get the context previously set on the service backing this connection.

       Parameters:
           c connection instance

       Returns:
           the context

       See Also:
           qb_ipcs_service_context_set

   int32_t qb_ipcs_connection_stats_get (qb_ipcs_connection_t *c, struct qb_ipcs_connection_stats
       *stats, int32_tclear_after_read)
       Get the connection statistics.

       Deprecated
           from v0.13.0 onwards, use qb_ipcs_connection_stats_get_2

           Parameters:
               stats (out) the statistics structure
               clear_after_read clear stats after copying them into stats
               c connection instance

           Returns:
               0 == ok; -errno to indicate a failure

   struct qb_ipcs_connection_stats_2* qb_ipcs_connection_stats_get_2 (qb_ipcs_connection_t *c,
       int32_tclear_after_read)
       Get (and allocate) the connection statistics.

       Parameters:
           clear_after_read clear stats after copying them into stats
           c connection instance

       Return values:
           NULL if no memory or invalid connection
           allocated statistics structure (user must free it).

   void qb_ipcs_connection_unref (qb_ipcs_connection_t *c)
       Decrement the connection's reference counter.

       Parameters:
           c connection instance

   void* qb_ipcs_context_get (qb_ipcs_connection_t *c)
       Get the context (set previously)

       Parameters:
           c connection instance

       Returns:
           the context

       See Also:
           qb_ipcs_context_set()

   void qb_ipcs_context_set (qb_ipcs_connection_t *c, void *context)
       Associate a 'user' pointer with this connection.

       Parameters:
           context the point to associate with this connection.
           c connection instance

       See Also:
           qb_ipcs_context_get()

   qb_ipcs_service_t* qb_ipcs_create (const char *name, int32_tservice_id, enum qb_ipc_typetype,
       struct qb_ipcs_service_handlers *handlers)
       Create a new IPC server.

       Parameters:
           name for clients to connect to.
           service_id an integer to associate with the service
           type transport type.
           handlers callbacks.

       Returns:
           the new service instance.

   void qb_ipcs_destroy (qb_ipcs_service_t *s)
       Destroy the IPC server.

       Parameters:
           s service instance to destroy

   void qb_ipcs_disconnect (qb_ipcs_connection_t *c)
       Disconnect from this client.

       Parameters:
           c connection instance

   ssize_t qb_ipcs_event_send (qb_ipcs_connection_t *c, const void *data, size_tsize)
       Send an asyncronous event message to the client.

       Parameters:
           c connection instance
           data the message to send
           size the size of the message

       Returns:
           size sent or -errno for errors

       Note:
           the data must include a qb_ipc_response_header at the top of the message. The client
           will read the size field to determine how much to recv.

   ssize_t qb_ipcs_event_sendv (qb_ipcs_connection_t *c, const struct iovec *iov, size_tiov_len)
       Send an asyncronous event message to the client.

       Parameters:
           c connection instance
           iov the iovec struct that points to the message to send
           iov_len the number of iovecs.

       Returns:
           size sent or -errno for errors

       Note:
           the iov[0] must be a qb_ipc_response_header. The client will read the size field to
           determine how much to recv.

   void qb_ipcs_poll_handlers_set (qb_ipcs_service_t *s, struct qb_ipcs_poll_handlers *handlers)
       Set your poll callbacks.

       Parameters:
           s service instance
           handlers the handlers that you want ipcs to use.

   void qb_ipcs_ref (qb_ipcs_service_t *s)
       Increase the reference counter on the service object.

       Parameters:
           s service instance

   void qb_ipcs_request_rate_limit (qb_ipcs_service_t *s, enum qb_ipcs_rate_limitrl)
       Limit the incomming request rate.

       Parameters:
           s service instance
           rl the new rate

   ssize_t qb_ipcs_response_send (qb_ipcs_connection_t *c, const void *data, size_tsize)
       Send a response to a incomming request.

       Parameters:
           c connection instance
           data the message to send
           size the size of the message

       Returns:
           size sent or -errno for errors

       Note:
           the data must include a qb_ipc_response_header at the top of the message. The client
           will read the size field to determine how much to recv.

   ssize_t qb_ipcs_response_sendv (qb_ipcs_connection_t *c, const struct iovec *iov,
       size_tiov_len)
       Send a response to a incomming request.

       Parameters:
           c connection instance
           iov the iovec struct that points to the message to send
           iov_len the number of iovecs.

       Returns:
           size sent or -errno for errors

       Note:
           the iov[0] must be a qb_ipc_response_header. The client will read the size field to
           determine how much to recv.

   int32_t qb_ipcs_run (qb_ipcs_service_t *s)
       run the new IPC server.

       Parameters:
           s service instance

       Returns:
           0 == ok; -errno to indicate a failure. Service is destroyed on failure.

   void* qb_ipcs_service_context_get (qb_ipcs_service_t *s)
       Get the context (set previously)

       Parameters:
           s service instance

       Returns:
           the context

       See Also:
           qb_ipcs_service_context_set()

   void qb_ipcs_service_context_set (qb_ipcs_service_t *s, void *context)
       Associate a 'user' pointer with this service.

       Parameters:
           s service instance
           context the pointer to associate with this service.

       See Also:
           qb_ipcs_service_context_get()

   int32_t qb_ipcs_service_id_get (qb_ipcs_connection_t *c)
       Get the service id related to this connection's service. (as passed into qb_ipcs_create()

       Returns:
           service id.

   int32_t qb_ipcs_stats_get (qb_ipcs_service_t *pt, struct qb_ipcs_stats *stats,
       int32_tclear_after_read)
       Get the service statistics.

       Parameters:
           stats (out) the statistics structure
           clear_after_read clear stats after copying them into stats
           pt service instance

       Returns:
           0 == ok; -errno to indicate a failure

   void qb_ipcs_unref (qb_ipcs_service_t *s)
       Decrease the reference counter on the service object.

       Parameters:
           s service instance

Author

       Generated automatically by Doxygen for libqb from the source code.