ncdengine/provider/server/src/ncdnodeseenimpl.cpp
changeset 0 ba25891c3a9e
--- /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((""));
+    }