Flutter Engine
The Flutter Engine
Loading...
Searching...
No Matches
Classes | Functions | Variables
fl_standard_message_codec.cc File Reference
#include "flutter/shell/platform/linux/public/flutter_linux/fl_standard_message_codec.h"
#include "flutter/shell/platform/linux/fl_standard_message_codec_private.h"
#include <gmodule.h>
#include <cstring>

Go to the source code of this file.

Classes

struct  _FlStandardMessageCodec
 

Functions

 G_DEFINE_TYPE (FlStandardMessageCodec, fl_standard_message_codec, fl_message_codec_get_type()) static void write_uint8(GByteArray *buffer
 
static void write_uint16 (GByteArray *buffer, uint16_t value)
 
static void write_uint32 (GByteArray *buffer, uint32_t value)
 
static void write_int32 (GByteArray *buffer, int32_t value)
 
static void write_int64 (GByteArray *buffer, int64_t value)
 
static void write_float64 (GByteArray *buffer, double value)
 
static void write_align (GByteArray *buffer, guint align)
 
static gboolean check_size (GBytes *buffer, size_t offset, size_t required, GError **error)
 
static gboolean read_align (GBytes *buffer, size_t *offset, size_t align, GError **error)
 
static const uint8_t * get_data (GBytes *buffer, size_t *offset)
 
static gboolean read_uint8 (GBytes *buffer, size_t *offset, uint8_t *value, GError **error)
 
static gboolean read_uint16 (GBytes *buffer, size_t *offset, uint16_t *value, GError **error)
 
static gboolean read_uint32 (GBytes *buffer, size_t *offset, uint32_t *value, GError **error)
 
static FlValueread_int32_value (GBytes *buffer, size_t *offset, GError **error)
 
static FlValueread_int64_value (GBytes *buffer, size_t *offset, GError **error)
 
static FlValueread_float64_value (GBytes *buffer, size_t *offset, GError **error)
 
static FlValueread_string_value (FlStandardMessageCodec *self, GBytes *buffer, size_t *offset, GError **error)
 
static FlValueread_uint8_list_value (FlStandardMessageCodec *self, GBytes *buffer, size_t *offset, GError **error)
 
static FlValueread_int32_list_value (FlStandardMessageCodec *self, GBytes *buffer, size_t *offset, GError **error)
 
static FlValueread_int64_list_value (FlStandardMessageCodec *self, GBytes *buffer, size_t *offset, GError **error)
 
static FlValueread_float32_list_value (FlStandardMessageCodec *self, GBytes *buffer, size_t *offset, GError **error)
 
static FlValueread_float64_list_value (FlStandardMessageCodec *self, GBytes *buffer, size_t *offset, GError **error)
 
static FlValueread_list_value (FlStandardMessageCodec *self, GBytes *buffer, size_t *offset, GError **error)
 
static FlValueread_map_value (FlStandardMessageCodec *self, GBytes *buffer, size_t *offset, GError **error)
 
static GBytes * fl_standard_message_codec_encode_message (FlMessageCodec *codec, FlValue *message, GError **error)
 
static FlValuefl_standard_message_codec_decode_message (FlMessageCodec *codec, GBytes *message, GError **error)
 
static void fl_standard_message_codec_class_init (FlStandardMessageCodecClass *klass)
 
static void fl_standard_message_codec_init (FlStandardMessageCodec *self)
 
G_MODULE_EXPORT 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 *self, GByteArray *buffer, FlValue *value, GError **error)
 
FlValuefl_standard_message_codec_read_value (FlStandardMessageCodec *self, GBytes *buffer, size_t *offset, GError **error)
 

Variables

static constexpr int kValueNull = 0
 
static constexpr int kValueTrue = 1
 
static constexpr int kValueFalse = 2
 
static constexpr int kValueInt32 = 3
 
static constexpr int kValueInt64 = 4
 
static constexpr int kValueFloat64 = 6
 
static constexpr int kValueString = 7
 
static constexpr int kValueUint8List = 8
 
static constexpr int kValueInt32List = 9
 
static constexpr int kValueInt64List = 10
 
static constexpr int kValueFloat64List = 11
 
static constexpr int kValueList = 12
 
static constexpr int kValueMap = 13
 
static constexpr int kValueFloat32List = 14
 
uint8_t value
 

Function Documentation

◆ check_size()

static gboolean check_size ( GBytes *  buffer,
size_t  offset,
size_t  required,
GError **  error 
)
static

