| Flutter Linux Embedder |

Functions
fl_standard_message_codec.h File Reference
`#include <gmodule.h>`
`#include "fl_message_codec.h"`

Go to the source code of this file.

## Functions
G_BEGIN_DECLS G_MODULE_EXPORT | G_DECLARE_DERIVABLE_TYPE (FlStandardMessageCodec, fl_standard_message_codec, FL, STANDARD_MESSAGE_CODEC, FlMessageCodec) struct _FlStandardMessageCodecClass
FlStandardMessageCodec * | fl_standard_message_codec_new ()
void | fl_standard_message_codec_write_size (FlStandardMessageCodec *codec, GByteArray *buffer, uint32_t size)
gboolean | fl_standard_message_codec_read_size (FlStandardMessageCodec *codec, GBytes *buffer, size_t *offset, uint32_t *value, GError **error)
gboolean | fl_standard_message_codec_write_value (FlStandardMessageCodec *codec, GByteArray *buffer, FlValue *value, GError **error)
FlValue * | fl_standard_message_codec_read_value (FlStandardMessageCodec *codec, GBytes *buffer, size_t *offset, GError **error)

## Function Documentation

## ◆ fl_standard_message_codec_new()

FlStandardMessageCodec* fl_standard_message_codec_new | ( |  | ) |

Definition at line 637 of file fl_standard_message_codec.cc.

637 {
638 return static_cast<FlStandardMessageCodec*>(
639 g_object_new(fl_standard_message_codec_get_type(), nullptr));
640 }

Referenced by decode_error_value(), decode_message(), decode_semantic_data(), encode_message(), fl_accessibility_channel_new(), fl_accessible_text_field_perform_action(), fl_standard_method_codec_new(), perform_set_selection_action(), perform_set_text_action(), and TEST().

## ◆ fl_standard_message_codec_read_size()

gboolean fl_standard_message_codec_read_size | ( | FlStandardMessageCodec * | codec,
|  | GBytes * | buffer,
|  | size_t * | offset,
|  | uint32_t * | value,
|  | GError ** | error
| ) |  |

fl_standard_message_codec_read_size: @codec: an #FlStandardMessageCodec. @buffer: buffer to read from. @offset: (inout): read position in @buffer. @value: location to read size. @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).

Reads a size field in Flutter Standard encoding.

This method is intended for use by subclasses overriding FlStandardMessageCodec::read_value_of_type.

Returns: TRUE on success.

Definition at line 658 of file fl_standard_message_codec.cc.

662 {
663 uint8_t value8;
664 if (!read_uint8(buffer, offset, &value8, error)) {
665 return FALSE;
666 }
667
668 if (value8 == 255) {
669 if (!read_uint32(buffer, offset, value, error)) {
670 return FALSE;
671 }
672 } else if (value8 == 254) {
673 uint16_t value16;
674 if (!read_uint16(buffer, offset, &value16, error)) {
675 return FALSE;
676 }
677 *value = value16;
678 } else {
679 *value = value8;
680 }
681
682 return TRUE;
683 }
TRUE
return TRUE
Definition: fl_compositor_software.cc:68
buffer
static const uint8_t buffer[]
Definition: fl_pixel_buffer_texture_test.cc:44
error
const uint8_t uint32_t uint32_t GError ** error
Definition: fl_pixel_buffer_texture_test.cc:40
read_uint32
static gboolean read_uint32(GBytes *buffer, size_t *offset, uint32_t *value, GError **error)
Definition: fl_standard_message_codec.cc:141
value
uint8_t value
Definition: fl_standard_message_codec.cc:36
read_uint16
static gboolean read_uint16(GBytes *buffer, size_t *offset, uint16_t *value, GError **error)
Definition: fl_standard_message_codec.cc:126
read_uint8
static gboolean read_uint8(GBytes *buffer, size_t *offset, uint8_t *value, GError **error)
Definition: fl_standard_message_codec.cc:111

References buffer, error, read_uint16(), read_uint32(), read_uint8(), TRUE, and value.

Referenced by read_custom_value(), read_custom_value1(), read_float32_list_value(), read_float64_list_value(), read_int32_list_value(), read_int64_list_value(), read_list_value(), read_map_value(), read_string_value(), and read_uint8_list_value().

## ◆ fl_standard_message_codec_read_value()

FlValue* fl_standard_message_codec_read_value | ( | FlStandardMessageCodec * | codec,
|  | GBytes * | buffer,
|  | size_t * | offset,
|  | GError ** | error
| ) |  |

fl_standard_message_codec_read_value: @codec: an #FlStandardMessageCodec. @buffer: buffer to read from. @offset: (inout): read position in @buffer. @value: location to read size. @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).

Reads an FlValue in Flutter Standard encoding.

This method is intended for use by subclasses overriding FlStandardMessageCodec::read_value_of_type.

Returns: a new FlValue or NULL on error.

Definition at line 694 of file fl_standard_message_codec.cc.

698 {
699 uint8_t type;
700 if (!read_uint8(buffer, offset, &type, error)) {
701 return nullptr;
702 }
703
704 return FL_STANDARD_MESSAGE_CODEC_GET_CLASS(self)->read_value_of_type(
705 self, buffer, offset, type, error);
706 }
type
uint8_t type
Definition: fl_standard_message_codec_test.cc:1117

References buffer, error, read_uint8(), and type.

Referenced by fl_standard_message_codec_decode_message(), fl_standard_method_codec_decode_method_call(), fl_standard_method_codec_decode_response(), read_list_value(), and read_map_value().

## ◆ fl_standard_message_codec_write_size()

void fl_standard_message_codec_write_size | ( | FlStandardMessageCodec * | codec,
|  | GByteArray * | buffer,
|  | uint32_t | size
| ) |  |

