00001
00002
00003
00004
00005
00006
00007 #ifndef _CHIMERA_H_
00008 #define _CHIMERA_H_
00009
00010 #include "host.h"
00011 #include "key.h"
00012 #include "log.h"
00013 #include <pthread.h>
00014 #include "message.h"
00015
00016 typedef void (*chimera_forward_upcall_t)(Key **, Message **, ChimeraHost **);
00017 typedef void (*chimera_deliver_upcall_t)(Key *, Message *);
00018 typedef void (*chimera_update_upcall_t)(Key *, ChimeraHost *, int);
00019
00025 ChimeraState *chimera_init(int port);
00026
00031 void chimera_join(ChimeraState *state,ChimeraHost *bootstrap);
00032
00038 void chimera_route(ChimeraState *state, Key *key, Message *msg, ChimeraHost *hint);
00039
00046 void chimera_forward(ChimeraState *state, chimera_forward_upcall_t func);
00047
00053 void chimera_deliver(ChimeraState *state,chimera_deliver_upcall_t func);
00054
00060 void chimera_update(ChimeraState *state,chimera_update_upcall_t func);
00061
00065 void chimera_setkey(ChimeraState *state,Key key);
00066
00070 void chimera_register(ChimeraState *state, int type);
00071
00077 void chimera_send(ChimeraState *state, Key key, int type, int len, char *data);
00078
00083 int chimera_ping(ChimeraState *state,ChimeraHost *host);
00084
00085 #endif
00086