Definition at line 78 of file fl_standard_message_codec.cc.

81 {
82 if (offset + required > g_bytes_get_size(buffer)) {
83 g_set_error(error, FL_MESSAGE_CODEC_ERROR,
84 FL_MESSAGE_CODEC_ERROR_OUT_OF_DATA, "Unexpected end of data");
85 return FALSE;
86 }
87 return TRUE;
88}
static SkRect offset(SkRect r, SkIPoint p)
Definition: editor.cpp:18
@ FL_MESSAGE_CODEC_ERROR_OUT_OF_DATA
#define FL_MESSAGE_CODEC_ERROR
static const uint8_t buffer[]
const uint8_t uint32_t uint32_t GError ** error
return FALSE

◆ fl_standard_message_codec_class_init()

static void fl_standard_message_codec_class_init ( FlStandardMessageCodecClass *  klass)
static

Definition at line 448 of file fl_standard_message_codec.cc.

449 {
450 FL_MESSAGE_CODEC_CLASS(klass)->encode_message =
452 FL_MESSAGE_CODEC_CLASS(klass)->decode_message =
454}
static FlValue * fl_standard_message_codec_decode_message(FlMessageCodec *codec, GBytes *message, GError **error)
static GBytes * fl_standard_message_codec_encode_message(FlMessageCodec *codec, FlValue *message, GError **error)

◆ fl_standard_message_codec_decode_message()

static FlValue * fl_standard_message_codec_decode_message ( FlMessageCodec *  codec,
GBytes *  message,
GError **  error 
)
static

Definition at line 420 of file fl_standard_message_codec.cc.

422 {
423 if (g_bytes_get_size(message) == 0) {
424 return fl_value_new_null();
425 }
426
427 FlStandardMessageCodec* self =
428 reinterpret_cast<FlStandardMessageCodec*>(codec);
429
430 size_t offset = 0;
431 g_autoptr(FlValue) value =
433 if (value == nullptr) {
434 return nullptr;
435 }
436
437 if (offset != g_bytes_get_size(message)) {
438 g_set_error(error, FL_MESSAGE_CODEC_ERROR,
440 "Unused %zi bytes after standard message",
441 g_bytes_get_size(message) - offset);
442 return nullptr;
443 }
444
445 return fl_value_ref(value);
446}
@ FL_MESSAGE_CODEC_ERROR_ADDITIONAL_DATA
uint8_t value
FlValue * fl_standard_message_codec_read_value(FlStandardMessageCodec *self, GBytes *buffer, size_t *offset, GError **error)
G_MODULE_EXPORT FlValue * fl_value_ref(FlValue *self)
Definition: fl_value.cc:363
G_MODULE_EXPORT FlValue * fl_value_new_null()
Definition: fl_value.cc:240
typedefG_BEGIN_DECLS struct _FlValue FlValue
Definition: fl_value.h:40
Win32Message message

◆ fl_standard_message_codec_encode_message()

static GBytes * fl_standard_message_codec_encode_message ( FlMessageCodec *  codec,
FlValue message,
GError **  error 
)
static

Definition at line 405 of file fl_standard_message_codec.cc.

407 {
408 FlStandardMessageCodec* self =
409 reinterpret_cast<FlStandardMessageCodec*>(codec);
410
411 g_autoptr(GByteArray) buffer = g_byte_array_new();
413 return nullptr;
414 }
415 return g_byte_array_free_to_bytes(
416 static_cast<GByteArray*>(g_steal_pointer(&buffer)));
417}
gboolean fl_standard_message_codec_write_value(FlStandardMessageCodec *self, GByteArray *buffer, FlValue *value, GError **error)

◆ fl_standard_message_codec_init()

static void fl_standard_message_codec_init ( FlStandardMessageCodec *  self)
static

Definition at line 456 of file fl_standard_message_codec.cc.

456{}

◆ fl_standard_message_codec_new()

G_MODULE_EXPORT FlStandardMessageCodec * fl_standard_message_codec_new ( )

Definition at line 458 of file fl_standard_message_codec.cc.

458 {
459 return static_cast<FlStandardMessageCodec*>(
460 g_object_new(fl_standard_message_codec_get_type(), nullptr));
461}

◆ 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.

Reads a size field in Flutter Standard encoding.

Returns: TRUE on success.

Definition at line 477 of file fl_standard_message_codec.cc.

