int main(int argc, char **argv) { ZOOM_connection z; ZOOM_resultset r; int error; const char *errmsg, *addinfo, *diagset; if (argc < 3) { fprintf (stderr, "usage:\n%s target query\n", *argv); fprintf (stderr, "Verify: asynchronous single-target client\n"); exit (1); } /* create connection (don't connect yet) */ z = ZOOM_connection_create(0); /* option: set sru/get operation (only applicable if http: is used) */ ZOOM_connection_option_set (z, "sru", "post"); /* option: set async operation */ ZOOM_connection_option_set (z, "async", "1"); /* connect to target and initialize */ ZOOM_connection_connect (z, argv[1], 0); /* search using prefix query format */ r = ZOOM_connection_search_pqf (z, argv[2]); /* block here: only one connection */ while (ZOOM_event (1, &z)) ; /* see if any error occurred */ if ((error = ZOOM_connection_error_x(z, &errmsg, &addinfo, &diagset))) { fprintf (stderr, "Error: %s: %s (%d) %s\n", diagset, errmsg, error, addinfo); exit (2); } else /* OK print hit count */ printf ("Result count: %ld\n", (long) ZOOM_resultset_size(r)); ZOOM_resultset_destroy (r); ZOOM_connection_destroy (z); exit (0); }
/* * call-seq: * set_option(key, value) * * key: the name of the option, as a string. * * value: the value of this option (as a string, integer or boolean). * * Sets an option on the connection. * * Returns: self. */ static VALUE rbz_connection_set_option (VALUE self, VALUE key, VALUE val) { ZOOM_connection connection; connection = rbz_connection_get (self); ZOOM_connection_option_set (connection, RVAL2CSTR (key), RVAL2CSTR (val)); RAISE_IF_FAILED (connection); return self; }
int main(int argc, char **argv) { int i; int no = argc-2; ZOOM_connection z[500]; /* allow at most 500 connections */ ZOOM_scanset s[500]; /* and scan sets .. */ ZOOM_options o = ZOOM_options_create (); if (argc < 3) { fprintf (stderr, "usage:\n%s target1 target2 ... targetN scan\n", *argv); exit (1); } if (no > 500) no = 500; /* async mode */ ZOOM_options_set (o, "async", "1"); /* connect to all */ for (i = 0; i<no; i++) { /* create connection - pass options (they are the same for all) */ z[i] = ZOOM_connection_create (o); /* connect and init */ ZOOM_connection_connect (z[i], argv[1+i], 0); } /* scan all */ for (i = 0; i<no; i++) { /* set number of scan terms to be returned. */ ZOOM_connection_option_set (z[i], "number", "7"); /* and perform scan */ s[i] = ZOOM_connection_scan(z[i], argv[argc-1]); } /* network I/O. pass number of connections and array of connections */ while (ZOOM_event (no, z)) ; for (i = 0; i<no; i++) { int error; const char *errmsg, *addinfo; if ((error = ZOOM_connection_error(z[i], &errmsg, &addinfo))) fprintf (stderr, "%s error: %s (%d) %s\n", ZOOM_connection_option_get(z[i], "host"), errmsg, error, addinfo); else { int j; printf ("%s\n", ZOOM_connection_option_get(z[i], "host")); for (j = 0; j < (int) ZOOM_scanset_size (s[i]); j++) { size_t occur, len; const char *term; term = ZOOM_scanset_term (s[i], j, &occur, &len); if (term) printf ("%d %.*s %d\n", j, (int) len, term, (int) occur); } } } /* destroy and exit */ for (i = 0; i<no; i++) { ZOOM_scanset_destroy (s[i]); ZOOM_connection_destroy (z[i]); } ZOOM_options_destroy(o); exit (0); }