Пример #1
0
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;
}
Пример #2
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);

	}

}