00001 #if !defined(_SUMALIB_H_)
00002 #define _SUMALIB_H_
00003
00004 #include <stdarg.h>
00005 #include <apr_uuid.h>
00006 #include "mystream.h"
00007
00008 #define P2P_LOG_ERROR 1
00009 #define P2P_LOG_INFO 2
00010 #define P2P_LOG_DEBUG 3
00011
00012
00013
00014 void p2p_log(int level, char *fmt, ...);
00015 void p2p_show_loglevel(mystream_t *mystream, char **argv, char *rest);
00016 void p2p_set_loglevel(mystream_t *mystream, char **argv, char *rest);
00017
00018 #define P2P_UUID_FORMATTED_LENGTH APR_UUID_FORMATTED_LENGTH
00019 typedef apr_uuid_t p2p_uuid_t;
00020 extern p2p_uuid_t uuid;
00021 void p2p_uuid_format(char *buffer, const p2p_uuid_t *uuid);
00022
00023 typedef struct {
00024 unsigned int n_dst;
00025 char uuids[0][P2P_UUID_FORMATTED_LENGTH + 1];
00026 } p2p_destinations_t;
00027
00028 typedef struct p2p_channel_s p2p_channel_t;
00029
00030 p2p_channel_t *p2p_create_broadcast_channel(unsigned int service_port);
00031 p2p_channel_t *p2p_create_multicast_channel(unsigned int service_port, p2p_destinations_t *dst);
00032 p2p_channel_t *p2p_create_unicast_channel(unsigned int service_port, char* dst_uuid);
00033 int p2p_init(int argc, char *argv[], char *entry_points_ip_addrs[]);
00034 int p2p_write(p2p_channel_t *chann, char *body, int len);
00035 int p2p_read(p2p_channel_t *chann, char *msg, int len);
00036 int p2p_close_channel(p2p_channel_t *chann);
00037 int p2p_register_response_callback(int service_port, int (*handler)(p2p_channel_t *));
00038 int p2p_register_shutdown_callback
00039 (int service_port,
00040 int (*handler)(p2p_channel_t *)
00041 );
00042 void p2p_list_connections(mystream_t *mystream, char **argv, char *rest);
00043 void p2p_list_channels(mystream_t *mystream, char **argv, char *rest);
00044 int p2p_shutdown();
00045
00046 #endif