int64_t montecarlo_one_packet_loop(storage_model_t *storage, rpacket_t *packet, int64_t virtual_packet) { rpacket_set_tau_event(packet, 0.0); rpacket_set_nu_line(packet, 0.0); rpacket_set_virtual_packet(packet, virtual_packet); rpacket_set_status(packet, TARDIS_PACKET_STATUS_IN_PROCESS); // Initializing tau_event if it's a real packet. if (virtual_packet == 0) { rpacket_reset_tau_event(packet); } // For a virtual packet tau_event is the sum of all the tau's that the packet passes. while (rpacket_get_status(packet) == TARDIS_PACKET_STATUS_IN_PROCESS) { // Check if we are at the end of line list. if (!rpacket_get_last_line(packet)) { rpacket_set_nu_line(packet, storage->line_list_nu[rpacket_get_next_line_id(packet)]); } double distance; get_event_handler(packet, storage, &distance)(packet, storage, distance); if (virtual_packet > 0 && rpacket_get_tau_event(packet) > 10.0) { rpacket_set_tau_event(packet, 100.0); rpacket_set_status(packet, TARDIS_PACKET_STATUS_EMITTED); } } if (virtual_packet > 0) { rpacket_set_energy(packet, rpacket_get_energy(packet) * exp(-1.0 * rpacket_get_tau_event(packet))); } return rpacket_get_status(packet) == TARDIS_PACKET_STATUS_REABSORBED ? 1 : 0; }
static HRESULT WINAPI HTMLXMLHttpRequest_get_onreadystatechange(IHTMLXMLHttpRequest *iface, VARIANT *p) { HTMLXMLHttpRequest *This = impl_from_IHTMLXMLHttpRequest(iface); TRACE("(%p)->(%p)\n", This, p); return get_event_handler(&This->event_target, EVENTID_READYSTATECHANGE, p); }
int xcb_event_handle(xcb_event_handlers_t *evenths, xcb_generic_event_t *event) { xcb_event_handler_t *eventh = 0; assert(event->response_type != 1); if(event->response_type == 0) eventh = get_error_handler(evenths, ((xcb_generic_error_t *) event)->error_code); else eventh = get_event_handler(evenths, event->response_type); if(eventh->handler) return eventh->handler(eventh->data, evenths->c, event); return 0; }
void xcb_event_set_handler(xcb_event_handlers_t *evenths, int event, xcb_generic_event_handler_t handler, void *data) { set_handler(handler, data, get_event_handler(evenths, event)); }
int main( int argc, /* Argument count */ char **argv) /* Argument vector */ { sam_event_t event; event_handler_t ev_handler; if (dbupd_init(argc, argv) < 0) { return (EXIT_FAILURE); } connect: /* Keep trying to connect to database until shutdown or retry limit */ while (num_retry < RETRY_MAX && !is_shutdown && dbupd_connect() < 0) { num_retry++; sleep(RETRY_SLEEP); } /* Keep trying to process events until retry limit or shutdown */ while (num_retry < RETRY_MAX && !is_shutdown) { int status = sam_fsa_read_event(&fsa_inv, &event); if (status < 0) { /* Error reading event for fs_name */ SendCustMsg(HERE, 26003, fs_name); num_retry++; sleep(RETRY_SLEEP); goto connect; } else if (status == FSA_EOF) { /* Reached the end of events, goto sleep for a while */ sleep(EOF_SLEEP); } else if (IS_DB_INODE(event.ev_id.ino) && IS_DB_INODE(event.ev_pid.ino)) { /* Got next event, get event handler and process */ ev_handler = get_event_handler(event.ev_num); if (ev_handler == NULL) { /* Unrecognized event for fsname */ SendCustMsg(HERE, 26006, event.ev_num, fs_name); continue; } /* Handle event */ if (ev_handler(db_ctx, &event) < 0) { mysql_rollback(db_ctx->mysql); /* Event processing failed, running check */ SendCustMsg(HERE, 26007, get_event_name(event.ev_num), event.ev_id.ino, event.ev_id.gen, fs_name); if (check_consistency(db_ctx, &event, TRUE) < 0) { mysql_rollback(db_ctx->mysql); sam_fsa_rollback(&fsa_inv); /* Consistency check failed, retrying */ SendCustMsg(HERE, 26008); num_retry++; goto connect; } else { mysql_commit(db_ctx->mysql); } } else { mysql_commit(db_ctx->mysql); } num_retry = 0; } else { /* * Event's inode doesn't belong in database, * run consistency to be sure. */ (void) check_consistency(db_ctx, &event, TRUE); } } /* Close event log */ sam_fsa_close_inv(&fsa_inv); /* Close database */ sam_db_disconnect(db_ctx); sam_db_context_free(db_ctx); if (num_retry >= RETRY_MAX) { /* Retry max reached, exiting */ SendCustMsg(HERE, 26005, RETRY_MAX); } return (is_shutdown && num_retry < RETRY_MAX ? EXIT_SUCCESS : EXIT_FAILURE); }