diff -r 000000000000 -r ba25891c3a9e ncdengine/provider/server/src/ncdnodeseenimpl.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/ncdengine/provider/server/src/ncdnodeseenimpl.cpp Thu Dec 17 08:51:10 2009 +0200 @@ -0,0 +1,146 @@ +/* +* Copyright (c) 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: +* +*/ + + +#include "ncdnodeseenimpl.h" +#include "catalogsdebug.h" +#include "ncdnodefunctionids.h" +#include "catalogsbasemessage.h" +#include "ncdnodeimpl.h" +#include "ncdnodelink.h" + +CNcdNodeSeen* CNcdNodeSeen::NewL( CNcdNodeSeenInfo& aSeenInfo, CNcdNode& aNode ) + { + CNcdNodeSeen* self = NewLC( aSeenInfo, aNode ); + CleanupStack::Pop( self ); + return self; + } + + +CNcdNodeSeen* CNcdNodeSeen::NewLC( CNcdNodeSeenInfo& aSeenInfo, CNcdNode& aNode ) + { + CNcdNodeSeen* self = new ( ELeave ) CNcdNodeSeen( aSeenInfo, aNode ); + CleanupClosePushL( *self ); + self->ConstructL(); + return self; + } + +CNcdNodeSeen::CNcdNodeSeen( CNcdNodeSeenInfo& aSeenInfo, CNcdNode& aNode ) : + iSeenInfo( aSeenInfo ), + iOwnerNode( aNode ) + { + } + +void CNcdNodeSeen::ConstructL() + { + } + +CNcdNodeSeen::~CNcdNodeSeen() + { + DLTRACEIN(("")); + } + + +TBool CNcdNodeSeen::IsSeenL() + { + DLTRACEIN(("")); + return iSeenInfo.IsSeenL( iOwnerNode.Identifier() ); + } + + +void CNcdNodeSeen::SetSeenL() + { + DLTRACEIN(("")); + iSeenInfo.SetSeenL( iOwnerNode.Identifier() ); + } + +void CNcdNodeSeen::ReceiveMessage( + MCatalogsBaseMessage* aMessage, + TInt aFunctionNumber ) + { + DLTRACEIN(("")) + + DASSERT( aMessage ); + + TInt trapError( KErrNone ); + + switch( aFunctionNumber ) + { + case NcdNodeFunctionIds::ENcdInternalize: + TRAP( trapError, InternalizeRequestL( *aMessage ) ); + break; + + case NcdNodeFunctionIds::ENcdNodeSeenSetSeen: + TRAP( trapError, SetSeenRequestL( *aMessage ) ); + break; + + case NcdNodeFunctionIds::ENcdRelease: + ReleaseRequest( *aMessage ); + break; + + default: + DLERROR(("Unidentified function request")); + DASSERT( EFalse ); + break; + } + + if ( trapError != KErrNone ) + { + // Because something went wrong the complete has not been + // yet called for the message. + // So, inform the client about the error. + aMessage->CompleteAndRelease( trapError ); + } + } + + +void CNcdNodeSeen::CounterPartLost( const MCatalogsSession& /*aSession*/ ) + { + DLTRACEIN(("")); + } + + +void CNcdNodeSeen::InternalizeRequestL( MCatalogsBaseMessage& aMessage ) + { + DLTRACEIN(("")); + TBool seen = IsSeenL(); + aMessage.CompleteAndReleaseL( seen, KErrNone ); + } + + +void CNcdNodeSeen::SetSeenRequestL( MCatalogsBaseMessage& aMessage ) + { + DLTRACEIN(("")); + SetSeenL(); + aMessage.CompleteAndRelease( KErrNone ); + } + + +void CNcdNodeSeen::ReleaseRequest( MCatalogsBaseMessage& aMessage ) const + { + DLTRACEIN(("")); + + // Decrease the reference count for this object. + // When the reference count reaches zero, this object will be destroyed + // and removed from the session. + MCatalogsSession& requestSession( aMessage.Session() ); + TInt handle( aMessage.Handle() ); + aMessage.CompleteAndRelease( KErrNone ); + requestSession.RemoveObject( handle ); + + DLTRACEOUT(("")); + }