diff -r 000000000000 -r 08ec8eefde2f loggingservices/eventlogger/LogCli/src/logclientop.cpp --- /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); + } + + + + +