| Flutter Linux Embedder |

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
17 G_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
32 typedef enum {
33 FL_MESSAGE_CODEC_ERROR_FAILED,
34 FL_MESSAGE_CODEC_ERROR_OUT_OF_DATA,
35 FL_MESSAGE_CODEC_ERROR_ADDITIONAL_DATA,
36 FL_MESSAGE_CODEC_ERROR_UNSUPPORTED_TYPE,
37 } FlMessageCodecError;
38
39 G_MODULE_EXPORT
40 GQuark fl_message_codec_error_quark(void) G_GNUC_CONST;
41
42 G_MODULE_EXPORT
43 G_DECLARE_DERIVABLE_TYPE(FlMessageCodec,
44 fl_message_codec,
45 FL,
46 MESSAGE_CODEC,
47 GObject)
48
49 /**
50 * FlMessageCodec:
51 *
52 * #FlMessageCodec is a message encoding/decoding mechanism that operates on
53 * #FlValue objects. Both operations returns errors if the conversion fails.
54 * Such situations should be treated as programming errors.
55 *
56 * #FlMessageCodec matches the MethodCodec class in the Flutter services
57 * library.
58 */
59
60 struct _FlMessageCodecClass {
61 GObjectClass parent_class;
62
63 /**
64 * FlMessageCodec::encode_message:
65 * @codec: an #FlMessageCodec.
66 * @message: message to encode or %NULL to encode the null value.
67 * @error: (allow-none): #GError location to store the error occurring, or
68 * %NULL. If `error` is not %NULL, `*error` must be initialized (typically
69 * %NULL, but an error from a previous call using GLib error handling is
70 * explicitly valid).
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,
79 FlValue* message,
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. If `error` is not %NULL, `*error` must be initialized (typically
88 * %NULL, but an error from a previous call using GLib error handling is
89 * explicitly valid).
90 *
91 * Virtual method to decode a message. A subclass must implement this method.
92 * If @message is too small then a #FL_MESSAGE_CODEC_ERROR_OUT_OF_DATA error
93 * must be generated. If @message is too large then a
94 * #FL_MESSAGE_CODEC_ERROR_ADDITIONAL_DATA error must be generated.
95 *
96 * Returns: an #FlValue or %NULL on error.
97 */
98 FlValue* (*decode_message)(FlMessageCodec* codec,
99 GBytes* message,
100 GError** error);
101 };
102
103 /**
104 * fl_message_codec_encode_message:
105 * @codec: an #FlMessageCodec.
106 * @buffer: buffer to write to.
107 * @message: message to encode or %NULL to encode the null value.
108 * @error: (allow-none): #GError location to store the error occurring, or
109 * %NULL. If `error` is not %NULL, `*error` must be initialized (typically
110 * %NULL, but an error from a previous call using GLib error handling is
111 * explicitly valid).
112 *
113 * Encodes a message into a binary representation.
114 *
115 * Returns: a binary encoded message or %NULL on error.
116 */
117 GBytes* fl_message_codec_encode_message(FlMessageCodec* codec,
118 FlValue* message,
119 GError** error);
120
121 /**
122 * fl_message_codec_decode_message:
123 * @codec: an #FlMessageCodec.
124 * @message: binary message to decode.
125 * @error: (allow-none): #GError location to store the error occurring, or
126 * %NULL. If `error` is not %NULL, `*error` must be initialized (typically
127 * %NULL, but an error from a previous call using GLib error handling is
128 * explicitly valid).
129 *
130 * Decodes a message from a binary encoding.
131 *
132 * Returns: an #FlValue or %NULL on error.
133 */
134 FlValue* fl_message_codec_decode_message(FlMessageCodec* codec,
135 GBytes* message,
136 GError** error);
137
138 G_END_DECLS
139
140 #endif // FLUTTER_SHELL_PLATFORM_LINUX_PUBLIC_FLUTTER_LINUX_FL_MESSAGE_CODEC_H_
FL
FL
Definition: fl_binary_messenger.cc:27
FlMessageCodecError
FlMessageCodecError
Definition: fl_message_codec.h:32
FL_MESSAGE_CODEC_ERROR_OUT_OF_DATA
@ FL_MESSAGE_CODEC_ERROR_OUT_OF_DATA
Definition: fl_message_codec.h:34
FL_MESSAGE_CODEC_ERROR_UNSUPPORTED_TYPE
@ FL_MESSAGE_CODEC_ERROR_UNSUPPORTED_TYPE
Definition: fl_message_codec.h:36
FL_MESSAGE_CODEC_ERROR_FAILED
@ FL_MESSAGE_CODEC_ERROR_FAILED
Definition: fl_message_codec.h:33
FL_MESSAGE_CODEC_ERROR_ADDITIONAL_DATA
@ FL_MESSAGE_CODEC_ERROR_ADDITIONAL_DATA
Definition: fl_message_codec.h:35
fl_message_codec_decode_message
FlValue * fl_message_codec_decode_message(FlMessageCodec *codec, GBytes *message, GError **error)
Definition: fl_message_codec.cc:33
G_DECLARE_DERIVABLE_TYPE
G_MODULE_EXPORT G_DECLARE_DERIVABLE_TYPE(FlMessageCodec, fl_message_codec, FL, MESSAGE_CODEC, GObject) struct _FlMessageCodecClass
Definition: fl_message_codec.h:43
fl_message_codec_encode_message
GBytes * fl_message_codec_encode_message(FlMessageCodec *codec, FlValue *message, GError **error)
Definition: fl_message_codec.cc:17
fl_message_codec_error_quark
G_MODULE_EXPORT GQuark fl_message_codec_error_quark(void) G_GNUC_CONST
error
const uint8_t uint32_t uint32_t GError ** error
Definition: fl_pixel_buffer_texture_test.cc:40
fl_value.h
FlValue
typedefG_BEGIN_DECLS struct _FlValue FlValue
Definition: fl_value.h:42