* @param cls closure (set from GNUNET_MESH_connect)
* @param tunnel connection to the other end
* @param tunnel_ctx place to store local state associated with the tunnel
+ * @param sender who sent the message
* @param message the actual message
* @param atsi performance data for the connection
* @return GNUNET_OK to keep the connection open,
*/
typedef int
(*GNUNET_MESH_MessageCallback) (void *cls,
- const struct GNUNET_MESH_Tunnel *tunnel,
+ struct GNUNET_MESH_Tunnel *tunnel,
void **tunnel_ctx,
+ const struct GNUNET_PeerIdentity *sender,
const struct GNUNET_MessageHeader *message,
const struct GNUNET_TRANSPORT_ATS_Information *atsi);
/**
- * Connect to the mesh service.
+ * Type for an application. Values defined in gnunet_applications.h
+ */
+typedef uint32_t GNUNET_MESH_ApplicationType;
+
+
+/**
+ * Connect to the mesh service.
*
* @param cfg configuration to use
* @param cls closure for the various callbacks that follow (including handlers in the handlers array)
GNUNET_MESH_connect (const struct GNUNET_CONFIGURATION_Handle *cfg,
void *cls,
GNUNET_MESH_TunnelEndHandler cleaner,
- const struct GNUNET_MESH_MessageHandler *handlers);
+ const struct GNUNET_MESH_MessageHandler *handlers,
+ const GNUNET_MESH_ApplicationType *stypes);
+
+/**
+ * Get the peer on the other side of this tunnel if it is just one. Return NULL otherwise
+ *
+ * @param tunnel the tunnel
+ * @return the peer or NULL
+ */
+const struct GNUNET_PeerIdentity*
+GNUNET_MESH_get_peer(const struct GNUNET_MESH_Tunnel* tunnel);
/**
*
* @param h mesh handle
* @param timeout how long to try to establish a connection
- * @param num_peers length of the peers arrray
+ * @param num_peers length of the peers array
* @param peers list of candidates to connect to
* @param connect_handler function to call on successful connect (or timeout)
* @param disconnect_handler function to call on disconnect
*
* @param h mesh handle
* @param timeout how long to try to establish a connection
- * @param num_peers length of the peers arrray
+ * @param num_peers length of the peers array
* @param peers list of candidates to connect to
* @param connect_handler function to call on successful connect (or timeout);
* will be called for EACH of the peers in the list and
const struct GNUNET_PeerIdentity *peer);
+/**
+ * Request that a peer should be removed from the tunnel. The existing
+ * disconnect handler will be called ONCE if we were connected.
+ *
+ * @param tunnel handle to existing tunnel
+ * @param peer peer to remove
+ */
+void
+GNUNET_MESH_peer_request_connect_del (struct GNUNET_MESH_Tunnel *tunnel,
+ const struct GNUNET_PeerIdentity *peer);
+
+
/**
* Request that the mesh should try to connect to a peer supporting the given
* message type.
*
* @param h mesh handle
* @param timeout how long to try to establish a connection
- * @param message_type message type that must be supported by the peer (MESH should
+ * @param app_type application type that must be supported by the peer (MESH should
* discover peer in proximity handling this type)
* @param connect_handler function to call on successful connect (or timeout);
* will be called for EACH of the peers in the list and
struct GNUNET_MESH_Tunnel *
GNUNET_MESH_peer_request_connect_by_type (struct GNUNET_MESH_Handle *h,
struct GNUNET_TIME_Relative timeout,
- uint16_t message_type,
+ GNUNET_MESH_ApplicationType app_type,
GNUNET_MESH_TunnelConnectHandler connect_handler,
GNUNET_MESH_TunnelDisconnectHandler disconnect_handler,
void *handler_cls);
* @param cork is corking allowed for this transmission?
* @param priority how important is the message?
* @param maxdelay how long can the message wait?
+ * @param target destination for the message, NULL for multicast to all tunnel targets
* @param notify_size how many bytes of buffer space does notify want?
* @param notify function to call when buffer space is available;
* will be called with NULL on timeout or if the overall queue
struct
GNUNET_TIME_Relative
maxdelay,
+ const struct GNUNET_PeerIdentity *target,
size_t
notify_size,
GNUNET_CONNECTION_TransmitReadyNotify