1dd758e33b
Change-Id: I81ff7fca841015ebc8cee66546ab40efb3065731 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2892842 Reviewed-by: Yang Guo <yangguo@chromium.org> Reviewed-by: Andreas Haas <ahaas@chromium.org> Commit-Queue: Andrey Kosyakov <caseq@chromium.org> Cr-Commit-Position: refs/heads/master@{#74575}
129 lines
5.1 KiB
C++
129 lines
5.1 KiB
C++
// Copyright 2019 The Chromium Authors. All rights reserved.
|
|
// Use of this source code is governed by a BSD-style license that can be
|
|
// found in the LICENSE file.
|
|
|
|
#include "status.h"
|
|
|
|
namespace v8_crdtp {
|
|
// =============================================================================
|
|
// Status and Error codes
|
|
// =============================================================================
|
|
|
|
std::string Status::Message() const {
|
|
switch (error) {
|
|
case Error::OK:
|
|
return "OK";
|
|
case Error::JSON_PARSER_UNPROCESSED_INPUT_REMAINS:
|
|
return "JSON: unprocessed input remains";
|
|
case Error::JSON_PARSER_STACK_LIMIT_EXCEEDED:
|
|
return "JSON: stack limit exceeded";
|
|
case Error::JSON_PARSER_NO_INPUT:
|
|
return "JSON: no input";
|
|
case Error::JSON_PARSER_INVALID_TOKEN:
|
|
return "JSON: invalid token";
|
|
case Error::JSON_PARSER_INVALID_NUMBER:
|
|
return "JSON: invalid number";
|
|
case Error::JSON_PARSER_INVALID_STRING:
|
|
return "JSON: invalid string";
|
|
case Error::JSON_PARSER_UNEXPECTED_ARRAY_END:
|
|
return "JSON: unexpected array end";
|
|
case Error::JSON_PARSER_COMMA_OR_ARRAY_END_EXPECTED:
|
|
return "JSON: comma or array end expected";
|
|
case Error::JSON_PARSER_STRING_LITERAL_EXPECTED:
|
|
return "JSON: string literal expected";
|
|
case Error::JSON_PARSER_COLON_EXPECTED:
|
|
return "JSON: colon expected";
|
|
case Error::JSON_PARSER_UNEXPECTED_MAP_END:
|
|
return "JSON: unexpected map end";
|
|
case Error::JSON_PARSER_COMMA_OR_MAP_END_EXPECTED:
|
|
return "JSON: comma or map end expected";
|
|
case Error::JSON_PARSER_VALUE_EXPECTED:
|
|
return "JSON: value expected";
|
|
|
|
case Error::CBOR_INVALID_INT32:
|
|
return "CBOR: invalid int32";
|
|
case Error::CBOR_INVALID_DOUBLE:
|
|
return "CBOR: invalid double";
|
|
case Error::CBOR_INVALID_ENVELOPE:
|
|
return "CBOR: invalid envelope";
|
|
case Error::CBOR_ENVELOPE_CONTENTS_LENGTH_MISMATCH:
|
|
return "CBOR: envelope contents length mismatch";
|
|
case Error::CBOR_MAP_OR_ARRAY_EXPECTED_IN_ENVELOPE:
|
|
return "CBOR: map or array expected in envelope";
|
|
case Error::CBOR_INVALID_STRING8:
|
|
return "CBOR: invalid string8";
|
|
case Error::CBOR_INVALID_STRING16:
|
|
return "CBOR: invalid string16";
|
|
case Error::CBOR_INVALID_BINARY:
|
|
return "CBOR: invalid binary";
|
|
case Error::CBOR_UNSUPPORTED_VALUE:
|
|
return "CBOR: unsupported value";
|
|
case Error::CBOR_NO_INPUT:
|
|
return "CBOR: no input";
|
|
case Error::CBOR_INVALID_START_BYTE:
|
|
return "CBOR: invalid start byte";
|
|
case Error::CBOR_UNEXPECTED_EOF_EXPECTED_VALUE:
|
|
return "CBOR: unexpected eof expected value";
|
|
case Error::CBOR_UNEXPECTED_EOF_IN_ARRAY:
|
|
return "CBOR: unexpected eof in array";
|
|
case Error::CBOR_UNEXPECTED_EOF_IN_MAP:
|
|
return "CBOR: unexpected eof in map";
|
|
case Error::CBOR_INVALID_MAP_KEY:
|
|
return "CBOR: invalid map key";
|
|
case Error::CBOR_DUPLICATE_MAP_KEY:
|
|
return "CBOR: duplicate map key";
|
|
case Error::CBOR_STACK_LIMIT_EXCEEDED:
|
|
return "CBOR: stack limit exceeded";
|
|
case Error::CBOR_TRAILING_JUNK:
|
|
return "CBOR: trailing junk";
|
|
case Error::CBOR_MAP_START_EXPECTED:
|
|
return "CBOR: map start expected";
|
|
case Error::CBOR_MAP_STOP_EXPECTED:
|
|
return "CBOR: map stop expected";
|
|
case Error::CBOR_ARRAY_START_EXPECTED:
|
|
return "CBOR: array start expected";
|
|
case Error::CBOR_ENVELOPE_SIZE_LIMIT_EXCEEDED:
|
|
return "CBOR: envelope size limit exceeded";
|
|
|
|
case Error::MESSAGE_MUST_BE_AN_OBJECT:
|
|
return "Message must be an object";
|
|
case Error::MESSAGE_MUST_HAVE_INTEGER_ID_PROPERTY:
|
|
return "Message must have integer 'id' property";
|
|
case Error::MESSAGE_MUST_HAVE_STRING_METHOD_PROPERTY:
|
|
return "Message must have string 'method' property";
|
|
case Error::MESSAGE_MAY_HAVE_STRING_SESSION_ID_PROPERTY:
|
|
return "Message may have string 'sessionId' property";
|
|
case Error::MESSAGE_MAY_HAVE_OBJECT_PARAMS_PROPERTY:
|
|
return "Message may have object 'params' property";
|
|
case Error::MESSAGE_HAS_UNKNOWN_PROPERTY:
|
|
return "Message has property other than "
|
|
"'id', 'method', 'sessionId', 'params'";
|
|
|
|
case Error::BINDINGS_MANDATORY_FIELD_MISSING:
|
|
return "BINDINGS: mandatory field missing";
|
|
case Error::BINDINGS_BOOL_VALUE_EXPECTED:
|
|
return "BINDINGS: bool value expected";
|
|
case Error::BINDINGS_INT32_VALUE_EXPECTED:
|
|
return "BINDINGS: int32 value expected";
|
|
case Error::BINDINGS_DOUBLE_VALUE_EXPECTED:
|
|
return "BINDINGS: double value expected";
|
|
case Error::BINDINGS_STRING_VALUE_EXPECTED:
|
|
return "BINDINGS: string value expected";
|
|
case Error::BINDINGS_STRING8_VALUE_EXPECTED:
|
|
return "BINDINGS: string8 value expected";
|
|
case Error::BINDINGS_BINARY_VALUE_EXPECTED:
|
|
return "BINDINGS: binary value expected";
|
|
case Error::BINDINGS_DICTIONARY_VALUE_EXPECTED:
|
|
return "BINDINGS: dictionary value expected";
|
|
}
|
|
// Some compilers can't figure out that we can't get here.
|
|
return "INVALID ERROR CODE";
|
|
}
|
|
|
|
std::string Status::ToASCIIString() const {
|
|
if (ok())
|
|
return "OK";
|
|
return Message() + " at position " + std::to_string(pos);
|
|
}
|
|
} // namespace v8_crdtp
|