481 {
482 uint8_t value8;
483 if (!read_uint8(buffer, offset, &value8, error)) {
484 return FALSE;
485 }
486
487 if (value8 == 255) {
489 return FALSE;
490 }
491 } else if (value8 == 254) {
492 uint16_t value16;
493 if (!read_uint16(buffer, offset, &value16, error)) {
494 return FALSE;
495 }
496 *value = value16;
497 } else {
498 *value = value8;
499 }
500
501 return TRUE;
502}
static gboolean read_uint32(GBytes *buffer, size_t *offset, uint32_t *value, GError **error)
static gboolean read_uint16(GBytes *buffer, size_t *offset, uint16_t *value, GError **error)
static gboolean read_uint8(GBytes *buffer, size_t *offset, uint8_t *value, GError **error)

◆ 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.

Reads an FlValue in Flutter Standard encoding.

Returns: a new FlValue or NULL on error.

Definition at line 633 of file fl_standard_message_codec.cc.

636 {
637 uint8_t type;
638 if (!read_uint8(buffer, offset, &type, error)) {
639 return nullptr;
640 }
641
642 g_autoptr(FlValue) value = nullptr;
643 if (type == kValueNull) {
644 return fl_value_new_null();
645 } else if (type == kValueTrue) {
646 return fl_value_new_bool(TRUE);
647 } else if (type == kValueFalse) {
648 return fl_value_new_bool(FALSE);
649 } else if (type == kValueInt32) {
651 } else if (type == kValueInt64) {
653 } else if (type == kValueFloat64) {
655 } else if (type == kValueString) {
657 } else if (type == kValueUint8List) {
659 } else if (type == kValueInt32List) {
661 } else if (type == kValueInt64List) {
663 } else if (type == kValueFloat32List) {
665 } else if (type == kValueFloat64List) {
667 } else if (type == kValueList) {
669 } else if (type == kValueMap) {
671 } else {
672 g_set_error(error, FL_MESSAGE_CODEC_ERROR,
674 "Unexpected standard codec type %02x", type);
675 return nullptr;
676 }
677
678 return value == nullptr ? nullptr : fl_value_ref(value);
679}
@ FL_MESSAGE_CODEC_ERROR_UNSUPPORTED_TYPE
static FlValue * read_int64_list_value(FlStandardMessageCodec *self, GBytes *buffer, size_t *offset, GError **error)
static FlValue * read_int32_value(GBytes *buffer, size_t *offset, GError **error)
static constexpr int kValueNull
static constexpr int kValueString
static FlValue * read_float64_value(GBytes *buffer, size_t *offset, GError **error)
static constexpr int kValueTrue
static FlValue * read_float32_list_value(FlStandardMessageCodec *self, GBytes *buffer, size_t *offset, GError **error)
static constexpr int kValueInt64List
static FlValue * read_int64_value(GBytes *buffer, size_t *offset, GError **error)
static constexpr int kValueFloat64List
static constexpr int kValueFloat32List
static constexpr int kValueUint8List
static constexpr int kValueInt32
static constexpr int kValueList
static constexpr int kValueFloat64
static constexpr int kValueMap
static FlValue * read_string_value(FlStandardMessageCodec *self, GBytes *buffer, size_t *offset, GError **error)
static constexpr int kValueInt32List
static FlValue * read_uint8_list_value(FlStandardMessageCodec *self, GBytes *buffer, size_t *offset, GError **error)
static FlValue * read_float64_list_value(FlStandardMessageCodec *self, GBytes *buffer, size_t *offset, GError **error)
static constexpr int kValueInt64
static FlValue * read_map_value(FlStandardMessageCodec *self, GBytes *buffer, size_t *offset, GError **error)
static constexpr int kValueFalse
static FlValue * read_list_value(FlStandardMessageCodec *self, GBytes *buffer, size_t *offset, GError **error)
static FlValue * read_int32_list_value(FlStandardMessageCodec *self, GBytes *buffer, size_t *offset, GError **error)
G_MODULE_EXPORT FlValue * fl_value_new_bool(bool value)
Definition: fl_value.cc:244
enum flutter::testing::@2643::KeyboardChange::Type type

◆ 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 463 of file fl_standard_message_codec.cc.

465 {
466 if (size < 254) {
467 write_uint8(buffer, size);
468 } else if (size <= 0xffff) {
469 write_uint8(buffer, 254);
470 write_uint16(buffer, size);
471 } else {
472 write_uint8(buffer, 255);
473 write_uint32(buffer, size);
474 }
475}
static void write_uint32(GByteArray *buffer, uint32_t value)
static void write_uint16(GByteArray *buffer, uint16_t 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.

Writes an FlValue in Flutter Standard encoding.

Returns: TRUE on success.

Definition at line 504 of file fl_standard_message_codec.cc.

507 {
508 if (value == nullptr) {
509 write_uint8(buffer, kValueNull);
510 return TRUE;
511 }
512
513 switch (fl_value_get_type(value)) {
515 write_uint8(buffer, kValueNull);
516 return TRUE;
519 write_uint8(buffer, kValueTrue);
520 } else {
521 write_uint8(buffer, kValueFalse);
522 }
523 return TRUE;
524 case FL_VALUE_TYPE_INT: {
525 int64_t v = fl_value_get_int(value);
526 if (v >= INT32_MIN && v <= INT32_MAX) {
527 write_uint8(buffer, kValueInt32);
529 } else {
530 write_uint8(buffer, kValueInt64);
532 }
533 return TRUE;
534 }
536 write_uint8(buffer, kValueFloat64);
539 return TRUE;
541 write_uint8(buffer, kValueString);
542 const char* text = fl_value_get_string(value);
543 size_t length = strlen(text);
545 g_byte_array_append(buffer, reinterpret_cast<const uint8_t*>(text),
546 length);
547 return TRUE;
548 }
550 write_uint8(buffer, kValueUint8List);
553 g_byte_array_append(buffer, fl_value_get_uint8_list(value),
554 sizeof(uint8_t) * length);
555 return TRUE;
556 }
558 write_uint8(buffer, kValueInt32List);
562 g_byte_array_append(
563 buffer,
564 reinterpret_cast<const uint8_t*>(fl_value_get_int32_list(value)),
565 sizeof(int32_t) * length);
566 return TRUE;
567 }
569 write_uint8(buffer, kValueInt64List);
573 g_byte_array_append(
574 buffer,
575 reinterpret_cast<const uint8_t*>(fl_value_get_int64_list(value)),
576 sizeof(int64_t) * length);
577 return TRUE;
578 }
580 write_uint8(buffer, kValueFloat32List);
584 g_byte_array_append(
585 buffer,
586 reinterpret_cast<const uint8_t*>(fl_value_get_float32_list(value)),
587 sizeof(float) * length);
588 return TRUE;
589 }
591 write_uint8(buffer, kValueFloat64List);
595 g_byte_array_append(
596 buffer,
597 reinterpret_cast<const uint8_t*>(fl_value_get_float_list(value)),
598 sizeof(double) * length);
599 return TRUE;
600 }
602 write_uint8(buffer, kValueList);
605 for (size_t i = 0; i < fl_value_get_length(value); i++) {
608 return FALSE;
609 }
610 }
611 return TRUE;
613 write_uint8(buffer, kValueMap);
616 for (size_t i = 0; i < fl_value_get_length(value); i++) {
621 return FALSE;
622 }
623 }
624 return TRUE;
625 }
626
627 g_set_error(error, FL_MESSAGE_CODEC_ERROR,
629 "Unexpected FlValue type %d", fl_value_get_type(value));
630 return FALSE;
631}
static void write_align(GByteArray *buffer, guint align)
void fl_standard_message_codec_write_size(FlStandardMessageCodec *codec, GByteArray *buffer, uint32_t size)
static void write_int64(GByteArray *buffer, int64_t value)
static void write_float64(GByteArray *buffer, double value)
static void write_int32(GByteArray *buffer, int32_t value)
G_MODULE_EXPORT const double * fl_value_get_float_list(FlValue *self)
Definition: fl_value.cc:677
G_MODULE_EXPORT int64_t fl_value_get_int(FlValue *self)
Definition: fl_value.cc:628
G_MODULE_EXPORT FlValueType fl_value_get_type(FlValue *self)
Definition: fl_value.cc:428
G_MODULE_EXPORT FlValue * fl_value_get_map_key(FlValue *self, size_t index)
Definition: fl_value.cc:743
G_MODULE_EXPORT const gchar * fl_value_get_string(FlValue *self)
Definition: fl_value.cc:642
G_MODULE_EXPORT const uint8_t * fl_value_get_uint8_list(FlValue *self)
Definition: fl_value.cc:649
G_MODULE_EXPORT FlValue * fl_value_get_list_value(FlValue *self, size_t index)
Definition: fl_value.cc:735
G_MODULE_EXPORT bool fl_value_get_bool(FlValue *self)
Definition: fl_value.cc:621
G_MODULE_EXPORT const float * fl_value_get_float32_list(FlValue *self)
Definition: fl_value.cc:670
G_MODULE_EXPORT FlValue * fl_value_get_map_value(FlValue *self, size_t index)
Definition: fl_value.cc:751
G_MODULE_EXPORT double fl_value_get_float(FlValue *self)
Definition: fl_value.cc:635
G_MODULE_EXPORT size_t fl_value_get_length(FlValue *self)
Definition: fl_value.cc:684
G_MODULE_EXPORT const int32_t * fl_value_get_int32_list(FlValue *self)
Definition: fl_value.cc:656
G_MODULE_EXPORT const int64_t * fl_value_get_int64_list(FlValue *self)
Definition: fl_value.cc:663
@ FL_VALUE_TYPE_STRING
Definition: fl_value.h:64
@ FL_VALUE_TYPE_NULL
Definition: fl_value.h:60
@ FL_VALUE_TYPE_INT
Definition: fl_value.h:62
@ FL_VALUE_TYPE_BOOL
Definition: fl_value.h:61
@ FL_VALUE_TYPE_FLOAT32_LIST
Definition: fl_value.h:71
@ FL_VALUE_TYPE_INT32_LIST
Definition: fl_value.h:66
@ FL_VALUE_TYPE_UINT8_LIST
Definition: fl_value.h:65
@ FL_VALUE_TYPE_LIST
Definition: fl_value.h:69
@ FL_VALUE_TYPE_MAP
Definition: fl_value.h:70
@ FL_VALUE_TYPE_INT64_LIST
Definition: fl_value.h:67
@ FL_VALUE_TYPE_FLOAT_LIST
Definition: fl_value.h:68
@ FL_VALUE_TYPE_FLOAT
Definition: fl_value.h:63
size_t length
std::u16string text

