loudmouth/lm-internals.h
author Mikael Hallendal <micke@imendio.com>
Fri, 23 Feb 2007 14:55:04 +0100
changeset 212 87bc6b37a9e9
parent 196 209bfa124066
child 256 2266e56746ed
permissions -rw-r--r--
Improved error checking in LmSocket when connecting. _lm_socket_failed_* now returns a boolean informing whether it succeeded or not. Patch from Senko Rasic.
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"
196
209bfa124066 Imported LmConnection refactor from old repository.
Mikael Hallendal <micke@imendio.com>
parents: 155
diff changeset
    34
#include "lm-socket.h"
140
103227122f45 2006-04-19 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 137
diff changeset
    35
103227122f45 2006-04-19 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 137
diff changeset
    36
#ifndef G_OS_WIN32
196
209bfa124066 Imported LmConnection refactor from old repository.
Mikael Hallendal <micke@imendio.com>
parents: 155
diff changeset
    37
typedef int LmSocketT;
140
103227122f45 2006-04-19 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 137
diff changeset
    38
#else  /* G_OS_WIN32 */
196
209bfa124066 Imported LmConnection refactor from old repository.
Mikael Hallendal <micke@imendio.com>
parents: 155
diff changeset
    39
typedef SOCKET LmSocketT;
140
103227122f45 2006-04-19 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 137
diff changeset
    40
#endif /* G_OS_WIN32 */
1
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
    41
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
    42
typedef struct {
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
    43
	gpointer       func;
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
    44
	gpointer       user_data;
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
    45
	GDestroyNotify notify;
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
    46
} LmCallback;
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
    47
82
a32b54e654e2 2004-03-17 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 68
diff changeset
    48
typedef struct {
196
209bfa124066 Imported LmConnection refactor from old repository.
Mikael Hallendal <micke@imendio.com>
parents: 155
diff changeset
    49
	LmConnection *connection;
209bfa124066 Imported LmConnection refactor from old repository.
Mikael Hallendal <micke@imendio.com>
parents: 155
diff changeset
    50
	LmSocket *socket;
82
a32b54e654e2 2004-03-17 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 68
diff changeset
    51
a32b54e654e2 2004-03-17 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 68
diff changeset
    52
	/* struct to save resolved address */
a32b54e654e2 2004-03-17 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 68
diff changeset
    53
	struct addrinfo *resolved_addrs;
a32b54e654e2 2004-03-17 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 68
diff changeset
    54
	struct addrinfo *current_addr;
196
209bfa124066 Imported LmConnection refactor from old repository.
Mikael Hallendal <micke@imendio.com>
parents: 155
diff changeset
    55
	LmSocketT         fd;
140
103227122f45 2006-04-19 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 137
diff changeset
    56
	GIOChannel      *io_channel;
82
a32b54e654e2 2004-03-17 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 68
diff changeset
    57
} LmConnectData;
a32b54e654e2 2004-03-17 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 68
diff changeset
    58
212
87bc6b37a9e9 Improved error checking in LmSocket when connecting.
Mikael Hallendal <micke@imendio.com>
parents: 196
diff changeset
    59
gboolean         _lm_socket_failed_with_error (LmConnectData *connect_data,
82
a32b54e654e2 2004-03-17 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 68
diff changeset
    60
                                                   int error);
212
87bc6b37a9e9 Improved error checking in LmSocket when connecting.
Mikael Hallendal <micke@imendio.com>
parents: 196
diff changeset
    61
gboolean         _lm_socket_failed            (LmConnectData *connect_data);
196
209bfa124066 Imported LmConnection refactor from old repository.
Mikael Hallendal <micke@imendio.com>
parents: 155
diff changeset
    62
void             _lm_socket_succeeded         (LmConnectData *connect_data);
209bfa124066 Imported LmConnection refactor from old repository.
Mikael Hallendal <micke@imendio.com>
parents: 155
diff changeset
    63
gboolean         _lm_connection_error_event (LmSocket     *socket,
209bfa124066 Imported LmConnection refactor from old repository.
Mikael Hallendal <micke@imendio.com>
parents: 155
diff changeset
    64
					     GIOCondition  condition,
209bfa124066 Imported LmConnection refactor from old repository.
Mikael Hallendal <micke@imendio.com>
parents: 155
diff changeset
    65
					     LmConnection *connection);
209bfa124066 Imported LmConnection refactor from old repository.
Mikael Hallendal <micke@imendio.com>
parents: 155
diff changeset
    66
void     _lm_connection_do_close           (LmConnection        *connection);
209bfa124066 Imported LmConnection refactor from old repository.
Mikael Hallendal <micke@imendio.com>
parents: 155
diff changeset
    67
void     _lm_connection_signal_disconnect (LmConnection       *connection,
209bfa124066 Imported LmConnection refactor from old repository.
Mikael Hallendal <micke@imendio.com>
parents: 155
diff changeset
    68
					   LmDisconnectReason  reason);
209bfa124066 Imported LmConnection refactor from old repository.
Mikael Hallendal <micke@imendio.com>
parents: 155
diff changeset
    69
209bfa124066 Imported LmConnection refactor from old repository.
Mikael Hallendal <micke@imendio.com>
parents: 155
diff changeset
    70
void     _lm_connection_socket_result (LmConnection *connection,
209bfa124066 Imported LmConnection refactor from old repository.
Mikael Hallendal <micke@imendio.com>
parents: 155
diff changeset
    71
				       gboolean      result);
209bfa124066 Imported LmConnection refactor from old repository.
Mikael Hallendal <micke@imendio.com>
parents: 155
diff changeset
    72
