Пример #1
0
int main(int argc, const char * argv[])
{
    float coeffs[NUM_COEFFS] = {0.00460399444634034,
                                0.00920798889268068,
                                0.00460399444634034,
                                -1.7990948352036205,
                                0.8175108129889816};
    int i;
    for (i=0; i<FILTERS;i++) {
        bq[i] = bq_new(coeffs);
    }
    pa_init();
    getchar();
    pa_close();
    free(bq);
    return 0;
}
Пример #2
0
static void test_query_filter(TestCase *tc, void *data)
{
    Searcher *searcher = (Searcher *)data;
    Query *bq;
    Filter *qf;
    Query *q = maq_new();

    qf = qfilt_new_nr(tq_new(flipflop, "on"));
    TEST_TO_S("QueryFilter< flipflop:on >", qf);
    check_filtered_hits(tc, searcher, q, qf, NULL, "0,2,4,6,8", -1);
    filt_deref(qf);

    bq = bq_new(false);
    bq_add_query_nr(bq, tq_new(date, "20051101"), BC_SHOULD);
    bq_add_query_nr(bq, tq_new(date, "20041201"), BC_SHOULD);
    qf = qfilt_new_nr(bq);
    check_filtered_hits(tc, searcher, q, qf, NULL, "2,3,4,5", -1);
    TEST_TO_S("QueryFilter< date:20051101 date:20041201 >", qf);
    filt_deref(qf);

    q_deref(q);
}
Пример #3
0
static INLINE void index_del_doc_with_key_i(Index *self, Document *doc,
                                            HashSet *key)
{
    Query *q;
    TopDocs *td;
    DocField *df;
    HashSetEntry *hse;

    if (key->size == 1) {
        Symbol field = (Symbol)key->first->elem;
        ensure_writer_open(self);
        df = doc_get_field(doc, field);
        if (df) {
            iw_delete_term(self->iw, field, df->data[0]);
        }
        return;
    }

    q = bq_new(false);
    ensure_searcher_open(self);

    for (hse = key->first; hse; hse = hse->next) {
        Symbol field = (Symbol)hse->elem;
        df = doc_get_field(doc, field);
        if (!df) continue;
        bq_add_query(q, tq_new(field, df->data[0]), BC_MUST);
    }
    td = searcher_search(self->sea, q, 0, 1, NULL, NULL, NULL);
    if (td->total_hits > 1) {
        td_destroy(td);
        RAISE(ARG_ERROR, NON_UNIQUE_KEY_ERROR_MSG);
    } else if (td->total_hits == 1) {
        ir_delete_doc(self->ir, td->hits[0]->doc);
    }
    q_deref(q);
    td_destroy(td);
}
Пример #4
0
rel_t *
rel_create (conn_t *c, const struct sockaddr_storage *ss,
	    const struct config_common *cc)
{
    assert((c != NULL && ss == NULL) || (c == NULL && ss != NULL));
    assert(cc);

    rel_t *r;

    r = xmalloc (sizeof (*r));
    memset (r, 0, sizeof (*r));

    if (!c) {
        c = conn_create (r, ss);
        if (!c) {
            free (r);
            return NULL;
        }
    }

    r->c = c;
    r->next = rel_list;
    r->prev = &rel_list;
    if (rel_list)
        rel_list->prev = &r->next;
    rel_list = r;

    /* Set the sockaddr_storage for this connection */

    if (ss) memcpy(&r->ss,ss,sizeof(struct sockaddr_storage));

    /* Save the configurations we'll need */

    r->timeout = cc->timeout;
    r->window = cc->window;
    r->single_connection = cc->single_connection;

    /* Create a buffer queue for sending and receiving, starting at
    * index 1 */

    r->send_bq = bq_new(SEND_BUFFER_INITIAL_SIZE, sizeof(send_bq_element_t));
    bq_increase_head_seq_to(r->send_bq,1);
    r->rec_bq = bq_new(cc->window, sizeof(packet_t));
    bq_increase_head_seq_to(r->rec_bq,1);

    /* Send an receive state */

    r->seqno = 1;
    r->ackno = 1;

    /* Connection teardown state */

    r->read_eof = 0;
    r->printed_eof = 0;

    /* Nagle state */

    r->nagle_outstanding = 0;

    return r;
}