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