◆ G_DEFINE_TYPE()

G_DEFINE_TYPE ( FlStandardMessageCodec  ,
fl_standard_message_codec  ,
fl_message_codec_get_type()   
)

◆ get_data()

static const uint8_t * get_data ( GBytes *  buffer,
size_t *  offset 
)
static

Definition at line 109 of file fl_standard_message_codec.cc.

109 {
110 return static_cast<const uint8_t*>(g_bytes_get_data(buffer, nullptr)) +
111 *offset;
112}

◆ read_align()

static gboolean read_align ( GBytes *  buffer,
size_t *  offset,
size_t  align,
GError **  error 
)
static

Definition at line 91 of file fl_standard_message_codec.cc.

94 {
95 if ((*offset) % align == 0) {
96 return TRUE;
97 }
98
99 size_t required = align - (*offset) % align;
100 if (!check_size(buffer, *offset, required, error)) {
101 return FALSE;
102 }
103
104 (*offset) += required;
105 return TRUE;
106}
static gboolean check_size(GBytes *buffer, size_t offset, size_t required, GError **error)

◆ read_float32_list_value()

static FlValue * read_float32_list_value ( FlStandardMessageCodec *  self,
GBytes *  buffer,
size_t *  offset,
GError **  error 
)
static

Definition at line 302 of file fl_standard_message_codec.cc.

305 {
306 uint32_t length;
308 error)) {
309 return nullptr;
310 }
311 if (!read_align(buffer, offset, 4, error)) {
312 return nullptr;
313 }
314 if (!check_size(buffer, *offset, sizeof(float) * length, error)) {
315 return nullptr;
316 }
318 reinterpret_cast<const float*>(get_data(buffer, offset)), length);
319 *offset += sizeof(float) * length;
320 return value;
321}
static gboolean read_align(GBytes *buffer, size_t *offset, size_t align, GError **error)
static const uint8_t * get_data(GBytes *buffer, size_t *offset)
gboolean fl_standard_message_codec_read_size(FlStandardMessageCodec *codec, GBytes *buffer, size_t *offset, uint32_t *value, GError **error)
G_MODULE_EXPORT FlValue * fl_value_new_float32_list(const float *data, size_t data_length)
Definition: fl_value.cc:318

◆ read_float64_list_value()

static FlValue * read_float64_list_value ( FlStandardMessageCodec *  self,
GBytes *  buffer,
size_t *  offset,
GError **  error 
)
static

