loudmouth/inc/lm-internals.h
changeset 0 d0f3a028347a
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/loudmouth/inc/lm-internals.h	Tue Feb 02 01:10:06 2010 +0200
@@ -0,0 +1,117 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * Copyright (C) 2003 Imendio AB
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this program; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ */
+
+/* Private functions that are internal to the library */
+
+#ifndef __LM_INTERNALS_H__
+#define __LM_INTERNALS_H__
+
+#include <glib.h>
+
+#include <sys/types.h>
+
+#include "lm-message.h"
+#include "lm-message-handler.h"
+#include "lm-message-node.h"
+#include "lm-sock.h"
+#include "lm-socket.h"
+
+#ifndef G_OS_WIN32
+typedef int LmSocketT;
+#else  /* G_OS_WIN32 */
+typedef SOCKET LmSocketT;
+#endif /* G_OS_WIN32 */
+
+typedef struct {
+	gpointer       func;
+	gpointer       user_data;
+	GDestroyNotify notify;
+} LmCallback;
+
+typedef struct {
+	LmConnection *connection;
+	LmSocket *socket;
+
+	/* struct to save resolved address */
+	struct addrinfo *resolved_addrs;
+	struct addrinfo *current_addr;
+	LmSocketT         fd;
+	GIOChannel      *io_channel;
+} LmConnectData;
+
+gboolean         _lm_socket_failed_with_error (LmConnectData *connect_data,
+                                                   int error);
+gboolean         _lm_socket_failed            (LmConnectData *connect_data);
+void             _lm_socket_succeeded         (LmConnectData *connect_data);
+gboolean _lm_connection_async_connect_waiting (LmConnection *connection);
+void _lm_connection_set_async_connect_waiting (LmConnection *connection,
+					       gboolean      waiting);
+
+LmCallback *     _lm_utils_new_callback             (gpointer          func, 
+						     gpointer          data,
+						     GDestroyNotify    notify);
+void             _lm_utils_free_callback            (LmCallback       *cb);
+
+gchar *          _lm_utils_generate_id              (void);
+gchar *          _lm_utils_base64_encode            (const gchar      *str);
+gchar *          _lm_utils_hostname_to_punycode     (const gchar      *hostname);
+const gchar *    _lm_message_type_to_string         (LmMessageType     type);
+const gchar *    _lm_message_sub_type_to_string     (LmMessageSubType  type);
+LmMessage *      _lm_message_new_from_node          (LmMessageNode    *node);
+void             _lm_message_node_add_child_node    (LmMessageNode    *node,
+						     LmMessageNode    *child);
+LmMessageNode *  _lm_message_node_new               (const gchar      *name);
+void             _lm_debug_init                     (void);
+
+
+gboolean         _lm_proxy_connect_cb               (GIOChannel *source,
+                                                     GIOCondition condition,
+                                                     gpointer data);
+LmHandlerResult    
+_lm_message_handler_handle_message                (LmMessageHandler *handler,
+						   LmConnection     *connection,
+						   LmMessage        *messag);
+gboolean         _lm_sock_library_init            (void);
+void             _lm_sock_library_shutdown        (void);
+void             _lm_sock_set_blocking            (LmSocketT               sock,
+						   gboolean               block);
+void             _lm_sock_shutdown                (LmSocketT               sock);
+void             _lm_sock_close                   (LmSocketT               sock);
+LmSocketT         _lm_sock_makesocket              (int                    af,
+						   int                    type,
+						   int                    protocol);
+int              _lm_sock_connect                 (LmSocketT               sock,
+						   const struct sockaddr *name,
+						   int                    namelen);
+gboolean         _lm_sock_is_blocking_error       (int                    err);
+gboolean         _lm_sock_is_blocking_success     (int                    err);
+int              _lm_sock_get_last_error          (void);
+void             _lm_sock_get_error               (LmSocketT               sock, 
+						   void                  *error, 
+						   socklen_t             *len);
+const gchar *    _lm_sock_get_error_str           (int                    err);
+const gchar *    _lm_sock_addrinfo_get_error_str  (int                    err);
+gchar       *    _lm_sock_get_local_host          (LmSocketT              sock);
+
+#ifdef USE_TCP_KEEPALIVES
+gboolean         _lm_sock_set_keepalive (LmSocketT sock, int delay);
+#endif /* USE_TCP_KEEPALIVES */
+
+#endif /* __LM_INTERNALS_H__ */