I see no potential use for `set`; it's not a suitable abstraction.
And for `get` we want to use a pointer to the public type
instead of the private one.
Overall, worker.h has way too many stuff, but this branch is
not a good place to clean it up.
return task->ctx;
}
-struct session *worker_request_get_source_session(struct request_ctx *ctx)
+struct session *worker_request_get_source_session(const struct kr_request *req)
{
- return ctx->source.session;
-}
-
-void worker_request_set_source_session(struct request_ctx *ctx, struct session *session)
-{
- ctx->source.session = session;
+ static_assert(offsetof(struct request_ctx, req) == 0,
+ "Bad struct request_ctx definition.");
+ return ((struct request_ctx *)req)->source.session;
}
uint16_t worker_task_pkt_get_msgid(struct qr_task *task)
struct request_ctx *worker_task_get_request(struct qr_task *task);
-struct session *worker_request_get_source_session(struct request_ctx *);
-
-void worker_request_set_source_session(struct request_ctx *, struct session *session);
+/** Note: source session is NULL in case the request hasn't come over network. */
+KR_EXPORT struct session *worker_request_get_source_session(const struct kr_request *req);
uint16_t worker_task_pkt_get_msgid(struct qr_task *task);
void worker_task_pkt_set_msgid(struct qr_task *task, uint16_t msgid);