Line data Source code
1 : /* 2 : * Copyright (c) 2013 Juniper Networks, Inc. All rights reserved. 3 : * Copyright Contributors to the OpenSDN project 4 : */ 5 : 6 : #include <base/task.h> 7 : #include <base/task_monitor.h> 8 : #include <base/sandesh/task_types.h> 9 : #include <base/task_tbbkeepawake.h> 10 : 11 : using std::string; 12 : 13 0 : static void HandleRequestCommon(const string &context, bool summary) { 14 0 : SandeshTaskScheduler *resp = new SandeshTaskScheduler; 15 0 : TaskScheduler *scheduler = TaskScheduler::GetInstance(); 16 0 : scheduler->GetSandeshData(resp, summary); 17 0 : resp->set_context(context); 18 0 : resp->set_more(false); 19 0 : resp->Response(); 20 0 : } 21 : 22 0 : void SandeshTaskRequest::HandleRequest() const { 23 0 : HandleRequestCommon(context(), false); 24 0 : } 25 : 26 0 : void SandeshTaskSummaryRequest::HandleRequest() const { 27 0 : HandleRequestCommon(context(), true); 28 0 : } 29 : 30 0 : void SandeshTaskMonitorRequest::HandleRequest() const { 31 0 : TaskScheduler *scheduler = TaskScheduler::GetInstance(); 32 : 33 0 : SandeshMonitorResponse *resp = new SandeshMonitorResponse; 34 0 : resp->set_context(context()); 35 0 : resp->set_more(false); 36 : 37 0 : const TaskMonitor *monitor = scheduler->task_monitor(); 38 0 : if (monitor && monitor->inactivity_time_usec() && 39 0 : monitor->poll_interval_msec()) { 40 0 : resp->set_running(true); 41 0 : resp->set_inactivity_time_msec(monitor->inactivity_time_msec()); 42 0 : resp->set_poll_interval_msec(monitor->poll_interval_msec()); 43 0 : resp->set_poll_count(monitor->poll_count()); 44 0 : resp->set_last_activity(monitor->last_activity()); 45 0 : resp->set_last_enqueue_count(monitor->last_enqueue_count()); 46 0 : resp->set_last_done_count(monitor->last_done_count()); 47 0 : resp->set_tbb_keepawake_time(monitor->tbb_keepawake_time_msec()); 48 : } else { 49 0 : resp->set_running(false); 50 : } 51 : 52 0 : resp->Response(); 53 0 : }