| Flutter Linux Embedder |

Macros | Enumerations | Functions
fl_json_message_codec.h File Reference
`#include <gmodule.h>`
`#include "fl_message_codec.h"`

Go to the source code of this file.

## Macros
#define | FL_JSON_MESSAGE_CODEC_ERROR fl_json_message_codec_error_quark()

## Enumerations
enum | FlJsonMessageCodecError { FL_JSON_MESSAGE_CODEC_ERROR_INVALID_UTF8 , FL_JSON_MESSAGE_CODEC_ERROR_INVALID_JSON , FL_JSON_MESSAGE_CODEC_ERROR_INVALID_OBJECT_KEY_TYPE }

## Functions
G_MODULE_EXPORT GQuark | fl_json_message_codec_error_quark (void) G_GNUC_CONST
G_MODULE_EXPORT | G_DECLARE_FINAL_TYPE (FlJsonMessageCodec, fl_json_message_codec, FL, JSON_CODEC, FlMessageCodec) FlJsonMessageCodec *fl_json_message_codec_new()
gchar * | fl_json_message_codec_encode (FlJsonMessageCodec *codec, FlValue *value, GError **error)
FlValue * | fl_json_message_codec_decode (FlJsonMessageCodec *codec, const gchar *text, GError **error)

## Macro Definition Documentation

## ◆ FL_JSON_MESSAGE_CODEC_ERROR

#define FL_JSON_MESSAGE_CODEC_ERROR fl_json_message_codec_error_quark()

FlJsonMessageCodecError: @FL_JSON_MESSAGE_CODEC_ERROR_INVALID_UTF8: Message is not valid UTF-8. @FL_JSON_MESSAGE_CODEC_ERROR_INVALID_JSON: Message is not valid JSON. @FL_JSON_MESSAGE_CODEC_ERROR_INVALID_OBJECT_KEY_TYPE: Invalid object key type.

Errors for #FlJsonMessageCodec objects to set on failures.

Definition at line 27 of file fl_json_message_codec.h.

## Enumeration Type Documentation

## ◆ FlJsonMessageCodecError

enum FlJsonMessageCodecError

Enumerator
FL_JSON_MESSAGE_CODEC_ERROR_INVALID_UTF8 |
FL_JSON_MESSAGE_CODEC_ERROR_INVALID_JSON |
FL_JSON_MESSAGE_CODEC_ERROR_INVALID_OBJECT_KEY_TYPE |

Definition at line 29 of file fl_json_message_codec.h.

29 {
30 FL_JSON_MESSAGE_CODEC_ERROR_INVALID_UTF8,
31 FL_JSON_MESSAGE_CODEC_ERROR_INVALID_JSON,
32 FL_JSON_MESSAGE_CODEC_ERROR_INVALID_OBJECT_KEY_TYPE,
33 } FlJsonMessageCodecError;
FlJsonMessageCodecError
FlJsonMessageCodecError
Definition: fl_json_message_codec.h:29
FL_JSON_MESSAGE_CODEC_ERROR_INVALID_OBJECT_KEY_TYPE
@ FL_JSON_MESSAGE_CODEC_ERROR_INVALID_OBJECT_KEY_TYPE
Definition: fl_json_message_codec.h:32
FL_JSON_MESSAGE_CODEC_ERROR_INVALID_UTF8
@ FL_JSON_MESSAGE_CODEC_ERROR_INVALID_UTF8
Definition: fl_json_message_codec.h:30
FL_JSON_MESSAGE_CODEC_ERROR_INVALID_JSON
@ FL_JSON_MESSAGE_CODEC_ERROR_INVALID_JSON
Definition: fl_json_message_codec.h:31

## Function Documentation

## ◆ fl_json_message_codec_decode()

FlValue* fl_json_message_codec_decode | ( | FlJsonMessageCodec * | codec,
|  | const gchar * | text,
|  | GError ** | error
| ) |  |

fl_json_message_codec_decode: @codec: an #FlJsonMessageCodec. @text: UTF-8 text in JSON format. @error: (allow-none): #GError location to store the error occurring, or NULL. If `error` is not NULL, `*error` must be initialized (typically NULL, but an error from a previous call using GLib error handling is explicitly valid).

