--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/traceservices/tracefw/ulogger/src/uloggerserver/uloggerserver.h Fri Jan 22 11:06:30 2010 +0200
@@ -0,0 +1,190 @@
+// 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:
+// ULogger Server header file
+//
+//
+
+/**
+ @file
+ @internalTechnology
+ @prototype
+*/
+
+#ifndef ULOGGERSERVER_H
+#define ULOGGERSERVER_H
+
+#include "outputframework.h" // COutputFramework
+#include "uloggerconfigmanager.h" // CConfig, CConfigSettingsIter, MConfigObserver
+#include "uloggershared.h"
+#include "uloggerwatcher.h"
+#include "pluginallocator.h"
+#include "inputframework.h"
+#include <d32btrace.h> // RBTrace
+
+namespace Ulogger {
+
+
+enum TFilter
+{
+ EPrimaryFilter = 1,
+ ESecondaryFilter
+};
+
+
+enum TULoggerSrvPanics
+{
+ EUnknownPanic = 1
+};
+
+
+/** CULoggerServer server class.
+This class is responsible for maintaining the server state.
+*/
+class CULoggerServer : public CServer2,
+ public MDataWatcherObserver,
+ public MInputFrameworkObserver
+ {
+ public:
+
+ static CULoggerServer* NewLC(TInt aPriority);
+ ~CULoggerServer();
+
+ //own methods
+ static TInt StartServer();
+ void IncrementSessions();
+ void DecrementSessions();
+
+ //from CActive
+ TInt RunError(TInt aError);
+
+ //from MInputFrameworkObserver
+ ControlData* ProcessCommandL(TCommand aOpCode, RArray<TPtrC8>& aArguments);
+ void DoPostProcessing(TCommand aCmd);
+
+ //From MDataWatcher
+ void DataNotification();
+
+ //server stuff
+ TBool ServerState();
+
+ //actions
+ void RunAsService(TBool aRunAsService); // Not implemented yet
+ TInt Start(); //this is actually only called from inside the server, or by the test framework.
+ TInt Stop();
+ TInt RestartOutputting();
+ void ReadBufferL(); //this is actually only called from inside the server, or by the test framework.
+
+
+ //filters
+ TInt GetActiveFilters(RArray<TUint32>& aListBuffer,TInt aFilterType);
+ TInt SetActiveFilter(RArray<TUint32> aCategory, TInt aFilterType);
+ TInt RemoveActiveFilter(RArray<TUint32>& aValue, const TInt aFilterType);
+ TInt SetSecondaryFiltering(const TDesC8& aEnabled);
+ TInt GetSecondaryFiltering(TBool& aEnabled);
+
+ //plugins
+ TInt SetPluginSettings(const TDesC8& aPluginname, RArray<TPtrC8>& aListBuffer);
+ TInt RemovePluginSettingsL(const TDesC8& aPluginName);
+ TInt GetActiveOutputPlugin(RArray<TPtrC8>& aListBuffer);
+ TInt SetActiveOutputPlugin(const TDesC8& aPluginname);
+ TInt GetInstalledOutputPlugins(RArray<TPtrC8>& aListBuffer);
+ TInt DeActivateInputPlugin(const TDesC8& aPluginname);
+ TInt GetActiveInputPlugin(RArray<TPtrC8>& aListBuffer);
+ TInt SetActiveInputPlugin(const TDesC8& aPluginname);
+ TInt GetInstalledInputPlugins(RArray<TPtrC8>& aListBuffer);
+
+ //buffers
+ TInt GetOptionsSettingsL(const TDesC8& aMedianame, RArray<TPtrC8>& aListBuffer);
+ TInt GetBufandDataNotifyValuesL(const TDesC8& aSetting,TInt& value);
+ TInt SetBufferMode(const TDesC8& aValue);
+ TInt SetBufferSize(TInt aSize);
+ TInt SetDataNotificationSize(TInt aSize);
+
+private:
+ //server related stuff
+ CULoggerServer(TInt aPriority);
+ void ConstructL();
+ static TInt StartServerL();
+ static void PanicServer(TULoggerSrvPanics aPanic);
+ static void PanicClient(const RMessage2& aMessage, TULoggerSrvPanics aPanic);
+ void ShutDownServer();
+ void RequestCancel();
+ //from CServer2
+ CSession2* NewSessionL(const TVersion& aVersion,const RMessage2& aMessage) const;
+
+ //on boot things
+ TInt TraceSettingsOnBoot();
+ TInt ResetBtracePrimaryFilters(RBTrace& aBTrace);
+
+ //action related things
+
+ //other configs
+ void GetOptionsSettingsL(RArray<TPtrC8>& aListBuffer,const TDesC8& aSetting);
+ TInt SetTraceSettings(const TDesC8& aValue, const TDesC8& aSetting);
+
+ //framework stuff
+ void InitializeFrameworksL();
+ void PrepareControlDataPayloadL(RBuf8& aPayloadBuf, const RArray<TPtrC8>& aArray);
+ void PrepareControlDataPayloadL(RBuf8& aPayloadBuf, const RArray<TUint32>& aArray);
+
+ //config file stuff
+// CConfig* CreateConfig(TFileName aFilePath);
+// void InitializeConfigFileL();
+// TInt CheckConfigFile(const TDesC& aFileName,const TDesC& aDirPath,TFileName& aFilePath);
+// void CopyFileToSystemDrive(TFileName& aFilePath);
+
+ //plugin stuff
+ TInt DeActivateOutputPlugin(const TDesC8& aPluginname);
+ void FilterPlugins(TPluginFilter aFilter, RArray<TPtrC8>& aPluginList);
+ TBool CheckPluginExists(TPtrC8& aPluginName, TPluginFilter aPluginFilter);
+ void GetPluginAndSettingsL(TDes8& aPluginName, RPointerArray<TPluginConfiguration>* aSettings, TPluginFilter aPluginFilter);
+ void AsynchDataRequest();
+
+ //filter related stuff
+ ControlData* SetPrimaryFilters(RArray<TPtrC8> &aArguments);
+ TInt GetValues(const TDesC8& aSectionName, RArray<TPtrC8>& aListBuffer);
+private:
+ //data
+ TInt iRunAsService;
+ TInt iSessionCounter;
+
+ /** config API */
+ //CConfig* iConfig;
+ CConfigFileManager* iConfigManager;
+ /** Output Framework */
+ COutputFramework* iOutputFramework;
+ /** Input Framework main object. */
+ CInputFramework* iInputFramework;
+ /** Data Watcher */
+ CULoggerWatcher* iDataWatcher;
+ /** Plugin Allocator */
+ CPluginAllocator* iPluginAllocator;
+
+ RImplInfoPtrArray iPluginArray;
+
+ //BTrace
+ RBTrace iTrace;
+ TInt iBufferSize;
+ TBool iBtraceOpen;
+ TInt iDataNotification;
+ TFileName iUserFilePath;
+ TFileName iConfigFilePath;
+ TBool iUserFile;
+ TBool iConfigFile;
+ TBool iIsBooting;
+ };
+
+}//namespace
+
+#endif // ULOGGERSERVER_H