00001 #if !defined(_CLUSTERS_H_)
00002 #define _CLUSTERS_H_
00003
00004 #include <apr.h>
00005 #include <apr_hash.h>
00006 #include <apr_network_io.h>
00007 #include "internal.h"
00008 #include "mystream.h"
00009
00010 #define NO_RESOLUTION -1
00011
00012 extern apr_hash_t *basic_clusters;
00013 extern apr_hash_t *adhoc_clusters;
00014
00015 void init_clusters(apr_hash_t **clusters);
00016 apr_hash_t *get_cluster(apr_hash_t *clusters, unsigned long r);
00017 p2p_connection_t *get_connection(apr_hash_t *clusters, unsigned long r, char *uuid);
00018 void add_connection(apr_hash_t *clusters, unsigned long r, p2p_connection_t *conn);
00019 void remove_connection(apr_hash_t *clusters, unsigned long r, p2p_connection_t *conn);
00020 void dump_clusters(mystream_t *mystream, apr_hash_t *clusters);
00021 void remove_all_connections(apr_hash_t *clusters);
00022 int is_in_cluster(int r, char *target_uuid);
00023 int send_msg_to_connections(p2p_connection_link_t *lst, apr_size_t *length, char *msg);
00024 int is_tunnel(unsigned long r);
00025 p2p_connection_t *create_connection
00026 (apr_socket_t *sock, char *uuidstr, char *ipaddr, int port, int is_tunnel, int r);
00027
00028 #endif