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