S60 3rd Edition SDK for Symbian OS
Example Applications Guide

CLandmarksDbEventHandler Class Reference

#include <LandmarksDbEventHandler.h>

List of all members.

Public Member Functions

 CLandmarksDbEventHandler (CPosLandmarkDatabase &aDb)
 ~CLandmarksDbEventHandler ()
void AddObserverL (MLandmarksDbObserver *aObserver)

Protected Member Functions

void RunL ()
void DoCancel ()
TInt RunError (TInt aError)

Private Member Functions

void ObserveEvents ()

Private Attributes

CPosLandmarkDatabase & iDb
 The database to observe.
TPosLmEvent iEvent
 A db event to be reported.
RPointerArray< MLandmarksDbObserver > iDbObservers
 An array of registered observers.


Detailed Description

In the Landmark reference application there is only one instance of CLandmarksDbEventHandler. It is the only object observing the default landmark database directly. Other objects that want to observe the database must register to this object. When an event occurs this object broadcasts it to all registered observers.

Definition at line 37 of file LandmarksDbEventHandler.h.


Constructor & Destructor Documentation

CLandmarksDbEventHandler::CLandmarksDbEventHandler (  CPosLandmarkDatabase &  aDb  ) 
 

C++ constructor.

Parameters:
aDb the database to observer

Definition at line 29 of file LandmarksDbEventHandler.cpp.

References ObserveEvents().

00031 : CActive(CActive::EPriorityStandard), iDb(aDb)
00032     {
00033     CActiveScheduler::Add(this);
00034     ObserveEvents();
00035     }

CLandmarksDbEventHandler::~CLandmarksDbEventHandler (   ) 
 

Destructor.

Definition at line 38 of file LandmarksDbEventHandler.cpp.

References iDbObservers.

00039     {
00040     Cancel();
00041     iDbObservers.Close();
00042     }


Member Function Documentation

void CLandmarksDbEventHandler::AddObserverL (  MLandmarksDbObserver *  aObserver  ) 
 

AddObserverL registers a db observer.

Parameters:
aObserver the observer to register

Definition at line 50 of file LandmarksDbEventHandler.cpp.

References iDbObservers.

00052     {
00053     User::LeaveIfError(iDbObservers.Append(aObserver));
00054     }

void CLandmarksDbEventHandler::RunL (   )  [protected]
 

Handles an active object’s request completion event.

Definition at line 62 of file LandmarksDbEventHandler.cpp.

References iDbObservers, and iEvent.

00063     {
00064     for (TInt i = 0; i < iDbObservers.Count(); i++)
00065         {
00066         // All observers must be notified. We cannot allow the observers to 
00067         // leave.
00068         TInt err;
00069         TRAP(err, iDbObservers[i]->NotifyDbEventL(iEvent, iStatus.Int()));
00070         }
00071     ObserveEvents();
00072     }

void CLandmarksDbEventHandler::DoCancel (   )  [protected]
 

Implements cancellation of an outstanding request.

Definition at line 80 of file LandmarksDbEventHandler.cpp.

References iDb.

00081     {
00082     iDb.CancelNotifyDatabaseEvent();
00083     }

TInt CLandmarksDbEventHandler::RunError (  TInt  aError  )  [protected]
 

Handles a leave occurring in the request completion event handler RunL().

Returns:
KErrNone

Definition at line 91 of file LandmarksDbEventHandler.cpp.

00092     {
00093     return KErrNone;
00094     }

void CLandmarksDbEventHandler::ObserveEvents (   )  [private]
 

Starts observing of db enevs

Definition at line 102 of file LandmarksDbEventHandler.cpp.

References iDb, and iEvent.

00103     {
00104     iStatus = KRequestPending;
00105     iDb.NotifyDatabaseEvent(iEvent, iStatus);
00106     SetActive();
00107     }


© Nokia 2006

Back to top