Flutter Linux Embedder
fl_message_codec.h File Reference
#include <glib-object.h>
#include <gmodule.h>
#include "fl_value.h"

Go to the source code of this file.

Macros

#define FL_MESSAGE_CODEC_ERROR   fl_message_codec_error_quark()
 

Enumerations

enum  FlMessageCodecError {
  FL_MESSAGE_CODEC_ERROR_FAILED,
  FL_MESSAGE_CODEC_ERROR_OUT_OF_DATA,
  FL_MESSAGE_CODEC_ERROR_ADDITIONAL_DATA,
  FL_MESSAGE_CODEC_ERROR_UNSUPPORTED_TYPE
}
 

Functions

G_MODULE_EXPORT GQuark fl_message_codec_error_quark (void) G_GNUC_CONST
 
G_MODULE_EXPORT G_DECLARE_DERIVABLE_TYPE (FlMessageCodec, fl_message_codec, FL, MESSAGE_CODEC, GObject) struct _FlMessageCodecClass
 
GBytes * fl_message_codec_encode_message (FlMessageCodec *codec, FlValue *message, GError **error)
 
FlValuefl_message_codec_decode_message (FlMessageCodec *codec, GBytes *message, GError **error)
 

Macro Definition Documentation

◆ FL_MESSAGE_CODEC_ERROR

#define FL_MESSAGE_CODEC_ERROR   fl_message_codec_error_quark()

FlMessageCodecError: @FL_MESSAGE_CODEC_ERROR_FAILED: Codec failed due to an unspecified error. @FL_MESSAGE_CODEC_ERROR_OUT_OF_DATA: Codec ran out of data reading a value. @FL_MESSAGE_CODEC_ERROR_ADDITIONAL_DATA: Additional data encountered in message. @FL_MESSAGE_CODEC_ERROR_UNSUPPORTED_TYPE: Codec encountered an unsupported FlValue.

Errors for #FlMessageCodec objects to set on failures.

Definition at line 30 of file fl_message_codec.h.

Enumeration Type Documentation

◆ FlMessageCodecError

Enumerator
FL_MESSAGE_CODEC_ERROR_FAILED 
FL_MESSAGE_CODEC_ERROR_OUT_OF_DATA 
FL_MESSAGE_CODEC_ERROR_ADDITIONAL_DATA 
FL_MESSAGE_CODEC_ERROR_UNSUPPORTED_TYPE 

Definition at line 32 of file fl_message_codec.h.

