Flutter Engine Uber Docs
Docs for the entire Flutter Engine repo.
 
Loading...
Searching...
No Matches
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
18G_BEGIN_DECLS
19
20G_MODULE_EXPORT
21G_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
37struct _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. If `error` is not %NULL, `*error` must be initialized (typically
47 * %NULL, but an error from a previous call using GLib error handling is
48 * explicitly valid).
49 *
50 * Encodes a method call.
51 *
52 * Returns: (transfer full): a binary encoding of this method call or %NULL if
53 * not able to encode.
54 */
55 GBytes* (*encode_method_call)(FlMethodCodec* codec,
56 const gchar* name,
58 GError** error);
59
60 /**
61 * FlMethodCodec::decode_method_call:
62 * @codec: an #FlMethodCodec
63 * @message: message to decode.
64 * @name: (transfer full): location to write method name or %NULL if not
65 * required
66 * @args: (transfer full): location to write method arguments, or %NULL if not
67 * required
68 * @error: (allow-none): #GError location to store the error occurring, or
69 * %NULL. If `error` is not %NULL, `*error` must be initialized (typically
70 * %NULL, but an error from a previous call using GLib error handling is
71 * explicitly valid).
72 *
73 * Decodes a method call.
74 *
75 * Returns: %TRUE if successfully decoded.
76 */
77 gboolean (*decode_method_call)(FlMethodCodec* codec,
78 GBytes* message,
79 gchar** name,
80 FlValue** args,
81 GError** error);
82
83 /**
84 * FlMethodCodec::encode_success_envelope:
85 * @codec: an #FlMethodCodec.
86 * @result: (allow-none): method result, or %NULL.
87 * @error: (allow-none): #GError location to store the error occurring, or
88 * %NULL. If `error` is not %NULL, `*error` must be initialized (typically
89 * %NULL, but an error from a previous call using GLib error handling is
90 * explicitly valid).
91 *
92 * Encodes a successful response to a method call.
93 *
94 * Returns: (transfer full): a binary encoding of this response or %NULL if
95 * not able to encode.
96 */
97 GBytes* (*encode_success_envelope)(FlMethodCodec* codec,
98 FlValue* result,
99 GError** error);
100
101 /**
102 * FlMethodCodec::encode_error_envelope:
103 * @codec: an #FlMethodCodec.
104 * @code: an error code.
105 * @message: (allow-none): an error message, or %NULL.
106 * @details: (allow-none): error details, or %NULL.
107 * @error: (allow-none): #GError location to store the error occurring, or
108 * %NULL. If `error` is not %NULL, `*error` must be initialized (typically
109 * %NULL, but an error from a previous call using GLib error handling is
110 * explicitly valid).
111 *
112 * Encodes an error response to a method call.
113 *
114 * Returns: (transfer full): a binary encoding of this response or %NULL if
115 * not able to encode.
116 */
117 GBytes* (*encode_error_envelope)(FlMethodCodec* codec,
118 const gchar* code,
119 const gchar* message,
120 FlValue* details,
121 GError** error);
122
123 /**
124 * FlMethodCodec::decode_response:
125 * @codec: an #FlMethodCodec.
126 * @message: message to decode.
127 * @error: (allow-none): #GError location to store the error occurring, or
128 * %NULL. If `error` is not %NULL, `*error` must be initialized (typically
129 * %NULL, but an error from a previous call using GLib error handling is
130 * explicitly valid).
131 *
132 * Decodes a response to a method call.
133 *
134 * Returns: a new #FlMethodResponse or %NULL on error.
135 */
136 FlMethodResponse* (*decode_response)(FlMethodCodec* codec,
137 GBytes* message,
138 GError** error);
139};
140
141G_END_DECLS
142
143#endif // FLUTTER_SHELL_PLATFORM_LINUX_PUBLIC_FLUTTER_LINUX_FL_METHOD_CODEC_H_
G_BEGIN_DECLS G_DECLARE_DERIVABLE_TYPE(FlAccessibleNode, fl_accessible_node, FL, ACCESSIBLE_NODE, AtkObject)
G_BEGIN_DECLS G_MODULE_EXPORT FlValue * args
static void decode_method_call(const char *text, gchar **name, FlValue **args)
G_BEGIN_DECLS GBytes * message
const uint8_t uint32_t uint32_t GError ** error
typedefG_BEGIN_DECLS struct _FlValue FlValue
Definition fl_value.h:42
const char * name
Definition fuchsia.cc:49