A concrete TAO_LF_Strategy for ORB configurations that use the Leader/Followers event loop. More...
#include <LF_Strategy_Complete.h>


Public Member Functions | |
Virtual Methods | |
Please check the documentation in TAO_LF_Strategy | |
| virtual | ~TAO_LF_Strategy_Complete (void) |
| virtual void | set_upcall_thread (TAO_Leader_Follower &) |
| The current thread will handle an upcall. | |
| virtual int | set_event_loop_thread (ACE_Time_Value *max_wait_time, TAO_Leader_Follower &) |
| The current thread is entering the reactor event loop. | |
| virtual void | reset_event_loop_thread (int call_reset, TAO_Leader_Follower &) |
| The current thread is leaving the event loop. | |
A concrete TAO_LF_Strategy for ORB configurations that use the Leader/Followers event loop.
Definition at line 31 of file LF_Strategy_Complete.h.
| TAO_LF_Strategy_Complete::~TAO_LF_Strategy_Complete | ( | void | ) | [virtual] |
Definition at line 15 of file LF_Strategy_Complete.cpp.
{
}
| void TAO_LF_Strategy_Complete::reset_event_loop_thread | ( | int | call_reset, | |
| TAO_Leader_Follower & | ||||
| ) | [virtual] |
The current thread is leaving the event loop.
When the thread leaves the event loop a new leader must be elected.
Implements TAO_LF_Strategy.
Definition at line 35 of file LF_Strategy_Complete.cpp.
{
ACE_GUARD (TAO_SYNCH_MUTEX, ace_mon, lf.lock ());
if (call_reset)
lf.reset_event_loop_thread ();
int const result = lf.elect_new_leader ();
if (result == -1)
ACE_ERROR ((LM_ERROR,
ACE_TEXT ("TAO (%P|%t) - Failed to wake up ")
ACE_TEXT ("a follower thread\n")));
}
| int TAO_LF_Strategy_Complete::set_event_loop_thread | ( | ACE_Time_Value * | max_wait_time, | |
| TAO_Leader_Follower & | ||||
| ) | [virtual] |
The current thread is entering the reactor event loop.
Threads that block in the reactor event loop become "server" threads for the Leader/Follower set. They must be flagged specially because they do not wait for one specific event, but for any event whatsoever.
Implements TAO_LF_Strategy.
Definition at line 26 of file LF_Strategy_Complete.cpp.
{
ACE_GUARD_RETURN (TAO_SYNCH_MUTEX, ace_mon, lf.lock (), -1);
return lf.set_event_loop_thread (tv);
}
| void TAO_LF_Strategy_Complete::set_upcall_thread | ( | TAO_Leader_Follower & | ) | [virtual] |
The current thread will handle an upcall.
Threads that handle requests can block for long periods of time, causing deadlocks if they don't elect a new leader before starting the upcall the system can become non-responsive or dead-lock.
Implements TAO_LF_Strategy.
Definition at line 20 of file LF_Strategy_Complete.cpp.
{
lf.set_upcall_thread ();
}
1.7.0