Flutter Linux Embedder
fl_method_response.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_RESPONSE_H_
6 #define FLUTTER_SHELL_PLATFORM_LINUX_PUBLIC_FLUTTER_LINUX_FL_METHOD_RESPONSE_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  * FlMethodResponseError:
21  * @FL_METHOD_RESPONSE_ERROR_FAILED: Call failed due to an unspecified error.
22  * @FL_METHOD_RESPONSE_ERROR_REMOTE_ERROR: An error was returned by the other
23  * side of the channel.
24  * @FL_METHOD_RESPONSE_ERROR_NOT_IMPLEMENTED: The requested method is not
25  * implemented.
26  *
27  * Errors set by `fl_method_response_get_result` when the method call response
28  * is not #FlMethodSuccessResponse.
29  */
30 #define FL_METHOD_RESPONSE_ERROR fl_method_response_error_quark()
31 
32 typedef enum {
37 
38 G_MODULE_EXPORT
39 GQuark fl_method_response_error_quark(void) G_GNUC_CONST;
40 
41 G_MODULE_EXPORT
42 G_DECLARE_DERIVABLE_TYPE(FlMethodResponse,
43  fl_method_response,
44  FL,
45  METHOD_RESPONSE,
46  GObject)
47 
48 struct _FlMethodResponseClass {
49  GObjectClass parent_class;
50 };
51 
52 G_MODULE_EXPORT
53 G_DECLARE_FINAL_TYPE(FlMethodSuccessResponse,
54  fl_method_success_response,
55  FL,
56  METHOD_SUCCESS_RESPONSE,
57  FlMethodResponse)
58 
59 G_MODULE_EXPORT
60 G_DECLARE_FINAL_TYPE(FlMethodErrorResponse,
62  FL,
64  FlMethodResponse)
65 
66 G_MODULE_EXPORT
67 G_DECLARE_FINAL_TYPE(FlMethodNotImplementedResponse,
69  FL,
70  METHOD_NOT_IMPLEMENTED_RESPONSE,
71  FlMethodResponse)
72 
73 /**
74  * FlMethodResponse:
75  *
76  * #FlMethodResponse contains the information returned when an #FlMethodChannel
77  * method call returns. If you expect the method call to be successful use
78  * fl_method_response_get_result(). If you want to handle error cases then you
79  * should use code like:
80  *
81  * |[<!-- language="C" -->
82  * if (FL_IS_METHOD_SUCCESS_RESPONSE (response)) {
83  * FlValue *result =
84  * fl_method_success_response_get_result(
85  * FL_METHOD_SUCCESS_RESPONSE (response));
86  * handle_result (result);
87  * } else if (FL_IS_METHOD_ERROR_RESPONSE (response)) {
88  * FlMethodErrorResponse *error_response =
89  * FL_METHOD_ERROR_RESPONSE (response);
90  * handle_error (fl_method_error_response_get_code (error_response),
91  * fl_method_error_response_get_message (error_response),
92  * fl_method_error_response_get_details (error_response));
93  * }
94  * else if (FL_IS_METHOD_NOT_IMPLEMENTED_RESPONSE (response)) {
95  * handle_not_implemented ();
96  * }
97  * }
98  * ]|
99  */
100 
101 /**
102  * FlMethodSuccessResponse:
103  *
104  * #FlMethodSuccessResponse is the #FlMethodResponse returned when a method call
105  * has successfully completed. The result of the method call is obtained using
106  * `fl_method_success_response_get_result`.
107  */
108 
109 /**
110  * FlMethodErrorResponse:
111  *
112  * #FlMethodErrorResponse is the #FlMethodResponse returned when a method call
113  * results in an error. The error details are obtained using
114  * `fl_method_error_response_get_code`, `fl_method_error_response_get_message`
115  * and `fl_method_error_response_get_details`.
116  */
117 
118 /**
119  * FlMethodNotImplementedResponse:
120  *
121  * #FlMethodNotImplementedResponse is the #FlMethodResponse returned when a
122  * method call is not implemented.
123  */
124 
125 /**
126  * fl_method_response_get_result:
127  * @response: an #FlMethodResponse.
128  * @error: (allow-none): #GError location to store the error occurring, or %NULL
129  * to ignore. If `error` is not %NULL, `*error` must be initialized (typically
130  * %NULL, but an error from a previous call using GLib error handling is
131  * explicitly valid).
132  *
133  * Gets the result of a method call, or an error if the response wasn't
134  * successful.
135  *
136  * Returns: an #FlValue or %NULL on error.
137  */
138 FlValue* fl_method_response_get_result(FlMethodResponse* response,
139  GError** error);
140 
141 /**
142  * fl_method_success_response_new:
143  * @result: (allow-none): the #FlValue returned by the method call or %NULL.
144  *
145  * Creates a response to a method call when that method has successfully
146  * completed.
147  *
148  * Returns: a new #FlMethodResponse.
149  */
150 FlMethodSuccessResponse* fl_method_success_response_new(FlValue* result);
151 
152 /**
153  * fl_method_success_response_get_result:
154  * @response: an #FlMethodSuccessResponse.
155  *
156  * Gets the result of the method call.
157  *
158  * Returns: an #FlValue.
159  */
161  FlMethodSuccessResponse* response);
162 
163 /**
164  * fl_method_error_response_new:
165  * @result: an #FlValue.
166  * @code: an error code.
167  * @message: (allow-none): an error message.
168  * @details: (allow-none): error details.
169  *
170  * Creates a response to a method call when that method has returned an error.
171  *
172  * Returns: a new #FlMethodErrorResponse.
173  */
174 FlMethodErrorResponse* fl_method_error_response_new(const gchar* code,
175  const gchar* message,
176  FlValue* details);
177 
178 /**
179  * fl_method_error_response_get_code:
180  * @response: an #FlMethodErrorResponse.
181  *
182  * Gets the error code reported.
183  *
184  * Returns: an error code.
185  */
186 const gchar* fl_method_error_response_get_code(FlMethodErrorResponse* response);
187 
188 /**
189  * fl_method_error_response_get_message:
190  * @response: an #FlMethodErrorResponse.
191  *
192  * Gets the error message reported.
193  *
194  * Returns: an error message or %NULL if no error message provided.
195  */
197  FlMethodErrorResponse* response);
198 
199 /**
200  * fl_method_error_response_get_details:
201  * @response: an #FlMethodErrorResponse.
202  *
203  * Gets the details provided with this error.
204  *
205  * Returns: an #FlValue or %NULL if no details provided.
206  */
207 FlValue* fl_method_error_response_get_details(FlMethodErrorResponse* response);
208 
209 /**
210  * fl_method_not_implemented_response_new:
211  *
212  * Creates a response to a method call when that method does not exist.
213  *
214  * Returns: a new #FlMethodNotImplementedResponse.
215  */
216 FlMethodNotImplementedResponse* fl_method_not_implemented_response_new();
217 
218 G_END_DECLS
219 
220 #endif // FLUTTER_SHELL_PLATFORM_LINUX_PUBLIC_FLUTTER_LINUX_FL_METHOD_RESPONSE_H_
const char * message
fl_method_not_implemented_response
G_MODULE_EXPORT FlMethodErrorResponse * fl_method_error_response_new(const gchar *code, const gchar *message, FlValue *details)
G_MODULE_EXPORT const gchar * fl_method_error_response_get_code(FlMethodErrorResponse *self)
G_MODULE_EXPORT const gchar * fl_method_error_response_get_message(FlMethodErrorResponse *self)
G_MODULE_EXPORT FlValue * fl_method_response_get_result(FlMethodResponse *self, GError **error)
G_MODULE_EXPORT FlMethodNotImplementedResponse * fl_method_not_implemented_response_new()
G_MODULE_EXPORT FlValue * fl_method_error_response_get_details(FlMethodErrorResponse *self)
G_MODULE_EXPORT FL
G_MODULE_EXPORT FlMethodResponse G_MODULE_EXPORT GError ** error
G_MODULE_EXPORT G_DECLARE_FINAL_TYPE(FlMethodSuccessResponse, fl_method_success_response, FL, METHOD_SUCCESS_RESPONSE, FlMethodResponse) G_MODULE_EXPORT G_DECLARE_FINAL_TYPE(FlMethodErrorResponse
FlMethodResponseError
@ FL_METHOD_RESPONSE_ERROR_NOT_IMPLEMENTED
@ FL_METHOD_RESPONSE_ERROR_FAILED
@ FL_METHOD_RESPONSE_ERROR_REMOTE_ERROR
G_MODULE_EXPORT GQuark fl_method_response_error_quark(void) G_GNUC_CONST
G_MODULE_EXPORT fl_method_error_response
G_MODULE_EXPORT METHOD_ERROR_RESPONSE
G_MODULE_EXPORT G_DECLARE_DERIVABLE_TYPE(FlMethodResponse, fl_method_response, FL, METHOD_RESPONSE, GObject) struct _FlMethodResponseClass
FlValue * fl_method_success_response_get_result(FlMethodSuccessResponse *response)
FlMethodSuccessResponse * fl_method_success_response_new(FlValue *result)
typedefG_BEGIN_DECLS struct _FlValue FlValue
Definition: fl_value.h:42