Flutter Engine
fl_json_message_codec.h File Reference
#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

GQuark fl_json_message_codec_error_quark (void) G_GNUC_CONST
 
 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)
 
FlValuefl_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: : Message is not valid UTF-8. : Message is not valid JSON. : Invalid object key type.

Errors for #FlJsonMessageCodec objects to set on failures.

Definition at line 25 of file fl_json_message_codec.h.

Referenced by fl_json_message_codec_decode_message(), G_DEFINE_TYPE(), and TEST().

Enumeration Type Documentation

◆ FlJsonMessageCodecError

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: : an #FlJsonMessageCodec. : UTF-8 text in JSON format. : (allow-none): #GError location to store the error occurring, or NULL.

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.

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

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

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));
333  FL_MESSAGE_CODEC(codec), data, error);
334  if (value == nullptr) {
335  return nullptr;
336  }
337 
338  return fl_value_ref(value);
339 }
typedefG_BEGIN_DECLS struct _FlValue FlValue
Definition: fl_value.h:39
FlMethodResponse GError ** error
uint8_t value
static FlValue * fl_json_message_codec_decode_message(FlMessageCodec *codec, GBytes *message, GError **error)
G_MODULE_EXPORT FlValue * fl_value_ref(FlValue *self)
Definition: fl_value.cc:335

◆ fl_json_message_codec_encode()

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

fl_json_message_codec_encode: : an #FlJsonMessageCodec. : value to encode. : (allow-none): #GError location to store the error occurring, or NULL.

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.

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

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 }
FlMethodResponse GError ** error
uint8_t value

◆ fl_json_message_codec_error_quark()

GQuark fl_json_message_codec_error_quark ( void  )

◆ G_DECLARE_FINAL_TYPE()

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.