Rename error classes to exception. Rename zerr.cpp
[yazpp-moved-to-github.git] / README.txt
1 YAZ++ - A C++ library for YAZ
2
3 $Id: README.txt,v 1.10 2001-11-06 17:08:05 adam Exp $
4  
5 o Introduction
6
7 YAZ++ is a C++ layer for YAZ and implements the ANSI Z39.50
8 protocol for information retrieval (client - and server side).
9 YAZ homepage is: http://www.indexdata.dk/yaz/
10
11 YAZ++ uses the same license as YAZ - see LICENSE file for details.
12
13 o Overview
14
15 YAZ++ builds a programmers' library libyaz++.lib and a few
16 example applications:
17   yaz-my-client      basic client
18   yaz-my-server      basic server
19   yaz-proxy          not-so-basic proxy server
20
21 Directory structure of the YAZ++ package:
22
23   -- src (C++ source)
24   -- include/yaz++ (C++ headers) 
25   -- win (Windows build files)
26
27 o Installation, Unix
28
29 Make sure you have a C - and C++ compiler available. gcc and g++ works fine.
30
31 Before compilation can take place YAZ must be installed. It goes, roughly,
32 like this:
33
34   $ cd yaz-<version>
35   $ ./configure
36   $ make
37   $ cd ..
38
39 Then, build YAZ++:
40
41   $ cd yaz++-<version>
42   $ ./configure
43   $ make
44
45 o Installation, Windows
46
47 YAZ++ for WIN32 should run on Windows 95/98/2K and Windows NT 4.0.
48 Yaz++ was built using Microsoft Visual C++ 6.0. Other compilers
49 should work but makefile/project files will have to be created for
50 those compilers.
51
52   Workspace yazxx.dsw includes the projects
53     yazxx.dsp       -   builds yazxx.dll
54     yazclient.dsp   -   builds yazmyclient.exe
55     yazserver.dsp   -   builds yazmyserver.exe
56     yazproxy.dsp    -   builds yazproxy.exe
57
58 o About the proxy..
59
60 For the proxy the actual target is determined in by the OtherInfo
61 part of the InitRequest. We've defined an OID for this which we call
62 PROXY. OID is 1.2.840.10003.10.1000.81.1. 
63
64   OtherInformation   ::= [201] IMPLICIT SEQUENCE OF SEQUENCE{
65     category            [1]   IMPLICIT InfoCategory OPTIONAL, 
66     information        CHOICE{
67       characterInfo        [2]  IMPLICIT InternationalString,
68       binaryInfo        [3]  IMPLICIT OCTET STRING,
69       externallyDefinedInfo    [4]  IMPLICIT EXTERNAL,
70       oid          [5]  IMPLICIT OBJECT IDENTIFIER}}
71 --
72   InfoCategory ::= SEQUENCE{
73       categoryTypeId  [1]   IMPLICIT OBJECT IDENTIFIER OPTIONAL,
74       categoryValue  [2]   IMPLICIT INTEGER}
75
76 The InfoCategory is present with categoryTypeId set to the PROXY OID
77 and categoryValue set to 0. The information in OtherInformation uses
78 characterInfo to represent the target using the form target[:port][/db].
79
80 For the client that doesn't set the PROXY OtherInformation, a default
81 target can be specified using option -t for proxy.
82
83 Example:
84   We start the proxy so that it listens on port 9000. The default
85   target is Bell Labs Library unless it is specified by a client in
86   the InitRequest.
87
88      $ ./yaz-proxy -t z3950.bell-labs.com/books @:9000
89
90   The client is started and talks to the proxy without specifying
91   a target. Hence this client will talk to the Bell Labs server.
92      $ ./yaz-client localhost:9000
93
94   The client is started and it specifies the actual target itself.
95      $ ./yaz-client -p localhost:9000 bagel.indexdata.dk/gils
96
97   For ZAP the equivalent would be
98      proxy=localhost:9000
99      target=bagel.indexdata.dk/gils
100   Simple, huh!