X-Git-Url: https://git.librecmc.org/?a=blobdiff_plain;f=src%2Finclude%2Fgnunet_core_service.h;h=b38f38b69421e49c9f8e4ebb7b7f9d2ac67caa67;hb=ec50a665dc884f7997419d0351ae8ade9c1aeabe;hp=6ec486b26c0cbcebe3e9cb0be39e503f987ef39b;hpb=c4f4203aaff577fdbe60a7a0976e913dbb77f03e;p=oweals%2Fgnunet.git diff --git a/src/include/gnunet_core_service.h b/src/include/gnunet_core_service.h index 6ec486b26..b38f38b69 100644 --- a/src/include/gnunet_core_service.h +++ b/src/include/gnunet_core_service.h @@ -1,21 +1,19 @@ /* This file is part of GNUnet. - Copyright (C) 2009-2014, 2016 GNUnet e.V. + Copyright (C) 2009-2017 GNUnet e.V. - GNUnet 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; either version 3, or (at your - option) any later version. + 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 - General Public License for more details. - - You should have received a copy of the GNU General Public License - along with GNUnet; see the file COPYING. If not, write to the - Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110-1301, USA. + 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 . */ /** * @author Christian Grothoff @@ -85,28 +83,6 @@ enum GNUNET_CORE_Priority struct GNUNET_CORE_Handle; -/** - * Method called whenever a given peer connects. - * - * @param cls closure - * @param peer peer identity this notification is about - */ -typedef void -(*GNUNET_CORE_ConnectEventHandler) (void *cls, - const struct GNUNET_PeerIdentity *peer); - - -/** - * Method called whenever a peer disconnects. - * - * @param cls closure - * @param peer peer identity this notification is about - */ -typedef void -(*GNUNET_CORE_DisconnectEventHandler) (void *cls, - const struct GNUNET_PeerIdentity *peer); - - /** * Method called whenever a given peer connects. * @@ -114,7 +90,7 @@ typedef void * @param peer peer identity this notification is about */ typedef void * -(*GNUNET_CORE_ConnecTEventHandler) (void *cls, +(*GNUNET_CORE_ConnectEventHandler) (void *cls, const struct GNUNET_PeerIdentity *peer, struct GNUNET_MQ_Handle *mq); @@ -126,54 +102,11 @@ typedef void * * @param peer peer identity this notification is about */ typedef void -(*GNUNET_CORE_DisconnecTEventHandler) (void *cls, +(*GNUNET_CORE_DisconnectEventHandler) (void *cls, const struct GNUNET_PeerIdentity *peer, void *peer_cls); -/** - * Functions with this signature are called whenever a message is - * received or transmitted. - * - * @param cls closure (set from #GNUNET_CORE_connect) - * @param peer the other peer involved (sender or receiver, NULL - * for loopback messages where we are both sender and receiver) - * @param message the actual message - * @return #GNUNET_OK to keep the connection open, - * #GNUNET_SYSERR to close connection to the peer (signal serious error) - */ -typedef int -(*GNUNET_CORE_MessageCallback) (void *cls, - const struct GNUNET_PeerIdentity *other, - const struct GNUNET_MessageHeader *message); - - -/** - * Message handler. Each struct specifies how to handle on particular - * type of message received. - */ -struct GNUNET_CORE_MessageHandler -{ - /** - * Function to call for messages of @e type. - */ - GNUNET_CORE_MessageCallback callback; - - /** - * Type of the message this handler covers. - */ - uint16_t type; - - /** - * Expected size of messages of this type. Use 0 for variable-size. - * If non-zero, messages of the given type will be discarded if they - * do not have the right size. - */ - uint16_t expected_size; - -}; - - /** * Function called after #GNUNET_CORE_connect has succeeded (or failed * for good). Note that the private key of the peer is intentionally @@ -208,26 +141,6 @@ typedef void * connected to the core service * @param connects function to call on peer connect, can be NULL * @param disconnects function to call on peer disconnect / timeout, can be NULL - * @param inbound_notify function to call for all inbound messages, can be NULL - * note that the core is allowed to drop notifications about inbound - * messages if the client does not process them fast enough (for this - * notification type, a bounded queue is used) - * @param inbound_hdr_only set to #GNUNET_YES if @a inbound_notify will only read the - * `struct GNUNET_MessageHeader` and hence we do not need to give it the full message; - * can be used to improve efficiency, ignored if inbound_notify is NULL - * note that the core is allowed to drop notifications about inbound - * messages if the client does not process them fast enough (for this - * notification type, a bounded queue is used) - * @param outbound_notify function to call for all outbound messages, can be NULL; - * note that the core is allowed to drop notifications about outbound - * messages if the client does not process them fast enough (for this - * notification type, a bounded queue is used) - * @param outbound_hdr_only set to #GNUNET_YES if @a outbound_notify will only read the - * `struct GNUNET_MessageHeader` and hence we do not need to give it the full message - * can be used to improve efficiency, ignored if outbound_notify is NULL - * note that the core is allowed to drop notifications about outbound - * messages if the client does not process them fast enough (for this - * notification type, a bounded queue is used) * @param handlers callbacks for messages we care about, NULL-terminated * note that the core is allowed to drop notifications about inbound * messages if the client does not process them fast enough (for this @@ -241,53 +154,6 @@ GNUNET_CORE_connect (const struct GNUNET_CONFIGURATION_Handle *cfg, GNUNET_CORE_StartupCallback init, GNUNET_CORE_ConnectEventHandler connects, GNUNET_CORE_DisconnectEventHandler disconnects, - GNUNET_CORE_MessageCallback inbound_notify, - int inbound_hdr_only, - GNUNET_CORE_MessageCallback outbound_notify, - int outbound_hdr_only, - const struct GNUNET_CORE_MessageHandler *handlers); - -/** - * Disconnect from the core service. This function can only - * be called *after* all pending #GNUNET_CORE_notify_transmit_ready - * requests have been explicitly cancelled. - * - * @param handle connection to core to disconnect - */ -void -GNUNET_CORE_disconnect (struct GNUNET_CORE_Handle *handle); - - -/** - * Connect to the core service. Note that the connection may complete - * (or fail) asynchronously. This function primarily causes the given - * callback notification functions to be invoked whenever the - * specified event happens. The maximum number of queued - * notifications (queue length) is per client; the queue is shared - * across all types of notifications. So a slow client that registers - * for @a outbound_notify also risks missing @a inbound_notify messages. - * Certain events (such as connect/disconnect notifications) are not - * subject to queue size limitations. - * - * @param cfg configuration to use - * @param cls closure for the various callbacks that follow (including handlers in the handlers array) - * @param init callback to call once we have successfully - * connected to the core service - * @param connects function to call on peer connect, can be NULL - * @param disconnects function to call on peer disconnect / timeout, can be NULL - * @param handlers callbacks for messages we care about, NULL-terminated - * note that the core is allowed to drop notifications about inbound - * messages if the client does not process them fast enough (for this - * notification type, a bounded queue is used) - * @return handle to the core service (only useful for disconnect until @a init is called), - * NULL on error (in this case, init is never called) - */ -struct GNUNET_CORE_Handle * -GNUNET_CORE_connecT (const struct GNUNET_CONFIGURATION_Handle *cfg, - void *cls, - GNUNET_CORE_StartupCallback init, - GNUNET_CORE_ConnecTEventHandler connects, - GNUNET_CORE_DisconnecTEventHandler disconnects, const struct GNUNET_MQ_MessageHandler *handlers); @@ -297,7 +163,7 @@ GNUNET_CORE_connecT (const struct GNUNET_CONFIGURATION_Handle *cfg, * @param handle connection to core to disconnect */ void -GNUNET_CORE_disconnecT (struct GNUNET_CORE_Handle *handle); +GNUNET_CORE_disconnect (struct GNUNET_CORE_Handle *handle); /** @@ -305,7 +171,7 @@ GNUNET_CORE_disconnecT (struct GNUNET_CORE_Handle *handle); * so that it is transmitted with the given @a priority and * the given @a cork value. * - * @param cork desired corking + * @param cork desired corking * @param priority desired message priority * @param[out] flags set to `flags` value for #GNUNET_MQ_set_options() * @return `extra` argument to give to #GNUNET_MQ_set_options() @@ -320,7 +186,7 @@ GNUNET_CORE_get_mq_options (int cork, * Obtain the message queue for a connected peer. * * @param h the core handle - * @param pid the identity of the peer + * @param pid the identity of the peer * @return NULL if @a pid is not connected */ struct GNUNET_MQ_Handle * @@ -328,57 +194,6 @@ GNUNET_CORE_get_mq (const struct GNUNET_CORE_Handle *h, const struct GNUNET_PeerIdentity *pid); -/** - * Handle for a transmission request. - */ -struct GNUNET_CORE_TransmitHandle; - - -/** - * Ask the core to call @a notify once it is ready to transmit the - * given number of bytes to the specified @a target. Must only be - * called after a connection to the respective peer has been - * established (and the client has been informed about this). You may - * have one request of this type pending for each connected peer at - * any time. If a peer disconnects, the application MUST call - * #GNUNET_CORE_notify_transmit_ready_cancel() on the respective - * transmission request, if one such request is pending. - * - * @param handle connection to core service - * @param cork is corking allowed for this transmission? - * @param priority how important is the message? - * @param maxdelay how long can the message wait? Only effective if @a cork is #GNUNET_YES - * @param target who should receive the message, never NULL (can be this peer's identity for loopback) - * @param notify_size how many bytes of buffer space does @a notify want? - * @param notify function to call when buffer space is available; - * will be called with NULL on timeout; clients MUST cancel - * all pending transmission requests DURING the disconnect - * handler - * @param notify_cls closure for @a notify - * @return non-NULL if the notify callback was queued, - * NULL if we can not even queue the request (request already pending); - * if NULL is returned, @a notify will NOT be called. - */ -struct GNUNET_CORE_TransmitHandle * -GNUNET_CORE_notify_transmit_ready (struct GNUNET_CORE_Handle *handle, - int cork, - enum GNUNET_CORE_Priority priority, - struct GNUNET_TIME_Relative maxdelay, - const struct GNUNET_PeerIdentity *target, - size_t notify_size, - GNUNET_CONNECTION_TransmitReadyNotify notify, - void *notify_cls); - - -/** - * Cancel the specified transmission-ready notification. - * - * @param th handle that was returned by #GNUNET_CORE_notify_transmit_ready(). - */ -void -GNUNET_CORE_notify_transmit_ready_cancel (struct GNUNET_CORE_TransmitHandle *th); - - /** * Handle to a CORE monitoring operation. */ @@ -403,7 +218,7 @@ enum GNUNET_CORE_KxState /** * No handshake yet. */ - GNUNET_CORE_KX_STATE_DOWN, + GNUNET_CORE_KX_STATE_DOWN = 0, /** * We've sent our session key. @@ -417,7 +232,7 @@ enum GNUNET_CORE_KxState /** * The other peer has confirmed our session key + PING with a PONG - * message encrypted with his session key (which we got). Key + * message encrypted with their session key (which we got). Key * exchange is done. */ GNUNET_CORE_KX_STATE_UP,