123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111 |
- /*
- This file is part of GNUnet.
- Copyright (C) 2010,2011 GNUnet e.V.
- GNUnet is free software: you can redistribute it and/or modify it
- under the terms of the GNU Affero General Public License as published
- by the Free Software Foundation, either version 3 of the License,
- or (at your option) any later version.
- GNUnet 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
- Affero General Public License for more details.
-
- You should have received a copy of the GNU Affero General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
- SPDX-License-Identifier: AGPL3.0-or-later
- */
- /**
- * @file transport/gnunet-service-transport_plugins.h
- * @brief plugin management API
- * @author Christian Grothoff
- */
- #ifndef GNUNET_SERVICE_TRANSPORT_PLUGINS_H
- #define GNUNET_SERVICE_TRANSPORT_PLUGINS_H
- #include "gnunet_statistics_service.h"
- #include "gnunet_transport_service.h"
- #include "gnunet_transport_plugin.h"
- #include "gnunet_util_lib.h"
- #include "gnunet_hello_lib.h"
- /**
- * Load and initialize all plugins. The respective functions will be
- * invoked by the plugins when the respective events happen. The
- * closure will be set to a 'const char*' containing the name of the
- * plugin that caused the call.
- *
- * @param recv_cb function to call when data is received
- * @param register_quota_cb function to call to register a quota callback
- * @param unregister_quota_cb function to call to unregister a quota callback
- * @param address_cb function to call when our public addresses changed
- * @param session_start_cb function to call when a session was created
- * @param session_end_cb function to call when a session was terminated
- * @param address_type_cb function to call when a address type is requested
- * @param metric_update_cb function to call when address metrics change
- */
- void
- GST_plugins_load (GNUNET_TRANSPORT_PluginReceiveCallback recv_cb,
- GNUNET_TRANSPORT_AddressNotification address_cb,
- GNUNET_TRANSPORT_SessionStart session_start_cb,
- GNUNET_TRANSPORT_SessionEnd session_end_cb);
- /**
- * Unload all plugins
- */
- void
- GST_plugins_unload (void);
- /**
- * Obtain the plugin API based on a plugin name.
- *
- * @param name name of the plugin
- * @return the plugin's API, NULL if the plugin is not loaded
- */
- struct GNUNET_TRANSPORT_PluginFunctions *
- GST_plugins_find (const char *name);
- /**
- * Obtain the plugin API based on a the stripped plugin name after the underscore.
- *
- * Example: GST_plugins_printer_find (http_client) will return all plugins
- * starting with the prefix "http":
- * http_client or server if loaded
- *
- * @param name name of the plugin
- * @return the plugin's API, NULL if the plugin is not loaded
- */
- struct GNUNET_TRANSPORT_PluginFunctions *
- GST_plugins_printer_find (const char *name);
- /**
- * Convert a given address to a human-readable format. Note that the
- * return value will be overwritten on the next call to this function.
- *
- * @param address address to convert
- * @return statically allocated (!) human-readable address
- */
- const char *
- GST_plugins_a2s (const struct GNUNET_HELLO_Address *address);
- /**
- * Register callback with all plugins to monitor their status.
- *
- * @param cb callback to register, NULL to unsubscribe
- * @param cb_cls closure for @a cb
- */
- void
- GST_plugins_monitor_subscribe (GNUNET_TRANSPORT_SessionInfoCallback cb,
- void *cb_cls);
- #endif
- /* end of file gnunet-service-transport_plugins.h */
|