pidgin 2.14.14dev
connection.h
Go to the documentation of this file.
1
7/* purple
8 *
9 * Purple is the legal property of its developers, whose names are too numerous
10 * to list here. Please refer to the COPYRIGHT file distributed with this
11 * source distribution.
12 *
13 * This program is free software; you can redistribute it and/or modify
14 * it under the terms of the GNU General Public License as published by
15 * the Free Software Foundation; either version 2 of the License, or
16 * (at your option) any later version.
17 *
18 * This program is distributed in the hope that it will be useful,
19 * but WITHOUT ANY WARRANTY; without even the implied warranty of
20 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
21 * GNU General Public License for more details.
22 *
23 * You should have received a copy of the GNU General Public License
24 * along with this program; if not, write to the Free Software
25 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA
26 */
27#ifndef _PURPLE_CONNECTION_H_
28#define _PURPLE_CONNECTION_H_
29
32
36typedef enum
37{
51
52typedef enum
53{
59
65typedef enum
66{
96
107
127
131 /* purple_connection_error_reason() in connection.c uses the fact that
132 * this is the last member of the enum when sanity-checking; if other
133 * reasons are added after it, the check must be updated.
134 */
137
139typedef struct
140{
146
147#include <time.h>
148
149#include "account.h"
150#include "plugin.h"
151#include "status.h"
152#include "sslconn.h"
153
162typedef struct
163{
171 void (*connect_progress)(PurpleConnection *gc,
172 const char *text,
173 size_t step,
174 size_t step_count);
175
180 void (*connected)(PurpleConnection *gc);
181
186 void (*disconnected)(PurpleConnection *gc);
187
194 void (*notice)(PurpleConnection *gc, const char *text);
195
204 void (*report_disconnect)(PurpleConnection *gc, const char *text);
205
212 void (*network_connected)(void);
213
218 void (*network_disconnected)(void);
219
234 void (*report_disconnect_reason)(PurpleConnection *gc,
236 const char *text);
237
238 void (*_purple_reserved1)(void);
239 void (*_purple_reserved2)(void);
240 void (*_purple_reserved3)(void);
242
243
244/* Represents an active connection on an account. */
246{
253 char *password;
254 int inpa;
256 GSList *buddy_chats;
262 guint keepalive;
271 gboolean wants_to_die;
272
276};
277
278#ifdef __cplusplus
279extern "C" {
280#endif
281
282/**************************************************************************/
284/**************************************************************************/
287#if !(defined PURPLE_DISABLE_DEPRECATED) || (defined _PURPLE_CONNECTION_C_)
307void purple_connection_new(PurpleAccount *account, gboolean regist,
308 const char *password);
309#endif
310
311#if !(defined PURPLE_DISABLE_DEPRECATED) || (defined _PURPLE_CONNECTION_C_)
326void purple_connection_new_unregister(PurpleAccount *account, const char *password, PurpleAccountUnregistrationCb cb, void *user_data);
327#endif
328
329#if !(defined PURPLE_DISABLE_DEPRECATED) || (defined _PURPLE_CONNECTION_C_)
342#endif
343
355
363
371
380void purple_connection_set_protocol_data(PurpleConnection *connection, void *proto_data);
381
390
396#define PURPLE_CONNECTION_IS_CONNECTED(gc) \
397 (purple_connection_get_state(gc) == PURPLE_CONNECTED)
398
407
418
427
436
447
457 size_t step, size_t count);
458
465void purple_connection_notice(PurpleConnection *gc, const char *text);
466
480void purple_connection_error(PurpleConnection *gc, const char *reason);
481
494void
497 const char *description);
498
506void
508 PurpleSslErrorType ssl_error);
509
530gboolean
532
535/**************************************************************************/
537/**************************************************************************/
544
552
559
568/*
569 * TODO: Eventually this bad boy will be removed, because it is
570 * a gross fix for a crashy problem.
571 */
572#define PURPLE_CONNECTION_IS_VALID(gc) (g_list_find(purple_connections_get_all(), (gc)) != NULL)
573
576/**************************************************************************/
578/**************************************************************************/
587
594
597/**************************************************************************/
599/**************************************************************************/
606
611
618
622#ifdef __cplusplus
623}
624#endif
625
626#endif /* _PURPLE_CONNECTION_H_ */
Account API.
void purple_connection_error_reason(PurpleConnection *gc, PurpleConnectionError reason, const char *description)
Closes a connection with an error and a human-readable description of the error.
void purple_connections_set_ui_ops(PurpleConnectionUiOps *ops)
Sets the UI operations structure to be used for connections.
void purple_connection_new_unregister(PurpleAccount *account, const char *password, PurpleAccountUnregistrationCb cb, void *user_data)
This function should only be called by purple_account_unregister() in account.c.
void purple_connection_set_protocol_data(PurpleConnection *connection, void *proto_data)
Sets the protocol data for a connection.
GList * purple_connections_get_all(void)
Returns a list of all active connections.
void * purple_connection_get_protocol_data(const PurpleConnection *connection)
Gets the protocol data from a connection.
void purple_connection_update_progress(PurpleConnection *gc, const char *text, size_t step, size_t count)
Updates the connection progress.
void purple_connection_set_display_name(PurpleConnection *gc, const char *name)
Sets the connection's displayed name.
void purple_connection_notice(PurpleConnection *gc, const char *text)
Displays a connection-specific notice.
PurpleConnectionFlags
Flags to change behavior of the client for a given connection.
Definition: connection.h:37
@ PURPLE_CONNECTION_AUTO_RESP
Send auto responses when away.
Definition: connection.h:41
@ PURPLE_CONNECTION_FORMATTING_WBFO
The text buffer must be formatted as a whole.
Definition: connection.h:42
@ PURPLE_CONNECTION_NO_IMAGES
Connection does not support sending of images.
Definition: connection.h:46
@ PURPLE_CONNECTION_ALLOW_CUSTOM_SMILEY
Connection supports sending and receiving custom smileys.
Definition: connection.h:47
@ PURPLE_CONNECTION_SUPPORT_MOOD_MESSAGES
Connection supports setting a message on moods.
Definition: connection.h:49
@ PURPLE_CONNECTION_SUPPORT_MOODS
Connection supports setting moods.
Definition: connection.h:48
@ PURPLE_CONNECTION_HTML
Connection sends/receives in 'HTML'.
Definition: connection.h:38
@ PURPLE_CONNECTION_NO_BGCOLOR
Connection does not send/receive background colors.
Definition: connection.h:39
@ PURPLE_CONNECTION_NO_NEWLINES
No new lines are allowed in outgoing messages.
Definition: connection.h:43
@ PURPLE_CONNECTION_NO_FONTSIZE
Connection does not send/receive font sizes.
Definition: connection.h:44
@ PURPLE_CONNECTION_NO_URLDESC
Connection does not support descriptions with links.
Definition: connection.h:45
PurpleAccount * purple_connection_get_account(const PurpleConnection *gc)
Returns the connection's account.
PurpleConnectionUiOps * purple_connections_get_ui_ops(void)
Returns the UI operations structure used for connections.
void purple_connection_set_state(PurpleConnection *gc, PurpleConnectionState state)
Sets the connection state.
GList * purple_connections_get_connecting(void)
Returns a list of all connections in the process of connecting.
void purple_connection_new(PurpleAccount *account, gboolean regist, const char *password)
This function should only be called by purple_account_connect() in account.c.
void purple_connection_set_account(PurpleConnection *gc, PurpleAccount *account)
Sets the connection's account.
void purple_connection_error(PurpleConnection *gc, const char *reason)
Closes a connection with an error.
gboolean purple_connection_error_is_fatal(PurpleConnectionError reason)
Reports whether a disconnection reason is fatal (in which case the account should probably not be aut...
PurpleConnectionState purple_connection_get_state(const PurpleConnection *gc)
Returns the connection state.
void purple_connection_ssl_error(PurpleConnection *gc, PurpleSslErrorType ssl_error)
Closes a connection due to an SSL error; this is basically a shortcut to turning the PurpleSslErrorTy...
void purple_connections_uninit(void)
Uninitializes the connections subsystem.
PurpleConnectionError
Possible errors that can cause a connection to be closed.
Definition: connection.h:66
@ PURPLE_CONNECTION_ERROR_NAME_IN_USE
Someone is already connected to the server using the name you are trying to connect with.
Definition: connection.h:95
@ PURPLE_CONNECTION_ERROR_INVALID_USERNAME
The username supplied was not valid.
Definition: connection.h:73
@ PURPLE_CONNECTION_ERROR_CERT_NOT_ACTIVATED
The server's SSL certificate is not yet valid.
Definition: connection.h:115
@ PURPLE_CONNECTION_ERROR_CERT_EXPIRED
The server's SSL certificate has expired.
Definition: connection.h:113
@ PURPLE_CONNECTION_ERROR_CERT_HOSTNAME_MISMATCH
The server's SSL certificate did not match its hostname.
Definition: connection.h:117
@ PURPLE_CONNECTION_ERROR_INVALID_SETTINGS
The username/server/other preference for the account isn't valid.
Definition: connection.h:106
@ PURPLE_CONNECTION_ERROR_OTHER_ERROR
Some other error occurred which fits into none of the other categories.
Definition: connection.h:135
@ PURPLE_CONNECTION_ERROR_AUTHENTICATION_IMPOSSIBLE
libpurple doesn't speak any of the authentication methods the server offered.
Definition: connection.h:82
@ PURPLE_CONNECTION_ERROR_CERT_OTHER_ERROR
There was some other error validating the server's SSL certificate.
Definition: connection.h:126
@ PURPLE_CONNECTION_ERROR_CERT_UNTRUSTED
The server's SSL certificate could not be trusted.
Definition: connection.h:111
@ PURPLE_CONNECTION_ERROR_CERT_FINGERPRINT_MISMATCH
The server's SSL certificate does not have the expected fingerprint.
Definition: connection.h:121
@ PURPLE_CONNECTION_ERROR_CERT_SELF_SIGNED
The server's SSL certificate is self-signed.
Definition: connection.h:123
@ PURPLE_CONNECTION_ERROR_AUTHENTICATION_FAILED
The username, password or some other credential was incorrect.
Definition: connection.h:78
@ PURPLE_CONNECTION_ERROR_ENCRYPTION_ERROR
There was an error negotiating SSL on this connection, or the server does not support encryption but ...
Definition: connection.h:91
@ PURPLE_CONNECTION_ERROR_NETWORK_ERROR
There was an error sending or receiving on the network socket, or there was some protocol error (such...
Definition: connection.h:71
@ PURPLE_CONNECTION_ERROR_CERT_NOT_PROVIDED
The server did not provide a SSL certificate.
Definition: connection.h:109
@ PURPLE_CONNECTION_ERROR_NO_SSL_SUPPORT
libpurple was built without SSL support, and the connection needs SSL.
Definition: connection.h:86
const char * purple_connection_get_password(const PurpleConnection *gc)
Returns the connection's password.
void * purple_connections_get_handle(void)
Returns the handle to the connections subsystem.
void purple_connections_disconnect_all(void)
Disconnects from all connections.
const char * purple_connection_get_display_name(const PurpleConnection *gc)
Returns the connection's displayed name.
void purple_connection_destroy(PurpleConnection *gc)
Disconnects and destroys a PurpleConnection.
PurpleConnectionState
Definition: connection.h:53
@ PURPLE_CONNECTING
Connecting.
Definition: connection.h:56
@ PURPLE_DISCONNECTED
Disconnected.
Definition: connection.h:54
@ PURPLE_CONNECTED
Connected.
Definition: connection.h:55
void purple_connections_init(void)
Initializes the connections subsystem.
PurplePlugin * purple_connection_get_prpl(const PurpleConnection *gc)
Returns the protocol plugin managing a connection.
Plugin API.
SSL API.
PurpleSslErrorType
Possible SSL errors.
Definition: sslconn.h:31
Status API.
Holds the type of an error along with its description.
Definition: connection.h:140
char * description
A localised, human-readable description of the error.
Definition: connection.h:144
PurpleConnectionError type
The type of error.
Definition: connection.h:142
Connection UI operations.
Definition: connection.h:163
Structure representing an account.
Definition: account.h:170
PurplePlugin * prpl
The protocol plugin.
Definition: connection.h:247
gboolean wants_to_die
Wants to Die state.
Definition: connection.h:271
int inpa
The input watcher.
Definition: connection.h:254
void * proto_data
Protocol-specific data.
Definition: connection.h:259
GSList * buddy_chats
A list of active chats (PurpleConversation structs of type PURPLE_CONV_TYPE_CHAT).
Definition: connection.h:256
char * display_name
How you appear to other people.
Definition: connection.h:261
PurpleConnectionState state
The connection state.
Definition: connection.h:250
PurpleConnectionFlags flags
Connection flags.
Definition: connection.h:248
char * password
The password used.
Definition: connection.h:253
guint keepalive
Keep-alive.
Definition: connection.h:262
PurpleAccount * account
The account being connected to.
Definition: connection.h:252
time_t last_received
When we last received a packet.
Definition: connection.h:274
guint disconnect_timeout
Timer used for nasty stack tricks
Definition: connection.h:273
A plugin handle.
Definition: plugin.h:152