| Flutter Linux Embedder |

fl_method_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_METHOD_CODEC_H_
6 #define FLUTTER_SHELL_PLATFORM_LINUX_PUBLIC_FLUTTER_LINUX_FL_METHOD_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_method_response.h"
16 #include "fl_value.h"
17
18 G_BEGIN_DECLS
19
20 G_MODULE_EXPORT
21 G_DECLARE_DERIVABLE_TYPE(FlMethodCodec,
22 fl_method_codec,
23 FL,
24 METHOD_CODEC,
25 GObject)
26
27 /**
28 * FlMethodCodec:
29 *
30 * #FlMethodCodec is an abstract class that encodes and decodes method calls on
31 * a platform channel. Override this class to implement an encoding.
32 *
33 * #FlMethodCodec matches the MethodCodec class in the Flutter services
34 * library.
35 */
36
37 struct _FlMethodCodecClass {
38 GObjectClass parent_class;
39
40 /**
41 * FlMethodCodec::encode_method_call:
42 * @codec: an #FlMethodCodec.
43 * @name: method name.
44 * @args: (allow-none): method arguments, or %NULL.
45 * @error: (allow-none): #GError location to store the error occurring, or
46 * %NULL.
47 *
48 * Encodes a method call.
49 *
50 * Returns: (transfer full): a binary encoding of this method call or %NULL if
51 * not able to encode.
52 */
53 GBytes* (*encode_method_call)(FlMethodCodec* codec,
54 const gchar* name,
55 FlValue* args,
56 GError** error);
57
58 /**
59 * FlMethodCodec::decode_method_call:
60 * @codec: an #FlMethodCodec
61 * @message: message to decode.
62 * @name: (transfer full): location to write method name or %NULL if not
63 * required
64 * @args: (transfer full): location to write method arguments, or %NULL if not
65 * required
66 * @error: (allow-none): #GError location to store the error occurring, or
67 * %NULL
68 *
69 * Decodes a method call.
70 *
71 * Returns: %TRUE if successfully decoded.
72 */
73 gboolean (*decode_method_call)(FlMethodCodec* codec,
74 GBytes* message,
75 gchar** name,
76 FlValue** args,
77 GError** error);
78
79 /**
80 * FlMethodCodec::encode_success_envelope:
81 * @codec: an #FlMethodCodec.
82 * @result: (allow-none): method result, or %NULL.
83 * @error: (allow-none): #GError location to store the error occurring, or
84 * %NULL.
85 *
86 * Encodes a successful response to a method call.
87 *
88 * Returns: (transfer full): a binary encoding of this response or %NULL if
89 * not able to encode.
90 */
91 GBytes* (*encode_success_envelope)(FlMethodCodec* codec,
92 FlValue* result,
93 GError** error);
94
95 /**
96 * FlMethodCodec::encode_error_envelope:
97 * @codec: an #FlMethodCodec.
98 * @code: an error code.
99 * @message: (allow-none): an error message, or %NULL.
100 * @details: (allow-none): error details, or %NULL.
101 * @error: (allow-none): #GError location to store the error occurring, or
102 * %NULL.
103 *
104 * Encodes an error response to a method call.
105 *
106 * Returns: (transfer full): a binary encoding of this response or %NULL if
107 * not able to encode.
108 */
109 GBytes* (*encode_error_envelope)(FlMethodCodec* codec,
110 const gchar* code,
111 const gchar* message,
112 FlValue* details,
113 GError** error);
114
115 /**
116 * FlMethodCodec::decode_response:
117 * @codec: an #FlMethodCodec.
118 * @message: message to decode.
119 * @error: (allow-none): #GError location to store the error occurring, or
120 * %NULL.
121 *
122 * Decodes a response to a method call.
123 *
124 * Returns: a new #FlMethodResponse or %NULL on error.
125 */
126 FlMethodResponse* (*decode_response)(FlMethodCodec* codec,
127 GBytes* message,
128 GError** error);
129 };
130
131 G_END_DECLS
132
133 #endif // FLUTTER_SHELL_PLATFORM_LINUX_PUBLIC_FLUTTER_LINUX_FL_METHOD_CODEC_H_
G_DECLARE_DERIVABLE_TYPE
G_BEGIN_DECLS G_DECLARE_DERIVABLE_TYPE(FlAccessibleNode, fl_accessible_node, FL, ACCESSIBLE_NODE, AtkObject)
FL
FL
Definition: fl_binary_messenger.cc:27
args
G_BEGIN_DECLS G_MODULE_EXPORT FlValue * args
Definition: fl_event_channel.h:89
decode_method_call
static void decode_method_call(const char *text, gchar **name, FlValue **args)
Definition: fl_json_method_codec_test.cc:66
fl_method_response.h
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