mirror of
https://github.com/haiwen/libsearpc.git
synced 2025-09-02 05:14:48 +00:00
improve some details
This commit is contained in:
@@ -295,6 +295,7 @@ Dependency
|
||||
|
||||
The following packages are required to build libsearpc:
|
||||
|
||||
* glib-2.0 >= 2.16.0
|
||||
* gobject-2.0 >= 2.16.0
|
||||
* glib-2.0 >= 2.26.0
|
||||
* gobject-2.0 >= 2.26.0
|
||||
* jansson >= 2.2.1
|
||||
* python simplejson (for pysearpc)
|
||||
|
@@ -70,14 +70,14 @@ AC_SUBST(MACOS)
|
||||
|
||||
# Checks for libraries.
|
||||
|
||||
GLIB_REQUIRED=2.31.0
|
||||
GLIB_REQUIRED=2.26.0
|
||||
|
||||
# check and subst gobject
|
||||
PKG_CHECK_MODULES(GLIB, [gobject-2.0 >= $GLIB_REQUIRED])
|
||||
AC_SUBST(GLIB_CFLAGS)
|
||||
AC_SUBST(GLIB_LIBS)
|
||||
|
||||
JANSSON_REQUIRED=2.4
|
||||
JANSSON_REQUIRED=2.2.1
|
||||
|
||||
PKG_CHECK_MODULES(JANSSON, [jansson >= $JANSSON_REQUIRED])
|
||||
AC_SUBST(JANSSON_CFLAGS)
|
||||
|
@@ -60,6 +60,7 @@ static char *transport_callback(void *arg, const char *fcall_str,
|
||||
return g_strndup(pac_ret->data, *ret_len);
|
||||
}
|
||||
|
||||
/*The function is copied from searpc-server.c for convience*/
|
||||
void
|
||||
searpc_set_objlist_to_ret_object (json_t *object, GList *ret)
|
||||
{
|
||||
@@ -131,15 +132,18 @@ main(int argc, char *argv[])
|
||||
} else
|
||||
printf("the length of string 'hello searpc' is %d.\n", ret);*/
|
||||
|
||||
GList *ans=searpc_client_call__objlist(rpc_client, "searpc_glisttest", TEST_OBJECT_TYPE, &error,
|
||||
3, "int", 12, "int", 4, "string", "Hehehe!");
|
||||
GList *ans=searpc_client_call__objlist(rpc_client, "searpc_objlisttest",
|
||||
TEST_OBJECT_TYPE, &error,
|
||||
3, "int", 4, "int", 10, "string", "A rpc test.");
|
||||
|
||||
json_t *object=json_object();
|
||||
searpc_set_objlist_to_ret_object(object,ans);
|
||||
searpc_set_objlist_to_ret_object (object,ans);
|
||||
|
||||
if (error != NULL) {
|
||||
fprintf(stderr, "error: %s\n", error->message);
|
||||
exit(-1);
|
||||
} else
|
||||
printf("%s\n",json_dumps(object,JSON_INDENT(2)));
|
||||
}
|
||||
else printf("%s\n", json_dumps (object, JSON_INDENT(2)));
|
||||
json_decref(object);
|
||||
|
||||
close(sockfd);
|
||||
|
@@ -34,18 +34,18 @@ searpc_strlen(const char *str)
|
||||
}
|
||||
|
||||
static GList *
|
||||
searpc_glisttest(int a, int c, const char *str)
|
||||
searpc_objlisttest(int count, int len, const char *str)
|
||||
{
|
||||
GList *ret=NULL;
|
||||
int i;
|
||||
for (i=0; i!=c; ++i)
|
||||
for (i=0; i!=count; ++i)
|
||||
{
|
||||
TestObject *obj=g_object_new (TEST_OBJECT_TYPE, NULL);
|
||||
obj->a=a;
|
||||
obj->c=strlen(str);
|
||||
g_free(obj->str);
|
||||
obj->str=g_strdup(str);
|
||||
obj->boo=TRUE;
|
||||
obj->len = strlen(str);
|
||||
g_free (obj->str);
|
||||
obj->str = g_strdup(str);
|
||||
if (len == obj->len)
|
||||
obj->equal = TRUE;
|
||||
ret = g_list_prepend (ret, obj);
|
||||
}
|
||||
return ret;
|
||||
@@ -70,8 +70,8 @@ start_rpc_service(void)
|
||||
"searpc_strlen",
|
||||
searpc_signature_int__string());
|
||||
searpc_server_register_function("searpc-demo",
|
||||
searpc_glisttest,
|
||||
"searpc_glisttest",
|
||||
searpc_objlisttest,
|
||||
"searpc_objlisttest",
|
||||
searpc_signature_objlist__int_int_string());
|
||||
}
|
||||
|
||||
@@ -148,7 +148,6 @@ main(int argc, char *argv[])
|
||||
/* Execute the RPC function */
|
||||
char *res = searpc_server_call_function ("searpc-demo", pac->data, fcall_len,
|
||||
&ret_len);
|
||||
|
||||
pac_ret = (packet *)buf;
|
||||
pac_ret->length = htons((uint16_t)ret_len);
|
||||
memcpy(pac_ret->data, res, ret_len);
|
||||
|
@@ -1,14 +1,12 @@
|
||||
#include "test-object.h"
|
||||
|
||||
G_DEFINE_TYPE(TestObject, test_object, G_TYPE_OBJECT);
|
||||
G_DEFINE_TYPE (TestObject, test_object, G_TYPE_OBJECT);
|
||||
|
||||
enum {
|
||||
PROP_0,
|
||||
PROP_INT_A,
|
||||
PROP_INT_B,
|
||||
PROP_INT_C,
|
||||
PROP_LEN,
|
||||
PROP_STR,
|
||||
PROP_BOOL,
|
||||
PROP_EQU,
|
||||
N_PROPERTIES
|
||||
};
|
||||
|
||||
@@ -17,23 +15,16 @@ static GParamSpec *obj_properties[N_PROPERTIES] = { NULL, };
|
||||
static void test_object_set_property (GObject *object, guint property_id, const GValue *value, GParamSpec *pspec)
|
||||
{
|
||||
TestObject *self = TEST_OBJECT (object);
|
||||
switch (property_id)
|
||||
{
|
||||
case PROP_INT_A:
|
||||
self->a = g_value_get_int(value);
|
||||
break;
|
||||
case PROP_INT_B:
|
||||
self->b = g_value_get_int64(value);
|
||||
break;
|
||||
case PROP_INT_C:
|
||||
self->c = g_value_get_uint(value);
|
||||
switch (property_id) {
|
||||
case PROP_LEN:
|
||||
self->len = g_value_get_int (value);
|
||||
break;
|
||||
case PROP_STR:
|
||||
g_free (self->str);
|
||||
self->str = g_value_dup_string (value);
|
||||
break;
|
||||
case PROP_BOOL:
|
||||
self->boo = g_value_get_boolean (value);
|
||||
case PROP_EQU:
|
||||
self->equal = g_value_get_boolean (value);
|
||||
break;
|
||||
default:
|
||||
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
|
||||
@@ -43,22 +34,15 @@ static void test_object_set_property (GObject *object, guint property_id, const
|
||||
static void test_object_get_property (GObject *object, guint property_id, GValue *value, GParamSpec *pspec)
|
||||
{
|
||||
TestObject *self = TEST_OBJECT (object);
|
||||
switch (property_id)
|
||||
{
|
||||
case PROP_INT_A:
|
||||
g_value_set_int(value, self->a);
|
||||
break;
|
||||
case PROP_INT_B:
|
||||
g_value_set_int64(value, self->b);
|
||||
break;
|
||||
case PROP_INT_C:
|
||||
g_value_set_uint(value, self->c);
|
||||
switch (property_id) {
|
||||
case PROP_LEN:
|
||||
g_value_set_int (value, self->len);
|
||||
break;
|
||||
case PROP_STR:
|
||||
g_value_set_string (value, self->str);
|
||||
break;
|
||||
case PROP_BOOL:
|
||||
g_value_set_boolean (value, self->boo);
|
||||
case PROP_EQU:
|
||||
g_value_set_boolean (value, self->equal);
|
||||
break;
|
||||
default:
|
||||
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
|
||||
@@ -67,13 +51,11 @@ static void test_object_get_property (GObject *object, guint property_id, GValue
|
||||
|
||||
static void test_object_dispose (GObject *object)
|
||||
{
|
||||
g_printf("Instance disposed!\n");
|
||||
G_OBJECT_CLASS (test_object_parent_class)->dispose(object);
|
||||
}
|
||||
|
||||
static void test_object_finalize (GObject *object)
|
||||
{
|
||||
g_printf("Instance finalized!\n");
|
||||
TestObject *self = TEST_OBJECT (object);
|
||||
g_free(self->str);
|
||||
G_OBJECT_CLASS (test_object_parent_class)->finalize(object);
|
||||
@@ -81,7 +63,6 @@ static void test_object_finalize (GObject *object)
|
||||
|
||||
static void test_object_class_init(TestObjectClass *klass)
|
||||
{
|
||||
g_printf("Class inited!\n");
|
||||
GObjectClass *gobject_class = G_OBJECT_CLASS (klass);
|
||||
|
||||
gobject_class->set_property = test_object_set_property;
|
||||
@@ -89,20 +70,15 @@ static void test_object_class_init(TestObjectClass *klass)
|
||||
gobject_class->dispose = test_object_dispose;
|
||||
gobject_class->finalize = test_object_finalize;
|
||||
|
||||
obj_properties[PROP_INT_A]=g_param_spec_int ("a","","",-200,1000,0,G_PARAM_READWRITE);
|
||||
obj_properties[PROP_INT_B]=g_param_spec_int64 ("b","","",0,10000000000,6000000000, G_PARAM_READWRITE);
|
||||
obj_properties[PROP_INT_C]=g_param_spec_uint ("c","","",0,100,60, G_PARAM_READWRITE);
|
||||
obj_properties[PROP_STR]=g_param_spec_string ("str","","","Hello world!", G_PARAM_READWRITE);
|
||||
obj_properties[PROP_BOOL]=g_param_spec_boolean ("boo","","",FALSE,G_PARAM_READWRITE);
|
||||
g_object_class_install_properties (gobject_class,N_PROPERTIES,obj_properties);
|
||||
obj_properties[PROP_LEN] = g_param_spec_int ("len", "", "", -1, 256, 0, G_PARAM_READWRITE);
|
||||
obj_properties[PROP_STR] = g_param_spec_string ("str", "", "", "Hello world!", G_PARAM_READWRITE);
|
||||
obj_properties[PROP_EQU] = g_param_spec_boolean ("equal", "", "", FALSE, G_PARAM_READWRITE);
|
||||
g_object_class_install_properties (gobject_class, N_PROPERTIES, obj_properties);
|
||||
}
|
||||
|
||||
static void test_object_init(TestObject *self)
|
||||
{
|
||||
g_printf("Instance inited!\n");
|
||||
self->a=0;
|
||||
self->b=6000000000;
|
||||
self->c=60;
|
||||
self->str=g_strdup("Hello world!");
|
||||
self->boo=FALSE;
|
||||
self->len = 0;
|
||||
self->str = g_strdup("Hello world!");
|
||||
self->equal = FALSE;
|
||||
}
|
||||
|
@@ -16,11 +16,9 @@ typedef struct _TestObjectClass TestObjectClass;
|
||||
|
||||
struct _TestObject {
|
||||
GObject parent;
|
||||
gint a;
|
||||
gint64 b;
|
||||
guint c;
|
||||
gchar * str;
|
||||
gboolean boo;
|
||||
int len;
|
||||
gchar *str;
|
||||
gboolean equal;
|
||||
};
|
||||
|
||||
struct _TestObjectClass {
|
||||
|
@@ -70,11 +70,10 @@ fcall_to_str (const char *fname, int n_params, va_list args, gsize *len)
|
||||
for (; i < n_params; i++) {
|
||||
const char *type = va_arg(args, const char *);
|
||||
void *value = va_arg(args, void *);
|
||||
printf("%s\n",type);
|
||||
if (strcmp(type, "int") == 0)
|
||||
json_array_append_new(array, json_integer((int)value));
|
||||
json_array_append_new (array, json_integer ((int)value));
|
||||
else if (strcmp(type, "int64") == 0)
|
||||
json_array_append_new (array, json_integer(*((gint64 *)value)));
|
||||
json_array_append_new (array, json_integer (*((gint64 *)value)));
|
||||
else if (strcmp(type, "string") == 0)
|
||||
json_array_add_string_or_null_element (array, (char *)value);
|
||||
else {
|
||||
@@ -278,6 +277,7 @@ searpc_client_call__objlist (SearpcClient *client, const char *fname,
|
||||
va_start (args, n_params);
|
||||
fstr = fcall_to_str (fname, n_params, args, &len);
|
||||
va_end (args);
|
||||
|
||||
if (!fstr) {
|
||||
g_set_error (error, DFT_DOMAIN, 0, "Invalid Parameter");
|
||||
return NULL;
|
||||
@@ -617,6 +617,5 @@ searpc_client_fret__objlist (GType gtype, char *data, size_t len, GError **error
|
||||
json_decref(object);
|
||||
return g_list_reverse(ret);
|
||||
}
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
@@ -149,7 +149,6 @@ searpc_marshal_set_ret_common (json_t *object, int *len, GError *error)
|
||||
*len=strlen(data);
|
||||
json_decref(object);
|
||||
|
||||
printf("%s\n",data);
|
||||
return data;
|
||||
}
|
||||
|
||||
|
@@ -4,51 +4,52 @@
|
||||
|
||||
#include "searpc-utils.h"
|
||||
|
||||
json_t *json_serialize_pspec (const GValue *value)
|
||||
static json_t *json_serialize_pspec (const GValue *value)
|
||||
{
|
||||
/* Only types in json-glib but G_TYPE_BOXED */
|
||||
switch (G_TYPE_FUNDAMENTAL (G_VALUE_TYPE (value)))
|
||||
{
|
||||
switch (G_TYPE_FUNDAMENTAL (G_VALUE_TYPE (value))) {
|
||||
case G_TYPE_STRING:
|
||||
if (!g_value_get_string (value))
|
||||
break;
|
||||
else
|
||||
return json_string(g_value_get_string(value));
|
||||
return json_string (g_value_get_string (value));
|
||||
case G_TYPE_BOOLEAN:
|
||||
return json_boolean(g_value_get_boolean(value));
|
||||
if (g_value_get_boolean (value))
|
||||
return json_true ();
|
||||
else return json_false ();
|
||||
case G_TYPE_INT:
|
||||
return json_integer(g_value_get_int(value));
|
||||
return json_integer (g_value_get_int (value));
|
||||
case G_TYPE_UINT:
|
||||
return json_integer(g_value_get_uint(value));
|
||||
return json_integer (g_value_get_uint (value));
|
||||
case G_TYPE_LONG:
|
||||
return json_integer(g_value_get_long(value));
|
||||
return json_integer (g_value_get_long (value));
|
||||
case G_TYPE_ULONG:
|
||||
return json_integer(g_value_get_ulong(value));
|
||||
return json_integer (g_value_get_ulong (value));
|
||||
case G_TYPE_INT64:
|
||||
return json_integer(g_value_get_int64(value));
|
||||
return json_integer (g_value_get_int64 (value));
|
||||
case G_TYPE_FLOAT:
|
||||
return json_real(g_value_get_float(value));
|
||||
return json_real (g_value_get_float (value));
|
||||
case G_TYPE_DOUBLE:
|
||||
return json_real(g_value_get_double(value));
|
||||
return json_real (g_value_get_double (value));
|
||||
case G_TYPE_CHAR:
|
||||
return json_integer(g_value_get_schar(value));
|
||||
return json_integer (g_value_get_schar (value));
|
||||
case G_TYPE_UCHAR:
|
||||
return json_integer(g_value_get_uchar(value));
|
||||
return json_integer (g_value_get_uchar (value));
|
||||
case G_TYPE_ENUM:
|
||||
return json_integer(g_value_get_enum(value));
|
||||
return json_integer (g_value_get_enum (value));
|
||||
case G_TYPE_FLAGS:
|
||||
return json_integer(g_value_get_flags(value));
|
||||
return json_integer (g_value_get_flags (value));
|
||||
case G_TYPE_NONE:
|
||||
break;
|
||||
case G_TYPE_OBJECT:
|
||||
{
|
||||
GObject *object = g_value_get_object(value);
|
||||
GObject *object = g_value_get_object (value);
|
||||
if (object)
|
||||
return json_gobject_serialize(object);
|
||||
return json_gobject_serialize (object);
|
||||
}
|
||||
break;
|
||||
defalut:
|
||||
g_warning("Unsuppoted type `%s'",g_type_name(G_VALUE_TYPE(value)));
|
||||
g_warning("Unsuppoted type `%s'",g_type_name (G_VALUE_TYPE (value)));
|
||||
}
|
||||
return json_null();
|
||||
}
|
||||
@@ -61,8 +62,7 @@ json_t *json_gobject_serialize (GObject *gobject)
|
||||
|
||||
pspecs = g_object_class_list_properties (G_OBJECT_GET_CLASS (gobject), &n_pspecs);
|
||||
|
||||
for (i=0;i!=n_pspecs;++i)
|
||||
{
|
||||
for (i=0; i!=n_pspecs; ++i) {
|
||||
json_t *node;
|
||||
GParamSpec *pspec = pspecs[i];
|
||||
GValue value = { 0, };
|
||||
@@ -83,15 +83,12 @@ json_t *json_gobject_serialize (GObject *gobject)
|
||||
|
||||
}
|
||||
|
||||
gboolean json_deserialize_pspec (GValue *value, GParamSpec *pspec, json_t *node)
|
||||
static gboolean json_deserialize_pspec (GValue *value, GParamSpec *pspec, json_t *node)
|
||||
{
|
||||
switch (json_typeof(node))
|
||||
{
|
||||
switch (json_typeof(node)) {
|
||||
case JSON_OBJECT:
|
||||
if (g_type_is_a (G_VALUE_TYPE (value), G_TYPE_OBJECT))
|
||||
{
|
||||
if (g_type_is_a (G_VALUE_TYPE (value), G_TYPE_OBJECT)) {
|
||||
GObject *object;
|
||||
|
||||
object = json_gobject_deserialize (G_VALUE_TYPE (value), node);
|
||||
if (object)
|
||||
g_value_take_object (value, object);
|
||||
@@ -102,8 +99,7 @@ gboolean json_deserialize_pspec (GValue *value, GParamSpec *pspec, json_t *node)
|
||||
}
|
||||
break;
|
||||
case JSON_STRING:
|
||||
if (G_TYPE_FUNDAMENTAL (G_VALUE_TYPE (value)) == G_TYPE_STRING)
|
||||
{
|
||||
if (G_TYPE_FUNDAMENTAL (G_VALUE_TYPE (value)) == G_TYPE_STRING) {
|
||||
g_value_set_string(value, json_string_value(node));
|
||||
return TRUE;
|
||||
}
|
||||
@@ -111,8 +107,7 @@ gboolean json_deserialize_pspec (GValue *value, GParamSpec *pspec, json_t *node)
|
||||
case JSON_INTEGER:
|
||||
{
|
||||
json_int_t int_value = json_integer_value (node);
|
||||
switch (G_TYPE_FUNDAMENTAL (G_VALUE_TYPE (value)))
|
||||
{
|
||||
switch (G_TYPE_FUNDAMENTAL (G_VALUE_TYPE (value))) {
|
||||
case G_TYPE_CHAR:
|
||||
g_value_set_schar(value, (gchar)int_value);
|
||||
return TRUE;
|
||||
@@ -146,8 +141,7 @@ gboolean json_deserialize_pspec (GValue *value, GParamSpec *pspec, json_t *node)
|
||||
case JSON_REAL:
|
||||
{
|
||||
double real_value = json_real_value(node);
|
||||
switch (G_TYPE_FUNDAMENTAL (G_VALUE_TYPE (value)))
|
||||
{
|
||||
switch (G_TYPE_FUNDAMENTAL (G_VALUE_TYPE (value))) {
|
||||
case G_TYPE_FLOAT:
|
||||
g_value_set_float(value,(gfloat)real_value);
|
||||
return TRUE;
|
||||
@@ -159,20 +153,17 @@ gboolean json_deserialize_pspec (GValue *value, GParamSpec *pspec, json_t *node)
|
||||
break;
|
||||
case JSON_TRUE:
|
||||
case JSON_FALSE:
|
||||
if (G_TYPE_FUNDAMENTAL (G_VALUE_TYPE (value)) == G_TYPE_BOOLEAN)
|
||||
{
|
||||
if (G_TYPE_FUNDAMENTAL (G_VALUE_TYPE (value)) == G_TYPE_BOOLEAN) {
|
||||
g_value_set_boolean(value,(gboolean)json_is_true(node));
|
||||
return TRUE;
|
||||
}
|
||||
break;
|
||||
case JSON_NULL:
|
||||
if (G_TYPE_FUNDAMENTAL (G_VALUE_TYPE (value)) == G_TYPE_STRING)
|
||||
{
|
||||
if (G_TYPE_FUNDAMENTAL (G_VALUE_TYPE (value)) == G_TYPE_STRING) {
|
||||
g_value_set_string (value, NULL);
|
||||
return TRUE;
|
||||
}
|
||||
else if (G_TYPE_FUNDAMENTAL (G_VALUE_TYPE (value)) == G_TYPE_OBJECT)
|
||||
{
|
||||
else if (G_TYPE_FUNDAMENTAL (G_VALUE_TYPE (value)) == G_TYPE_OBJECT) {
|
||||
g_value_set_object (value, NULL);
|
||||
return TRUE;
|
||||
}
|
||||
@@ -187,18 +178,20 @@ GObject *json_gobject_deserialize (GType gtype, json_t *object)
|
||||
GObjectClass *klass;
|
||||
GObject *ret;
|
||||
guint n_members, i;
|
||||
json_t *val;
|
||||
json_t *head, *member;
|
||||
const char *member_name;
|
||||
GArray *construct_params;
|
||||
|
||||
klass = g_type_class_ref (gtype);
|
||||
n_members = json_object_size (object);
|
||||
construct_params = g_array_sized_new (FALSE, FALSE, sizeof (GParameter), n_members);
|
||||
head = json_object_iter (object);
|
||||
|
||||
json_object_foreach(object,member_name,val)
|
||||
{
|
||||
for (member=head; member; member=json_object_iter_next (object, member)) {
|
||||
GParamSpec *pspec;
|
||||
GParameter param = { NULL, };
|
||||
const char *member_name = json_object_iter_key (member);
|
||||
json_t *val = json_object_iter_value(member);
|
||||
|
||||
pspec = g_object_class_find_property (klass, member_name);
|
||||
|
||||
@@ -213,21 +206,18 @@ GObject *json_gobject_deserialize (GType gtype, json_t *object)
|
||||
|
||||
g_value_init(¶m.value, G_PARAM_SPEC_VALUE_TYPE (pspec));
|
||||
|
||||
if (json_deserialize_pspec (¶m.value, pspec, val))
|
||||
{
|
||||
if (json_deserialize_pspec (¶m.value, pspec, val)) {
|
||||
param.name = g_strdup (pspec->name);
|
||||
g_array_append_val (construct_params, param);
|
||||
}
|
||||
else
|
||||
g_warning ("Failed to deserialize \"%s\" property of type \"%s\" for an object of type \"%s\"", pspec->name,
|
||||
g_type_name (G_VALUE_TYPE (¶m.value)), g_type_name (gtype));
|
||||
|
||||
g_warning ("Failed to deserialize \"%s\" property of type \"%s\" for an object of type \"%s\"",
|
||||
pspec->name, g_type_name (G_VALUE_TYPE (¶m.value)), g_type_name (gtype));
|
||||
}
|
||||
|
||||
ret = g_object_newv (gtype, construct_params->len, (GParameter *) construct_params->data);
|
||||
|
||||
for (i=0; i!= construct_params->len; ++i)
|
||||
{
|
||||
for (i=0; i!= construct_params->len; ++i) {
|
||||
GParameter *param = &g_array_index (construct_params, GParameter, i);
|
||||
g_free ((gchar *) param->name);
|
||||
g_value_unset (¶m->value);
|
||||
|
@@ -2,23 +2,21 @@
|
||||
#include <glib-object.h>
|
||||
#include <jansson.h>
|
||||
|
||||
#define SEAFILE_JSON_DOMAIN g_quark_from_string("SEAFILE_JSON")
|
||||
#define SEARPC_JSON_DOMAIN g_quark_from_string("SEARPC_JSON")
|
||||
|
||||
typedef enum {
|
||||
SEAFILE_JSON_ERROR_LOAD,
|
||||
SEAFILE_JSON_ERROR_PACK,
|
||||
SEAFILE_JSON_ERROR_UPACK
|
||||
}SEAFILEJSONERROR;
|
||||
SEARPC_JSON_ERROR_LOAD,
|
||||
SEARPC_JSON_ERROR_PACK,
|
||||
SEARPC_JSON_ERROR_UPACK
|
||||
} SEARPCJSONERROR;
|
||||
|
||||
json_t *json_serialize_pspec (const GValue *);
|
||||
json_t *json_gobject_serialize (GObject *);
|
||||
gboolean json_deserialize_pspec (GValue *, GParamSpec *, json_t *);
|
||||
GObject *json_gobject_deserialize (GType , json_t *);
|
||||
|
||||
inline static void setjetoge(const json_error_t *jerror, GError *error)
|
||||
{
|
||||
/* Load is the only function I use which reports errors */
|
||||
g_set_error(&error, SEAFILE_JSON_DOMAIN, SEAFILE_JSON_ERROR_LOAD, "%s", jerror->text);
|
||||
/* Load is the only function I use which reports errors */
|
||||
g_set_error(&error, SEARPC_JSON_DOMAIN, SEARPC_JSON_ERROR_LOAD, "%s", jerror->text);
|
||||
}
|
||||
|
||||
inline static const char *json_object_get_string_or_null_member (json_t *object,const char *member_name)
|
||||
@@ -33,16 +31,16 @@ inline static const char *json_object_get_string_or_null_member (json_t *object,
|
||||
inline static void json_object_set_string_or_null_member (json_t *object,const char *member_name,const char *value)
|
||||
{
|
||||
if (value)
|
||||
json_object_set_new(object,member_name,json_string(value));
|
||||
json_object_set_new(object,member_name, json_string(value));
|
||||
else
|
||||
json_object_set_new(object,member_name,json_null());
|
||||
json_object_set_new(object,member_name, json_null());
|
||||
}
|
||||
|
||||
inline static const char *json_array_get_string_or_null_element (json_t *array, size_t index)
|
||||
{
|
||||
json_t *ret=json_array_get(array,index);
|
||||
json_t *ret=json_array_get (array,index);
|
||||
if (ret)
|
||||
return json_string_value(ret);
|
||||
return json_string_value (ret);
|
||||
else
|
||||
return NULL;
|
||||
}
|
||||
@@ -50,13 +48,13 @@ inline static const char *json_array_get_string_or_null_element (json_t *array,
|
||||
inline static void json_array_add_string_or_null_element (json_t *array, const char *value)
|
||||
{
|
||||
if (value)
|
||||
json_array_append_new(array, json_string(value));
|
||||
json_array_append_new (array, json_string (value));
|
||||
else
|
||||
json_array_append_new(array, json_null());
|
||||
json_array_append_new (array, json_null ());
|
||||
}
|
||||
|
||||
inline static json_int_t json_array_get_int_element (json_t *array, size_t index)
|
||||
{
|
||||
return json_integer_value(json_array_get(array, index));
|
||||
return json_integer_value (json_array_get (array, index));
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user