loudmouth/lm-internals.h
author Mikael Hallendal <micke@imendio.com>
Sun, 10 Jun 2007 18:03:38 +0200
changeset 266 730617b8c682
parent 261 703c5734ec61
permissions -rw-r--r--
Added support for Gossip filetransfer patch. Added lm_connection_get_full_jid and lm_connection_get_client_host.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
1
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
     1
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
     2
/*
99
81e9d035de02 2004-10-05 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 96
diff changeset
     3
 * Copyright (C) 2003 Imendio AB
1
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
     4
 *
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
     5
 * This program is free software; you can redistribute it and/or
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
     6
 * modify it under the terms of the GNU Lesser General Public License as
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
     7
 * published by the Free Software Foundation; either version 2 of the
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
     8
 * License, or (at your option) any later version.
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
     9
 *
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
    10
 * This program is distributed in the hope that it will be useful,
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
    11
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
    12
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
    13
 * Lesser General Public License for more details.
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
    14
 *
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
    15
 * You should have received a copy of the GNU Lesser General Public
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
    16
 * License along with this program; if not, write to the
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
    17
 * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
    18
 * Boston, MA 02111-1307, USA.
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
    19
 */
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
    20
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
    21
/* Private functions that are internal to the library */
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
    22
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
    23
#ifndef __LM_INTERNALS_H__
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
    24
#define __LM_INTERNALS_H__
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
    25
140
103227122f45 2006-04-19 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 137
diff changeset
    26
#include <glib.h>
103227122f45 2006-04-19 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 137
diff changeset
    27
103227122f45 2006-04-19 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 137
diff changeset
    28
#include <sys/types.h>
103227122f45 2006-04-19 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 137
diff changeset
    29
1
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
    30
#include "lm-message.h"
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
    31
#include "lm-message-handler.h"
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
    32
#include "lm-message-node.h"
140
103227122f45 2006-04-19 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 137
diff changeset
    33
#include "lm-sock.h"
103227122f45 2006-04-19 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 137
diff changeset
    34
103227122f45 2006-04-19 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 137
diff changeset
    35
#ifndef G_OS_WIN32
103227122f45 2006-04-19 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 137
diff changeset
    36
typedef int LmSocket;
103227122f45 2006-04-19 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 137
diff changeset
    37
#else  /* G_OS_WIN32 */
103227122f45 2006-04-19 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 137
diff changeset
    38
typedef SOCKET LmSocket;
103227122f45 2006-04-19 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 137
diff changeset
    39
#endif /* G_OS_WIN32 */
1
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
    40
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
    41
typedef struct {
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
    42
	gpointer       func;
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
    43
	gpointer       user_data;
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
    44
	GDestroyNotify notify;
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
    45
} LmCallback;
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
    46
82
a32b54e654e2 2004-03-17 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 68
diff changeset
    47
typedef struct {
a32b54e654e2 2004-03-17 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 68
diff changeset
    48
	LmConnection    *connection;
a32b54e654e2 2004-03-17 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 68
diff changeset
    49
a32b54e654e2 2004-03-17 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 68
diff changeset
    50
	/* struct to save resolved address */
a32b54e654e2 2004-03-17 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 68
diff changeset
    51
	struct addrinfo *resolved_addrs;
a32b54e654e2 2004-03-17 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 68
diff changeset
    52
	struct addrinfo *current_addr;
140
103227122f45 2006-04-19 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 137
diff changeset
    53
	LmSocket         fd;
103227122f45 2006-04-19 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 137
diff changeset
    54
	GIOChannel      *io_channel;
82
a32b54e654e2 2004-03-17 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 68
diff changeset
    55
} LmConnectData;
a32b54e654e2 2004-03-17 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 68
diff changeset
    56
261
703c5734ec61 Signal back when connection immediately fails. Fixes LM-67.
Mikael Hallendal <micke@imendio.com>
parents: 155
diff changeset
    57
gboolean         _lm_connection_failed_with_error (LmConnectData *connect_data,
82
a32b54e654e2 2004-03-17 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 68
diff changeset
    58
                                                   int error);
261
703c5734ec61 Signal back when connection immediately fails. Fixes LM-67.
Mikael Hallendal <micke@imendio.com>
parents: 155
diff changeset
    59
gboolean         _lm_connection_failed            (LmConnectData *connect_data);
140
103227122f45 2006-04-19 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 137
diff changeset
    60
void             _lm_connection_succeeded         (LmConnectData *connect_data);
66
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 57
diff changeset
    61
LmCallback *     _lm_utils_new_callback             (gpointer          func, 
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 57
diff changeset
    62
						     gpointer          data,
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 57
diff changeset
    63
						     GDestroyNotify    notify);
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 57
diff changeset
    64
