Electroneum
libworker.h File Reference
Include dependency graph for libworker.h:

Go to the source code of this file.

Classes

struct  libworker
 

Functions

int libworker_bg (struct ub_ctx *ctx)
 
int libworker_fg (struct ub_ctx *ctx, struct ctx_query *q)
 
struct libworkerlibworker_create_event (struct ub_ctx *ctx, struct ub_event_base *eb)
 
int libworker_attach_mesh (struct ub_ctx *ctx, struct ctx_query *q, int *async_id)
 
void libworker_delete_event (struct libworker *w)
 
void libworker_alloc_cleanup (void *arg)
 
void libworker_enter_result (struct ub_result *res, struct sldns_buffer *buf, struct regional *temp, enum sec_status msg_security)
 

Detailed Description

This file contains the worker process or thread that performs the DNS resolving and validation. The worker is called by a procedure and if in the background continues until exit, if in the foreground returns from the procedure when done.

Definition in file libworker.h.

Function Documentation

◆ libworker_alloc_cleanup()

void libworker_alloc_cleanup ( void *  arg)

cleanup the cache to remove all rrset IDs from it, arg is libworker

◆ libworker_attach_mesh()

int libworker_attach_mesh ( struct ub_ctx ctx,
struct ctx_query q,
int *  async_id 
)

Attach context_query to mesh for callback in event-driven setup.

Parameters
ctxcontext
qcontext query entry
async_idstore query num if query takes long.
Returns
0 if finished OK, else error.

◆ libworker_bg()

int libworker_bg ( struct ub_ctx ctx)

Create a background worker

Parameters
ctxis updated with pid/tid of the background worker. a new allocation cache is obtained from ctx. It contains the threadnumber and unique id for further (shared) cache insertions.
Returns
0 if OK, else error. Further communication is done via the pipes in ctx.

◆ libworker_create_event()

struct libworker* libworker_create_event ( struct ub_ctx ctx,
struct ub_event_base eb 
)

create worker for event-based interface.

Parameters
ctxcontext with config.
ebevent base.
Returns
new worker or NULL.

◆ libworker_delete_event()

void libworker_delete_event ( struct libworker w)

delete worker for event-based interface. does not free the event_base.

Parameters
wevent-based worker to delete.

◆ libworker_enter_result()

void libworker_enter_result ( struct ub_result res,
struct sldns_buffer buf,
struct regional temp,
enum sec_status  msg_security 
)

fill result from parsed message, on error fills servfail

Parameters
resis clear at start, filled in at end.
bufcontains DNS message.
temptemporary buffer for parse.
msg_securitysecurity status of the DNS message. On error, the res may contain a different status (out of memory is not secure, not bogus).

◆ libworker_fg()

int libworker_fg ( struct ub_ctx ctx,
struct ctx_query q 
)

Create a foreground worker. This worker will join the threadpool of resolver threads. It exits when the query answer has been obtained (or error). This routine blocks until the worker is finished.

Parameters
ctxnew allocation cache obtained and returned to it.
qquery (result is stored in here).
Returns
0 if finished OK, else error.