Don't use charsets by default (#117).
[jelmer/ctrlproxy.git] / src / network.h
index d1bf363765585528fb4fefbe1a17871bb574f73e..a14d093b2f88ac5bf47170973aa82b81b7a55be9 100644 (file)
 #endif
 
 #include "state.h"
+#include "isupport.h"
+#include <sys/socket.h>
+
+#define DEFAULT_NETWORK_CHARSET NULL
 
 struct global;
 struct network;
@@ -51,20 +55,23 @@ struct network_connection {
        enum network_connection_state state;
 
        time_t last_line_sent;
+       time_t last_line_recvd;
        GQueue *pending_lines;
 
        GIOChannel *outgoing;
-       GIOChannel *unix_incoming;
        gint outgoing_id;
        gint incoming_id;
-       gint unix_incoming_id;
+       GIConv outgoing_iconv;
+       GIConv incoming_iconv;
 
        union { 
                struct {
                        struct tcp_server_config *current_server;
                        struct sockaddr *remote_name;
                        struct sockaddr *local_name;
-                       size_t namelen;
+                       socklen_t namelen;
+                       char *last_disconnect_reason;
+                       gint ping_id;
                } tcp;
                
                struct {
@@ -83,7 +90,6 @@ struct network_connection {
  * An IRC network
  */
 struct network {
-       char *name;
        struct global *global;
        struct network_config *config;
 
@@ -99,6 +105,7 @@ struct network {
 };
 
 /* server.c */
+G_MODULE_EXPORT gboolean network_set_charset(struct network *n, const char *name);
 G_MODULE_EXPORT struct network *find_network_by_hostname(struct global *global, const char *host, guint16 port, gboolean create);
 G_MODULE_EXPORT gboolean load_networks(struct global *, struct ctrlproxy_config *cfg);
 G_MODULE_EXPORT gboolean autoconnect_networks(struct global *);
@@ -107,15 +114,18 @@ G_MODULE_EXPORT void unload_network(struct network *);
 G_MODULE_EXPORT gboolean connect_network(struct network *);
 G_MODULE_EXPORT void network_select_next_server(struct network *n);
 G_MODULE_EXPORT gboolean disconnect_network(struct network *s);
-G_MODULE_EXPORT void clients_send(struct network *, struct line *, const struct client *exception);
-G_MODULE_EXPORT gboolean network_send_line(struct network *s, struct client *c, const struct line *);
+G_MODULE_EXPORT void clients_send(GList *clients, struct line *, const struct client *exception);
+G_MODULE_EXPORT void clients_send_args_ex(GList *clients, const char *hostmask, ...);
+G_MODULE_EXPORT gboolean network_send_line(struct network *s, struct client *c, const struct line *, gboolean);
 G_MODULE_EXPORT gboolean network_send_args(struct network *s, ...);
 G_MODULE_EXPORT void register_virtual_network(struct virtual_network_ops *);
 G_MODULE_EXPORT struct network *find_network(struct global *, const char *);
 G_MODULE_EXPORT gboolean virtual_network_recv_line(struct network *l, struct line *);
 G_MODULE_EXPORT gboolean virtual_network_recv_args(struct network *l, const char *origin, ...); 
+G_MODULE_EXPORT gboolean virtual_network_recv_response(struct network *n, int num, ...);
 typedef void (*new_network_notify_fn) (struct network *, void *);
 G_MODULE_EXPORT void register_new_network_notify(struct global *, new_network_notify_fn, void *userdata);
 G_MODULE_EXPORT struct linestack_context *new_linestack(struct network *network);
+char *network_generate_feature_string(struct network *n);
 
 #endif /* __CTRLPROXY_NETWORK_H__ */