{
    "project": {
        "name": "Gossip",
        "description": "Distributed messaging library built with ZeroMQ",
        "version": "0.0.1",
        "url": "https://github.com/matomesc/gossip"
    },
    "files": {
        "core/cluster.js": {
            "name": "core/cluster.js",
            "modules": {
                "core": 1
            },
            "classes": {
                "Cluster": 1
            },
            "fors": {},
            "namespaces": {}
        },
        "core/hub.js": {
            "name": "core/hub.js",
            "modules": {},
            "classes": {
                "Hub": 1
            },
            "fors": {},
            "namespaces": {}
        },
        "core/message.js": {
            "name": "core/message.js",
            "modules": {},
            "classes": {
                "Message": 1
            },
            "fors": {},
            "namespaces": {}
        },
        "core/message_factory.js": {
            "name": "core/message_factory.js",
            "modules": {},
            "classes": {},
            "fors": {},
            "namespaces": {}
        },
        "core/node.js": {
            "name": "core/node.js",
            "modules": {},
            "classes": {
                "Node": 1
            },
            "fors": {},
            "namespaces": {}
        },
        "core/registry.js": {
            "name": "core/registry.js",
            "modules": {},
            "classes": {},
            "fors": {},
            "namespaces": {}
        },
        "core/utils.js": {
            "name": "core/utils.js",
            "modules": {},
            "classes": {
                "utils": 1
            },
            "fors": {},
            "namespaces": {}
        }
    },
    "modules": {
        "core": {
            "name": "core",
            "submodules": {},
            "classes": {
                "Cluster": 1,
                "Hub": 1,
                "Message": 1,
                "Node": 1,
                "utils": 1
            },
            "fors": {},
            "namespaces": {},
            "tag": "module",
            "file": "core/utils.js",
            "line": 3,
            "description": "Cluster data structure.\n\nResponsible for maintaing the state of the nodes in the cluster."
        }
    },
    "classes": {
        "Cluster": {
            "name": "Cluster",
            "shortname": "Cluster",
            "classitems": [],
            "plugins": [],
            "extensions": [],
            "plugin_for": [],
            "extension_for": [],
            "module": "core",
            "file": "core/cluster.js",
            "line": 1,
            "description": "Cluster data structure.\n\nResponsible for maintaing the state of the nodes in the cluster.",
            "params": [
                {
                    "name": "options",
                    "description": "",
                    "type": "Object",
                    "optional": true
                }
            ],
            "is_constructor": 1
        },
        "Hub": {
            "name": "Hub",
            "shortname": "Hub",
            "classitems": [],
            "plugins": [],
            "extensions": [],
            "plugin_for": [],
            "extension_for": [],
            "module": "core",
            "namespace": "",
            "file": "core/hub.js",
            "line": 10,
            "description": "The `Hub` abstracts low level ZeroMQ communication.\n\nFeatures:\n\n- 1-1, 1-N req / rep\n- message acknowledgements\n- retries\n- keepalives\n\nIt three ZMQ sockets: router, pub and sub.",
            "extends": "EventEmitter",
            "params": [
                {
                    "name": "options",
                    "description": "",
                    "type": "Object",
                    "props": [
                        {
                            "name": "id",
                            "description": "Uniquely identifies the hub on the network.",
                            "type": "String",
                            "optional": true
                        },
                        {
                            "name": "router",
                            "description": "Router socket endpoint. Supports all the ZeroMQ socket endpoints.",
                            "type": "String"
                        },
                        {
                            "name": "pub",
                            "description": "Pub socket endpoint.",
                            "type": "String",
                            "optional": true
                        }
                    ]
                }
            ],
            "is_constructor": 1
        },
        "Message": {
            "name": "Message",
            "shortname": "Message",
            "classitems": [],
            "plugins": [],
            "extensions": [],
            "plugin_for": [],
            "extension_for": [],
            "module": "core",
            "namespace": "",
            "file": "core/message.js",
            "line": 1,
            "description": "Create a new message from an object or buffer.",
            "params": [
                {
                    "name": "body",
                    "description": "",
                    "type": "Object|Buffer",
                    "optional": true,
                    "optdefault": "null"
                }
            ],
            "is_constructor": 1
        },
        "Node": {
            "name": "Node",
            "shortname": "Node",
            "classitems": [],
            "plugins": [],
            "extensions": [],
            "plugin_for": [],
            "extension_for": [],
            "module": "core",
            "namespace": "",
            "file": "core/node.js",
            "line": 14,
            "description": "The node is the building block of gossip.\n\nEach node consists of a hub. A hub an abstraction built out of a router and pub socket that allows\n1-N request-reply and fire-forget messaging.",
            "params": [
                {
                    "name": "options",
                    "description": "",
                    "type": "Object|String",
                    "optional": true,
                    "props": [
                        {
                            "name": "id",
                            "description": "Should uniquely identify the node in the cluster.",
                            "type": "String",
                            "optional": true
                        },
                        {
                            "name": "endpoints",
                            "description": "",
                            "type": "Object",
                            "optional": true,
                            "props": [
                                {
                                    "name": "router",
                                    "description": "The router socket to bind to (ipc://..., tcp://...).",
                                    "type": "String",
                                    "optional": true
                                },
                                {
                                    "name": "pub",
                                    "description": "The pub socket to bind to.",
                                    "type": "String",
                                    "optional": true
                                }
                            ]
                        },
                        {
                            "name": "name",
                            "description": "A name for the node, not necessarily unique.",
                            "type": "String",
                            "optional": true
                        },
                        {
                            "name": "keepalive",
                            "description": "",
                            "type": "Object",
                            "optional": true,
                            "props": [
                                {
                                    "name": "period",
                                    "description": "How often to send keepalives to the cluster.",
                                    "type": "Number",
                                    "optional": true
                                }
                            ]
                        }
                    ]
                }
            ],
            "is_constructor": 1
        },
        "utils": {
            "name": "utils",
            "shortname": "utils",
            "classitems": [],
            "plugins": [],
            "extensions": [],
            "plugin_for": [],
            "extension_for": [],
            "module": "core",
            "namespace": "",
            "file": "core/utils.js",
            "line": 3
        }
    },
    "classitems": [
        {
            "file": "core/cluster.js",
            "line": 13,
            "description": "Maps node ids to node objects.",
            "itemtype": "property",
            "name": "_idIndex",
            "type": "Object",
            "access": "private",
            "tagname": "",
            "class": "Cluster",
            "module": "core"
        },
        {
            "file": "core/cluster.js",
            "line": 23,
            "description": "Maps message types to node ids.",
            "itemtype": "property",
            "name": "_messageTypeIndex",
            "type": "Object",
            "access": "private",
            "tagname": "",
            "class": "Cluster",
            "module": "core"
        },
        {
            "file": "core/cluster.js",
            "line": 33,
            "description": "Add a new node to the cluster.",
            "itemtype": "method",
            "name": "addNode",
            "params": [
                {
                    "name": "node",
                    "description": "",
                    "type": "Node"
                }
            ],
            "class": "Cluster",
            "module": "core"
        },
        {
            "file": "core/cluster.js",
            "line": 54,
            "description": "Removes a node from the cluster.",
            "itemtype": "method",
            "name": "removeNode",
            "params": [
                {
                    "name": "id",
                    "description": "",
                    "type": "String"
                }
            ],
            "class": "Cluster",
            "module": "core"
        },
        {
            "file": "core/cluster.js",
            "line": 71,
            "description": "Get a node by id.",
            "itemtype": "method",
            "name": "getById",
            "params": [
                {
                    "name": "id",
                    "description": "",
                    "type": "String"
                }
            ],
            "return": {
                "description": "",
                "type": "Node"
            },
            "class": "Cluster",
            "module": "core"
        },
        {
            "file": "core/cluster.js",
            "line": 82,
            "description": "Get a node by message type.",
            "itemtype": "method",
            "name": "getByMessageType",
            "params": [
                {
                    "name": "type",
                    "description": "",
                    "type": "String"
                }
            ],
            "return": {
                "description": "Array of `Node` objects",
                "type": "Array"
            },
            "class": "Cluster",
            "module": "core"
        },
        {
            "file": "core/hub.js",
            "line": 62,
            "description": "The id of the hub's router socket. Other nodes use this to send messages us messages from their router sockets.",
            "itemtype": "property",
            "name": "routerSocketId",
            "type": "{Buffer}",
            "default": "null",
            "class": "Hub",
            "module": "core"
        },
        {
            "file": "core/hub.js",
            "line": 71,
            "description": "Whether all messages that this node sends should be `ack`ed.",
            "itemtype": "property",
            "name": "ackAll",
            "type": "{Boolean}",
            "default": "true",
            "class": "Hub",
            "module": "core"
        },
        {
            "file": "core/hub.js",
            "line": 80,
            "description": "Messages types which the node should `ack`. Overrides `ackAll`.",
            "itemtype": "property",
            "name": "ackOnly",
            "type": "{Object}",
            "default": "{}",
            "class": "Hub",
            "module": "core"
        },
        {
            "file": "core/hub.js",
            "line": 89,
            "description": "The hub's message factory. Used to create all messages sent.",
            "itemtype": "property",
            "name": "messageFactory",
            "type": "{MessageFactory}",
            "class": "Hub",
            "module": "core"
        },
        {
            "file": "core/hub.js",
            "line": 100,
            "description": "The hub's state machine.",
            "itemtype": "property",
            "name": "_machine",
            "type": "{Stately}",
            "access": "private",
            "tagname": "",
            "class": "Hub",
            "module": "core"
        },
        {
            "file": "core/hub.js",
            "line": 146,
            "description": "Bind the router and pub sockets. The hub can now send/receive messages.",
            "itemtype": "method",
            "name": "bind",
            "class": "Hub",
            "module": "core"
        },
        {
            "file": "core/hub.js",
            "line": 263,
            "description": "Connect the hub to another hub.",
            "itemtype": "method",
            "name": "handshake",
            "params": [
                {
                    "name": "hub",
                    "description": "The hub to connect to.",
                    "type": "Hub"
                },
                {
                    "name": "callback",
                    "description": "Called after completing the handshake.",
                    "type": "Function"
                }
            ],
            "class": "Hub",
            "module": "core"
        },
        {
            "file": "core/hub.js",
            "line": 309,
            "description": "Called when the hub receives a `_handshake` message.",
            "itemtype": "method",
            "name": "onHandshake",
            "params": [
                {
                    "name": "msg",
                    "description": "",
                    "type": "Message"
                }
            ],
            "class": "Hub",
            "module": "core"
        },
        {
            "file": "core/hub.js",
            "line": 338,
            "description": "Acknowledge the receival of a message by sending an `_ack` message.",
            "itemtype": "method",
            "name": "ack",
            "params": [
                {
                    "name": "msg",
                    "description": "",
                    "type": "Message"
                }
            ],
            "class": "Hub",
            "module": "core"
        },
        {
            "file": "core/hub.js",
            "line": 359,
            "description": "Reply to a message. Pass in a callback if you're expecting a reply.",
            "itemtype": "method",
            "name": "reply",
            "params": [
                {
                    "name": "msg",
                    "description": "The message you are replying to.",
                    "type": "Object"
                },
                {
                    "name": "data",
                    "description": "Optional data to send",
                    "type": "Object",
                    "optional": true
                },
                {
                    "name": "callback",
                    "description": "",
                    "type": "Function",
                    "optional": true
                }
            ],
            "class": "Hub",
            "module": "core"
        },
        {
            "file": "core/hub.js",
            "line": 408,
            "description": "Send a message to the hub identified by `id`.",
            "itemtype": "method",
            "name": "sendById",
            "params": [
                {
                    "name": "id",
                    "description": "",
                    "type": "String"
                },
                {
                    "name": "message",
                    "description": "",
                    "type": "Message"
                },
                {
                    "name": "callback",
                    "description": "If you are expecting a reply, this will be called with `(err, reply)`.",
                    "type": "Function",
                    "optional": true
                }
            ],
            "class": "Hub",
            "module": "core"
        },
        {
            "file": "core/hub.js",
            "line": 430,
            "description": "Connect the router socket to an endpoint.",
            "params": [
                {
                    "name": "endpoint",
                    "description": "",
                    "type": "String"
                }
            ],
            "access": "private",
            "tagname": "",
            "class": "Hub",
            "module": "core"
        },
        {
            "file": "core/hub.js",
            "line": 472,
            "description": "Send an array of buffers on the router socket.\n\nThe first frame **must** be the socket of the other hub.",
            "itemtype": "method",
            "name": "_sendRouter",
            "params": [
                {
                    "name": "frames",
                    "description": "Array of `Buffer`s.",
                    "type": "Array"
                }
            ],
            "access": "private",
            "tagname": "",
            "class": "Hub",
            "module": "core"
        },
        {
            "file": "core/hub.js",
            "line": 494,
            "description": "Send a buffer on the pub socket.",
            "itemtype": "method",
            "name": "_sendPub",
            "params": [
                {
                    "name": "buffer",
                    "description": "",
                    "type": "Buffer"
                }
            ],
            "access": "private",
            "tagname": "",
            "class": "Hub",
            "module": "core"
        },
        {
            "file": "core/hub.js",
            "line": 551,
            "itemtype": "method",
            "name": "routerSocketId",
            "params": [
                {
                    "name": "id",
                    "description": "",
                    "type": "String"
                }
            ],
            "return": {
                "description": "",
                "type": "Buffer"
            },
            "static": 1,
            "class": "Hub",
            "module": "core"
        },
        {
            "file": "core/hub.js",
            "line": 562,
            "itemtype": "method",
            "name": "op",
            "params": [
                {
                    "name": "options",
                    "description": "Same options as `retry.operation(options)`",
                    "type": "Object"
                }
            ],
            "return": {
                "description": "",
                "type": "RetryOperation"
            },
            "static": 1,
            "class": "Hub",
            "module": "core"
        },
        {
            "file": "core/hub.js",
            "line": 576,
            "description": "Caches operations returned by `Hub.op()`.",
            "itemtype": "property",
            "name": "_opCache",
            "type": "{Object}",
            "access": "private",
            "tagname": "",
            "static": 1,
            "class": "Hub",
            "module": "core"
        },
        {
            "file": "core/message.js",
            "line": 20,
            "itemtype": "method",
            "name": "set",
            "params": [
                {
                    "name": "path",
                    "description": ""
                },
                {
                    "name": "value",
                    "description": ""
                }
            ],
            "class": "Message",
            "module": "core"
        },
        {
            "file": "core/message.js",
            "line": 45,
            "itemtype": "method",
            "name": "get",
            "params": [
                {
                    "name": "path",
                    "description": "",
                    "optional": true
                }
            ],
            "return": {
                "description": "",
                "type": "*"
            },
            "class": "Message",
            "module": "core"
        },
        {
            "file": "core/message.js",
            "line": 72,
            "itemtype": "method",
            "name": "serialize",
            "return": {
                "description": "",
                "type": "Buffer"
            },
            "class": "Message",
            "module": "core"
        },
        {
            "file": "core/message.js",
            "line": 81,
            "itemtype": "method",
            "name": "deserialize",
            "return": {
                "description": "",
                "type": "Message"
            },
            "class": "Message",
            "module": "core"
        },
        {
            "file": "core/message_factory.js",
            "line": 3,
            "description": "Message factory.",
            "params": [
                {
                    "name": "options",
                    "description": "",
                    "type": "Object",
                    "optional": true,
                    "props": [
                        {
                            "name": "defaults",
                            "description": "",
                            "type": "Object",
                            "optional": true
                        }
                    ]
                }
            ],
            "is_constructor": 1,
            "class": "Node",
            "module": "core"
        },
        {
            "file": "core/message_factory.js",
            "line": 15,
            "description": "Build a message. Defaults are first applied, then `body`.",
            "params": [
                {
                    "name": "body",
                    "description": "message body",
                    "type": "Object"
                }
            ],
            "return": {
                "description": "",
                "type": "Message"
            },
            "class": "Node",
            "module": "core"
        },
        {
            "file": "core/node.js",
            "line": 34,
            "itemtype": "property",
            "name": "options",
            "type": "Object",
            "class": "Node",
            "module": "core"
        },
        {
            "file": "core/node.js",
            "line": 59,
            "itemtype": "property",
            "name": "hub",
            "type": "Hub",
            "class": "Node",
            "module": "core"
        },
        {
            "file": "core/node.js",
            "line": 167,
            "description": "Public API",
            "class": "Node",
            "module": "core"
        },
        {
            "file": "core/node.js",
            "line": 171,
            "description": "Starts the node.\n\nInternally, it initializes the sockets and internal listeners, transitions the node the `STARTED` state\nand flushes queued `join()` calls.",
            "itemtype": "method",
            "name": "start",
            "return": {
                "description": "",
                "type": "Node"
            },
            "chainable": 1,
            "class": "Node",
            "module": "core"
        },
        {
            "file": "core/node.js",
            "line": 196,
            "description": "Stops the node. Once a node is stopped, it can't be started again.\nIf you want to temporarily stop receiving messages, see `.pause()` and `.unpause()`.\n\nThis removes all message listeners and the node transitions to the STOPPED state.",
            "itemtype": "method",
            "name": "stop",
            "return": {
                "description": "",
                "type": "Node"
            },
            "chainable": 1,
            "class": "Node",
            "module": "core"
        },
        {
            "file": "core/node.js",
            "line": 217,
            "description": "Join a cluster.\n\nYou must specifiy either a node object or the configuration of a node\nalready in the cluster.",
            "params": [
                {
                    "name": "node",
                    "description": "",
                    "type": "Object|Node",
                    "props": [
                        {
                            "name": "id",
                            "description": "",
                            "type": "String"
                        },
                        {
                            "name": "endpoints.router",
                            "description": "",
                            "type": "String"
                        },
                        {
                            "name": "endpoints.pub",
                            "description": "",
                            "type": "String"
                        }
                    ]
                },
                {
                    "name": "cb",
                    "description": "",
                    "type": "Function"
                }
            ],
            "return": {
                "description": "",
                "type": "Node"
            },
            "class": "Node",
            "module": "core"
        },
        {
            "file": "core/node.js",
            "line": 298,
            "description": "Subscribe to messages from other nodes.",
            "itemtype": "method",
            "name": "on",
            "params": [
                {
                    "name": "type",
                    "description": "The type of message.",
                    "type": "String"
                },
                {
                    "name": "options",
                    "description": "",
                    "type": "Object|Function",
                    "optional": true,
                    "props": [
                        {
                            "name": "period",
                            "description": "Maximum time another node will wait for an answer before retrying.",
                            "type": "Number",
                            "optional": true
                        },
                        {
                            "name": "attempts",
                            "description": "Maximum attempts",
                            "type": "Number",
                            "optional": true
                        }
                    ]
                },
                {
                    "name": "cb",
                    "description": "Callback to execute when a message is received.",
                    "type": "Function"
                }
            ],
            "return": {
                "description": "",
                "type": "Node"
            },
            "chainable": 1,
            "class": "Node",
            "module": "core"
        },
        {
            "file": "core/node.js",
            "line": 326,
            "description": "Unsubscribe from messages from other nodes.",
            "params": [
                {
                    "name": "msgType",
                    "description": "The type of message to unsubscribe from. If not specified,\n                             unsubscribes from all messages.",
                    "type": "String",
                    "optional": true
                },
                {
                    "name": "cb",
                    "description": "The listener to remove. If not specified, removes all\n                             listeners.",
                    "type": "Function",
                    "optional": true
                }
            ],
            "return": {
                "description": "",
                "type": "Node"
            },
            "chainable": 1,
            "class": "Node",
            "module": "core"
        },
        {
            "file": "core/node.js",
            "line": 353,
            "description": "Send a message that will be load balanced across all other nodes that are\ninterested in the message.",
            "params": [
                {
                    "name": "type",
                    "description": "The type of message to send.",
                    "type": "String"
                },
                {
                    "name": "data",
                    "description": "",
                    "type": "Object"
                },
                {
                    "name": "cb",
                    "description": "Called with `(error, [reply])`",
                    "type": "Function"
                }
            ],
            "return": {
                "description": "",
                "type": "Node"
            },
            "chainable": 1,
            "class": "Node",
            "module": "core"
        },
        {
            "file": "core/node.js",
            "line": 374,
            "description": "Send a message to a specific node.\n\nTODO: check if `cb.length === 1` and don't attach reply handler\nTODO: this `.reply()` should delegate to the same method",
            "params": [
                {
                    "name": "id",
                    "description": "",
                    "type": "String"
                },
                {
                    "name": "type",
                    "description": "",
                    "type": "String"
                },
                {
                    "name": "data",
                    "description": "",
                    "type": "*",
                    "optional": true
                },
                {
                    "name": "cb",
                    "description": "",
                    "type": "Function"
                }
            ],
            "chainable": 1,
            "class": "Node",
            "module": "core"
        },
        {
            "file": "core/node.js",
            "line": 420,
            "description": "Send a message to all nodes that are listening for message of type `type`.\n\nIf you are expecting a reply, pass in a callback.",
            "params": [
                {
                    "name": "type",
                    "description": "",
                    "type": "String"
                },
                {
                    "name": "data",
                    "description": "",
                    "type": "Object"
                },
                {
                    "name": "cb",
                    "description": "",
                    "type": "Function",
                    "optional": true
                }
            ],
            "return": {
                "description": "",
                "type": "Node"
            },
            "chainable": 1,
            "class": "Node",
            "module": "core"
        },
        {
            "file": "core/node.js",
            "line": 449,
            "description": "Send a reply to a message.\n\nTODO: refactor this and `.sendTo`",
            "params": [
                {
                    "name": "origMsg",
                    "description": "The message that we want to reply to",
                    "type": "Object"
                },
                {
                    "name": "data",
                    "description": "Data that we want to send",
                    "type": "Object"
                },
                {
                    "name": "cb",
                    "description": "Called with `(error, [reply])`",
                    "type": "Function"
                }
            ],
            "class": "Node",
            "module": "core"
        },
        {
            "file": "core/node.js",
            "line": 486,
            "description": "Returns information about this node.",
            "return": {
                "description": "",
                "type": "Object"
            },
            "class": "Node",
            "module": "core"
        },
        {
            "file": "core/node.js",
            "line": 501,
            "description": "Get the messages that the node is listening on.",
            "class": "Node",
            "module": "core"
        },
        {
            "file": "core/node.js",
            "line": 508,
            "description": "Private API",
            "class": "Node",
            "module": "core"
        },
        {
            "file": "core/node.js",
            "line": 512,
            "description": "Initialze listeners for protocol messages.",
            "access": "private",
            "tagname": "",
            "class": "Node",
            "module": "core"
        },
        {
            "file": "core/node.js",
            "line": 525,
            "description": "Initializes the pub and router sockets.",
            "return": {
                "description": "",
                "type": "Node"
            },
            "access": "private",
            "tagname": "",
            "class": "Node",
            "module": "core"
        },
        {
            "file": "core/node.js",
            "line": 547,
            "description": "Called when the sub socket receives a message.\n\nMessages that node hasn't subscribed to with `.on()` will be ignored.\n\nEmits an event of type `msg.type` with the message.",
            "params": [
                {
                    "name": "frame",
                    "description": ""
                }
            ],
            "access": "private",
            "tagname": "",
            "class": "Node",
            "module": "core"
        },
        {
            "file": "core/node.js",
            "line": 569,
            "description": "Called when the node receives a message on router socket.",
            "access": "private",
            "tagname": "",
            "class": "Node",
            "module": "core"
        },
        {
            "file": "core/node.js",
            "line": 643,
            "description": "Handles delayed `.connect()` calls that were made before calling `.start()`.",
            "access": "private",
            "tagname": "",
            "class": "Node",
            "module": "core"
        },
        {
            "file": "core/node.js",
            "line": 660,
            "description": "Add a node to our cluster.",
            "params": [
                {
                    "name": "node",
                    "description": "",
                    "type": "Object|Node",
                    "props": [
                        {
                            "name": "id",
                            "description": "",
                            "type": "String"
                        },
                        {
                            "name": "name",
                            "description": "",
                            "type": "String"
                        },
                        {
                            "name": "endpoints.router",
                            "description": "",
                            "type": "String"
                        },
                        {
                            "name": "endpoints.pub",
                            "description": "",
                            "type": "String"
                        },
                        {
                            "name": "keepalive.period",
                            "description": "",
                            "type": "String"
                        },
                        {
                            "name": "messages",
                            "description": "",
                            "type": "Object"
                        }
                    ]
                }
            ],
            "access": "private",
            "tagname": "",
            "class": "Node",
            "module": "core"
        },
        {
            "file": "core/node.js",
            "line": 769,
            "params": [
                {
                    "name": "type",
                    "description": "",
                    "type": "String"
                },
                {
                    "name": "cb",
                    "description": "",
                    "type": "Function"
                }
            ],
            "chainable": 1,
            "access": "private",
            "tagname": "",
            "class": "Node",
            "module": "core"
        },
        {
            "file": "core/node.js",
            "line": 790,
            "description": "Emit an internal event.",
            "return": {
                "description": "",
                "type": "Node"
            },
            "access": "private",
            "tagname": "",
            "class": "Node",
            "module": "core"
        },
        {
            "file": "core/node.js",
            "line": 801,
            "description": "Attach a reply handler to a message.",
            "params": [
                {
                    "name": "msg",
                    "description": "",
                    "type": "Object"
                },
                {
                    "name": "cb",
                    "description": "",
                    "type": "Function"
                }
            ],
            "return": {
                "description": "",
                "type": "Node"
            },
            "chainable": 1,
            "access": "private",
            "tagname": "",
            "class": "Node",
            "module": "core"
        },
        {
            "file": "core/node.js",
            "line": 822,
            "description": "Call reply handlers of a message.",
            "params": [
                {
                    "name": "id",
                    "description": "The id of the message",
                    "type": "String"
                },
                {
                    "name": "reply",
                    "description": "The reply message",
                    "type": "Object"
                },
                {
                    "name": "cb",
                    "description": "Optional callback",
                    "type": "Function",
                    "optional": true
                }
            ],
            "return": {
                "description": "",
                "type": "Node"
            },
            "chainable": 1,
            "access": "private",
            "tagname": "",
            "class": "Node",
            "module": "core"
        },
        {
            "file": "core/node.js",
            "line": 844,
            "description": "Send a message from the PUB socket. Messages are automatically\nqueued to prevent the slow joiner symptom (missing messages on\nsubscribers due to TCP handshake delay).",
            "params": [
                {
                    "name": "msg",
                    "description": "The data to send",
                    "type": "String|Buffer|Array"
                }
            ],
            "return": {
                "description": "",
                "type": "Node"
            },
            "chainable": 1,
            "access": "private",
            "tagname": "",
            "class": "Node",
            "module": "core"
        },
        {
            "file": "core/node.js",
            "line": 864,
            "description": "Send a message from the router socket.",
            "params": [
                {
                    "name": "frames",
                    "description": "Must be [id, message]",
                    "type": "Array"
                }
            ],
            "class": "Node",
            "module": "core"
        },
        {
            "file": "core/node.js",
            "line": 878,
            "description": "Closes all the sockets.",
            "return": {
                "description": "",
                "type": "Node"
            },
            "chainable": 1,
            "access": "private",
            "tagname": "",
            "class": "Node",
            "module": "core"
        },
        {
            "file": "core/node.js",
            "line": 932,
            "params": [
                {
                    "name": "level",
                    "description": "`error` or `info`",
                    "type": "String"
                },
                {
                    "name": "args",
                    "description": "",
                    "type": "String|Object",
                    "multiple": true
                }
            ],
            "return": {
                "description": "",
                "type": "Node"
            },
            "access": "private",
            "tagname": "",
            "chainable": 1,
            "class": "Node",
            "module": "core"
        },
        {
            "file": "core/node.js",
            "line": 962,
            "access": "private",
            "tagname": "",
            "class": "Node",
            "module": "core"
        },
        {
            "file": "core/node.js",
            "line": 971,
            "access": "private",
            "tagname": "",
            "class": "Node",
            "module": "core"
        },
        {
            "file": "core/node.js",
            "line": 980,
            "params": [
                {
                    "name": "id",
                    "description": "",
                    "type": "String"
                }
            ],
            "return": {
                "description": "",
                "type": "Buffer"
            },
            "static": 1,
            "class": "Node",
            "module": "core"
        },
        {
            "file": "core/node.js",
            "line": 998,
            "description": "How often this node will notify the cluster of it's aliveness, in milliseconds.",
            "itemtype": "property",
            "name": "DEFAULT_KEEPALIVE_PERIOD",
            "type": "Number",
            "default": "1000",
            "static": 1,
            "class": "Node",
            "module": "core"
        },
        {
            "file": "core/registry.js",
            "line": 100,
            "description": "Called when centaurs send heartbeats.",
            "params": [
                {
                    "name": "id",
                    "description": "[description]",
                    "type": "[type]"
                },
                {
                    "name": "cb",
                    "description": "[description]",
                    "type": "Function"
                }
            ],
            "return": {
                "description": "[description]",
                "type": "[type]"
            },
            "class": "utils",
            "module": "core"
        },
        {
            "file": "core/registry.js",
            "line": 132,
            "description": "Removes dead centaurs from the registry and updates everyone else.",
            "class": "utils",
            "module": "core"
        },
        {
            "file": "core/registry.js",
            "line": 153,
            "description": "Publish message to all the centaurs in the cluster.",
            "params": [
                {
                    "name": "data",
                    "description": "",
                    "type": "Object"
                },
                {
                    "name": "cb",
                    "description": "",
                    "type": "Function"
                }
            ],
            "class": "utils",
            "module": "core"
        },
        {
            "file": "core/registry.js",
            "line": 163,
            "description": "Reply to individual centaur requests.",
            "params": [
                {
                    "name": "frames",
                    "description": "The first frame must be the socket id.",
                    "type": "Array"
                }
            ],
            "return": {
                "description": "Registry       The registry itself."
            },
            "class": "utils",
            "module": "core"
        },
        {
            "file": "core/utils.js",
            "line": 8,
            "description": "Caches path pieces from calls to `utils.getPath()`",
            "itemtype": "property",
            "name": "_pathCache",
            "type": "Object",
            "access": "private",
            "tagname": "",
            "class": "utils",
            "module": "core"
        },
        {
            "file": "core/utils.js",
            "line": 17,
            "itemtype": "method",
            "name": "currentTime",
            "return": {
                "description": "Unix timestamp in milliseconds.",
                "type": "Number"
            },
            "static": 1,
            "class": "utils",
            "module": "core"
        },
        {
            "file": "core/utils.js",
            "line": 26,
            "description": "Get a random integer.\n\nExample:\n\n```js\nvar arr = ['a', 'b', 'c'];\n\n// a random element from arr\nvar random = arr[randRange(arr.length)];\n```",
            "itemtype": "method",
            "name": "randRange",
            "params": [
                {
                    "name": "a",
                    "description": "",
                    "type": "Number=0",
                    "optional": true
                },
                {
                    "name": "b",
                    "description": "",
                    "type": "Number=10000000",
                    "optional": true
                }
            ],
            "return": {
                "description": "Random integer in the interval [a, b).",
                "type": "Number"
            },
            "static": 1,
            "class": "utils",
            "module": "core"
        },
        {
            "file": "core/utils.js",
            "line": 56,
            "description": "Returns the value of a path.",
            "itemtype": "method",
            "name": "getPath",
            "params": [
                {
                    "name": "object",
                    "description": "",
                    "type": "Object"
                },
                {
                    "name": "path",
                    "description": "",
                    "type": "String"
                }
            ],
            "return": {
                "description": "The value of `path` in `object`.",
                "type": "Object"
            },
            "static": 1,
            "class": "utils",
            "module": "core"
        },
        {
            "file": "core/utils.js",
            "line": 84,
            "description": "Get uuid v4.",
            "itemtype": "method",
            "name": "randomId",
            "return": {
                "description": "",
                "type": "String"
            },
            "static": 1,
            "class": "utils",
            "module": "core"
        },
        {
            "file": "core/utils.js",
            "line": 95,
            "itemtype": "method",
            "name": "endpointType",
            "params": [
                {
                    "name": "endpoint",
                    "description": "",
                    "type": "String"
                }
            ],
            "return": {
                "description": "`tcp`, `ipc` or `inproc`",
                "type": "String"
            },
            "class": "utils",
            "module": "core"
        },
        {
            "file": "core/utils.js",
            "line": 110,
            "itemtype": "property",
            "name": "EMPTY_BUFFER",
            "type": "{Buffer}",
            "class": "utils",
            "module": "core"
        }
    ],
    "warnings": [
        {
            "message": "replacing incorrect tag: returns with return",
            "line": " core/hub.js:562"
        },
        {
            "message": "replacing incorrect tag: returns with return",
            "line": " core/message.js:45"
        },
        {
            "message": "replacing incorrect tag: returns with return",
            "line": " core/message.js:72"
        },
        {
            "message": "replacing incorrect tag: returns with return",
            "line": " core/message.js:81"
        },
        {
            "message": "replacing incorrect tag: returns with return",
            "line": " core/message_factory.js:15"
        },
        {
            "message": "replacing incorrect tag: returns with return",
            "line": " core/utils.js:17"
        },
        {
            "message": "replacing incorrect tag: returns with return",
            "line": " core/utils.js:26"
        },
        {
            "message": "replacing incorrect tag: returns with return",
            "line": " core/utils.js:56"
        },
        {
            "message": "replacing incorrect tag: returns with return",
            "line": " core/utils.js:84"
        },
        {
            "message": "replacing incorrect tag: returns with return",
            "line": " core/utils.js:95"
        },
        {
            "message": "Missing item type\nConnect the router socket to an endpoint.",
            "line": " core/hub.js:430"
        },
        {
            "message": "Missing item type\nMessage factory.",
            "line": " core/message_factory.js:3"
        },
        {
            "message": "Missing item type\nBuild a message. Defaults are first applied, then `body`.",
            "line": " core/message_factory.js:15"
        },
        {
            "message": "Missing item type\nPublic API",
            "line": " core/node.js:167"
        },
        {
            "message": "Missing item type\nJoin a cluster.\n\nYou must specifiy either a node object or the configuration of a node\nalready in the cluster.",
            "line": " core/node.js:217"
        },
        {
            "message": "Missing item type\nUnsubscribe from messages from other nodes.",
            "line": " core/node.js:326"
        },
        {
            "message": "Missing item type\nSend a message that will be load balanced across all other nodes that are\ninterested in the message.",
            "line": " core/node.js:353"
        },
        {
            "message": "Missing item type\nSend a message to a specific node.\n\nTODO: check if `cb.length === 1` and don't attach reply handler\nTODO: this `.reply()` should delegate to the same method",
            "line": " core/node.js:374"
        },
        {
            "message": "Missing item type\nSend a message to all nodes that are listening for message of type `type`.\n\nIf you are expecting a reply, pass in a callback.",
            "line": " core/node.js:420"
        },
        {
            "message": "Missing item type\nSend a reply to a message.\n\nTODO: refactor this and `.sendTo`",
            "line": " core/node.js:449"
        },
        {
            "message": "Missing item type\nReturns information about this node.",
            "line": " core/node.js:486"
        },
        {
            "message": "Missing item type\nGet the messages that the node is listening on.",
            "line": " core/node.js:501"
        },
        {
            "message": "Missing item type\nPrivate API",
            "line": " core/node.js:508"
        },
        {
            "message": "Missing item type\nInitialze listeners for protocol messages.",
            "line": " core/node.js:512"
        },
        {
            "message": "Missing item type\nInitializes the pub and router sockets.",
            "line": " core/node.js:525"
        },
        {
            "message": "Missing item type\nCalled when the sub socket receives a message.\n\nMessages that node hasn't subscribed to with `.on()` will be ignored.\n\nEmits an event of type `msg.type` with the message.",
            "line": " core/node.js:547"
        },
        {
            "message": "Missing item type\nCalled when the node receives a message on router socket.",
            "line": " core/node.js:569"
        },
        {
            "message": "Missing item type\nHandles delayed `.connect()` calls that were made before calling `.start()`.",
            "line": " core/node.js:643"
        },
        {
            "message": "Missing item type\nAdd a node to our cluster.",
            "line": " core/node.js:660"
        },
        {
            "message": "Missing item type",
            "line": " core/node.js:769"
        },
        {
            "message": "Missing item type\nEmit an internal event.",
            "line": " core/node.js:790"
        },
        {
            "message": "Missing item type\nAttach a reply handler to a message.",
            "line": " core/node.js:801"
        },
        {
            "message": "Missing item type\nCall reply handlers of a message.",
            "line": " core/node.js:822"
        },
        {
            "message": "Missing item type\nSend a message from the PUB socket. Messages are automatically\nqueued to prevent the slow joiner symptom (missing messages on\nsubscribers due to TCP handshake delay).",
            "line": " core/node.js:844"
        },
        {
            "message": "Missing item type\nSend a message from the router socket.",
            "line": " core/node.js:864"
        },
        {
            "message": "Missing item type\nCloses all the sockets.",
            "line": " core/node.js:878"
        },
        {
            "message": "Missing item type",
            "line": " core/node.js:932"
        },
        {
            "message": "Missing item type",
            "line": " core/node.js:962"
        },
        {
            "message": "Missing item type",
            "line": " core/node.js:971"
        },
        {
            "message": "Missing item type",
            "line": " core/node.js:980"
        },
        {
            "message": "Missing item type\nCalled when centaurs send heartbeats.",
            "line": " core/registry.js:100"
        },
        {
            "message": "Missing item type\nRemoves dead centaurs from the registry and updates everyone else.",
            "line": " core/registry.js:132"
        },
        {
            "message": "Missing item type\nPublish message to all the centaurs in the cluster.",
            "line": " core/registry.js:153"
        },
        {
            "message": "Missing item type\nReply to individual centaur requests.",
            "line": " core/registry.js:163"
        }
    ]
}