Cluster
Cluster
Manages peer connectivity and command routing for Warlock clustering.
class ClusterProperties
peers
public array $peersType: array
log
Logger used by cluster manager operations.
private Logger $logType: Hazaar\Warlock\Logger
config
Raw cluster configuration, retained so it can be forwarded to Peer connections, which
private array $configType: array
also read additional keys (e.g. peerReconnect, accessKey) not modelled by Options.
options
private Options $optionsType: Hazaar\Warlock\Server\Component\Cluster\Options
main
Owning server instance, needed for this node's own configured id and to construct new
private Main $mainType: Hazaar\Warlock\Server\Main
outbound Peer connections discovered via gossip. Set by start(), which always runs before any peer command can arrive.
Methods
__construct
public __construct(Logger $log, array $config): voidParameters
| Parameter | Type | Description |
|---|---|---|
$log | Hazaar\Warlock\Logger | |
$config | array |
start
Starts peer connections configured for cluster mode.
public start(Main $main): voidReturns: void
Parameters
| Parameter | Type | Description |
|---|---|---|
$main | Hazaar\Warlock\Server\Main |
stop
public stop(): voidReturns: void
addPeer
public addPeer(Peer $peer): voidReturns: void
Parameters
| Parameter | Type | Description |
|---|---|---|
$peer | Hazaar\Warlock\Server\Client\Peer |
removePeer
public removePeer(Peer $peer): voidReturns: void
Parameters
| Parameter | Type | Description |
|---|---|---|
$peer | Hazaar\Warlock\Server\Client\Peer |
process
public process(): voidReturns: void
processCommand
public processCommand(Peer $peer, PacketType $command, ?\stdClass $payload): voidReturns: void
Parameters
| Parameter | Type | Description |
|---|---|---|
$peer | Hazaar\Warlock\Server\Client\Peer | |
$command | Hazaar\Warlock\Enum\PacketType | |
$payload | stdClass |
processPeerInfo
Handles a peer announcing its own identity (see Peer::announceIdentity()).
private processPeerInfo(Peer $peer, ?\stdClass $payload): voidReturns: void
Parameters
| Parameter | Type | Description |
|---|---|---|
$peer | Hazaar\Warlock\Server\Client\Peer | |
$payload | stdClass |
processGossip
Handles a single-peer auto-discovery announcement (see PacketType::PEERGOSSIP). Carries
private processGossip(Peer $source, ?\stdClass $payload): voidReturns: void
exactly one {name, address, port} - loop-avoidance is simply "do I already have this name as a key in $this->peers", not a separately-tracked message id.
Parameters
| Parameter | Type | Description |
|---|---|---|
$source | Hazaar\Warlock\Server\Client\Peer | |
$payload | stdClass |
announceKnownPeersTo
Sends every peer we already know about (excluding $target itself, and any peer whose own
private announceKnownPeersTo(Peer $target): voidReturns: void
identity isn't confirmed yet - see Peer::$identityConfirmed) to $target, one PEERGOSSIP message per peer.
Parameters
| Parameter | Type | Description |
|---|---|---|
$target | Hazaar\Warlock\Server\Client\Peer |
gossipPeer
Relays a single peer's identity to every currently-known peer except $exclude (typically
private gossipPeer(string $name, string $address, int $port, Peer $exclude): voidReturns: void
the peer it was just learned from), one PEERGOSSIP message per recipient.
Parameters
| Parameter | Type | Description |
|---|---|---|
$name | string | |
$address | string | |
$port | int | |
$exclude | Hazaar\Warlock\Server\Client\Peer |
connectNewPeer
Builds, connects and registers a new outbound peer connection for "host:port" - shared by
private connectNewPeer(string $peerConfig, ?string $expectedName): voidReturns: void
both statically-configured peers (start(), $expectedName unknown - real name arrives only once its own PEERINFO confirms the connection) and peers learned via gossip (processGossip(), $expectedName already known - the whole point of gossip).
Parameters
| Parameter | Type | Description |
|---|---|---|
$peerConfig | string | |
$expectedName | string |
Generated by Hazaar API Doc Generator on Thu, 22 Oct 2026 05:05:31 +0000