ximpfw/presence/srcpresencefrontend/srcpresencemanager/presencepublishingimp.cpp
author Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Thu, 17 Dec 2009 08:54:49 +0200
changeset 0 e6b17d312c8b
permissions -rw-r--r--
Revision: 200949 Kit: 200951

/*
* Copyright (c) 2006,2007 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:  Implementation of MPresenceManagement
 *
*/

#include "presencepublishingimp.h"
#include "presenceinfoimp.h"
#include "presenceinfofilterimp.h"
#include "ximpobjecthelpers.h"
#include "presenceoperationdefs.h"
#include "ximpcontextinternal.h"


// ============================ MEMBER FUNCTIONS =============================

// ---------------------------------------------------------------------------
// CPresencePublishingImp::NewL()
// ---------------------------------------------------------------------------
//
CPresencePublishingImp* CPresencePublishingImp::NewL( 
    MXIMPContextInternal& aContext)
    {
    CPresencePublishingImp* self = 
        new( ELeave ) CPresencePublishingImp( aContext);

    return self;
    }

// ---------------------------------------------------------------------------
// Implement supported interface access.
// ---------------------------------------------------------------------------
//
XIMPIMP_IF_BASE_GET_INTERFACE_BEGIN( CPresencePublishingImp, 
                                     MPresencePublishing )
XIMPIMP_IF_BASE_GET_INTERFACE_END()


XIMPIMP_IF_BASE_GET_CONST_INTERFACE_BEGIN( CPresencePublishingImp, 
                                           MPresencePublishing )
XIMPIMP_IF_BASE_GET_INTERFACE_END()

// ---------------------------------------------------------------------------
// CPresencePublishingImp::~CPresencePublishingImp()
// ---------------------------------------------------------------------------
//
CPresencePublishingImp::~CPresencePublishingImp()
    {
    //iContext not own
    }


// ---------------------------------------------------------------------------
// CPresencePublishingImp::CPresencePublishingImp()
// ---------------------------------------------------------------------------
//
CPresencePublishingImp::CPresencePublishingImp(
    MXIMPContextInternal& aContext)
    : iContext( aContext)
    {
    }
    
// ---------------------------------------------------------------------------
// From class MPresencePublishing.
// CPresencePublishingImp::SubscribeOwnPresenceL()
// ---------------------------------------------------------------------------
//
TXIMPRequestId CPresencePublishingImp::SubscribeOwnPresenceL( 
                                            const MPresenceInfoFilter& aPif )
    {
    HBufC8* pifPack = PackPresenceInfoFilterLC( aPif );

    TXIMPRequestId reqId =
        iContext.QueueOperationL( NPresenceOps::EPrSubscribeOwnPresence,
                                   *pifPack );
    CleanupStack::PopAndDestroy( pifPack );

    return reqId;    
    }

// ---------------------------------------------------------------------------
// From class MPresencePublishing.
// CPresencePublishingImp::UnsubscribeOwnPresenceL()
// ---------------------------------------------------------------------------
//
TXIMPRequestId CPresencePublishingImp::UnsubscribeOwnPresenceL()
    {
    return iContext.QueueOperationL( NPresenceOps::EPrUnsubscribeOwnPresence, 
                                      KNullDesC8 );
    }

// ---------------------------------------------------------------------------
// From class MPresencePublishing.
// CPresencePublishingImp::PublishOwnPresenceL()
// ---------------------------------------------------------------------------
//
TXIMPRequestId CPresencePublishingImp::PublishOwnPresenceL(
    const MPresenceInfo& aPresence )
    {
    HBufC8* docPack = PackPresenceDocLC( aPresence );

    TXIMPRequestId reqId =
        iContext.QueueOperationL( NPresenceOps::EPrPublishOwnPresence,
                                   *docPack );
    CleanupStack::PopAndDestroy( docPack );

    return reqId;
    }



// ---------------------------------------------------------------------------
// From class MPresencePublishing.
// CPresencePublishingImp::SubscribePresenceWatcherListL()
// ---------------------------------------------------------------------------
//
TXIMPRequestId CPresencePublishingImp::SubscribePresenceWatcherListL()
    {
    return iContext.QueueOperationL(
                           NPresenceOps::EPrSubscribePresenceWatcherList,
                           KNullDesC8 );    
    }

// ---------------------------------------------------------------------------
// From class MPresencePublishing.
// CPresencePublishingImp::UnsubscribePresenceWatcherListL()
// ---------------------------------------------------------------------------
//
TXIMPRequestId CPresencePublishingImp::UnsubscribePresenceWatcherListL()
    {
    return iContext.QueueOperationL(
                           NPresenceOps::EPrUnsubscribePresenceWatcherList,
                           KNullDesC8 );    
    }


// ---------------------------------------------------------------------------
// CPresencePublishingImp::PackPresenceDocLC()
// ---------------------------------------------------------------------------
//
HBufC8* CPresencePublishingImp::PackPresenceDocLC(
    const MPresenceInfo& aPresence )
    {
    const CPresenceInfoImp* docImp = 
    TXIMPGetImpClassOrPanic< const CPresenceInfoImp >::From( aPresence );
    
    HBufC8* pack = TXIMPObjectPacker< const CPresenceInfoImp >::PackL( *docImp );
    CleanupStack::PushL( pack );

    return pack;
    }

// ---------------------------------------------------------------------------
// CPresencePublishingImp::PackPresenceDocLC()
// ---------------------------------------------------------------------------
//
HBufC8* CPresencePublishingImp::PackPresenceInfoFilterLC(
    const MPresenceInfoFilter& aPif )
    {
    const CPresenceInfoFilterImp* pifImp = 
    TXIMPGetImpClassOrPanic< const CPresenceInfoFilterImp >::From( aPif );    
    
    HBufC8* pack = TXIMPObjectPacker< CPresenceInfoFilterImp>::PackL( *pifImp );
    CleanupStack::PushL( pack );

    return pack;
    }