aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/core/lib/channel
diff options
context:
space:
mode:
authorGravatar ncteisen <ncteisen@gmail.com>2018-01-03 17:42:52 -0800
committerGravatar ncteisen <ncteisen@gmail.com>2018-01-03 17:48:30 -0800
commit1d2f23b338fee1a88db63bc5728bbe23065fbba7 (patch)
treeb0a5b8fe0bee4d5ef2d071e945266d916f298420 /src/core/lib/channel
parentfb505cc7c76cf5ec73cae16d146374e74aec5e30 (diff)
Register tracers, not (sub)channels
Diffstat (limited to 'src/core/lib/channel')
-rw-r--r--src/core/lib/channel/channel_tracer.cc30
-rw-r--r--src/core/lib/channel/channel_tracer.h16
2 files changed, 20 insertions, 26 deletions
diff --git a/src/core/lib/channel/channel_tracer.cc b/src/core/lib/channel/channel_tracer.cc
index 31c1d842a0..931f4b32b5 100644
--- a/src/core/lib/channel/channel_tracer.cc
+++ b/src/core/lib/channel/channel_tracer.cc
@@ -25,7 +25,6 @@
#include <stdlib.h>
#include <string.h>
-#include "src/core/ext/filters/client_channel/subchannel.h"
#include "src/core/lib/iomgr/error.h"
#include "src/core/lib/slice/slice_internal.h"
#include "src/core/lib/support/object_registry.h"
@@ -62,12 +61,11 @@ struct grpc_channel_tracer {
};
#ifndef NDEBUG
-grpc_channel_tracer* grpc_channel_tracer_create(size_t max_nodes, intptr_t uuid,
+grpc_channel_tracer* grpc_channel_tracer_create(size_t max_nodes,
const char* file, int line,
const char* func) {
#else
-grpc_channel_tracer* grpc_channel_tracer_create(size_t max_nodes,
- intptr_t uuid) {
+grpc_channel_tracer* grpc_channel_tracer_create(size_t max_nodes) {
#endif
grpc_channel_tracer* tracer = static_cast<grpc_channel_tracer*>(
gpr_zalloc(sizeof(grpc_channel_tracer)));
@@ -78,7 +76,8 @@ grpc_channel_tracer* grpc_channel_tracer_create(size_t max_nodes,
gpr_log(GPR_DEBUG, "%p create [%s:%d %s]", tracer, file, line, func);
}
#endif
- tracer->channel_uuid = uuid;
+ tracer->channel_uuid = grpc_object_registry_register_object(
+ tracer, GRPC_OBJECT_REGISTRY_CHANNEL_TRACER);
tracer->max_list_size = max_nodes;
tracer->time_created = gpr_now(GPR_CLOCK_REALTIME);
return tracer;
@@ -145,6 +144,10 @@ void grpc_channel_tracer_unref(grpc_channel_tracer* tracer) {
}
#endif
+intptr_t grpc_channel_tracer_get_uuid(grpc_channel_tracer* tracer) {
+ return tracer->channel_uuid;
+}
+
void grpc_channel_tracer_add_trace(grpc_channel_tracer* tracer, grpc_slice data,
grpc_error* error,
grpc_connectivity_state connectivity_state,
@@ -318,18 +321,7 @@ char* grpc_channel_tracer_get_trace(intptr_t uuid, bool recursive) {
void* object;
grpc_object_registry_type type =
grpc_object_registry_get_object(uuid, &object);
- GPR_ASSERT(type == GRPC_OBJECT_REGISTRY_CHANNEL ||
- type == GPRC_OBJECT_REGISTRY_SUBCHANNEL);
- switch (type) {
- case GRPC_OBJECT_REGISTRY_CHANNEL:
- return grpc_channel_get_trace(static_cast<grpc_channel*>(object),
- recursive);
- break;
- case GPRC_OBJECT_REGISTRY_SUBCHANNEL:
- return grpc_subchannel_get_trace(static_cast<grpc_subchannel*>(object),
- recursive);
- break;
- default:
- abort();
- }
+ GPR_ASSERT(type == GRPC_OBJECT_REGISTRY_CHANNEL_TRACER);
+ return grpc_channel_tracer_render_trace(
+ static_cast<grpc_channel_tracer*>(object), recursive);
}
diff --git a/src/core/lib/channel/channel_tracer.h b/src/core/lib/channel/channel_tracer.h
index 34bb242ca0..5c34f1bc44 100644
--- a/src/core/lib/channel/channel_tracer.h
+++ b/src/core/lib/channel/channel_tracer.h
@@ -30,16 +30,15 @@ extern grpc_core::DebugOnlyTraceFlag grpc_trace_channel_tracer_refcount;
/* Creates a new tracer. The caller owns a reference to the returned tracer. */
#ifndef NDEBUG
-grpc_channel_tracer* grpc_channel_tracer_create(size_t max_nodes, intptr_t uuid,
+grpc_channel_tracer* grpc_channel_tracer_create(size_t max_nodes,
const char* file, int line,
const char* func);
-#define GRPC_CHANNEL_TRACER_CREATE(max_nodes, id) \
- grpc_channel_tracer_create(max_nodes, id, __FILE__, __LINE__, __func__)
+#define GRPC_CHANNEL_TRACER_CREATE(max_nodes) \
+ grpc_channel_tracer_create(max_nodes, __FILE__, __LINE__, __func__)
#else
-grpc_channel_tracer* grpc_channel_tracer_create(size_t max_nodes,
- intptr_t uuid);
-#define GRPC_CHANNEL_TRACER_CREATE(max_nodes, id) \
- grpc_channel_tracer_create(max_nodes, id)
+grpc_channel_tracer* grpc_channel_tracer_create(size_t max_nodes);
+#define GRPC_CHANNEL_TRACER_CREATE(max_nodes) \
+ grpc_channel_tracer_create(max_nodes)
#endif
#ifndef NDEBUG
@@ -59,6 +58,9 @@ void grpc_channel_tracer_unref(grpc_channel_tracer* tracer);
#define GRPC_CHANNEL_TRACER_UNREF(tracer) grpc_channel_tracer_unref(tracer)
#endif
+/* returns the tracers uuid */
+intptr_t grpc_channel_tracer_get_uuid(grpc_channel_tracer* tracer);
+
/* Adds a new trace node to the tracing object */
void grpc_channel_tracer_add_trace(grpc_channel_tracer* tracer, grpc_slice data,
grpc_error* error,