{
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
struct fnetpeer
{
- struct fnetpeer *next, *prev;
struct fnetnode *fn;
wchar_t *id;
wchar_t *nick;
int state;
int linked;
int regstatus;
+ int connected;
time_t srchwait, lastsrch;
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;
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);
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 *);