sl@0: // Copyright (c) 2002-2009 Nokia Corporation and/or its subsidiary(-ies). sl@0: // All rights reserved. sl@0: // This component and the accompanying materials are made available sl@0: // under the terms of "Eclipse Public License v1.0" sl@0: // which accompanies this distribution, and is available sl@0: // at the URL "http://www.eclipse.org/legal/epl-v10.html". sl@0: // sl@0: // Initial Contributors: sl@0: // Nokia Corporation - initial contribution. sl@0: // sl@0: // Contributors: sl@0: // sl@0: // Description: sl@0: // sl@0: sl@0: #include "logclientop.h" sl@0: sl@0: // User includes sl@0: #include "logservcli.h" sl@0: sl@0: sl@0: CLogClientOp::CLogClientOp(RLogSession& aSession, CLogPackage& aPackage, TLogOperationType aType, TInt aPriority) sl@0: : CActive(aPriority), iPackage(aPackage), iSession(aSession) sl@0: // sl@0: // Base client side operation sl@0: // sl@0: { sl@0: iData().iOperationType = aType; sl@0: CActiveScheduler::Add(this); sl@0: } sl@0: sl@0: CLogClientOp::~CLogClientOp() sl@0: { sl@0: Cancel(); sl@0: } sl@0: sl@0: void CLogClientOp::Start(TRequestStatus& aObserver) sl@0: // sl@0: // Start the ball rolling - InitiateRequestToServerL called in RunL so it can leave sl@0: // sl@0: { sl@0: iObserver = &aObserver; sl@0: aObserver = KRequestPending; sl@0: sl@0: // Just complete ourselves sl@0: TRequestStatus* status = &iStatus; sl@0: User::RequestComplete(status, KErrNone); sl@0: SetActive(); sl@0: } sl@0: sl@0: TInt CLogClientOp::Start() sl@0: // sl@0: // Synchronous way of running operations sl@0: // sl@0: { sl@0: TInt result = KErrNone; sl@0: TRAP(result, result = DoStartL()); sl@0: iData().iOperationId = KLogNullOperationId; sl@0: return result; sl@0: } sl@0: sl@0: TInt CLogClientOp::DoStartL() sl@0: { sl@0: iData().iOperationId = iSession.AllocateIdOperation(); sl@0: InitiateRequestToServerL(); sl@0: User::WaitForRequest(iStatus); sl@0: //We have an asynchronous request completed synchronously. sl@0: //We have to do some iStatus cleanups. sl@0: TRequestStatus status;//New TRequestStatus local variable. The default constructor will set iFlags data memebr to 0. sl@0: status = iStatus.Int();//Only iStatus data member getzs initialized. sl@0: iStatus = status;//Return back the same iStatus value but with iFlags data memeber cleared. sl@0: User::LeaveIfError(iStatus.Int()); sl@0: sl@0: TInt result = iStatus.Int(); sl@0: CompleteL(result); sl@0: iData().iOperationId = KLogNullOperationId; sl@0: return result; sl@0: } sl@0: sl@0: void CLogClientOp::RunL() sl@0: { sl@0: LOGTEXT2("CLogClientOp::RunL(%d)", iStatus.Int()); sl@0: sl@0: User::LeaveIfError(iStatus.Int()); sl@0: sl@0: // Set ourselves up - make the actual request? sl@0: if (iData().iOperationId == KLogNullOperationId) sl@0: { sl@0: // Get the id of the operation sl@0: iData().iOperationId = iSession.AllocateIdOperation(); sl@0: sl@0: InitiateRequestToServerL(); sl@0: SetActive(); sl@0: } sl@0: else sl@0: { sl@0: // Finish off the request sl@0: iData().iOperationId = KLogNullOperationId; sl@0: TInt result = iStatus.Int(); sl@0: CompleteL(result); sl@0: User::RequestComplete(iObserver, result); sl@0: } sl@0: sl@0: LOGTEXT("CLogClientOp::RunL() - end"); sl@0: } sl@0: sl@0: void CLogClientOp::DoCancel() sl@0: // sl@0: // Cancel the request to the server if we initiated one sl@0: // sl@0: { sl@0: LOGTEXT2("CLogClientOp::DoCancel() - OperationId: %d", iData().iOperationId); sl@0: sl@0: // Cancel this operation if we have an id sl@0: if (iData().iOperationId > 0) sl@0: { sl@0: iSession.Send(ELogOperationCancel, TIpcArgs(&iData)); sl@0: // sl@0: iData().iOperationId = KLogNullOperationId; sl@0: } sl@0: sl@0: User::RequestComplete(iObserver, KErrCancel); sl@0: LOGTEXT("CLogClientOp::DoCancel() - end"); sl@0: } sl@0: sl@0: // Just complete the observer on error sl@0: TInt CLogClientOp::RunError(TInt aError) sl@0: { sl@0: iData().iOperationId = KLogNullOperationId; sl@0: User::RequestComplete(iObserver, aError); sl@0: return KErrNone; sl@0: } sl@0: sl@0: void CLogClientOp::CompleteL(TInt& /*aCompletionCode*/) sl@0: // sl@0: // By default operations don't do anything after completion sl@0: // sl@0: { sl@0: } sl@0: sl@0: void CLogClientOp::FetchResultFromServerL(TInt aResult) sl@0: { sl@0: iPackage.ResizeL(aResult); sl@0: TPtr8 ptr(iPackage.Ptr()); sl@0: sl@0: User::LeaveIfError(iSession.Send(ELogOperationGetResult, TIpcArgs(&iData,&ptr,ptr.Length()))); sl@0: } sl@0: sl@0: /** sl@0: * Initialise the data slot values sl@0: */ sl@0: void CLogClientOp::SetDataSlot1(TInt aValue) sl@0: { sl@0: iData().iDataSlot1 = aValue; sl@0: } sl@0: sl@0: sl@0: sl@0: sl@0: sl@0: sl@0: sl@0: CLogAddEventClientOp::CLogAddEventClientOp(RLogSession& aSession, CLogPackage& aPackage, TInt aPriority) sl@0: : CLogClientOp(aSession, aPackage, ELogOperationEventAdd, aPriority) sl@0: { sl@0: } sl@0: sl@0: void CLogAddEventClientOp::Start(CLogEvent& aEvent, TRequestStatus& aObserver) sl@0: { sl@0: iEvent = &aEvent; sl@0: CLogClientOp::Start(aObserver); sl@0: } sl@0: sl@0: void CLogAddEventClientOp::InitiateRequestToServerL() sl@0: { sl@0: iPackage.SetLogEventL(*iEvent); sl@0: iSession.Send(ELogOperationInitiate, TIpcArgs(&iData, &iPackage.Ptr()), iStatus); sl@0: } sl@0: sl@0: void CLogAddEventClientOp::CompleteL(TInt& aResult) sl@0: { sl@0: FetchResultFromServerL(aResult); sl@0: iPackage.GetLogEventL(*iEvent); sl@0: } sl@0: sl@0: sl@0: sl@0: sl@0: sl@0: sl@0: sl@0: CLogChangeEventClientOp::CLogChangeEventClientOp(RLogSession& aSession, CLogPackage& aPackage, TInt aPriority) sl@0: : CLogClientOp(aSession, aPackage, ELogOperationEventChange, aPriority) sl@0: { sl@0: } sl@0: sl@0: void CLogChangeEventClientOp::Start(const CLogEvent& aEvent, TRequestStatus& aObserver) sl@0: { sl@0: iEvent = &aEvent; sl@0: CLogClientOp::Start(aObserver); sl@0: } sl@0: sl@0: void CLogChangeEventClientOp::InitiateRequestToServerL() sl@0: { sl@0: iPackage.SetLogEventL(*iEvent); sl@0: iSession.Send(ELogOperationInitiate, TIpcArgs(&iData, &iPackage.Ptr()), iStatus); sl@0: } sl@0: sl@0: sl@0: sl@0: sl@0: sl@0: sl@0: CLogGetEventClientOp::CLogGetEventClientOp(RLogSession& aSession, CLogPackage& aPackage, TInt aPriority) sl@0: : CLogClientOp(aSession, aPackage, ELogOperationEventGet, aPriority) sl@0: { sl@0: } sl@0: sl@0: void CLogGetEventClientOp::Start(CLogEvent& aEvent, TRequestStatus& aObserver) sl@0: { sl@0: iEvent = &aEvent; sl@0: CLogClientOp::Start(aObserver); sl@0: } sl@0: sl@0: void CLogGetEventClientOp::InitiateRequestToServerL() sl@0: { sl@0: iSession.Send(ELogOperationInitiate, TIpcArgs(&iData, iEvent->Id()), iStatus); sl@0: } sl@0: sl@0: void CLogGetEventClientOp::CompleteL(TInt& aResult) sl@0: { sl@0: FetchResultFromServerL(aResult); sl@0: iPackage.GetLogEventL(*iEvent); sl@0: } sl@0: sl@0: sl@0: sl@0: sl@0: sl@0: sl@0: sl@0: CLogDeleteEventClientOp::CLogDeleteEventClientOp(RLogSession& aSession, CLogPackage& aPackage, TInt aPriority) sl@0: : CLogClientOp(aSession, aPackage, ELogOperationEventDelete, aPriority) sl@0: { sl@0: } sl@0: sl@0: void CLogDeleteEventClientOp::Start(TLogId aId, TRequestStatus& aObserver) sl@0: { sl@0: iId = aId; sl@0: CLogClientOp::Start(aObserver); sl@0: } sl@0: sl@0: void CLogDeleteEventClientOp::InitiateRequestToServerL() sl@0: { sl@0: iSession.Send(ELogOperationInitiate, TIpcArgs(&iData, iId), iStatus); sl@0: } sl@0: sl@0: sl@0: sl@0: sl@0: sl@0: sl@0: sl@0: sl@0: sl@0: CLogAddTypeClientOp::CLogAddTypeClientOp(RLogSession& aSession, CLogPackage& aPackage, TInt aPriority) sl@0: : CLogClientOp(aSession, aPackage, ELogOperationTypeAdd, aPriority) sl@0: { sl@0: } sl@0: sl@0: void CLogAddTypeClientOp::Start(const CLogEventType& aEventType, TRequestStatus& aObserver) sl@0: { sl@0: iEventType = &aEventType; sl@0: CLogClientOp::Start(aObserver); sl@0: } sl@0: sl@0: void CLogAddTypeClientOp::InitiateRequestToServerL() sl@0: { sl@0: iPackage.SetLogEventTypeL(*iEventType); sl@0: iSession.Send(ELogOperationInitiate, TIpcArgs(&iData, &iPackage.Ptr()), iStatus); sl@0: } sl@0: sl@0: sl@0: sl@0: sl@0: sl@0: sl@0: sl@0: sl@0: CLogChangeTypeClientOp::CLogChangeTypeClientOp(RLogSession& aSession, CLogPackage& aPackage, TInt aPriority) sl@0: : CLogClientOp(aSession, aPackage, ELogOperationTypeChange, aPriority) sl@0: { sl@0: } sl@0: sl@0: void CLogChangeTypeClientOp::Start(const CLogEventType& aEventType, TRequestStatus& aObserver) sl@0: { sl@0: iEventType = &aEventType; sl@0: CLogClientOp::Start(aObserver); sl@0: } sl@0: sl@0: void CLogChangeTypeClientOp::InitiateRequestToServerL() sl@0: { sl@0: iPackage.SetLogEventTypeL(*iEventType); sl@0: iSession.Send(ELogOperationInitiate, TIpcArgs(&iData, &iPackage.Ptr()), iStatus); sl@0: } sl@0: sl@0: sl@0: sl@0: sl@0: sl@0: sl@0: sl@0: CLogGetTypeClientOp::CLogGetTypeClientOp(RLogSession& aSession, CLogPackage& aPackage, TInt aPriority) sl@0: : CLogClientOp(aSession, aPackage, ELogOperationTypeGet, aPriority) sl@0: { sl@0: } sl@0: sl@0: void CLogGetTypeClientOp::Start(CLogEventType& aEventType, TRequestStatus& aObserver) sl@0: { sl@0: iEventType = &aEventType; sl@0: CLogClientOp::Start(aObserver); sl@0: } sl@0: sl@0: void CLogGetTypeClientOp::InitiateRequestToServerL() sl@0: { sl@0: TIpcArgs args(&iData, iEventType->Uid().iUid); sl@0: iSession.Send(ELogOperationInitiate, args, iStatus); sl@0: } sl@0: sl@0: void CLogGetTypeClientOp::CompleteL(TInt& aResult) sl@0: { sl@0: FetchResultFromServerL(aResult); sl@0: iPackage.GetLogEventTypeL(*iEventType); sl@0: } sl@0: sl@0: sl@0: sl@0: sl@0: sl@0: sl@0: sl@0: sl@0: CLogDeleteTypeClientOp::CLogDeleteTypeClientOp(RLogSession& aSession, CLogPackage& aPackage, TInt aPriority) sl@0: : CLogClientOp(aSession, aPackage, ELogOperationTypeDelete, aPriority) sl@0: { sl@0: } sl@0: sl@0: void CLogDeleteTypeClientOp::Start(TUid aUid, TRequestStatus& aObserver) sl@0: { sl@0: iUid = aUid; sl@0: CLogClientOp::Start(aObserver); sl@0: } sl@0: sl@0: void CLogDeleteTypeClientOp::InitiateRequestToServerL() sl@0: { sl@0: TIpcArgs args(&iData, iUid.iUid); sl@0: iSession.Send(ELogOperationInitiate, args, iStatus); sl@0: } sl@0: sl@0: sl@0: sl@0: sl@0: sl@0: sl@0: sl@0: sl@0: CLogGetConfigClientOp::CLogGetConfigClientOp(RLogSession& aSession, CLogPackage& aPackage, TInt aPriority) sl@0: : CLogClientOp(aSession, aPackage, ELogOperationConfigGet, aPriority) sl@0: { sl@0: } sl@0: sl@0: void CLogGetConfigClientOp::Start(TLogConfig& aConfig, TRequestStatus& aObserver) sl@0: { sl@0: iConfig = &aConfig; sl@0: CLogClientOp::Start(aObserver); sl@0: } sl@0: sl@0: void CLogGetConfigClientOp::InitiateRequestToServerL() sl@0: { sl@0: iSession.Send(ELogOperationInitiate, TIpcArgs(&iData), iStatus); sl@0: } sl@0: sl@0: void CLogGetConfigClientOp::CompleteL(TInt& aResult) sl@0: { sl@0: FetchResultFromServerL(aResult); sl@0: iPackage.GetLogConfigL(*iConfig); sl@0: } sl@0: sl@0: sl@0: sl@0: sl@0: sl@0: sl@0: sl@0: sl@0: sl@0: CLogChangeConfigClientOp::CLogChangeConfigClientOp(RLogSession& aSession, CLogPackage& aPackage, TInt aPriority) sl@0: : CLogClientOp(aSession, aPackage, ELogOperationConfigChange, aPriority) sl@0: { sl@0: } sl@0: sl@0: void CLogChangeConfigClientOp::Start(const TLogConfig& aConfig, TRequestStatus& aObserver) sl@0: { sl@0: iConfig = &aConfig; sl@0: CLogClientOp::Start(aObserver); sl@0: } sl@0: sl@0: void CLogChangeConfigClientOp::InitiateRequestToServerL() sl@0: { sl@0: iPackage.SetLogConfigL(*iConfig); sl@0: iSession.Send(ELogOperationInitiate, TIpcArgs(&iData, &iPackage.Ptr()), iStatus); sl@0: } sl@0: sl@0: sl@0: sl@0: sl@0: sl@0: sl@0: sl@0: sl@0: sl@0: CLogClearLogClientOp::CLogClearLogClientOp(RLogSession& aSession, CLogPackage& aPackage, TInt aPriority) : sl@0: CLogClientOp(aSession, aPackage, ELogOperationClearLog, aPriority) sl@0: { sl@0: } sl@0: sl@0: void CLogClearLogClientOp::Start(const TTime& aDate, TRequestStatus& aObserver sl@0: #ifdef SYMBIAN_ENABLE_EVENTLOGGER_DUALSIM sl@0: , TSimId aSimId sl@0: #endif sl@0: ) sl@0: { sl@0: iDate = aDate; // UTC sl@0: #ifdef SYMBIAN_ENABLE_EVENTLOGGER_DUALSIM sl@0: iSimId = aSimId; sl@0: #endif sl@0: CLogClientOp::Start(aObserver); sl@0: } sl@0: sl@0: void CLogClearLogClientOp::InitiateRequestToServerL() sl@0: { sl@0: const TInt64 dateVal(iDate.Int64()); sl@0: #ifdef SYMBIAN_ENABLE_EVENTLOGGER_DUALSIM sl@0: TIpcArgs args(&iData, I64LOW(dateVal), I64HIGH(dateVal), iSimId); sl@0: #else sl@0: TIpcArgs args(&iData, I64LOW(dateVal), I64HIGH(dateVal)); sl@0: #endif sl@0: iSession.Send(ELogOperationInitiate, args, iStatus); sl@0: } sl@0: sl@0: sl@0: sl@0: sl@0: sl@0: sl@0: sl@0: sl@0: CLogClearRecentClientOp::CLogClearRecentClientOp(RLogSession& aSession, CLogPackage& aPackage, TInt aPriority) sl@0: : CLogClientOp(aSession, aPackage, ELogOperationClearRecent, aPriority) sl@0: { sl@0: } sl@0: sl@0: void CLogClearRecentClientOp::Start(TLogRecentList aList, TRequestStatus& aObserver sl@0: #ifdef SYMBIAN_ENABLE_EVENTLOGGER_DUALSIM sl@0: , TSimId aSimId sl@0: #endif sl@0: ) sl@0: { sl@0: iList = aList; sl@0: #ifdef SYMBIAN_ENABLE_EVENTLOGGER_DUALSIM sl@0: iSimId = aSimId; sl@0: #endif sl@0: CLogClientOp::Start(aObserver); sl@0: } sl@0: sl@0: void CLogClearRecentClientOp::InitiateRequestToServerL() sl@0: { sl@0: #ifdef SYMBIAN_ENABLE_EVENTLOGGER_DUALSIM sl@0: iSession.Send(ELogOperationInitiate, TIpcArgs(&iData, iList, iSimId), iStatus); sl@0: #else sl@0: iSession.Send(ELogOperationInitiate, TIpcArgs(&iData, iList), iStatus); sl@0: #endif sl@0: } sl@0: sl@0: sl@0: sl@0: sl@0: sl@0: sl@0: sl@0: CLogMaintainClientOp::CLogMaintainClientOp(RLogSession& aSession, CLogPackage& aPackage, TInt aPriority) sl@0: : CLogClientOp(aSession, aPackage, ELogOperationMaintain, aPriority) sl@0: { sl@0: } sl@0: sl@0: void CLogMaintainClientOp::InitiateRequestToServerL() sl@0: { sl@0: iSession.Send(ELogOperationInitiate, TIpcArgs(&iData), iStatus); sl@0: } sl@0: sl@0: sl@0: sl@0: sl@0: sl@0: sl@0: sl@0: sl@0: CLogViewSetupClientOp::CLogViewSetupClientOp(RLogSession& aSession, CLogPackage& aPackage, TInt aPriority) sl@0: : CLogClientOp(aSession, aPackage, ELogOperationViewSetup, aPriority) sl@0: { sl@0: } sl@0: sl@0: TInt CLogViewSetupClientOp::Start(TLogViewId aViewId, const CLogFilterList& aFilterList, TInt aParam, TLogFilterConstructionType aFilterConstructionType) sl@0: { sl@0: // Synchronous! sl@0: iViewId = aViewId; sl@0: iFilterList = &aFilterList; sl@0: iParam = aParam; sl@0: SetDataSlot1(aFilterConstructionType); sl@0: // sl@0: return CLogClientOp::Start(); sl@0: } sl@0: sl@0: void CLogViewSetupClientOp::InitiateRequestToServerL() sl@0: { sl@0: TIpcArgs args (&iData, iViewId, &iPackage.Ptr(), iParam); sl@0: iSession.Send(ELogViewOperationInitiate, args, iStatus); sl@0: } sl@0: sl@0: sl@0: sl@0: sl@0: sl@0: sl@0: sl@0: CLogViewRemoveEventClientOp::CLogViewRemoveEventClientOp(RLogSession& aSession, CLogPackage& aPackage, TInt aPriority) sl@0: : CLogClientOp(aSession, aPackage, ELogOperationViewRemoveEvent, aPriority) sl@0: { sl@0: } sl@0: sl@0: TInt CLogViewRemoveEventClientOp::Start(TLogViewId aViewId, TLogId aId) sl@0: { sl@0: // Synchronous! sl@0: iViewId = aViewId; sl@0: iId = aId; sl@0: return CLogClientOp::Start(); sl@0: } sl@0: sl@0: void CLogViewRemoveEventClientOp::InitiateRequestToServerL() sl@0: { sl@0: TIpcArgs args(&iData, iViewId, iId, 0); sl@0: iSession.Send(ELogViewOperationInitiate, args, iStatus); sl@0: } sl@0: sl@0: sl@0: sl@0: sl@0: