Add callbacks for peer changes.
authorfredrik <fredrik@959494ce-11ee-0310-bf91-de5d638817bd>
Fri, 4 Nov 2005 01:54:42 +0000 (01:54 +0000)
committerfredrik <fredrik@959494ce-11ee-0310-bf91-de5d638817bd>
Fri, 4 Nov 2005 01:54:42 +0000 (01:54 +0000)
git-svn-id: svn+ssh://svn.dolda2000.com/srv/svn/repos/src/doldaconnect@444 959494ce-11ee-0310-bf91-de5d638817bd

include/doldaconnect/uimisc.h
lib/uimisc.c

index eafc66a..8043d8c 100644 (file)
@@ -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
index d989e1e..63c6fdb 100644 (file)
@@ -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;