/** * Get worker by id * @param int $id * @return Worker null */ public function getWorker($id) { $result = $this->db->query("SELECT * FROM workers WHERE id = {$id}"); foreach ($result as $key => $row) { $worker = new Worker(); $worker->setId($row['id']); $worker->setHost($row['host']); $worker->setPort($row['port']); $worker->setType($row['type']); $worker->setStatus($row['status']); return $worker; } return null; }
/** * Send task over RPC to worker * Mark task as in progress nad worker as busy * @param Task $task * @param Worker $worker * @return void * @author Andraz <*****@*****.**> */ public function sendTaskToWorker(Task $task, Worker $worker) { $client = $this->newRpcClient($worker->getHost(), $worker->getport()); $parameters = [$worker->getId(), $task->getId(), $task->getParameters()]; $task->setStatus('in_progress'); $this->storage->saveTask($task); $worker->setStatus('busy'); $this->storage->saveWorker($worker); $success = $client->notify('run', $parameters); if ($success) { } return $success; }