Clarified the dscp-tos documentation a bit.
[doldaconnect.git] / daemon / filenet.h
index 8e3da7b..ffb2acb 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *  Dolda Connect - Modular multiuser Direct Connect-style client
- *  Copyright (C) 2004 Fredrik Tolf (fredrik@dolda2000.com)
+ *  Copyright (C) 2004 Fredrik Tolf <fredrik@dolda2000.com>
  *  
  *  This program is free software; you can redistribute it and/or modify
  *  it under the terms of the GNU General Public License as published by
 #define FNN_EST 2
 #define FNN_DEAD 3
 
+#define FNNS_PUB 0
+#define FNNS_REG 1
+#define FNNS_OP 2
+
 #define FNPD_INT 0
 #define FNPD_LL 1
 #define FNPD_STR 2
@@ -40,13 +44,13 @@ struct fnet
 {
     struct fnet *next;
     wchar_t *name;
-    void (*connect)(struct fnetnode *fn);
+    void (*connect)(struct fnetnode *fn, struct socket *sk);
     void (*destroy)(struct fnetnode *fn);
+    void (*kill)(struct fnetnode *fn);
     int (*setnick)(struct fnetnode *fn, wchar_t *newnick);
     int (*reqconn)(struct fnetpeer *peer);
     int (*sendchat)(struct fnetnode *fn, int public, wchar_t *to, wchar_t *string);
     int (*search)(struct fnetnode *fn, struct search *srch, struct srchfnnlist *ln);
-    wchar_t *(*filebasename)(wchar_t *filename);
 };
 
 struct fnetpeerdatum
@@ -70,7 +74,6 @@ struct fnetpeerdi
 
 struct fnetpeer
 {
-    struct fnetpeer *next, *prev;
     struct fnetnode *fn;
     wchar_t *id;
     wchar_t *nick;
@@ -94,19 +97,25 @@ struct fnetnode
     int id;
     int state;
     int linked;
+    int regstatus;
+    int connected;
     time_t srchwait, lastsrch;
-    wchar_t *name;
+    wchar_t *name, *pubid;
     wchar_t *mynick;
+    wchar_t *owner;
     struct fnet *fnet;
-    struct socket *sk;
     struct fnetpeerdatum *peerdata;
-    struct fnetpeer *peers;
+    struct btree *peers;
+    struct wcspair *args;
+    int numpeers;
+    void *data;
     CBCHAIN(fnetnode_ac, struct fnetnode *fn, wchar_t *attrib);
     CBCHAIN(fnetnode_chat, struct fnetnode *fn, int public, wchar_t *name, wchar_t *peer, wchar_t *string);
     CBCHAIN(fnetnode_unlink, struct fnetnode *fn);
     CBCHAIN(fnetnode_destroy, struct fnetnode *fn);
-    int numpeers;
-    void *data;
+    CBCHAIN(fnetpeer_new, struct fnetnode *fn, struct fnetpeer *peer);
+    CBCHAIN(fnetpeer_del, struct fnetnode *fn, struct fnetpeer *peer);
+    CBCHAIN(fnetpeer_chdi, struct fnetnode *fn, struct fnetpeer *peer, struct fnetpeerdi *di);
 };
 
 void regfnet(struct fnet *fnet);
@@ -114,7 +123,7 @@ void fnetsetname(struct fnetnode *fn, wchar_t *newname);
 void fnetsetstate(struct fnetnode *fn, int newstate);
 int fnetsetnick(struct fnetnode *fn, wchar_t *newnick);
 struct fnet *findfnet(wchar_t *name);
-struct fnetnode *fnetinitconnect(wchar_t *name, char *addr);
+struct fnetnode *fnetinitconnect(wchar_t *name, wchar_t *owner, char *addr, struct wcspair *args);
 void linkfnetnode(struct fnetnode *fn);
 void unlinkfnetnode(struct fnetnode *fn);
 void getfnetnode(struct fnetnode *fn);
@@ -122,6 +131,7 @@ void putfnetnode(struct fnetnode *fn);
 void killfnetnode(struct fnetnode *fn);
 struct fnetpeer *fnetaddpeer(struct fnetnode *fn, wchar_t *id, wchar_t *nick);
 void fnetdelpeer(struct fnetpeer *peer);
+void fnetpeerdm(struct fnetnode *fn);
 struct fnetpeer *fnetfindpeer(struct fnetnode *fn, wchar_t *id);
 void fnetpeersetstr(struct fnetpeer *peer, wchar_t *id, wchar_t *value);
 void fnetpeersetnum(struct fnetpeer *peer, wchar_t *id, int value);
@@ -131,6 +141,7 @@ struct fnetnode *findfnetnode(int id);
 void fnethandlechat(struct fnetnode *fn, int public, wchar_t *name, wchar_t *peer, wchar_t *chat);
 int fnetsendchat(struct fnetnode *fn, int public, wchar_t *to, wchar_t *string);
 int fnetsearch(struct fnetnode *fn, struct search *srch, struct srchfnnlist *ln);
+wchar_t *fnfilebasename(wchar_t *path);
 
 extern struct fnetnode *fnetnodes;
 EGCBCHAIN(newfncb, struct fnetnode *);