1 #ifndef __SILC_SERVER_H
2 #define __SILC_SERVER_H
4 #include "chat-protocols.h"
7 /* returns SILC_SERVER_REC if it's SILC server, NULL if it isn't */
8 #define SILC_SERVER(server) \
9 PROTO_CHECK_CAST(SERVER(server), SILC_SERVER_REC, chat_type, "SILC")
10 #define SILC_SERVER_CONNECT(conn) \
11 PROTO_CHECK_CAST(SERVER_CONNECT(conn), SILC_SERVER_CONNECT_REC, \
13 #define IS_SILC_SERVER(server) \
14 (SILC_SERVER(server) ? TRUE : FALSE)
15 #define IS_SILC_SERVER_CONNECT(conn) \
16 (SILC_SERVER_CONNECT(conn) ? TRUE : FALSE)
18 /* all strings should be either NULL or dynamically allocated */
19 /* address and nick are mandatory, rest are optional */
21 #include "server-connect-rec.h"
22 } SILC_SERVER_CONNECT_REC;
25 SilcClientEntry client_entry;
26 SilcClientConnection conn;
27 SilcUInt32 session_id;
31 long starttime; /* Start time of transfer */
32 double kps; /* Kilos per second */
33 SilcUInt64 offset; /* Current offset */
34 SilcUInt64 filesize; /* Total file size */
35 SilcUInt32 percent; /* Percent of current transmission */
38 #define STRUCT_SERVER_CONNECT_REC SILC_SERVER_CONNECT_REC
40 #include "server-rec.h"
42 SilcDList ftp_sessions;
43 FtpSession current_session;
46 SilcClientConnection conn;
47 SilcAsyncOperation op; /* Key exchange operation handle */
48 SilcAsyncOperation tcp_op; /* TCP stream creation operation handle */
52 SERVER_REC *silc_server_init_connect(SERVER_CONNECT_REC *conn);
53 void silc_server_connect(SERVER_REC *server);
55 /* Return a string of all channels in server in server->channels_join()
57 char *silc_server_get_channels(SILC_SERVER_REC *server);
58 void silc_command_exec(SILC_SERVER_REC *server,
59 const char *command, const char *args);
60 void silc_server_init(void);
61 void silc_server_deinit(void);
62 void silc_server_free_ftp(SILC_SERVER_REC *server,
63 SilcClientEntry client_entry);
64 bool silc_term_utf8(void);
66 int silc_send_msg(SILC_SERVER_REC *server, char *nick, char *msg,
67 int msg_len, SilcMessageFlags flags);
68 int silc_send_channel(SILC_SERVER_REC *server,
69 char *channel, char *msg,
70 SilcMessageFlags flags);