Decodes a value from a JSON string.

Returns: an FlValue or NULL on error.

Definition at line 326 of file fl_json_message_codec.cc.

328 {
329 g_return_val_if_fail(FL_IS_JSON_CODEC(codec), nullptr);
330
331 g_autoptr(GBytes) data = g_bytes_new_static(text, strlen(text));
332 g_autoptr(FlValue) value = fl_json_message_codec_decode_message(
333 FL_MESSAGE_CODEC(codec), data, error);
334 if (value == nullptr) {
335 return nullptr;
336 }
337
338 return fl_value_ref(value);
339 }
g_autoptr
g_autoptr(FlEngine) engine
fl_json_message_codec_decode_message
static FlValue * fl_json_message_codec_decode_message(FlMessageCodec *codec, GBytes *message, GError **error)
Definition: fl_json_message_codec.cc:258
error
const uint8_t uint32_t uint32_t GError ** error
Definition: fl_pixel_buffer_texture_test.cc:40
value
uint8_t value
Definition: fl_standard_message_codec.cc:36
fl_value_ref
G_MODULE_EXPORT FlValue * fl_value_ref(FlValue *self)
Definition: fl_value.cc:394
FlValue
typedefG_BEGIN_DECLS struct _FlValue FlValue
Definition: fl_value.h:42

References error, fl_json_message_codec_decode_message(), fl_value_ref(), g_autoptr(), and value.

Referenced by decode_error_message(), decode_message(), and TEST().

## ◆ fl_json_message_codec_encode()

gchar* fl_json_message_codec_encode | ( | FlJsonMessageCodec * | codec,
|  | FlValue * | value,
|  | GError ** | error
| ) |  |

fl_json_message_codec_encode: @codec: an #FlJsonMessageCodec. @value: value to encode. @error: (allow-none): #GError location to store the error occurring, or NULL. If `error` is not NULL, `*error` must be initialized (typically NULL, but an error from a previous call using GLib error handling is explicitly valid).

Encodes a value to a JSON string.

Returns: a JSON representation of this value or NULL on error.

Definition at line 311 of file fl_json_message_codec.cc.

313 {
314 g_return_val_if_fail(FL_IS_JSON_CODEC(codec), nullptr);
315
316 rapidjson::StringBuffer buffer;
317 rapidjson::Writer<rapidjson::StringBuffer> writer(buffer);
318
319 if (!write_value(writer, value, error)) {
320 return nullptr;
321 }
322
323 return g_strdup(buffer.GetString());
324 }
buffer
static const uint8_t buffer[]
Definition: fl_pixel_buffer_texture_test.cc:44

References buffer, error, and value.

Referenced by encode_error_message(), encode_message(), and TEST().

## ◆ fl_json_message_codec_error_quark()

G_MODULE_EXPORT GQuark fl_json_message_codec_error_quark | ( | void |  | ) |

## ◆ G_DECLARE_FINAL_TYPE()

G_MODULE_EXPORT G_DECLARE_FINAL_TYPE | ( | FlJsonMessageCodec | ,
|  | fl_json_message_codec | ,
|  | FL | ,
|  | JSON_CODEC | ,
|  | FlMessageCodec |
| ) |  |

FlJsonMessageCodec:

#FlJsonMessageCodec is an #FlMessageCodec that implements the encodes FlValue to/from JSON. This codec encodes and decodes FlValue of type FL_VALUE_TYPE_NULL, FL_VALUE_TYPE_BOOL, FL_VALUE_TYPE_INT, FL_VALUE_TYPE_FLOAT, FL_VALUE_TYPE_STRING, FL_VALUE_TYPE_UINT8_LIST, FL_VALUE_TYPE_INT32_LIST, FL_VALUE_TYPE_INT64_LIST, FL_VALUE_TYPE_FLOAT_LIST, FL_VALUE_TYPE_LIST, and FL_VALUE_TYPE_MAP.

#FlJsonMessageCodec matches the JSONMessageCodec class in the Flutter services library. fl_json_message_codec_new:

Creates an #FlJsonMessageCodec.

Returns: a new #FlJsonMessageCodec.