spdycat, spdyd: Color verbose output
This commit is contained in:
parent
964c0d1005
commit
09154c61f6
|
@ -1028,6 +1028,8 @@ int main(int argc, char **argv)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
set_color_output(isatty(fileno(stdout)));
|
||||||
|
|
||||||
struct sigaction act;
|
struct sigaction act;
|
||||||
memset(&act, 0, sizeof(struct sigaction));
|
memset(&act, 0, sizeof(struct sigaction));
|
||||||
act.sa_handler = SIG_IGN;
|
act.sa_handler = SIG_IGN;
|
||||||
|
|
|
@ -173,6 +173,9 @@ int main(int argc, char **argv)
|
||||||
if(config.htdocs.empty()) {
|
if(config.htdocs.empty()) {
|
||||||
config.htdocs = "./";
|
config.htdocs = "./";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
set_color_output(isatty(fileno(stdout)));
|
||||||
|
|
||||||
struct sigaction act;
|
struct sigaction act;
|
||||||
memset(&act, 0, sizeof(struct sigaction));
|
memset(&act, 0, sizeof(struct sigaction));
|
||||||
act.sa_handler = SIG_IGN;
|
act.sa_handler = SIG_IGN;
|
||||||
|
|
|
@ -475,12 +475,37 @@ void print_frame_attr_indent()
|
||||||
}
|
}
|
||||||
} // namespace
|
} // namespace
|
||||||
|
|
||||||
|
namespace {
|
||||||
|
bool color_output = false;
|
||||||
|
} // namespace
|
||||||
|
|
||||||
|
void set_color_output(bool f)
|
||||||
|
{
|
||||||
|
color_output = f;
|
||||||
|
}
|
||||||
|
|
||||||
|
namespace {
|
||||||
|
const char* ansi_esc(const char *code)
|
||||||
|
{
|
||||||
|
return color_output ? code : "";
|
||||||
|
}
|
||||||
|
} // namespace
|
||||||
|
|
||||||
|
namespace {
|
||||||
|
const char* ansi_escend()
|
||||||
|
{
|
||||||
|
return color_output ? "\033[0m" : "";
|
||||||
|
}
|
||||||
|
} // namespace
|
||||||
|
|
||||||
void print_nv(char **nv)
|
void print_nv(char **nv)
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
for(i = 0; nv[i]; i += 2) {
|
for(i = 0; nv[i]; i += 2) {
|
||||||
print_frame_attr_indent();
|
print_frame_attr_indent();
|
||||||
printf("%s: %s\n", nv[i], nv[i+1]);
|
printf("%s%s%s: %s\n",
|
||||||
|
ansi_esc("\033[1;34m"), nv[i],
|
||||||
|
ansi_escend(), nv[i+1]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -488,7 +513,10 @@ void print_timer()
|
||||||
{
|
{
|
||||||
timeval tv;
|
timeval tv;
|
||||||
get_timer(&tv);
|
get_timer(&tv);
|
||||||
printf("[%3ld.%03ld]", tv.tv_sec, tv.tv_usec/1000);
|
printf("%s[%3ld.%03ld]%s",
|
||||||
|
ansi_esc("\033[33m"),
|
||||||
|
tv.tv_sec, tv.tv_usec/1000,
|
||||||
|
ansi_escend());
|
||||||
}
|
}
|
||||||
|
|
||||||
namespace {
|
namespace {
|
||||||
|
@ -499,10 +527,26 @@ void print_ctrl_hd(const spdylay_ctrl_hd& hd)
|
||||||
}
|
}
|
||||||
} // namespace
|
} // namespace
|
||||||
|
|
||||||
|
enum print_type {
|
||||||
|
PRINT_SEND,
|
||||||
|
PRINT_RECV
|
||||||
|
};
|
||||||
|
|
||||||
namespace {
|
namespace {
|
||||||
void print_frame(spdylay_frame_type type, spdylay_frame *frame)
|
const char* frame_name_ansi_esc(print_type ptype)
|
||||||
{
|
{
|
||||||
printf("%s frame ", ctrl_names[type-1]);
|
return ansi_esc(ptype == PRINT_SEND ? "\033[1;35m" : "\033[1;36m");
|
||||||
|
}
|
||||||
|
} // namespace
|
||||||
|
|
||||||
|
namespace {
|
||||||
|
void print_frame(print_type ptype, spdylay_frame_type type,
|
||||||
|
spdylay_frame *frame)
|
||||||
|
{
|
||||||
|
printf("%s%s%s frame ",
|
||||||
|
frame_name_ansi_esc(ptype),
|
||||||
|
ctrl_names[type-1],
|
||||||
|
ansi_escend());
|
||||||
print_ctrl_hd(frame->syn_stream.hd);
|
print_ctrl_hd(frame->syn_stream.hd);
|
||||||
switch(type) {
|
switch(type) {
|
||||||
case SPDYLAY_SYN_STREAM:
|
case SPDYLAY_SYN_STREAM:
|
||||||
|
@ -564,7 +608,7 @@ void on_ctrl_recv_callback
|
||||||
{
|
{
|
||||||
print_timer();
|
print_timer();
|
||||||
printf(" recv ");
|
printf(" recv ");
|
||||||
print_frame(type, frame);
|
print_frame(PRINT_RECV, type, frame);
|
||||||
fflush(stdout);
|
fflush(stdout);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -608,7 +652,7 @@ void on_invalid_ctrl_recv_callback
|
||||||
{
|
{
|
||||||
print_timer();
|
print_timer();
|
||||||
printf(" [INVALID; status=%s] recv ", strstatus(status_code));
|
printf(" [INVALID; status=%s] recv ", strstatus(status_code));
|
||||||
print_frame(type, frame);
|
print_frame(PRINT_RECV, type, frame);
|
||||||
fflush(stdout);
|
fflush(stdout);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -634,7 +678,10 @@ void on_ctrl_recv_parse_error_callback(spdylay_session *session,
|
||||||
int error_code, void *user_data)
|
int error_code, void *user_data)
|
||||||
{
|
{
|
||||||
print_timer();
|
print_timer();
|
||||||
printf(" [PARSE_ERROR] recv %s frame\n", ctrl_names[type-1]);
|
printf(" [PARSE_ERROR] recv %s%s%s frame\n",
|
||||||
|
frame_name_ansi_esc(PRINT_RECV),
|
||||||
|
ctrl_names[type-1],
|
||||||
|
ansi_escend());
|
||||||
print_frame_attr_indent();
|
print_frame_attr_indent();
|
||||||
printf("Error: %s\n", spdylay_strerror(error_code));
|
printf("Error: %s\n", spdylay_strerror(error_code));
|
||||||
dump_header(head, headlen);
|
dump_header(head, headlen);
|
||||||
|
@ -660,14 +707,16 @@ void on_ctrl_send_callback
|
||||||
{
|
{
|
||||||
print_timer();
|
print_timer();
|
||||||
printf(" send ");
|
printf(" send ");
|
||||||
print_frame(type, frame);
|
print_frame(PRINT_SEND, type, frame);
|
||||||
fflush(stdout);
|
fflush(stdout);
|
||||||
}
|
}
|
||||||
|
|
||||||
namespace {
|
namespace {
|
||||||
void print_data_frame(uint8_t flags, int32_t stream_id, int32_t length)
|
void print_data_frame(print_type ptype, uint8_t flags, int32_t stream_id,
|
||||||
|
int32_t length)
|
||||||
{
|
{
|
||||||
printf("DATA frame (stream_id=%d, flags=%d, length=%d)\n",
|
printf("%sDATA%s frame (stream_id=%d, flags=%d, length=%d)\n",
|
||||||
|
frame_name_ansi_esc(ptype), ansi_escend(),
|
||||||
stream_id, flags, length);
|
stream_id, flags, length);
|
||||||
}
|
}
|
||||||
} // namespace
|
} // namespace
|
||||||
|
@ -678,7 +727,7 @@ void on_data_recv_callback
|
||||||
{
|
{
|
||||||
print_timer();
|
print_timer();
|
||||||
printf(" recv ");
|
printf(" recv ");
|
||||||
print_data_frame(flags, stream_id, length);
|
print_data_frame(PRINT_RECV, flags, stream_id, length);
|
||||||
fflush(stdout);
|
fflush(stdout);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -688,7 +737,7 @@ void on_data_send_callback
|
||||||
{
|
{
|
||||||
print_timer();
|
print_timer();
|
||||||
printf(" send ");
|
printf(" send ");
|
||||||
print_data_frame(flags, stream_id, length);
|
print_data_frame(PRINT_SEND, flags, stream_id, length);
|
||||||
fflush(stdout);
|
fflush(stdout);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -159,6 +159,10 @@ enum {
|
||||||
|
|
||||||
uint8_t get_ssl_io_demand(SSL *ssl, ssize_t r);
|
uint8_t get_ssl_io_demand(SSL *ssl, ssize_t r);
|
||||||
|
|
||||||
|
// Setting true will print characters with ANSI color escape codes
|
||||||
|
// when printing SPDY frames. This function changes a static variable.
|
||||||
|
void set_color_output(bool f);
|
||||||
|
|
||||||
} // namespace spdylay
|
} // namespace spdylay
|
||||||
|
|
||||||
#endif // SPDYLAY_SSL_H
|
#endif // SPDYLAY_SSL_H
|
||||||
|
|
Loading…
Reference in New Issue