NAME

ACE_FlReactor - A Reactor implementation that uses the Fast-Light (FL) toolkit for event demultiplexing. This will let us integrate the FL toolkit with ACE and/or TAO.

SYNOPSIS

#include <ace/FlReactor.h>

class ACE_FlReactor : public ACE_Select_Reactor { public: ACE_FlReactor ( size_t size = DEFAULT_SIZE, int restart = 0, ACE_Sig_Handler * = 0 ); virtual ~ACE_FlReactor (void); virtual long schedule_timer ( ACE_Event_Handler *handler, const void *arg, const ACE_Time_Value &delta_time, const ACE_Time_Value &interval ); virtual int reset_timer_interval ( long timer_id, const ACE_Time_Value &interval ); virtual int cancel_timer ( ACE_Event_Handler *handler, int dont_call_handle_close = 1 ); virtual int cancel_timer ( long timer_id, const void **arg = 0, int dont_call_handle_close = 1 ); protected: virtual int register_handler_i ( ACE_HANDLE handle, ACE_Event_Handler *handler, ACE_Reactor_Mask mask ); virtual int register_handler_i ( const ACE_Handle_Set &handles, ACE_Event_Handler *handler, ACE_Reactor_Mask mask ); virtual int remove_handler_i ( ACE_HANDLE handle, ACE_Reactor_Mask mask ); virtual int remove_handler_i ( const ACE_Handle_Set &handles, ACE_Reactor_Mask ); virtual int wait_for_multiple_events ( ACE_Select_Reactor_Handle_Set &, ACE_Time_Value * ); private: void reset_timeout (void); static void fl_io_proc (int fd, void*); static void fl_timeout_proc (void*); ACE_FlReactor (const ACE_FlReactor &); ACE_FlReactor &operator = (const ACE_FlReactor &); };

DESCRIPTION

As many other GUI toolkits FL supports a minimal set of callbacks to handle event demultiplexing, namely simple methods to add file descriptors to the event demuxing set or timeout events. This class adapts this simple mechanisms so they are compatible with ACE's Reactor.

Initialization and termination methods.

ACE_FlReactor (
    size_t size = DEFAULT_SIZE,
    int restart = 0,
    ACE_Sig_Handler * = 0
    );

virtual ~ACE_FlReactor (void);

Timer operations.

virtual long schedule_timer (
    ACE_Event_Handler *handler,
    const void *arg,
    const ACE_Time_Value &delta_time,
    const ACE_Time_Value &interval
    );

virtual int reset_timer_interval (
    long timer_id,
    const ACE_Time_Value &interval
    );

virtual int cancel_timer (
    ACE_Event_Handler *handler,
    int dont_call_handle_close = 1
    );

virtual int cancel_timer (
    long timer_id,
    const void **arg = 0,
    int dont_call_handle_close = 1
    );

Register timers/handles with Fl.

virtual int register_handler_i (
    ACE_HANDLE handle,
    ACE_Event_Handler *handler,
    ACE_Reactor_Mask mask
    );

virtual int register_handler_i (
    const ACE_Handle_Set &handles,
    ACE_Event_Handler *handler,
    ACE_Reactor_Mask mask
    );

virtual int remove_handler_i (
    ACE_HANDLE handle,
    ACE_Reactor_Mask mask
    );

virtual int remove_handler_i (
    const ACE_Handle_Set &handles,
    ACE_Reactor_Mask
    );

virtual int wait_for_multiple_events (
    ACE_Select_Reactor_Handle_Set &,
    ACE_Time_Value *
    );

Integrate with the FL callback function mechanism.

static void fl_io_proc (int fd, void*);

static void fl_timeout_proc (void*);

ACE_FlReactor (const ACE_FlReactor &);

ACE_FlReactor &operator = (const ACE_FlReactor &);

AUTHOR

Carlos O'Ryan coryan@cs.wustl.edu

Based in part in the ACE_XtReactor implementation by:

Eric C. Newton's ecn@clark.net, Kirill Rybaltchenko Kirill.Rybaltchenko@cern.ch, and Douglas C. Schmidt schmidt@cs.wustl.edu

LIBRARY

ace