diff -r 000000000000 -r ba25891c3a9e ncdengine/provider/server/src/ncddependencyinfo.cpp --- /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 + +#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( + 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 ); + }