diff -r 000000000000 -r f5a58ecadc66 servicediscoveryandcontrol/pnp/test/upnp/Client/upnpplugin/src/cupnpeventnotifier.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/servicediscoveryandcontrol/pnp/test/upnp/Client/upnpplugin/src/cupnpeventnotifier.cpp Tue Feb 02 01:12:20 2010 +0200 @@ -0,0 +1,74 @@ +// Copyright (c) 2008-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: +// + + +#include +#include "upnpsubconnevents.h" +#include "cupnpeventnotifier.h" + +CUPnPEventNotifier::CUPnPEventNotifier(MUPnPEventNotification& aEvent,RSubConnection& aSubConnection) + : CActive( EPriorityStandard ), + iNotification( aEvent ), iSubConnection ( aSubConnection ), iClearParams(EFalse) + { + CActiveScheduler::Add(this); + } + +/* Issues the active call for monitoring the subconnection */ +void CUPnPEventNotifier::Notify() + { + if(IsActive()) + return ; + + // Issues the active request.The incoming data is stored in iEventNotificationBuf + iSubConnection.EventNotification(iEventNotificationBuf, EFalse, iStatus); + SetActive(); + } + +/* When a packet arrives in the sub-connection then the familyId is extracted + and calls OnNotification of CUPnPServiceDiscovery/CUPnPServicePublisher which calls + NotifyResults of respective class + */ +void CUPnPEventNotifier::RunL() + { + User::LeaveIfError( iStatus.Int() ); + CSubConNotificationEvent* event = CSubConNotificationEvent::NewL(iEventNotificationBuf); + CUPnPSubConnEvent* responseEvent = static_cast(event); + CleanupStack::PushL (TCleanupItem(CUPnPSubConnEvent::CleanupSubConnEvent,responseEvent)); + TUint32 familyId = responseEvent->GetFamily(); + + Notify (); + + iNotification.OnNotificationL(familyId); + CleanupStack::PopAndDestroy(responseEvent); + } + +/* Issues the asynchronous cancel request for event notification*/ +void CUPnPEventNotifier::DoCancel() + { + iSubConnection.CancelEventNotification(); + } + +TInt CUPnPEventNotifier::RunError( TInt aError ) + { + _LIT(KErrorLog, "SubConnection Notification Error %d"); + // upnplogger code to be added + RDebug::Print( KErrorLog , aError ); + return KErrNone ; + } + +CUPnPEventNotifier::~CUPnPEventNotifier() + { + Cancel(); + }