Skip to content
Snippets Groups Projects
Commit cc386ead authored by Marek Vavruša's avatar Marek Vavruša
Browse files

worker: caller now creates (optional) cache

parent 4b0c12ea
Branches
Tags
No related merge requests found
......@@ -23,6 +23,9 @@
#include "daemon/worker.h"
#include "daemon/layer/query.h"
/* Defines */
#define CACHE_DEFAULT_SIZE 10*1024*1024
static void buf_alloc(uv_handle_t* handle, size_t suggested_size, uv_buf_t* buf)
{
struct worker_ctx *worker = handle->data;
......@@ -86,12 +89,26 @@ static void worker_recv(uv_udp_t *handle, ssize_t nread, const uv_buf_t *buf,
knot_pkt_free(&answer);
}
void worker_init(struct worker_ctx *worker, mm_ctx_t *mm)
int worker_init(struct worker_ctx *worker, mm_ctx_t *mm)
{
memset(worker, 0, sizeof(struct worker_ctx));
worker->pool = mm;
kr_context_init(&worker->resolve, mm);
/* Open resolution context */
int ret = kr_context_init(&worker->resolve, mm);
if (ret != KNOT_EOK) {
return ret;
}
/* Open resolution context cache */
worker->resolve.cache = kr_cache_open("/tmp/kresolved", mm, CACHE_DEFAULT_SIZE);
if (worker->resolve.cache == NULL) {
fprintf(stderr, "Cache directory '/tmp/kresolved' not exists, exitting.\n");
kr_context_deinit(&worker->resolve);
return KNOT_ERROR;
}
return KNOT_EOK;
}
void worker_deinit(struct worker_ctx *worker)
......
......@@ -26,7 +26,7 @@ struct worker_ctx {
mm_ctx_t *pool;
};
void worker_init(struct worker_ctx *worker, mm_ctx_t *mm);
int worker_init(struct worker_ctx *worker, mm_ctx_t *mm);
void worker_deinit(struct worker_ctx *worker);
void worker_start(uv_udp_t *req, struct worker_ctx *worker);
void worker_stop(uv_udp_t *req);
......@@ -23,22 +23,25 @@
int kr_context_init(struct kr_context *ctx, mm_ctx_t *mm)
{
memset(ctx, 0, sizeof(struct kr_context));
if (ctx == NULL) {
return KNOT_EINVAL;
}
memset(ctx, 0, sizeof(struct kr_context));
ctx->pool = mm;
ctx->cache = kr_cache_open("/tmp/kresolved", mm);
if (ctx->cache == NULL) {
fprintf(stderr, "Cache directory '/tmp/kresolved' not exists, exitting.\n");
return KNOT_ERROR;
}
return KNOT_EOK;
}
int kr_context_deinit(struct kr_context *ctx)
{
kr_cache_close(ctx->cache);
if (ctx == NULL) {
return KNOT_EINVAL;
}
if (ctx->cache) {
kr_cache_close(ctx->cache);
}
return KNOT_EOK;
}
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment