X-Git-Url: http://jsfdemo.indexdata.com/?a=blobdiff_plain;f=src%2Fhttp_command.c;h=9ca548189a2573bee3fb747863f62b40870ebd89;hb=e6f35b732fe9838d5573cb49e57c0d2b02481324;hp=610daeefd31ab7c8989f4af97b915aea4c6d1195;hpb=9267d02c3601122f74bdf3a9d21f30080a4a1a9a;p=pazpar2-moved-to-github.git diff --git a/src/http_command.c b/src/http_command.c index 610daee..9ca5481 100644 --- a/src/http_command.c +++ b/src/http_command.c @@ -593,20 +593,40 @@ static void cmd_record(struct http_channel *c) error(rs, PAZPAR2_RECORD_FAIL, "no record at offset given"); return; } + else if (syntax == 0 && esn == 0) + { + http_channel_observer_t obs = + http_add_observer(c, r->client, show_raw_reset); + int ret = client_show_raw_immediate( + r->client, r->position, syntax, esn, + obs, + show_raw_record_error, + (binary ? + show_raw_record_ok_binary : + show_raw_record_ok), + (binary ? 1 : 0)); + if (ret == -1) + { + http_remove_observer(obs); + error(rs, PAZPAR2_NO_SESSION, 0); + return; + } + } else { void *data2; http_channel_observer_t obs = http_add_observer(c, r->client, show_raw_reset); int ret = - client_show_raw_begin(r->client, r->position, syntax, esn, - obs /* data */, - show_raw_record_error, - (binary ? - show_raw_record_ok_binary : - show_raw_record_ok), - &data2, - (binary ? 1 : 0)); + client_show_raw_begin( + r->client, r->position, syntax, esn, + obs /* data */, + show_raw_record_error, + (binary ? + show_raw_record_ok_binary : + show_raw_record_ok), + &data2, + (binary ? 1 : 0)); if (ret == -1) { http_remove_observer(obs); @@ -820,12 +840,18 @@ static void cmd_stat(struct http_channel *c) struct statistics stat; int clients; + float progress = 0; + if (!s) return; clients = session_active_clients(s->psession); statistics(s->psession, &stat); + if (stat.num_clients > 0) { + progress = (stat.num_clients - clients) / (float)stat.num_clients; + } + wrbuf_rewind(c->wrbuf); wrbuf_puts(c->wrbuf, ""); wrbuf_printf(c->wrbuf, "%d\n", clients); @@ -838,6 +864,7 @@ static void cmd_stat(struct http_channel *c) wrbuf_printf(c->wrbuf, "%d\n", stat.num_idle); wrbuf_printf(c->wrbuf, "%d\n", stat.num_failed); wrbuf_printf(c->wrbuf, "%d\n", stat.num_error); + wrbuf_printf(c->wrbuf, "%.2f\n", progress); wrbuf_puts(c->wrbuf, ""); rs->payload = nmem_strdup(c->nmem, wrbuf_cstr(c->wrbuf)); http_send_response(c);