diff -r 000000000000 -r 08ec8eefde2f traceservices/tracefw/ulogger/src/uloggerserver/uloggerserver.h --- /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 // 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& 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& aListBuffer,TInt aFilterType); + TInt SetActiveFilter(RArray aCategory, TInt aFilterType); + TInt RemoveActiveFilter(RArray& aValue, const TInt aFilterType); + TInt SetSecondaryFiltering(const TDesC8& aEnabled); + TInt GetSecondaryFiltering(TBool& aEnabled); + + //plugins + TInt SetPluginSettings(const TDesC8& aPluginname, RArray& aListBuffer); + TInt RemovePluginSettingsL(const TDesC8& aPluginName); + TInt GetActiveOutputPlugin(RArray& aListBuffer); + TInt SetActiveOutputPlugin(const TDesC8& aPluginname); + TInt GetInstalledOutputPlugins(RArray& aListBuffer); + TInt DeActivateInputPlugin(const TDesC8& aPluginname); + TInt GetActiveInputPlugin(RArray& aListBuffer); + TInt SetActiveInputPlugin(const TDesC8& aPluginname); + TInt GetInstalledInputPlugins(RArray& aListBuffer); + + //buffers + TInt GetOptionsSettingsL(const TDesC8& aMedianame, RArray& 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& aListBuffer,const TDesC8& aSetting); + TInt SetTraceSettings(const TDesC8& aValue, const TDesC8& aSetting); + + //framework stuff + void InitializeFrameworksL(); + void PrepareControlDataPayloadL(RBuf8& aPayloadBuf, const RArray& aArray); + void PrepareControlDataPayloadL(RBuf8& aPayloadBuf, const RArray& 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& aPluginList); + TBool CheckPluginExists(TPtrC8& aPluginName, TPluginFilter aPluginFilter); + void GetPluginAndSettingsL(TDes8& aPluginName, RPointerArray* aSettings, TPluginFilter aPluginFilter); + void AsynchDataRequest(); + + //filter related stuff + ControlData* SetPrimaryFilters(RArray &aArguments); + TInt GetValues(const TDesC8& aSectionName, RArray& 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