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);
/**
*
* @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);
* 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,
* @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);
/**
* @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
*/
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.
*
* @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,
* @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
};
+struct Client; /* FWD declaration */
/**
* Struct containing all information regarding a tunnel
* For an intermediate node the improtant info used will be:
*/
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
*/
*/
struct GNUNET_MessageHeader *msg_in;
- /**
- * If this tunnel was created by a local client, what's its handle?
- */
- struct GNUNET_SERVER_Client *initiator;
};
/**
/**
* 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
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);*/
+
+
}
/**
/**
* 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}
};
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;
+ }