32  {
33  // NOLINTBEGIN(readability-identifier-naming)
38  // NOLINTEND(readability-identifier-naming)

Function Documentation

◆ fl_message_codec_decode_message()

FlValue* fl_message_codec_decode_message ( FlMessageCodec *  codec,
GBytes *  message,
GError **  error 
)

fl_message_codec_decode_message: @codec: an #FlMessageCodec. @message: binary message to decode. @error: (allow-none): #GError location to store the error occurring, or NULL.

Decodes a message from a binary encoding.

Returns: an FlValue or NULL on error.

Definition at line 33 of file fl_message_codec.cc.

35  {
36  g_return_val_if_fail(FL_IS_MESSAGE_CODEC(self), nullptr);
37  g_return_val_if_fail(message != nullptr, nullptr);
38 
39  return FL_MESSAGE_CODEC_GET_CLASS(self)->decode_message(self, message, error);
40 }

References error.

Referenced by decode_error_value(), decode_message(), decode_message_with_codec(), decode_semantic_data(), fl_basic_message_channel_send_finish(), fl_json_method_codec_decode_method_call(), fl_json_method_codec_decode_response(), FlValueStringMatcher::MatchAndExplain(), MATCHER_P2(), message_cb(), and TEST().

◆ fl_message_codec_encode_message()

GBytes* fl_message_codec_encode_message ( FlMessageCodec *  codec,
FlValue message,
GError **  error 
)

fl_message_codec_encode_message: @codec: an #FlMessageCodec. @buffer: buffer to write to. @message: message to encode or NULL to encode the null value. @error: (allow-none): #GError location to store the error occurring, or NULL.

Encodes a message into a binary representation.

Returns: a binary encoded message or NULL on error.

Definition at line 17 of file fl_message_codec.cc.

19  {
20  g_return_val_if_fail(FL_IS_MESSAGE_CODEC(self), nullptr);
21 
22  // If the user provided NULL, then make a temporary FlValue object for this to
23  // make it simpler for the subclasses.
24  g_autoptr(FlValue) null_value = nullptr;
25  if (message == nullptr) {
26  null_value = fl_value_new_null();
27  message = null_value;
28  }
29 
30  return FL_MESSAGE_CODEC_GET_CLASS(self)->encode_message(self, message, error);
31 }

References error, and fl_value_new_null().

Referenced by encode_message(), encode_message_error(), encode_message_with_codec(), fl_accessible_text_field_perform_action(), fl_basic_message_channel_respond(), fl_basic_message_channel_send(), fl_json_method_codec_encode_error_envelope(), fl_json_method_codec_encode_method_call(), fl_json_method_codec_encode_success_envelope(), perform_set_selection_action(), perform_set_text_action(), send_lifecycle_state(), and TEST().

◆ fl_message_codec_error_quark()

G_MODULE_EXPORT GQuark fl_message_codec_error_quark ( void  )

◆ G_DECLARE_DERIVABLE_TYPE()

G_MODULE_EXPORT G_DECLARE_DERIVABLE_TYPE ( FlMessageCodec  ,
fl_message_codec  ,
FL  ,
MESSAGE_CODEC  ,
GObject   
)

FlMessageCodec:

#FlMessageCodec is a message encoding/decoding mechanism that operates on FlValue objects. Both operations returns errors if the conversion fails. Such situations should be treated as programming errors.

#FlMessageCodec matches the MethodCodec class in the Flutter services library.

FlMessageCodec::encode_message: @codec: an #FlMessageCodec. @message: message to encode or NULL to encode the null value. @error: (allow-none): #GError location to store the error occurring, or NULL.

Virtual method to encode a message. A subclass must implement this method. If the subclass cannot handle the type of @message then it must generate a FL_MESSAGE_CODEC_ERROR_UNSUPPORTED_TYPE error.

Returns: a binary message or NULL on error.

FlMessageCodec::decode_message: @codec: an #FlMessageCodec. @message: binary message to decode. @error: (allow-none): #GError location to store the error occurring, or NULL.

Virtual method to decode a message. A subclass must implement this method. If @message is too small then a FL_MESSAGE_CODEC_ERROR_OUT_OF_DATA error must be generated. If @message is too large then a FL_MESSAGE_CODEC_ERROR_ADDITIONAL_DATA error must be generated.

Returns: an FlValue or NULL on error.

Definition at line 45 of file fl_message_codec.h.

62  {
63  GObjectClass parent_class;
64 
65  /**
66  * FlMessageCodec::encode_message:
67  * @codec: an #FlMessageCodec.
68  * @message: message to encode or %NULL to encode the null value.
69  * @error: (allow-none): #GError location to store the error occurring, or
70  * %NULL.
71  *
72  * Virtual method to encode a message. A subclass must implement this method.
73  * If the subclass cannot handle the type of @message then it must generate a
74  * FL_MESSAGE_CODEC_ERROR_UNSUPPORTED_TYPE error.
75  *
76  * Returns: a binary message or %NULL on error.
77  */
78  GBytes* (*encode_message)(FlMessageCodec* codec,
79  FlValue* message,
80  GError** error);
81 
82  /**
83  * FlMessageCodec::decode_message:
84  * @codec: an #FlMessageCodec.
85  * @message: binary message to decode.
86  * @error: (allow-none): #GError location to store the error occurring, or
87  * %NULL.
88  *
89  * Virtual method to decode a message. A subclass must implement this method.
90  * If @message is too small then a #FL_MESSAGE_CODEC_ERROR_OUT_OF_DATA error
91  * must be generated. If @message is too large then a
92  * #FL_MESSAGE_CODEC_ERROR_ADDITIONAL_DATA error must be generated.
93  *
94  * Returns: an #FlValue or %NULL on error.
95  */
96  FlValue* (*decode_message)(FlMessageCodec* codec,
97  GBytes* message,
98  GError** error);
99 };

References error.

FlMessageCodecError
FlMessageCodecError
Definition: fl_message_codec.h:32
FlValue
typedefG_BEGIN_DECLS struct _FlValue FlValue
Definition: fl_value.h:42
FL_MESSAGE_CODEC_ERROR_ADDITIONAL_DATA
@ FL_MESSAGE_CODEC_ERROR_ADDITIONAL_DATA
Definition: fl_message_codec.h:36
fl_value_new_null
G_MODULE_EXPORT FlValue * fl_value_new_null()
Definition: fl_value.cc:251
FL_MESSAGE_CODEC_ERROR_FAILED
@ FL_MESSAGE_CODEC_ERROR_FAILED
Definition: fl_message_codec.h:34
FL_MESSAGE_CODEC_ERROR_OUT_OF_DATA
@ FL_MESSAGE_CODEC_ERROR_OUT_OF_DATA
Definition: fl_message_codec.h:35
error
const uint8_t uint32_t uint32_t GError ** error
Definition: fl_pixel_buffer_texture_test.cc:40
FL_MESSAGE_CODEC_ERROR_UNSUPPORTED_TYPE
@ FL_MESSAGE_CODEC_ERROR_UNSUPPORTED_TYPE
Definition: fl_message_codec.h:37