--- /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 <badesca.h>
+
+#include <ximpbase.h>
+#include <ximpidentity.h>
+#include <ximpprotocolconnectionhost.h>
+
+#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
+