void ipc_accept_loop(void *ipc, void *ipc_al_sthread) { int client_sd; void *ipcctrl_thread_arr = safe_array_init(); while(sthread_isterminated(ipc_al_sthread) == 0) { safe_array_clean(ipcctrl_thread_arr, accept_loop_ipcctrl_thread_cnd); if ( -1 == (client_sd = ipcsocket_accept(ipc)) ) { break; } else { Tsthread_params stp; stp.execute = accept_loop_ipcctrl_execute; stp.finish = accept_loop_ipcctrl_finish; stp.user_data = new svr_ipcctrl(client_sd); stp.free_on_finish = 0; stp.initialize = NULL; safe_array_add(ipcctrl_thread_arr, sthread_run(&stp)); } } safe_array_clean(ipcctrl_thread_arr, accept_loop_ipcctrl_thread_twt); safe_array_free(ipcctrl_thread_arr); }
supla_client_locations::supla_client_locations() { this->arr = safe_array_init(); this->lck = lck_init(); ids = NULL; ids_count = 0; }
void accept_loop(void *ssd, void *al_sthread) { void *supla_socket = NULL; void *svrconn_thread_arr = safe_array_init(); while(sthread_isterminated(al_sthread) == 0) { safe_array_clean(svrconn_thread_arr, accept_loop_srvconn_thread_cnd); unsigned int ipv4; if ( ssocket_accept(ssd, &ipv4, &supla_socket) == 0 ) { break; } else { if ( supla_socket != NULL ) { Tsthread_params stp; stp.execute = accept_loop_srvconn_execute; stp.finish = accept_loop_srvconn_finish; stp.user_data = new serverconnection(ssd, supla_socket, ipv4); stp.free_on_finish = 0; stp.initialize = NULL; safe_array_add(svrconn_thread_arr, sthread_run(&stp)); } } } safe_array_clean(svrconn_thread_arr, accept_loop_srvconn_thread_twt); safe_array_free(svrconn_thread_arr); }
void supla_datalogger::log_temperature() { supla_user *user; int a; int n = 0; void *tarr = safe_array_init(); while ((user = supla_user::get_user(n)) != NULL) { n++; user->get_temp_and_humidity(tarr); } for (a = 0; a < safe_array_count(tarr); a++) { supla_channel_temphum *sct = (supla_channel_temphum *)safe_array_get(tarr, a); if (sct->isTempAndHumidity() == 1) db->add_temperature_and_humidity( sct->getChannelId(), sct->getTemperature(), sct->getHumidity()); else db->add_temperature(sct->getChannelId(), sct->getTemperature()); } supla_channel_temphum::free(tarr); }
supla_client_channels::supla_client_channels(supla_client *client) { this->client = client; this->arr = safe_array_init(); }
supla_device_channels::supla_device_channels() { arr = safe_array_init(); }