| // Copyright 2019 The Fuchsia Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #ifndef SRC_LIB_FIDL_CODEC_WIRE_PARSER_H_ |
| #define SRC_LIB_FIDL_CODEC_WIRE_PARSER_H_ |
| |
| #include <lib/fidl/cpp/message.h> |
| |
| #include <cstdint> |
| |
| #include "src/lib/fidl_codec/library_loader.h" |
| #include "src/lib/fidl_codec/wire_types.h" |
| |
| namespace fidl_codec { |
| |
| // Given a wire-formatted |message| and a schema for that message represented by |
| // |method|, populates |decoded_object| with an object representing that |
| // request. |
| // |
| // Returns false if it cannot decode the message using the metadata associated |
| // with the method. |
| // If it cannot decode the message, |error_stream| will contain one or more errors which |
| // have been thrown during the decoding. Each error starts with the absolute offset in the |
| // buffer (where the error occured) and ends with a new line. |
| bool DecodeRequest(const InterfaceMethod* method, const uint8_t* bytes, uint32_t num_bytes, |
| const zx_handle_disposition_t* handles, uint32_t num_handles, |
| std::unique_ptr<StructValue>* decoded_object, |
| std::ostream& error_stream); |
| |
| // Given a wire-formatted |message| and a schema for that message represented by |
| // |method|, populates |decoded_object| with an object representing that |
| // response. |
| // |
| // Returns false if it cannot decode the message using the metadata associated |
| // with the method. |
| // If it cannot decode the message, |error_stream| will contain one or more errors which |
| // have been thrown during the decoding. Each error starts with the absolute offset in the |
| // buffer (where the error occured) and ends with a new line. |
| bool DecodeResponse(const InterfaceMethod* method, const uint8_t* bytes, uint32_t num_bytes, |
| const zx_handle_disposition_t* handles, uint32_t num_handles, |
| std::unique_ptr<StructValue>* decoded_object, |
| std::ostream& error_stream); |
| |
| } // namespace fidl_codec |
| |
| #endif // SRC_LIB_FIDL_CODEC_WIRE_PARSER_H_ |