--- 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 <es_sock.h>
#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<CEventMediatorServer&>(*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<TLogEvent> 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<TInt> lengthpckg(dataLth);
- TPckgC<const TAny*> 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<TInt> 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<TInt> 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<EVENTLOG_FILE_HEADER_LTH> 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);
}
}