ncdengine/provider/server/src/ncddependencyinfo.cpp
changeset 0 ba25891c3a9e
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/ncdengine/provider/server/src/ncddependencyinfo.cpp	Thu Dec 17 08:51:10 2009 +0200
@@ -0,0 +1,218 @@
+/*
+* Copyright (c) 2006-2008 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:   CNcdDependencyInfo
+*
+*/
+
+
+#include <s32strm.h>
+
+#include "ncddependencyinfo.h"
+#include "ncdnodeidentifier.h"
+#include "catalogsutils.h"
+
+
+CNcdDependencyInfo* CNcdDependencyInfo::NewL( const TDesC& aName, 
+                                              const TDesC& aVersion, 
+                                              const TDesC& aUid,
+                                              CNcdNodeIdentifier* aIdentifier )
+    {
+    CNcdDependencyInfo* self = 
+        CNcdDependencyInfo::NewLC( aName, aVersion, aUid, aIdentifier );
+    CleanupStack::Pop( self );
+    return self;            
+    }
+    
+CNcdDependencyInfo* CNcdDependencyInfo::NewLC( const TDesC& aName, 
+                                               const TDesC& aVersion, 
+                                               const TDesC& aUid,
+                                               CNcdNodeIdentifier* aIdentifier )
+    {
+    CleanupStack::PushL( aIdentifier ); 
+    CNcdDependencyInfo* self = 
+        new( ELeave ) CNcdDependencyInfo( aIdentifier );
+    CleanupStack::Pop( aIdentifier );
+    CleanupStack::PushL( self );
+    self->ConstructL( aName, aVersion, aUid );
+    return self;            
+    }
+
+void CNcdDependencyInfo::ConstructL( const TDesC& aName, 
+                                     const TDesC& aVersion, 
+                                     const TDesC& aUid )
+    {
+    DLTRACEIN((""));
+
+    TInt uid( 0 );
+    
+    // Error is ignored on purpose, if the given text doesn't contain
+    // a hex int then uid is set a 0
+    TRAP_IGNORE( uid = DesHexToIntL( aUid ) );
+    DLTRACE(( _L("aUid: %S was converted to %x"), &aUid, uid ));
+    iUid.iUid = uid;
+
+    iName = aName.AllocL();
+    iVersion = aVersion.AllocL();        
+    }
+
+
+CNcdDependencyInfo* CNcdDependencyInfo::NewL( const TDesC& aName, 
+                                              const TDesC& aVersion, 
+                                              TUid aUid,
+                                              CNcdNodeIdentifier* aIdentifier )
+    {
+    CNcdDependencyInfo* self = 
+        CNcdDependencyInfo::NewLC( aName, aVersion, aUid, aIdentifier );
+    CleanupStack::Pop( self );
+    return self;            
+    }
+    
+CNcdDependencyInfo* CNcdDependencyInfo::NewLC( const TDesC& aName, 
+                                               const TDesC& aVersion, 
+                                               TUid aUid,
+                                               CNcdNodeIdentifier* aIdentifier )
+    {
+    CleanupStack::PushL( aIdentifier );    
+    CNcdDependencyInfo* self = 
+        new( ELeave ) CNcdDependencyInfo( aIdentifier );
+    CleanupStack::Pop( aIdentifier );
+    CleanupStack::PushL( self );
+    self->ConstructL( aName, aVersion, aUid );
+    return self;            
+    }
+
+void CNcdDependencyInfo::ConstructL( const TDesC& aName, 
+                                     const TDesC& aVersion, 
+                                     TUid aUid )
+    {
+    DLTRACEIN(("aUid: %x", aUid.iUid));
+    
+    iUid.iUid = aUid.iUid;
+
+    iName = aName.AllocL();
+    iVersion = aVersion.AllocL();
+    }
+
+
+CNcdDependencyInfo* CNcdDependencyInfo::NewL( RReadStream& aReadStream )
+    {
+    CNcdDependencyInfo* self = 
+        CNcdDependencyInfo::NewLC( aReadStream );
+    CleanupStack::Pop( self );
+    return self;            
+    }
+    
+CNcdDependencyInfo* CNcdDependencyInfo::NewLC( RReadStream& aReadStream )
+    {
+    CNcdDependencyInfo* self = 
+        new( ELeave ) CNcdDependencyInfo( NULL );
+    CleanupStack::PushL( self );
+    self->ConstructL( aReadStream );
+    return self;            
+    }
+
+void CNcdDependencyInfo::ConstructL( RReadStream& aReadStream )
+    {
+    InternalizeL( aReadStream );
+    }
+
+
+CNcdDependencyInfo::CNcdDependencyInfo( CNcdNodeIdentifier* aIdentifier ): 
+    CBase(), 
+    iIdentifier( aIdentifier ),
+    iDependencyState( ENcdDependencyMissing )
+    {
+    
+    }
+    
+CNcdDependencyInfo::~CNcdDependencyInfo()
+    {
+    delete iName;
+    delete iVersion;
+    delete iIdentifier;
+    }
+
+
+const TDesC& CNcdDependencyInfo::Name() const
+    {
+    return *iName;
+    }    
+
+const TDesC& CNcdDependencyInfo::Version() const
+    {
+    return *iVersion;
+    }
+    
+TUid CNcdDependencyInfo::Uid() const
+    {
+    return iUid;
+    }
+
+
+const CNcdNodeIdentifier* CNcdDependencyInfo::Identifier() const
+    {
+    return iIdentifier;
+    }
+
+
+void CNcdDependencyInfo::SetDependencyState( TNcdDependencyState aState )
+    {
+    DLTRACEIN(("aState: %d", aState));
+    iDependencyState = aState;
+    }
+
+
+TNcdDependencyState CNcdDependencyInfo::DependencyState() const
+    {
+    DLTRACEIN(("Current state: %d", iDependencyState));
+    return iDependencyState;
+    }
+
+
+void CNcdDependencyInfo::InternalizeL( RReadStream& aReadStream )
+    {
+    DLTRACEIN((""));
+    InternalizeDesL( iName, aReadStream );
+    InternalizeDesL( iVersion, aReadStream );
+    iUid.iUid = aReadStream.ReadInt32L();
+    delete iIdentifier;
+    iIdentifier = NULL;
+    
+    if ( aReadStream.ReadInt8L() )
+        {
+        iIdentifier = CNcdNodeIdentifier::NewL( aReadStream );
+        }
+        
+    iDependencyState = static_cast<TNcdDependencyState>( 
+        aReadStream.ReadInt32L() );
+    }
+    
+
+void CNcdDependencyInfo::ExternalizeL( RWriteStream& aWriteStream ) const
+    {
+    DLTRACEIN((""));
+    ExternalizeDesL( Name(), aWriteStream );
+    ExternalizeDesL( Version(), aWriteStream );
+    aWriteStream.WriteInt32L( Uid().iUid );
+    if ( Identifier() == NULL )
+        {
+        aWriteStream.WriteInt8L( EFalse );
+        }
+    else
+        {
+        aWriteStream.WriteInt8L( ETrue );
+        Identifier()->ExternalizeL( aWriteStream );
+        }
+    aWriteStream.WriteInt32L( iDependencyState );
+    }