+
+ if ((sessionflags & AFB_SESSION_REFRESH_V2) != 0) {
+ afb_context_refresh(&xreq->context);
+ }
+ if ((sessionflags & AFB_SESSION_CLOSE_V2) != 0) {
+ afb_context_close(&xreq->context);
+ }
+
+ return 0;
+}
+
+void afb_xreq_call_verb_v1(struct afb_xreq *xreq, const struct afb_verb_desc_v1 *verb)
+{
+ if (!verb)
+ afb_xreq_fail_unknown_verb(xreq);
+ else
+ if (!xreq_session_check_apply_v1(xreq, verb->session))
+ verb->callback(to_req(xreq));
+}
+
+void afb_xreq_call_verb_v2(struct afb_xreq *xreq, const struct afb_verb_v2 *verb)
+{
+ if (!verb)
+ afb_xreq_fail_unknown_verb(xreq);
+ else
+ if (!xreq_session_check_apply_v2(xreq, verb->session, verb->auth))
+ verb->callback(to_req(xreq));
+}
+
+void afb_xreq_init(struct afb_xreq *xreq, const struct afb_xreq_query_itf *queryitf)
+{
+ memset(xreq, 0, sizeof *xreq);
+ xreq->refcount = 1;
+ xreq->queryitf = queryitf;
+}
+
+void afb_xreq_fail_unknown_api(struct afb_xreq *xreq)
+{
+ afb_xreq_fail_f(xreq, "unknown-api", "api %s not found (for verb %s)", xreq->api, xreq->verb);