restructure some libuv stuff
This commit is contained in:
parent
835b04fc13
commit
273e91ac71
|
|
@ -352,9 +352,17 @@ void releaseloop(loop_data* f, SimData* simdata, SimMap* simmap)
|
||||||
if(f->releasing == false)
|
if(f->releasing == false)
|
||||||
{
|
{
|
||||||
f->releasing = true;
|
f->releasing = true;
|
||||||
uv_udp_recv_stop(&recv_socket);
|
|
||||||
uv_timer_stop(&datamaptimer);
|
uv_timer_stop(&datamaptimer);
|
||||||
uv_timer_stop(&showstatstimer);
|
uv_timer_stop(&showstatstimer);
|
||||||
|
if (uv_is_active((uv_handle_t*)&recv_socket))
|
||||||
|
{
|
||||||
|
uv_udp_recv_stop(&recv_socket);
|
||||||
|
}
|
||||||
|
// Close the socket handle so it can be reinitialized with a different port
|
||||||
|
//if (!uv_is_closing((uv_handle_t*)&recv_socket))
|
||||||
|
//{
|
||||||
|
// uv_close((uv_handle_t*)&recv_socket, NULL);
|
||||||
|
//}
|
||||||
slogi("releasing devices, please wait");
|
slogi("releasing devices, please wait");
|
||||||
|
|
||||||
//attempt tyre diameter saving
|
//attempt tyre diameter saving
|
||||||
|
|
@ -417,8 +425,8 @@ void releaseloop(loop_data* f, SimData* simdata, SimMap* simmap)
|
||||||
|
|
||||||
if(appstate > 0)
|
if(appstate > 0)
|
||||||
{
|
{
|
||||||
slogi("restarting data check timer");
|
slogi("restarting checking for data...");
|
||||||
uv_timer_start(&datachecktimer, datacheckcallback, 3000, 1000);
|
uv_timer_start(&datachecktimer, datacheckcallback, 0, 1000);
|
||||||
}
|
}
|
||||||
f->releasing = false;
|
f->releasing = false;
|
||||||
if(appstate > 1)
|
if(appstate > 1)
|
||||||
|
|
@ -598,14 +606,11 @@ void cb(uv_poll_t* handle, int status, int events)
|
||||||
{
|
{
|
||||||
slogi("Monocoque is exiting...");
|
slogi("Monocoque is exiting...");
|
||||||
uv_udp_recv_stop(&recv_socket);
|
uv_udp_recv_stop(&recv_socket);
|
||||||
uv_timer_stop(&datachecktimer);
|
|
||||||
uv_timer_stop(&datamaptimer);
|
uv_timer_stop(&datamaptimer);
|
||||||
uv_timer_stop(&showstatstimer);
|
uv_timer_stop(&showstatstimer);
|
||||||
|
// at this point these below should be the only active threads
|
||||||
|
uv_timer_stop(&datachecktimer);
|
||||||
uv_poll_stop(handle);
|
uv_poll_stop(handle);
|
||||||
uv_walk(uv_default_loop(), close_walk_cb, NULL);
|
|
||||||
uv_loop_close(uv_default_loop());
|
|
||||||
uv_library_shutdown();
|
|
||||||
slogi("All threads stopped...");
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -638,36 +643,43 @@ int monocoque_mainloop(MonocoqueSettings* ms)
|
||||||
baton->releasing = false;
|
baton->releasing = false;
|
||||||
baton->sim = 0;
|
baton->sim = 0;
|
||||||
baton->req.data = (void*) baton;
|
baton->req.data = (void*) baton;
|
||||||
uv_handle_set_data((uv_handle_t*) &datachecktimer, (void*) baton);
|
|
||||||
uv_handle_set_data((uv_handle_t*) &datamaptimer, (void*) baton);
|
|
||||||
uv_handle_set_data((uv_handle_t*) &showstatstimer, (void*) baton);
|
|
||||||
uv_handle_set_data((uv_handle_t*) &recv_socket, (void*) baton);
|
|
||||||
uv_handle_set_data((uv_handle_t*) poll, (void*) baton);
|
|
||||||
appstate = 1;
|
|
||||||
slogd("setting initial app state");
|
|
||||||
uv_timer_init(uv_default_loop(), &datachecktimer);
|
|
||||||
uv_timer_init(uv_default_loop(), &showstatstimer);
|
|
||||||
fprintf(stdout, "Searching for sim data... Press q to quit...\n");
|
|
||||||
uv_timer_start(&datachecktimer, datacheckcallback, 1000, 1000);
|
|
||||||
|
|
||||||
set_simapi_log_info(simapilib_loginfo);
|
set_simapi_log_info(simapilib_loginfo);
|
||||||
set_simapi_log_debug(simapilib_logdebug);
|
set_simapi_log_debug(simapilib_logdebug);
|
||||||
set_simapi_log_trace(simapilib_logtrace);
|
set_simapi_log_trace(simapilib_logtrace);
|
||||||
|
|
||||||
|
|
||||||
if (0 != uv_poll_init(uv_default_loop(), poll, 0))
|
if (0 != uv_poll_init(uv_default_loop(), poll, 0))
|
||||||
{
|
{
|
||||||
return 1;
|
return 1;
|
||||||
};
|
};
|
||||||
|
uv_timer_init(uv_default_loop(), &datachecktimer);
|
||||||
|
uv_timer_init(uv_default_loop(), &showstatstimer);
|
||||||
|
uv_timer_init(uv_default_loop(), &datamaptimer);
|
||||||
|
slogd("setting initial app state");
|
||||||
|
appstate = 1;
|
||||||
|
|
||||||
|
uv_handle_set_data((uv_handle_t*) &datachecktimer, (void*) baton);
|
||||||
|
uv_handle_set_data((uv_handle_t*) &datamaptimer, (void*) baton);
|
||||||
|
uv_handle_set_data((uv_handle_t*) &showstatstimer, (void*) baton);
|
||||||
|
uv_handle_set_data((uv_handle_t*) &recv_socket, (void*) baton);
|
||||||
|
uv_handle_set_data((uv_handle_t*) poll, (void*) baton);
|
||||||
|
|
||||||
if (0 != uv_poll_start(poll, UV_READABLE, cb))
|
if (0 != uv_poll_start(poll, UV_READABLE, cb))
|
||||||
{
|
{
|
||||||
return 2;
|
return 2;
|
||||||
};
|
};
|
||||||
|
uv_timer_start(&datachecktimer, datacheckcallback, 1000, 1000);
|
||||||
|
|
||||||
|
fprintf(stdout, "Searching for sim data... Press q to quit...\n");
|
||||||
uv_timer_init(uv_default_loop(), &datamaptimer);
|
|
||||||
|
|
||||||
uv_run(uv_default_loop(), UV_RUN_DEFAULT);
|
uv_run(uv_default_loop(), UV_RUN_DEFAULT);
|
||||||
|
|
||||||
|
uv_stop(uv_default_loop());
|
||||||
|
//uv_walk(uv_default_loop(), close_walk_cb, NULL);
|
||||||
|
uv_run(uv_default_loop(), UV_RUN_DEFAULT);
|
||||||
|
uv_loop_close(uv_default_loop());
|
||||||
|
uv_library_shutdown();
|
||||||
|
slogi("All threads stopped...");
|
||||||
|
|
||||||
fprintf(stdout, "\n");
|
fprintf(stdout, "\n");
|
||||||
fflush(stdout);
|
fflush(stdout);
|
||||||
tcsetattr(0, TCSANOW, &canonicalmode);
|
tcsetattr(0, TCSANOW, &canonicalmode);
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue