ef8214ef6e137e8ace2d2919245df3736fed12cd
[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.15 2001-11-06 17:08:05 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] [-o optlevel] @:port\n", prog);
18     exit (1);
19 }
20
21
22 int args(Yaz_Proxy *proxy, int argc, char **argv)
23 {
24     char *addr = 0;
25     char *arg;
26     char *prog = argv[0];
27     int ret;
28
29     while ((ret = options("o:a:t:v:c:", argv, argc, &arg)) != -2)
30     {
31         switch (ret)
32         {
33         case 0:
34             if (addr)
35             {
36                 usage(prog);
37                 return 1;
38             }
39             addr = arg;
40             break;
41         case 'a':
42             proxy->set_APDU_log(arg);
43             break;
44         case 't':
45             proxy->set_proxyTarget(arg);
46             break;
47         case 'o':
48             proxy->option("optimize", arg);
49             break;
50         case 'v':
51             yaz_log_init_level (yaz_log_mask_str(arg));
52             break;
53         case 'c':
54             proxy->set_max_clients(atoi(arg));
55             break;
56         default:
57             usage(prog);
58             return 1;
59         }
60     }
61     if (addr)
62     {
63         proxy->server(addr);
64     }
65     else
66     {
67         usage(prog);
68         return 1;
69     }
70     return 0;
71 }
72
73 int main(int argc, char **argv)
74 {
75     Yaz_SocketManager mySocketManager;
76     Yaz_Proxy proxy(new Yaz_PDU_Assoc(&mySocketManager));
77
78     args(&proxy, argc, argv);
79     while (mySocketManager.processEvent() > 0)
80         ;
81     exit (0);
82     return 0;
83 }