OpenSDN source code
|
Task is a wrapper over tbb::task to support policies. More...
#include <task.h>
Inherited by BgpSenderPartition::Worker, cass::cql::impl::WorkerTask, ChannelEventProcTask, ConcurrencyScope::ScopeTask, ConfigAmqpClient::RabbitMQReader, ConfigEtcdClient::EtcdWatcher, ConfigPhysicalDeviceVnSandesh, DBPartition::QueueRunner, DBTable::WalkWorker, DBTableWalker::Worker, FlowKState, FlowStatsCollector::AgeingTask, HttpSession::RequestHandler, IFMapAgentStaleCleaner::IFMapAgentStaleCleanerWorker, IFMapServer::IFMapStaleEntriesCleaner, IFMapServer::IFMapVmSubscribe, IFMapUpdateSender::SendTask, KSyncSockTcpReadTask, KSyncSockUdsReadTask, KSyncTxQueueTask, MacLearningSandeshResp, MockGenerator::SendMessageTask, MockGenerator::SendSessionTask, OVSDB::LogicalSwitchEntry::ProcessDeleteOvsReqTask, OVSDB::LogicalSwitchTable::ProcessDeleteTableReqTask, OVSDB::OvsdbSandeshTask, OvsdbClientSandesTask, PhysicalSwitchSandeshTask, PipelineWorker, PktSandeshFlow, QueueTaskRunner< QueueEntryT, QueueT >, QueueTaskRunner< AgentSandeshManager::PageRequest, WorkQueue< AgentSandeshManager::PageRequest > >, QueueTaskRunner< BgpSession *, WorkQueue< BgpSession * > >, QueueTaskRunner< BgpXmppChannel *, WorkQueue< BgpXmppChannel * > >, QueueTaskRunner< boost::intrusive_ptr< const sc::event_base >, WorkQueue< boost::intrusive_ptr< const sc::event_base > > >, QueueTaskRunner< boost::shared_ptr< FlowExportReq >, WorkQueue< boost::shared_ptr< FlowExportReq > > >, QueueTaskRunner< boost::shared_ptr< FlowStatsCollectorReq >, WorkQueue< boost::shared_ptr< FlowStatsCollectorReq > > >, QueueTaskRunner< boost::shared_ptr< FlowUveStatsRequest >, WorkQueue< boost::shared_ptr< FlowUveStatsRequest > > >, QueueTaskRunner< boost::shared_ptr< PacketBufferEnqueueItem >, WorkQueue< boost::shared_ptr< PacketBufferEnqueueItem > > >, QueueTaskRunner< boost::shared_ptr< PktInfo >, WorkQueue< boost::shared_ptr< PktInfo > > >, QueueTaskRunner< boost::shared_ptr< RecordRequest >, WorkQueue< boost::shared_ptr< RecordRequest > > >, QueueTaskRunner< boost::shared_ptr< SessionStatsReq >, WorkQueue< boost::shared_ptr< SessionStatsReq > > >, QueueTaskRunner< boost::uuids::uuid, WorkQueue< boost::uuids::uuid > >, QueueTaskRunner< ControllerWorkQueueDataType, WorkQueue< ControllerWorkQueueDataType > >, QueueTaskRunner< CryptTunnelEvent *, WorkQueue< CryptTunnelEvent * > >, QueueTaskRunner< DiagEntryOp *, WorkQueue< DiagEntryOp * > >, QueueTaskRunner< EnqueuedCb, WorkQueue< EnqueuedCb > >, QueueTaskRunner< EventContainer, WorkQueue< EventContainer > >, QueueTaskRunner< EventNotifier::WorkQueueMessage::Ptr, WorkQueue< EventNotifier::WorkQueueMessage::Ptr > >, QueueTaskRunner< FlowMgmtRequestPtr, WorkQueue< FlowMgmtRequestPtr > >, QueueTaskRunner< HealthCheckInstanceEvent *, WorkQueue< HealthCheckInstanceEvent * > >, QueueTaskRunner< IFMapChannelManager::ConfigTaskQueueEntry, WorkQueue< IFMapChannelManager::ConfigTaskQueueEntry > >, QueueTaskRunner< IFMapServer::QueueEntry, WorkQueue< IFMapServer::QueueEntry > >, QueueTaskRunner< InstanceManager::InstanceManagerChildEvent, WorkQueue< InstanceManager::InstanceManagerChildEvent > >, QueueTaskRunner< IntrusivePtrRef< VrfEntry >, WorkQueue< IntrusivePtrRef< VrfEntry > > >, QueueTaskRunner< IoContext *, WorkQueue< IoContext * > >, QueueTaskRunner< IPeerUpdate *, WorkQueue< IPeerUpdate * > >, QueueTaskRunner< KSyncObjectEvent *, WorkQueue< KSyncObjectEvent * > >, QueueTaskRunner< KSyncRxQueueData, WorkQueue< KSyncRxQueueData > >, QueueTaskRunner< LifetimeManager::LifetimeActorRef, WorkQueue< LifetimeManager::LifetimeActorRef > >, QueueTaskRunner< MacLearningEntryRequestPtr, WorkQueue< MacLearningEntryRequestPtr > >, QueueTaskRunner< MacLearningMgmtRequestPtr, WorkQueue< MacLearningMgmtRequestPtr > >, QueueTaskRunner< McastSGEntry *, WorkQueue< McastSGEntry * > >, QueueTaskRunner< NdpEntry::EventContainer, WorkQueue< NdpEntry::EventContainer > >, QueueTaskRunner< OVSDB::OvsdbClientIdl::OvsdbMsg *, WorkQueue< OVSDB::OvsdbClientIdl::OvsdbMsg * > >, QueueTaskRunner< OvsdbSessionEvent, WorkQueue< OvsdbSessionEvent > >, QueueTaskRunner< PathPreferenceModule::PathPreferenceEventContainer, WorkQueue< PathPreferenceModule::PathPreferenceEventContainer > >, QueueTaskRunner< QueueEntryT, WorkQueue< QueueEntryT > >, QueueTaskRunner< ResourceBackupReqPtr, WorkQueue< ResourceBackupReqPtr > >, QueueTaskRunner< ResourceRestoreReqPtr, WorkQueue< ResourceRestoreReqPtr > >, QueueTaskRunner< SandeshClientSMImpl::EventContainer, WorkQueue< SandeshClientSMImpl::EventContainer > >, QueueTaskRunner< StateMachine::EventContainer, WorkQueue< StateMachine::EventContainer > >, QueueTaskRunner< StaticRouteRequest *, WorkQueue< StaticRouteRequest * > >, QueueTaskRunner< std::string, WorkQueue< std::string > >, QueueTaskRunner< TcpSessionPtr, WorkQueue< TcpSessionPtr > >, QueueTaskRunner< uint16_t, WorkQueue< uint16_t > >, QueueTaskRunner< VnswInterfaceListenerBase::Event *, WorkQueue< VnswInterfaceListenerBase::Event * > >, QueueTaskRunner< XmppServerConnection *, WorkQueue< XmppServerConnection * > >, RequestPipeline::StageWorker, RestServerGetVmCfgTask, SandeshPortSubscribeTask, SessionStatsCollector::SessionTask, SslSession::SslReader, TaskTrigger::WorkerTask, TcpSession::Reader, Timer::TimerTask, UdpServer::Reader, and VxLanConfigSandeshTask.
Public Types | |
enum | State { INIT, WAIT, RUN } |
Task states. More... | |
enum | TbbState { TBB_INIT, TBB_ENQUEUED, TBB_EXEC, TBB_DONE } |
Public Member Functions | |
Task (int task_id, int task_instance) | |
Task (int task_id) | |
virtual | ~Task () |
virtual bool | Run ()=0 |
Code to execute. Returns true if task is completed. Return false to reschedule the task. More... | |
virtual void | OnTaskCancel () |
Called on task exit, if it is marked for cancellation. If the user wants to do any cleanup on task cancellation, then he/she can overload this function. More... | |
State | GetState () const |
int | GetTaskId () const |
int | GetTaskInstance () const |
uint64_t | GetSeqno () const |
bool | task_cancelled () const |
virtual std::string | Description () const =0 |
uint64_t | enqueue_time () const |
uint64_t | schedule_time () const |
uint32_t | execute_delay () const |
uint32_t | schedule_delay () const |
Static Public Member Functions | |
static Task * | Running () |
Returns a pointer to the current task the code is executing under. More... | |
Static Public Attributes | |
static const int | kTaskInstanceAny = -1 |
Private Member Functions | |
void | SetSeqNo (uint64_t seqno) |
void | SetTbbState (TbbState s) |
void | SetState (State s) |
void | SetTaskRecycle () |
void | SetTaskComplete () |
void | StartTask (TaskScheduler *scheduler) |
Starts execution of a task. More... | |
DISALLOW_COPY_AND_ASSIGN (Task) | |
Private Attributes | |
int | task_id_ |
The code path executed by the task. More... | |
int | task_instance_ |
The dataset id within a code path. More... | |
tbb::task * | task_impl_ |
State | state_ |
TbbState | tbb_state_ |
uint64_t | seqno_ |
bool | task_recycle_ |
bool | task_cancel_ |
uint64_t | enqueue_time_ |
uint64_t | schedule_time_ |
uint32_t | execute_delay_ |
uint32_t | schedule_delay_ |
boost::intrusive::list_member_hook | waitq_hook_ |
Friends | |
class | TaskEntry |
class | TaskScheduler |
class | TaskImpl |
std::ostream & | operator<< (std::ostream &out, const Task &task) |
Task is a wrapper over tbb::task to support policies.
There are two kind of tasks,
The policies can be specified in the form of, task(tid0) => <tid1, -1> <tid2, 2> <tid3, 3> The rule implies that:
The policy rules are symmetric. That is:
If task_instance == -1, means instance is not applicable. It implies that, any number of tasks with instance -1 can run at a time
If task_instance != -1, only one task of given instnace can run at a time
When there are multiple tasks ready to run, they are scheduled in their order of enqueue
enum Task::State |
enum Task::TbbState |
|
pure virtual |
Implemented in cass::cql::impl::WorkerTask, SandeshVmVnToVmiTask, SandeshVmiToVmVnTask, SandeshVmVnPortSubscribeTask, IFMapAgentStaleCleaner::IFMapAgentStaleCleanerWorker, SandeshVmiPortSubscribeTask, VxLanConfigSandeshTask, BgpSenderPartition::Worker, ConfigPhysicalDeviceVnSandesh, MockGenerator::SendSessionTask, MacLearningSandeshResp, DBTable::WalkWorker, KSyncSockTcpReadTask, PhysicalSwitchSandeshTask, DBPartition::QueueRunner, HttpSession::RequestHandler, SessionStatsCollector::SessionTask, IFMapServer::IFMapVmSubscribe, OVSDB::LogicalSwitchEntry::ProcessDeleteOvsReqTask, MockGenerator::SendMessageTask, IFMapServer::IFMapStaleEntriesCleaner, OvsdbClientSandesTask, FlowStatsCollector::AgeingTask, RequestPipeline::StageWorker, KSyncTxQueueTask, TcpSession::Reader, DBTableWalker::Worker, ConfigEtcdClient::EtcdWatcher, ChannelEventProcTask, Timer::TimerTask, SslSession::SslReader, IFMapUpdateSender::SendTask, RestServerGetVmCfgTask, OVSDB::LogicalSwitchTable::ProcessDeleteTableReqTask, QueueTaskRunner< QueueEntryT, QueueT >, QueueTaskRunner< std::string, WorkQueue< std::string > >, QueueTaskRunner< BgpSession *, WorkQueue< BgpSession * > >, QueueTaskRunner< boost::shared_ptr< FlowExportReq >, WorkQueue< boost::shared_ptr< FlowExportReq > > >, QueueTaskRunner< AgentSandeshManager::PageRequest, WorkQueue< AgentSandeshManager::PageRequest > >, QueueTaskRunner< KSyncRxQueueData, WorkQueue< KSyncRxQueueData > >, QueueTaskRunner< IoContext *, WorkQueue< IoContext * > >, QueueTaskRunner< MacLearningEntryRequestPtr, WorkQueue< MacLearningEntryRequestPtr > >, QueueTaskRunner< boost::shared_ptr< SessionStatsReq >, WorkQueue< boost::shared_ptr< SessionStatsReq > > >, QueueTaskRunner< TcpSessionPtr, WorkQueue< TcpSessionPtr > >, QueueTaskRunner< BgpXmppChannel *, WorkQueue< BgpXmppChannel * > >, QueueTaskRunner< ResourceBackupReqPtr, WorkQueue< ResourceBackupReqPtr > >, QueueTaskRunner< boost::shared_ptr< FlowUveStatsRequest >, WorkQueue< boost::shared_ptr< FlowUveStatsRequest > > >, QueueTaskRunner< boost::shared_ptr< RecordRequest >, WorkQueue< boost::shared_ptr< RecordRequest > > >, QueueTaskRunner< boost::shared_ptr< PacketBufferEnqueueItem >, WorkQueue< boost::shared_ptr< PacketBufferEnqueueItem > > >, QueueTaskRunner< OVSDB::OvsdbClientIdl::OvsdbMsg *, WorkQueue< OVSDB::OvsdbClientIdl::OvsdbMsg * > >, QueueTaskRunner< InstanceManager::InstanceManagerChildEvent, WorkQueue< InstanceManager::InstanceManagerChildEvent > >, QueueTaskRunner< boost::shared_ptr< FlowStatsCollectorReq >, WorkQueue< boost::shared_ptr< FlowStatsCollectorReq > > >, QueueTaskRunner< NdpEntry::EventContainer, WorkQueue< NdpEntry::EventContainer > >, QueueTaskRunner< IntrusivePtrRef< VrfEntry >, WorkQueue< IntrusivePtrRef< VrfEntry > > >, QueueTaskRunner< PathPreferenceModule::PathPreferenceEventContainer, WorkQueue< PathPreferenceModule::PathPreferenceEventContainer > >, QueueTaskRunner< XmppServerConnection *, WorkQueue< XmppServerConnection * > >, QueueTaskRunner< FlowMgmtRequestPtr, WorkQueue< FlowMgmtRequestPtr > >, QueueTaskRunner< ControllerWorkQueueDataType, WorkQueue< ControllerWorkQueueDataType > >, QueueTaskRunner< StateMachine::EventContainer, WorkQueue< StateMachine::EventContainer > >, QueueTaskRunner< LifetimeManager::LifetimeActorRef, WorkQueue< LifetimeManager::LifetimeActorRef > >, QueueTaskRunner< uint16_t, WorkQueue< uint16_t > >, QueueTaskRunner< McastSGEntry *, WorkQueue< McastSGEntry * > >, QueueTaskRunner< IPeerUpdate *, WorkQueue< IPeerUpdate * > >, QueueTaskRunner< OvsdbSessionEvent, WorkQueue< OvsdbSessionEvent > >, QueueTaskRunner< QueueEntryT, WorkQueue< QueueEntryT > >, QueueTaskRunner< ResourceRestoreReqPtr, WorkQueue< ResourceRestoreReqPtr > >, QueueTaskRunner< DiagEntryOp *, WorkQueue< DiagEntryOp * > >, QueueTaskRunner< StaticRouteRequest *, WorkQueue< StaticRouteRequest * > >, QueueTaskRunner< IFMapChannelManager::ConfigTaskQueueEntry, WorkQueue< IFMapChannelManager::ConfigTaskQueueEntry > >, QueueTaskRunner< HealthCheckInstanceEvent *, WorkQueue< HealthCheckInstanceEvent * > >, QueueTaskRunner< EnqueuedCb, WorkQueue< EnqueuedCb > >, QueueTaskRunner< boost::uuids::uuid, WorkQueue< boost::uuids::uuid > >, QueueTaskRunner< CryptTunnelEvent *, WorkQueue< CryptTunnelEvent * > >, QueueTaskRunner< boost::intrusive_ptr< const sc::event_base >, WorkQueue< boost::intrusive_ptr< const sc::event_base > > >, QueueTaskRunner< SandeshClientSMImpl::EventContainer, WorkQueue< SandeshClientSMImpl::EventContainer > >, QueueTaskRunner< KSyncObjectEvent *, WorkQueue< KSyncObjectEvent * > >, QueueTaskRunner< IFMapServer::QueueEntry, WorkQueue< IFMapServer::QueueEntry > >, QueueTaskRunner< VnswInterfaceListenerBase::Event *, WorkQueue< VnswInterfaceListenerBase::Event * > >, QueueTaskRunner< MacLearningMgmtRequestPtr, WorkQueue< MacLearningMgmtRequestPtr > >, QueueTaskRunner< EventNotifier::WorkQueueMessage::Ptr, WorkQueue< EventNotifier::WorkQueueMessage::Ptr > >, QueueTaskRunner< EventContainer, WorkQueue< EventContainer > >, QueueTaskRunner< boost::shared_ptr< PktInfo >, WorkQueue< boost::shared_ptr< PktInfo > > >, ConfigAmqpClient::RabbitMQReader, OVSDB::OvsdbSandeshTask, ConcurrencyScope::ScopeTask, UdpServer::Reader, KSyncSockUdsReadTask, PipelineWorker, TaskTrigger::WorkerTask, PktSandeshFlow, and FlowKState.
|
private |
|
inlinevirtual |
Called on task exit, if it is marked for cancellation. If the user wants to do any cleanup on task cancellation, then he/she can overload this function.
Reimplemented in Timer::TimerTask.
|
pure virtual |
Code to execute. Returns true if task is completed. Return false to reschedule the task.
Implemented in cass::cql::impl::WorkerTask, SandeshVmVnToVmiTask, SandeshVmiToVmVnTask, SandeshVmVnPortSubscribeTask, SandeshVmiPortSubscribeTask, IFMapAgentStaleCleaner::IFMapAgentStaleCleanerWorker, VxLanConfigSandeshTask, ConfigPhysicalDeviceVnSandesh, BgpSenderPartition::Worker, MacLearningSandeshResp, DBTable::WalkWorker, KSyncSockTcpReadTask, PhysicalSwitchSandeshTask, SessionStatsCollector::SessionTask, DBPartition::QueueRunner, HttpSession::RequestHandler, OVSDB::LogicalSwitchEntry::ProcessDeleteOvsReqTask, MockGenerator::SendSessionTask, IFMapServer::IFMapVmSubscribe, MockGenerator::SendMessageTask, OvsdbClientSandesTask, FlowStatsCollector::AgeingTask, RequestPipeline::StageWorker, KSyncTxQueueTask, DBTableWalker::Worker, ConfigEtcdClient::EtcdWatcher, TcpSession::Reader, ChannelEventProcTask, PktSandeshFlowStats, IFMapServer::IFMapStaleEntriesCleaner, OVSDB::LogicalSwitchTable::ProcessDeleteTableReqTask, ConfigAmqpClient::RabbitMQReader, SslSession::SslReader, OVSDB::OvsdbSandeshTask, RestServerGetVmCfgTask, ConcurrencyScope::ScopeTask, QueueTaskRunner< QueueEntryT, QueueT >, QueueTaskRunner< std::string, WorkQueue< std::string > >, QueueTaskRunner< BgpSession *, WorkQueue< BgpSession * > >, QueueTaskRunner< boost::shared_ptr< FlowExportReq >, WorkQueue< boost::shared_ptr< FlowExportReq > > >, QueueTaskRunner< AgentSandeshManager::PageRequest, WorkQueue< AgentSandeshManager::PageRequest > >, QueueTaskRunner< KSyncRxQueueData, WorkQueue< KSyncRxQueueData > >, QueueTaskRunner< IoContext *, WorkQueue< IoContext * > >, QueueTaskRunner< MacLearningEntryRequestPtr, WorkQueue< MacLearningEntryRequestPtr > >, QueueTaskRunner< boost::shared_ptr< SessionStatsReq >, WorkQueue< boost::shared_ptr< SessionStatsReq > > >, QueueTaskRunner< TcpSessionPtr, WorkQueue< TcpSessionPtr > >, QueueTaskRunner< BgpXmppChannel *, WorkQueue< BgpXmppChannel * > >, QueueTaskRunner< ResourceBackupReqPtr, WorkQueue< ResourceBackupReqPtr > >, QueueTaskRunner< boost::shared_ptr< FlowUveStatsRequest >, WorkQueue< boost::shared_ptr< FlowUveStatsRequest > > >, QueueTaskRunner< boost::shared_ptr< RecordRequest >, WorkQueue< boost::shared_ptr< RecordRequest > > >, QueueTaskRunner< boost::shared_ptr< PacketBufferEnqueueItem >, WorkQueue< boost::shared_ptr< PacketBufferEnqueueItem > > >, QueueTaskRunner< OVSDB::OvsdbClientIdl::OvsdbMsg *, WorkQueue< OVSDB::OvsdbClientIdl::OvsdbMsg * > >, QueueTaskRunner< InstanceManager::InstanceManagerChildEvent, WorkQueue< InstanceManager::InstanceManagerChildEvent > >, QueueTaskRunner< boost::shared_ptr< FlowStatsCollectorReq >, WorkQueue< boost::shared_ptr< FlowStatsCollectorReq > > >, QueueTaskRunner< NdpEntry::EventContainer, WorkQueue< NdpEntry::EventContainer > >, QueueTaskRunner< IntrusivePtrRef< VrfEntry >, WorkQueue< IntrusivePtrRef< VrfEntry > > >, QueueTaskRunner< PathPreferenceModule::PathPreferenceEventContainer, WorkQueue< PathPreferenceModule::PathPreferenceEventContainer > >, QueueTaskRunner< XmppServerConnection *, WorkQueue< XmppServerConnection * > >, QueueTaskRunner< FlowMgmtRequestPtr, WorkQueue< FlowMgmtRequestPtr > >, QueueTaskRunner< ControllerWorkQueueDataType, WorkQueue< ControllerWorkQueueDataType > >, QueueTaskRunner< StateMachine::EventContainer, WorkQueue< StateMachine::EventContainer > >, QueueTaskRunner< LifetimeManager::LifetimeActorRef, WorkQueue< LifetimeManager::LifetimeActorRef > >, QueueTaskRunner< uint16_t, WorkQueue< uint16_t > >, QueueTaskRunner< McastSGEntry *, WorkQueue< McastSGEntry * > >, QueueTaskRunner< IPeerUpdate *, WorkQueue< IPeerUpdate * > >, QueueTaskRunner< OvsdbSessionEvent, WorkQueue< OvsdbSessionEvent > >, QueueTaskRunner< QueueEntryT, WorkQueue< QueueEntryT > >, QueueTaskRunner< ResourceRestoreReqPtr, WorkQueue< ResourceRestoreReqPtr > >, QueueTaskRunner< DiagEntryOp *, WorkQueue< DiagEntryOp * > >, QueueTaskRunner< StaticRouteRequest *, WorkQueue< StaticRouteRequest * > >, QueueTaskRunner< IFMapChannelManager::ConfigTaskQueueEntry, WorkQueue< IFMapChannelManager::ConfigTaskQueueEntry > >, QueueTaskRunner< HealthCheckInstanceEvent *, WorkQueue< HealthCheckInstanceEvent * > >, QueueTaskRunner< EnqueuedCb, WorkQueue< EnqueuedCb > >, QueueTaskRunner< boost::uuids::uuid, WorkQueue< boost::uuids::uuid > >, QueueTaskRunner< CryptTunnelEvent *, WorkQueue< CryptTunnelEvent * > >, QueueTaskRunner< boost::intrusive_ptr< const sc::event_base >, WorkQueue< boost::intrusive_ptr< const sc::event_base > > >, QueueTaskRunner< SandeshClientSMImpl::EventContainer, WorkQueue< SandeshClientSMImpl::EventContainer > >, QueueTaskRunner< KSyncObjectEvent *, WorkQueue< KSyncObjectEvent * > >, QueueTaskRunner< IFMapServer::QueueEntry, WorkQueue< IFMapServer::QueueEntry > >, QueueTaskRunner< VnswInterfaceListenerBase::Event *, WorkQueue< VnswInterfaceListenerBase::Event * > >, QueueTaskRunner< MacLearningMgmtRequestPtr, WorkQueue< MacLearningMgmtRequestPtr > >, QueueTaskRunner< EventNotifier::WorkQueueMessage::Ptr, WorkQueue< EventNotifier::WorkQueueMessage::Ptr > >, QueueTaskRunner< EventContainer, WorkQueue< EventContainer > >, QueueTaskRunner< boost::shared_ptr< PktInfo >, WorkQueue< boost::shared_ptr< PktInfo > > >, IFMapUpdateSender::SendTask, UdpServer::Reader, KSyncSockUdsReadTask, PktSandeshFlow, PipelineWorker, Timer::TimerTask, FlowKState, and TaskTrigger::WorkerTask.
|
static |
|
private |
|
friend |
|
friend |
|
private |
|
private |