-// $Header: /home/cvsroot/yaz++/zoom/zclient.cpp,v 1.1 2002-08-08 13:31:54 mike Exp $
+// $Id: zclient.cpp,v 1.7 2003-07-02 10:25:13 adam Exp $
-// Trivial sample client
+// Simple sample client
#include <stdlib.h> // for atoi()
-#include <iostream.h>
-#include "zoom++.h"
+#include <iostream>
+#include "zoom.h"
+
int main(int argc, char **argv)
{
if (argc != 5) {
- cerr << "Usage: " << argv[0] <<
- " <host> <port> <db> <@prefix-search>\n";
+ std::cerr << "Usage: " <<
+ argv[0] << " <host> <port> <dbname> <@prefix-search>\n";
return 1;
}
- const char *hostname = argv[1];
- const int port = atoi(argv[2]);
- const char *dbname = argv[3];
- const char *searchSpec = argv[4];
-
- ZOOM::connection *conn;
+ using namespace ZOOM;
try {
- conn = new ZOOM::connection(hostname, port);
- } catch(ZOOM::bib1Error err) {
- cerr << argv[0] << ": connect: " <<
+ connection conn(argv[1], atoi(argv[2]));
+ conn.option("databaseName", argv[3]);
+ conn.option("preferredRecordSyntax",
+ record::syntax(record::syntax::XML));
+ prefixQuery pq(argv[4]);
+ resultSet rs(conn, pq);
+
+ size_t n = rs.size();
+ std::cout << "found " << n << " records:\n";
+ for (size_t i = 0; i < n; i++) {
+ const record rec(rs, i);
+ std::cout << "=== record " << i+1 <<
+ " (record-syntax " << (std::string) rec.recsyn() << ")" <<
+ " ===\n" << rec.render();
+ }
+
+ } catch(bib1Exception& err) {
+ std::cerr << argv[0] << ": bib1Exception " <<
err.errmsg() << " (" << err.addinfo() << ")\n";
return 2;
- } catch(ZOOM::error err) {
- cerr << argv[0] << ": connect: " << err.errmsg() << "\n";
- return 2;
- }
- conn->option("databaseName", dbname);
- ZOOM::prefixQuery pq(searchSpec);
- ZOOM::resultSet *rs;
- try {
- rs = new ZOOM::resultSet(*conn, pq);
- } catch(ZOOM::bib1Error err) {
- cerr << argv[0] << ": searchSpec: " <<
- err.errmsg() << " (" << err.addinfo() << ")\n";
+ } catch(ZOOM::exception& err) {
+ std::cerr << argv[0] << ": exception " <<
+ err.errmsg() << "\n";
return 3;
}
- size_t n = rs->size();
- cout << "found " << n << " records:\n";
- for (size_t i = 0; i < n; i++) {
- const ZOOM::record *rec = rs->getRecord(i);
- cout << "=== record " << i+1 << " (recsyn " << rec->recsyn()
- << ") ===\n" << rec->render();
- }
-
return 0;
}