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  // NOLINTBEGIN(readability-identifier-naming)
38  // NOLINTEND(readability-identifier-naming)
40 
41 G_MODULE_EXPORT
42 GQuark fl_message_codec_error_quark(void) G_GNUC_CONST;
43 
44 G_MODULE_EXPORT
45 G_DECLARE_DERIVABLE_TYPE(FlMessageCodec,
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 
62 struct _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,
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.
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  */
113 GBytes* fl_message_codec_encode_message(FlMessageCodec* codec,
114  FlValue* message,
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  */
128 FlValue* fl_message_codec_decode_message(FlMessageCodec* codec,
129  GBytes* message,
130  GError** error);
131 
132 G_END_DECLS
133 
134 #endif // FLUTTER_SHELL_PLATFORM_LINUX_PUBLIC_FLUTTER_LINUX_FL_MESSAGE_CODEC_H_
FlMessageCodecError
FlMessageCodecError
Definition: fl_message_codec.h:32
FlValue
typedefG_BEGIN_DECLS struct _FlValue FlValue
Definition: fl_value.h:42
FL_MESSAGE_CODEC_ERROR_ADDITIONAL_DATA
@ FL_MESSAGE_CODEC_ERROR_ADDITIONAL_DATA
Definition: fl_message_codec.h:36
fl_message_codec_error_quark
G_MODULE_EXPORT GQuark fl_message_codec_error_quark(void) G_GNUC_CONST
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:45
FL_MESSAGE_CODEC_ERROR_FAILED
@ FL_MESSAGE_CODEC_ERROR_FAILED
Definition: fl_message_codec.h:34
FL
FL
Definition: fl_binary_messenger.cc:27
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_OUT_OF_DATA
@ FL_MESSAGE_CODEC_ERROR_OUT_OF_DATA
Definition: fl_message_codec.h:35
fl_value.h
error
const uint8_t uint32_t uint32_t GError ** error
Definition: fl_pixel_buffer_texture_test.cc:40
FL_MESSAGE_CODEC_ERROR_UNSUPPORTED_TYPE
@ FL_MESSAGE_CODEC_ERROR_UNSUPPORTED_TYPE
Definition: fl_message_codec.h:37
fl_message_codec_decode_message
FlValue * fl_message_codec_decode_message(FlMessageCodec *codec, GBytes *message, GError **error)
Definition: fl_message_codec.cc:33