--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sysstatemgmt/systemstatemgr/cmd/src/ssmcommandutilprovider.cpp Tue Feb 02 00:53:00 2010 +0200
@@ -0,0 +1,122 @@
+// 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 "ssmcommandutilprovider.h"
+#include "ssmdebug.h"
+
+_LIT( KSysMonProxyDLL, "loadsysmon.dll" );
+typedef MSsmLoadSysMon* (*TFuncCreateL)( void );
+
+/**
+Factory method that returns pointer to the object of CSsmCommandUtilProvider.
+*/
+EXPORT_C CSsmCommandUtilProvider* CSsmCommandUtilProvider::NewL()
+ {
+ CSsmCommandUtilProvider* self = new(ELeave) CSsmCommandUtilProvider();
+ CleanupStack::PushL(self);
+ self->ConstructL();
+ CleanupStack::Pop(self);
+ return self;
+ }
+
+/**
+Returns CStartSafe object
+*/
+CSsmStartSafe& CSsmCommandUtilProvider::StartSafe()
+ {
+ return *iStartSafe;
+ }
+
+/**
+DTOR
+*/
+EXPORT_C CSsmCommandUtilProvider::~CSsmCommandUtilProvider()
+ {
+ delete iSysMonSession;
+ delete iStartSafe;
+ iSysMonProxyLib.Close();
+ iFs.Close();
+ }
+
+/**
+Default CTOR
+*/
+CSsmCommandUtilProvider::CSsmCommandUtilProvider()
+ {
+ }
+
+/**
+Returns SysMonSession.
+@return System monitor session.
+@leave KErrNotSupported If NULL is assigned to iSysMonSession.
+@leave One of the system wide error code.
+@see MSsmLoadSysMon
+*/
+MSsmLoadSysMon& CSsmCommandUtilProvider::SysMonSessionL()
+ {
+ if(!iSysMonSession)
+ {
+ // if iSysMonSession is NULL, then sysmon lib is not installed.
+ User::Leave(KErrNotSupported);
+ }
+ if(iSysMonSession)
+ {
+ //close the existing session and send the new one to avoid the memory leak.
+ iSysMonSession->Close();
+ iSysMonSession->OpenL();
+ }
+
+ return *iSysMonSession;
+ }
+
+/**
+This function connects to the RFs if Handle is NULL, and returns the connected RFs.
+@return Connected RFs
+@
+*/
+RFs& CSsmCommandUtilProvider::RfsL()
+ {
+ if (iFs.Handle() == NULL)
+ {
+ SSMLOGLEAVEIFERROR(iFs.Connect()); // if not already connected then connect
+ }
+ return iFs;
+ }
+
+/**
+ Load the dll interfacing between us and the System Monitor component, if installed.
+*/
+void CSsmCommandUtilProvider::LoadMonitorProxyLibL()
+ {
+ if( KErrNone != iSysMonProxyLib.Load(KSysMonProxyDLL) )
+ {
+ return;
+ }
+
+ TFuncCreateL sysMonProxyCreateL = reinterpret_cast<TFuncCreateL>(iSysMonProxyLib.Lookup(1));
+
+ iSysMonSession = sysMonProxyCreateL();
+ }
+
+ /**
+Constructs the object, Creates the startsafe object and SysMonSession.
+*/
+void CSsmCommandUtilProvider::ConstructL()
+ {
+ iStartSafe = CSsmStartSafe::NewL(); // Creates CStartSafe object.
+ LoadMonitorProxyLibL();
+ }
+
+