X-Git-Url: http://git.silcnet.org/gitweb/?a=blobdiff_plain;f=lib%2Fsilcserver%2Fsilcserver.h;fp=lib%2Fsilcserver%2Fsilcserver.h;h=981587b738b563e5383d38c03044d6dc435510dd;hb=40f8443d8d3a6577336ee66d18e04d9ac4d956bb;hp=0000000000000000000000000000000000000000;hpb=6210937137137fe4019e808686dd1fcf99360af6;p=silc.git diff --git a/lib/silcserver/silcserver.h b/lib/silcserver/silcserver.h new file mode 100644 index 00000000..981587b7 --- /dev/null +++ b/lib/silcserver/silcserver.h @@ -0,0 +1,157 @@ +/* + + silcserver.h + + Author: Pekka Riikonen + + Copyright (C) 1997 - 2005 Pekka Riikonen + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; version 2 of the License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + +*/ + +/****h* silcserver/Server Library Interface + * + * DESCRIPTION + * + * + ***/ + +#ifndef SILCSERVER_H +#define SILCSERVER_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include "silcserver_params.h" + +/****s* silcserver/SilcServerAPI/SilcServer + * + * NAME + * + * typedef struct SilcServerStruct *SilcServer; + * + * DESCRIPTION + * + * This context is the actual SILC Server context and is allocated + * by silc_server_alloc and given as argument to all silc_server_* + * functions. It is freed by the silc_server_free function. + * + ***/ +typedef struct SilcServerStruct *SilcServer; + +/****f* silcserver/SilcServerAPI/SilcServerRunning + * + * SYNOPSIS + * + * typedef void (*SilcServerRunning)(SilcServer server, SilcBool running, + * void *context); + * + * DESCRIPTION + * + * Called to indicate that the server is up and running and ready to + * accept new connection and create connections to remote router, if + * any has been configured. + * + ***/ +typedef void (*SilcServerRunning)(SilcServer server, void *context); + +/****f* silcserver/SilcServerAPI/SilcServerStop + * + * SYNOPSIS + * + * typedef void (*SilcServerStop)(SilcServer server, void *context); + * + * DESCRIPTION + * + * Called to indicate that the server has stopped and can be freed now. + * + ***/ +typedef void (*SilcServerStop)(SilcServer server, void *context); + +/****f* silcserver/SilcServerAPI/silc_server_alloc + * + * SYNOPSIS + * + * SilcServer silc_server_alloc(void *app_context, SilcServerParams params, + * SilcSchedule schedule); + * + * DESCRIPTION + * + * Allocates SILC server context and returns it. Returns NULL if case + * of error. The `app_context' is application specific context and + * can be retrieved from the server by using silc_server_get_context + * function. The `params' context contains the SILC server parameters + * that application has gathered most likely from a configuration file + * or similar source. The `params' and everything inside are allocated + * by the caller, but the server library will own it and free it. It + * may also modify its content. + * + ***/ +SilcServer silc_server_alloc(void *app_context, SilcServerParams params, + SilcSchedule schedule); + +/****f* silcserver/SilcServerAPI/silc_server_free + * + * SYNOPSIS + * + * void silc_server_free(SilcServer server); + * + * DESCRIPTION + * + * Free the server context and all allocated resources. + * + ***/ +void silc_server_free(SilcServer server); + +/****f* silcserver/SilcServerAPI/silc_server_run + * + * SYNOPSIS + * + * void silc_server_run(SilcServer server, SilcServerRunning running, + * void *running_context); + * + * DESCRIPTION + * + * Starts the SILC server. This function returns immediately and the + * SilcSchedule must be run after this functions returns or it must be + * already running when this function is called. The `running' callback + * will be called once the server is up and running. + * + ***/ +void silc_server_run(SilcServer server, SilcServerRunning running, + void *running_context); + +/****f* silcserver/SilcServerAPI/silc_server_run + * + * SYNOPSIS + * + * void silc_server_stop(SilcServer server, SilcServerStop stop_callback, + * void *stop_context); + * + * DESCRIPTION + * + * Stops the SILC server. Stopping of the server is asynchronous and + * once it has stopped the `stopped' callback will be called with the + * `stop_context'. Application should not exit without calling this + * function. + * + ***/ +void silc_server_stop(SilcServer server, SilcServerStop stopped, + void *stop_context); + +#include "server_internal.h" + +#ifdef __cplusplus +} +#endif + +#endif /* SILCSERVER_H */