char supla_client_connect(void *_suplaclient) { TSuplaClientData *suplaclient = (TSuplaClientData *)_suplaclient; supla_client_disconnect(_suplaclient); supla_client_clean(_suplaclient); if ( ssocket_client_connect(suplaclient->ssd, NULL) == 1 ) { suplaclient->eh = eh_init(); TsrpcParams srpc_params; srpc_params_init(&srpc_params); srpc_params.user_params = _suplaclient; srpc_params.data_read = &supla_client_socket_read; srpc_params.data_write = &supla_client_socket_write; srpc_params.on_remote_call_received = &supla_client_on_remote_call_received; srpc_params.before_async_call = &supla_client_before_async_call; srpc_params.eh = suplaclient->eh; suplaclient->srpc = srpc_init(&srpc_params); eh_add_fd(suplaclient->eh, ssocket_get_fd(suplaclient->ssd)); suplaclient->connected = 1; supla_client_set_registered(_suplaclient, 0); if ( suplaclient->cfg.cb_on_connected ) suplaclient->cfg.cb_on_connected(_suplaclient, suplaclient->cfg.user_data); return 1; } return 0; }
void supla_client_free(void *_suplaclient) { if ( _suplaclient != NULL ) { supla_client_disconnect(_suplaclient); supla_client_clean(_suplaclient); TSuplaClientData *scd = (TSuplaClientData*)_suplaclient; if ( scd->cfg.host ) free(scd->cfg.host); ssocket_free(scd->ssd); lck_free(scd->lck); free(_suplaclient); } }