traceservices/tracefw/integ_test/ost/TEF/tracecontroltestplugin/src/te_tracecontroltestplugin.cpp
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/traceservices/tracefw/integ_test/ost/TEF/tracecontroltestplugin/src/te_tracecontroltestplugin.cpp Fri Jan 22 11:06:30 2010 +0200
@@ -0,0 +1,215 @@
+// 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:
+//
+
+
+
+/**
+ @file te_tracecontroltestplugin.cpp
+ @internalTechnology
+*/
+
+#include <e32std.h>
+#include <e32debug.h>
+#include <implementationproxy.h>
+#include "te_tracecontroltestplugin.h"
+
+#if defined(__TEST_LIGHTLOGGER_ENABLED)
+#include "te_lightlogger.h"
+#endif
+
+
+
+
+
+/**
+Public Destructor
+*/
+CTestFileWriter::~CTestFileWriter()
+ {
+ if(iIsOpen)
+ {
+ iLog.Close();
+ }
+ iFs.Close();
+ }
+
+/**
+Creates an instance of CTestFileWriter object
+@return a pointer to the new created CTestFileWriter Object
+@leave KErrNoMemory if no memory
+*/
+CTestFileWriter* CTestFileWriter::NewL()
+ {
+ CTestFileWriter *me = new (ELeave) CTestFileWriter;
+ CleanupStack::PushL(me);
+ me->ConstructL();
+ CleanupStack::Pop();
+ return me;
+ }
+
+void CTestFileWriter::ConstructL()
+ {
+ User::LeaveIfError(iFs.Connect());
+ iIsOpen = EFalse;
+ iErrorCode = 0;
+ iCountDown = 3;
+ iFileName.Copy(KTestLogDefaultFileName);
+ }
+
+//Default constructor
+CTestFileWriter::CTestFileWriter():iMutex(NULL)
+ {
+ }
+
+
+void CTestFileWriter::CloseOutputPlugin()
+ {
+ if(!iIsOpen)
+ {
+ return;
+ }
+ iLog.Flush();
+ iLog.Close();
+ iIsOpen = EFalse;
+ }
+
+void CTestFileWriter::DoClearLog()
+ {
+ OpenLog();
+ if(iIsOpen)
+ {
+ iLog.Close();
+ iIsOpen = EFalse;
+ iFs.Delete(iFileName);
+ }
+ }
+
+TInt CTestFileWriter::ConfigureOutputPlugin(const RPointerArray<TPluginConfiguration>& aConfigs)
+ {
+ CloseOutputPlugin();
+
+ TInt i = aConfigs.Count();
+ while(i-->0)
+ {
+ TPluginConfiguration* set = aConfigs[i];
+ if(set->Key().Compare(KTestOutputPath) == 0)
+ {
+ if(set->Value().Length() < iFileName.MaxLength())
+ {
+ iFileName.Copy(set->Value());
+ }
+ }
+ else if(set->Key().Compare(KErrorCode) == 0)
+ {
+ iErrorCode = KErrGeneral;
+ }
+ }
+ return KErrNone;
+ }
+
+
+TInt CTestFileWriter::OpenLog()
+ {
+ TInt err = KErrNone;
+ if(!iIsOpen)
+ {
+ //Check that the log file exists, if not create a blank one.
+ TInt err = iLog.Open(iFs, iFileName, EFileWrite | EFileShareAny);
+ if(err==KErrPathNotFound || err==KErrNotFound)
+ {
+ err = iFs.MkDirAll(iFileName);
+ if(err!=KErrNone && err!=KErrAlreadyExists)
+ {
+ return err;
+ }
+ err = iLog.Create(iFs, iFileName, EFileWrite | EFileShareAny);
+ }
+ if(err!=KErrNone)
+ {
+ return err;
+ }
+ iIsOpen = ETrue;
+ }
+ return err;
+ }
+
+TInt CTestFileWriter::Write(const TDesC8& aText)
+ {
+ #if defined(__TEST_LIGHTLOGGER_ENABLED) && defined(__VERBOSE_MODE)
+ __TEST_MARK_METHOD("CFileWriter::Write")
+ #endif
+
+ if(!iErrorCode)
+ return WriteToFile(aText);
+ else
+ {
+ if(--iCountDown > 0)
+ return KErrNone;
+ else
+ {
+ RDebug::Printf("Returning error code (%d) from test plugin", iErrorCode);
+ User::InfoPrint(_L("writing with error - ok"));
+ return iErrorCode;
+ }
+ }
+ }
+
+TBool CTestFileWriter::DoOwnProcessing()
+ {
+ return EFalse;
+ }
+
+TInt CTestFileWriter::WriteToFile(const TDesC8& aText)
+ {
+ TInt err = KErrNone;
+ if(!iIsOpen)
+ {
+ err = OpenLog();
+ if(err!=KErrNone)
+ return err;
+ }
+ iLog.Write(0x7FFFFFFF, aText);
+
+ return err;
+ }
+
+
+TAny* CTestFileWriter::GetInterfaceL(CPlugin::TPluginInterface aInterfaceId)
+ {
+ if(aInterfaceId == MOutputPlugin::iInterfaceId)
+ return static_cast<MOutputPlugin*>(this);
+ else
+ return NULL;
+ }
+
+
+
+//ECOM interface implementations
+
+// Map the interface implementation UIDs to implementation factory functions
+const TImplementationProxy ImplementationTable[] =
+ {
+ // {{0x102836BF},CTestFileWriter::NewL}
+ IMPLEMENTATION_PROXY_ENTRY(0x102836BF, CTestFileWriter::NewL)
+ };
+
+
+// Exported proxy for instantiation method resolution.
+EXPORT_C const TImplementationProxy* ImplementationGroupProxy(
+ TInt& aTableCount)
+ {
+ aTableCount = sizeof(ImplementationTable) / sizeof(TImplementationProxy);
+ return ImplementationTable;
+ }