Namespace: 'Node#nodeMap'

Serl.'Node#nodeMap'

A map of a node's known (currently connected, and previously connected)) nodes, including itself. Here we use a Map, because we anticipate frequent lookups based on given NodeIndexs. We also expect 'frequent additions and removals of key-value pairs'

Properties:
Name Type Description
@keys module:Serl.NodeIndex

Keys in the Map should be of this type.

@values described

Values in the Map should be of the form { name: NodeName }.

counter Serl.NodeIndex

module:Serl.'Node#nodeMap'.counter

Source:
To Do:
  • Add nodeMap.counter to make this consistent with procMap.counter; update docs to remind developers to enforce nodeIndex = parseInt(nodeIndex).
  • Values should have their own class.
  • Should NodeMap have its own class?

Members

(static) this.nodeMap.counter

This helps us avoid duplicate Serl.NodeIndexs on the local node, when generating a Pid.

Each node must track all previously known nodes, and so we want an incrementing counter, to ensure that for any single lifetime of a node, N, every other node that ever connects to N, has a unique NodeIndex from N's point of view.

In the current implementation, the upper limit of trackable nodes connected to N in one lifetime seems to simply be the size of Node.nodeMap.counter. Here we impose a convention where the local node is index=0

Properties:
Name Type Description
module:Serl.'Node#nodeMap'.counter
Source: