int main(int argc, char **argv) { ZOOM_connection z; ZOOM_resultset r; ZOOM_query q = ZOOM_query_create(); int error; const char *errmsg, *addinfo; int ccl_error_code, ccl_error_pos; const char *ccl_error_string; if (argc != 3) { fprintf (stderr, "usage:\n%s target cclquery\n", *argv); fprintf (stderr, " eg. bagel.indexdata.dk/gils \"ti=utah\"\n"); exit (1); } if (ZOOM_query_ccl2rpn(q, argv[2], "term t=l,r s=al\n" "ti u=4 s=pw\n", &ccl_error_code, &ccl_error_string, &ccl_error_pos)) { printf("CCL Error %d: %s\n", ccl_error_code, ccl_error_string); if (ccl_error_pos >= 0) printf("%s\n%*s^\n", argv[2], ccl_error_pos, ""); ZOOM_query_destroy(q); } else { z = ZOOM_connection_new (argv[1], 0); if ((error = ZOOM_connection_error(z, &errmsg, &addinfo))) { fprintf (stderr, "Error: %s (%d) %s\n", errmsg, error, addinfo); exit (2); } r = ZOOM_connection_search (z, q); ZOOM_query_destroy(q); if ((error = ZOOM_connection_error(z, &errmsg, &addinfo))) fprintf (stderr, "Error: %s (%d) %s\n", errmsg, error, addinfo); else printf ("Result count: %ld\n", (long) ZOOM_resultset_size(r)); ZOOM_resultset_destroy (r); ZOOM_connection_destroy (z); } exit (0); }
/* * call-seq: * open(host, port=nil) { |conn| ... } * * host: hostname of the target to connect to. * * port: network port of the target to connect to. * * A convenience method that creates a new connection and attempts to * establish a network connection to the given target, basically calling * ZOOM::Connection.new and ZOOM::Connection#connect. * * If a block is given, then it will be called once the connection is * established, passing a reference to the connection object as a parameter, * and destroying the connection automatically at the end of the block. * With no block, this method just returns the connection object. * * Returns: a newly created ZOOM::Connection object. */ static VALUE rbz_connection_open (int argc, VALUE *argv, VALUE self) { VALUE host; VALUE port; ZOOM_connection connection; VALUE rb_connection; rb_scan_args (argc, argv, "11", &host, &port); connection = ZOOM_connection_new (RVAL2CSTR (host), NIL_P (port) ? 0 : FIX2INT (port)); RAISE_IF_FAILED (connection); rb_connection = rbz_connection_make (connection); if (rb_block_given_p ()) { rb_yield(rb_connection); return Qnil; } return rb_connection; }
int main(int argc, char **argv) { int block; int i, j; ZOOM_connection z; ZOOM_resultset r[10]; /* and result sets .. */ ZOOM_options o; o = ZOOM_options_create (); z = ZOOM_connection_new ("localhost", 9999); if (ZOOM_connection_error (z, 0, 0)) { printf ("error - couldn't connect?\n"); exit (1); } ZOOM_connection_destroy (z); for (block = 0; block < 3; block++) { switch (block) { case 0: printf ("blocking - not calling ZOOM_events\n"); break; case 1: printf ("blocking - calling ZOOM_events\n"); break; case 2: printf ("non-blocking - calling ZOOM_events\n"); break; } if (block > 1) ZOOM_options_set (o, "async", "1"); for (i = 0; i<10; i++) { char host[40]; printf ("session %2d", i); sprintf (host, "localhost:9999/%d", i); z = ZOOM_connection_create (o); ZOOM_connection_connect (z, host, 0); for (j = 0; j < 10; j++) { ZOOM_record recs[2]; char query[40]; ZOOM_query s = ZOOM_query_create (); sprintf (query, "i%dr%d", i, j); if (ZOOM_query_prefix (s, query)) { printf ("bad PQF: %s\n", query); exit (2); } ZOOM_options_set (o, "start", "0"); ZOOM_options_set (o, "count", "0"); r[j] = ZOOM_connection_search (z, s); /* non-piggy */ ZOOM_resultset_records (r[j], recs, 0, 2); /* first two */ ZOOM_resultset_records (r[j], recs, 1, 2); /* third */ ZOOM_resultset_records (r[j], recs, 0, 0); /* ignored */ if (ZOOM_resultset_size (r[j]) > 2) { if (!recs[0]) { fprintf (stderr, "\nrecord missing\n"); exit (1); } } ZOOM_query_destroy (s); printf ("."); if (block > 0) while (ZOOM_event (1, &z)) ; } for (j = 0; j<i; j++) ZOOM_resultset_destroy (r[j]); ZOOM_connection_destroy (z); for (; j < 10; j++) ZOOM_resultset_destroy (r[j]); printf ("10 searches, 20 presents done\n"); } for (i = 0; i<1; i++) { ZOOM_query q = ZOOM_query_create (); char host[40]; printf ("session %2d", i+10); sprintf (host, "localhost:9999/%d", i); z = ZOOM_connection_create (o); ZOOM_connection_connect (z, host, 0); for (j = 0; j < 10; j++) { char query[40]; sprintf (query, "i%dr%d", i, j); ZOOM_options_set (o, "count", "0"); r[j] = ZOOM_connection_search_pqf (z, query); printf ("."); if (block > 0) while (ZOOM_event (1, &z)) ; } ZOOM_connection_destroy (z); for (j = 0; j < 10; j++) { ZOOM_resultset_records (r[j], 0, 0, 1); } for (j = 0; j < 10; j++) ZOOM_resultset_destroy (r[j]); ZOOM_query_destroy (q); printf ("10 searches, 10 ignored presents done\n"); } for (i = 0; i<1; i++) { char host[40]; ZOOM_scanset scan = 0; printf ("session %2d", i); sprintf (host, "localhost:9999/%d", i); z = ZOOM_connection_create (o); ZOOM_connection_connect (z, host, 0); scan = ZOOM_connection_scan(z, "@attr 1=4 a"); if (block > 0) while (ZOOM_event (1, &z)) ; printf (" scan size = %ld\n", (long) ZOOM_scanset_size(scan)); for (j = 0; j < (int) ZOOM_scanset_size (scan); j++) { int occur, len; const char *term; term = ZOOM_scanset_term (scan, j, &occur, &len); if (term) printf ("%d %.*s %d\n", j, len, term, occur); } ZOOM_scanset_destroy (scan); ZOOM_connection_destroy (z); } } ZOOM_options_destroy (o); exit (0); }