diff -r 000000000000 -r d0f3a028347a isolationserver/isoserver/inc/isoconnectionmanager.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/isolationserver/isoserver/inc/isoconnectionmanager.h Tue Feb 02 01:10:06 2010 +0200 @@ -0,0 +1,171 @@ +/* +* ============================================================================ +* Name : isoconnectionmanager.h +* Part of : isolation server. +* Version : %version: 9 % +* +* Copyright © 2007-2008 Nokia. All rights reserved. +* All rights reserved. +* Redistribution and use in source and binary forms, with or without modification, +* are permitted provided that the following conditions are met: +* Redistributions of source code must retain the above copyright notice, this list +* of conditions and the following disclaimer.Redistributions in binary form must +* reproduce the above copyright notice, this list of conditions and the following +* disclaimer in the documentation and/or other materials provided with the distribution. +* Neither the name of the Nokia Corporation nor the names of its contributors may be used +* to endorse or promote products derived from this software without specific prior written +* permission. +* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY +* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES +* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT +* SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT +* OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, +* EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +* ============================================================================ +* Template version: 1.0 +*/ + +/*! +* \def To avoid multiple inclusion of header +*/ + +#ifndef __ICONNECTIONMANAGER_H__ +#define __ICONNECTIONMANAGER_H__ + +#include +#include +#include "isoservermain.h" +# include "msg_enums.h" + +#ifdef __WINSCW__ +/*! \remark Should LOGIN_ARG_COUNT this be hardcoded ? +*/ +#define LOGIN_ARG_COUNT 12 +#else +#define LOGIN_ARG_COUNT 10 +#endif + +/*! \file +* Connection related interfaces. +* client anywhere in the documentation refers to anyone +* using the isoserver +*/ + +/*! \typedef struct login_struct typedefed to login_struct +*/ +typedef struct login_struct login_struct; + +/*! \struct login_struct isoconnectionmanager.h + * \brief Buffer recieved from client for login request is parsed and the + * arguments are put into this structure + * \param hdr_req header request + * \param strs array of strings( which are arguments for login ) + */ +struct login_struct + { + message_hdr_req* hdr_req; + char *strs[LOGIN_ARG_COUNT]; + }; + +/*! \brief This does things after login is successful. Now it sets the isConnected + * variable to ETrue + */ +void action_logedin( ) ; + +/*! \brief This function is registered in action_login for statuschanged signal. + * This function is called by telepathygabble when the status of the user changes + * Once user is connected this function registers for NewChannel signal with telepathygabble + * client is also informed of the status change.. + * + * \param proxy + * \param status status of the user ( connected/connecting/disconnected ) + * \param reason reason for status change(server disconnected/ user requested etc.,) + * \param user_data message header request + * + * \return : Boolean True on success, false on failure + */ + +static gboolean status_changed_cb(DBusGProxy *proxy, + guint status, guint reason, + gpointer user_data) ; + +/*! \brief new_channel_handler is registered as a callback for any new + * channels craetion request, in function status_changed_cb after status is changed + * to log in. new_channel_handler creates channel and also registers for the signals + * MembersChanged for contact related channels and Recieved and SendError for IM + * related channels. + * + * \param proxy unused + * \param object_path object path of the channel + * \param channel_type used to get a new channel + * \param handle_type used to get a new channel, channel handle type + * \param handle used to get a new channel, channel handle + * \param suppress_handler unused + * \param user_data unused + * + * \return void + */ + +static void new_channel_handler( DBusGProxy *proxy, const char *object_path, + const char *channel_type, guint handle_type, + guint handle, gboolean suppress_handler, + gpointer user_data ) ; + + +/*! \brief Is called after logout.. Any cleanup operations to + * be performed here. Setting conn_stat to disconnected, cleaning up + * of resources is done + */ +void action_logedout() ; + +/*! \brief Callback for the logout + * + * \param proxy : unused + * \param error : unused + * \param userdata : unused + * \return : void + */ +void logout_cb( DBusGProxy *proxy, GError *error, gpointer userdata ); + +/*! \brief requests for closing of session. Also closes the search channel. + * \remark should not close the search channel + * + * Request for log - out + * \param pc - message which has the request header + * \return : MEM_ALLOCATION_ERROR or 0 + */ +int action_logout( char* pc ) ; + +/*! \brief validates params, gets a dbus, creates a connection manager, + * and connection. Registers for the statuschange + * + * \param ls_hdr login struct + * \return Errors if invalid param or getting dbus, conn mgr or conn fails else 0 + */ +gint action_login( login_struct* ls_hdr ) ; + +/*! \brief parses the message buffer and validates the parameters. The values are written + * to ls_hdr + * + * \param aMsgBuffer - buf to be parsed + * \param ls_hdr - login_struct struct to which values are written + * \param msg_len - no. of bytes in the message buffer aMsgBuffer + * + */ +gint parse_for_login( gchar* aMsgBuffer, login_struct** ls_hdr, int msg_len ) ; + +/*! \brief Calls parse_for_login to parse and validate the arguments + * And then calls action_login for to do actual login + * + * \param aMsgBuf message buffer + * \param msg_len - len of the message + */ +gint action_parse_login( char* aMsgBuf, int msg_len ) ; + + + +#endif //__ICONNECTIONMANAGER_H__ + \ No newline at end of file