From: Michal Sojka Date: Mon, 11 May 2009 01:28:32 +0000 (+0200) Subject: Added callback for peer discovery X-Git-Url: https://rtime.felk.cvut.cz/gitweb/frescor/forb.git/commitdiff_plain/59aba286c555f691c208ef0561bfaf1d97e3bd9d Added callback for peer discovery By using this callback, an application can react on peer discovery. Note: Peers are discovered by broadcasting "HELLO" packets. --- diff --git a/src/forb.h b/src/forb.h index 827c455..e8d227e 100644 --- a/src/forb.h +++ b/src/forb.h @@ -156,6 +156,9 @@ typedef struct forb_interface forb_interface_t; typedef struct forb_init_attr { char *orb_id; /**< Name of the FORB used for debugging purposes */ + void (*peer_discovery_callback)(const forb_orb peer_orb, const char *orb_id); + void (*peer_dead_callback)(const forb_orb peer_orb, const char *orb_id); + } forb_init_attr_t; /** diff --git a/src/iop.c b/src/iop.c index 2c3cdb4..620ae84 100644 --- a/src/iop.c +++ b/src/iop.c @@ -400,6 +400,11 @@ void new_peer_discovered(forb_port_t *port, forb_peer_t *peer, forb_server_id_to_string(str, &peer->server_id, sizeof(str)), orb_id); } + if (forb->attr.peer_discovery_callback) { + forb_orb peer_orb = forb_object_new(forb->orb, &peer->server_id, 0); + forb->attr.peer_discovery_callback(peer_orb, orb_id); + forb_object_release(peer_orb); + } forb_peer_put(peer); /* Broadcast our hello packet now */