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