|
|
|
@ -38,8 +38,10 @@ |
|
|
|
|
#include "src/core/support/string.h" |
|
|
|
|
#include <grpc/byte_buffer.h> |
|
|
|
|
|
|
|
|
|
static size_t addhdr(char *p, grpc_event *ev) { |
|
|
|
|
return sprintf(p, "tag:%p call:%p", ev->tag, (void *)ev->call); |
|
|
|
|
static void addhdr(gpr_strvec *buf, grpc_event *ev) { |
|
|
|
|
char *tmp; |
|
|
|
|
gpr_asprintf(&tmp, "tag:%p call:%p", ev->tag, (void *)ev->call); |
|
|
|
|
gpr_strvec_add(buf, tmp); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
static const char *errstr(grpc_op_error err) { |
|
|
|
@ -52,72 +54,84 @@ static const char *errstr(grpc_op_error err) { |
|
|
|
|
return "UNKNOWN_UNKNOWN"; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
static size_t adderr(char *p, grpc_op_error err) { |
|
|
|
|
return sprintf(p, " err=%s", errstr(err)); |
|
|
|
|
static void adderr(gpr_strvec *buf, grpc_op_error err) { |
|
|
|
|
char *tmp; |
|
|
|
|
gpr_asprintf(&tmp, " err=%s", errstr(err)); |
|
|
|
|
gpr_strvec_add(buf, tmp); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
char *grpc_event_string(grpc_event *ev) { |
|
|
|
|
char buffer[1024]; |
|
|
|
|
char *p = buffer; |
|
|
|
|
char *out; |
|
|
|
|
char *tmp; |
|
|
|
|
gpr_strvec buf; |
|
|
|
|
|
|
|
|
|
if (ev == NULL) return gpr_strdup("null"); |
|
|
|
|
|
|
|
|
|
gpr_strvec_init(&buf); |
|
|
|
|
|
|
|
|
|
switch (ev->type) { |
|
|
|
|
case GRPC_SERVER_SHUTDOWN: |
|
|
|
|
p += sprintf(p, "SERVER_SHUTDOWN"); |
|
|
|
|
gpr_strvec_add(&buf, gpr_strdup("SERVER_SHUTDOWN")); |
|
|
|
|
break; |
|
|
|
|
case GRPC_QUEUE_SHUTDOWN: |
|
|
|
|
p += sprintf(p, "QUEUE_SHUTDOWN"); |
|
|
|
|
gpr_strvec_add(&buf, gpr_strdup("QUEUE_SHUTDOWN")); |
|
|
|
|
break; |
|
|
|
|
case GRPC_READ: |
|
|
|
|
p += sprintf(p, "READ: "); |
|
|
|
|
p += addhdr(p, ev); |
|
|
|
|
gpr_strvec_add(&buf, gpr_strdup("READ: ")); |
|
|
|
|
addhdr(&buf, ev); |
|
|
|
|
if (ev->data.read) { |
|
|
|
|
p += sprintf(p, " %d bytes", |
|
|
|
|
gpr_asprintf(&tmp, " %d bytes", |
|
|
|
|
(int)grpc_byte_buffer_length(ev->data.read)); |
|
|
|
|
gpr_strvec_add(&buf, tmp); |
|
|
|
|
} else { |
|
|
|
|
p += sprintf(p, " end-of-stream"); |
|
|
|
|
gpr_strvec_add(&buf, gpr_strdup(" end-of-stream")); |
|
|
|
|
} |
|
|
|
|
break; |
|
|
|
|
case GRPC_INVOKE_ACCEPTED: |
|
|
|
|
p += sprintf(p, "INVOKE_ACCEPTED: "); |
|
|
|
|
p += addhdr(p, ev); |
|
|
|
|
p += adderr(p, ev->data.invoke_accepted); |
|
|
|
|
gpr_strvec_add(&buf, gpr_strdup("INVOKE_ACCEPTED: ")); |
|
|
|
|
addhdr(&buf, ev); |
|
|
|
|
adderr(&buf, ev->data.invoke_accepted); |
|
|
|
|
break; |
|
|
|
|
case GRPC_WRITE_ACCEPTED: |
|
|
|
|
p += sprintf(p, "WRITE_ACCEPTED: "); |
|
|
|
|
p += addhdr(p, ev); |
|
|
|
|
p += adderr(p, ev->data.write_accepted); |
|
|
|
|
gpr_strvec_add(&buf, gpr_strdup("WRITE_ACCEPTED: ")); |
|
|
|
|
addhdr(&buf, ev); |
|
|
|
|
adderr(&buf, ev->data.write_accepted); |
|
|
|
|
break; |
|
|
|
|
case GRPC_FINISH_ACCEPTED: |
|
|
|
|
p += sprintf(p, "FINISH_ACCEPTED: "); |
|
|
|
|
p += addhdr(p, ev); |
|
|
|
|
p += adderr(p, ev->data.write_accepted); |
|
|
|
|
gpr_strvec_add(&buf, gpr_strdup("FINISH_ACCEPTED: ")); |
|
|
|
|
addhdr(&buf, ev); |
|
|
|
|
adderr(&buf, ev->data.write_accepted); |
|
|
|
|
break; |
|
|
|
|
case GRPC_CLIENT_METADATA_READ: |
|
|
|
|
p += sprintf(p, "CLIENT_METADATA_READ: "); |
|
|
|
|
p += addhdr(p, ev); |
|
|
|
|
p += sprintf(p, " %d elements", (int)ev->data.client_metadata_read.count); |
|
|
|
|
gpr_strvec_add(&buf, gpr_strdup("CLIENT_METADATA_READ: ")); |
|
|
|
|
addhdr(&buf, ev); |
|
|
|
|
gpr_asprintf(&tmp, " %d elements", |
|
|
|
|
(int)ev->data.client_metadata_read.count); |
|
|
|
|
gpr_strvec_add(&buf, tmp); |
|
|
|
|
break; |
|
|
|
|
case GRPC_FINISHED: |
|
|
|
|
p += sprintf(p, "FINISHED: "); |
|
|
|
|
p += addhdr(p, ev); |
|
|
|
|
p += sprintf(p, " status=%d details='%s' %d metadata elements", |
|
|
|
|
gpr_strvec_add(&buf, gpr_strdup("FINISHED: ")); |
|
|
|
|
addhdr(&buf, ev); |
|
|
|
|
gpr_asprintf(&tmp, " status=%d details='%s' %d metadata elements", |
|
|
|
|
ev->data.finished.status, ev->data.finished.details, |
|
|
|
|
(int)ev->data.finished.metadata_count); |
|
|
|
|
gpr_strvec_add(&buf, tmp); |
|
|
|
|
break; |
|
|
|
|
case GRPC_SERVER_RPC_NEW: |
|
|
|
|
p += sprintf(p, "SERVER_RPC_NEW: "); |
|
|
|
|
p += addhdr(p, ev); |
|
|
|
|
p += sprintf(p, " method='%s' host='%s' %d metadata elements", |
|
|
|
|
gpr_strvec_add(&buf, gpr_strdup("SERVER_RPC_NEW: ")); |
|
|
|
|
addhdr(&buf, ev); |
|
|
|
|
gpr_asprintf(&tmp, " method='%s' host='%s' %d metadata elements", |
|
|
|
|
ev->data.server_rpc_new.method, ev->data.server_rpc_new.host, |
|
|
|
|
(int)ev->data.server_rpc_new.metadata_count); |
|
|
|
|
gpr_strvec_add(&buf, tmp); |
|
|
|
|
break; |
|
|
|
|
case GRPC_COMPLETION_DO_NOT_USE: |
|
|
|
|
p += sprintf(p, "DO_NOT_USE (this is a bug)"); |
|
|
|
|
p += addhdr(p, ev); |
|
|
|
|
gpr_strvec_add(&buf, gpr_strdup("DO_NOT_USE (this is a bug)")); |
|
|
|
|
addhdr(&buf, ev); |
|
|
|
|
break; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
return gpr_strdup(buffer); |
|
|
|
|
out = gpr_strvec_flatten(&buf); |
|
|
|
|
gpr_strvec_destroy(&buf); |
|
|
|
|
return out; |
|
|
|
|
} |
|
|
|
|