summaryrefslogtreecommitdiff
path: root/src/tracing/agent.h
diff options
context:
space:
mode:
authorJames M Snell <jasnell@gmail.com>2018-04-03 18:05:33 -0700
committerJames M Snell <jasnell@gmail.com>2018-04-17 08:30:20 -0700
commit5c27e44488aa1c00248297204ff3484c24ff3ae7 (patch)
tree4c061d36122bcb91028eb9d0457dfa15bc84604a /src/tracing/agent.h
parent95fafc0254f6636b7c7546ac63599c79a7182fd9 (diff)
downloadandroid-node-v8-5c27e44488aa1c00248297204ff3484c24ff3ae7.tar.gz
android-node-v8-5c27e44488aa1c00248297204ff3484c24ff3ae7.tar.bz2
android-node-v8-5c27e44488aa1c00248297204ff3484c24ff3ae7.zip
trace_events: adds a new trace_events api
Removes the requirement to use `--trace-events-enabled` to enable trace events. Tracing is enabled automatically if there are any enabled categories. Adds a new `trace_events` module with an API for enabling/disabling trace events at runtime without a command line flag. ```js const trace_events = require('trace_events'); const categories = [ 'node.perf', 'node.async_hooks' ]; const tracing = trace_events.createTracing({ categories }); tracing.enable(); // do stuff tracing.disable(); ``` Multiple `Tracing` objects may exist and be enabled at any point in time. The enabled trace event categories is the union of all enabled `Tracing` objects and the `--trace-event-categories` flag. PR-URL: https://github.com/nodejs/node/pull/19803 Reviewed-By: Matteo Collina <matteo.collina@gmail.com> Reviewed-By: Ali Ijaz Sheikh <ofrobots@google.com> Reviewed-By: Franziska Hinkelmann <franziska.hinkelmann@gmail.com>
Diffstat (limited to 'src/tracing/agent.h')
-rw-r--r--src/tracing/agent.h19
1 files changed, 18 insertions, 1 deletions
diff --git a/src/tracing/agent.h b/src/tracing/agent.h
index 9d6bc4e90a..ca5fd35417 100644
--- a/src/tracing/agent.h
+++ b/src/tracing/agent.h
@@ -5,9 +5,14 @@
#include "uv.h"
#include "v8.h"
+#include <set>
+#include <string>
+
namespace node {
namespace tracing {
+using v8::platform::tracing::TraceConfig;
+
class TracingController : public v8::platform::tracing::TracingController {
public:
TracingController() : v8::platform::tracing::TracingController() {}
@@ -20,17 +25,29 @@ class TracingController : public v8::platform::tracing::TracingController {
class Agent {
public:
explicit Agent(const std::string& log_file_pattern);
- void Start(const std::string& enabled_categories);
void Stop();
TracingController* GetTracingController() { return tracing_controller_; }
+ void Enable(const std::string& categories);
+ void Enable(const std::set<std::string>& categories);
+ void Disable(const std::set<std::string>& categories);
+ std::string GetEnabledCategories();
+
private:
static void ThreadCb(void* arg);
+ void Start();
+ void RestartTracing();
+
+ TraceConfig* CreateTraceConfig();
+
+ const std::string& log_file_pattern_;
uv_thread_t thread_;
uv_loop_t tracing_loop_;
bool started_ = false;
+
+ std::multiset<std::string> categories_;
TracingController* tracing_controller_ = nullptr;
};