From 4e71ae46824149cde7569dfa39ab8259ba3ed311 Mon Sep 17 00:00:00 2001 From: shinedday <shinedday@gmail.com> Date: Mon, 13 Jun 2022 09:19:06 +0200 Subject: [PATCH] Agent : Update how canvas update work --- dist/iotAmak-0.0.7-py3-none-any.whl | Bin 31645 -> 31875 bytes iotAmak/agent/agent.py | 1 + iotAmak/agent/async_agent.py | 1 + iotAmak/agent/base_agent.py | 11 +++++++++++ iotAmak/amas/base_amas.py | 4 +++- iotAmak/scheduler/scheduler.py | 6 +++++- 6 files changed, 21 insertions(+), 2 deletions(-) diff --git a/dist/iotAmak-0.0.7-py3-none-any.whl b/dist/iotAmak-0.0.7-py3-none-any.whl index 6b8729469c70282fe1274145a88acef11cfe9f1a..744cb9dfed1ef86c93b444d4867458e6f5593247 100644 GIT binary patch delta 7888 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 OHMy}`j4dZ0q!s{T^Hc@^ delta 7647 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 Q0JZWar`L$FwdH{%09i%YY5)KL diff --git a/iotAmak/agent/agent.py b/iotAmak/agent/agent.py index 4af7fb9..9cbf8c5 100644 --- a/iotAmak/agent/agent.py +++ b/iotAmak/agent/agent.py @@ -64,5 +64,6 @@ class Agent(Schedulable, BaseAgent): self.on_cycle_end() self.publish("metric", str(self.send_metric())) + self.publish("canvas", str(self.to_canvas())) self.publish("cycle_done", "") self.nbr_cycle += 1 diff --git a/iotAmak/agent/async_agent.py b/iotAmak/agent/async_agent.py index a2653d5..58543c0 100644 --- a/iotAmak/agent/async_agent.py +++ b/iotAmak/agent/async_agent.py @@ -54,4 +54,5 @@ class AsyncAgent(AsyncControlable, BaseAgent): self.on_act() self.on_cycle_end() self.publish("metric", str(self.send_metric())) + self.publish("canvas", str(self.to_canvas())) diff --git a/iotAmak/agent/base_agent.py b/iotAmak/agent/base_agent.py index 4d31dd2..3bdd006 100644 --- a/iotAmak/agent/base_agent.py +++ b/iotAmak/agent/base_agent.py @@ -74,6 +74,17 @@ class BaseAgent: "[AGENT] " + str(self.id) + " : " + message ) + def to_canvas(self) -> dict: + """ + To override if the canvas is used, automatically called each cycle + the dict must contains : + * 'x', 'y' keys -> int values + * 'id' of the agent (self.id) -> int value + * 'color' in hex -> str (e.g. '#FF0000') + * 'cycle' self.nbr_cycle -> int + """ + return {} + def send_metric(self) -> Dict: """ Should be override if the neighbor need to be aware of any other info, should be a dict diff --git a/iotAmak/amas/base_amas.py b/iotAmak/amas/base_amas.py index c3da4e0..7b34bd2 100644 --- a/iotAmak/amas/base_amas.py +++ b/iotAmak/amas/base_amas.py @@ -92,19 +92,21 @@ class BaseAmas(SSHClient): if len(self.agents_cmd[i_min]) > len(self.agents_cmd[elem]): i_min = elem self.agents_cmd[i_min].append(Cmd(command)) + self.client.publish("amas/agent/new", str({"id": self.next_id, "ip": i_min})) else: have_found = False for i_client in range(len(self.clients)): if self.clients[i_client].hostname == client_ip: self.agents_cmd[i_client].append(Cmd(command)) + self.client.publish("amas/agent/new", str({"id": self.next_id, "ip": i_client})) have_found = True break if not have_found: self.agents_cmd[0].append(Cmd(command)) + self.client.publish("amas/agent/new", str({"id": self.next_id, "ip": 0})) self.subscribe("agent/" + str(self.next_id) + "/metric", self.agent_metric) - self.client.publish("amas/agent/new", self.next_id) self.next_id += 1 def push_agent(self) -> None: diff --git a/iotAmak/scheduler/scheduler.py b/iotAmak/scheduler/scheduler.py index d5f2237..df01367 100644 --- a/iotAmak/scheduler/scheduler.py +++ b/iotAmak/scheduler/scheduler.py @@ -1,6 +1,7 @@ """ Scheduler class file """ +from ast import literal_eval from threading import Semaphore from time import sleep, time @@ -67,7 +68,10 @@ class Scheduler(Schedulable): param message: id of the new agent """ self.nbr_agent += 1 - self.subscribe("agent/" + str(message.payload.decode("utf-8")) + "/cycle_done", self.agent_done) + self.subscribe( + "agent/" + literal_eval(message.payload.decode("utf-8")).get("id") + "/cycle_done", + self.agent_done) + # print("__Update agent : ", self.nbr_agent, str(message.payload.decode("utf-8"))) def agent_done(self, client, userdata, message) -> None: -- GitLab