Flutter Engine
The Flutter Engine
fl_message_codec.h
Go to the documentation of this file.
1// Copyright 2013 The Flutter Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#ifndef FLUTTER_SHELL_PLATFORM_LINUX_PUBLIC_FLUTTER_LINUX_FL_MESSAGE_CODEC_H_
6#define FLUTTER_SHELL_PLATFORM_LINUX_PUBLIC_FLUTTER_LINUX_FL_MESSAGE_CODEC_H_
7
8#if !defined(__FLUTTER_LINUX_INSIDE__) && !defined(FLUTTER_LINUX_COMPILATION)
9#error "Only <flutter_linux/flutter_linux.h> can be included directly."
10#endif
11
12#include <glib-object.h>
13#include <gmodule.h>
14
15#include "fl_value.h"
16
17G_BEGIN_DECLS
18
19/**
20 * FlMessageCodecError:
21 * @FL_MESSAGE_CODEC_ERROR_FAILED: Codec failed due to an unspecified error.
22 * @FL_MESSAGE_CODEC_ERROR_OUT_OF_DATA: Codec ran out of data reading a value.
23 * @FL_MESSAGE_CODEC_ERROR_ADDITIONAL_DATA: Additional data encountered in
24 * message.
25 * @FL_MESSAGE_CODEC_ERROR_UNSUPPORTED_TYPE: Codec encountered an unsupported
26 * #FlValue.
27 *
28 * Errors for #FlMessageCodec objects to set on failures.
29 */
30#define FL_MESSAGE_CODEC_ERROR fl_message_codec_error_quark()
31
32typedef enum {
33 // NOLINTBEGIN(readability-identifier-naming)
38 // NOLINTEND(readability-identifier-naming)
40
41G_MODULE_EXPORT
42GQuark fl_message_codec_error_quark(void) G_GNUC_CONST;
43
44G_MODULE_EXPORT
46 fl_message_codec,
47 FL,
48 MESSAGE_CODEC,
49 GObject)
50
51/**
52 * FlMessageCodec:
53 *
54 * #FlMessageCodec is a message encoding/decoding mechanism that operates on
55 * #FlValue objects. Both operations returns errors if the conversion fails.
56 * Such situations should be treated as programming errors.
57 *
58 * #FlMessageCodec matches the MethodCodec class in the Flutter services
59 * library.
60 */
61
62struct _FlMessageCodecClass {
63 GObjectClass parent_class;
64
65 /**
66 * FlMessageCodec::encode_message:
67 * @codec: an #FlMessageCodec.
68 * @message: message to encode or %NULL to encode the null value.
69 * @error: (allow-none): #GError location to store the error occurring, or
70 * %NULL.
71 *
72 * Virtual method to encode a message. A subclass must implement this method.
73 * If the subclass cannot handle the type of @message then it must generate a
74 * FL_MESSAGE_CODEC_ERROR_UNSUPPORTED_TYPE error.
75 *
76 * Returns: a binary message or %NULL on error.
77 */
78 GBytes* (*encode_message)(FlMessageCodec* codec,
80 GError** error);
81
82 /**
83 * FlMessageCodec::decode_message:
84 * @codec: an #FlMessageCodec.
85 * @message: binary message to decode.
86 * @error: (allow-none): #GError location to store the error occurring, or
87 * %NULL.
88 *
89 * Virtual method to decode a message. A subclass must implement this method.
90 * If @message is too small then a #FL_MESSAGE_CODEC_ERROR_OUT_OF_DATA error
91 * must be generated. If @message is too large then a
92 * #FL_MESSAGE_CODEC_ERROR_ADDITIONAL_DATA error must be generated.
93 *
94 * Returns: an #FlValue or %NULL on error.
95 */
96 FlValue* (*decode_message)(FlMessageCodec* codec,
97 GBytes* message,
98 GError** error);
99};
100
101/**
102 * fl_message_codec_encode_message:
103 * @codec: an #FlMessageCodec.
104 * @buffer: buffer to write to.
105 * @message: message to encode or %NULL to encode the null value.
106 * @error: (allow-none): #GError location to store the error occurring, or
107 * %NULL.
108 *
109 * Encodes a message into a binary representation.
110 *
111 * Returns: a binary encoded message or %NULL on error.
112 */
113GBytes* fl_message_codec_encode_message(FlMessageCodec* codec,
115 GError** error);
116
117/**
118 * fl_message_codec_decode_message:
119 * @codec: an #FlMessageCodec.
120 * @message: binary message to decode.
121 * @error: (allow-none): #GError location to store the error occurring, or
122 * %NULL.
123 *
124 * Decodes a message from a binary encoding.
125 *
126 * Returns: an #FlValue or %NULL on error.
127 */
128FlValue* fl_message_codec_decode_message(FlMessageCodec* codec,
129 GBytes* message,
130 GError** error);
131
132G_END_DECLS
133
134#endif // FLUTTER_SHELL_PLATFORM_LINUX_PUBLIC_FLUTTER_LINUX_FL_MESSAGE_CODEC_H_
FlMessageCodecError
@ FL_MESSAGE_CODEC_ERROR_OUT_OF_DATA
@ FL_MESSAGE_CODEC_ERROR_UNSUPPORTED_TYPE
@ FL_MESSAGE_CODEC_ERROR_FAILED
@ FL_MESSAGE_CODEC_ERROR_ADDITIONAL_DATA
FlValue * fl_message_codec_decode_message(FlMessageCodec *codec, GBytes *message, GError **error)
GBytes * fl_message_codec_encode_message(FlMessageCodec *codec, FlValue *message, GError **error)
G_MODULE_EXPORT G_DECLARE_DERIVABLE_TYPE(FlMessageCodec, fl_message_codec, FL, MESSAGE_CODEC, GObject) struct _FlMessageCodecClass
G_MODULE_EXPORT GQuark fl_message_codec_error_quark(void) G_GNUC_CONST
const uint8_t uint32_t uint32_t GError ** error
typedefG_BEGIN_DECLS struct _FlValue FlValue
Definition: fl_value.h:42
Win32Message message