Example #1
0
void connection::create_aggregate_reduce(const char *name, Result zero, const std::function<Result (Result, Args...)> &aggregator) {
	const std::function<Result (Result, Args...)> a(aggregator);
	create_aggregate(name, zero,
			[a](Result &state, Args... args) { state = a(std::forward<Result&>(state), std::forward<Args...>(args...)); },
			[](const Result &state) -> Result { return state; }
		);
}
Example #2
0
void connection::create_aggregate(const char *name,
		State zero,
		StepCallable stepfun,
		FinalCallable finalfun) {
	create_aggregate(name, std::forward<State>(zero),
			to_stdfunction(std::forward<StepCallable>(stepfun)),
			to_stdfunction(std::forward<FinalCallable>(finalfun)));
}
Example #3
0
serf_bucket_t *serf_bucket_aggregate_create(
    serf_bucket_alloc_t *allocator)
{
    aggregate_context_t *ctx;

    ctx = create_aggregate(allocator);

    return serf_bucket_create(&serf_bucket_type_aggregate, allocator, ctx);
}
Example #4
0
void serf_bucket_aggregate_become(serf_bucket_t *bucket)
{
    aggregate_context_t *ctx;

    ctx = create_aggregate(bucket->allocator);

    bucket->type = &serf_bucket_type_aggregate;
    bucket->data = ctx;

    /* The allocator remains the same. */
}
Example #5
0
/** The main program */
int main(int argc, char **argv)
{
    /* Name of the agg directory */
    char *directory = NULL;
    int err;

    if(argc < 2) {
        usage(argv[0]);
    }

    directory = argv[1];

    err = create_aggregate(directory);

    /* end of program */
    if(!err) {
        fprintf(stdout, "Aggregate created\n");
    } else {
        fprintf(stderr, "An error occured : %d\n", err);
        return err;
    }

    return EXIT_SUCCESS;
}
void connection::create_aggregate(const std::string &name, State &&zero, StepCallable &&step_fun) {
	create_aggregate(name.c_str(), std::forward<State>(zero), std::forward<StepCallable>(step_fun));
}