void RequestHandler::on_error_response(ResponseMessage* response) { ErrorResponse* error = static_cast<ErrorResponse*>(response->response_body().get()); switch(error->code()) { case CQL_ERROR_UNPREPARED: on_error_unprepared(error); break; case CQL_ERROR_READ_TIMEOUT: handle_retry_decision(response, retry_policy_->on_read_timeout(error->consistency(), error->received(), error->required(), error->data_present() > 0, num_retries_)); break; case CQL_ERROR_WRITE_TIMEOUT: handle_retry_decision(response, retry_policy_->on_write_timeout(error->consistency(), error->received(), error->required(), error->write_type(), num_retries_)); break; case CQL_ERROR_UNAVAILABLE: handle_retry_decision(response, retry_policy_->on_unavailable(error->consistency(), error->required(), error->received(), num_retries_)); break; default: set_error(static_cast<CassError>(CASS_ERROR( CASS_ERROR_SOURCE_SERVER, error->code())), error->message().to_string()); break; } }