--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/serviceproviders/sapi_logging/loggingservice/src/logiter.cpp Fri Jul 03 15:51:24 2009 +0100
@@ -0,0 +1,269 @@
+/*
+* Copyright (c) 2007 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "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: Implements logging SAPI logiter class.
+*
+*/
+
+#include <e32base.h>
+#include <e32def.h>
+#include <logwrap.h>
+#include <logcli.h>
+
+#include "loggingevent.h"
+#include "logiter.h"
+#include "loggingasyncservice.h"
+
+
+/**
+* Two phase constructors
+*
+* @param aClient, CLogClient handle for log database
+* @param aRecent , CLogViewRecent handle
+* @param aViewEvents ,CLogViewEvents handle
+*/
+EXPORT_C CLogIter* CLogIter :: NewL()
+ {
+ CLogIter *self = CLogIter :: NewLC() ;
+ CleanupStack :: Pop(self);
+ return self ;
+ }
+
+CLogIter* CLogIter :: NewLC()
+ {
+ CLogIter *self = new(ELeave) CLogIter() ;
+ CleanupStack :: PushL(self);
+ self->ConstructL() ;
+ return self ;
+ }
+
+/**
+* ConstructL Method to construct the internal members of
+* CLogIter class
+*/
+void CLogIter :: ConstructL()
+ {
+ User :: LeaveIfError(iFs.Connect()) ;
+ CActiveScheduler :: Add(this) ;
+ iScheduler = new CActiveSchedulerWait();
+ }
+
+/**
+* Default Constructor
+* This object holds the ownership of its members and
+*
+*/
+CLogIter :: CLogIter() : CActive(EPriorityStandard) , iLogViewEvents(NULL) , iLogViewRecent(NULL) ,
+ iTaskId(-1), iCount(0)
+ {
+ ;
+ }
+
+/**
+* Default Destructor
+*/
+CLogIter :: ~CLogIter()
+ {
+ if(this->IsAdded())
+ {
+ Deque() ;
+ }
+
+ delete iLogViewEvents ;
+ delete iLogViewRecent ;
+ delete iLogClient ;
+ delete iEvent ;
+ delete iScheduler;
+ iFs.Close() ;
+
+ }
+
+/**
+* Do Cancel Method, From CActive
+*/
+void CLogIter :: DoCancel()
+ {
+ switch(iTaskId)
+ {
+ case EReadEvents :
+ {
+ iLogViewEvents->Cancel() ;
+ break ;
+ }
+
+ case EGetRecent :
+ {
+ iLogViewRecent->Cancel() ;
+ break ;
+ }
+
+ case EGetEvent :
+ {
+ break ;
+ }
+
+ default :
+ {
+ break ;
+ }
+ }
+ }
+/**
+* RunL Method to handle async events
+* Read , ReadRecent and Get an event
+*/
+void CLogIter :: RunL()
+ {
+ iScheduler->AsyncStop();
+ }
+
+/**
+* NextL method to iterate on the getlist result
+*/
+
+EXPORT_C CLogsEvent* CLogIter :: NextL()
+ {
+ CLogsEvent* currEvent = NULL ;
+ switch(iTaskId)
+ {
+ case EReadEvents :
+ {
+ if(!iCount)
+ {
+ iCount = iLogViewEvents->CountL() ;
+ }
+ if(iOps++ >= iCount)
+ {
+ return currEvent ;
+ }
+ currEvent = CLogsEvent :: NewL() ;
+ currEvent->SetEvent(iLogViewEvents->Event()) ;
+
+ if((iLogViewEvents->NextL(iStatus)))
+ {
+ SetActive() ;
+ iScheduler->Start() ;
+ }
+ break ;
+ }
+
+ case EGetRecent :
+ {
+ if(!iCount)
+ {
+ iCount = iLogViewRecent->CountL() ;
+ }
+
+ if(iOps++ >= iCount)
+ {
+ return currEvent ;
+ }
+
+ currEvent = CLogsEvent :: NewL() ;
+ currEvent->SetEvent(iLogViewRecent->Event()) ;
+
+ if(iLogViewRecent->NextL(iStatus) )
+ {
+ SetActive() ;
+ iScheduler->Start() ;
+ }
+ break ;
+ }
+
+ case EGetEvent :
+ {
+ if ( iEvent && !iOps )
+ {
+ ++iOps;
+ currEvent = iEvent;
+ iEvent = NULL;
+ }
+
+ break ;
+ }
+
+ default :
+ {
+ break ;
+ }
+
+ }
+ return currEvent ;
+ }
+
+
+/**
+* Reset
+*/
+
+EXPORT_C void CLogIter :: Reset()
+ {
+ iOps = 0 ;
+ }
+
+/**
+* Function to set the event
+*
+* @param aEvent , event to be set
+*/
+
+
+EXPORT_C void CLogIter :: SetEventL(CLogsEvent* aEvent)
+ {
+ if( iEvent )
+ {
+ delete iEvent ;
+ }
+
+ iEvent = CLogsEvent :: NewL() ;
+ iEvent->Copy(aEvent->getEvent()) ;
+ }
+
+
+
+/**
+* Sets the LogClient Handle
+*
+* @param aLogClient, Handle to
+* the logclient
+*/
+void CLogIter :: SetLogClient(CLogClient *aLogClient)
+ {
+ iLogClient = aLogClient ;
+ }
+
+
+/**
+* SetLogViewEvents, sets the handle to view the events
+*
+* @param CLogViewEvent , handle to view the events
+*/
+
+void CLogIter :: SetLogViewEvents(CLogViewEvent *aViewEvents)
+ {
+ iLogViewEvents = aViewEvents ;
+ }
+
+/**
+* SetLogViewRecent, sets the handle to the recent view
+*
+* @param aRecentView, recent view handle
+*/
+
+void CLogIter :: SetLogRecentView(CLogViewRecent *aViewRecent)
+ {
+ iLogViewRecent = aViewRecent ;
+ }
+
+
+