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