Join Now
Quality Rating:
  • Currently 5.0 / 5
(5.0 / 5 - 1 vote cast)
Expertise Level:
  • Currently 3.0 / 5
(3.0 / 5 - 1 vote cast)

This page was last modified 21:20, 13 December 2007.

Customizing the Active Scheduler

From Forum Nokia Wiki

CActiveScheduler is a concrete class and is normally created and used directly, without derivation. However, in some cases you may want to derive your own active scheduler so that you can customize the event loop or its start and stop functionality, and provide customized error handling for the scheduler.


The following virtual methods are used when deriving your own active scheduler from CActiveScheduler:


virtual void OnStarting() is called from the Start() method of the CActiveScheduler base class before the event loop is started. The default implementation of OnStarting()does nothing, but your derived class can implement customized code that you want to execute before starting the event loop.


virtual void OnStopping() is called from the Stop() method of the CActiveScheduler base class. The default implementation of OnStopping()does nothing, but your derived class can implement customized code you want executed upon stopping the active object’s event loop.


virtual void Error(TInt aErr) is invoked by the active scheduler when a leave occurs within an active object’s RunL() function, and the active object itself did not handle the error in its own RunError()method. The argument to Error()contains the leave code. Your derived scheduler object can override this function to handle leaves that occur in a RunL()and are not handled by the active object itself. The default implementation of Error()is to invoke an E32USER-CBase 47 exception.


virtual void WaitForAnyRequest() is called in the active scheduler’s event loop (i.e. it is initiated from the Start()method) and is used when waiting for an asynchronous function to complete. The default implementation of this function is to call User::WaitForRequest(),which blocks and waits at the current thread’s request semaphore. A derived CActiveScheduler can override this by implementing its own WaitForAnyRequest(). Normally this still involves calling User::WaitForRequest(), but customized pre- or postprocessing of the event can be implemented here. Of course, you could also handle events via a method other than the thread’s request semaphore (such as from a communication port, or as a network message). However, this would also require the attached active objects to use a set of customized asynchronous functions which were compatible with the customized event-handling method.

Related Discussions
Thread Thread Starter Forum Replies Last Post
service discovery and active scheduler panic spiralsun Bluetooth Technology 0 2002-12-14 16:39
customizing sis file angiesh Symbian Tools & SDKs 0 2004-07-22 10:27
Event loop in console application.... VinodRaut General Symbian C++ 4 2007-10-22 17:23
Active Object and Multitasking? hmchau General Symbian C++ 11 2007-12-13 01:18
WebClient and class problem mariosas General Symbian C++ 5 2006-12-13 09:50
 
Powered by MediaWiki
     
     RDF Facets:
     
     
     qfnZtypeQUqfnTypeZCommunityContentQ
     qfnZtypeQUqfnTypeZWebpageQ
     qfnZtypeQUqfnTypeZWikiContentQ
     qmarsZlanguageQUxhttpE3aE2fE2fswE2enokiaE2ecomE2flanguageE2d1E2fenX