loggingservices/eventlogger/LogCli/src/logclientop.cpp
changeset 0 08ec8eefde2f
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/loggingservices/eventlogger/LogCli/src/logclientop.cpp	Fri Jan 22 11:06:30 2010 +0200
@@ -0,0 +1,558 @@
+// Copyright (c) 2002-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 "logclientop.h"
+
+// User includes
+#include "logservcli.h"
+
+
+CLogClientOp::CLogClientOp(RLogSession& aSession, CLogPackage& aPackage, TLogOperationType aType, TInt aPriority)
+:	CActive(aPriority), iPackage(aPackage), iSession(aSession)
+//
+//	Base client side operation
+//
+	{
+	iData().iOperationType = aType;
+	CActiveScheduler::Add(this);
+	}
+
+CLogClientOp::~CLogClientOp()
+	{
+	Cancel();
+	}
+
+void CLogClientOp::Start(TRequestStatus& aObserver)
+//
+//	Start the ball rolling - InitiateRequestToServerL called in RunL so it can leave
+//
+	{
+	iObserver = &aObserver;
+	aObserver = KRequestPending;
+
+	// Just complete ourselves
+	TRequestStatus* status = &iStatus;
+	User::RequestComplete(status, KErrNone);
+	SetActive();
+	}
+
+TInt CLogClientOp::Start()
+//
+//	Synchronous way of running operations
+//
+	{
+	TInt result = KErrNone;
+	TRAP(result, result = DoStartL());
+	iData().iOperationId = KLogNullOperationId;
+	return result;
+	}
+
+TInt CLogClientOp::DoStartL()
+	{
+	iData().iOperationId = iSession.AllocateIdOperation();
+	InitiateRequestToServerL();
+	User::WaitForRequest(iStatus);
+	//We have an asynchronous request completed synchronously. 
+	//We have to do some iStatus cleanups.
+	TRequestStatus status;//New TRequestStatus local variable. The default constructor will set iFlags data memebr to 0.
+	status = iStatus.Int();//Only iStatus data member getzs initialized.
+	iStatus = status;//Return back the same iStatus value but with iFlags data memeber cleared.
+	User::LeaveIfError(iStatus.Int());
+
+	TInt result = iStatus.Int();
+	CompleteL(result);
+	iData().iOperationId = KLogNullOperationId;
+	return result;
+	}
+
+void CLogClientOp::RunL()
+	{
+	LOGTEXT2("CLogClientOp::RunL(%d)", iStatus.Int());
+
+	User::LeaveIfError(iStatus.Int());
+
+	// Set ourselves up - make the actual request?
+	if (iData().iOperationId == KLogNullOperationId)
+		{
+		// Get the id of the operation
+		iData().iOperationId = iSession.AllocateIdOperation();
+
+		InitiateRequestToServerL();
+		SetActive();
+		}
+	else
+		{
+		// Finish off the request
+		iData().iOperationId = KLogNullOperationId;
+		TInt result = iStatus.Int();
+		CompleteL(result);
+		User::RequestComplete(iObserver, result);
+		}
+
+	LOGTEXT("CLogClientOp::RunL() - end");
+	}
+
+void CLogClientOp::DoCancel()
+//
+//	Cancel the request to the server if we initiated one
+//
+	{
+	LOGTEXT2("CLogClientOp::DoCancel() - OperationId: %d", iData().iOperationId);
+
+	// Cancel this operation if we have an id
+	if (iData().iOperationId > 0)
+		{
+		iSession.Send(ELogOperationCancel, TIpcArgs(&iData));
+		//
+		iData().iOperationId = KLogNullOperationId;
+		}
+
+	User::RequestComplete(iObserver, KErrCancel);
+	LOGTEXT("CLogClientOp::DoCancel() - end");
+	}
+
+// Just complete the observer on error
+TInt CLogClientOp::RunError(TInt aError)
+	{
+	iData().iOperationId = KLogNullOperationId;
+	User::RequestComplete(iObserver, aError);
+	return KErrNone;
+	}
+
+void CLogClientOp::CompleteL(TInt& /*aCompletionCode*/)
+//
+//	By default operations don't do anything after completion
+//
+	{
+	}
+
+void CLogClientOp::FetchResultFromServerL(TInt aResult)
+	{
+	iPackage.ResizeL(aResult);
+	TPtr8 ptr(iPackage.Ptr());
+
+	User::LeaveIfError(iSession.Send(ELogOperationGetResult, TIpcArgs(&iData,&ptr,ptr.Length())));
+	}
+
+/** 
+ * Initialise the data slot values
+ */
+void CLogClientOp::SetDataSlot1(TInt aValue)
+	{
+	iData().iDataSlot1 = aValue;
+	}
+
+
+
+
+
+
+
+CLogAddEventClientOp::CLogAddEventClientOp(RLogSession& aSession, CLogPackage& aPackage, TInt aPriority)
+:	CLogClientOp(aSession, aPackage, ELogOperationEventAdd, aPriority)
+	{
+	}
+
+void CLogAddEventClientOp::Start(CLogEvent& aEvent, TRequestStatus& aObserver)
+	{
+	iEvent = &aEvent;
+	CLogClientOp::Start(aObserver);
+	}
+
+void CLogAddEventClientOp::InitiateRequestToServerL()
+	{
+	iPackage.SetLogEventL(*iEvent);
+	iSession.Send(ELogOperationInitiate, TIpcArgs(&iData, &iPackage.Ptr()), iStatus);
+	}
+
+void CLogAddEventClientOp::CompleteL(TInt& aResult)
+	{
+	FetchResultFromServerL(aResult);
+	iPackage.GetLogEventL(*iEvent);
+	}
+
+
+
+
+
+
+
+CLogChangeEventClientOp::CLogChangeEventClientOp(RLogSession& aSession, CLogPackage& aPackage, TInt aPriority)
+:	CLogClientOp(aSession, aPackage, ELogOperationEventChange, aPriority)
+	{
+	}
+
+void CLogChangeEventClientOp::Start(const CLogEvent& aEvent, TRequestStatus& aObserver)
+	{
+	iEvent = &aEvent;
+	CLogClientOp::Start(aObserver);
+	}
+
+void CLogChangeEventClientOp::InitiateRequestToServerL()
+	{
+	iPackage.SetLogEventL(*iEvent);
+	iSession.Send(ELogOperationInitiate, TIpcArgs(&iData, &iPackage.Ptr()), iStatus);
+	}
+
+
+
+
+
+
+CLogGetEventClientOp::CLogGetEventClientOp(RLogSession& aSession, CLogPackage& aPackage, TInt aPriority)
+:	CLogClientOp(aSession, aPackage, ELogOperationEventGet, aPriority)
+	{
+	}
+
+void CLogGetEventClientOp::Start(CLogEvent& aEvent, TRequestStatus& aObserver)
+	{
+	iEvent = &aEvent;
+	CLogClientOp::Start(aObserver);
+	}
+
+void CLogGetEventClientOp::InitiateRequestToServerL()
+	{
+	iSession.Send(ELogOperationInitiate, TIpcArgs(&iData, iEvent->Id()), iStatus);
+	}
+
+void CLogGetEventClientOp::CompleteL(TInt& aResult)
+	{
+	FetchResultFromServerL(aResult);
+	iPackage.GetLogEventL(*iEvent);
+	}
+
+
+
+
+
+
+
+CLogDeleteEventClientOp::CLogDeleteEventClientOp(RLogSession& aSession, CLogPackage& aPackage, TInt aPriority)
+:	CLogClientOp(aSession, aPackage, ELogOperationEventDelete, aPriority)
+	{
+	}
+
+void CLogDeleteEventClientOp::Start(TLogId aId, TRequestStatus& aObserver)
+	{
+	iId = aId;
+	CLogClientOp::Start(aObserver);
+	}
+
+void CLogDeleteEventClientOp::InitiateRequestToServerL()
+	{
+	iSession.Send(ELogOperationInitiate, TIpcArgs(&iData, iId), iStatus);
+	}
+
+
+
+
+
+
+
+
+
+CLogAddTypeClientOp::CLogAddTypeClientOp(RLogSession& aSession, CLogPackage& aPackage, TInt aPriority)
+:	CLogClientOp(aSession, aPackage, ELogOperationTypeAdd, aPriority)
+	{
+	}
+
+void CLogAddTypeClientOp::Start(const CLogEventType& aEventType, TRequestStatus& aObserver)
+	{
+	iEventType = &aEventType;
+	CLogClientOp::Start(aObserver);
+	}
+
+void CLogAddTypeClientOp::InitiateRequestToServerL()
+	{
+	iPackage.SetLogEventTypeL(*iEventType);
+	iSession.Send(ELogOperationInitiate, TIpcArgs(&iData, &iPackage.Ptr()), iStatus);
+	}
+
+
+
+
+
+
+
+
+CLogChangeTypeClientOp::CLogChangeTypeClientOp(RLogSession& aSession, CLogPackage& aPackage, TInt aPriority)
+:	CLogClientOp(aSession, aPackage, ELogOperationTypeChange, aPriority)
+	{
+	}
+
+void CLogChangeTypeClientOp::Start(const CLogEventType& aEventType, TRequestStatus& aObserver)
+	{
+	iEventType = &aEventType;
+	CLogClientOp::Start(aObserver);
+	}
+
+void CLogChangeTypeClientOp::InitiateRequestToServerL()
+	{
+	iPackage.SetLogEventTypeL(*iEventType);
+	iSession.Send(ELogOperationInitiate, TIpcArgs(&iData, &iPackage.Ptr()), iStatus);
+	}
+
+
+
+
+
+
+
+CLogGetTypeClientOp::CLogGetTypeClientOp(RLogSession& aSession, CLogPackage& aPackage, TInt aPriority)
+:	CLogClientOp(aSession, aPackage, ELogOperationTypeGet, aPriority)
+	{
+	}
+
+void CLogGetTypeClientOp::Start(CLogEventType& aEventType, TRequestStatus& aObserver)
+	{
+	iEventType = &aEventType;
+	CLogClientOp::Start(aObserver);
+	}
+
+void CLogGetTypeClientOp::InitiateRequestToServerL()
+	{
+	TIpcArgs args(&iData, iEventType->Uid().iUid);
+	iSession.Send(ELogOperationInitiate, args, iStatus);
+	}
+
+void CLogGetTypeClientOp::CompleteL(TInt& aResult)
+	{
+	FetchResultFromServerL(aResult);
+	iPackage.GetLogEventTypeL(*iEventType);
+	}
+
+
+
+
+
+
+
+
+CLogDeleteTypeClientOp::CLogDeleteTypeClientOp(RLogSession& aSession, CLogPackage& aPackage, TInt aPriority)
+:	CLogClientOp(aSession, aPackage, ELogOperationTypeDelete, aPriority)
+	{
+	}
+
+void CLogDeleteTypeClientOp::Start(TUid aUid, TRequestStatus& aObserver)
+	{
+	iUid = aUid;
+	CLogClientOp::Start(aObserver);
+	}
+
+void CLogDeleteTypeClientOp::InitiateRequestToServerL()
+	{
+	TIpcArgs args(&iData, iUid.iUid);
+	iSession.Send(ELogOperationInitiate, args, iStatus);
+	}
+
+
+
+
+
+
+
+
+CLogGetConfigClientOp::CLogGetConfigClientOp(RLogSession& aSession, CLogPackage& aPackage, TInt aPriority)
+:	CLogClientOp(aSession, aPackage, ELogOperationConfigGet, aPriority)
+	{
+	}
+
+void CLogGetConfigClientOp::Start(TLogConfig& aConfig, TRequestStatus& aObserver)
+	{
+	iConfig = &aConfig;
+	CLogClientOp::Start(aObserver);
+	}
+
+void CLogGetConfigClientOp::InitiateRequestToServerL()
+	{
+	iSession.Send(ELogOperationInitiate, TIpcArgs(&iData), iStatus);
+	}
+
+void CLogGetConfigClientOp::CompleteL(TInt& aResult)
+	{
+	FetchResultFromServerL(aResult);
+	iPackage.GetLogConfigL(*iConfig);
+	}
+
+
+
+
+
+
+
+
+
+CLogChangeConfigClientOp::CLogChangeConfigClientOp(RLogSession& aSession, CLogPackage& aPackage, TInt aPriority)
+:	CLogClientOp(aSession, aPackage, ELogOperationConfigChange, aPriority)
+	{
+	}
+
+void CLogChangeConfigClientOp::Start(const TLogConfig& aConfig, TRequestStatus& aObserver)
+	{
+	iConfig = &aConfig;
+	CLogClientOp::Start(aObserver);
+	}
+
+void CLogChangeConfigClientOp::InitiateRequestToServerL()
+	{
+	iPackage.SetLogConfigL(*iConfig);
+	iSession.Send(ELogOperationInitiate, TIpcArgs(&iData, &iPackage.Ptr()), iStatus);
+	}
+
+
+
+
+
+
+
+
+
+CLogClearLogClientOp::CLogClearLogClientOp(RLogSession& aSession, CLogPackage& aPackage, TInt aPriority) :
+	CLogClientOp(aSession, aPackage, ELogOperationClearLog, aPriority)
+	{
+	}
+
+void CLogClearLogClientOp::Start(const TTime& aDate, TRequestStatus& aObserver
+#ifdef SYMBIAN_ENABLE_EVENTLOGGER_DUALSIM	
+		, TSimId aSimId
+#endif		
+		)
+	{
+	iDate = aDate; // UTC
+#ifdef SYMBIAN_ENABLE_EVENTLOGGER_DUALSIM	
+	iSimId = aSimId;
+#endif	
+	CLogClientOp::Start(aObserver);
+	}
+
+void CLogClearLogClientOp::InitiateRequestToServerL()
+	{
+	const TInt64 dateVal(iDate.Int64());
+#ifdef SYMBIAN_ENABLE_EVENTLOGGER_DUALSIM	
+	TIpcArgs args(&iData, I64LOW(dateVal), I64HIGH(dateVal), iSimId);
+#else
+	TIpcArgs args(&iData, I64LOW(dateVal), I64HIGH(dateVal));
+#endif
+	iSession.Send(ELogOperationInitiate, args, iStatus);
+	}
+
+
+
+
+
+
+
+
+CLogClearRecentClientOp::CLogClearRecentClientOp(RLogSession& aSession, CLogPackage& aPackage, TInt aPriority)
+:	CLogClientOp(aSession, aPackage, ELogOperationClearRecent, aPriority)
+	{
+	}
+
+void CLogClearRecentClientOp::Start(TLogRecentList aList, TRequestStatus& aObserver
+#ifdef SYMBIAN_ENABLE_EVENTLOGGER_DUALSIM	
+		, TSimId aSimId
+#endif		
+		)
+	{
+	iList = aList;
+#ifdef SYMBIAN_ENABLE_EVENTLOGGER_DUALSIM	
+	iSimId = aSimId;
+#endif	
+	CLogClientOp::Start(aObserver);
+	}
+
+void CLogClearRecentClientOp::InitiateRequestToServerL()
+	{
+#ifdef SYMBIAN_ENABLE_EVENTLOGGER_DUALSIM	
+	iSession.Send(ELogOperationInitiate, TIpcArgs(&iData, iList, iSimId), iStatus);
+#else
+	iSession.Send(ELogOperationInitiate, TIpcArgs(&iData, iList), iStatus);
+#endif
+	}
+
+
+
+
+
+
+
+CLogMaintainClientOp::CLogMaintainClientOp(RLogSession& aSession, CLogPackage& aPackage, TInt aPriority)
+:	CLogClientOp(aSession, aPackage, ELogOperationMaintain, aPriority)
+	{
+	}
+
+void CLogMaintainClientOp::InitiateRequestToServerL()
+	{
+	iSession.Send(ELogOperationInitiate, TIpcArgs(&iData), iStatus);
+	}
+
+
+
+
+
+
+
+
+CLogViewSetupClientOp::CLogViewSetupClientOp(RLogSession& aSession, CLogPackage& aPackage, TInt aPriority)
+:	CLogClientOp(aSession, aPackage, ELogOperationViewSetup, aPriority)
+	{
+	}
+
+TInt CLogViewSetupClientOp::Start(TLogViewId aViewId, const CLogFilterList& aFilterList, TInt aParam, TLogFilterConstructionType aFilterConstructionType)
+	{
+	// Synchronous!
+	iViewId = aViewId;
+	iFilterList = &aFilterList;
+	iParam = aParam;
+	SetDataSlot1(aFilterConstructionType);
+	//
+	return CLogClientOp::Start();
+	}
+
+void CLogViewSetupClientOp::InitiateRequestToServerL()
+	{
+	TIpcArgs args (&iData, iViewId, &iPackage.Ptr(), iParam);
+	iSession.Send(ELogViewOperationInitiate, args, iStatus);
+	}
+
+
+
+
+
+
+
+CLogViewRemoveEventClientOp::CLogViewRemoveEventClientOp(RLogSession& aSession, CLogPackage& aPackage, TInt aPriority)
+:	CLogClientOp(aSession, aPackage, ELogOperationViewRemoveEvent, aPriority)
+	{
+	}
+
+TInt CLogViewRemoveEventClientOp::Start(TLogViewId aViewId, TLogId aId)
+	{
+	// Synchronous!
+	iViewId = aViewId;
+	iId = aId;
+	return CLogClientOp::Start();
+	}
+
+void CLogViewRemoveEventClientOp::InitiateRequestToServerL()
+	{
+	TIpcArgs args(&iData, iViewId, iId, 0);
+	iSession.Send(ELogViewOperationInitiate, args, iStatus);
+	}
+
+
+
+
+