gboolean _lm_connection_async_connect_waiting (LmConnection *connection);
209bfa124066 Imported LmConnection refactor from old repository.
Mikael Hallendal <micke@imendio.com>
parents: 155
diff changeset
    73
void _lm_connection_set_async_connect_waiting (LmConnection *connection,
209bfa124066 Imported LmConnection refactor from old repository.
Mikael Hallendal <micke@imendio.com>
parents: 155
diff changeset
    74
					       gboolean      waiting);
209bfa124066 Imported LmConnection refactor from old repository.
Mikael Hallendal <micke@imendio.com>
parents: 155
diff changeset
    75
66
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 57
diff changeset
    76
LmCallback *     _lm_utils_new_callback             (gpointer          func, 
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 57
diff changeset
    77
						     gpointer          data,
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 57
diff changeset
    78
						     GDestroyNotify    notify);
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 57
diff changeset
    79
void             _lm_utils_free_callback            (LmCallback       *cb);
1
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
    80
66
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 57
diff changeset
    81
gchar *          _lm_utils_generate_id              (void);
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 57
diff changeset
    82
gchar *          _lm_utils_base64_encode            (const gchar      *str);
155
d24c4392d4e3 2006-06-16 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 140
diff changeset
    83
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
    84
const gchar *    _lm_message_type_to_string         (LmMessageType     type);
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 57
diff changeset
    85
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
    86
LmMessage *      _lm_message_new_from_node          (LmMessageNode    *node);
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 57
diff changeset
    87
void             _lm_message_node_add_child_node    (LmMessageNode    *node,
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 57
diff changeset
    88
						     LmMessageNode    *child);
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 57
diff changeset
    89
LmMessageNode *  _lm_message_node_new               (const gchar      *name);
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 57
diff changeset
    90
void             _lm_debug_init                     (void);
1
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
    91
86
cb65c1ec57a7 2004-08-08 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 84
diff changeset
    92
82
a32b54e654e2 2004-03-17 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 68
diff changeset
    93
gboolean         _lm_proxy_connect_cb               (GIOChannel *source,
a32b54e654e2 2004-03-17 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 68
diff changeset
    94
                                                     GIOCondition condition,
a32b54e654e2 2004-03-17 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 68
diff changeset
    95
                                                     gpointer data);
66
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 57
diff changeset
    96
LmHandlerResult    
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 57
diff changeset
    97
_lm_message_handler_handle_message                (LmMessageHandler *handler,
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 57
diff changeset
    98
						   LmConnection     *connection,
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 57
diff changeset
    99
						   LmMessage        *messag);
140
103227122f45 2006-04-19 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 137
diff changeset
   100
gboolean         _lm_sock_library_init            (void);
103227122f45 2006-04-19 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 137
diff changeset
   101
void             _lm_sock_library_shutdown        (void);
196
209bfa124066 Imported LmConnection refactor from old repository.
Mikael Hallendal <micke@imendio.com>
parents: 155
diff changeset
   102
void             _lm_sock_set_blocking            (LmSocketT               sock,
140
103227122f45 2006-04-19 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 137
diff changeset
   103
						   gboolean               block);
196
209bfa124066 Imported LmConnection refactor from old repository.
Mikael Hallendal <micke@imendio.com>
parents: 155
diff changeset
   104
void             _lm_sock_shutdown                (LmSocketT               sock);
209bfa124066 Imported LmConnection refactor from old repository.
Mikael Hallendal <micke@imendio.com>
parents: 155
diff changeset
   105
void             _lm_sock_close                   (LmSocketT               sock);
209bfa124066 Imported LmConnection refactor from old repository.
Mikael Hallendal <micke@imendio.com>
parents: 155
diff changeset
   106
LmSocketT         _lm_sock_makesocket              (int                    af,
140
103227122f45 2006-04-19 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 137
diff changeset
   107
						   int                    type,
103227122f45 2006-04-19 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 137
diff changeset
   108
						   int                    protocol);
196
209bfa124066 Imported LmConnection refactor from old repository.
Mikael Hallendal <micke@imendio.com>
parents: 155
diff changeset
   109
int              _lm_sock_connect                 (LmSocketT               sock,
140
103227122f45 2006-04-19 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 137
diff changeset
   110
						   const struct sockaddr *name,
103227122f45 2006-04-19 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 137
diff changeset
   111
						   int                    namelen);
103227122f45 2006-04-19 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 137
diff changeset
   112
gboolean         _lm_sock_is_blocking_error       (int                    err);
103227122f45 2006-04-19 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 137
diff changeset
   113
gboolean         _lm_sock_is_blocking_success     (int                    err);
103227122f45 2006-04-19 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 137
diff changeset
   114
int              _lm_sock_get_last_error          (void);
196
209bfa124066 Imported LmConnection refactor from old repository.
Mikael Hallendal <micke@imendio.com>
parents: 155
diff changeset
   115
void             _lm_sock_get_error               (LmSocketT               sock, 
140
103227122f45 2006-04-19 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 137
diff changeset
   116
						   void                  *error, 
103227122f45 2006-04-19 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 137
diff changeset
   117
						   socklen_t             *len);
103227122f45 2006-04-19 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 137
diff changeset
   118
const gchar *    _lm_sock_get_error_str           (int                    err);
103227122f45 2006-04-19 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 137
diff changeset
   119
const gchar *    _lm_sock_addrinfo_get_error_str  (int                    err);
1
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
   120
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
   121
#endif /* __LM_INTERNALS_H__ */