presadap12/impsplugin/inc/cimpspluginconnectionmanager.h
author Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Thu, 17 Dec 2009 08:41:52 +0200
changeset 0 094583676ce7
permissions -rw-r--r--
Revision: 200949 Kit: 200951

/*
* Copyright (c) 2006 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:  Connection Manager for IMPS Protocol adaptation
*
*/

#ifndef __CIMPSPLUGINCONNECTIONMANAGER_H__
#define __CIMPSPLUGINCONNECTIONMANAGER_H__

//  INCLUDES
#include <e32base.h>
#include <impsclient.h>
#include <impsaccesscli.h>
#include <impspurecli.h>
#include <flogger.h>
#include <ximpstatus.h>

#include "PEngPresenceEngineConsts2.h"
#include "MPEngSessionStatusObserver.h"
#include "impsconfig.h"
#include "impsconnectionmanagercontrolif.h"
#include "PImpsAdapWVCspVersion.h"
#include "CPresenceNotificationHandler.h"


// FORWARD DECLARATIONS

class MXIMPServiceInfo;
class MImpsConnectionObserver;
class CImpsPluginAccessHandler;
class CImpsPluginPureDataHandler;
class MXIMPProtocolConnectionHost;
class CImpsPluginLoginRequest;
class CImpsPluginLogoutRequest;
class CActive;



/**
 * CImpsPluginConnectionManager
 *
 * Every Imps Connection has Connection Manager Object.
 *
 * @lib ?library
 * @since S60 v4.0
 */
NONSHARABLE_CLASS( CImpsPluginConnectionManager ) : public CBase,
        public MImpsPrtPluginConnectionManager,
        public MPEngSessionStatusObserver
        // implement session status observer callback
    {

public:

    static CImpsPluginConnectionManager* NewL();
    virtual ~CImpsPluginConnectionManager();


private:

    CImpsPluginConnectionManager();
    void ConstructL();


public: // MImpsPrtPluginConnectionManager

    TInt32 IapId();
    TDesC& ServerAddress();
    TDesC& UserName();
    TDesC& Password();

    CImpsPluginAccessHandler& AccessHandler();
    CImpsPluginPureDataHandler& DataHandler();

    MXIMPProtocolConnectionHost& HandleToHost();
    void InitializeStatusL();

public:

    void StatusChangedL( TPEngNWSessionSlotState aNewState,
                         TPEngNWSessionSlotEvent aNewEvent );

public:

    void ReserveSpaceForOneMoreRequestL();
    void AddRequest( CActive* aRequestObject );
    void Remove( CActive* aRequestObject );
    CPEngXMLParser& Parser();
    void ManufactureDataHandlerL();
    TBool IsDataHandlerCreatedL();
    TImpsAdapWVCspVersion GetVersion();
    void SetVersion( TImpsAdapWVCspVersion aVersion );

public: // new methods


    /**
     * ?description
     *
     * @since S60 ?S60_version
     * @param ?arg1 ?description
     * @param ?arg2 ?description
     * @return ?description
     */
    void SetHost( MXIMPProtocolConnectionHost& aHost );


    void SetConnectionParamsL( const TDesC& aServerAddress,
                               const TDesC& aUserName,
                               const TDesC& aPassword,
                               const TInt32 aIapId );

    RArray< HBufC >* PresenceAuthGrantReqList();

private: // data

    HBufC* iServerAddress;
    HBufC* iUserName;
    HBufC* iPassword;
    TInt32 iIapId;
    TBool iIsDataHandlerReady;

    CImpsPluginLoginRequest* iLoginRequest;
    CImpsPluginLogoutRequest* iLogoutRequest;

    RImpsEng iImpsClient;

    CImpsPluginAccessHandler* iAccessHandler;
    CImpsPluginPureDataHandler* iPureHandler;

    MXIMPStatus* iDisconnectStatusObj;
    MXIMPProtocolConnectionHost* iHostHandle;

    RPointerArray< CActive > iRequestArray;
    TImpsAdapWVCspVersion iCSPVersion;

public:  //data

    RArray< HBufC > iPresenceAuthGrantReqList;
    CPresenceNotificationHandler* iNotifier;
    CPresenceNotificationHandler* PresNotifier();
    };


#endif // __CIMPSPLUGINCONNECTIONMANAGER_H__