Added ZOOM.
[yazpp-moved-to-github.git] / zoom / zclient.cpp
1 // $Header: /home/cvsroot/yaz++/zoom/zclient.cpp,v 1.1 2002-08-08 13:31:54 mike Exp $
2
3 // Trivial sample client
4
5 #include <stdlib.h>             // for atoi()
6 #include <iostream.h>
7 #include "zoom++.h"
8
9 int main(int argc, char **argv)
10 {
11     if (argc != 5) {
12         cerr << "Usage: " << argv[0] <<
13             " <host> <port> <db> <@prefix-search>\n";
14         return 1;
15     }
16
17     const char *hostname = argv[1];
18     const int port = atoi(argv[2]);
19     const char *dbname = argv[3];
20     const char *searchSpec = argv[4];
21
22     ZOOM::connection *conn;
23     try {
24         conn = new ZOOM::connection(hostname, port);
25     } catch(ZOOM::bib1Error err) {
26         cerr << argv[0] << ": connect: " <<
27             err.errmsg() << " (" << err.addinfo() << ")\n";
28         return 2;
29     } catch(ZOOM::error err) {
30         cerr << argv[0] << ": connect: " << err.errmsg() << "\n";
31         return 2;
32     }
33
34     conn->option("databaseName", dbname);
35     ZOOM::prefixQuery pq(searchSpec);
36     ZOOM::resultSet *rs;
37     try {
38         rs = new ZOOM::resultSet(*conn, pq);
39     } catch(ZOOM::bib1Error err) {
40         cerr << argv[0] << ": searchSpec: " <<
41             err.errmsg() << " (" << err.addinfo() << ")\n";
42         return 3;
43     }
44
45     size_t n = rs->size();
46     cout << "found " << n << " records:\n";
47     for (size_t i = 0; i < n; i++) {
48         const ZOOM::record *rec = rs->getRecord(i);
49         cout << "=== record " << i+1 << " (recsyn " << rec->recsyn()
50              << ") ===\n" << rec->render();
51     }
52
53     return 0;
54 }