disable-zoom configure option
[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.18 2002-10-23 10:15:18 adam Exp $
6  */
7
8 #include <yaz/log.h>
9 #include <yaz/options.h>
10
11 #include <yaz++/socket-manager.h>
12 #include <yaz++/pdu-assoc.h>
13 #include <yaz++/proxy.h>
14
15 void usage(char *prog)
16 {
17     fprintf (stderr, "%s: [-a log] [-c num] [-v level] [-t target] [-i sec] "
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:i:", 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         case 'i':
61             proxy->set_idletime(atoi(arg));
62             break;
63         default:
64             usage(prog);
65             return 1;
66         }
67     }
68     if (addr)
69     {
70         proxy->server(addr);
71     }
72     else
73     {
74         usage(prog);
75         return 1;
76     }
77     return 0;
78 }
79
80 int main(int argc, char **argv)
81 {
82     Yaz_SocketManager mySocketManager;
83     Yaz_Proxy proxy(new Yaz_PDU_Assoc(&mySocketManager));
84
85     args(&proxy, argc, argv);
86     while (mySocketManager.processEvent() > 0)
87         ;
88     exit (0);
89     return 0;
90 }