コード例 #1
0
void connection_engine::dispatch() {
    proton_handler& h = *ctx_->engine_handler->messaging_adapter_;
    pn_collector_t* c = ctx_->collector;
    for (pn_event_t *e = pn_collector_peek(c); e; e = pn_collector_peek(c)) {
        if (pn_event_type(e) == PN_CONNECTION_INIT) {
            // Make the messaging_adapter issue a START event.
            proton_event(e, PN_REACTOR_INIT, 0).dispatch(h);
        }
        proton_event(e, pn_event_type(e), 0).dispatch(h);
        pn_collector_pop(c);
    }
}
コード例 #2
0
ファイル: jack.c プロジェクト: ronaldo1018/JACK
void MonteCarlo(collector *C, int NMC, REAL emean, REAL estdv, REAL sigma, REAL angle, REAL azimuth) {
    particle	    *P;
    trace	    *T;
    int		    NF;
    unsigned int seed;
    NF = 0;
#if DEBUG
    printf("entering MonteCarlo for %d samples and storing into %lx (%d)\n",
	   NMC, (long unsigned int) C, C->NTOTAL);
#endif
/* create the trace and particle */
    fast_srand(&seed);
    T = alloc_trace();
    P = (particle *) malloc(sizeof(particle));
/* the Monte Carlo loop */
//what is sigma??
    if (sigma > AS_REAL(0.0)) {
	while (NF++ < NMC) {
	    MakeParticle(P, normal(emean, estdv,&seed), angle+normal(AS_REAL(0.0), sigma,&seed), azimuth+normal(AS_REAL(0.0), sigma,&seed), &seed);
	    reset_trace(T);
	    while (P->energy > AS_REAL(0.0)) {
		proton_event(P, T, &seed); //stepping()
	    }
	    if (TRACE) dump_trace(stdout, T, P);
	    collect(C, P, T); //Hits collection
	}
    } else {
	while (NF++ < NMC) {
	    MakeParticle(P, normal(emean, estdv,&seed), angle, azimuth, &seed);
	    reset_trace(T);
	    while (P->energy > AS_REAL(0.0)) {
		proton_event(P, T, &seed);
	    }
	    if (TRACE) dump_trace(stdout, T, P);
	    collect(C, P, T);
	}
    }
}