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 <scs/ipcstream.h>
+#include <scs/nullstream.h>
+
+// For KErrSettingNotFound.
+#include<securityerr.h>
+
+// For CRepository class.
+#include <centralrepository.h>
+
+
+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<TInt> Pkg(Value);
+ aMessage.WriteL(2, Pkg);
+
+ break;
+ }
+
+ default:
+ User::Leave(KErrNotSupported);
+ }
+
+ return ETrue;
+ }
+
+
+
+} // End of namespace SecuritySettingsServer
+// End of file