/*
* 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
{
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;
+ 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 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 wcspair *args);
+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);
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 *);