/soc/2015/jgeboski/facebook: 9cd963f45997: facebook: removed bin...
James Geboski
jgeboski at gmail.com
Sun Aug 9 19:43:40 EDT 2015
Changeset: 9cd963f45997b368332db5766e65db781336ab49
Author: James Geboski <jgeboski at gmail.com>
Date: 2015-08-09 19:43 -0400
Branch: facebook
URL: https://hg.pidgin.im/soc/2015/jgeboski/facebook/rev/9cd963f45997
Description:
facebook: removed binary thrift support
Facebook only uses compact thrift, rather than the binary thrift.
diffstat:
libpurple/protocols/facebook/api.c | 20 +-
libpurple/protocols/facebook/thrift.c | 455 ++++++---------------------------
libpurple/protocols/facebook/thrift.h | 49 +--
3 files changed, 119 insertions(+), 405 deletions(-)
diffs (truncated from 1027 to 300 lines):
diff --git a/libpurple/protocols/facebook/api.c b/libpurple/protocols/facebook/api.c
--- a/libpurple/protocols/facebook/api.c
+++ b/libpurple/protocols/facebook/api.c
@@ -588,7 +588,7 @@ fb_api_cb_mqtt_open(FbMqtt *mqtt, gpoint
FB_MQTT_CONNECT_FLAG_PASS |
FB_MQTT_CONNECT_FLAG_CLR;
- thft = fb_thrift_new(NULL, 0, TRUE);
+ thft = fb_thrift_new(NULL, 0);
/* Write the client identifier */
fb_thrift_write_field(thft, FB_THRIFT_TYPE_STRING, 1);
@@ -819,7 +819,7 @@ fb_api_cb_mqtt_connect(FbMqtt *mqtt, gpo
}
static void
-fb_api_cb_publish_mark(FbApi *api, const GByteArray *pload)
+fb_api_cb_publish_mark(FbApi *api, GByteArray *pload)
{
FbJsonValues *values;
GError *err = NULL;
@@ -849,7 +849,7 @@ fb_api_cb_publish_mark(FbApi *api, const
}
static void
-fb_api_cb_publish_typing(FbApi *api, const GByteArray *pload)
+fb_api_cb_publish_typing(FbApi *api, GByteArray *pload)
{
const gchar *str;
FbApiPrivate *priv = api->priv;
@@ -1007,7 +1007,7 @@ fb_api_message_parse_attach(FbApi *api,
}
static void
-fb_api_cb_publish_ms(FbApi *api, const GByteArray *pload)
+fb_api_cb_publish_ms(FbApi *api, GByteArray *pload)
{
const gchar *body;
const gchar *data;
@@ -1029,7 +1029,7 @@ fb_api_cb_publish_ms(FbApi *api, const G
JsonNode *root;
JsonNode *node;
- thft = fb_thrift_new((GByteArray*) pload, 0, TRUE);
+ thft = fb_thrift_new(pload, 0);
fb_thrift_read_str(thft, NULL);
size = fb_thrift_get_pos(thft);
g_object_unref(thft);
@@ -1157,7 +1157,7 @@ fb_api_cb_publish_ms(FbApi *api, const G
}
static void
-fb_api_cb_publish_p(FbApi *api, const GByteArray *pload)
+fb_api_cb_publish_p(FbApi *api, GByteArray *pload)
{
FbApiPresence pres;
FbThrift *thft;
@@ -1170,7 +1170,7 @@ fb_api_cb_publish_p(FbApi *api, const GB
guint size;
/* Start at 1 to skip the NULL byte */
- thft = fb_thrift_new((GByteArray*) pload, 1, TRUE);
+ thft = fb_thrift_new(pload, 1);
press = NULL;
/* Skip the full list boolean field */
@@ -1243,8 +1243,8 @@ fb_api_cb_publish_p(FbApi *api, const GB
}
static void
-fb_api_cb_mqtt_publish(FbMqtt *mqtt, const gchar *topic,
- const GByteArray *pload, gpointer data)
+fb_api_cb_mqtt_publish(FbMqtt *mqtt, const gchar *topic, GByteArray *pload,
+ gpointer data)
{
FbApi *api = data;
gboolean comp;
@@ -1253,7 +1253,7 @@ fb_api_cb_mqtt_publish(FbMqtt *mqtt, con
static const struct {
const gchar *topic;
- void (*func) (FbApi *api, const GByteArray *pload);
+ void (*func) (FbApi *api, GByteArray *pload);
} parsers[] = {
{"/mark_thread_response", fb_api_cb_publish_mark},
{"/orca_typing_notifications", fb_api_cb_publish_typing},
diff --git a/libpurple/protocols/facebook/thrift.c b/libpurple/protocols/facebook/thrift.c
--- a/libpurple/protocols/facebook/thrift.c
+++ b/libpurple/protocols/facebook/thrift.c
@@ -25,8 +25,8 @@
struct _FbThriftPrivate
{
- FbThriftFlags flags;
GByteArray *bytes;
+ gboolean internal;
guint offset;
guint pos;
guint lastbool;
@@ -40,7 +40,7 @@ fb_thrift_dispose(GObject *obj)
{
FbThriftPrivate *priv = FB_THRIFT(obj)->priv;
- if (priv->flags & FB_THRIFT_FLAG_INTERNAL) {
+ if (priv->internal) {
g_byte_array_free(priv->bytes, TRUE);
}
}
@@ -65,7 +65,7 @@ fb_thrift_init(FbThrift *thft)
}
FbThrift *
-fb_thrift_new(GByteArray *bytes, guint offset, gboolean compact)
+fb_thrift_new(GByteArray *bytes, guint offset)
{
FbThrift *thft;
FbThriftPrivate *priv;
@@ -74,18 +74,14 @@ fb_thrift_new(GByteArray *bytes, guint o
priv = thft->priv;
if (bytes != NULL) {
- priv->bytes = bytes;
+ priv->bytes = bytes;
priv->offset = offset;
+ priv->pos = offset;
} else {
- priv->bytes = g_byte_array_new();
- priv->flags |= FB_THRIFT_FLAG_INTERNAL;
+ priv->bytes = g_byte_array_new();
+ priv->internal = TRUE;
}
- if (compact) {
- priv->flags |= FB_THRIFT_FLAG_COMPACT;
- }
-
- priv->pos = priv->offset;
return thft;
}
@@ -150,7 +146,7 @@ fb_thrift_read(FbThrift *thft, gpointer
}
gboolean
-fb_thrift_read_bool(FbThrift *thft, gboolean *bln)
+fb_thrift_read_bool(FbThrift *thft, gboolean *value)
{
FbThriftPrivate *priv;
guint8 byte;
@@ -158,36 +154,21 @@ fb_thrift_read_bool(FbThrift *thft, gboo
g_return_val_if_fail(FB_IS_THRIFT(thft), FALSE);
priv = thft->priv;
- if (bln != NULL) {
- *bln = FALSE;
- }
-
- if (!(priv->flags & FB_THRIFT_FLAG_COMPACT)) {
- if (!fb_thrift_read_byte(thft, &byte)) {
- return FALSE;
- }
-
- if (bln != NULL) {
- *bln = byte != 0;
- }
-
- return TRUE;
- }
-
if ((priv->lastbool & 0x03) != 0x01) {
if (!fb_thrift_read_byte(thft, &byte)) {
return FALSE;
}
- if (bln != NULL) {
- *bln = (byte & 0x0F) == 0x01;
+ if (value != NULL) {
+ *value = (byte & 0x0F) == 0x01;
}
+ priv->lastbool = 0;
return TRUE;
}
- if (bln != NULL) {
- *bln = ((priv->lastbool & 0x04) >> 2) != 0;
+ if (value != NULL) {
+ *value = ((priv->lastbool & 0x04) >> 2) != 0;
}
priv->lastbool = 0;
@@ -195,250 +176,145 @@ fb_thrift_read_bool(FbThrift *thft, gboo
}
gboolean
-fb_thrift_read_byte(FbThrift *thft, guint8 *byte)
+fb_thrift_read_byte(FbThrift *thft, guint8 *value)
{
- if (byte != NULL) {
- *byte = 0;
- }
-
- return fb_thrift_read(thft, byte, sizeof *byte);
+ return fb_thrift_read(thft, value, sizeof *value);
}
gboolean
-fb_thrift_read_dbl(FbThrift *thft, gdouble *dbl)
+fb_thrift_read_dbl(FbThrift *thft, gdouble *value)
{
gint64 i64;
/* Almost always 8, but check anyways */
- static const gsize size = MIN(sizeof dbl, sizeof i64);
-
- if (dbl != NULL) {
- *dbl = 0;
- }
+ static const gsize size = MIN(sizeof value, sizeof i64);
if (!fb_thrift_read_i64(thft, &i64)) {
return FALSE;
}
- if (dbl != NULL) {
- memcpy(&dbl, &i64, size);
+ if (value != NULL) {
+ memcpy(value, &i64, size);
}
return TRUE;
}
gboolean
-fb_thrift_read_i16(FbThrift *thft, gint16 *i16)
+fb_thrift_read_i16(FbThrift *thft, gint16 *value)
{
- FbThriftPrivate *priv;
gint64 i64;
- g_return_val_if_fail(FB_IS_THRIFT(thft), FALSE);
- priv = thft->priv;
-
- if (i16 != NULL) {
- *i16 = 0;
- }
-
- if (!(priv->flags & FB_THRIFT_FLAG_COMPACT)) {
- if (!fb_thrift_read(thft, i16, sizeof *i16)) {
- return FALSE;
- }
-
- if (i16 != NULL) {
- *i16 = GINT16_FROM_BE(*i16);
- }
-
- return TRUE;
- }
-
if (!fb_thrift_read_i64(thft, &i64)) {
return FALSE;
}
- if (i16 != NULL) {
- *i16 = i64;
+ if (value != NULL) {
+ *value = i64;
}
return TRUE;
}
gboolean
-fb_thrift_read_vi16(FbThrift *thft, guint16 *u16)
+fb_thrift_read_vi16(FbThrift *thft, guint16 *value)
{
guint64 u64;
- if (u16 != NULL) {
- *u16 = 0;
- }
-
if (!fb_thrift_read_vi64(thft, &u64)) {
return FALSE;
}
- if (u16 != NULL) {
- *u16 = u64;
+ if (value != NULL) {
+ *value = u64;
}
return TRUE;
}
gboolean
-fb_thrift_read_i32(FbThrift *thft, gint32 *i32)
+fb_thrift_read_i32(FbThrift *thft, gint32 *value)
{
- FbThriftPrivate *priv;
More information about the Commits
mailing list