new ShardingSlave()
The slave that is managed by ShardingMaster. This does
nothing to communicate with Discord until the master has told it to do so.
The main purpose of this is to connect and listen to the master for commands
and messages. This class must have a config file generated by the master
named similarly to `shard_abc_config.json` in the `./config/` directory.
- Source:
Members
-
<private, constant> _config :object
-
Parsed config file from disk.
Type:
- object
- Source:
-
<private> _evals :Map.<string, Promise>
-
Ongoing promises for calls to Discord's Shard#eval, mapped by the script they were called with.
Type:
- Map.<string, Promise>
- Source:
-
<private, nullable> _hbTimeout :number
-
Timeout to attempt reconnection if no heartbeat request was received from the master (pull), or the timeout until the next heartbeat will be sent (push).
Type:
- number
- Source:
-
<private> _lastSeen :number
-
The timestamp at which the last message from the master was received.
Type:
- number
- Source:
-
<private, constant> _privKey :string
-
The private key identifying this shard.
Type:
- string
- Source:
-
<private, nullable> _respawnTimeout :number
-
Timeout for respawn request.
Type:
- number
- Source:
-
<private, nullable> _settings :object
-
The settings the master has told us to operate with. This includes the botName, heartbeat settings, as well as shard ID and count. Null until a connection is established.
Type:
- object
- Source:
-
<private, constant> _socket :socketIo.Socket
-
The socket.io socket used to communicate with the master.
Type:
- socketIo.Socket
- Source:
-
<private> _status :ShardingMaster.ShardStatus
-
The current status information about this shard. This is sent to the master as a heartbeat.
Type:
- Source:
-
<private> _verified :boolean
-
Has the connection to the master been verified. If false, the current connection has not been established to be the correct endpoint. This may not necessarily be a security vulnerability however, as this is a redundant check in addition to the HTTPS websocket connection.
Type:
- boolean
- Source:
-
<constant> id :string
-
This slave's ID/Name.
Type:
- string
- Source:
-
<constant> pubKey :string
-
The public key of this shard.
Type:
- string
- Source:
Methods
-
<private> _childMessage(message)
-
Handle a message from the child.
Parameters:
Name Type Description message
object A parsed JSON object or primitive value. - Source:
-
<private> _evalRequest(script, cb)
-
Master has requested shard evaluates a script.
Parameters:
Name Type Description script
string Script to evaluate on the shard. cb
function Callback function with optional error, otherwise success message is second parameter. - Source:
-
<private> _fetchDiskStats(cb)
-
Fetch disk storage information about the bot. If a value was unable to be fetched, it will return a `null` value instead of a string.
Parameters:
Name Type Description cb
function Callback with first argument as optional error, otherwise the second is an object containing stats about different directories. - Source:
-
<private> _generateAuthHeader()
-
Generate the string to pass as the `authorization` header during the connection request to the master.
- Source:
Returns:
The string to pass directly to the auth header.- Type
- string
-
<private> _generateHeartbeat()
-
Fetch stats necessary for heartbeat message to the master, then sends the message.
- Source:
-
<private> _handleError(err)
-
Handle an error during spawning of child.
Parameters:
Name Type Description err
Error Error emitted by EventEmitter. - Source:
-
<private> _handleExit(code, signal)
-
Handle the child processes exiting.
Parameters:
Name Type Description code
number Process exit code. signal
string Process kill signal. - Source:
-
<private> _hbEvalResHandler(err, res)
-
Handler for response to status fetching for a heartbeat request.
Parameters:
Name Type Description err
Error | string Optional error message. res
* Response from eval. - Source:
-
<private> _hbTimeoutHandler()
-
Handler for _hbTimeout.
- Source:
-
<private> _masterVerification(sig, data)
-
Verify that we are connecting to the master we expect.
Parameters:
Name Type Description sig
string The signature. data
string The message sent that was signed. - Source:
-
<private> _receiveMasterFile(req, data, cb)
-
We received a file from the sharding master that it intends for us to write to disk at the given filename relative to the project root.
Parameters:
Name Type Description req
string | object.<string> Filename relative to project directory, or object with filename and modified time. data
string | Buffer The data to write to the file, or null to delete the file, or modified time is older on master. cb
function Callback once completed with optional error. - Source:
-
<private> _respawnChild( [delay])
-
Trigger the child process to be killed and restarted.
Parameters:
Name Type Argument Description delay
number <optional>
Time to wait before actually respawning in milliseconds. - Source:
-
<private> _sendMasterFile(filename, cb)
-
Send the specified file to the ShardingMaster.
Parameters:
Name Type Description filename
string Filename relative to project directory. cb
function Callback with optional error argument. - Source:
-
<private> _socketConnected()
-
Socket connected event handler.
- Source:
-
<private> _socketConnectError( [args])
-
Socket connected fail event handler.
Parameters:
Name Type Argument Description args
* <optional>
<repeatable>
Error arguments. - Source:
-
<private> _socketDisconnected(reason)
-
Socket disconnected event handler.
Parameters:
Name Type Description reason
string Either ‘io server disconnect’, ‘io client disconnect’, or ‘ping timeout’. - Source:
-
<private> _socketReconnecting(attempt)
-
Socket connected event handler.
Parameters:
Name Type Description attempt
number The reconnection attempt number. - Source:
-
<private> _spawnChild()
-
Spawn the child process with the current settings available.
- Source:
-
<private> _updateRequest(settings)
-
Master has sent a status update, and potentially expects a response.
Parameters:
Name Type Description settings
string Current settings for operation as JSON parsable string. - Source:
-
broadcastEval(script, cb)
-
Fire a broadcast to all shards requesting eval of given script.
Parameters:
Name Type Description script
string The script to evaluate. cb
function Callback once all shards have completed or there was an error. First argument is optional error, second will otherwise be array of responses indexed by shard IDs. - Source:
- See:
-
- ShardingMaster~broadcastEvalToShards
-
exit()
-
Cleanup and fully shutdown gracefully.
- Source:
-
respawnAll( [cb])
-
Kills all running shards and respawns them.
Parameters:
Name Type Argument Description cb
function <optional>
Callback once all shards have been rebooted or an error has occurred. - Source:
- See:
-
- ShardingMaster.respawnAll
-
sendSQL(query, cb)
-
Send an SQL query to the master to run on our database.
Parameters:
Name Type Description query
string The query to evaluate. cb
function First argument is optional error, second will otherwise be response from query. - Source:
- See:
-
- ShardingMaster~sendSQL