]> rtime.felk.cvut.cz Git - frescor/forb.git/blob - peer.c
Added reference counting to peers.
[frescor/forb.git] / peer.c
1 #include "peer.h"
2 #include "misc.h"
3 #include "proto.h"
4
5 GAVL_CUST_NODE_INT_IMP(forb_peer_nolock,/* cust_prefix */
6                        forb_t,          /* cust_root_t */
7                        forb_peer_t,     /* cust_item_t */
8                        forb_server_id,  /* cust_key_t */
9                        peers,           /* cust_root_node */
10                        node,            /* cust_item_node */
11                        server_id,       /* cust_item_key */
12                        forb_server_id_cmp);/* cust_cmp_fnc */
13
14
15
16 forb_peer_t *
17 forb_peer_new(void)
18 {
19         forb_peer_t *peer;
20         
21         peer = forb_malloc(sizeof(*peer));
22         if (peer) {
23                 forb_ref_init(&peer->ref);
24         }
25         return peer;
26 }
27
28 void
29 forb_peer_release(forb_ref_t *ref)
30 {
31         forb_peer_t *peer = container_of(ref, forb_peer_t, ref);
32         if (peer->port->proto->peer_destroy) {
33                 peer->port->proto->peer_destroy(peer);
34         }
35         forb_free(peer);
36 }