module_func_block Struct Reference

Module functionality block. More...

#include <module.h>


Data Fields

const char * name
 text string name of module
int(* init )(struct module_env *env, int id)
 init the module.
void(* deinit )(struct module_env *env, int id)
 de-init, delete, the module.
void(* operate )(struct module_qstate *qstate, enum module_ev event, int id, struct outbound_entry *outbound)
 accept a new query, or work further on existing query.
void(* inform_super )(struct module_qstate *qstate, int id, struct module_qstate *super)
 inform super querystate about the results from this subquerystate.
void(* clear )(struct module_qstate *qstate, int id)
 clear module specific data
size_t(* get_mem )(struct module_env *env, int id)
 How much memory is the module specific data using.


Detailed Description

Module functionality block.

Field Documentation

int(* module_func_block::init)(struct module_env *env, int id)

init the module.

Called once for the global state. This is the place to apply settings from the config file.

Parameters:
env,: module environment.
id,: module id number. return: 0 on error

Referenced by check_mod(), and modstack_setup().

void(* module_func_block::deinit)(struct module_env *env, int id)

de-init, delete, the module.

Called once for the global state.

Parameters:
env,: module environment.
id,: module id number.

Referenced by check_mod(), and modstack_desetup().

void(* module_func_block::operate)(struct module_qstate *qstate, enum module_ev event, int id, struct outbound_entry *outbound)

accept a new query, or work further on existing query.

Changes the qstate->ext_state to be correct on exit.

Parameters:
ev,: event that causes the module state machine to (re-)activate.
qstate,: the query state. Note that this method is not allowed to change the query state 'identity', that is query info, qflags, and priming status. Attach a subquery to get results to a different query.
id,: module id number that operate() is called on.
outbound,: if not NULL this event is due to the reply/timeout or error on this outbound query.
Returns:
: if at exit the ext_state is: o wait_module: next module is started. (with pass event). o error or finished: previous module is resumed. o otherwise it waits until that event happens (assumes the service routine to make subrequest or send message have been called.

Referenced by mesh_run().

void(* module_func_block::inform_super)(struct module_qstate *qstate, int id, struct module_qstate *super)

inform super querystate about the results from this subquerystate.

Is called when the querystate is finished.

Parameters:
qstate,: the query state that is finished. Examine return_rcode and return_reply in the qstate.
id,: module id for this module. This coincides with the current module for the super qstate.
super,: the super querystate that needs to be informed.

Referenced by mesh_walk_supers().

size_t(* module_func_block::get_mem)(struct module_env *env, int id)

How much memory is the module specific data using.

Parameters:
env,: module environment.
id,: the module id.
Returns:
the number of bytes that are alloced.

Referenced by print_mem(), and worker_mem_report().


The documentation for this struct was generated from the following file:

Generated on Mon Nov 16 11:49:47 2009 for unbound by  doxygen 1.5.9