From: Bart Polot Date: Fri, 8 Apr 2011 01:01:18 +0000 (+0000) Subject: Work in progress X-Git-Tag: initial-import-from-subversion-38251~18737 X-Git-Url: https://git.librecmc.org/?a=commitdiff_plain;h=612f0fee557bddd00245a67726aa3c978c07f5c8;p=oweals%2Fgnunet.git Work in progress --- diff --git a/src/include/gnunet_mesh_service_new.h b/src/include/gnunet_mesh_service_new.h index 4dd738327..3a0aa9507 100644 --- a/src/include/gnunet_mesh_service_new.h +++ b/src/include/gnunet_mesh_service_new.h @@ -73,7 +73,8 @@ typedef int void **tunnel_ctx, const struct GNUNET_PeerIdentity *sender, const struct GNUNET_MessageHeader *message, - const struct GNUNET_TRANSPORT_ATS_Information *atsi); + const struct GNUNET_TRANSPORT_ATS_Information + *atsi); /** @@ -108,10 +109,12 @@ struct GNUNET_MESH_MessageHandler * * @param cls closure (set from GNUNET_MESH_connect) * @param tunnel connection to the other end (henceforth invalid) - * @param tunnel_ctx place where local state associated with the tunnel is stored + * @param tunnel_ctx place where local state associated + * with the tunnel is stored */ typedef void (GNUNET_MESH_TunnelEndHandler)(void *cls, - const struct GNUNET_MESH_Tunnel *tunnel, + const struct GNUNET_MESH_Tunnel + *tunnel, void **tunnel_ctx); @@ -125,14 +128,15 @@ 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) + * @param cls closure for the various callbacks that follow + * (including handlers in the handlers array) * @param cleaner function called when an *inbound* tunnel is destroyed * @param handlers callbacks for messages we care about, NULL-terminated - * note that the mesh 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 mesh service - * NULL on error (in this case, init is never called) + * note that the mesh 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 mesh service NULL on error + * (in this case, init is never called) */ struct GNUNET_MESH_Handle * GNUNET_MESH_connect (const struct GNUNET_CONFIGURATION_Handle *cfg, @@ -157,7 +161,7 @@ void GNUNET_MESH_disconnect (struct GNUNET_MESH_Handle *handle); * @param peer peer identity the tunnel stopped working with */ typedef void (*GNUNET_MESH_TunnelDisconnectHandler) (void *cls, - const struct GNUNET_PeerIdentity *peer); + const struct GNUNET_PeerIdentity *peer); /** @@ -168,14 +172,14 @@ typedef void (*GNUNET_MESH_TunnelDisconnectHandler) (void *cls, * @param atsi performance data for the connection */ typedef void (*GNUNET_MESH_TunnelConnectHandler) (void *cls, - const struct GNUNET_PeerIdentity *peer, - const struct GNUNET_TRANSPORT_ATS_Information *atsi); + const struct GNUNET_PeerIdentity *peer, + const struct GNUNET_TRANSPORT_ATS_Information *atsi); /** - * Create a new tunnel (we're initiator and will be allowed to add/remove peers and - * to broadcast). + * Create a new tunnel (we're initiator and will be allowed to add/remove peers + * and to broadcast). * * @param h mesh handle * @param connect_handler function to call when peers are actually connected @@ -184,9 +188,11 @@ typedef void (*GNUNET_MESH_TunnelConnectHandler) (void *cls, */ struct GNUNET_MESH_Tunnel * GNUNET_MESH_tunnel_create (struct GNUNET_MESH_Handle *h, - GNUNET_MESH_TunnelConnectHandler connect_handler, - GNUNET_MESH_TunnelDisconnectHandler disconnect_handler, - void *handler_cls); + GNUNET_MESH_TunnelConnectHandler + connect_handler, + GNUNET_MESH_TunnelDisconnectHandler + disconnect_handler, + void *handler_cls); /** * Destroy an existing tunnel. @@ -229,8 +235,8 @@ GNUNET_MESH_peer_request_connect_del (struct GNUNET_MESH_Tunnel *tunnel, * * @param tunnel handle to existing tunnel * @param timeout how long to try to establish a connection - * @param app_type application type that must be supported by the peer (MESH should - * discover peer in proximity handling this type) + * @param app_type application type that must be supported by the peer + * (MESH should discover peer in proximity handling this type) */ void GNUNET_MESH_peer_request_connect_by_type (struct GNUNET_MESH_Tunnel *tunnel, @@ -254,7 +260,8 @@ struct GNUNET_MESH_TransmitHandle; * @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 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 diff --git a/src/mesh/gnunet-service-mesh.c b/src/mesh/gnunet-service-mesh.c index 145807338..f6be64457 100644 --- a/src/mesh/gnunet-service-mesh.c +++ b/src/mesh/gnunet-service-mesh.c @@ -279,6 +279,7 @@ struct Path }; +struct Client; /* FWD declaration */ /** * Struct containing all information regarding a tunnel * For an intermediate node the improtant info used will be: @@ -337,6 +338,11 @@ struct MESH_tunnel */ struct Path *paths; + /** + * If this tunnel was created by a local client, what's its handle? + */ + struct Client *client; + /** * Messages ready to transmit??? -- FIXME real queues needed */ @@ -347,10 +353,6 @@ struct MESH_tunnel */ struct GNUNET_MessageHeader *msg_in; - /** - * If this tunnel was created by a local client, what's its handle? - */ - struct GNUNET_SERVER_Client *initiator; }; /** @@ -391,8 +393,8 @@ struct Client /** * All the clients */ -// static struct Client clients_head; -// static struct Client clients_tail; +//static struct Client clients_head; +//static struct Client clients_tail; /** * All the tunnels @@ -522,7 +524,20 @@ handle_local_new_client (void *cls, struct GNUNET_SERVER_Client *client, const struct GNUNET_MessageHeader *message) { - return; + struct Client *c; + c = GNUNET_malloc(sizeof(struct Client)); + c->handle = client; + //c->messages_subscribed = message->; + + /*client *c; + tunnel *t; + + t = new; + GNUNET_CONTAINER_DLL_insert (c->my_tunnels_head, + c->my_tunnels_tail, + t);*/ + + } /** @@ -558,29 +573,23 @@ handle_local_network_traffic (void *cls, /** * Functions to handle messages from clients */ -/* MESSAGES DEFINED: -#define GNUNET_MESSAGE_TYPE_MESH_LOCAL_CONNECT 272 -#define GNUNET_MESSAGE_TYPE_MESH_LOCAL_CONNECT_PEER_ANY 273 -#define GNUNET_MESSAGE_TYPE_MESH_LOCAL_CONNECT_PEER_ALL 274 -#define GNUNET_MESSAGE_TYPE_MESH_LOCAL_CONNECT_PEER_ADD 275 -#define GNUNET_MESSAGE_TYPE_MESH_LOCAL_CONNECT_PEER_DEL 276 -#define GNUNET_MESSAGE_TYPE_MESH_LOCAL_CONNECT_PEER_BY_TYPE 277 -#define GNUNET_MESSAGE_TYPE_MESH_LOCAL_CONNECT_PEER_CANCEL 278 -#define GNUNET_MESSAGE_TYPE_MESH_LOCAL_TRANSMIT_READY 279 -#define GNUNET_MESSAGE_TYPE_MESH_LOCAL_TUNNEL_CREATED 280 -#define GNUNET_MESSAGE_TYPE_MESH_LOCAL_TUNNEL_DESTROYED 281 -#define GNUNET_MESSAGE_TYPE_MESH_LOCAL_DATA 282 -#define GNUNET_MESSAGE_TYPE_MESH_LOCAL_DATA_BROADCAST 283 - */ static struct GNUNET_SERVER_MessageHandler plugin_handlers[] = { {&handle_local_new_client, NULL, GNUNET_MESSAGE_TYPE_MESH_LOCAL_CONNECT, 0}, - {&handle_local_connect, NULL, GNUNET_MESSAGE_TYPE_MESH_LOCAL_CONNECT_PEER_ADD, 0}, - {&handle_local_connect, NULL, GNUNET_MESSAGE_TYPE_MESH_LOCAL_CONNECT_PEER_DEL, 0}, - {&handle_local_connect, NULL, GNUNET_MESSAGE_TYPE_MESH_LOCAL_CONNECT_PEER_BY_TYPE, sizeof(struct GNUNET_MESH_ConnectPeerByType)}, - {&handle_local_connect, NULL, GNUNET_MESSAGE_TYPE_MESH_LOCAL_CONNECT_PEER_CANCEL, 0}, - {&handle_local_network_traffic, NULL, GNUNET_MESSAGE_TYPE_MESH_LOCAL_TRANSMIT_READY, 0}, - {&handle_local_network_traffic, NULL, GNUNET_MESSAGE_TYPE_MESH_LOCAL_DATA, 0}, /* FIXME needed? */ - {&handle_local_network_traffic, NULL, GNUNET_MESSAGE_TYPE_MESH_LOCAL_DATA_BROADCAST, 0}, /* FIXME needed? */ + {&handle_local_connect, NULL, + GNUNET_MESSAGE_TYPE_MESH_LOCAL_CONNECT_PEER_ADD, 0}, + {&handle_local_connect, NULL, + GNUNET_MESSAGE_TYPE_MESH_LOCAL_CONNECT_PEER_DEL, 0}, + {&handle_local_connect, NULL, + GNUNET_MESSAGE_TYPE_MESH_LOCAL_CONNECT_PEER_BY_TYPE, + sizeof(struct GNUNET_MESH_ConnectPeerByType)}, + {&handle_local_connect, NULL, + GNUNET_MESSAGE_TYPE_MESH_LOCAL_CONNECT_PEER_CANCEL, 0}, + {&handle_local_network_traffic, NULL, + GNUNET_MESSAGE_TYPE_MESH_LOCAL_TRANSMIT_READY, 0}, + {&handle_local_network_traffic, NULL, + GNUNET_MESSAGE_TYPE_MESH_LOCAL_DATA, 0}, /* FIXME needed? */ + {&handle_local_network_traffic, NULL, + GNUNET_MESSAGE_TYPE_MESH_LOCAL_DATA_BROADCAST, 0}, /* FIXME needed? */ {NULL, NULL, 0, 0} }; @@ -678,12 +687,13 @@ run (void *cls, int main (int argc, char *const *argv) { - int ret; - - ret = (GNUNET_OK == - GNUNET_SERVICE_run (argc, - argv, - "mesh", - GNUNET_SERVICE_OPTION_NONE, &run, NULL)) ? 0 : 1; - return ret; -} + int ret; + + ret = (GNUNET_OK == + GNUNET_SERVICE_run (argc, + argv, + "mesh", + GNUNET_SERVICE_OPTION_NONE, + &run, NULL)) ? 0 : 1; + return ret; + }