loudmouth/lm-internals.h
author Mikael Hallendal <micke@imendio.com>
Mon, 26 Feb 2007 01:17:30 +0100
changeset 256 2266e56746ed
parent 212 87bc6b37a9e9
child 292 bb7269466be2
permissions -rw-r--r--
Refactoring to clear up interface between LmSocket and LmConnection. Continued the work to refactor out the socket code to LmSocket. Removed a couple of functions that were left in lm-internals to signal back from the socket to the connection. These are now callbacks given to LmSocket in the create function.
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_async_connect_waiting (LmConnection *connection);
209bfa124066 Imported LmConnection refactor from old repository.
Mikael Hallendal <micke@imendio.com>
parents: 155
diff changeset
    64
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
    65
					       gboolean      waiting);
209bfa124066 Imported LmConnection refactor from old repository.
Mikael Hallendal <micke@imendio.com>
parents: 155
diff changeset
    66
66
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 57
diff changeset
    67
LmCallback *     _lm_utils_new_callback             (gpointer          func, 
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 57
diff changeset
    68
						     gpointer          data,
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 57
diff changeset
    69
						     GDestroyNotify    notify);
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 57
diff changeset
    70
void             _lm_utils_free_callback            (LmCallback       *cb);
1
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
    71
66
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 57
diff changeset
    72
gchar *          _lm_utils_generate_id              (void);
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 57
diff changeset
    73
gchar *          _lm_utils_base64_encode            (const gchar      *str);
155
d24c4392d4e3 2006-06-16 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 140
diff changeset
    74
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
    75
const gchar *    _lm_message_type_to_string         (LmMessageType     type);
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 57
diff changeset
    76
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
    77
LmMessage *      _lm_message_new_from_node          (LmMessageNode    *node);
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 57
diff changeset
    78
void             _lm_message_node_add_child_node    (LmMessageNode    *node,
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 57
diff changeset
    79
						     LmMessageNode    *child);
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 57
diff changeset
    80
LmMessageNode *  _lm_message_node_new               (const gchar      *name);
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 57
diff changeset
    81
void             _lm_debug_init                     (void);
1
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
    82
86
cb65c1ec57a7 2004-08-08 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 84
diff changeset
    83
82
a32b54e654e2 2004-03-17 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 68
diff changeset
    84
gboolean         _lm_proxy_connect_cb               (GIOChannel *source,
a32b54e654e2 2004-03-17 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 68
diff changeset
    85
                                                     GIOCondition condition,
a32b54e654e2 2004-03-17 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 68
diff changeset
    86
                                                     gpointer data);
66
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 57
diff changeset
    87
LmHandlerResult    
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 57
diff changeset
    88
_lm_message_handler_handle_message                (LmMessageHandler *handler,
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 57
diff changeset
    89
						   LmConnection     *connection,
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 57
diff changeset
    90
						   LmMessage        *messag);
140
103227122f45 2006-04-19 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 137
diff changeset
    91
gboolean         _lm_sock_library_init            (void);
103227122f45 2006-04-19 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 137
diff changeset
    92
void             _lm_sock_library_shutdown        (void);
196
209bfa124066 Imported LmConnection refactor from old repository.
Mikael Hallendal <micke@imendio.com>
parents: 155
diff changeset
    93
void             _lm_sock_set_blocking            (LmSocketT               sock,
140
103227122f45 2006-04-19 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 137
diff changeset
    94
						   gboolean               block);
196
209bfa124066 Imported LmConnection refactor from old repository.
Mikael Hallendal <micke@imendio.com>
parents: 155
diff changeset
    95
void             _lm_sock_shutdown                (LmSocketT               sock);
209bfa124066 Imported LmConnection refactor from old repository.
Mikael Hallendal <micke@imendio.com>
parents: 155
diff changeset
    96
void             _lm_sock_close                   (LmSocketT               sock);
209bfa124066 Imported LmConnection refactor from old repository.
Mikael Hallendal <micke@imendio.com>
parents: 155
diff changeset
    97
LmSocketT         _lm_sock_makesocket              (int                    af,
140
103227122f45 2006-04-19 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 137
diff changeset
    98
						   int                    type,
103227122f45 2006-04-19 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 137
diff changeset
    99
						   int                    protocol);
196
209bfa124066 Imported LmConnection refactor from old repository.
Mikael Hallendal <micke@imendio.com>
parents: 155
diff changeset
   100
int              _lm_sock_connect                 (LmSocketT               sock,
140
103227122f45 2006-04-19 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 137
diff changeset
   101
						   const struct sockaddr *name,
103227122f45 2006-04-19 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 137
diff changeset
   102
						   int                    namelen);
103227122f45 2006-04-19 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 137
diff changeset
   103
gboolean         _lm_sock_is_blocking_error       (int                    err);
103227122f45 2006-04-19 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 137
diff changeset
   104
gboolean         _lm_sock_is_blocking_success     (int                    err);
103227122f45 2006-04-19 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 137
diff changeset
   105
int              _lm_sock_get_last_error          (void);
196
209bfa124066 Imported LmConnection refactor from old repository.
Mikael Hallendal <micke@imendio.com>
parents: 155
diff changeset
   106
void             _lm_sock_get_error               (LmSocketT               sock, 
140
103227122f45 2006-04-19 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 137
diff changeset
   107
						   void                  *error, 
103227122f45 2006-04-19 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 137
diff changeset
   108
						   socklen_t             *len);
103227122f45 2006-04-19 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 137
diff changeset
   109
const gchar *    _lm_sock_get_error_str           (int                    err);
103227122f45 2006-04-19 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 137
diff changeset
   110
const gchar *    _lm_sock_addrinfo_get_error_str  (int                    err);
1
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
   111
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
   112
#endif /* __LM_INTERNALS_H__ */