xrootd
Classes | Public Member Functions | Private Types | Private Attributes
XrdCl::TaskManager Class Reference

#include <XrdClTaskManager.hh>

Collaboration diagram for XrdCl::TaskManager:
Collaboration graph
[legend]

List of all members.

Classes

struct  TaskHelper
struct  TaskHelperCmp

Public Member Functions

 TaskManager ()
 Constructor.
 ~TaskManager ()
 Destructor.
bool Start ()
 Start the manager.
bool Stop ()
void RegisterTask (Task *task, time_t time, bool own=true)
void UnregisterTask (Task *task)
void RunTasks ()
 Run the tasks - this loops infinitely.

Private Types

typedef std::multiset
< TaskHelper, TaskHelperCmp > 
TaskSet
typedef std::list< Task * > TaskList

Private Attributes

uint16_t pResolution
TaskSet pTasks
TaskList pToBeUnregistered
pthread_t pRunnerThread
bool pRunning
XrdSysMutex pMutex
XrdSysMutex pOpMutex

Detailed Description

Run short tasks at a given time in the future

The task manager just runs one extra thread so the execution of one tasks may interfere with the execution of another


Member Typedef Documentation

typedef std::list<Task*> XrdCl::TaskManager::TaskList
private
typedef std::multiset<TaskHelper, TaskHelperCmp> XrdCl::TaskManager::TaskSet
private

Constructor & Destructor Documentation

XrdCl::TaskManager::TaskManager ( )

Constructor.

XrdCl::TaskManager::~TaskManager ( )

Destructor.

References pTasks.


Member Function Documentation

void XrdCl::TaskManager::RegisterTask ( Task *  task,
time_t  time,
bool  own = true 
)

Run the given task at the given time.

Parameters:
tasktask to be run
timetime at which the task should be run
owndetermines whether the task object should be destroyed when no longer needed

References XrdCl::Log::Debug(), XrdCl::DefaultEnv::GetLog(), XrdCl::Task::GetName(), pMutex, pTasks, XrdCl::TaskMgrMsg, and XrdCl::Utils::TimeToString().

Referenced by XrdCl::Channel::Channel(), XrdCl::ForkHandler::Child(), XrdCl::DefaultEnv::GetPostMaster(), XrdCl::Stream::OnConnectError(), and XrdCl::XRootDMsgHandler::Process().

void XrdCl::TaskManager::RunTasks ( )
bool XrdCl::TaskManager::Start ( )
bool XrdCl::TaskManager::Stop ( )

Stop the manager

Will wait until the currently running task completes

References XrdCl::Log::Debug(), XrdCl::Log::Error(), XrdCl::DefaultEnv::GetLog(), pOpMutex, pRunnerThread, pRunning, and XrdCl::TaskMgrMsg.

Referenced by XrdCl::PostMaster::Start(), and XrdCl::PostMaster::Stop().

void XrdCl::TaskManager::UnregisterTask ( Task *  task)

Remove a task, the unregistration process is asynchronous and may be performed at any point in the future, the function just queues the request. Unregistered task gets destroyed if it was owned by the task manager.

References XrdCl::Log::Debug(), XrdCl::DefaultEnv::GetLog(), XrdCl::Task::GetName(), pMutex, pToBeUnregistered, and XrdCl::TaskMgrMsg.

Referenced by XrdCl::Channel::~Channel().


Member Data Documentation

XrdSysMutex XrdCl::TaskManager::pMutex
private
XrdSysMutex XrdCl::TaskManager::pOpMutex
private

Referenced by Start(), and Stop().

uint16_t XrdCl::TaskManager::pResolution
private

Referenced by RunTasks().

pthread_t XrdCl::TaskManager::pRunnerThread
private

Referenced by Start(), and Stop().

bool XrdCl::TaskManager::pRunning
private

Referenced by Start(), and Stop().

TaskSet XrdCl::TaskManager::pTasks
private
TaskList XrdCl::TaskManager::pToBeUnregistered
private

Referenced by RunTasks(), and UnregisterTask().


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