Definition at line 326 of file fl_standard_message_codec.cc.

329 {
330 uint32_t length;
332 error)) {
333 return nullptr;
334 }
335 if (!read_align(buffer, offset, 8, error)) {
336 return nullptr;
337 }
338 if (!check_size(buffer, *offset, sizeof(double) * length, error)) {
339 return nullptr;
340 }
342 reinterpret_cast<const double*>(get_data(buffer, offset)), length);
343 *offset += sizeof(double) * length;
344 return value;
345}
G_MODULE_EXPORT FlValue * fl_value_new_float_list(const double *data, size_t data_length)
Definition: fl_value.cc:328

◆ read_float64_value()

static FlValue * read_float64_value ( GBytes *  buffer,
size_t *  offset,
GError **  error 
)
static

Definition at line 194 of file fl_standard_message_codec.cc.

196 {
197 if (!read_align(buffer, offset, 8, error)) {
198 return nullptr;
199 }
200 if (!check_size(buffer, *offset, sizeof(double), error)) {
201 return nullptr;
202 }
203
205 reinterpret_cast<const double*>(get_data(buffer, offset))[0]);
206 *offset += sizeof(double);
207 return value;
208}
G_MODULE_EXPORT FlValue * fl_value_new_float(double value)
Definition: fl_value.cc:258

◆ read_int32_list_value()

static FlValue * read_int32_list_value ( FlStandardMessageCodec *  self,
GBytes *  buffer,
size_t *  offset,
GError **  error 
)
static

Definition at line 254 of file fl_standard_message_codec.cc.

257 {
258 uint32_t length;
260 error)) {
261 return nullptr;
262 }
263 if (!read_align(buffer, offset, 4, error)) {
264 return nullptr;
265 }
266 if (!check_size(buffer, *offset, sizeof(int32_t) * length, error)) {
267 return nullptr;
268 }
270 reinterpret_cast<const int32_t*>(get_data(buffer, offset)), length);
271 *offset += sizeof(int32_t) * length;
272 return value;
273}
G_MODULE_EXPORT FlValue * fl_value_new_int32_list(const int32_t *data, size_t data_length)
Definition: fl_value.cc:298

◆ read_int32_value()

static FlValue * read_int32_value ( GBytes *  buffer,
size_t *  offset,
GError **  error 
)
static

Definition at line 162 of file fl_standard_message_codec.cc.

164 {
165 if (!check_size(buffer, *offset, sizeof(int32_t), error)) {
166 return nullptr;
167 }
168
170 reinterpret_cast<const int32_t*>(get_data(buffer, offset))[0]);
171 *offset += sizeof(int32_t);
172 return value;
173}
G_MODULE_EXPORT FlValue * fl_value_new_int(int64_t value)
Definition: fl_value.cc:251

◆ read_int64_list_value()

static FlValue * read_int64_list_value ( FlStandardMessageCodec *  self,
GBytes *  buffer,
size_t *  offset,
GError **  error 
)
static

Definition at line 278 of file fl_standard_message_codec.cc.

281 {
282 uint32_t length;
284 error)) {
285 return nullptr;
286 }
287 if (!read_align(buffer, offset, 8, error)) {
288 return nullptr;
289 }
290 if (!check_size(buffer, *offset, sizeof(int64_t) * length, error)) {
291 return nullptr;
292 }
294 reinterpret_cast<const int64_t*>(get_data(buffer, offset)), length);
295 *offset += sizeof(int64_t) * length;
296 return value;
297}
G_MODULE_EXPORT FlValue * fl_value_new_int64_list(const int64_t *data, size_t data_length)
Definition: fl_value.cc:308

◆ read_int64_value()

static FlValue * read_int64_value ( GBytes *  buffer,
size_t *  offset,
GError **  error 
)
static

Definition at line 178 of file fl_standard_message_codec.cc.

180 {
181 if (!check_size(buffer, *offset, sizeof(int64_t), error)) {
182 return nullptr;
183 }
184
186 reinterpret_cast<const int64_t*>(get_data(buffer, offset))[0]);
187 *offset += sizeof(int64_t);
188 return value;
189}

◆ read_list_value()

static FlValue * read_list_value ( FlStandardMessageCodec *  self,
GBytes *  buffer,
size_t *  offset,
GError **  error 
)
static

Definition at line 350 of file fl_standard_message_codec.cc.

