loudmouth/lm-connection.h
author hallski <hallski>
Fri, 11 Jul 2003 23:56:22 +0000
changeset 15 1ff2f81867e1
parent 7 d8eae83450ac
child 57 6b168a8917f7
permissions -rw-r--r--
2003-07-12 Mikael Hallendal <micke@imendio.com> * configure.in: - Added SSL support, patch from Bartosz Zapalowski. THIS GUY ROCKS! * docs/reference/loudmouth-sections.txt: - added lm_connection_supports_ssl. * loudmouth/lm-connection.c: Added support for SSL. * loudmouth/test-lm.c: (main): Use SSL if it's compiled in.
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
/*
7
d8eae83450ac 2003-06-13 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 4
diff changeset
     3
 * Copyright (C) 2003 Mikael Hallendal <micke@imendio.com>
1
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
     4
 * Copyright (C) 2003 CodeFactory AB. 
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
     5
 *
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
     6
 * This program is free software; you can redistribute it and/or
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
     7
 * modify it under the terms of the GNU Lesser General Public License as
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
     8
 * published by the Free Software Foundation; either version 2 of the
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
     9
 * License, or (at your option) any later version.
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
    10
 *
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
    11
 * This program is distributed in the hope that it will be useful,
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
    12
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
    13
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
    14
 * Lesser General Public License for more details.
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
    15
 *
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
    16
 * You should have received a copy of the GNU Lesser General Public
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
    17
 * License along with this program; if not, write to the
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
    18
 * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
    19
 * Boston, MA 02111-1307, USA.
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
    20
 */
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
    21
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
    22
#ifndef __LM_CONNECTION_H__
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
    23
#define __LM_CONNECTION_H__
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
    24
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
    25
#if !defined (LM_INSIDE_LOUDMOUTH_H) && !defined (LM_COMPILATION)
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
    26
#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
    27
#endif
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
    28
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
    29
#include <loudmouth/lm-message.h>
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
    30
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
    31
#define LM_CONNECTION(o) (LmConnection *) o;
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
    32
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
    33
#define LM_CONNECTION_DEFAULT_PORT     5222
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
    34
#define LM_CONNECTION_DEFAULT_PORT_SSL 5223
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
    35
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
    36
typedef struct _LmConnection LmConnection;
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
    37
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
    38
typedef struct LmMessageHandler LmMessageHandler;
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
    39
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
    40
typedef enum {
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
    41
	LM_HANDLER_RESULT_REMOVE_MESSAGE,
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
    42
	LM_HANDLER_RESULT_ALLOW_MORE_HANDLERS
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
    43
} LmHandlerResult;
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
    44
 
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
    45
typedef enum {
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
    46
	LM_HANDLER_PRIORITY_LAST   = 1,
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
    47
	LM_HANDLER_PRIORITY_NORMAL = 2,
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
    48
	LM_HANDLER_PRIORITY_FIRST  = 3
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
    49
} LmHandlerPriority;
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
    50
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
    51
typedef enum {
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
    52
	LM_DISCONNECT_REASON_OK,
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
    53
	LM_DISCONNECT_REASON_PING_TIME_OUT,
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
    54
	LM_DISCONNECT_REASON_HUP,
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
    55
	LM_DISCONNECT_REASON_ERROR,
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
    56
	LM_DISCONNECT_REASON_UNKNOWN
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
    57
} LmDisconnectReason;
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
    58
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
    59
typedef void (* LmResultFunction)     (LmConnection *connection,
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
    60
				       gboolean      success,
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
    61
				       gpointer      user_data);
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
    62
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
    63
typedef void (* LmDisconnectFunction) (LmConnection *connection,
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
    64
				       LmDisconnectReason reason,
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
    65
				       gpointer           user_data);
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
    66
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
    67
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
    68
LmConnection *lm_connection_new               (const gchar        *server);
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
    69
gboolean      lm_connection_open              (LmConnection       *connection,
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
    70
					       LmResultFunction    function,
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
    71
					       gpointer            user_data,
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
    72
					       GDestroyNotify      notify,
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
    73
					       GError            **error);
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
    74
gboolean      lm_connection_open_and_block    (LmConnection       *connection,
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
    75
					       GError            **error);
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
    76
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
    77
gboolean      lm_connection_close             (LmConnection       *connection,
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
    78
					       GError            **error);
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
    79
gboolean      lm_connection_authenticate      (LmConnection       *connection,
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
    80
					       const gchar        *username,
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
    81
					       const gchar        *password,
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
    82
					       const gchar        *resource,
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
    83
					       LmResultFunction    function,
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
    84
					       gpointer            user_data,
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
    85
					       GDestroyNotify      notify,
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
    86
					       GError            **error);
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
    87
gboolean
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
    88
lm_connection_authenticate_and_block          (LmConnection       *connection,
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
    89
					       const gchar        *username,
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
    90
					       const gchar        *password,
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
    91
					       const gchar        *resource,
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
    92
					       GError            **error);
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
    93
gboolean      lm_connection_is_open           (LmConnection       *connection);
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
    94
gboolean      lm_connection_is_authenticated  (LmConnection       *connection);
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
    95
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
    96
const gchar * lm_connection_get_server        (LmConnection       *connection);
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
    97
void          lm_connection_set_server        (LmConnection       *connection,
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
    98
					       const gchar        *server);
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
    99
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
   100
guint         lm_connection_get_port          (LmConnection       *connection);
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
   101
void          lm_connection_set_port          (LmConnection       *connection,
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
   102
					       guint               port);
15
1ff2f81867e1 2003-07-12 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 7
diff changeset
   103
gboolean      lm_connection_supports_ssl      (void);
1
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
   104
gboolean      lm_connection_get_use_ssl       (LmConnection       *connection);
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
   105
void          lm_connection_set_use_ssl       (LmConnection       *connection,
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
   106
					       gboolean            use_ssl);
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
   107
					       
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
   108
gboolean      lm_connection_send              (LmConnection       *connection,
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
   109
					       LmMessage          *message,
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
   110
					       GError            **error);
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
   111
gboolean      lm_connection_send_with_reply   (LmConnection       *connection,
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
   112
					       LmMessage          *message,
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
   113
					       LmMessageHandler   *handler,
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
   114
					       GError            **error);
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
   115
LmMessage *   
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
   116
lm_connection_send_with_reply_and_block       (LmConnection       *connection,
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
   117
					       LmMessage          *message,
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
   118
					       GError            **error);
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
   119
void
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
   120
lm_connection_register_message_handler        (LmConnection       *connection,
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
   121
					       LmMessageHandler   *handler,
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
   122
					       LmMessageType       type,
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
   123
					       LmHandlerPriority   priority);
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
   124
void
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
   125
lm_connection_unregister_message_handler      (LmConnection       *connection,
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
   126
					       LmMessageHandler   *handler,
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
   127
					       LmMessageType       type);
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
   128
void 
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
   129
lm_connection_set_disconnect_function         (LmConnection       *connection,
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
   130
					       LmDisconnectFunction function,
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
   131
					       gpointer             user_data,
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
   132
					       GDestroyNotify       notify);
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
   133
					       
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
   134
gboolean      lm_connection_send_raw          (LmConnection       *connection,
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
   135
					       const gchar        *str,
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
   136
					       GError            **error);
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
   137
LmConnection* lm_connection_ref               (LmConnection       *connection);
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
   138
void          lm_connection_unref             (LmConnection       *connection);
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
   139
50e230cf7818 Initial revision
hallski <hallski>
parents:
diff changeset
   140
#endif /* __LM_CONNECTION_H__ */