Module dht_node

dht_node main file.

Copyright © 2007-2016 Zuse Institute Berlin

Version: $Id$

Behaviours: gen_component.

Authors: Thorsten Schuett (schuett@zib.de).

Description

dht_node main file

Data Types

client_version()

client_version() = non_neg_integer()

database_message()

database_message() = 
    {22,
     Source_PID :: comm:mypid(),
     SourceId :: any(),
     HashedKey :: rt_chord:key()} |
    {get_entries,
     Source_PID :: comm:mypid(),
     Interval :: intervals:interval()} |
    {get_entries,
     Source_PID :: comm:mypid(),
     FilterFun :: fun((db_entry:entry()) -> boolean()),
     ValFun :: fun((db_entry:entry()) -> any())} |
    {get_chunk,
     Source_PID :: comm:mypid(),
     Interval :: intervals:interval(),
     MaxChunkSize :: pos_integer() | all} |
    {get_chunk,
     Source_PID :: comm:mypid(),
     Interval :: intervals:interval(),
     FilterFun :: fun((db_entry:entry()) -> boolean()),
     ValFun :: fun((db_entry:entry()) -> any()),
     MaxChunkSize :: pos_integer() | all} |
    {update_key_entries,
     Source_PID :: comm:mypid(),
     [{HashedKey :: rt_chord:key(),
       NewValue :: db_dht:value(),
       NewVersion :: client_version()}]} |
    {get_key_entry,
     Source_PID :: comm:mypid(),
     HashedKey :: rt_chord:key()} |
    {set_key_entry,
     Source_PID :: comm:mypid(),
     Entry :: db_entry:entry()} |
    {delete_key,
     Source_PID :: comm:mypid(),
     ClientsId :: {delete_client_id, uid:global_uid()},
     HashedKey :: rt_chord:key()} |
    {add_data, Source_PID :: comm:mypid(), db_dht:db_as_list()} |
    {drop_data,
     Data :: db_dht:db_as_list(),
     Sender :: comm:mypid()}

lookup_message()

lookup_message() = 
    {1,
     Key :: rt_chord:key(),
     Hops :: pos_integer(),
     Msg :: comm:message()} |
    {2,
     Key :: rt_chord:key(),
     Data :: dht_node_lookup:data(),
     Msg :: comm:message()}

message()

message() = 
    bulkowner:bulkowner_msg() |
    database_message() |
    lookup_message() |
    dht_node_join:join_message() |
    rt_message() |
    dht_node_move:move_message() |
    misc_message() |
    snapshot_message() |
    {zombie, Node :: node:node_type()} |
    {fd_notify,
     fd:event(),
     DeadPid :: comm:mypid(),
     Reason :: fd:reason()} |
    {leave, SourcePid :: comm:erl_local_pid() | null} |
    {rejoin,
     IdVersion :: non_neg_integer(),
     JoinOptions :: [tuple()],
     {get_move_state_response, MoveState :: [tuple()]}}

misc_message()

misc_message() = 
    {get_yaws_info, Pid :: comm:mypid()} |
    {get_state,
     Pid :: comm:mypid(),
     Which :: dht_node_state:name()} |
    {get_node_details, Pid :: comm:mypid()} |
    {get_node_details,
     Pid :: comm:mypid(),
     Which :: [node_details:node_details_name()]} |
    {get_pid_group, Pid :: comm:mypid()} |
    {dump} |
    {web_debug_info, Requestor :: comm:erl_local_pid()} |
    {get_dht_nodes_response, KnownHosts :: [comm:mypid()]} |
    {unittest_get_bounds_and_data,
     SourcePid :: comm:mypid(),
     full | kv}

rt_message()

rt_message() = 
    {rt_update, RoutingTable :: rt_chord:external_rt()}

snapshot_message()

snapshot_message() = 
    {do_snapshot,
     SnapNumber :: non_neg_integer(),
     Leader :: comm:mypid()} |
    {local_snapshot_is_done}

Function Index

start_gen_component/5
on/2message handler.
init/1joins this node in the ring and calls the main loop.
start_link/2spawns a scalaris node, called by the scalaris supervisor process.
is_first/1Checks whether this VM is marked as first, e.g.
is_alive/1
is_alive_no_slide/1
is_alive_fully_joined/1

Function Details

start_gen_component/5

start_gen_component(Module :: module(),
                    Handler :: gen_component:handler(),
                    Args :: term(),
                    Options :: [gen_component:option()],
                    Self :: pid()) ->
                       no_return() | ok

on/2

on(Msg :: message(), State :: dht_node_state:state()) ->
      dht_node_state:state() | kill

message handler

init/1

init(Options :: [tuple()]) ->
        dht_node_state:state() |
        {'$gen_component',
         [{on_handler, Handler :: gen_component:handler()}],
         State :: dht_node_join:join_state()}

joins this node in the ring and calls the main loop

start_link/2

start_link(DHTNodeGroup :: pid_groups:groupname(),
           Options :: [tuple()]) ->
              {ok, pid()}

spawns a scalaris node, called by the scalaris supervisor process

is_first/1

is_first(Options :: [tuple()]) -> boolean()

Checks whether this VM is marked as first, e.g. in a unit test, and this is the first node in this VM.

is_alive/1

is_alive(State ::
             dht_node_join:join_state() |
             dht_node_state:state() |
             term()) ->
            boolean()

is_alive_no_slide/1

is_alive_no_slide(State ::
                      dht_node_join:join_state() |
                      dht_node_state:state() |
                      term()) ->
                     boolean()

is_alive_fully_joined/1

is_alive_fully_joined(State ::
                          dht_node_join:join_state() |
                          dht_node_state:state() |
                          term()) ->
                         boolean()


Generated by EDoc, Aug 2 2016, 13:43:24.