Code Review
/
src
/
app-framework-binder.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
review
|
tree
raw
|
inline
| side by side
Make status common
[src/app-framework-binder.git]
/
src
/
afb-xreq.c
diff --git
a/src/afb-xreq.c
b/src/afb-xreq.c
index
9c4cab8
..
cd0b086
100644
(file)
--- a/
src/afb-xreq.c
+++ b/
src/afb-xreq.c
@@
-109,7
+109,7
@@
static void xreq_fail_cb(void *closure, const char *status, const char *info)
if (xreq->queryitf->fail)
xreq->queryitf->fail(xreq, status, info);
else
if (xreq->queryitf->fail)
xreq->queryitf->fail(xreq, status, info);
else
- xreq->queryitf->reply(xreq, 1, afb_msg_json_reply_error(status, info, &xreq->context, NULL));
+ xreq->queryitf->reply(xreq,
-
1, afb_msg_json_reply_error(status, info, &xreq->context, NULL));
}
}
}
}
@@
-215,7
+215,7
@@
struct xreq_sync
struct json_object *args;
struct jobloop *jobloop;
struct json_object *result;
struct json_object *args;
struct jobloop *jobloop;
struct json_object *result;
- int
iserror
;
+ int
status
;
};
static void xreq_sync_leave(struct xreq_sync *sync)
};
static void xreq_sync_leave(struct xreq_sync *sync)
@@
-227,11
+227,11
@@
static void xreq_sync_leave(struct xreq_sync *sync)
}
}
}
}
-static void xreq_sync_reply(void *closure, int
iserror
, struct json_object *obj)
+static void xreq_sync_reply(void *closure, int
status
, struct json_object *obj)
{
struct xreq_sync *sync = closure;
{
struct xreq_sync *sync = closure;
- sync->
iserror = iserror
;
+ sync->
status = status
;
sync->result = json_object_get(obj);
xreq_sync_leave(sync);
}
sync->result = json_object_get(obj);
xreq_sync_leave(sync);
}
@@
-244,7
+244,7
@@
static void xreq_sync_enter(int signum, void *closure, struct jobloop *jobloop)
sync->jobloop = jobloop;
xreq_subcall_cb(sync->caller, sync->api, sync->verb, json_object_get(sync->args), xreq_sync_reply, sync);
} else {
sync->jobloop = jobloop;
xreq_subcall_cb(sync->caller, sync->api, sync->verb, json_object_get(sync->args), xreq_sync_reply, sync);
} else {
- sync->
iserror =
1;
+ sync->
status = -
1;
xreq_sync_leave(sync);
}
}
xreq_sync_leave(sync);
}
}
@@
-261,16
+261,16
@@
static int xreq_subcallsync_cb(void *closure, const char *api, const char *verb,
sync.args = args;
sync.jobloop = NULL;
sync.result = NULL;
sync.args = args;
sync.jobloop = NULL;
sync.result = NULL;
- sync.
iserror = 1
;
+ sync.
status = 0
;
rc = jobs_enter(NULL, 0, xreq_sync_enter, &sync);
json_object_put(args);
rc = jobs_enter(NULL, 0, xreq_sync_enter, &sync);
json_object_put(args);
- if (rc < 0 || sync.
iserror
) {
+ if (rc < 0 || sync.
status < 0
) {
*result = sync.result ? : afb_msg_json_internal_error();
*result = sync.result ? : afb_msg_json_internal_error();
- return
0
;
+ return
-1
;
}
*result = sync.result;
}
*result = sync.result;
- return
1
;
+ return
0
;
}
static void xreq_vverbose_cb(void*closure, int level, const char *file, int line, const char *func, const char *fmt, va_list args)
}
static void xreq_vverbose_cb(void*closure, int level, const char *file, int line, const char *func, const char *fmt, va_list args)
@@
-279,6
+279,12
@@
static void xreq_vverbose_cb(void*closure, int level, const char *file, int line
vverbose(level, file, line, func, fmt, args);
}
vverbose(level, file, line, func, fmt, args);
}
+static struct afb_stored_req *xreq_store_cb(void *closure)
+{
+ xreq_addref_cb(closure);
+ return closure;
+}
+
/******************************************************************************/
static struct json_object *xreq_hooked_json_cb(void *closure)
/******************************************************************************/
static struct json_object *xreq_hooked_json_cb(void *closure)
@@
-385,12
+391,12
@@
struct reply
void *closure;
};
void *closure;
};
-static void xreq_hooked_subcall_reply_cb(void *closure, int
iserror
, struct json_object *result)
+static void xreq_hooked_subcall_reply_cb(void *closure, int
status
, struct json_object *result)
{
struct reply *reply = closure;
{
struct reply *reply = closure;
- afb_hook_xreq_subcall_result(reply->xreq,
iserror
, result);
- reply->callback(reply->closure,
iserror
, result);
+ afb_hook_xreq_subcall_result(reply->xreq,
status
, result);
+ reply->callback(reply->closure,
status
, result);
free(reply);
}
free(reply);
}
@@
-429,6
+435,14
@@
static void xreq_hooked_vverbose_cb(void*closure, int level, const char *file, i
va_end(ap);
}
va_end(ap);
}
+static struct afb_stored_req *xreq_hooked_store_cb(void *closure)
+{
+ struct afb_xreq *xreq = closure;
+ struct afb_stored_req *r = xreq_store_cb(closure);
+ afb_hook_xreq_store(xreq, r);
+ return r;
+}
+
/******************************************************************************/
const struct afb_req_itf xreq_itf = {
/******************************************************************************/
const struct afb_req_itf xreq_itf = {
@@
-448,7
+462,8
@@
const struct afb_req_itf xreq_itf = {
.unsubscribe = xreq_unsubscribe_cb,
.subcall = xreq_subcall_cb,
.subcallsync = xreq_subcallsync_cb,
.unsubscribe = xreq_unsubscribe_cb,
.subcall = xreq_subcall_cb,
.subcallsync = xreq_subcallsync_cb,
- .vverbose = xreq_vverbose_cb
+ .vverbose = xreq_vverbose_cb,
+ .store = xreq_store_cb
};
const struct afb_req_itf xreq_hooked_itf = {
};
const struct afb_req_itf xreq_hooked_itf = {
@@
-468,7
+483,8
@@
const struct afb_req_itf xreq_hooked_itf = {
.unsubscribe = xreq_hooked_unsubscribe_cb,
.subcall = xreq_hooked_subcall_cb,
.subcallsync = xreq_hooked_subcallsync_cb,
.unsubscribe = xreq_hooked_unsubscribe_cb,
.subcall = xreq_hooked_subcall_cb,
.subcallsync = xreq_hooked_subcallsync_cb,
- .vverbose = xreq_hooked_vverbose_cb
+ .vverbose = xreq_hooked_vverbose_cb,
+ .store = xreq_hooked_store_cb
};
static inline struct afb_req to_req(struct afb_xreq *xreq)
};
static inline struct afb_req to_req(struct afb_xreq *xreq)
@@
-478,6
+494,14
@@
static inline struct afb_req to_req(struct afb_xreq *xreq)
/******************************************************************************/
/******************************************************************************/
+struct afb_req afb_xreq_unstore(struct afb_stored_req *sreq)
+{
+ struct afb_xreq *xreq = (struct afb_xreq *)sreq;
+ if (xreq->hookflags)
+ afb_hook_xreq_unstore(xreq);
+ return to_req(xreq);
+}
+
struct json_object *afb_xreq_json(struct afb_xreq *xreq)
{
return afb_req_json(to_req(xreq));
struct json_object *afb_xreq_json(struct afb_xreq *xreq)
{
return afb_req_json(to_req(xreq));