Public Member Functions | Protected Member Functions | Private Attributes

TAO::GUIResource_Factory Class Reference

#include <GUIResource_Factory.h>

Inheritance diagram for TAO::GUIResource_Factory:
Inheritance graph
[legend]

List of all members.

Public Member Functions

 GUIResource_Factory ()
virtual ~GUIResource_Factory ()
virtual ACE_Reactorget_reactor (void)
virtual void reclaim_reactor (ACE_Reactor *)

Protected Member Functions

virtual ACE_Reactor_Implreactor_impl (void)=0

Private Attributes

bool dynamically_allocated_reactor_
TAO_SYNCH_MUTEX lock_
 for internal locking.

Detailed Description

Abstract base class for the GUI resource factory.

This base class for resource factories which provide GUIReactors integrated with specific GUI event loop. In general, children of this class reimplement reactor_impl method where specific GUIReactor is created. GUIResource_Factory are usually created by GUIResource_Loader subclasses. Children of this class will be held in TSS by the ORB Core.

Definition at line 48 of file GUIResource_Factory.h.


Constructor & Destructor Documentation

TAO::GUIResource_Factory::GUIResource_Factory ( void   ) 

Definition at line 10 of file GUIResource_Factory.cpp.

TAO::GUIResource_Factory::~GUIResource_Factory ( void   )  [virtual]

Definition at line 15 of file GUIResource_Factory.cpp.

  {
  }


Member Function Documentation

ACE_Reactor * TAO::GUIResource_Factory::get_reactor ( void   )  [virtual]

Create ACE_Reactor using allocate_reactor_impl. Please note that this call is NOT synchronized. Left to the higher level versions to synchronize access.

Definition at line 20 of file GUIResource_Factory.cpp.

  {
    // @@Marek, do we need a lock here??
    // @Bala, I suppose we don't need locking for any
    //   reasonable use case as this
    //   factory is intended to be a variable in TSS.
    //   I can imagine that    someone may try to use it in distinct
    //   threads, though I do not know
    //   what for. Nevertheless, just for a case  I sync the creation of reactor.
    //   I think, that double checked locking is
    //   not necessary, because the performance is not an issue here.
    ACE_GUARD_RETURN (TAO_SYNCH_MUTEX, ace_mon, this->lock_, 0);

    ACE_Reactor *reactor = 0;
    ACE_NEW_RETURN (reactor,
                    ACE_Reactor (this->reactor_impl (), 1),
                    0);

    if (reactor->initialized () == 0)
    {
      delete reactor;
      reactor = 0;
    }
    else
      this->dynamically_allocated_reactor_ = true;

    return reactor;
  }

virtual ACE_Reactor_Impl* TAO::GUIResource_Factory::reactor_impl ( void   )  [protected, pure virtual]

Create or return current reactor instance. Please note that this call is NOT synchronized. Left to the get_reactor to synchronize access.

Implemented in TAO::FlResource_Factory, TAO::FoxResource_Factory, TAO::QtResource_Factory, TAO::TkResource_Factory, and TAO::XtResource_Factory.

void TAO::GUIResource_Factory::reclaim_reactor ( ACE_Reactor reactor  )  [virtual]

Reclaim the reactor if allocated by this factory. Please note that this call is NOT synchronized. Left to the higher level versions to synchronize access.

Definition at line 50 of file GUIResource_Factory.cpp.

  {
    ACE_GUARD ( TAO_SYNCH_MUTEX, ace_mon, this->lock_ );

    if (this->dynamically_allocated_reactor_)
      delete reactor;
  }


Member Data Documentation

bool TAO::GUIResource_Factory::dynamically_allocated_reactor_ [private]

Flag that is set to true if the reactor obtained from the get_reactor() method is dynamically allocated. If this flag is set to true, then the reclaim_reactor() method with call the delete operator on the given reactor. This flag is necessary to make sure that a reactor not allocated by the default resource factory is not reclaimed by the default resource factory. Such a situation can occur when a resource factory derived from the default one overrides the get_reactor() method but does not override the reclaim_reactor() method.

Definition at line 91 of file GUIResource_Factory.h.

TAO_SYNCH_MUTEX TAO::GUIResource_Factory::lock_ [private]

for internal locking.

Reimplemented in TAO::XtResource_Factory.

Definition at line 94 of file GUIResource_Factory.h.


The documentation for this class was generated from the following files:
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines