mirror of
https://github.com/haiwen/libsearpc.git
synced 2025-09-02 05:14:48 +00:00
Add type 'int64'.
This commit is contained in:
@@ -26,6 +26,12 @@ type_table = {
|
|||||||
"set_int_to_ret_object",
|
"set_int_to_ret_object",
|
||||||
"json_array_add_int_element",
|
"json_array_add_int_element",
|
||||||
"-1"),
|
"-1"),
|
||||||
|
"int64": ("gint64",
|
||||||
|
"gint64",
|
||||||
|
"json_array_get_int_element",
|
||||||
|
"set_int_to_ret_object",
|
||||||
|
"json_array_add_int_element",
|
||||||
|
"-1"),
|
||||||
"object": ("GObject*",
|
"object": ("GObject*",
|
||||||
"GObject*",
|
"GObject*",
|
||||||
"",
|
"",
|
||||||
@@ -240,7 +246,7 @@ def gen_fcall_declare_list():
|
|||||||
|
|
||||||
dfun_template_with_gtype = r"""
|
dfun_template_with_gtype = r"""
|
||||||
#define SEARPC_CLIENT_DEFUN_${RET_TYPE}__${ARG_TYPES}(funcname, gtype) \
|
#define SEARPC_CLIENT_DEFUN_${RET_TYPE}__${ARG_TYPES}(funcname, gtype) \
|
||||||
${ret_type_in_c} \
|
static ${ret_type_in_c} \
|
||||||
funcname (SearpcClient *client, ${args}) \
|
funcname (SearpcClient *client, ${args}) \
|
||||||
{ \
|
{ \
|
||||||
char *fcall, *fret; \
|
char *fcall, *fret; \
|
||||||
@@ -268,7 +274,7 @@ funcname (SearpcClient *client, ${args}) \
|
|||||||
|
|
||||||
dfun_template_without_gtype = r"""
|
dfun_template_without_gtype = r"""
|
||||||
#define SEARPC_CLIENT_DEFUN_${RET_TYPE}__${ARG_TYPES}(funcname) \
|
#define SEARPC_CLIENT_DEFUN_${RET_TYPE}__${ARG_TYPES}(funcname) \
|
||||||
${ret_type_in_c} \
|
static ${ret_type_in_c} \
|
||||||
funcname (SearpcClient *client, ${args}) \
|
funcname (SearpcClient *client, ${args}) \
|
||||||
{ \
|
{ \
|
||||||
char *fcall, *fret; \
|
char *fcall, *fret; \
|
||||||
@@ -332,7 +338,7 @@ def gen_dfun_macro_list():
|
|||||||
|
|
||||||
async_dfun_template = r"""
|
async_dfun_template = r"""
|
||||||
#define SEARPC_CLIENT_ASYNC_DEFUN_${RET_TYPE}__${ARG_TYPES}(funcname, gtype) \
|
#define SEARPC_CLIENT_ASYNC_DEFUN_${RET_TYPE}__${ARG_TYPES}(funcname, gtype) \
|
||||||
int \
|
static int \
|
||||||
funcname (SearpcClient *client, ${args} \
|
funcname (SearpcClient *client, ${args} \
|
||||||
AsyncCallback callback, void *user_data) \
|
AsyncCallback callback, void *user_data) \
|
||||||
{ \
|
{ \
|
||||||
|
@@ -10,6 +10,7 @@ func_table = [
|
|||||||
[ "int", ["string", "int"] ],
|
[ "int", ["string", "int"] ],
|
||||||
[ "int", ["string", "string"] ],
|
[ "int", ["string", "string"] ],
|
||||||
[ "int", ["string", "string", "string"] ],
|
[ "int", ["string", "string", "string"] ],
|
||||||
|
[ "int64", ["string"] ],
|
||||||
[ "string", [] ],
|
[ "string", [] ],
|
||||||
[ "string", ["string"] ],
|
[ "string", ["string"] ],
|
||||||
[ "string", ["string", "int"] ],
|
[ "string", ["string", "int"] ],
|
||||||
|
@@ -47,6 +47,8 @@ searpc_client_generic_callback (char *retstr, size_t len,
|
|||||||
AsyncCallData *data = vdata;
|
AsyncCallData *data = vdata;
|
||||||
GError *error = NULL;
|
GError *error = NULL;
|
||||||
void *result = NULL;
|
void *result = NULL;
|
||||||
|
int ret;
|
||||||
|
gint64 ret64;
|
||||||
|
|
||||||
if (errstr) {
|
if (errstr) {
|
||||||
g_set_error (&error, 0, 500, "Transport error: %s", errstr);
|
g_set_error (&error, 0, 500, "Transport error: %s", errstr);
|
||||||
@@ -55,9 +57,11 @@ searpc_client_generic_callback (char *retstr, size_t len,
|
|||||||
} else {
|
} else {
|
||||||
/* parse result and call the callback */
|
/* parse result and call the callback */
|
||||||
if (strcmp(data->ret_type, "int") == 0) {
|
if (strcmp(data->ret_type, "int") == 0) {
|
||||||
int ret = searpc_client_fret__int (retstr, len, &error);
|
ret = searpc_client_fret__int (retstr, len, &error);
|
||||||
printf ("ret is %d\n", ret);
|
result = (void *)&ret;
|
||||||
result = (void *)(long)ret;
|
} if (strcmp(data->ret_type, "int64") == 0) {
|
||||||
|
ret64 = searpc_client_fret__int64 (retstr, len, &error);
|
||||||
|
result = (void *)&ret64;
|
||||||
} else if (strcmp(data->ret_type, "string") == 0) {
|
} else if (strcmp(data->ret_type, "string") == 0) {
|
||||||
result = (void *)searpc_client_fret__string (retstr, len, &error);
|
result = (void *)searpc_client_fret__string (retstr, len, &error);
|
||||||
} else if (strcmp(data->ret_type, "object") == 0) {
|
} else if (strcmp(data->ret_type, "object") == 0) {
|
||||||
@@ -208,6 +212,23 @@ searpc_client_fret__int (char *data, size_t len, GError **error)
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
gint64
|
||||||
|
searpc_client_fret__int64 (char *data, size_t len, GError **error)
|
||||||
|
{
|
||||||
|
JsonParser *parser = NULL;
|
||||||
|
JsonNode *root = NULL;
|
||||||
|
JsonObject *object = NULL;
|
||||||
|
gint64 ret;
|
||||||
|
|
||||||
|
if (handle_ret_common(data, len, &parser, &root, &object, error) == 0) {
|
||||||
|
ret = json_object_get_int_member(object, "ret");
|
||||||
|
g_object_unref (parser);
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
GObject*
|
GObject*
|
||||||
searpc_client_fret__object (GType gtype, char *data, size_t len, GError **error)
|
searpc_client_fret__object (GType gtype, char *data, size_t len, GError **error)
|
||||||
{
|
{
|
||||||
|
@@ -68,6 +68,9 @@ searpc_client_fret__string (char *data, size_t len, GError **error);
|
|||||||
int
|
int
|
||||||
searpc_client_fret__int (char *data, size_t len, GError **error);
|
searpc_client_fret__int (char *data, size_t len, GError **error);
|
||||||
|
|
||||||
|
gint64
|
||||||
|
searpc_client_fret__int64 (char *data, size_t len, GError **error);
|
||||||
|
|
||||||
GObject*
|
GObject*
|
||||||
searpc_client_fret__object (GType gtype, char *data,
|
searpc_client_fret__object (GType gtype, char *data,
|
||||||
size_t len, GError **error);
|
size_t len, GError **error);
|
||||||
|
@@ -128,6 +128,26 @@ SearpcClient_Fret__Int(PyObject *self, PyObject *args)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static PyObject *
|
||||||
|
SearpcClient_Fret__Int64(PyObject *self, PyObject *args)
|
||||||
|
{
|
||||||
|
char *data;
|
||||||
|
gint64 res;
|
||||||
|
GError *error = NULL;
|
||||||
|
|
||||||
|
if (!PyArg_ParseTuple(args, "s", &data))
|
||||||
|
return NULL;
|
||||||
|
|
||||||
|
res = searpc_client_fret__int64(data, strlen(data), &error);
|
||||||
|
if (error) {
|
||||||
|
PyErr_SetString(SearpcError, error->message);
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
return PyLong_FromLongLong(res);;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
#include "fcallfret.h"
|
#include "fcallfret.h"
|
||||||
|
|
||||||
|
|
||||||
|
@@ -90,6 +90,7 @@ def gen_module_funcs_array():
|
|||||||
type_table = {
|
type_table = {
|
||||||
"string" : ("char *", "s"),
|
"string" : ("char *", "s"),
|
||||||
"int" : ("int", "i"),
|
"int" : ("int", "i"),
|
||||||
|
"int64" : ("gint64", "L"),
|
||||||
"object" : ("GObject *", "O"),
|
"object" : ("GObject *", "O"),
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user