Work on proxy.
[yazpp-moved-to-github.git] / src / yaz-proxy-main.cpp
1 /*
2  * Copyright (c) 1998-1999, Index Data.
3  * See the file LICENSE for details.
4  * Sebastian Hammer, Adam Dickmeiss
5  * 
6  * $Log: yaz-proxy-main.cpp,v $
7  * Revision 1.6  1999-11-10 10:02:34  adam
8  * Work on proxy.
9  *
10  * Revision 1.5  1999/04/21 12:09:01  adam
11  * Many improvements. Modified to proxy server to work with "sessions"
12  * based on cookies.
13  *
14  * Revision 1.4  1999/04/09 11:46:57  adam
15  * Added object Yaz_Z_Assoc. Much more functional client.
16  *
17  * Revision 1.3  1999/02/02 14:01:21  adam
18  * First WIN32 port of YAZ++.
19  *
20  * Revision 1.2  1999/01/28 13:08:45  adam
21  * Yaz_PDU_Assoc better encapsulated. Memory leak fix in
22  * yaz-socket-manager.cc.
23  *
24  * Revision 1.1.1.1  1999/01/28 09:41:07  adam
25  * First implementation of YAZ++.
26  *
27  */
28
29 #include <log.h>
30 #include <options.h>
31
32 #include <yaz-socket-manager.h>
33 #include <yaz-pdu-assoc.h>
34 #include <yaz-proxy.h>
35
36 void usage(char *prog)
37 {
38     fprintf (stderr, "%s: [-v log] [-t target] @:port\n", prog);
39     exit (1);
40 }
41
42
43 int args(Yaz_Proxy *proxy, int argc, char **argv)
44 {
45     char *addr = 0;
46     char *arg;
47     char *prog = argv[0];
48     int ret;
49
50     while ((ret = options("p:v:q", argv, argc, &arg)) != -2)
51     {
52         switch (ret)
53         {
54         case 0:
55             if (addr)
56             {
57                 usage(prog);
58                 return 1;
59             }
60             addr = arg;
61             break;
62         case 't':
63             proxy->proxyTarget(arg);
64             break;
65         case 'v':
66             log_init_level (log_mask_str(arg));
67             break;
68         default:
69             usage(prog);
70             return 1;
71         }
72     }
73     if (addr)
74     {
75         proxy->server(addr);
76     }
77     return 0;
78 }
79
80
81 int main(int argc, char **argv)
82 {
83     Yaz_SocketManager mySocketManager;
84     Yaz_Proxy proxy(new Yaz_PDU_Assoc(&mySocketManager));
85
86     args(&proxy, argc, argv);
87     while (mySocketManager.processEvent() > 0)
88         ;
89     return 0;
90 }