| /* |
| Licensed to the Apache Software Foundation (ASF) under one |
| or more contributor license agreements. See the NOTICE file |
| distributed with this work for additional information |
| regarding copyright ownership. The ASF licenses this file |
| to you under the Apache License, Version 2.0 (the |
| "License"); you may not use this file except in compliance |
| with the License. You may obtain a copy of the License at |
| |
| http://www.apache.org/licenses/LICENSE-2.0 |
| |
| Unless required by applicable law or agreed to in writing, software |
| distributed under the License is distributed on an "AS IS" BASIS, |
| WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| See the License for the specific language governing permissions and |
| limitations under the License. |
| */ |
| |
| #ifndef DATASTAX_INTERNAL_ERROR_RESPONSE_HPP |
| #define DATASTAX_INTERNAL_ERROR_RESPONSE_HPP |
| |
| #include "constants.hpp" |
| #include "external.hpp" |
| #include "response.hpp" |
| #include "retry_policy.hpp" |
| #include "scoped_ptr.hpp" |
| #include "string.hpp" |
| #include "string_ref.hpp" |
| #include "vector.hpp" |
| |
| #include <uv.h> |
| |
| #include <string.h> |
| |
| namespace datastax { namespace internal { namespace core { |
| |
| class ErrorResponse : public Response { |
| public: |
| ErrorResponse() |
| : Response(CQL_OPCODE_ERROR) |
| , code_(-1) |
| , cl_(CASS_CONSISTENCY_UNKNOWN) |
| , received_(-1) |
| , required_(-1) |
| , num_failures_(-1) |
| , data_present_(0) |
| , write_type_(CASS_WRITE_TYPE_UNKNOWN) {} |
| |
| ErrorResponse(int32_t code, StringRef message) |
| : Response(CQL_OPCODE_ERROR) |
| , code_(code) |
| , message_(message) {} |
| |
| int32_t code() const { return code_; } |
| StringRef message() const { return message_; } |
| StringRef prepared_id() const { return prepared_id_; } |
| CassConsistency consistency() const { return static_cast<CassConsistency>(cl_); } |
| int32_t received() const { return received_; } |
| int32_t required() const { return required_; } |
| int32_t num_failures() const { return num_failures_; } |
| uint8_t data_present() const { return data_present_; } |
| CassWriteType write_type() const { return write_type_; } |
| StringRef keyspace() const { return keyspace_; } |
| StringRef table() const { return table_; } |
| StringRef function() const { return function_; } |
| const StringRefVec& arg_types() const { return arg_types_; } |
| |
| String error_message() const; |
| |
| virtual bool decode(Decoder& decoder); |
| |
| private: |
| int32_t code_; |
| StringRef message_; |
| StringRef prepared_id_; |
| uint16_t cl_; |
| int32_t received_; |
| int32_t required_; |
| int32_t num_failures_; |
| FailureVec failures_; |
| uint8_t data_present_; |
| CassWriteType write_type_; |
| StringRef keyspace_; |
| StringRef table_; |
| StringRef function_; |
| StringRefVec arg_types_; |
| }; |
| |
| bool check_error_or_invalid_response(const String& prefix, uint8_t expected_opcode, |
| const Response* response); |
| |
| }}} // namespace datastax::internal::core |
| |
| EXTERNAL_TYPE(datastax::internal::core::ErrorResponse, CassErrorResult) |
| |
| #endif |