353 {
354 uint32_t length;
356 error)) {
357 return nullptr;
358 }
359
360 g_autoptr(FlValue) list = fl_value_new_list();
361 for (size_t i = 0; i < length; i++) {
362 g_autoptr(FlValue) child =
364 if (child == nullptr) {
365 return nullptr;
366 }
367 fl_value_append(list, child);
368 }
369
370 return fl_value_ref(list);
371}
G_MODULE_EXPORT void fl_value_append(FlValue *self, FlValue *value)
Definition: fl_value.cc:552
G_MODULE_EXPORT FlValue * fl_value_new_list()
Definition: fl_value.cc:338

◆ read_map_value()

static FlValue * read_map_value ( FlStandardMessageCodec *  self,
GBytes *  buffer,
size_t *  offset,
GError **  error 
)
static

Definition at line 376 of file fl_standard_message_codec.cc.

379 {
380 uint32_t length;
382 error)) {
383 return nullptr;
384 }
385
386 g_autoptr(FlValue) map = fl_value_new_map();
387 for (size_t i = 0; i < length; i++) {
388 g_autoptr(FlValue) key =
390 if (key == nullptr) {
391 return nullptr;
392 }
393 g_autoptr(FlValue) value =
395 if (value == nullptr) {
396 return nullptr;
397 }
398 fl_value_set(map, key, value);
399 }
400
401 return fl_value_ref(map);
402}
G_MODULE_EXPORT FlValue * fl_value_new_map()
Definition: fl_value.cc:355
G_MODULE_EXPORT void fl_value_set(FlValue *self, FlValue *key, FlValue *value)
Definition: fl_value.cc:569
SI auto map(std::index_sequence< I... >, Fn &&fn, const Args &... args) -> skvx::Vec< sizeof...(I), decltype(fn(args[0]...))>
Definition: SkVx.h:633

◆ read_string_value()

static FlValue * read_string_value ( FlStandardMessageCodec *  self,
GBytes *  buffer,
size_t *  offset,
GError **  error 
)
static

Definition at line 213 of file fl_standard_message_codec.cc.

216 {
217 uint32_t length;
219 error)) {
220 return nullptr;
221 }
222 if (!check_size(buffer, *offset, length, error)) {
223 return nullptr;
224 }
226 reinterpret_cast<const gchar*>(get_data(buffer, offset)), length);
227 *offset += length;
228 return value;
229}
G_MODULE_EXPORT FlValue * fl_value_new_string_sized(const gchar *value, size_t value_length)
Definition: fl_value.cc:272

◆ read_uint16()

static gboolean read_uint16 ( GBytes *  buffer,
size_t *  offset,
uint16_t *  value,
GError **  error 
)
static

Definition at line 131 of file fl_standard_message_codec.cc.

134 {
135 if (!check_size(buffer, *offset, sizeof(uint16_t), error)) {
136 return FALSE;
137 }
138
139 *value = reinterpret_cast<const uint16_t*>(get_data(buffer, offset))[0];
140 *offset += sizeof(uint16_t);
141 return TRUE;
142}

◆ read_uint32()

static gboolean read_uint32 ( GBytes *  buffer,
size_t *  offset,
uint32_t *  value,
GError **  error 
)
static

Definition at line 146 of file fl_standard_message_codec.cc.

149 {
150 if (!check_size(buffer, *offset, sizeof(uint32_t), error)) {
151 return FALSE;
152 }
153
154 *value = reinterpret_cast<const uint32_t*>(get_data(buffer, offset))[0];
155 *offset += sizeof(uint32_t);
156 return TRUE;
157}

◆ read_uint8()

static gboolean read_uint8 ( GBytes *  buffer,
size_t *  offset,
uint8_t *  value,
GError **  error 
)
static

Definition at line 116 of file fl_standard_message_codec.cc.

119 {
120 if (!check_size(buffer, *offset, sizeof(uint8_t), error)) {
121 return FALSE;
122 }
123
124 *value = get_data(buffer, offset)[0];
125 (*offset)++;
126 return TRUE;
127}

◆ read_uint8_list_value()

static FlValue * read_uint8_list_value ( FlStandardMessageCodec *  self,
GBytes *  buffer,
size_t *  offset,
GError **  error 
)
static

Definition at line 234 of file fl_standard_message_codec.cc.

