… | |
… | |
76 | |
76 | |
77 | tstamp NOW, runtime; |
77 | tstamp NOW, runtime; |
78 | |
78 | |
79 | global gbl_ev; |
79 | global gbl_ev; |
80 | static AV *cb_global, *cb_attachable, *cb_object, *cb_player, *cb_client, *cb_type, *cb_map; |
80 | static AV *cb_global, *cb_attachable, *cb_object, *cb_player, *cb_client, *cb_type, *cb_map; |
81 | static SV *sv_runtime, *sv_next_tick; |
81 | static SV *sv_runtime, *sv_next_tick, *sv_now; |
82 | |
82 | |
83 | bitset<NUM_EVENT_TYPES> ev_want_event; |
83 | bitset<NUM_EVENT_TYPES> ev_want_event; |
84 | bitset<NUM_TYPES> ev_want_type; |
84 | bitset<NUM_TYPES> ev_want_type; |
85 | |
85 | |
86 | static HV |
86 | static HV |
… | |
… | |
1112 | cede_counter = 0; |
1112 | cede_counter = 0; |
1113 | |
1113 | |
1114 | cede (); |
1114 | cede (); |
1115 | |
1115 | |
1116 | next_cede += (TICK / CEDES_PER_TICK) * 0.99; |
1116 | next_cede += (TICK / CEDES_PER_TICK) * 0.99; |
1117 | if (next_cede > SvNV (sv_next_tick) - 0.02) |
1117 | if (next_cede > SvNVx (sv_next_tick) - 0.02) |
1118 | next_cede = SvNV (sv_next_tick); |
1118 | next_cede = SvNVx (sv_next_tick); |
1119 | } |
1119 | } |
1120 | |
1120 | |
1121 | void coroapi::do_cede_every () |
1121 | void coroapi::do_cede_every () |
1122 | { |
1122 | { |
1123 | cede_counter = 0; |
1123 | cede_counter = 0; |
… | |
… | |
1174 | stash_cf_arch_wrap = gv_stashpv ("cf::arch::wrap" , 1); |
1174 | stash_cf_arch_wrap = gv_stashpv ("cf::arch::wrap" , 1); |
1175 | stash_cf_party_wrap = gv_stashpv ("cf::party::wrap" , 1); |
1175 | stash_cf_party_wrap = gv_stashpv ("cf::party::wrap" , 1); |
1176 | stash_cf_region_wrap = gv_stashpv ("cf::region::wrap", 1); |
1176 | stash_cf_region_wrap = gv_stashpv ("cf::region::wrap", 1); |
1177 | stash_cf_living_wrap = gv_stashpv ("cf::living::wrap", 1); |
1177 | stash_cf_living_wrap = gv_stashpv ("cf::living::wrap", 1); |
1178 | |
1178 | |
|
|
1179 | sv_now = get_sv ("cf::NOW" , 1); sv_upgrade (sv_now , SVt_NV); |
1179 | sv_runtime = get_sv ("cf::RUNTIME" , 1); sv_upgrade (sv_runtime , SVt_NV); |
1180 | sv_runtime = get_sv ("cf::RUNTIME" , 1); sv_upgrade (sv_runtime , SVt_NV); |
1180 | sv_next_tick = get_sv ("cf::NEXT_TICK", 1); sv_upgrade (sv_next_tick, SVt_NV); |
1181 | sv_next_tick = get_sv ("cf::NEXT_TICK", 1); sv_upgrade (sv_next_tick, SVt_NV); |
1181 | |
1182 | |
1182 | cb_global = get_av ("cf::CB_GLOBAL", 1); |
1183 | cb_global = get_av ("cf::CB_GLOBAL", 1); |
1183 | cb_attachable = get_av ("cf::CB_ATTACHABLE", 1); |
1184 | cb_attachable = get_av ("cf::CB_ATTACHABLE", 1); |
… | |
… | |
1535 | SvCUR_set (data_sv, dst - SvPVX (data_sv)); |
1536 | SvCUR_set (data_sv, dst - SvPVX (data_sv)); |
1536 | } |
1537 | } |
1537 | |
1538 | |
1538 | void _post_tick () |
1539 | void _post_tick () |
1539 | CODE: |
1540 | CODE: |
1540 | coroapi::next_cede = SvNV (sv_next_tick) - TICK * (1. - 1. / CEDES_PER_TICK); |
1541 | coroapi::next_cede = SvNVx (sv_next_tick) - TICK * (1. - 1. / CEDES_PER_TICK); |
1541 | |
1542 | |
1542 | NV till_cede () |
1543 | NV till_cede () |
1543 | CODE: |
1544 | CODE: |
1544 | RETVAL = coroapi::next_cede - now (); |
1545 | RETVAL = coroapi::next_cede - now (); |
1545 | OUTPUT: |
1546 | OUTPUT: |
1546 | RETVAL |
1547 | RETVAL |
1547 | |
1548 | |
1548 | NV till_tick () |
1549 | NV till_tick () |
1549 | CODE: |
1550 | CODE: |
1550 | RETVAL = SvNV (sv_next_tick) - now (); |
1551 | RETVAL = SvNVx (sv_next_tick) - now (); |
1551 | OUTPUT: |
1552 | OUTPUT: |
1552 | RETVAL |
1553 | RETVAL |
1553 | |
1554 | |
1554 | NV floor (NV x) |
1555 | NV floor (NV x) |
1555 | |
1556 | |
… | |
… | |
1583 | CODE: |
1584 | CODE: |
1584 | coroapi::cede_to_tick (); |
1585 | coroapi::cede_to_tick (); |
1585 | |
1586 | |
1586 | void server_tick () |
1587 | void server_tick () |
1587 | CODE: |
1588 | CODE: |
1588 | NOW = now (); |
1589 | NOW = SvNVx (sv_now); |
1589 | runtime = SvNVx (sv_runtime); |
1590 | runtime = SvNVx (sv_runtime); |
1590 | server_tick (); |
1591 | server_tick (); |
1591 | |
1592 | |
1592 | void |
1593 | void |
1593 | log_backtrace (utf8_string msg) |
1594 | log_backtrace (utf8_string msg) |