Ceylan::EventSource Class Reference

Interface which should be implemented for all objects that should be able to send events to listeners. More...

#include <CeylanEventSource.h>

Inheritance diagram for Ceylan::EventSource:

Inheritance graph
[legend]
Collaboration diagram for Ceylan::EventSource:

Collaboration graph
[legend]

List of all members.

Public Types

enum  TextOutputFormat { rawText, html }
 Defines what text output formats for TextDisplayable instances are available. More...

Public Member Functions

 EventSource ()
 Basic constructor with no listener registered.
 EventSource (EventListener &listener)
 Constructs an event source with already one listener registered.
virtual ~EventSource () throw ()
 Basic virtual destructor.
virtual void add (EventListener &listener)
 Registers the specified listener to this source, so that forthcoming events will be sent to it as well.
virtual void remove (const EventListener &listener)
 Unregisters the specified listener from this source, no forthcoming event will be sent to the listener.
virtual void removeAllListeners ()
 Unsubscribes all registered listeners from this source, no forthcoming event will be sent.
virtual const std::string toString (Ceylan::VerbosityLevels level=Ceylan::high) const
 Returns a user-friendly description of the state of this object.

Static Public Member Functions

static const std::string ToString (std::list< TextDisplayable * > displayables, Ceylan::VerbosityLevels level=Ceylan::high)
 Returns a user-friendly description of this list of pointers to text displayable instances.
static TextOutputFormat GetOutputFormat ()
 Returns the current overall text format to be used by TextDisplayable instances.
static void SetOutputFormat (TextOutputFormat newOutputFormat)
 Sets the current overall text format to be used by TextDisplayable instances.

Protected Member Functions

virtual void notifyAllListeners (const Event &newEvent)
 Notifies all currently registered listeners of a new event.
virtual bool isRegistered (const EventListener &listener)
 Tells whether specified listener is registered to this source.

Protected Attributes

std::list< EventListener * > _listeners
 The registered event listeners.

Static Protected Attributes

static TextOutputFormat _OutputFormat = rawText
 The text format to be used currently by TextDisplayable instances.

Private Member Functions

 EventSource (const EventSource &source)
 Copy constructor made private to ensure that it will be never called.
EventSourceoperator= (const EventSource &source)
 Assignment operator made private to ensure that it will be never called.


Detailed Description

Interface which should be implemented for all objects that should be able to send events to listeners.

Event sources are supposed to always be able to answer to any listener asking for their latest event.

To do so, they may keep their last message, forge a new summary event on purpose, etc.

Any listener can be registered at most one time to an event source: attempt of multiple registrations result in an exception.

Note:
The event source / listener framework is also known as the Observer pattern.
See also:
http://www.research.ibm.com/designpatterns/example.htm

Definition at line 77 of file CeylanEventSource.h.


Member Enumeration Documentation

Defines what text output formats for TextDisplayable instances are available.

Enumerator:
rawText 
html 

Definition at line 124 of file CeylanTextDisplayable.h.


Constructor & Destructor Documentation

EventSource::EventSource (  ) 

Basic constructor with no listener registered.

Definition at line 50 of file CeylanEventSource.cc.

EventSource::EventSource ( EventListener listener  )  [explicit]

Constructs an event source with already one listener registered.

Definition at line 59 of file CeylanEventSource.cc.

EventSource::~EventSource (  )  throw () [virtual]

Basic virtual destructor.

Definition at line 70 of file CeylanEventSource.cc.

References _listeners, and Ceylan::toString().

Ceylan::EventSource::EventSource ( const EventSource source  )  [private]

Copy constructor made private to ensure that it will be never called.

The compiler should complain whenever this undefined constructor is called, implicitly or not.


Member Function Documentation

void EventSource::add ( EventListener listener  )  [virtual]

Registers the specified listener to this source, so that forthcoming events will be sent to it as well.

Exceptions:
EventException if listener is already registered to the event source.

Definition at line 118 of file CeylanEventSource.cc.

References _listeners, and Ceylan::EventListener::toString().

Referenced by Ceylan::EventListener::subscribeTo().

TextDisplayable::TextOutputFormat TextDisplayable::GetOutputFormat (  )  [static, inherited]

