Fix: proxy doesn't cache searches/result sets when errors occur.
[yazpp-moved-to-github.git] / src / yaz-proxy-main.cpp
1 /*
2  * Copyright (c) 1998-2001, Index Data.
3  * See the file LICENSE for details.
4  * 
5  * $Id: yaz-proxy-main.cpp,v 1.16 2002-01-14 12:01:28 adam Exp $
6  */
7
8 #include <yaz/log.h>
9 #include <yaz/options.h>
10
11 #include <yaz++/yaz-socket-manager.h>
12 #include <yaz++/yaz-pdu-assoc.h>
13 #include <yaz++/yaz-proxy.h>
14
15 void usage(char *prog)
16 {
17     fprintf (stderr, "%s: [-a log] [-c num] [-v level] [-t target] "
18              "[-u auth] [-o optlevel] @:port\n", prog);
19     exit (1);
20 }
21
22
23 int args(Yaz_Proxy *proxy, int argc, char **argv)
24 {
25     char *addr = 0;
26     char *arg;
27     char *prog = argv[0];
28     int ret;
29
30     while ((ret = options("o:a:t:v:c:u:", argv, argc, &arg)) != -2)
31     {
32         switch (ret)
33         {
34         case 0:
35             if (addr)
36             {
37                 usage(prog);
38                 return 1;
39             }
40             addr = arg;
41             break;
42         case 'a':
43             proxy->set_APDU_log(arg);
44             break;
45         case 't':
46             proxy->set_proxy_target(arg);
47             break;
48         case 'u':
49             proxy->set_proxy_authentication(arg);
50             break;
51         case 'o':
52             proxy->option("optimize", arg);
53             break;
54         case 'v':
55             yaz_log_init_level (yaz_log_mask_str(arg));
56             break;
57         case 'c':
58             proxy->set_max_clients(atoi(arg));
59             break;
60         default:
61             usage(prog);
62             return 1;
63         }
64     }
65     if (addr)
66     {
67         proxy->server(addr);
68     }
69     else
70     {
71         usage(prog);
72         return 1;
73     }
74     return 0;
75 }
76
77 int main(int argc, char **argv)
78 {
79     Yaz_SocketManager mySocketManager;
80     Yaz_Proxy proxy(new Yaz_PDU_Assoc(&mySocketManager));
81
82     args(&proxy, argc, argv);
83     while (mySocketManager.processEvent() > 0)
84         ;
85     exit (0);
86     return 0;
87 }