Function gnunet_sys::GNUNET_SERVICE_start [−][src]
pub unsafe extern "C" fn GNUNET_SERVICE_start(
service_name: *const c_char,
cfg: *const GNUNET_CONFIGURATION_Handle,
connect_cb: GNUNET_SERVICE_ConnectHandler,
disconnect_cb: GNUNET_SERVICE_DisconnectHandler,
cls: *mut c_void,
handlers: *const GNUNET_MQ_MessageHandler
) -> *mut GNUNET_SERVICE_Handle
Low-level function to start a service if the scheduler is already running. Should only be used directly in special cases.
The function will launch the service with the name @a service_name using the @a service_options to configure its shutdown behavior. 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().
The service must be stopped using #GNUNET_SERVICE_stop().
@param service_name name of the service to run @param cfg configuration to use @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 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 NULL on error