projects
/
pazpar2-moved-to-github.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
102d64b
)
Approximation. New function to get_version
author
Dennis Schafroth
<dennis@indexdata.com>
Thu, 12 Apr 2012 16:11:29 +0000
(18:11 +0200)
committer
Dennis Schafroth
<dennis@indexdata.com>
Thu, 12 Apr 2012 16:11:29 +0000
(18:11 +0200)
src/http_command.c
patch
|
blob
|
history
diff --git
a/src/http_command.c
b/src/http_command.c
index
b75c9c9
..
5f40d29
100644
(file)
--- a/
src/http_command.c
+++ b/
src/http_command.c
@@
-93,6
+93,16
@@
struct http_sessions {
static YAZ_MUTEX g_http_session_mutex = 0;
static int g_http_sessions = 0;
static YAZ_MUTEX g_http_session_mutex = 0;
static int g_http_sessions = 0;
+int get_version(struct http_request *rq) {
+ const char *version = http_argbyname(rq, "version");
+ int version_no = 0;
+ if (version && strcmp(version, "")) {
+ version_no = atoi(version);
+ }
+ return version_no;
+}
+
+
int http_session_use(int delta)
{
int sessions;
int http_session_use(int delta)
{
int sessions;
@@
-515,11
+525,7
@@
static void termlist_response(struct http_channel *c, struct http_session *s, co
struct http_request *rq = c->request;
const char *name = http_argbyname(rq, "name");
const char *nums = http_argbyname(rq, "num");
struct http_request *rq = c->request;
const char *name = http_argbyname(rq, "name");
const char *nums = http_argbyname(rq, "num");
- const char *version = http_argbyname(rq, "version");
- int version_no = 0;
- if (version && strcmp(version, "")) {
- version_no = atoi(version);
- }
+ int version = get_version(rq);
int num = 15;
int status;
int num = 15;
int status;
@@
-535,7
+541,7
@@
static void termlist_response(struct http_channel *c, struct http_session *s, co
}
wrbuf_printf(c->wrbuf, "<activeclients>%d</activeclients>\n", status);
}
wrbuf_printf(c->wrbuf, "<activeclients>%d</activeclients>\n", status);
- perform_termlist(c, s->psession, name, num, version_no);
+ perform_termlist(c, s->psession, name, num, version);
response_close(c, "termlist");
}
response_close(c, "termlist");
}
@@
-681,11
+687,7
@@
static void bytarget_response(struct http_channel *c, struct http_session *s, co
struct hitsbytarget *ht;
struct http_request *rq = c->request;
const char *settings = http_argbyname(rq, "settings");
struct hitsbytarget *ht;
struct http_request *rq = c->request;
const char *settings = http_argbyname(rq, "settings");
- const char *protocol_version = http_argbyname(rq, "version");
- int version = 0;
- if (protocol_version && strcmp(protocol_version,"")) {
- version = atoi(protocol_version);
- }
+ int version = get_version(rq);
ht = get_hitsbytarget(s->psession, &count, c->nmem);
if (!cmd_status)
/* Old protocol, always ok */
ht = get_hitsbytarget(s->psession, &count, c->nmem);
if (!cmd_status)
/* Old protocol, always ok */
@@
-1053,10
+1055,13
@@
static void show_records(struct http_channel *c, struct http_session *s, int act
const char *start = http_argbyname(rq, "start");
const char *num = http_argbyname(rq, "num");
const char *sort = http_argbyname(rq, "sort");
const char *start = http_argbyname(rq, "start");
const char *num = http_argbyname(rq, "num");
const char *sort = http_argbyname(rq, "sort");
+ int version = get_version(rq);
+
int startn = 0;
int numn = 20;
int total;
Odr_int total_hits;
int startn = 0;
int numn = 20;
int total;
Odr_int total_hits;
+ Odr_int approx_hits;
int i;
if (!s)
int i;
if (!s)
@@
-1079,12
+1084,15
@@
static void show_records(struct http_channel *c, struct http_session *s, int act
}
}
- rl = show_range_start(s->psession, sp, startn, &numn, &total, &total_hits);
+ rl = show_range_start(s->psession, sp, startn, &numn, &total, &total_hits, &approx_hits);
response_open(c, "show");
wrbuf_printf(c->wrbuf, "\n<activeclients>%d</activeclients>\n", active);
wrbuf_printf(c->wrbuf, "<merged>%d</merged>\n", total);
wrbuf_printf(c->wrbuf, "<total>" ODR_INT_PRINTF "</total>\n", total_hits);
response_open(c, "show");
wrbuf_printf(c->wrbuf, "\n<activeclients>%d</activeclients>\n", active);
wrbuf_printf(c->wrbuf, "<merged>%d</merged>\n", total);
wrbuf_printf(c->wrbuf, "<total>" ODR_INT_PRINTF "</total>\n", total_hits);
+ if (version >= 2) {
+ wrbuf_printf(c->wrbuf, "<approximation>" ODR_INT_PRINTF "</approximation>\n", approx_hits);
+ }
wrbuf_printf(c->wrbuf, "<start>%d</start>\n", startn);
wrbuf_printf(c->wrbuf, "<num>%d</num>\n", numn);
wrbuf_printf(c->wrbuf, "<start>%d</start>\n", startn);
wrbuf_printf(c->wrbuf, "<num>%d</num>\n", numn);
@@
-1137,6
+1145,7
@@
static void cmd_show(struct http_channel *c)
const char *block = http_argbyname(rq, "block");
const char *sort = http_argbyname(rq, "sort");
const char *block_error = http_argbyname(rq, "report");
const char *block = http_argbyname(rq, "block");
const char *sort = http_argbyname(rq, "sort");
const char *block_error = http_argbyname(rq, "report");
+
struct reclist_sortparms *sp;
int status;
int report_error = 0;
struct reclist_sortparms *sp;
int status;
int report_error = 0;