diff -r 000000000000 -r 094583676ce7 PECengine/PresenceServer2/ClientInc/RPEngSessionHolder.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/PECengine/PresenceServer2/ClientInc/RPEngSessionHolder.h Thu Dec 17 08:41:52 2009 +0200 @@ -0,0 +1,277 @@ +/* +* Copyright (c) 2002 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". +* +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: Sub session of the Presence server +* It is used to maintain one session slot. +* +*/ + + +#ifndef __RPENGSESSIONHOLDER_H__ +#define __RPENGSESSIONHOLDER_H__ + +// INCLUDES +#include +#include "RPEngManagerClient.h" + +// FORWARD DECLARATIONS +class RPEngManagerClient; +class TPEngWVCspServicesTree2; + +// CLASS DECLARATION +/** + * Sub-session of the Presence Server + * It is used to maintain one session slot. + * + * @lib PEngClient2 + * @since 3.0 + */ +class RPEngSessionHolder : public RSubSessionBase + { + + public: // Constructors and destructors + + /** + * Destructor. + */ + IMPORT_C ~RPEngSessionHolder( void ); + + /** + * C++ default constructor. + */ + IMPORT_C RPEngSessionHolder( void ); + + public: // Connect close operations + + /** + * Connect this sub-session to the Presence Server + * + * Client is connected to the server with defined session Id + * and application Id + * + * @since 3.0 + * @param aSessionId packed session slot Id + * @param aAppId application Id + * @param aManagerClient main session client + * @return KErrNone if connected or system wide error code + */ + IMPORT_C TInt Connect( const TDesC8& aSessSlotId, + const TDesC16& aAppId, + RPEngManagerClient& aManagerClient ); + /** + * Closes sub session to the Presence server + * + * This can be used also for CleanUpStack support + * By default this will cause detach of the sub-session holder + * on the server side + * + * @since 3.0 + */ + IMPORT_C void Close(); + + public: // New Opening methods + + /** + * Asynchronous request to open new network session + * + * + * LogIn fails if there already such a session active on + * the server side. + * Session is specified by the information passed at holder + * construction. + * If client still wants to get shared owner ship of the existing + * active session, Attach method has to be used instead + * Once LogIn is completed successfully this session holder + * becomes reference to the such a session and its + * lifetime is bound with it. How closing of this session + * holder affects session itself depends on the function which is + * used for closing of this handler. See: + * ForceLogOut(), Detach(), LeaveAlive() + * + * + * @since 3.0 + * @param aLogInData buffer with the logIn data information + * @param aStatus - TRequestStatus, where server will + * signal completing of the LogIn request + * @return KErrNone if request went fine to server, otherwise + * system wide error code + */ + IMPORT_C TInt LogIn( const TDesC8& aLogInData, + TRequestStatus& aStatus ); + + /** + * Cancel LogIn request + * @since 3.0 + */ + IMPORT_C void CancelLogIn(); + + + /** + * Synchronous request to attach holder to existion session + * + * Session holder is attached to the existing active session + * on the server. + * Session is specified by the information passed at holder + * construction. + * + * @since 3.0 + * @return KErrNone if request went fine to server, otherwise + * system wide error code + */ + IMPORT_C TInt Attach(); + + /** + * Synchronous request to attach holder to existion session + * + * This will attach holder to the session which is active and + * was left to be active with specified process name. + * Once Holder is attached with the process name, process name + * is removed on the server side from the list of reserved + * process names which are reserving session to be opened + * even those processes are not alive. + * Session is specified by the information passed at holder + * construction. + * + * @since 3.0 + * @param aProcessName process name + * @return KErrNone if request went fine to server, otherwise + * system wide error code + */ + IMPORT_C TInt Attach( const TDesC& aProcessName ); + + public: // New closing functions + + /** + * Asynchronous request to force network session close + * + * Network session is closed on the server side for all + * application Ids + * + * @since 3.0 + * @param aStatus - TRequestStatus, where server will + * signal completing of the request + * @return KErrNone if request went fine to server, otherwise + * system wide error code + */ + IMPORT_C TInt ForceLogOut( TRequestStatus& aStatus ); + + /** + * Cancel LogOut request + * + * @since 3.0 + */ + IMPORT_C void CancelLogOut(); + + /** + * Detach Session holder + * + * This function detaches session holder from active session + * on the server, it can result in closing of the session if + * this holder was last one using the session, therefore + * This function is asynchronous, though in most cases it + * will be completed immediately. + * + * @since 3.0 + * @param aStatus - TRequestStatus, where server will + * signal completing of the request + * @return KErrNone if request went fine to server, otherwise + * system wide error code + */ + IMPORT_C TInt Detach( TRequestStatus& aStatus ); + + /** + * Cancel Detach request + * + * @since 3.0 + */ + IMPORT_C void CancelDetach(); + + /** + * Leave session alive closing call + * + * This call will leave session opened with reserved session + * for passed Process Name, untill this process name is not + * attached again some holder, session will stay active + * It should be used with caution, since it can leave to + * opened session without any client. + * How ever id client wants to disconnect from the session + * but keep session alive for next connection, this it the + * way to get job done. + * + * @since 3.0 + * @param aProcessName Process name to reserve session for + * @return KErrNone if request went fine to server, otherwise + * system wide error code + */ + IMPORT_C TInt LeaveAlive( const TDesC& aProcessName ); + + + /** + * Session slot capabilities tree + * + * retrieves Session slot's capability tree + * Function + * + * @since 3.0 + * @param aService tree to be filled with values of the session + * slot. + * @return KErrNone if session is opened and request to + * server was successful, otherwise system wide error code + */ + IMPORT_C TInt GetServiceTree( + TPEngWVCspServicesTree2& aServiceTree ); + + /** + * Session slot Log-In data + * + * Returns log in data which were used for session slot opening + * + * @since 3.0 + * @param aLogInData buffer which will be on the return filled + * with log in data. + * @return KErrNone if session is opened and request to + * server was successful, otherwise system wide error code + */ + IMPORT_C TInt LogInData( HBufC8*& aLogInData ); + + private: // Data + + /// OWN: Flag is client is connected or not + TBool iConnected; + + /// OWN: Size of the Log in data buffer + TInt iLogInData; + }; + +#endif // __RPENGSESSIONHOLDER_H__ + + + + + + + + + + + + + + + + + + + + +