pidgin/pidgin
Clone
Summary
Browse
Changes
Graph
More error logging, please.
release-2.x.y
2014-01-18, Mark Doliner
956f247148db
More error logging, please.
/**
* @file switchboard.h MSN switchboard functions
*
* purple
*
* Purple is the legal property of its developers, whose names are too numerous
* to list here. Please refer to the COPYRIGHT file distributed with this
* source distribution.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA
*/
#ifndef MSN_SWITCHBOARD_H
#define MSN_SWITCHBOARD_H
typedef
struct
_MsnSwitchBoard
MsnSwitchBoard
;
/**
* A switchboard error.
*/
typedef
enum
{
MSN_SB_ERROR_NONE
,
/**< No error. */
MSN_SB_ERROR_CAL
,
/**< The user could not join (answer the call). */
MSN_SB_ERROR_OFFLINE
,
/**< The account is offline. */
MSN_SB_ERROR_USER_OFFLINE
,
/**< The user to call is offline. */
MSN_SB_ERROR_CONNECTION
,
/**< There was a connection error. */
MSN_SB_ERROR_TOO_FAST
,
/**< We are sending too fast */
MSN_SB_ERROR_AUTHFAILED
,
/**< Authentication failed joining the switchboard session */
MSN_SB_ERROR_UNKNOWN
/**< An unknown error occurred. */
}
MsnSBErrorType
;
/**
* A switchboard flag.
*/
typedef
enum
{
MSN_SB_FLAG_IM
=
0x01
,
/**< This switchboard is being used for a conversation. */
MSN_SB_FLAG_FT
=
0x02
/**< This switchboard is being used for file transfer. */
}
MsnSBFlag
;
#include
"cmdproc.h"
#include
"msg.h"
#include
"servconn.h"
#include
"session.h"
/**
* A switchboard.
*
* A place where a bunch of users send messages to the rest of the users.
*/
struct
_MsnSwitchBoard
{
MsnSession
*
session
;
/**< Our parent session. */
MsnServConn
*
servconn
;
/**< The physical connection for this switchboard. */
MsnCmdProc
*
cmdproc
;
/**< Convenience variable for servconn->cmdproc. */
char
*
im_user
;
MsnSBFlag
flag
;
char
*
auth_key
;
char
*
session_id
;
PurpleConversation
*
conv
;
/**< The conversation that displays the
messages of this switchboard, or @c NULL if
this is a helper switchboard. */
gboolean
empty
;
/**< A flag that states if the swithcboard has no
users in it. */
gboolean
invited
;
/**< A flag that states if we were invited to the
switchboard. */
gboolean
ready
;
/**< A flag that states if this switchboard is
ready to be used. */
gboolean
closed
;
/**< A flag that states if the switchboard has
been closed by the user. */
gboolean
destroying
;
/**< A flag that states if the switchboard is
alredy on the process of destruction. */
int
current_users
;
int
total_users
;
GList
*
users
;
int
chat_id
;
GQueue
*
msg_queue
;
/**< Queue of messages to send. */
GList
*
ack_list
;
/**< List of messages waiting for an ack. */
MsnSBErrorType
error
;
/**< The error that occurred in this switchboard
(if applicable). */
GList
*
slplinks
;
/**< The list of slplinks that are using this switchboard. */
guint
reconn_timeout_h
;
};
/**
* Initialize the variables for switchboard creation.
*/
void
msn_switchboard_init
(
void
);
/**
* Destroy the variables for switchboard creation.
*/
void
msn_switchboard_end
(
void
);
/**
* Creates a new switchboard.
*
* @param session The MSN session.
*
* @return The new switchboard.
*/
MsnSwitchBoard
*
msn_switchboard_new
(
MsnSession
*
session
);
/**
* Destroys a switchboard.
*
* @param swboard The switchboard to destroy.
*/
void
msn_switchboard_destroy
(
MsnSwitchBoard
*
swboard
);
/**
* Sets the auth key the switchboard must use when connecting.
*
* @param swboard The switchboard.
* @param key The auth key.
*/
void
msn_switchboard_set_auth_key
(
MsnSwitchBoard
*
swboard
,
const
char
*
key
);
/**
* Returns the auth key the switchboard must use when connecting.
*
* @param swboard The switchboard.
*
* @return The auth key.
*/
const
char
*
msn_switchboard_get_auth_key
(
MsnSwitchBoard
*
swboard
);
/**
* Sets the session ID the switchboard must use when connecting.
*
* @param swboard The switchboard.
* @param id The session ID.
*/
void
msn_switchboard_set_session_id
(
MsnSwitchBoard
*
swboard
,
const
char
*
id
);
/**
* Returns the session ID the switchboard must use when connecting.
*
* @param swboard The switchboard.
*
* @return The session ID.
*/
const
char
*
msn_switchboard_get_session_id
(
MsnSwitchBoard
*
swboard
);
/**
* Returns the next chat ID for use by a switchboard.
*
* @return The chat ID.
*/
int
msn_switchboard_get_chat_id
(
void
);
/**
* Sets whether or not we were invited to this switchboard.
*
* @param swboard The switchboard.
* @param invite @c TRUE if invited, @c FALSE otherwise.
*/
void
msn_switchboard_set_invited
(
MsnSwitchBoard
*
swboard
,
gboolean
invited
);
/**
* Returns whether or not we were invited to this switchboard.
*
* @param swboard The switchboard.
*
* @return @c TRUE if invited, @c FALSE otherwise.
*/
gboolean
msn_switchboard_is_invited
(
MsnSwitchBoard
*
swboard
);
/**
* Connects to a switchboard.
*
* @param swboard The switchboard.
* @param host The switchboard server host.
* @param port The switcbharod server port.
*
* @return @c TRUE if able to connect, or @c FALSE otherwise.
*/
gboolean
msn_switchboard_connect
(
MsnSwitchBoard
*
swboard
,
const
char
*
host
,
int
port
);
/**
* Disconnects from a switchboard.
*
* @param swboard The switchboard to disconnect from.
*/
void
msn_switchboard_disconnect
(
MsnSwitchBoard
*
swboard
);
/**
* Closes the switchboard.
*
* Called when a conversation is closed.
*
* @param swboard The switchboard to close.
*/
void
msn_switchboard_close
(
MsnSwitchBoard
*
swboard
);
/**
* Release a switchboard from a certain function.
*
* @param swboard The switchboard to release.
* @param flag The flag that states the function.
*/
void
msn_switchboard_release
(
MsnSwitchBoard
*
swboard
,
MsnSBFlag
flag
);
/**
* Returns whether or not we currently can send a message through this
* switchboard.
*
* @param swboard The switchboard.
*
* @return @c TRUE if a message can be sent, @c FALSE otherwise.
*/
gboolean
msn_switchboard_can_send
(
MsnSwitchBoard
*
swboard
);
/**
* Sends a message through this switchboard.
*
* @param swboard The switchboard.
* @param msg The message.
* @param queue A flag that states if we want this message to be queued (in
* the case it cannot currently be sent).
*
* @return @c TRUE if a message can be sent, @c FALSE otherwise.
*/
void
msn_switchboard_send_msg
(
MsnSwitchBoard
*
swboard
,
MsnMessage
*
msg
,
gboolean
queue
);
void
msg_error_helper
(
MsnCmdProc
*
cmdproc
,
MsnMessage
*
msg
,
MsnMsgErrorType
error
);
gboolean
msn_switchboard_chat_leave
(
MsnSwitchBoard
*
swboard
);
gboolean
msn_switchboard_chat_invite
(
MsnSwitchBoard
*
swboard
,
const
char
*
who
);
gboolean
msn_switchboard_request
(
MsnSwitchBoard
*
swboard
);
void
msn_switchboard_request_add_user
(
MsnSwitchBoard
*
swboard
,
const
char
*
user
);
/**
* Shows an ink message from this switchboard.
*
* @param swboard The switchboard.
* @param passport The user that sent the ink.
* @param data The ink data.
*/
void
msn_switchboard_show_ink
(
MsnSwitchBoard
*
swboard
,
const
char
*
passport
,
const
char
*
data
);
#endif
/* MSN_SWITCHBOARD_H */