예제 #1
0
 /**
  * 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;
 }
예제 #2
0
 /**
  * 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;
 }