voipplugins/sipimresolver/inc/sipimresolver.h
author Pat Downey <patd@symbian.org>
Wed, 01 Sep 2010 12:29:57 +0100
branchRCL_3
changeset 22 d38647835c2e
parent 0 a4daefaec16c
permissions -rw-r--r--
Revert incorrect RCL_3 drop: Revision: 201033 Kit: 201035

/*
* Copyright (c) 2009 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:  header file for sipimresolver
*
*/


#ifndef C_SIPIMRESOLVER_H
#define C_SIPIMRESOLVER_H


#include <implementationproxy.h>
#include <sipresolvedclient2.h>


/**
 *  Class for aiding SIP Client Resolver component to route the incoming
 *  invites to Instant Messaging (IM) according to request headers and
 *  content. It also takes relevant phone state variables into account
 *  when resolving.
 *
 *  @code
 *   CSipImResolver* imResolver = CSipImResolver::NewL();
 *   TBool match = imResolver->MatchRequestL( method, *requestUri, headers,
 *       *content, contentType, resolvedClientUid );
 *  @endcode
 *
 *  @lib sipimresolver.lib
 *  @since S60 v5.0
 */
class CSipImResolver : public CSIPResolvedClient2
    {

public:

    /**
     * Two-phased constructor.
     */
    static CSipImResolver* NewL();

    /**
     * Destructor.
     */
	virtual	~CSipImResolver();

// from base class CSIPResolvedClient2

    /**
     * From CSIPResolvedClient2
     * Defined in a base class
     */
    TBool MatchAcceptContactsL( RStringF aMethod,
                                const CUri8& aRequestUri,
                                const RPointerArray<CSIPHeaderBase>& aHeaders,
                                const TDesC8& aContent,
                                const CSIPContentTypeHeader* aContentType,
                                TUid& aClientUid );

    /**
     * From CSIPResolvedClient2
     * Defined in a base class
     */
    TBool MatchEventL( RStringF aMethod,
                       const CUri8& aRequestUri,
                       const RPointerArray<CSIPHeaderBase>& aHeaders,
                       const TDesC8& aContent,
                       const CSIPContentTypeHeader* aContentType,
                       TUid& aClientUid );

    /**
     * From CSIPResolvedClient2
     * Defined in a base class
     */
    TBool MatchRequestL( RStringF aMethod,
                         const CUri8& aRequestUri,
                         const RPointerArray<CSIPHeaderBase>& aHeaders,
                         const TDesC8& aContent,
                         const CSIPContentTypeHeader* aContentType,
                         TUid& aClientUid );

    /**
     * From CSIPResolvedClient2
     * Defined in a base class
     */
    TBool ConnectSupported();

    /**
     * From CSIPResolvedClient2
     * Defined in a base class
     */
    void ConnectL( const TUid& aClientUid );

    /**
     * From CSIPResolvedClient2
     * Defined in a base class
     */
    void CancelConnect( const TUid& aClientUid );

    /**
     * From CSIPResolvedClient2
     * Defined in a base class
     */
    RPointerArray<CSIPContentTypeHeader> SupportedContentTypesL();

    /**
     * From CSIPResolvedClient2
     * Defined in a base class
     */
    RPointerArray<CSdpMediaField> SupportedSdpMediasL();

    /**
     * From CSIPResolvedClient2
     * Defined in a base class
     */
    void AddClientSpecificHeadersForOptionsResponseL(
        RPointerArray<CSIPHeaderBase>& aHeaders );

private:

    CSipImResolver();

private: // data

    /**
     * Application UID
     */
    TUid iApplicationUID;
    };

#endif // C_SIPIMRESOLVER_H