diff -r cf642210ecb7 -r 5b5ca9f4f7b4 cryptomgmtlibs/securityutils/source/secsettings/secsettingsserver/secsettingssession.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/cryptomgmtlibs/securityutils/source/secsettings/secsettingsserver/secsettingssession.cpp Thu Jan 07 13:42:40 2010 +0200 @@ -0,0 +1,115 @@ +/* +* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of the License "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: +* Implements CSecSettingsSession. See class and function definitions for +* more information. +* +*/ + + +/** + @file +*/ + +#include "secsettingsserver.h" +#include +#include + +// For KErrSettingNotFound. +#include + +// For CRepository class. +#include + + +namespace SecuritySettingsServer +{ + +CSecSettingsSession* CSecSettingsSession::NewL(CSecSettingsServer &aServer) +/** + Factory function allocates new instance of CSecSettingsSession. + + @return New, initialized instance of CSecSettingsSession + which is owned by the caller. + */ + { + CSecSettingsSession* self = new(ELeave) CSecSettingsSession(aServer); + CleanupStack::PushL(self); + self->ConstructL(); // CScsSession implementation + CleanupStack::Pop(self); + return self; + } + +CSecSettingsSession::CSecSettingsSession(CSecSettingsServer &aServer) +/** + This private constructor prevents direct instantiation. + */ + : CScsSession(aServer) + { + } + +CSecSettingsSession::~CSecSettingsSession() + { + } + +TBool CSecSettingsSession::DoServiceL(TInt aFunction, const RMessage2& aMessage) +/** + Implement CScsSession by handling the supplied message. + + @param aFunction Function identifier for the repository operations. + @param aMessage Standard server-side handle to message. Not used. + */ + { + + switch (aFunction) + { + case ESettingValue: + { + // Create a CRepository object with the supplied UID. + CRepository* repository = CRepository::NewL(TUid::Uid(aMessage.Int0())); + TInt Value = 0; + + + // Get the value of the setting whose key is supplied as the first argument. + TInt result = repository->Get(aMessage.Int1(), Value); + + delete repository; + + if( result == KErrNotFound ) + { + // Interpreting this as - setting not found. + User::Leave(KErrSettingNotFound); + } + else + { + User::LeaveIfError(result); + } + + TPckgBuf Pkg(Value); + aMessage.WriteL(2, Pkg); + + break; + } + + default: + User::Leave(KErrNotSupported); + } + + return ETrue; + } + + + +} // End of namespace SecuritySettingsServer +// End of file