diff -r e06095241a65 -r 735de8341ce4 vpnengine/eventmediator/src/eventmediator.cpp --- a/vpnengine/eventmediator/src/eventmediator.cpp Wed Sep 01 12:23:21 2010 +0100 +++ b/vpnengine/eventmediator/src/eventmediator.cpp Tue Sep 14 23:16:15 2010 +0300 @@ -23,26 +23,28 @@ * This module contains eventmediator and the services of it. * */ -#include #include "eventmediator.h" +#include "eventmediatorsession.h" +#include "eventmediatorclientservercommon.h" #include "eventlogger.h" -#include "eventmediatordefs.h" #include "sit.h" #include "log_em.h" + #define FIRST_ARGUMENT 0 #define SECOND_ARGUMENT 1 #define THIRD_ARGUMENT 2 #define FOURTH_ARGUMENT 3 + // ============================= CEventMediatorServer ============================= const TUint CEventMediatorServer::iRangeCount = 2; const TInt CEventMediatorServer::iRanges[iRangeCount] = { - CEventMediatorSession::KEventMediatorListen, - CEventMediatorSession::KEventMediatorClearEventLog+1 + KEventMediatorListen, + KEventMediatorClearEventLog+1 }; const TUint8 CEventMediatorServer::iElementIndex[iRangeCount] = @@ -74,23 +76,27 @@ CEventMediatorServer* CEventMediatorServer::NewL() { LOG(Log::Printf(_L("CEventMediatorServer::NewL - begin\n"))); - CEventMediatorServer* server = CEventMediatorServer::NewLC(); - CleanupStack::Pop(); // server + + CEventMediatorServer* self = CEventMediatorServer::NewLC(); + CleanupStack::Pop(self); // server LOG(Log::Printf(_L("CEventMediatorServer::NewL - end\n"))); - return server; + + return self; } CEventMediatorServer* CEventMediatorServer::NewLC() { LOG(Log::Printf(_L("CEventMediatorServer::NewLC - begin\n"))); - CEventMediatorServer* server = new (ELeave) CEventMediatorServer(); - CleanupStack::PushL(server); - server->ConstructL(server); + + CEventMediatorServer* self = new (ELeave) CEventMediatorServer(); + CleanupStack::PushL(self); + self->ConstructL(); + LOG(Log::Printf(_L("CEventMediatorServer::NewLC - end\n"))); - return server; + return self; } -void CEventMediatorServer::ConstructL(CEventMediatorServer* aServer) +void CEventMediatorServer::ConstructL() { RFs fs; User::LeaveIfError(fs.Connect()); @@ -105,7 +111,7 @@ CleanupStack::PopAndDestroy(); // fs - aServer->iLogger = CEventLogger::NewL(this); + iLogger = CEventLogger::NewL(this); iSit = new (ELeave) CSit(this); StartL(KEventMediatorServer); } @@ -128,19 +134,6 @@ delete iSit; } -// ---------------------------------------------------------------------------- -// CEventMediatorServer::StopEventMediator -// Stops Event Mediator service if there are no sessions left. -// ---------------------------------------------------------------------------- -// -void CEventMediatorServer::StopEventMediator(void) - { - if (iSessionCount == 0) - { - LOG(Log::Printf(_L("CEventMediatorServer::StopEventMediator - session count 0, stopping scheduler and thus the server\n"))); - CActiveScheduler::Stop(); - } - } TInt CEventMediatorServer::RunError(TInt aError) { @@ -172,10 +165,51 @@ User::Leave(KErrServerTerminated); } - CSession2* session = CEventMediatorSession::NewL(CONST_CAST(CEventMediatorServer*, this), aMessage); + + CSession2* session = CEventMediatorSession::NewL(const_cast(*this), + IsClientTheSitL(aMessage)); + iSessionCount++; return session; } +void CEventMediatorServer::SessionDeleted(TBool aIsSitSession) + { + TInt normalSessionCount = NormalSessionCount(); + + // If this too is a normal session and is dying, + // decrement the normal session count by one + if (!aIsSitSession) + { + normalSessionCount--; + } + + if (normalSessionCount == 0) + { + // If "normal" (non-sit) sessions are no longer present, + // we complete the task arrival observation request, thus + // causing the SIT to terminate and close its connection + // to this server. This should be the last connection whose + // closing will cause this server to terminate. + // NOTE. KErrCancel cannot be used here as the Event Mediator + // does not report it to the caller + LOG(Log::Printf(_L("CEventMediatorServer::SessionDeleted - normal session count = 0\n"))); + CompleteListener(ETaskArrivedEvent, NULL, KErrAbort); + + // Set the server state to "shutting down". This will + // cause the server to discard any new connect requests + // with KErrServerTerminated. + iShuttingDown = ETrue; + } + + __ASSERT_DEBUG(iSessionCount > 0, User::Invariant()); + iSessionCount--; + if (iSessionCount == 0) + { + LOG(Log::Printf(_L("CEventMediatorServer::SessionDeleted - session count 0, stopping scheduler and thus the server\n"))); + CActiveScheduler::Stop(); + } + } + void CEventMediatorServer::ReportEventL(const TEventType aType, TDesC8* aSpec, TDesC8* aData, TInt aStatus) { @@ -204,8 +238,11 @@ iStoredEvents.AppendL(container); CleanupStack::Pop(); } + // Write event to log - if (aType == ELogEvent && iLogger) + __ASSERT_DEBUG(iLogger != NULL, User::Invariant()); + + if (aType == ELogEvent) { LOG(Log::Printf(_L("CEventMediatorServer::ReportEventL - calling iLogger->LogEvent\n"))); iLogger->LogEvent(*aData); @@ -257,7 +294,7 @@ } } -TBool CEventMediatorServer::IsClientTheSitL(const RMessage2& aMessage) +TBool CEventMediatorServer::IsClientTheSitL(const RMessage2& aMessage) const { LOG(Log::Printf(_L("CEventMediatorServer::IsClientTheSitL\n"))); TBool isClientTheSit = EFalse; @@ -559,689 +596,11 @@ session = (CEventMediatorSession*) iSessionIter++; } } - -void CEventMediatorServer::SetShuttingDown(TBool aShuttingDown) - { - iShuttingDown = aShuttingDown; - } - -// ============================= CEventMediatorSession ============================= - -CEventMediatorSession* CEventMediatorSession::NewL(CEventMediatorServer* aServer, const RMessage2& aMessage) - { - LOG(Log::Printf(_L("CEventMediatorSession::NewL - begin\n"))); - CEventMediatorSession* self; - self = new (ELeave) CEventMediatorSession(aServer); - CleanupStack::PushL(self); - - // Marks the session as a "SIT session" - // if the client is the SIT thread - self->iIsSitSession = aServer->IsClientTheSitL(aMessage); - - aServer->iSessionCount++; - - if ( !self->IsASitSession() ) - { - User::LeaveIfError(self->iFs.Connect()); // For EventLog - self->iEventLogFileOpen = EFalse; - } - - CleanupStack::Pop(); // self - - LOG(Log::Printf(_L("CEventMediatorSession::NewL - end\n"))); - return self; - } - -CEventMediatorSession::CEventMediatorSession(CEventMediatorServer* aServer) - : iListenedEvents(2), iServer(aServer) - { - } - -CEventMediatorSession::~CEventMediatorSession(void) - { - LOG(Log::Printf(_L("CEventMediatorSession::~CEventMediatorSession\n"))); - CancelAll(); - if (iServer) - { - TInt normalSessionCount = iServer->NormalSessionCount(); - - // If this too is a normal session and is dying, - // decrement the normal session count by one - if (!IsASitSession()) - { - normalSessionCount--; - - if (iEventLogFileOpen) - { - iEventLogFile.Close(); - iEventLogFileOpen = EFalse; - } - iFs.Close(); // For EventLog - - } - - if (normalSessionCount == 0) - { - // If "normal" (non-sit) sessions are no longer present, - // we complete the task arrival observation request, thus - // causing the SIT to terminate and close its connection - // to this server. This should be the last connection whose - // closing will cause this server to terminate. - // NOTE. KErrCancel cannot be used here as the Event Mediator - // does not report it to the caller - LOG(Log::Printf(_L("CEventMediatorSession::~CEventMediatorSession - normal session count = 0\n"))); - iServer->CompleteListener(ETaskArrivedEvent, NULL, KErrAbort); - - // Set the server state to "shutting down". This will - // cause the server to discard any new connect requests - // with KErrServerTerminated. - iServer->SetShuttingDown(ETrue); - } - - if (iServer->iSessionCount) - { - iServer->iSessionCount--; - } - - iServer->StopEventMediator(); - } - } - -void CEventMediatorSession::ServiceL(const RMessage2& aMessage) - { - TInt status = 0; - - switch (aMessage.Function()) - { - case KEventMediatorListen: - ListenToEventL(aMessage); - break; - - case KEventMediatorListenWithSpec: - ListenToEventWithSpecL(aMessage); - break; - - case KEventMediatorCancel: - CancelListening(aMessage); - aMessage.Complete(KErrNone); - break; - - case KEventMediatorCancelWithSpec: - CancelListeningWithSpecL(aMessage); - aMessage.Complete(KErrNone); - break; - - case KEventMediatorCancelAll: - CancelAll(); - aMessage.Complete(KErrNone); - break; - - case KEventMediatorReportEvent: - ReportEventL(aMessage); - aMessage.Complete(KErrNone); - break; - - case KEventMediatorReportEventWithSpec: - ReportEventWithSpecL(aMessage); - aMessage.Complete(KErrNone); - break; - - case KEventMediatorFetchData: - status = FetchDataL(aMessage); - aMessage.Complete(status); - break; - - case KEventMediatorReportLogEvent: - ReportLogEventL(aMessage); - aMessage.Complete(KErrNone); - break; - - case KEventMediatorNewEventSpecId: - NewEventSpecIdL(aMessage); - aMessage.Complete(KErrNone); - break; - case KEventMediatorDeletePrivateFiles: - status = DeletePrivateFiles(); - aMessage.Complete(status); - break; - - case KEventMediatorGetEventLogSize: - status = GetEventLogSize(aMessage); - aMessage.Complete(status); - break; - - case KEventMediatorGetEventLogHeader: - status = GetEventLogHeader(aMessage); - aMessage.Complete(status); - break; - case KEventMediatorGetEventLogData: - status = GetEventLogData(aMessage); - aMessage.Complete(status); - break; - case KEventMediatorClearEventLog: - status = ClearEventLog(); - aMessage.Complete(status); - break; - default: - aMessage.Complete(KErrGeneral); - break; - } - } - -TInt CEventMediatorSession::ListenToEventL(const RMessage2& aMessage) - { - CListenerContainer* listener = new (ELeave) CListenerContainer(aMessage, NULL, iServer); - CleanupStack::PushL(listener); - - iListenedEvents.AppendL(listener); - CleanupStack::Pop(); // listener - - listener->AnalyzeRequestL(); - - return KErrNone; - } - -TInt CEventMediatorSession::ListenToEventWithSpecL(const RMessage2& aMessage) - { - HBufC8* specBuf = NULL; - - // Read specification - specBuf = ReadSpecificationFromClientL(aMessage); - CleanupStack::PushL(specBuf); - - // Ownership of specBuf is given to listener - CListenerContainer* listener = new (ELeave) CListenerContainer(aMessage, specBuf, iServer); - CleanupStack::Pop(); // specBuf - CleanupStack::PushL(listener); - - iListenedEvents.AppendL(listener); - CleanupStack::Pop(); // listener - - listener->AnalyzeRequestL(); - - return KErrNone; - } - -void CEventMediatorSession::CancelListening(const RMessage2& aMessage) - { - TInt index; - - while (FindListenerMsg((TEventType)aMessage.Int0(), index)) - { - CompleteListener(index, KErrCancel); - } - } - -void CEventMediatorSession::CancelListeningWithSpecL(const RMessage2& aMessage) - { - HBufC8* specBuf = NULL; - TInt index; - - // Read specification - specBuf = ReadSpecificationFromClientL(aMessage); - CleanupStack::PushL(specBuf); - - // Cancel listeners - while (FindListenerMsg((TEventType)aMessage.Int0(), specBuf, index)) - { - CompleteListener(index, KErrCancel); - } - CleanupStack::PopAndDestroy(); // specBuf - } - -void CEventMediatorSession::CancelAll() - { - TInt nEvents = iListenedEvents.Count(); - for (TInt i = 0; i < nEvents; i++) - { - iListenedEvents.At(i)->Complete(KErrCancel); - delete iListenedEvents.At(i); - iListenedEvents.At(i) = NULL; - } - iListenedEvents.Reset(); - } - -void CEventMediatorSession::ReportEventL(const RMessage2& aMessage) - { - TEventType eventType = (TEventType)aMessage.Int0(); - LOG(Log::Printf(_L("CEventMediatorSession::ReportEventL - event type = %d\n"), eventType)); - // Read data - HBufC8* dataBuf = ReadEventDataFromClientL(aMessage); - CleanupStack::PushL(dataBuf); - // Report event to server - iServer->ReportEventL(eventType, NULL, dataBuf); - CleanupStack::Pop(); - } - -void CEventMediatorSession::ReportEventWithSpecL(const RMessage2& aMessage) - { - TEventType eventType=(TEventType) aMessage.Int0(); - LOG(Log::Printf(_L("CEventMediatorSession::ReportEventWithSpecL - event type = %d\n"), eventType)); - // Read data - HBufC8* dataBuf = ReadEventDataFromClientL(aMessage); - CleanupStack::PushL(dataBuf); - // Read specification - HBufC8* specBuf = ReadSpecificationFromClientL(aMessage); - CleanupStack::PushL(specBuf); - // Report event to server - iServer->ReportEventL(eventType, specBuf, dataBuf); - CleanupStack::PopAndDestroy(); // specBuf - CleanupStack::Pop(); // dataBuf - } - -void CEventMediatorSession::ReportLogEventL(const RMessage2& aMessage) - { - LOG(Log::Printf(_L("CEventMediatorSession::ReportLogEventL\n"))); - // Read event - TLogEvent event; - TPckg eventPckg(event); - aMessage.ReadL(FIRST_ARGUMENT, eventPckg); - - // Create one buffer to contain put everything in a normal buffer and - TInt lengthsDesLth = event.iDesCount * sizeof(TInt); - TInt position = eventPckg.Length(); - TInt dataLength = position + lengthsDesLth + aMessage.Int2(); - HBufC8* dataBuf = HBufC8::NewLC(dataLength); - TPtr8 dataPtr = dataBuf->Des(); - - // Copy event to buffer - dataPtr.Append(eventPckg); - // Read lengths to buffer - TPtr8 tmpPtr(&dataPtr[position], 0, dataLength - position); - aMessage.ReadL(SECOND_ARGUMENT, tmpPtr); - // Read descriptors to the buffer - position= dataPtr.Length(); - tmpPtr.Set(&dataPtr[position], 0, dataLength - position); - aMessage.ReadL(THIRD_ARGUMENT, tmpPtr); - - // Report event to server - iServer->ReportEventL(ELogEvent, NULL, dataBuf); - CleanupStack::Pop(); - } - -TInt CEventMediatorSession::FetchDataL(const RMessage2& aMessage) - { - LOG(Log::Printf(_L("CEventMediatorSession::FetchDataL\n"))); - return iServer->CopyEventDataL(aMessage); - } - -TInt CEventMediatorSession::CheckEventL(const TEventType aType, const TDesC8* aSpec, - const TDesC8* aData, TInt aStatus) - { - TInt index; - TInt listenerCount = 0; - TInt dataLth = 0; - // Some events don't not have data - if (aData) - { - dataLth = aData->Length(); - } - TPckg lengthpckg(dataLth); - TPckgC ptrpckg(aData); - - while (FindListenerMsg(aType, aSpec, index)) - { - RMessage2& listener = iListenedEvents.At(index)->Message(); - - if (aStatus == KErrNone) - { - // Write info about data - listener.WriteL(SECOND_ARGUMENT, lengthpckg); - listener.WriteL(THIRD_ARGUMENT, ptrpckg); - - // Complete listener - listener.Complete(KErrNone); - } - else - { - listener.Complete(aStatus); - } - - delete iListenedEvents.At(index); - iListenedEvents.Delete(index); - listenerCount++; - } - - return listenerCount; - } - -TBool CEventMediatorSession::FindListenerMsg(const TEventType aType, TInt& index) - { - for (TInt i = 0; i < iListenedEvents.Count(); i++) - { - if (iListenedEvents.At(i)->Type() == aType) - { - index=i; - return ETrue; - } - } - return EFalse; - } - -TBool CEventMediatorSession::FindListenerMsg(const TEventType aType, const TDesC8* aSpec, TInt& index) - { - for (TInt i = 0; i < iListenedEvents.Count(); i++) - { - if (iListenedEvents.At(i)->HandlesEvent(aType, aSpec)) - { - index = i; - return ETrue; - } - } - return EFalse; - } - -TBool CEventMediatorSession::FindTaskRequestListenerMsg(TInt& index) - { - for (TInt i = 0; i < iListenedEvents.Count(); i++) - { - if (CSit::EventRequiresSit(iListenedEvents.At(i)->Type())) - { - index = i; - return ETrue; - } - } - return EFalse; - } - -HBufC8* CEventMediatorSession::ReadSpecificationFromClientL(const RMessage2& aMessage) - { - HBufC8* specBuf; - // Read specification descriptor length from client, create specification buffer - const TAny* desPtr = aMessage.Ptr3(); - if (desPtr == NULL) - { - return NULL; - } - TInt specLength = aMessage.GetDesLength(FOURTH_ARGUMENT); - // Create spcification buffer - specBuf = HBufC8::NewLC(specLength); - TPtr8 ptr = specBuf->Des(); - // Read specification - aMessage.ReadL(FOURTH_ARGUMENT, ptr); - CleanupStack::Pop(); // specBuf - return specBuf; - } - -HBufC8* CEventMediatorSession::ReadEventDataFromClientL(const RMessage2& aMessage) - { - HBufC8* dataBuf = NULL; - TInt desLength = aMessage.Int1(); - - if (desLength != 0) // Some events have no data - { - dataBuf = HBufC8::NewLC(desLength); - TPtr8 ptr = dataBuf->Des(); - aMessage.ReadL(THIRD_ARGUMENT, ptr); - CleanupStack::Pop(); // dataBuf - } - return dataBuf; - } - -CListenerContainer* CEventMediatorSession::FindWaitingTaskRequest() - { - CListenerContainer* listener = NULL; - - for (TInt i = 0; i < iListenedEvents.Count(); i++) - { - if (iListenedEvents.At(i)->WaitingForFulfilling()) - { - listener = iListenedEvents.At(i); - break; - } - } - - return listener; - } - -CListenerContainer* CEventMediatorSession::FindListener(TEventType aEventType, - TInt aEventSpecId) - { - CListenerContainer* listener = NULL; - - for (TInt i = 0; i < iListenedEvents.Count(); i++) - { - if (iListenedEvents.At(i)->Type() == aEventType) - { - TEventSpec* eventSpec = (TEventSpec*)(iListenedEvents.At(i)->Specification()->Ptr()); - - if (eventSpec->iId == aEventSpecId) - { - listener = iListenedEvents.At(i); - break; - } - } - } - - return listener; - } - -CListenerContainer* CEventMediatorSession::FindListener(TEventType aEventType, - const TDesC8* aEventSpec) - { - CListenerContainer* listener = NULL; - - for (TInt i = 0; i < iListenedEvents.Count(); i++) - { - if (iListenedEvents.At(i)->HandlesEvent(aEventType, aEventSpec)) - { - listener = iListenedEvents.At(i); - break; - } - } - - return listener; - } - -void CEventMediatorSession::CompleteListener(TEventType aEventType, - const TDesC8* aEventSpec, - TInt aStatus) - { - TInt index; - while (FindListenerMsg(aEventType, aEventSpec, index)) - { - CompleteListener(index, aStatus); - } - } - -void CEventMediatorSession::CompleteListener(TInt aIndex, TInt aStatus) - { - iListenedEvents.At(aIndex)->Complete(aStatus); - delete iListenedEvents.At(aIndex); - iListenedEvents.Delete(aIndex); - } - -void CEventMediatorSession::CompleteTaskRequests(TInt aStatus) - { - LOG(Log::Printf(_L("CEventMediatorSession::CompleteTaskRequests\n"))); - TInt index; - while (FindTaskRequestListenerMsg(index)) - { - CompleteListener(index, aStatus); - } - } - -TBool CEventMediatorSession::IsASitSession() - { - return iIsSitSession; - } - -void CEventMediatorSession::NewEventSpecIdL(const RMessage2& aMessage) - { - TInt newEventSpecId = iServer->NewEventSpecId(); - TPckg newEventSpecIdDes(newEventSpecId); - aMessage.WriteL(FIRST_ARGUMENT, newEventSpecIdDes); - } - -TInt CEventMediatorSession::DeletePrivateFiles() - { - TRAPD(err, DeletePrivateFilesL()); - if ( err ) - { - LOG(Log::Printf(_L("DeletePrivateFilesL() leave error %d\n"), err)); - return err; - } - - return KErrNone; - } - -void CEventMediatorSession::DeletePrivateFilesL() - { - LOG(Log::Printf(_L("DeletePrivateFilesL() called\n"))); - - CFileMan* fileMan = CFileMan::NewL(iFs); - CleanupStack::PushL(fileMan); - - TPath privateDir; - User::LeaveIfError(iFs.PrivatePath(privateDir)); - - TInt err = fileMan->RmDir(privateDir); - if (err != KErrNone && err != KErrPathNotFound && err != KErrNotFound) - { - User::Leave(err); - } - CleanupStack::PopAndDestroy(); //fileMan - } - -TInt CEventMediatorSession::GetEventLogSize( - const RMessage2& aMessage) - { - if ( iEventLogFileOpen ) - { - iEventLogFile.Close(); - iEventLogFileOpen = EFalse; - } - - TInt err = iEventLogFile.Open(iFs, iServer->EventLogFileName(), EFileRead | EFileShareAny); - if ( err ) - return err; - - TInt size(0); - err = iEventLogFile.Size(size); - if ( err ) - { - iEventLogFile.Close(); - return err; - } - - TPckg sizePckg(size); - err = aMessage.Write(FIRST_ARGUMENT, sizePckg); - if ( err ) - { - iEventLogFile.Close(); - return err; - } - - iEventLogFileOpen = ETrue; - - return KErrNone; - } - -TInt CEventMediatorSession::GetEventLogHeader( - const RMessage2& aMessage) - { - TInt err(0); - - if ( !iEventLogFileOpen ) - { - err = iEventLogFile.Open(iFs, iServer->EventLogFileName(), EFileRead | EFileShareAny); - if ( err ) - return err; - iEventLogFileOpen = ETrue; - } - - TInt position = 0; - err = iEventLogFile.Seek(ESeekStart, position); - if (err != KErrNone) - return err; - - TBuf8 fileHeaderBuf; - err = iEventLogFile.Read(fileHeaderBuf, EVENTLOG_FILE_HEADER_LTH); - if (err != KErrNone) - return err; - - TRAP(err, aMessage.WriteL(FIRST_ARGUMENT, fileHeaderBuf)); - if ( err ) - return err; - - return KErrNone; - } - -TInt CEventMediatorSession::GetEventLogData( - const RMessage2& aMessage) - { - TInt err(0); - - if ( !iEventLogFileOpen ) - { - err = iEventLogFile.Open(iFs, iServer->EventLogFileName(), EFileRead | EFileShareAny); - if ( err ) - return err; - iEventLogFileOpen = ETrue; - } - - TInt size(0); - err = iEventLogFile.Size(size); - if ( err ) - return err; - - if ( size < EVENTLOG_FILE_HEADER_LTH ) - return KErrNotFound; - - HBufC8* eventLogFileBuf = NULL; - TRAP(err, eventLogFileBuf = HBufC8::NewL(size)); - if ( err ) - { - return err; - } - - TPtr8 eventLogDataPtr(eventLogFileBuf->Des()); - TInt position(0); - err = iEventLogFile.Seek(ESeekStart, position); - if ( err ) - { - delete eventLogFileBuf; - return err; - } - err = iEventLogFile.Read(eventLogDataPtr); // iLogFileSize); - if ( err ) - { - delete eventLogFileBuf; - return err; - } - - TRAP( err, aMessage.WriteL(FIRST_ARGUMENT, eventLogDataPtr)); - if ( err ) - { - delete eventLogFileBuf; - return err; - } - - delete eventLogFileBuf; - eventLogFileBuf = NULL; - - return KErrNone; - } - -TInt CEventMediatorSession::ClearEventLog() - { - if ( iEventLogFileOpen ) - { - iEventLogFile.Close(); - iEventLogFileOpen = EFalse; - } - - TInt err = iFs.Delete(iServer->EventLogFileName()); - - return err; - } - - // ============================= CEventMediatorServer ============================= CListenerContainer::CListenerContainer(const RMessage2& aMessage, TDesC8* aSpec, - CEventMediatorServer* aServer) + CEventMediatorServer& aServer) : iSpec(aSpec), iMessage(aMessage), iServer(aServer) { iEventType = Type(); @@ -1253,23 +612,23 @@ if (CSit::EventRequiresSit(iEventType)) { LOG(Log::Printf(_L("CListenerContainer::AnalyzeRequestL - event type = %d, requires SIT\n"), iEventType)); - iServer->MakeSureSitIsRunningL(); - iServer->TaskRequestArrivedL(this); + iServer.MakeSureSitIsRunningL(); + iServer.TaskRequestArrivedL(this); } // If this event listening request is the one // made by the SIT task arrival observer... if (iEventType == ETaskArrivedEvent) { - iServer->SetTaskArrivalListenerL(this); - iServer->TaskArrivalObservationRequestArrivedL(); + iServer.SetTaskArrivalListenerL(this); + iServer.TaskArrivalObservationRequestArrivedL(); } // If this event listening request is one // made by a SIT TH to fetch a task... if (iEventType == EFetchTaskInfoEvent) { - iServer->TaskRequestEventSpecFetchingRequestArrivedL(this); + iServer.TaskRequestEventSpecFetchingRequestArrivedL(this); } // If the event listening request is one @@ -1277,7 +636,7 @@ // of the task request it is handling if (CSit::IsTaskCancellationObservationRequest(iEventType)) { - iServer->TaskCancellationObservationRequestArrivedL(this); + iServer.TaskCancellationObservationRequestArrivedL(this); } } @@ -1285,9 +644,9 @@ { delete iSpec; - if (iServer->TaskArrivalListener() == this) + if (iServer.TaskArrivalListener() == this) { - iServer->ClearTaskArrivalListener(); + iServer.ClearTaskArrivalListener(); } } @@ -1324,7 +683,7 @@ { // Complete the task request cancellation // observation, if found - iServer->CompleteListener(cancelEventType, iSpec, KErrNone); + iServer.CompleteListener(cancelEventType, iSpec, KErrNone); } }