test disable no delay (#1026)

* test disable no delay

* removed set_nodelay code
This commit is contained in:
Guillermo Ruffino 2020-04-30 23:00:57 -03:00 committed by GitHub
parent d49ee47018
commit 14e9375262
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
5 changed files with 1 additions and 43 deletions

View file

@ -137,7 +137,6 @@ void APIConnection::loop() {
// bool done = 3; // bool done = 3;
bool done = this->image_reader_.available() == to_send; bool done = this->image_reader_.available() == to_send;
buffer.encode_bool(3, done); buffer.encode_bool(3, done);
this->set_nodelay(false);
bool success = this->send_buffer(buffer, 44); bool success = this->send_buffer(buffer, 44);
if (success) { if (success) {
@ -558,8 +557,6 @@ bool APIConnection::send_log_message(int level, const char *tag, const char *lin
if (this->log_subscription_ < level) if (this->log_subscription_ < level)
return false; return false;
this->set_nodelay(false);
// Send raw so that we don't copy too much // Send raw so that we don't copy too much
auto buffer = this->create_buffer(); auto buffer = this->create_buffer();
// LogLevel level = 1; // LogLevel level = 1;

View file

@ -138,12 +138,6 @@ class APIConnection : public APIServerConnection {
void on_timeout_(uint32_t time); void on_timeout_(uint32_t time);
void on_data_(uint8_t *buf, size_t len); void on_data_(uint8_t *buf, size_t len);
void parse_recv_buffer_(); void parse_recv_buffer_();
void set_nodelay(bool nodelay) override {
if (nodelay == this->current_nodelay_)
return;
this->client_->setNoDelay(nodelay);
this->current_nodelay_ = nodelay;
}
enum class ConnectionState { enum class ConnectionState {
WAITING_FOR_HELLO, WAITING_FOR_HELLO,

View file

@ -10,69 +10,57 @@ static const char *TAG = "api.service";
bool APIServerConnectionBase::send_hello_response(const HelloResponse &msg) { bool APIServerConnectionBase::send_hello_response(const HelloResponse &msg) {
ESP_LOGVV(TAG, "send_hello_response: %s", msg.dump().c_str()); ESP_LOGVV(TAG, "send_hello_response: %s", msg.dump().c_str());
this->set_nodelay(true);
return this->send_message_<HelloResponse>(msg, 2); return this->send_message_<HelloResponse>(msg, 2);
} }
bool APIServerConnectionBase::send_connect_response(const ConnectResponse &msg) { bool APIServerConnectionBase::send_connect_response(const ConnectResponse &msg) {
ESP_LOGVV(TAG, "send_connect_response: %s", msg.dump().c_str()); ESP_LOGVV(TAG, "send_connect_response: %s", msg.dump().c_str());
this->set_nodelay(true);
return this->send_message_<ConnectResponse>(msg, 4); return this->send_message_<ConnectResponse>(msg, 4);
} }
bool APIServerConnectionBase::send_disconnect_request(const DisconnectRequest &msg) { bool APIServerConnectionBase::send_disconnect_request(const DisconnectRequest &msg) {
ESP_LOGVV(TAG, "send_disconnect_request: %s", msg.dump().c_str()); ESP_LOGVV(TAG, "send_disconnect_request: %s", msg.dump().c_str());
this->set_nodelay(true);
return this->send_message_<DisconnectRequest>(msg, 5); return this->send_message_<DisconnectRequest>(msg, 5);
} }
bool APIServerConnectionBase::send_disconnect_response(const DisconnectResponse &msg) { bool APIServerConnectionBase::send_disconnect_response(const DisconnectResponse &msg) {
ESP_LOGVV(TAG, "send_disconnect_response: %s", msg.dump().c_str()); ESP_LOGVV(TAG, "send_disconnect_response: %s", msg.dump().c_str());
this->set_nodelay(true);
return this->send_message_<DisconnectResponse>(msg, 6); return this->send_message_<DisconnectResponse>(msg, 6);
} }
bool APIServerConnectionBase::send_ping_request(const PingRequest &msg) { bool APIServerConnectionBase::send_ping_request(const PingRequest &msg) {
ESP_LOGVV(TAG, "send_ping_request: %s", msg.dump().c_str()); ESP_LOGVV(TAG, "send_ping_request: %s", msg.dump().c_str());
this->set_nodelay(false);
return this->send_message_<PingRequest>(msg, 7); return this->send_message_<PingRequest>(msg, 7);
} }
bool APIServerConnectionBase::send_ping_response(const PingResponse &msg) { bool APIServerConnectionBase::send_ping_response(const PingResponse &msg) {
ESP_LOGVV(TAG, "send_ping_response: %s", msg.dump().c_str()); ESP_LOGVV(TAG, "send_ping_response: %s", msg.dump().c_str());
this->set_nodelay(false);
return this->send_message_<PingResponse>(msg, 8); return this->send_message_<PingResponse>(msg, 8);
} }
bool APIServerConnectionBase::send_device_info_response(const DeviceInfoResponse &msg) { bool APIServerConnectionBase::send_device_info_response(const DeviceInfoResponse &msg) {
ESP_LOGVV(TAG, "send_device_info_response: %s", msg.dump().c_str()); ESP_LOGVV(TAG, "send_device_info_response: %s", msg.dump().c_str());
this->set_nodelay(false);
return this->send_message_<DeviceInfoResponse>(msg, 10); return this->send_message_<DeviceInfoResponse>(msg, 10);
} }
bool APIServerConnectionBase::send_list_entities_done_response(const ListEntitiesDoneResponse &msg) { bool APIServerConnectionBase::send_list_entities_done_response(const ListEntitiesDoneResponse &msg) {
ESP_LOGVV(TAG, "send_list_entities_done_response: %s", msg.dump().c_str()); ESP_LOGVV(TAG, "send_list_entities_done_response: %s", msg.dump().c_str());
this->set_nodelay(true);
return this->send_message_<ListEntitiesDoneResponse>(msg, 19); return this->send_message_<ListEntitiesDoneResponse>(msg, 19);
} }
#ifdef USE_BINARY_SENSOR #ifdef USE_BINARY_SENSOR
bool APIServerConnectionBase::send_list_entities_binary_sensor_response(const ListEntitiesBinarySensorResponse &msg) { bool APIServerConnectionBase::send_list_entities_binary_sensor_response(const ListEntitiesBinarySensorResponse &msg) {
ESP_LOGVV(TAG, "send_list_entities_binary_sensor_response: %s", msg.dump().c_str()); ESP_LOGVV(TAG, "send_list_entities_binary_sensor_response: %s", msg.dump().c_str());
this->set_nodelay(false);
return this->send_message_<ListEntitiesBinarySensorResponse>(msg, 12); return this->send_message_<ListEntitiesBinarySensorResponse>(msg, 12);
} }
#endif #endif
#ifdef USE_BINARY_SENSOR #ifdef USE_BINARY_SENSOR
bool APIServerConnectionBase::send_binary_sensor_state_response(const BinarySensorStateResponse &msg) { bool APIServerConnectionBase::send_binary_sensor_state_response(const BinarySensorStateResponse &msg) {
ESP_LOGVV(TAG, "send_binary_sensor_state_response: %s", msg.dump().c_str()); ESP_LOGVV(TAG, "send_binary_sensor_state_response: %s", msg.dump().c_str());
this->set_nodelay(true);
return this->send_message_<BinarySensorStateResponse>(msg, 21); return this->send_message_<BinarySensorStateResponse>(msg, 21);
} }
#endif #endif
#ifdef USE_COVER #ifdef USE_COVER
bool APIServerConnectionBase::send_list_entities_cover_response(const ListEntitiesCoverResponse &msg) { bool APIServerConnectionBase::send_list_entities_cover_response(const ListEntitiesCoverResponse &msg) {
ESP_LOGVV(TAG, "send_list_entities_cover_response: %s", msg.dump().c_str()); ESP_LOGVV(TAG, "send_list_entities_cover_response: %s", msg.dump().c_str());
this->set_nodelay(false);
return this->send_message_<ListEntitiesCoverResponse>(msg, 13); return this->send_message_<ListEntitiesCoverResponse>(msg, 13);
} }
#endif #endif
#ifdef USE_COVER #ifdef USE_COVER
bool APIServerConnectionBase::send_cover_state_response(const CoverStateResponse &msg) { bool APIServerConnectionBase::send_cover_state_response(const CoverStateResponse &msg) {
ESP_LOGVV(TAG, "send_cover_state_response: %s", msg.dump().c_str()); ESP_LOGVV(TAG, "send_cover_state_response: %s", msg.dump().c_str());
this->set_nodelay(true);
return this->send_message_<CoverStateResponse>(msg, 22); return this->send_message_<CoverStateResponse>(msg, 22);
} }
#endif #endif
@ -81,14 +69,12 @@ bool APIServerConnectionBase::send_cover_state_response(const CoverStateResponse
#ifdef USE_FAN #ifdef USE_FAN
bool APIServerConnectionBase::send_list_entities_fan_response(const ListEntitiesFanResponse &msg) { bool APIServerConnectionBase::send_list_entities_fan_response(const ListEntitiesFanResponse &msg) {
ESP_LOGVV(TAG, "send_list_entities_fan_response: %s", msg.dump().c_str()); ESP_LOGVV(TAG, "send_list_entities_fan_response: %s", msg.dump().c_str());
this->set_nodelay(false);
return this->send_message_<ListEntitiesFanResponse>(msg, 14); return this->send_message_<ListEntitiesFanResponse>(msg, 14);
} }
#endif #endif
#ifdef USE_FAN #ifdef USE_FAN
bool APIServerConnectionBase::send_fan_state_response(const FanStateResponse &msg) { bool APIServerConnectionBase::send_fan_state_response(const FanStateResponse &msg) {
ESP_LOGVV(TAG, "send_fan_state_response: %s", msg.dump().c_str()); ESP_LOGVV(TAG, "send_fan_state_response: %s", msg.dump().c_str());
this->set_nodelay(true);
return this->send_message_<FanStateResponse>(msg, 23); return this->send_message_<FanStateResponse>(msg, 23);
} }
#endif #endif
@ -97,14 +83,12 @@ bool APIServerConnectionBase::send_fan_state_response(const FanStateResponse &ms
#ifdef USE_LIGHT #ifdef USE_LIGHT
bool APIServerConnectionBase::send_list_entities_light_response(const ListEntitiesLightResponse &msg) { bool APIServerConnectionBase::send_list_entities_light_response(const ListEntitiesLightResponse &msg) {
ESP_LOGVV(TAG, "send_list_entities_light_response: %s", msg.dump().c_str()); ESP_LOGVV(TAG, "send_list_entities_light_response: %s", msg.dump().c_str());
this->set_nodelay(false);
return this->send_message_<ListEntitiesLightResponse>(msg, 15); return this->send_message_<ListEntitiesLightResponse>(msg, 15);
} }
#endif #endif
#ifdef USE_LIGHT #ifdef USE_LIGHT
bool APIServerConnectionBase::send_light_state_response(const LightStateResponse &msg) { bool APIServerConnectionBase::send_light_state_response(const LightStateResponse &msg) {
ESP_LOGVV(TAG, "send_light_state_response: %s", msg.dump().c_str()); ESP_LOGVV(TAG, "send_light_state_response: %s", msg.dump().c_str());
this->set_nodelay(true);
return this->send_message_<LightStateResponse>(msg, 24); return this->send_message_<LightStateResponse>(msg, 24);
} }
#endif #endif
@ -113,28 +97,24 @@ bool APIServerConnectionBase::send_light_state_response(const LightStateResponse
#ifdef USE_SENSOR #ifdef USE_SENSOR
bool APIServerConnectionBase::send_list_entities_sensor_response(const ListEntitiesSensorResponse &msg) { bool APIServerConnectionBase::send_list_entities_sensor_response(const ListEntitiesSensorResponse &msg) {
ESP_LOGVV(TAG, "send_list_entities_sensor_response: %s", msg.dump().c_str()); ESP_LOGVV(TAG, "send_list_entities_sensor_response: %s", msg.dump().c_str());
this->set_nodelay(false);
return this->send_message_<ListEntitiesSensorResponse>(msg, 16); return this->send_message_<ListEntitiesSensorResponse>(msg, 16);
} }
#endif #endif
#ifdef USE_SENSOR #ifdef USE_SENSOR
bool APIServerConnectionBase::send_sensor_state_response(const SensorStateResponse &msg) { bool APIServerConnectionBase::send_sensor_state_response(const SensorStateResponse &msg) {
ESP_LOGVV(TAG, "send_sensor_state_response: %s", msg.dump().c_str()); ESP_LOGVV(TAG, "send_sensor_state_response: %s", msg.dump().c_str());
this->set_nodelay(true);
return this->send_message_<SensorStateResponse>(msg, 25); return this->send_message_<SensorStateResponse>(msg, 25);
} }
#endif #endif
#ifdef USE_SWITCH #ifdef USE_SWITCH
bool APIServerConnectionBase::send_list_entities_switch_response(const ListEntitiesSwitchResponse &msg) { bool APIServerConnectionBase::send_list_entities_switch_response(const ListEntitiesSwitchResponse &msg) {
ESP_LOGVV(TAG, "send_list_entities_switch_response: %s", msg.dump().c_str()); ESP_LOGVV(TAG, "send_list_entities_switch_response: %s", msg.dump().c_str());
this->set_nodelay(false);
return this->send_message_<ListEntitiesSwitchResponse>(msg, 17); return this->send_message_<ListEntitiesSwitchResponse>(msg, 17);
} }
#endif #endif
#ifdef USE_SWITCH #ifdef USE_SWITCH
bool APIServerConnectionBase::send_switch_state_response(const SwitchStateResponse &msg) { bool APIServerConnectionBase::send_switch_state_response(const SwitchStateResponse &msg) {
ESP_LOGVV(TAG, "send_switch_state_response: %s", msg.dump().c_str()); ESP_LOGVV(TAG, "send_switch_state_response: %s", msg.dump().c_str());
this->set_nodelay(true);
return this->send_message_<SwitchStateResponse>(msg, 26); return this->send_message_<SwitchStateResponse>(msg, 26);
} }
#endif #endif
@ -143,58 +123,48 @@ bool APIServerConnectionBase::send_switch_state_response(const SwitchStateRespon
#ifdef USE_TEXT_SENSOR #ifdef USE_TEXT_SENSOR
bool APIServerConnectionBase::send_list_entities_text_sensor_response(const ListEntitiesTextSensorResponse &msg) { bool APIServerConnectionBase::send_list_entities_text_sensor_response(const ListEntitiesTextSensorResponse &msg) {
ESP_LOGVV(TAG, "send_list_entities_text_sensor_response: %s", msg.dump().c_str()); ESP_LOGVV(TAG, "send_list_entities_text_sensor_response: %s", msg.dump().c_str());
this->set_nodelay(false);
return this->send_message_<ListEntitiesTextSensorResponse>(msg, 18); return this->send_message_<ListEntitiesTextSensorResponse>(msg, 18);
} }
#endif #endif
#ifdef USE_TEXT_SENSOR #ifdef USE_TEXT_SENSOR
bool APIServerConnectionBase::send_text_sensor_state_response(const TextSensorStateResponse &msg) { bool APIServerConnectionBase::send_text_sensor_state_response(const TextSensorStateResponse &msg) {
ESP_LOGVV(TAG, "send_text_sensor_state_response: %s", msg.dump().c_str()); ESP_LOGVV(TAG, "send_text_sensor_state_response: %s", msg.dump().c_str());
this->set_nodelay(true);
return this->send_message_<TextSensorStateResponse>(msg, 27); return this->send_message_<TextSensorStateResponse>(msg, 27);
} }
#endif #endif
bool APIServerConnectionBase::send_subscribe_logs_response(const SubscribeLogsResponse &msg) { bool APIServerConnectionBase::send_subscribe_logs_response(const SubscribeLogsResponse &msg) {
this->set_nodelay(false);
return this->send_message_<SubscribeLogsResponse>(msg, 29); return this->send_message_<SubscribeLogsResponse>(msg, 29);
} }
bool APIServerConnectionBase::send_homeassistant_service_response(const HomeassistantServiceResponse &msg) { bool APIServerConnectionBase::send_homeassistant_service_response(const HomeassistantServiceResponse &msg) {
ESP_LOGVV(TAG, "send_homeassistant_service_response: %s", msg.dump().c_str()); ESP_LOGVV(TAG, "send_homeassistant_service_response: %s", msg.dump().c_str());
this->set_nodelay(true);
return this->send_message_<HomeassistantServiceResponse>(msg, 35); return this->send_message_<HomeassistantServiceResponse>(msg, 35);
} }
bool APIServerConnectionBase::send_subscribe_home_assistant_state_response( bool APIServerConnectionBase::send_subscribe_home_assistant_state_response(
const SubscribeHomeAssistantStateResponse &msg) { const SubscribeHomeAssistantStateResponse &msg) {
ESP_LOGVV(TAG, "send_subscribe_home_assistant_state_response: %s", msg.dump().c_str()); ESP_LOGVV(TAG, "send_subscribe_home_assistant_state_response: %s", msg.dump().c_str());
this->set_nodelay(false);
return this->send_message_<SubscribeHomeAssistantStateResponse>(msg, 39); return this->send_message_<SubscribeHomeAssistantStateResponse>(msg, 39);
} }
bool APIServerConnectionBase::send_get_time_request(const GetTimeRequest &msg) { bool APIServerConnectionBase::send_get_time_request(const GetTimeRequest &msg) {
ESP_LOGVV(TAG, "send_get_time_request: %s", msg.dump().c_str()); ESP_LOGVV(TAG, "send_get_time_request: %s", msg.dump().c_str());
this->set_nodelay(false);
return this->send_message_<GetTimeRequest>(msg, 36); return this->send_message_<GetTimeRequest>(msg, 36);
} }
bool APIServerConnectionBase::send_get_time_response(const GetTimeResponse &msg) { bool APIServerConnectionBase::send_get_time_response(const GetTimeResponse &msg) {
ESP_LOGVV(TAG, "send_get_time_response: %s", msg.dump().c_str()); ESP_LOGVV(TAG, "send_get_time_response: %s", msg.dump().c_str());
this->set_nodelay(true);
return this->send_message_<GetTimeResponse>(msg, 37); return this->send_message_<GetTimeResponse>(msg, 37);
} }
bool APIServerConnectionBase::send_list_entities_services_response(const ListEntitiesServicesResponse &msg) { bool APIServerConnectionBase::send_list_entities_services_response(const ListEntitiesServicesResponse &msg) {
ESP_LOGVV(TAG, "send_list_entities_services_response: %s", msg.dump().c_str()); ESP_LOGVV(TAG, "send_list_entities_services_response: %s", msg.dump().c_str());
this->set_nodelay(false);
return this->send_message_<ListEntitiesServicesResponse>(msg, 41); return this->send_message_<ListEntitiesServicesResponse>(msg, 41);
} }
#ifdef USE_ESP32_CAMERA #ifdef USE_ESP32_CAMERA
bool APIServerConnectionBase::send_list_entities_camera_response(const ListEntitiesCameraResponse &msg) { bool APIServerConnectionBase::send_list_entities_camera_response(const ListEntitiesCameraResponse &msg) {
ESP_LOGVV(TAG, "send_list_entities_camera_response: %s", msg.dump().c_str()); ESP_LOGVV(TAG, "send_list_entities_camera_response: %s", msg.dump().c_str());
this->set_nodelay(false);
return this->send_message_<ListEntitiesCameraResponse>(msg, 43); return this->send_message_<ListEntitiesCameraResponse>(msg, 43);
} }
#endif #endif
#ifdef USE_ESP32_CAMERA #ifdef USE_ESP32_CAMERA
bool APIServerConnectionBase::send_camera_image_response(const CameraImageResponse &msg) { bool APIServerConnectionBase::send_camera_image_response(const CameraImageResponse &msg) {
ESP_LOGVV(TAG, "send_camera_image_response: %s", msg.dump().c_str()); ESP_LOGVV(TAG, "send_camera_image_response: %s", msg.dump().c_str());
this->set_nodelay(false);
return this->send_message_<CameraImageResponse>(msg, 44); return this->send_message_<CameraImageResponse>(msg, 44);
} }
#endif #endif
@ -203,14 +173,12 @@ bool APIServerConnectionBase::send_camera_image_response(const CameraImageRespon
#ifdef USE_CLIMATE #ifdef USE_CLIMATE
bool APIServerConnectionBase::send_list_entities_climate_response(const ListEntitiesClimateResponse &msg) { bool APIServerConnectionBase::send_list_entities_climate_response(const ListEntitiesClimateResponse &msg) {
ESP_LOGVV(TAG, "send_list_entities_climate_response: %s", msg.dump().c_str()); ESP_LOGVV(TAG, "send_list_entities_climate_response: %s", msg.dump().c_str());
this->set_nodelay(false);
return this->send_message_<ListEntitiesClimateResponse>(msg, 46); return this->send_message_<ListEntitiesClimateResponse>(msg, 46);
} }
#endif #endif
#ifdef USE_CLIMATE #ifdef USE_CLIMATE
bool APIServerConnectionBase::send_climate_state_response(const ClimateStateResponse &msg) { bool APIServerConnectionBase::send_climate_state_response(const ClimateStateResponse &msg) {
ESP_LOGVV(TAG, "send_climate_state_response: %s", msg.dump().c_str()); ESP_LOGVV(TAG, "send_climate_state_response: %s", msg.dump().c_str());
this->set_nodelay(true);
return this->send_message_<ClimateStateResponse>(msg, 47); return this->send_message_<ClimateStateResponse>(msg, 47);
} }
#endif #endif

View file

@ -266,7 +266,6 @@ class ProtoService {
virtual ProtoWriteBuffer create_buffer() = 0; virtual ProtoWriteBuffer create_buffer() = 0;
virtual bool send_buffer(ProtoWriteBuffer buffer, uint32_t message_type) = 0; virtual bool send_buffer(ProtoWriteBuffer buffer, uint32_t message_type) = 0;
virtual bool read_message(uint32_t msg_size, uint32_t msg_type, uint8_t *msg_data) = 0; virtual bool read_message(uint32_t msg_size, uint32_t msg_type, uint8_t *msg_data) = 0;
virtual void set_nodelay(bool nodelay) = 0;
template<class C> bool send_message_(const C &msg, uint32_t message_type) { template<class C> bool send_message_(const C &msg, uint32_t message_type) {
auto buffer = this->create_buffer(); auto buffer = this->create_buffer();

View file

@ -731,7 +731,7 @@ def build_service_message_type(mt):
cout += f'bool {class_name}::{func}(const {mt.name} &msg) {{\n' cout += f'bool {class_name}::{func}(const {mt.name} &msg) {{\n'
if log: if log:
cout += f' ESP_LOGVV(TAG, "{func}: %s", msg.dump().c_str());\n' cout += f' ESP_LOGVV(TAG, "{func}: %s", msg.dump().c_str());\n'
cout += f' this->set_nodelay({str(nodelay).lower()});\n' # cout += f' this->set_nodelay({str(nodelay).lower()});\n'
cout += f' return this->send_message_<{mt.name}>(msg, {id_});\n' cout += f' return this->send_message_<{mt.name}>(msg, {id_});\n'
cout += f'}}\n' cout += f'}}\n'
if source in (SOURCE_BOTH, SOURCE_CLIENT): if source in (SOURCE_BOTH, SOURCE_CLIENT):