diff -r 000000000000 -r 4e1aa6a622a0 sysstatemgmt/systemstatemgr/cmd/src/ssmcustomcommandinfo.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/sysstatemgmt/systemstatemgr/cmd/src/ssmcustomcommandinfo.cpp Tue Feb 02 00:53:00 2010 +0200 @@ -0,0 +1,184 @@ +// Copyright (c) 2007-2009 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 +#include +#include + +#include "ssmdebug.h" + +/** +Constructor +*/ +EXPORT_C CSsmCustomCommandInfo::CSsmCustomCommandInfo() + : iOrdinal(1) + { + } + +/** +Destructor +*/ +EXPORT_C CSsmCustomCommandInfo::~CSsmCustomCommandInfo() + { + delete iParams; + } + + +/** +Set command info contents + +@param aFileName A Custom Command DLL file name +@param aOrdinal The ordinal to call to return a MSsmCustomCommand object +@param aUnloading Whether to unload the Custom Command DLL immediately when finished or not +@param aRetries The number of times to try calling the Custom Command if unsuccessful +@param aParams Optional user data to be passed to the Custom Command +@leave One of the system-wide error codes. +*/ +EXPORT_C void CSsmCustomCommandInfo::SetL(const TDesC& aFileName, TInt32 aOrdinal, TCmdCustomCommandLibUnloading aUnloading, TInt16 aRetries, const TDesC8& aParams) + { + iFileName = aFileName; + iOrdinal = aOrdinal; + iUnloading = aUnloading; + iRetries = aRetries; + + delete iParams; + iParams = NULL; + if (aParams.Length()) + { + iParams = aParams.AllocL(); + } + } + +/** +Clear command info contents and reset to default values +*/ +EXPORT_C void CSsmCustomCommandInfo::Clear() + { + iFileName = KNullDesC; + iOrdinal = 1; + iUnloading = EUnloadOnCommandCompletion; + iRetries = 0; + + delete iParams; + iParams = NULL; + } + +/** +@return The DLL name, or KNullDesC if empty +*/ +EXPORT_C const TFileName& CSsmCustomCommandInfo::FileName() const + { + return iFileName; + } + +/** +@return The ordinal called to obtain the MSsmCustomCommand object +*/ +EXPORT_C TInt32 CSsmCustomCommandInfo::Ordinal() const + { + return iOrdinal; + } + +/** +@return DLL unloading rule whether to unload the custom command dll after the command has completed or not at all +@see TCmdCustomCommandLibUnloading +*/ +EXPORT_C TCmdCustomCommandLibUnloading CSsmCustomCommandInfo::Unloading() const + { + return iUnloading; + } + +/** +@return Number of retries on failure +*/ +EXPORT_C TInt16 CSsmCustomCommandInfo::Retries() const + { + return iRetries; + } + +/** +@return Params or KNullDesC8 if empty +*/ +EXPORT_C const TPtrC8 CSsmCustomCommandInfo::Params() const + { + TPtrC8 params; + if (iParams) + { + params.Set(*iParams); + } + else + { + params.Set(KNullDesC8); + } + return params; + } + +/** +Overloaded = operator +@return A Custom Command object containing the new values +*/ +EXPORT_C CSsmCustomCommandInfo& CSsmCustomCommandInfo::operator=(const CSsmCustomCommandInfo& aInfo) + { + // protect against self assignment + if( &aInfo != this) + { + // can't do anything with this if it leaves + TRAP_IGNORE(SetL(aInfo.FileName(), aInfo.Ordinal(), aInfo.Unloading(), aInfo.Retries(), aInfo.Params())); + } + + return (*this); + } + +/** +Configures the CSsmCustomCommandInfo object using data contained in a ReadStream +@param aReadStream A read stream containing BIC data +@leave One of the system-wide error codes. +*/ +EXPORT_C void CSsmCustomCommandInfo::InternalizeL(RReadStream& aReadStream) + { + aReadStream >> iFileName; + iOrdinal = aReadStream.ReadInt32L(); + iUnloading = static_cast(aReadStream.ReadUint8L()); + iRetries = aReadStream.ReadInt16L(); + + HBufC8* paramptr = HBufC8::NewLC(aReadStream, KMaxDLLParams); + delete iParams; + iParams = NULL; + if (paramptr->Length()) + { + paramptr->ReAllocL(paramptr->Length()); + iParams = paramptr; + CleanupStack::Pop(); + } + else + { + CleanupStack::PopAndDestroy(); + } + } + +/** +Externalises the CSsmCustomCommandInfo object +@param aWriteStream A write stream to write the object data to +@leave One of the system-wide error codes. +*/ +EXPORT_C void CSsmCustomCommandInfo::ExternalizeL(RWriteStream& aWriteStream) const + { + aWriteStream << iFileName; + aWriteStream.WriteInt32L(Ordinal()); + aWriteStream.WriteUint8L(Unloading()); + aWriteStream.WriteInt16L(Retries()); + aWriteStream << Params(); + } +