loudmouth/lm-connection.h
author Dafydd Harries <daf@rhydd.org>
Thu, 25 Oct 2007 16:27:01 +0100
changeset 288 8f7aaf4d2f13
parent 274 c32a7011e435
child 297 f65eee8ec802
permissions -rw-r--r--
remove lm_connection_use_starttls
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,
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
    59
	LM_DISCONNECT_REASON_UNKNOWN
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
    60
} LmDisconnectReason;
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
    61
57
6b168a8917f7 2003-12-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 15
diff changeset
    62
typedef enum {
91
d51b8e4f43d9 2004-08-27 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 90
diff changeset
    63
	LM_CONNECTION_STATE_CLOSED,
d51b8e4f43d9 2004-08-27 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 90
diff changeset
    64
	LM_CONNECTION_STATE_OPENING,
d51b8e4f43d9 2004-08-27 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 90
diff changeset
    65
	LM_CONNECTION_STATE_OPEN,
59
ef952e8c114d 2003-12-19 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 57
diff changeset
    66
	LM_CONNECTION_STATE_AUTHENTICATING,
ef952e8c114d 2003-12-19 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 57
diff changeset
    67
	LM_CONNECTION_STATE_AUTHENTICATED
ef952e8c114d 2003-12-19 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 57
diff changeset
    68
} LmConnectionState;
ef952e8c114d 2003-12-19 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 57
diff changeset
    69
57
6b168a8917f7 2003-12-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 15
diff changeset
    70
typedef void          (* LmResultFunction)     (LmConnection       *connection,
6b168a8917f7 2003-12-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 15
diff changeset
    71
						gboolean            success,
6b168a8917f7 2003-12-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 15
diff changeset
    72
						gpointer            user_data);
6b168a8917f7 2003-12-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 15
diff changeset
    73
6b168a8917f7 2003-12-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 15
diff changeset
    74
typedef void          (* LmDisconnectFunction) (LmConnection       *connection,
6b168a8917f7 2003-12-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 15
diff changeset
    75
						LmDisconnectReason  reason,
6b168a8917f7 2003-12-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 15
diff changeset
    76
						gpointer            user_data);
6b168a8917f7 2003-12-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 15
diff changeset
    77
1
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
    78
LmConnection *lm_connection_new               (const gchar        *server);
82
a32b54e654e2 2004-03-17 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 70
diff changeset
    79
LmConnection *lm_connection_new_with_context  (const gchar        *server,
a32b54e654e2 2004-03-17 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 70
diff changeset
    80
					       GMainContext       *context);
1
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
    81
gboolean      lm_connection_open              (LmConnection       *connection,
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
    82
					       LmResultFunction    function,
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
    83
					       gpointer            user_data,
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
    84
					       GDestroyNotify      notify,
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
    85
					       GError            **error);
57
6b168a8917f7 2003-12-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 15
diff changeset
    86
1
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
    87
gboolean      lm_connection_open_and_block    (LmConnection       *connection,
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
    88
					       GError            **error);
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
    89
90
3f4b38614416 2004-08-25 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 89
diff changeset
    90
void          lm_connection_cancel_open       (LmConnection      *connection);
1
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
    91
gboolean      lm_connection_close             (LmConnection       *connection,
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
    92
					       GError            **error);
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
    93
gboolean      lm_connection_authenticate      (LmConnection       *connection,
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
    94
					       const gchar        *username,
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
    95
					       const gchar        *password,
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
    96
					       const gchar        *resource,
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
    97
					       LmResultFunction    function,
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
    98
					       gpointer            user_data,
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
    99
					       GDestroyNotify      notify,
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
   100
					       GError            **error);
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
   101
gboolean
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
   102
lm_connection_authenticate_and_block          (LmConnection       *connection,
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
   103
					       const gchar        *username,
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
   104
					       const gchar        *password,
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
   105
					       const gchar        *resource,
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
   106
					       GError            **error);
90
3f4b38614416 2004-08-25 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 89
diff changeset
   107
void        lm_connection_set_keep_alive_rate (LmConnection       *connection,
3f4b38614416 2004-08-25 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 89
diff changeset
   108
					       guint               rate);
3f4b38614416 2004-08-25 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 89
diff changeset
   109
1
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
   110
gboolean      lm_connection_is_open           (LmConnection       *connection);
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
   111
gboolean      lm_connection_is_authenticated  (LmConnection       *connection);
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
   112
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
   113
const gchar * lm_connection_get_server        (LmConnection       *connection);
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
   114
void          lm_connection_set_server        (LmConnection       *connection,
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
   115
					       const gchar        *server);
89
e756a937e540 2004-08-09 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 87
diff changeset
   116
void          lm_connection_set_jid           (LmConnection       *connection,
e756a937e540 2004-08-09 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 87
diff changeset
   117
					       const gchar        *jid);
e756a937e540 2004-08-09 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 87
diff changeset
   118
const gchar * lm_connection_get_jid           (LmConnection       *connection);
1
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
   119
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
   120
guint         lm_connection_get_port          (LmConnection       *connection);
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
   121
void          lm_connection_set_port          (LmConnection       *connection,
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
   122
					       guint               port);
57
6b168a8917f7 2003-12-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 15
diff changeset
   123
68
28203e15de0e 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 66
diff changeset
   124
LmSSL *       lm_connection_get_ssl           (LmConnection       *connection);
28203e15de0e 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 66
diff changeset
   125
void          lm_connection_set_ssl           (LmConnection       *connection,
28203e15de0e 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 66
diff changeset
   126
					       LmSSL              *ssl);
66
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 62
diff changeset
   127
LmProxy *     lm_connection_get_proxy         (LmConnection       *connection);
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 62
diff changeset
   128
void          lm_connection_set_proxy         (LmConnection       *connection,
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 62
diff changeset
   129
					       LmProxy            *proxy);
1
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
   130
gboolean      lm_connection_send              (LmConnection       *connection,
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
   131
					       LmMessage          *message,
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
   132
					       GError            **error);
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
   133
gboolean      lm_connection_send_with_reply   (LmConnection       *connection,
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
   134
					       LmMessage          *message,
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
   135
					       LmMessageHandler   *handler,
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
   136
					       GError            **error);
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
   137
LmMessage *   
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
   138
lm_connection_send_with_reply_and_block       (LmConnection       *connection,
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
   139
					       LmMessage          *message,
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
   140
					       GError            **error);
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
   141
void
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
   142
lm_connection_register_message_handler        (LmConnection       *connection,
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
   143
					       LmMessageHandler   *handler,
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
   144
					       LmMessageType       type,
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
   145
					       LmHandlerPriority   priority);
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
   146
void
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
   147
lm_connection_unregister_message_handler      (LmConnection       *connection,
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
   148
					       LmMessageHandler   *handler,
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
   149
					       LmMessageType       type);
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
   150
void 
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
   151
lm_connection_set_disconnect_function         (LmConnection       *connection,
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
   152
					       LmDisconnectFunction function,
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
   153
					       gpointer             user_data,
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
   154
					       GDestroyNotify       notify);
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
   155
					       
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
   156
gboolean      lm_connection_send_raw          (LmConnection       *connection,
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
   157
					       const gchar        *str,
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
   158
					       GError            **error);
59
ef952e8c114d 2003-12-19 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 57
diff changeset
   159
LmConnectionState lm_connection_get_state     (LmConnection       *connection);
1
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
   160
LmConnection* lm_connection_ref               (LmConnection       *connection);
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
   161
void          lm_connection_unref             (LmConnection       *connection);
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
   162
101
a8abfbc8c005 2004-10-22 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 99
diff changeset
   163
G_END_DECLS
a8abfbc8c005 2004-10-22 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 99
diff changeset
   164
1
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
   165
#endif /* __LM_CONNECTION_H__ */