void             _lm_utils_free_callback            (LmCallback       *cb);
1
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
    65
66
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 57
diff changeset
    66
gchar *          _lm_utils_generate_id              (void);
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 57
diff changeset
    67
gchar *          _lm_utils_base64_encode            (const gchar      *str);
155
d24c4392d4e3 2006-06-16 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 140
diff changeset
    68
gchar *          _lm_utils_hostname_to_punycode     (const gchar      *hostname);
66
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 57
diff changeset
    69
const gchar *    _lm_message_type_to_string         (LmMessageType     type);
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 57
diff changeset
    70
const gchar *    _lm_message_sub_type_to_string     (LmMessageSubType  type);
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 57
diff changeset
    71
LmMessage *      _lm_message_new_from_node          (LmMessageNode    *node);
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 57
diff changeset
    72
void             _lm_message_node_add_child_node    (LmMessageNode    *node,
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 57
diff changeset
    73
						     LmMessageNode    *child);
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 57
diff changeset
    74
LmMessageNode *  _lm_message_node_new               (const gchar      *name);
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 57
diff changeset
    75
void             _lm_debug_init                     (void);
1
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
    76
86
cb65c1ec57a7 2004-08-08 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 84
diff changeset
    77
82
a32b54e654e2 2004-03-17 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 68
diff changeset
    78
gboolean         _lm_proxy_connect_cb               (GIOChannel *source,
a32b54e654e2 2004-03-17 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 68
diff changeset
    79
                                                     GIOCondition condition,
a32b54e654e2 2004-03-17 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 68
diff changeset
    80
                                                     gpointer data);
66
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 57
diff changeset
    81
LmHandlerResult    
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 57
diff changeset
    82
_lm_message_handler_handle_message                (LmMessageHandler *handler,
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 57
diff changeset
    83
						   LmConnection     *connection,
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 57
diff changeset
    84
						   LmMessage        *messag);
140
103227122f45 2006-04-19 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 137
diff changeset
    85
gboolean         _lm_sock_library_init            (void);
103227122f45 2006-04-19 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 137
diff changeset
    86
void             _lm_sock_library_shutdown        (void);
103227122f45 2006-04-19 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 137
diff changeset
    87
void             _lm_sock_set_blocking            (LmSocket               sock,
103227122f45 2006-04-19 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 137
diff changeset
    88
						   gboolean               block);
103227122f45 2006-04-19 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 137
diff changeset
    89
void             _lm_sock_shutdown                (LmSocket               sock);
103227122f45 2006-04-19 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 137
diff changeset
    90
void             _lm_sock_close                   (LmSocket               sock);
103227122f45 2006-04-19 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 137
diff changeset
    91
LmSocket         _lm_sock_makesocket              (int                    af,
103227122f45 2006-04-19 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 137
diff changeset
    92
						   int                    type,
103227122f45 2006-04-19 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 137
diff changeset
    93
						   int                    protocol);
103227122f45 2006-04-19 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 137
diff changeset
    94
int              _lm_sock_connect                 (LmSocket               sock,
103227122f45 2006-04-19 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 137
diff changeset
    95
						   const struct sockaddr *name,
103227122f45 2006-04-19 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 137
diff changeset
    96
						   int                    namelen);
266
730617b8c682 Added support for Gossip filetransfer patch.
Mikael Hallendal <micke@imendio.com>
parents: 261
diff changeset
    97
gchar          * _lm_sock_get_local_host          (LmSocket               socket);
140
103227122f45 2006-04-19 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 137
diff changeset
    98
gboolean         _lm_sock_is_blocking_error       (int                    err);
103227122f45 2006-04-19 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 137
diff changeset
    99
gboolean         _lm_sock_is_blocking_success     (int                    err);
103227122f45 2006-04-19 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 137
diff changeset
   100
int              _lm_sock_get_last_error          (void);
103227122f45 2006-04-19 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 137
diff changeset
   101
void             _lm_sock_get_error               (LmSocket               sock, 
103227122f45 2006-04-19 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 137
diff changeset
   102
						   void                  *error, 
103227122f45 2006-04-19 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 137
diff changeset
   103
						   socklen_t             *len);
103227122f45 2006-04-19 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 137
diff changeset
   104
const gchar *    _lm_sock_get_error_str           (int                    err);
103227122f45 2006-04-19 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 137
diff changeset
   105
const gchar *    _lm_sock_addrinfo_get_error_str  (int                    err);
1
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
   106
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
   107
#endif /* __LM_INTERNALS_H__ */