inc/impspurecli.h
author Fionntina Carville <fionntinac@symbian.org>
Mon, 15 Nov 2010 11:27:49 +0000
branchRCL_3
changeset 22 df9aab66f73e
parent 0 094583676ce7
permissions -rw-r--r--
Bug 3539. Update localisation mappings.

/*
* Copyright (c) 2002-2005 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: 
*     WV Engine pure data API definition
*
*/


#ifndef RIMPSPURECLI_H
#define RIMPSPURECLI_H

// INCLUDES
#include <e32base.h>
#include <badesca.h>
#include <bamdesca.h>
#include "impsconst.h"
#include "impsclient.h"

// CONSTANTS

// service type
enum TImpsServiceType
    {
    EImpsServiceNone = 0x0000,
    EImpsServiceAccess = 0x0001,
    EImpsServiceIM = 0x0002,
    EImpsServicePresence = 0x0004, 
    EImpsServiceGroup = 0x0010,
    EImpsServiceCommon = 0x0100   
    };

// FORWARD DECLARATIONS
class MImpsPureHandler2;
class CImpsPureCommand2;


// CLASS DECLARATION

/**
*  Pure data WV Client API
*
*  Applications use Access service via RImpsPureClient2 class. 
*  First, they need to
*  connect to the server by calling RegisterL() member function.
*  Immediately after that an error handler must be registered by 
*  RegisterErrorObserverL.  
*  
*  When everything is done, call Unregister() to end
*  the session.
*
*  A user of this API must be aware that raising/releasing
*  the PDP context may affect the response times of called functions.
*
*
*  Observer methods:
*  -----------------------
*  Client can be notified when a certain type of message is received 
*  from the remote server.
*  Client has to be connected in the server in order to get notify events.
*  If the client is disconnected by server by calling Unregister(), all notify
*  requests and possible incoming events are canceled. 
*
*  Notify events are session-specific, ie. if you have several RImpsPureClients
*  connected to the server, each has its own notify requests. 
*
*  In order to use notify services, you need to implement MImpsPureHandler2 
*  and give a pointer to your class in RegisterL.
*  Observer method doesn't need to do anything else than your application needs 
*  it to do.
*/ 

class RImpsPureClient2 : public RImpsClient2
    {

    public: // Constructors and destructor

        /**
        * C++ default constructor.
        */      
        IMPORT_C RImpsPureClient2();

    public: // New functions        

        // INITILIZATION AND CONNECT

       /**
        * Registers the listener object for Pure events and connects to
        * the SOS Server. 
        * Leaves with KImpsErrorAlreadyInUse if the client 
        * has already registered.
        * @param aEngine WV Engine server instance
        * @param aObserver The observer.
        * @param aType aServiceType
        * @param aReceiveNew determines if new pushed messages are received.
        *        If EFalse then new messages are filtered out and 
        *        responses to own requests are deliverd only.
        * @param aPriority Observer priority. Refer to CActive priority.
        */
        IMPORT_C void RegisterL( RImpsEng& aEngine,
                                 MImpsPureHandler2* aObserver,
                                 TImpsServiceType aType = EImpsServicePresence,
                                 TBool aReceiveNew = ETrue,
                                 TInt aPriority = CActive::EPriorityStandard );



        /**
        * Unregisters the listener object and disconnects from the server.
        */
        IMPORT_C void Unregister();

        /**
        * Send pure transaction content
        * Only primitives that belong to the presence service are allowed,
        * otherwise leaves with KImpsErrorUnknownMessageType.
        * If content size exceeds the maximum, 
        * leaves with KImpsErrorMessageTooBig.
        * Max. content size can be retrieved by calling 
        * method MaxTransactionContentSizeL()
        * @param aContent UTF-8 coded transaction content in XML format
        */
        IMPORT_C TInt SendPureDataL( const TDesC8& aContent );
      
        /**
        * Pointer to the pure data handler
        * @return handler
        */
        MImpsPureHandler2* Handler();

    private:

       /**
        * Registers the listener object for Presence events and connects to
        * the Symbian Server.
        * @param aEngine WV Engine server instance
        * @param aHandler the observer
        * @return general error code
        */
        TInt DoRegister( RImpsEng& aEngine,
                         CImpsHandler2* aHandler );

    private: // data

        CImpsPureCommand2*             iCommand;
        MImpsPureHandler2*             iPureCallback;
       
    private: // friend classes
        friend class CImpsPureCommand2;
    
    };

// CLASS DECLARATION

/**
* MImpsPureHandler2
*
* Abstract interface for handling the notify events from the server.
* User derives his class from this and implements the methods below.
*/

class MImpsPureHandler2
    {

    public: // New functions

        /**
        * Observer method for pure message content.
        * @param aOpId operation id received in SendPureDataL. If this is 0,
        *        then the HandlePureDataL was initated by SAP.
        * @param aBuffer UTF-8 coded message content in XML format
        * @param aCspId CSP session identifier
        */
        virtual void HandlePureDataL( TInt aOpId,
                                      const TDesC8& aBuffer,
                                      TImpsCspIdentifier& aCspId )  = 0;

    };

#endif // RIMPSPURECLI_H

// End of file