loudmouth/lm-connection.h
author Mikael Hallendal <micke@imendio.com>
Sun, 10 Jun 2007 18:03:38 +0200
changeset 266 730617b8c682
parent 262 d372a2b61b1d
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: 91
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
#ifndef __LM_CONNECTION_H__
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
    22
#define __LM_CONNECTION_H__
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
    23
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
    24
#if !defined (LM_INSIDE_LOUDMOUTH_H) && !defined (LM_COMPILATION)
188
a99cacb7a907 2006-11-17 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 101
diff changeset
    25
#error "Only <loudmouth/loudmouth.h> can be included directly, this file may disappear or change contents."
1
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
    26
#endif
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
    27
68
28203e15de0e 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 66
diff changeset
    28
#include <loudmouth/lm-message.h>
66
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 62
diff changeset
    29
#include <loudmouth/lm-proxy.h>
68
28203e15de0e 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 66
diff changeset
    30
#include <loudmouth/lm-ssl.h>
1
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
    31
101
a8abfbc8c005 2004-10-22 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 99
diff changeset
    32
G_BEGIN_DECLS
a8abfbc8c005 2004-10-22 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 99
diff changeset
    33
1
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
    34
#define LM_CONNECTION(o) (LmConnection *) o;
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
    35
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
    36
#define LM_CONNECTION_DEFAULT_PORT     5222
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
    37
#define LM_CONNECTION_DEFAULT_PORT_SSL 5223
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
    38
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
    39
typedef struct _LmConnection LmConnection;
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
    40
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
    41
typedef struct LmMessageHandler LmMessageHandler;
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
    42
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
    43
typedef enum {
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
    44
	LM_HANDLER_RESULT_REMOVE_MESSAGE,
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
    45
	LM_HANDLER_RESULT_ALLOW_MORE_HANDLERS
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
    46
} LmHandlerResult;
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
    47
 
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
    48
typedef enum {
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
    49
	LM_HANDLER_PRIORITY_LAST   = 1,
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
    50
	LM_HANDLER_PRIORITY_NORMAL = 2,
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
    51
	LM_HANDLER_PRIORITY_FIRST  = 3
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
    52
} LmHandlerPriority;
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
    53
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
    54
typedef enum {
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
    55
	LM_DISCONNECT_REASON_OK,
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
    56
	LM_DISCONNECT_REASON_PING_TIME_OUT,
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
    57
	LM_DISCONNECT_REASON_HUP,
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
    58
	LM_DISCONNECT_REASON_ERROR,
262
d372a2b61b1d Added disconnect error for resource conflict. Fixes LM-55.
Mikael Hallendal <micke@imendio.com>
parents: 188
diff changeset
    59
	LM_DISCONNECT_REASON_UNKNOWN,
d372a2b61b1d Added disconnect error for resource conflict. Fixes LM-55.
Mikael Hallendal <micke@imendio.com>
parents: 188
diff changeset
    60
	LM_DISCONNECT_REASON_RESOURCE_CONFLICT,
d372a2b61b1d Added disconnect error for resource conflict. Fixes LM-55.
Mikael Hallendal <micke@imendio.com>
parents: 188
diff changeset
    61
	LM_DISCONNECT_REASON_INVALID_XML
1
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
    62
} LmDisconnectReason;
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
    63
57
6b168a8917f7 2003-12-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 15
diff changeset
    64
typedef enum {
91
d51b8e4f43d9 2004-08-27 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 90
diff changeset
    65
	LM_CONNECTION_STATE_CLOSED,
d51b8e4f43d9 2004-08-27 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 90
diff changeset
    66
	LM_CONNECTION_STATE_OPENING,
d51b8e4f43d9 2004-08-27 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 90
diff changeset
    67
	LM_CONNECTION_STATE_OPEN,
59
ef952e8c114d 2003-12-19 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 57
diff changeset
    68
	LM_CONNECTION_STATE_AUTHENTICATING,
ef952e8c114d 2003-12-19 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 57
diff changeset
    69
	LM_CONNECTION_STATE_AUTHENTICATED
ef952e8c114d 2003-12-19 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 57
diff changeset
    70
} LmConnectionState;
ef952e8c114d 2003-12-19 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 57
diff changeset
    71
57
6b168a8917f7 2003-12-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 15
diff changeset
    72
typedef void          (* LmResultFunction)     (LmConnection       *connection,
6b168a8917f7 2003-12-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 15
diff changeset
    73
						gboolean            success,
6b168a8917f7 2003-12-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 15
diff changeset
    74
						gpointer            user_data);
6b168a8917f7 2003-12-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 15
diff changeset
    75
6b168a8917f7 2003-12-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 15
diff changeset
    76
typedef void          (* LmDisconnectFunction) (LmConnection       *connection,
6b168a8917f7 2003-12-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 15
diff changeset
    77
						LmDisconnectReason  reason,
6b168a8917f7 2003-12-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 15
diff changeset
    78
						gpointer            user_data);
6b168a8917f7 2003-12-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 15
diff changeset
    79
1
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
    80
LmConnection *lm_connection_new               (const gchar        *server);
82
a32b54e654e2 2004-03-17 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 70
diff changeset
    81
LmConnection *lm_connection_new_with_context  (const gchar        *server,
a32b54e654e2 2004-03-17 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 70
diff changeset
    82
					       GMainContext       *context);
1
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
    83
gboolean      lm_connection_open              (LmConnection       *connection,
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
    84
					       LmResultFunction    function,
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
    85
					       gpointer            user_data,
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
    86
					       GDestroyNotify      notify,
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
    87
					       GError            **error);
