--- /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((""));
+ }