diff -r 000000000000 -r 094583676ce7 presadap12/impsplugin/src/presencepublishing/cimpsprotocolpresencepublishing.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/presadap12/impsplugin/src/presencepublishing/cimpsprotocolpresencepublishing.cpp Thu Dec 17 08:41:52 2009 +0200 @@ -0,0 +1,346 @@ +/* +* 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: IMPS Protocol Publishing implementation for Presence Framework +* +*/ + + +#include + +#include +#include +#include + +#include "cimpsprotocolpresencepublishing.h" +#include "ImpsDebugPrint.h" +#include "cimpspluginconnectionmanager.h" +#include "csubscribeownpresencerequest.h" +#include "cpresencenotificationhandler.h" +#include "cunsubscribeownpresencerequest.h" +#include "cpublishownpresencerequest.h" +#include "csubscribepresencewatcherlistrequest.h" +#include "cupdateownpresencesubscriptionpifrequest.h" +#include "impspluginpanics.h" + + + +// ======== MEMBER FUNCTIONS ======== + +// --------------------------------------------------------------------------- +// CImpsProtocolPresencePublishing::GetInterface() +// --------------------------------------------------------------------------- +// +TAny* CImpsProtocolPresencePublishing::GetInterface( + TInt32 aInterfaceId, + TIfGetOps aOptions ) + { + IMPS_DP( D_IMPS_LIT( "CImpsProtocolPresentityGroups::GetInterface() Start" ) ); + + + if ( aInterfaceId == MProtocolPresencePublishing::KInterfaceId ) + { + MProtocolPresencePublishing* self = this; + return self; + } + + if ( aOptions == MXIMPBase::EPanicIfUnknown ) + { + User::Panic( KImpsProtocolPresencePublishing, KErrExtensionNotSupported ); + } + + IMPS_DP( D_IMPS_LIT( "CImpsProtocolPresencePublishing::GetInterface() End" ) ); + return NULL; + } + + +// --------------------------------------------------------------------------- +// CImpsProtocolPresencePublishing::GetInterface() +// --------------------------------------------------------------------------- +// +const TAny* CImpsProtocolPresencePublishing::GetInterface( + TInt32 aInterfaceId, + TIfGetOps aOptions ) const + { + IMPS_DP( D_IMPS_LIT( "CImpsProtocolPresentityGroups::GetInterface() Start" ) ); + + if ( aInterfaceId == MProtocolPresencePublishing::KInterfaceId ) + { + const MProtocolPresencePublishing* self = this; + return self; + } + + if ( aOptions == MXIMPBase::EPanicIfUnknown ) + { + User::Panic( KImpsProtocolPresencePublishing, KErrExtensionNotSupported ); + } + + IMPS_DP( D_IMPS_LIT( "CImpsProtocolPresencePublishing::GetInterface() End" ) ); + return NULL; + } + + +// --------------------------------------------------------------------------- +// CImpsProtocolPresencePublishing::NewInstanceLC() +// --------------------------------------------------------------------------- +// +TInt32 CImpsProtocolPresencePublishing::GetInterfaceId() const + { + IMPS_DP( D_IMPS_LIT( "CImpsProtocolPresencePublishing::GetInterfaceId() Start-End" ) ); + return MProtocolPresencePublishing::KInterfaceId; + } + +// --------------------------------------------------------------------------- +// CImpsProtocolPresencePublishing::CImpsProtocolPresencePublishing() +// --------------------------------------------------------------------------- +// +CImpsProtocolPresencePublishing::CImpsProtocolPresencePublishing( + MImpsPrtPluginConnectionManager& aConnMan ) + : iConnMan( aConnMan ) + { + IMPS_DP( D_IMPS_LIT( "Publishing::CImpsProtocolPresencePublishing() Start" ) ); + IMPS_DP( D_IMPS_LIT( "Publishing::CImpsProtocolPresencePublishing() End" ) ); + } + + +// --------------------------------------------------------------------------- +// CImpsProtocolPresencePublishing::ConstructL() +// --------------------------------------------------------------------------- +// +void CImpsProtocolPresencePublishing::ConstructL() + { + IMPS_DP( D_IMPS_LIT( "CImpsProtocolPresencePublishing::ConstructL() Start" ) ); + + //iNotificationHandler = CPresenceNotificationHandler::NewL( iConnMan ); + + + IMPS_DP( D_IMPS_LIT( "CImpsProtocolPresencePublishing::ConstructL() End" ) ); + } + + +// --------------------------------------------------------------------------- +// CImpsProtocolPresencePublishing::NewL() +// --------------------------------------------------------------------------- +// +CImpsProtocolPresencePublishing* CImpsProtocolPresencePublishing::NewL( + MImpsPrtPluginConnectionManager& aConnMan ) + + { + IMPS_DP( D_IMPS_LIT( "CImpsProtocolPresencePublishing::NewL() Start" ) ); + + CImpsProtocolPresencePublishing* self = + new( ELeave ) CImpsProtocolPresencePublishing( aConnMan ); + CleanupStack::PushL( self ); + self->ConstructL( ); + CleanupStack::Pop( self ); + + IMPS_DP( D_IMPS_LIT( "CImpsProtocolPresencePublishing::NewL() End" ) ); + return self; + } + + +// --------------------------------------------------------------------------- +// CImpsProtocolPresencePublishing::~CImpsProtocolPresencePublishing() +// --------------------------------------------------------------------------- +// +CImpsProtocolPresencePublishing::~CImpsProtocolPresencePublishing() + { + IMPS_DP( D_IMPS_LIT( "Publishing::~CImpsProtocolPresencePublishing() Start" ) ); + + //delete iNotificationHandler; + + IMPS_DP( D_IMPS_LIT( "Publishing::~CImpsProtocolPresencePublishing() End" ) ); + } + + +// --------------------------------------------------------------------------- +// CImpsProtocolPresencePublishing::DoSubscribeOwnPresenceL() +// --------------------------------------------------------------------------- +// +void CImpsProtocolPresencePublishing::DoSubscribeOwnPresenceL( + const MPresenceInfoFilter& aPif, + TXIMPRequestId aReqId ) + { + IMPS_DP( D_IMPS_LIT( "Publishing::DoSubscribeOwnPresenceL() Start" ) ); + + CreateDataHandlerL(); + + iConnMan.ReserveSpaceForOneMoreRequestL(); + + CSubscribeOwnPresenceRequest* req = + CSubscribeOwnPresenceRequest::NewLC( iConnMan, aReqId ); + + CleanupStack::Check( req ); + + req->SubscribeOwnPresenceL( aPif ); + + iConnMan.AddRequest( req ); + + CleanupStack::Pop( req ); + + + + IMPS_DP( D_IMPS_LIT( "Publishing::DoSubscribeOwnPresenceL() End" ) ); + } + + + +// --------------------------------------------------------------------------- +// CImpsProtocolPresencePublishing::DoUnsubscribeOwnPresenceL() +// --------------------------------------------------------------------------- +// +void CImpsProtocolPresencePublishing::DoUnsubscribeOwnPresenceL( + TXIMPRequestId aReqId ) + { + IMPS_DP( D_IMPS_LIT( "Publishing::DoUnsubscribeOwnPresenceL() Start" ) ); + + CreateDataHandlerL(); + + iConnMan.ReserveSpaceForOneMoreRequestL(); + + CUnSubscribeOwnPresenceRequest* req = + CUnSubscribeOwnPresenceRequest::NewLC( iConnMan, aReqId ); + + CleanupStack::Check( req ); + + req->UnSubscribeOwnPresenceL(); + + iConnMan.AddRequest( req ); + CleanupStack::Pop( req ); + + + IMPS_DP( D_IMPS_LIT( "Publishing::DoUnsubscribeOwnPresenceL() End" ) ); + } + + + +// --------------------------------------------------------------------------- +// CImpsProtocolPresencePublishing::DoUpdateOwnPresenceSubscriptionL() +// --------------------------------------------------------------------------- +// +void CImpsProtocolPresencePublishing::DoUpdateOwnPresenceSubscriptionPifL( + const MPresenceInfoFilter& aPif, + TXIMPRequestId aReqId ) + { + IMPS_DP( D_IMPS_LIT( "Publishing::DoUpdateOwnPresenceSubscriptionPifL() Start" ) ); + + CreateDataHandlerL(); + + iConnMan.ReserveSpaceForOneMoreRequestL(); + + CUpdateOwnPresenceSubscriptionPifRequest* req = + CUpdateOwnPresenceSubscriptionPifRequest::NewLC( iConnMan, aReqId ); + + CleanupStack::Check( req ); + + req->UpdateOwnPresenceSubscriptionPifL( aPif ); + + iConnMan.AddRequest( req ); + CleanupStack::Pop( req ); + + IMPS_DP( D_IMPS_LIT( "Publishing::DoUpdateOwnPresenceSubscriptionPifL() End" ) ); + } + + + +// --------------------------------------------------------------------------- +// CImpsProtocolPresencePublishing::DoPublishOwnPresenceL() +// --------------------------------------------------------------------------- +// +void CImpsProtocolPresencePublishing::DoPublishOwnPresenceL( + const MPresenceInfo& aPresence, + TXIMPRequestId aReqId ) + { + IMPS_DP( D_IMPS_LIT( "Publishing::DoPublishOwnPresenceL() Start" ) ); + + CreateDataHandlerL(); + + iConnMan.ReserveSpaceForOneMoreRequestL(); + + CPublishOwnPresencerequest* req = + CPublishOwnPresencerequest::NewLC( iConnMan, aReqId ); + + CleanupStack::Check( req ); + + req->PublishOwnPresenceL( aPresence ); + + iConnMan.AddRequest( req ); + CleanupStack::Pop( req ); + + IMPS_DP( D_IMPS_LIT( "Publishing::DoPublishOwnPresenceL() End" ) ); + } + +// --------------------------------------------------------------------------- +// CImpsProtocolPresencePublishing::DoSubscribePresenceWatcherListL() +// --------------------------------------------------------------------------- +// +void CImpsProtocolPresencePublishing::DoSubscribePresenceWatcherListL( + TXIMPRequestId aReqId ) + { + IMPS_DP( D_IMPS_LIT( "Publishing::DoSubscribePresenceWatcherListL() Start" ) ); + + + CreateDataHandlerL(); + + iConnMan.ReserveSpaceForOneMoreRequestL(); + + CSubscribePresenceWatcherListRequest* req = + CSubscribePresenceWatcherListRequest::NewLC( iConnMan, aReqId ); + + CleanupStack::Check( req ); + + req->SubscribePresenceWatcherListL(); + + iConnMan.AddRequest( req ); + CleanupStack::Pop( req ); + + IMPS_DP( D_IMPS_LIT( "Publishing::DoSubscribePresenceWatcherListL() End" ) ); + } + + +// --------------------------------------------------------------------------- +// CImpsProtocolPresencePublishing::DoUnsubscribePresenceWatcherListL() +// --------------------------------------------------------------------------- +// +void CImpsProtocolPresencePublishing::DoUnsubscribePresenceWatcherListL( + TXIMPRequestId aReqId ) + { + IMPS_DP( D_IMPS_LIT( "Publishing::DoUnsubscribePresenceWatcherListL() Start" ) ); + + iConnMan.HandleToHost().HandleRequestCompleted( aReqId, KErrNone ); + + IMPS_DP( D_IMPS_LIT( "Publishing::DoUnsubscribePresenceWatcherListL() End" ) ); + } + +// --------------------------------------------------------------------------- +// CImpsProtocolPresencePublishing::CreateDataHandlerL() +// --------------------------------------------------------------------------- +// +void CImpsProtocolPresencePublishing::CreateDataHandlerL() + { + IMPS_DP_TXT( "Publishing::CreateDataHandler() Start" ); + if ( !( iConnMan.IsDataHandlerCreatedL() ) ) + { + iConnMan.ManufactureDataHandlerL(); + + IMPS_DP_TXT( "Publishing::Start Incoming Event Listener() " ); + + } + + IMPS_DP_TXT( "Publishing::CreateDataHandler() End" ); + } + + + +// End of file +