fl_standard_message_codec_write_size: @codec: an #FlStandardMessageCodec. @buffer: buffer to write into. @size: size value to write.

Writes a size field in Flutter Standard encoding.

Definition at line 642 of file fl_standard_message_codec.cc.

645 {
646 if (size < 254) {
647 write_uint8(buffer, size);
648 } else if (size <= 0xffff) {
649 write_uint8(buffer, 254);
650 write_uint16(buffer, size);
651 } else {
652 write_uint8(buffer, 255);
653 write_uint32(buffer, size);
654 }
655 }
write_uint32
static void write_uint32(GByteArray *buffer, uint32_t value)
Definition: fl_standard_message_codec.cc:45
write_uint16
static void write_uint16(GByteArray *buffer, uint16_t value)
Definition: fl_standard_message_codec.cc:40

References buffer, write_uint16(), and write_uint32().

Referenced by fl_standard_message_codec_real_write_value().

## ◆ fl_standard_message_codec_write_value()

gboolean fl_standard_message_codec_write_value | ( | FlStandardMessageCodec * | codec,
|  | GByteArray * | buffer,
|  | FlValue * | value,
|  | GError ** | error
| ) |  |

fl_standard_message_codec_write_value: @codec: an #FlStandardMessageCodec. @buffer: buffer to write into. @value: (allow-none): value to write. @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).

Writes an FlValue in Flutter Standard encoding.

This method is intended for use by subclasses overriding FlStandardMessageCodec::write_value.

Returns: TRUE on success.

Definition at line 686 of file fl_standard_message_codec.cc.

689 {
690 return FL_STANDARD_MESSAGE_CODEC_GET_CLASS(self)->write_value(self, buffer,
691 value, error);
692 }

References buffer, error, and value.

Referenced by fl_standard_message_codec_encode_message(), fl_standard_message_codec_real_write_value(), fl_standard_method_codec_encode_error_envelope(), fl_standard_method_codec_encode_method_call(), and fl_standard_method_codec_encode_success_envelope().

## ◆ G_DECLARE_DERIVABLE_TYPE()

G_BEGIN_DECLS G_MODULE_EXPORT G_DECLARE_DERIVABLE_TYPE | ( | FlStandardMessageCodec | ,
|  | fl_standard_message_codec | ,
|  | FL | ,
|  | STANDARD_MESSAGE_CODEC | ,
|  | FlMessageCodec |
| ) |  |

FlStandardMessageCodec:

#FlStandardMessageCodec is an #FlMessageCodec that implements the Flutter standard message encoding. 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.

If other values types are required to be supported create a new subclass that overrides write_value and read_value_of_type.

#FlStandardMessageCodec matches the StandardCodec class in the Flutter services library.

FlStandardMessageCodec::write_value: @codec: an #FlStandardMessageCodec. @buffer: a buffer to write into. @value: (allow-none): value to write. @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).

Virtual method to write an FlValue in Flutter Standard encoding.

If a codec needs to support custom FlValue objects it must override this method to encode those values. For non-custom values the parent method should be called.

Returns: TRUE on success.

FlStandardMessageCodec::read_value_of_type: @codec: an #FlStandardMessageCodec. @buffer: buffer to read from. @offset: (inout): read position in @buffer. @type: the type of the value. @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).

Virtual method to read an FlValue in Flutter Standard encoding.

If a codec needs to support custom FlValue objects it must override this method to decode those values. For non-custom values the parent method should be called.

Returns: an FlValue or NULL on error.

Definition at line 19 of file fl_standard_message_codec.h.

42 {
43 FlMessageCodecClass parent_class;
44
45 /**
46 * FlStandardMessageCodec::write_value:
47 * @codec: an #FlStandardMessageCodec.
48 * @buffer: a buffer to write into.
49 * @value: (allow-none): value to write.
50 * @error: (allow-none): #GError location to store the error occurring, or
51 * %NULL. If `error` is not %NULL, `*error` must be initialized (typically
52 * %NULL, but an error from a previous call using GLib error handling is
53 * explicitly valid).
54 *
55 * Virtual method to write an #FlValue in Flutter Standard encoding.
56 *
57 * If a codec needs to support custom #FlValue objects it must override this
58 * method to encode those values. For non-custom values the parent method
59 * should be called.
60 *
61 * Returns: %TRUE on success.
62 */
63 gboolean (*write_value)(FlStandardMessageCodec* codec,
64 GByteArray* buffer,
65 FlValue* value,
66 GError** error);
67
68 /**
69 * FlStandardMessageCodec::read_value_of_type:
70 * @codec: an #FlStandardMessageCodec.
71 * @buffer: buffer to read from.
72 * @offset: (inout): read position in @buffer.
73 * @type: the type of the value.
74 * @error: (allow-none): #GError location to store the error occurring, or
75 * %NULL. If `error` is not %NULL, `*error` must be initialized (typically
76 * %NULL, but an error from a previous call using GLib error handling is
77 * explicitly valid).
78 *
79 * Virtual method to read an #FlValue in Flutter Standard encoding.
80 *
81 * If a codec needs to support custom #FlValue objects it must override this
82 * method to decode those values. For non-custom values the parent method
83 * should be called.
84 *
85 * Returns: an #FlValue or %NULL on error.
86 */
87 FlValue* (*read_value_of_type)(FlStandardMessageCodec* codec,
88 GBytes* buffer,
89 size_t* offset,
90 int type,
91 GError** error);
92 };
FlValue
typedefG_BEGIN_DECLS struct _FlValue FlValue
Definition: fl_value.h:42

References buffer, error, type, and value.