bool EventSource::isRegistered ( const EventListener listener  )  [protected, virtual]

Tells whether specified listener is registered to this source.

Definition at line 252 of file CeylanEventSource.cc.

References _listeners, and generalUtils::false.

void EventSource::notifyAllListeners ( const Event newEvent  )  [protected, virtual]

Notifies all currently registered listeners of a new event.

Note:
This source takes ownership of this event.

Definition at line 270 of file CeylanEventSource.cc.

References _listeners.

Referenced by Ceylan::Locatable::changed(), and Ceylan::Model::notifyAllViews().

EventSource& Ceylan::EventSource::operator= ( const EventSource source  )  [private]

Assignment operator made private to ensure that it will be never called.

The compiler should complain whenever this undefined operator is called, implicitly or not.

void EventSource::remove ( const EventListener listener  )  [virtual]

Unregisters the specified listener from this source, no forthcoming event will be sent to the listener.

Exceptions:
EventException if listener was not already registered to the event source.
Note:
This method does nothing special with regard to the listener instance, it acts only on the source. The reason for that is that the unsubscriptions should be initiated on the listener side, not on the source one.
See also:
Ceylan::EventListener::unsubscribeFrom

Definition at line 142 of file CeylanEventSource.cc.

References _listeners, generalUtils::false, Ceylan::EventListener::toString(), and generalUtils::true.

void EventSource::removeAllListeners (  )  [virtual]

Unsubscribes all registered listeners from this source, no forthcoming event will be sent.

This source will request each of its listeners to unsubscribe from it, then the source will forget them in turn.

The links will be removed, but no instance will be deleted by this call.

See also:
Ceylan::EventListener::unsubscribeFromAllSources

Definition at line 204 of file CeylanEventSource.cc.

References _listeners.

Referenced by Ceylan::Model::removeAllViews(), and Ceylan::Locatable::~Locatable().

void TextDisplayable::SetOutputFormat ( TextOutputFormat  newOutputFormat  )  [static, inherited]

Sets the current overall text format to be used by TextDisplayable instances.

Parameters:
newOutputFormat the new output format.

Definition at line 72 of file CeylanTextDisplayable.cc.

References Ceylan::TextDisplayable::_OutputFormat.

Referenced by Ceylan::Log::LogHolder::LogHolder().

const std::string TextDisplayable::ToString ( std::list< TextDisplayable * >  displayables,
Ceylan::VerbosityLevels  level = Ceylan::high 
) [static, inherited]

Returns a user-friendly description of this list of pointers to text displayable instances.

Parameters:
displayables a list of pointers to TextDisplayable instances/
level the requested verbosity level.
Note:
Text output format is determined from overall settings.
See also:
toString, Ceylan::VerbosityLevels

Definition at line 45 of file CeylanTextDisplayable.cc.

References Ceylan::formatStringList().

const string EventSource::toString ( Ceylan::VerbosityLevels  level = Ceylan::high  )  const [virtual]

Returns a user-friendly description of the state of this object.

Parameters:
level the requested verbosity level.
Note:
Text output format is determined from overall settings.
See also:
TextDisplayable

Implements Ceylan::TextDisplayable.

Reimplemented in Ceylan::CallableEventSource, Ceylan::Controller, Ceylan::Locatable, Ceylan::Locatable2D, and Ceylan::Model.

Definition at line 215 of file CeylanEventSource.cc.

References _listeners, Ceylan::formatStringList(), and Ceylan::low.

Referenced by Ceylan::EventListener::forgetSource(), Ceylan::EventListener::subscribeTo(), Ceylan::Event::toString(), and Ceylan::EventListener::unsubscribeFrom().


Member Data Documentation

TextDisplayable::TextOutputFormat TextDisplayable::_OutputFormat = rawText [static, protected, inherited]

The text format to be used currently by TextDisplayable instances.

Note:
Defaults to raw text.

Definition at line 158 of file CeylanTextDisplayable.h.

Referenced by Ceylan::TextDisplayable::GetOutputFormat(), and Ceylan::TextDisplayable::SetOutputFormat().


The documentation for this class was generated from the following files:

Generated on Thu Jun 4 20:40:14 2009 for Ceylan by  doxygen 1.5.8