The Nebula Device 3: Messaging::AsyncPort Class Reference

The Nebula Device 3

Messaging::AsyncPort Class Reference

#include <asyncport.h>

Inheritance diagram for Messaging::AsyncPort:

Core::RefCounted Interface::InterfaceBase Debug::DebugInterface Graphics::GraphicsInterface Http::HttpInterface

Detailed Description

The AsyncPort class runs its handlers in a separate thread, so that message processing happens in a separate thread and doesn't block the main thread.

(C) 2006 Radon Labs GmbH

Public Member Functions

 AsyncPort ()
 constructor
virtual ~AsyncPort ()
 destructor
void SetHandlerThread (const Ptr< HandlerThreadBase > &handlerThread)
 set pointer to handler thread object (must be derived from HandlerThreadBase)
const Ptr< HandlerThreadBase > & GetHandlerThread () const
 get pointer to handler thread object
virtual void AttachHandler (const Ptr< Handler > &h)
 attach a handler to the port, may be called before or after Open()
virtual void RemoveHandler (const Ptr< Handler > &h)
 dynamically remove a handler from the port
virtual void Open ()
 open the async port
virtual void Close ()
 close the async port
bool IsOpen () const
 return true if port is open
template<class MESSAGETYPE>
void Send (const Ptr< MESSAGETYPE > &msg)
 send an asynchronous message to the port
template<class MESSAGETYPE>
void SendWait (const Ptr< MESSAGETYPE > &msg)
 send a message and wait for completion
template<class MESSAGETYPE>
void Wait (const Ptr< MESSAGETYPE > &msg)
 wait for a message to be handled
template<class MESSAGETYPE>
bool Peek (const Ptr< MESSAGETYPE > &msg)
 peek a message whether it has been handled
template<class MESSAGETYPE>
void Cancel (const Ptr< MESSAGETYPE > &msg)
 cancel a pending message
int GetRefCount () const
 get the current refcount
void AddRef ()
 increment refcount by one
void Release ()
 decrement refcount and destroy object if refcount is zero
bool IsInstanceOf (const Rtti &rtti) const
 return true if this object is instance of given class
bool IsInstanceOf (const Util::String &className) const
 return true if this object is instance of given class by string
bool IsInstanceOf (const Util::FourCC &classFourCC) const
 return true if this object is instance of given class by fourcc
bool IsA (const Rtti &rtti) const
 return true if this object is instance of given class, or a derived class
bool IsA (const Util::String &rttiName) const
 return true if this object is instance of given class, or a derived class, by string
bool IsA (const Util::FourCC &rttiFourCC) const
 return true if this object is instance of given class, or a derived class, by fourcc
const Util::StringGetClassName () const
 get the class name
Util::FourCC GetClassFourCC () const
 get the class FourCC code

Static Public Member Functions

static void DumpRefCountingLeaks ()
 dump refcounting leaks, call at end of application (NEBULA3_DEBUG builds only!)

Member Function Documentation

void Messaging::AsyncPort::AttachHandler ( const Ptr< Handler > &  h  )  [virtual]

attach a handler to the port, may be called before or after Open()

Add a message handler, this can either be called before the handler thread is started, or any time afterwards.

Reimplemented in Interface::InterfaceBase.

void Messaging::AsyncPort::RemoveHandler ( const Ptr< Handler > &  h  )  [virtual]

dynamically remove a handler from the port

Dynamically remove a message handler.

void Messaging::AsyncPort::Open (  )  [virtual]

open the async port

Open the async port. The async port needs a valid name before it is opened. Messages can only be sent to an open port.

Reimplemented in Debug::DebugInterface, Http::HttpInterface, Interface::InterfaceBase, and Graphics::GraphicsInterface.

void Messaging::AsyncPort::Close (  )  [virtual]

close the async port

Closes the async port.

Reimplemented in Graphics::GraphicsInterface.

int Core::RefCounted::GetRefCount (  )  const [inline, inherited]

get the current refcount

Return the current refcount of the object.

void Core::RefCounted::AddRef (  )  [inline, inherited]

increment refcount by one

Increment the refcount of the object.

void Core::RefCounted::Release (  )  [inline, inherited]

decrement refcount and destroy object if refcount is zero

Decrement the refcount and destroy object if refcount is zero.

const Util::String & Core::RefCounted::GetClassName (  )  const [inline, inherited]

get the class name

Get the class name of the object.

Util::FourCC Core::RefCounted::GetClassFourCC (  )  const [inline, inherited]

get the class FourCC code

Get the class FourCC of the object.

void Core::RefCounted::DumpRefCountingLeaks (  )  [static, inherited]

dump refcounting leaks, call at end of application (NEBULA3_DEBUG builds only!)

This method should be called as the very last before an application exits.