From d0701eb6315fc3f5aca74415bbf0ff7418409f87 Mon Sep 17 00:00:00 2001 From: Christian Grothoff Date: Mon, 25 Jul 2016 00:30:00 +0000 Subject: switching transport tests to new MQ-based transport API --- src/include/Makefile.am | 5 + src/include/gnunet_transport_core_service.h | 5 +- .../gnunet_transport_manipulation_service.h | 113 +++++++++++++++++++++ 3 files changed, 122 insertions(+), 1 deletion(-) create mode 100644 src/include/gnunet_transport_manipulation_service.h (limited to 'src/include') diff --git a/src/include/Makefile.am b/src/include/Makefile.am index 0faec4cfc..0ba6f8c74 100644 --- a/src/include/Makefile.am +++ b/src/include/Makefile.am @@ -118,6 +118,11 @@ gnunetinclude_HEADERS = \ gnunet_testing_lib.h \ gnunet_time_lib.h \ gnunet_transport_service.h \ + gnunet_transport_communication_service.h \ + gnunet_transport_core_service.h \ + gnunet_transport_hello_service.h \ + gnunet_transport_manipulation_service.h \ + gnunet_transport_monitor_service.h \ gnunet_transport_plugin.h \ gnunet_tun_lib.h \ gnunet_util_lib.h \ diff --git a/src/include/gnunet_transport_core_service.h b/src/include/gnunet_transport_core_service.h index 6dada4f54..941ef27e4 100644 --- a/src/include/gnunet_transport_core_service.h +++ b/src/include/gnunet_transport_core_service.h @@ -60,7 +60,10 @@ struct GNUNET_TRANSPORT_CoreHandle; * peer connected to us. * * @param cls closure - * @param peer the peer that connected + * @param peer the identity of the peer that connected; this + * pointer will remain valid until the disconnect, hence + * applications do not necessarily have to make a copy + * of the value if they only need it until disconnect * @param mq message queue to use to transmit to @a peer * @return closure to use in MQ handlers */ diff --git a/src/include/gnunet_transport_manipulation_service.h b/src/include/gnunet_transport_manipulation_service.h new file mode 100644 index 000000000..8c1789636 --- /dev/null +++ b/src/include/gnunet_transport_manipulation_service.h @@ -0,0 +1,113 @@ +/* + This file is part of GNUnet. + Copyright (C) 2009-2014, 2016 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 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. +*/ + +/** + * @author Christian Grothoff + * + * @file + * Low-level P2P IO + * + * @defgroup transport Transport service + * Low-level P2P IO + * + * @see [Documentation](https://gnunet.org/transport-service) + * + * @{ + */ + +#ifndef GNUNET_TRANSPORT_MANIPULATION_SERVICE_H +#define GNUNET_TRANSPORT_MANIPULATION_SERVICE_H + + +#ifdef __cplusplus +extern "C" +{ +#if 0 /* keep Emacsens' auto-indent happy */ +} +#endif +#endif + +#include "gnunet_util_lib.h" +#include "gnunet_ats_service.h" + +/** + * Version number of the transport API. + */ +#define GNUNET_TRANSPORT_MANIPULATION_VERSION 0x00000003 + +/** + * Handle for transport manipulation. + */ +struct GNUNET_TRANSPORT_ManipulationHandle; + + +/** + * Connect to the transport service. Note that the connection may + * complete (or fail) asynchronously. + * + * @param cfg configuration to use + * @return NULL on error + */ +struct GNUNET_TRANSPORT_ManipulationHandle * +GNUNET_TRANSPORT_manipulation_connect (const struct GNUNET_CONFIGURATION_Handle *cfg); + + +/** + * Disconnect from the transport service. + * + * @param handle handle returned from connect + */ +void +GNUNET_TRANSPORT_manipulation_disconnect (struct GNUNET_TRANSPORT_ManipulationHandle *handle); + + +/** + * Set transport metrics for a peer and a direction + * + * @param handle transport handle + * @param peer the peer to set the metric for + * @param prop the performance metrics to set + * @param delay_in inbound delay to introduce + * @param delay_out outbound delay to introduce + * + * Note: Delay restrictions in receiving direction will be enforced + * with one message delay. + */ +void +GNUNET_TRANSPORT_manipulation_set (struct GNUNET_TRANSPORT_ManipulationHandle *handle, + const struct GNUNET_PeerIdentity *peer, + const struct GNUNET_ATS_Properties *prop, + struct GNUNET_TIME_Relative delay_in, + struct GNUNET_TIME_Relative delay_out); + + +#if 0 /* keep Emacsens' auto-indent happy */ +{ +#endif +#ifdef __cplusplus +} +#endif + +/* ifndef GNUNET_TRANSPORT_MANIPULATION_SERVICE_H */ +#endif + +/** @} */ /* end of group */ + +/* end of gnunet_transport_manipulation_service.h */ -- cgit v1.2.3