diff options
Diffstat (limited to 'src/MasterClient.php')
-rw-r--r-- | src/MasterClient.php | 39 |
1 files changed, 36 insertions, 3 deletions
diff --git a/src/MasterClient.php b/src/MasterClient.php index d85e454..2fed338 100644 --- a/src/MasterClient.php +++ b/src/MasterClient.php @@ -2,6 +2,10 @@ namespace jobd; +use jobd\exceptions\JobdException; +use jobd\messages\RequestMessage; +use jobd\messages\ResponseMessage; + class MasterClient extends Client { public function __construct(int $port = Client::MASTER_PORT, ...$args) @@ -12,7 +16,7 @@ class MasterClient extends Client { /** * @param array $targets * @return ResponseMessage - * @throws Exception + * @throws JobdException */ public function poke(array $targets): ResponseMessage { @@ -24,7 +28,7 @@ class MasterClient extends Client { /** * @param bool $poll_workers * @return ResponseMessage - * @throws Exception + * @throws JobdException */ public function status(bool $poll_workers = false): ResponseMessage { @@ -36,7 +40,7 @@ class MasterClient extends Client { /** * @param array[] $jobs * @return ResponseMessage - * @throws Exception + * @throws JobdException */ public function runManual(array $jobs): ResponseMessage { @@ -45,4 +49,33 @@ class MasterClient extends Client { ); } + /** + * @param int $job_id + * @param int $signal + * @param string $target + * @return ResponseMessage + * @throws JobdException + */ + public function sendSignal(int $job_id, int $signal, string $target): ResponseMessage + { + return $this->sendSignals([ + [ + 'id' => $job_id, + 'signal' => $signal, + 'target' => $target + ] + ]); + } + + /** + * @param array $data + * @return ResponseMessage + * @throws JobdException + */ + public function sendSignals(array $data): ResponseMessage { + return $this->recv( + $this->sendRequest(new RequestMessage('send-signal', ['jobs' => $data])) + ); + } + }
\ No newline at end of file |