237 {
238 uint32_t length;
240 error)) {
241 return nullptr;
242 }
243 if (!check_size(buffer, *offset, sizeof(uint8_t) * length, error)) {
244 return nullptr;
245 }
247 *offset += length;
248 return value;
249}
G_MODULE_EXPORT FlValue * fl_value_new_uint8_list(const uint8_t *data, size_t data_length)
Definition: fl_value.cc:281

◆ write_align()

static void write_align ( GByteArray *  buffer,
guint  align 
)
static

Definition at line 71 of file fl_standard_message_codec.cc.

71 {
72 while (buffer->len % align != 0) {
73 write_uint8(buffer, 0);
74 }
75}

◆ write_float64()

static void write_float64 ( GByteArray *  buffer,
double  value 
)
static

Definition at line 65 of file fl_standard_message_codec.cc.

65 {
66 g_byte_array_append(buffer, reinterpret_cast<uint8_t*>(&value),
67 sizeof(double));
68}

◆ write_int32()

static void write_int32 ( GByteArray *  buffer,
int32_t  value 
)
static

Definition at line 55 of file fl_standard_message_codec.cc.

55 {
56 g_byte_array_append(buffer, reinterpret_cast<uint8_t*>(&value),
57 sizeof(int32_t));
58}

◆ write_int64()

static void write_int64 ( GByteArray *  buffer,
int64_t  value 
)
static

Definition at line 60 of file fl_standard_message_codec.cc.

60 {
61 g_byte_array_append(buffer, reinterpret_cast<uint8_t*>(&value),
62 sizeof(int64_t));
63}

◆ write_uint16()

static void write_uint16 ( GByteArray *  buffer,
uint16_t  value 
)
static

Definition at line 45 of file fl_standard_message_codec.cc.

45 {
46 g_byte_array_append(buffer, reinterpret_cast<uint8_t*>(&value),
47 sizeof(uint16_t));
48}

◆ write_uint32()

static void write_uint32 ( GByteArray *  buffer,
uint32_t  value 
)
static

Definition at line 50 of file fl_standard_message_codec.cc.

50 {
51 g_byte_array_append(buffer, reinterpret_cast<uint8_t*>(&value),
52 sizeof(uint32_t));
53}

Variable Documentation

◆ kValueFalse

constexpr int kValueFalse = 2
staticconstexpr

Definition at line 18 of file fl_standard_message_codec.cc.

◆ kValueFloat32List

constexpr int kValueFloat32List = 14
staticconstexpr

Definition at line 29 of file fl_standard_message_codec.cc.

◆ kValueFloat64

constexpr int kValueFloat64 = 6
staticconstexpr

Definition at line 21 of file fl_standard_message_codec.cc.

◆ kValueFloat64List

constexpr int kValueFloat64List = 11
staticconstexpr

Definition at line 26 of file fl_standard_message_codec.cc.

◆ kValueInt32

constexpr int kValueInt32 = 3
staticconstexpr

Definition at line 19 of file fl_standard_message_codec.cc.

◆ kValueInt32List

constexpr int kValueInt32List = 9
staticconstexpr

Definition at line 24 of file fl_standard_message_codec.cc.

◆ kValueInt64

constexpr int kValueInt64 = 4
staticconstexpr

Definition at line 20 of file fl_standard_message_codec.cc.

◆ kValueInt64List

constexpr int kValueInt64List = 10
staticconstexpr

Definition at line 25 of file fl_standard_message_codec.cc.

◆ kValueList

constexpr int kValueList = 12
staticconstexpr

Definition at line 27 of file fl_standard_message_codec.cc.

◆ kValueMap

constexpr int kValueMap = 13
staticconstexpr

Definition at line 28 of file fl_standard_message_codec.cc.

◆ kValueNull

constexpr int kValueNull = 0
staticconstexpr

Definition at line 16 of file fl_standard_message_codec.cc.

◆ kValueString

constexpr int kValueString = 7
staticconstexpr

Definition at line 22 of file fl_standard_message_codec.cc.

◆ kValueTrue

constexpr int kValueTrue = 1
staticconstexpr

Definition at line 17 of file fl_standard_message_codec.cc.

◆ kValueUint8List

constexpr int kValueUint8List = 8
staticconstexpr

Definition at line 23 of file fl_standard_message_codec.cc.

◆ value

uint8_t value
Initial value:
{
g_byte_array_append(buffer, &value, sizeof(uint8_t))

Definition at line 41 of file fl_standard_message_codec.cc.