57
6b168a8917f7 2003-12-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 15
diff changeset
    88
1
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
    89
gboolean      lm_connection_open_and_block    (LmConnection       *connection,
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
    90
					       GError            **error);
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
    91
90
3f4b38614416 2004-08-25 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 89
diff changeset
    92
void          lm_connection_cancel_open       (LmConnection      *connection);
1
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
    93
gboolean      lm_connection_close             (LmConnection       *connection,
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
    94
					       GError            **error);
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
    95
gboolean      lm_connection_authenticate      (LmConnection       *connection,
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
    96
					       const gchar        *username,
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
    97
					       const gchar        *password,
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
    98
					       const gchar        *resource,
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
    99
					       LmResultFunction    function,
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
   100
					       gpointer            user_data,
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
   101
					       GDestroyNotify      notify,
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
   102
					       GError            **error);
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
   103
gboolean
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
   104
lm_connection_authenticate_and_block          (LmConnection       *connection,
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
   105
					       const gchar        *username,
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
   106
					       const gchar        *password,
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
   107
					       const gchar        *resource,
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
   108
					       GError            **error);
90
3f4b38614416 2004-08-25 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 89
diff changeset
   109
void        lm_connection_set_keep_alive_rate (LmConnection       *connection,
3f4b38614416 2004-08-25 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 89
diff changeset
   110
					       guint               rate);
3f4b38614416 2004-08-25 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 89
diff changeset
   111
1
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
   112
gboolean      lm_connection_is_open           (LmConnection       *connection);
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
   113
gboolean      lm_connection_is_authenticated  (LmConnection       *connection);
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
   114
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
   115
const gchar * lm_connection_get_server        (LmConnection       *connection);
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
   116
void          lm_connection_set_server        (LmConnection       *connection,
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
   117
					       const gchar        *server);
89
e756a937e540 2004-08-09 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 87
diff changeset
   118
void          lm_connection_set_jid           (LmConnection       *connection,
e756a937e540 2004-08-09 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 87
diff changeset
   119
					       const gchar        *jid);
e756a937e540 2004-08-09 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 87
diff changeset
   120
const gchar * lm_connection_get_jid           (LmConnection       *connection);
266
730617b8c682 Added support for Gossip filetransfer patch.
Mikael Hallendal <micke@imendio.com>
parents: 262
diff changeset
   121
gchar *       lm_connection_get_full_jid      (LmConnection       *connection);
1
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
   122
guint         lm_connection_get_port          (LmConnection       *connection);
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
   123
void          lm_connection_set_port          (LmConnection       *connection,
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
   124
					       guint               port);
57
6b168a8917f7 2003-12-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 15
diff changeset
   125
68
28203e15de0e 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 66
diff changeset
   126
LmSSL *       lm_connection_get_ssl           (LmConnection       *connection);
28203e15de0e 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 66
diff changeset
   127
void          lm_connection_set_ssl           (LmConnection       *connection,
28203e15de0e 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 66
diff changeset
   128
					       LmSSL              *ssl);
66
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 62
diff changeset
   129
LmProxy *     lm_connection_get_proxy         (LmConnection       *connection);
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 62
diff changeset
   130
void          lm_connection_set_proxy         (LmConnection       *connection,
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 62
diff changeset
   131
					       LmProxy            *proxy);
1
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
   132
gboolean      lm_connection_send              (LmConnection       *connection,
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
   133
					       LmMessage          *message,
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
   134
					       GError            **error);
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
   135
gboolean      lm_connection_send_with_reply   (LmConnection       *connection,
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
   136
					       LmMessage          *message,
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
   137
					       LmMessageHandler   *handler,
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
   138
					       GError            **error);
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
   139
LmMessage *   
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
   140
lm_connection_send_with_reply_and_block       (LmConnection       *connection,
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
   141
					       LmMessage          *message,
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
   142
					       GError            **error);
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
   143
void
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
   144
lm_connection_register_message_handler        (LmConnection       *connection,
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
   145
					       LmMessageHandler   *handler,
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
   146
					       LmMessageType       type,
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
   147
					       LmHandlerPriority   priority);
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
   148
void
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
   149
lm_connection_unregister_message_handler      (LmConnection       *connection,
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
   150
					       LmMessageHandler   *handler,
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
   151
					       LmMessageType       type);
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
   152
void 
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
   153
lm_connection_set_disconnect_function         (LmConnection       *connection,
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
   154
					       LmDisconnectFunction function,
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
   155
					       gpointer             user_data,
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
   156
					       GDestroyNotify       notify);
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
   157
					       
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
   158
gboolean      lm_connection_send_raw          (LmConnection       *connection,
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
   159
					       const gchar        *str,
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
   160
					       GError            **error);
59
ef952e8c114d 2003-12-19 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 57
diff changeset
   161
LmConnectionState lm_connection_get_state     (LmConnection       *connection);
266
730617b8c682 Added support for Gossip filetransfer patch.
Mikael Hallendal <micke@imendio.com>
parents: 262
diff changeset
   162
gchar *       lm_connection_get_local_host    (LmConnection       *connection);
1
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
   163
LmConnection* lm_connection_ref               (LmConnection       *connection);
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
   164
void          lm_connection_unref             (LmConnection       *connection);
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
   165
101
a8abfbc8c005 2004-10-22 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 99
diff changeset
   166
G_END_DECLS
a8abfbc8c005 2004-10-22 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 99
diff changeset
   167
1
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
   168
#endif /* __LM_CONNECTION_H__ */