Changes to master-header to generate an "interface.h" equivalent
[yazpp-moved-to-github.git] / README.txt
1 YAZ++ - A C++ library for YAZ
2
3 $Id: README.txt,v 1.11 2002-10-23 13:32:57 mike Exp $
4  
5
6 Introduction
7 ------------
8
9 YAZ++ is a C++ layer for YAZ and implements the ANSI Z39.50
10 protocol for information retrieval (client and server side).
11 The YAZ homepage is: http://www.indexdata.dk/yaz/
12
13 YAZ++ uses the same license as YAZ - see LICENSE file for details.
14
15
16 Overview
17 --------
18
19 YAZ++ builds a programmers' library libyaz++.lib and a few
20 example applications:
21
22   yaz-my-client      basic client
23   yaz-my-server      basic server
24   yaz-proxy          not-so-basic proxy server
25
26 Directory structure of the YAZ++ package:
27
28   -- src (C++ library and proxy source)
29   -- zoom (C++ source for ZOOM)
30   -- include/yaz++ (C++ headers) 
31   -- lib (compiled libraries)
32   -- win (Windows build files)
33   -- doc (DocBook-format documentation)
34
35
36 Installation, Unix
37 ------------------
38
39 Make sure you have a C and C++ compiler available.  gcc and g++ work fine.
40
41 Before compilation can take place YAZ must be installed. It goes, roughly,
42 like this:
43
44   $ cd yaz-<version>
45   $ ./configure
46   $ make
47   $ su
48   # make install
49   $ ^D
50   $ cd ..
51
52 Then, build YAZ++:
53
54   $ cd yaz++-<version>
55   $ ./configure
56   $ make
57
58
59 Installation, Windows
60 ---------------------
61
62 YAZ++ for WIN32 should run on Windows 95/98/2K and Windows NT 4.0.
63 Yaz++ was built using Microsoft Visual C++ 6.0. Other compilers
64 should work but makefile/project files will have to be created for
65 those compilers.
66
67   Workspace yazxx.dsw includes the projects
68     yazxx.dsp       -   builds yazxx.dll
69     yazclient.dsp   -   builds yazmyclient.exe
70     yazserver.dsp   -   builds yazmyserver.exe
71     yazproxy.dsp    -   builds yazproxy.exe
72
73
74 About the proxy
75 ---------------
76
77 For the proxy the actual target is determined in by the OtherInfo
78 part of the InitRequest. We've defined an OID for this which we call
79 PROXY. The OID is 1.2.840.10003.10.1000.81.1. 
80
81   OtherInformation   ::= [201] IMPLICIT SEQUENCE OF SEQUENCE{
82     category           [1]   IMPLICIT InfoCategory OPTIONAL, 
83     information        CHOICE{
84       characterInfo            [2]  IMPLICIT InternationalString,
85       binaryInfo               [3]  IMPLICIT OCTET STRING,
86       externallyDefinedInfo    [4]  IMPLICIT EXTERNAL,
87       oid                      [5]  IMPLICIT OBJECT IDENTIFIER}}
88 --
89   InfoCategory ::= SEQUENCE{
90       categoryTypeId   [1]   IMPLICIT OBJECT IDENTIFIER OPTIONAL,
91       categoryValue    [2]   IMPLICIT INTEGER}
92
93 The InfoCategory is present with categoryTypeId set to the PROXY OID
94 and categoryValue set to 0. The information in OtherInformation uses
95 characterInfo to represent the target using the form target[:port][/db].
96
97 For clients that don't set the PROXY OtherInformation, a default
98 target can be specified using option -t for proxy.
99
100 Example:
101   We start the proxy so that it listens on port 9000. The default
102   target is Bell Labs Library unless it is overridden by a client in
103   the InitRequest.
104
105      $ ./yaz-proxy -t z3950.bell-labs.com/books @:9000
106
107   The client is started and talks to the proxy without specifying
108   a target. Hence this client will talk to the Bell Labs server.
109
110      $ ./yaz-client localhost:9000
111
112   The client is started and it specifies the actual target itself.
113
114      $ ./yaz-client -p localhost:9000 bagel.indexdata.dk/gils
115
116   For ZAP the equivalent would be
117      proxy=localhost:9000
118      target=bagel.indexdata.dk/gils
119   Simple, huh!
120
121
122 ZOOM-C++
123 --------
124
125 The ZOOM library in this distribution implements the ZOOM C++ binding
126 described on the ZOOM web-site at 
127         http://zoom.z3950.org/bind/cplusplus/index.html
128 It provides a simple but powerful API for constructing Z39.50 client
129 applications.  See the documentation in doc/zoom.xml for much more
130 information.