Example #1
0
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);
}
Example #2
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;
}
Example #3
0
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);
}