Function gnunet_sys::GNUNET_SERVICE_run_[][src]

pub unsafe extern "C" fn GNUNET_SERVICE_run_(
    argc: c_int,
    argv: *const *mut c_char,
    service_name: *const c_char,
    options: GNUNET_SERVICE_Options,
    service_init_cb: GNUNET_SERVICE_InitCallback,
    connect_cb: GNUNET_SERVICE_ConnectHandler,
    disconnect_cb: GNUNET_SERVICE_DisconnectHandler,
    cls: *mut c_void,
    handlers: *const GNUNET_MQ_MessageHandler
) -> c_int

Creates the “main” function for a GNUnet service. You should almost always use the #GNUNET_SERVICE_MAIN macro instead of calling this function directly (except for ARM, which should call this function directly).

The function will launch the service with the name @a service_name using the @a service_options to configure its shutdown behavior. Once the service is ready, the @a init_cb will be called for service-specific initialization. @a init_cb will be given the service handler which can be used to control the service’s availability. When clients connect or disconnect, the respective @a connect_cb or @a disconnect_cb functions will be called. For messages received from the clients, the respective @a handlers will be invoked; for the closure of the handlers we use the return value from the @a connect_cb invocation of the respective client.

Each handler MUST call #GNUNET_SERVICE_client_continue() after each message to receive further messages from this client. If #GNUNET_SERVICE_client_continue() is not called within a short time, a warning will be logged. If delays are expected, services should call #GNUNET_SERVICE_client_disable_continue_warning() to disable the warning.

Clients sending invalid messages (based on @a handlers) will be dropped. Additionally, clients can be dropped at any time using #GNUNET_SERVICE_client_drop().

@param argc number of command-line arguments in @a argv @param argv array of command-line arguments @param service_name name of the service to run @param options options controlling shutdown of the service @param service_init_cb function to call once the service is ready @param connect_cb function to call whenever a client connects @param disconnect_cb function to call whenever a client disconnects @param cls closure argument for @a service_init_cb, @a connect_cb and @a disconnect_cb @param handlers NULL-terminated array of message handlers for the service, the closure will be set to the value returned by the @a connect_cb for the respective connection @return 0 on success, non-zero on error