util.hashring: Support associating arbitrary data with nodes
In this API, a 'node' is always a simple text string. Sometimes the caller may
have a more complex structure representing a node, but the hash ring is really
only concerned with the node's name.
This API change allows :add_nodes() to take a table of `node_name = value`
pairs, as well as the simple array of node names previously accepted.
The 'value' of the selected node is returned as a new second result from
:get_node().
If no value is passed when a node is added, it defaults to `true` (as before,
but this was never previously exposed).
local record util
enum loglevel
"debug"
"info"
"warn"
"error"
end
type logger = function ( loglevel, string, ...:any )
type sink = function ( string, loglevel, string, ...:any )
type simple_sink = function ( string, loglevel, string )
init : function ( string ) : logger
make_logger : function ( string, loglevel ) : function ( string, ...:any )
reset : function ()
add_level_sink : function ( loglevel, sink )
add_simple_sink : function ( simple_sink, { loglevel } )
end
return util