From d4c5deab29eaaab4b40df157b41d712caa8b2209 Mon Sep 17 00:00:00 2001 From: fredrik Date: Fri, 4 Nov 2005 01:54:42 +0000 Subject: [PATCH] Add callbacks for peer changes. git-svn-id: svn+ssh://svn.dolda2000.com/srv/svn/repos/src/doldaconnect@444 959494ce-11ee-0310-bf91-de5d638817bd --- include/doldaconnect/uimisc.h | 3 +++ lib/uimisc.c | 12 +++++++++++- 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/include/doldaconnect/uimisc.h b/include/doldaconnect/uimisc.h index eafc66a..8043d8c 100644 --- a/include/doldaconnect/uimisc.h +++ b/include/doldaconnect/uimisc.h @@ -50,6 +50,9 @@ struct dc_fnetnode void *udata; struct dc_fnetpeer *peers; struct dc_fnetpeerdatum *peerdata; + void (*newpeercb)(struct dc_fnetpeer *peer); + void (*delpeercb)(struct dc_fnetpeer *peer); + void (*chpeercb)(struct dc_fnetpeer *peer); }; struct dc_fnetpeerdatum diff --git a/lib/uimisc.c b/lib/uimisc.c index d989e1e..63c6fdb 100644 --- a/lib/uimisc.c +++ b/lib/uimisc.c @@ -1218,14 +1218,22 @@ void dc_uimisc_handlenotify(struct dc_response *resp) if((fn = dc_findfnetnode(ires->argv[0].val.num)) != NULL) { if((peer = dc_fnetfindpeer(fn, ires->argv[1].val.str)) == NULL) - addpeer(fn, ires->argv[1].val.str, ires->argv[2].val.str); + { + peer = addpeer(fn, ires->argv[1].val.str, ires->argv[2].val.str); + if(fn->newpeercb != NULL) + fn->newpeercb(peer); + } } break; case 631: if((fn = dc_findfnetnode(ires->argv[0].val.num)) != NULL) { if((peer = dc_fnetfindpeer(fn, ires->argv[1].val.str)) != NULL) + { + if(fn->delpeercb != NULL) + fn->delpeercb(peer); delpeer(peer); + } } break; case 632: @@ -1253,6 +1261,8 @@ void dc_uimisc_handlenotify(struct dc_response *resp) break; } } + if(fn->chpeercb != NULL) + fn->chpeercb(peer); } } break; -- 2.11.0