Refactoring

This commit is contained in:
Loic Guegan 2022-06-28 11:40:57 +02:00
parent 535eb79ad7
commit 838e48438c
2 changed files with 21 additions and 21 deletions

View file

@ -50,7 +50,7 @@ class Node:
def abort(self,reason): def abort(self,reason):
self.rargs=reason self.rargs=reason
self["request"]="abort" self["request"]="abort"
self["state"]="call" self["state"]="call_non_blocking"
while True: continue while True: continue
def log(self,msg): def log(self,msg):
@ -58,13 +58,13 @@ class Node:
self.abort("log() called with a non-string argument") self.abort("log() called with a non-string argument")
self.rargs=msg self.rargs=msg
self["request"]="log" self["request"]="log"
self["state"]="call" self["state"]="call_non_blocking"
self.wait_ack(["log"]) self.wait_ack(["log"])
def read(self, register): def read(self, register):
self["request"]="read" self["request"]="read"
self.rargs=register self.rargs=register
self["state"]="call" self["state"]="call_non_blocking"
ack=self.wait_ack(["read"]) ack=self.wait_ack(["read"])
return ack[1] return ack[1]
@ -73,27 +73,27 @@ class Node:
self.abort("wait() called with a non-number duration") self.abort("wait() called with a non-number duration")
self.rargs=duration self.rargs=duration
self["request"]="timeout_add" self["request"]="timeout_add"
self["state"]="call" self["state"]="call_non_blocking"
self.wait_ack(["timeout_add"]) self.wait_ack(["timeout_add"])
self["state"]="pending" self["state"]="pending"
self.wait_ack(["timeout"]) self.wait_ack(["timeout"])
def wait_end(self): def wait_end(self):
self["request"]="wait_end" self["request"]="wait_end"
self["state"]="request" self["state"]="call_blocking"
self.wait_ack(["wait_end"]) self.wait_ack(["wait_end"])
self.wait_ack(["sim_end"]) self.wait_ack(["sim_end"])
def turn_off(self): def turn_off(self):
self["turned_on"]=False self["turned_on"]=False
self["request"]="turn_off" self["request"]="turn_off"
self["state"]="call" self["state"]="call_non_blocking"
self.wait_ack(["turn_off"]) self.wait_ack(["turn_off"])
def turn_on(self): def turn_on(self):
self["turned_on"]=True self["turned_on"]=True
self["request"]="turn_on" self["request"]="turn_on"
self["state"]="call" self["state"]="call_non_blocking"
self.wait_ack(["turn_on"]) self.wait_ack(["turn_on"])
def send(self, interface, data, datasize, dst): def send(self, interface, data, datasize, dst):
@ -106,7 +106,7 @@ class Node:
self.plugin_notify("send_call",(interface,data,datasize,dst)) self.plugin_notify("send_call",(interface,data,datasize,dst))
self.rargs=(interface, data, datasize, dst) self.rargs=(interface, data, datasize, dst)
self["request"]="send" self["request"]="send"
self["state"]="request" self["state"]="call_blocking"
ack=self.wait_ack(["send","send_cancel"]) ack=self.wait_ack(["send","send_cancel"])
self.plugin_notify("send_return",(interface,data,datasize,dst,ack[1])) self.plugin_notify("send_return",(interface,data,datasize,dst,ack[1]))
return ack[1] return ack[1]
@ -122,19 +122,19 @@ class Node:
self.abort("send() called with a non-number dst (wired interfaces) or dst is not None (wireless interfaces)") self.abort("send() called with a non-number dst (wired interfaces) or dst is not None (wireless interfaces)")
self.rargs=timeout self.rargs=timeout
self["request"]="timeout_add" self["request"]="timeout_add"
self["state"]="call" self["state"]="call_non_blocking"
self.wait_ack(["timeout_add"]) self.wait_ack(["timeout_add"])
self.rargs=(interface, data, datasize, dst) self.rargs=(interface, data, datasize, dst)
self["request"]="send" self["request"]="send"
self["state"]="request" self["state"]="call_blocking"
ack=self.wait_ack(["send","timeout","send_cancel"]) ack=self.wait_ack(["send","timeout","send_cancel"])
if ack[0] == "timeout": if ack[0] == "timeout":
self["request"]="send_cancel" self["request"]="send_cancel"
self["state"]="call" self["state"]="call_non_blocking"
self.wait_ack(["send_cancel"]) self.wait_ack(["send_cancel"])
return -1 return -1
self["request"]="timeout_remove" self["request"]="timeout_remove"
self["state"]="call" self["state"]="call_non_blocking"
self.wait_ack(["timeout_remove"]) self.wait_ack(["timeout_remove"])
return ack[1] return ack[1]
@ -143,7 +143,7 @@ class Node:
self.abort("receive() called with an unknown interface \""+interface+"\"") self.abort("receive() called with an unknown interface \""+interface+"\"")
self["request"]="receive" self["request"]="receive"
self.rargs=interface self.rargs=interface
self["state"]="request" self["state"]="call_blocking"
self.wait_ack(["receive"]) self.wait_ack(["receive"])
data,start_at,end_at=self["interfaces"][interface].get() data,start_at,end_at=self["interfaces"][interface].get()
self.plugin_notify("receive_return",(interface,data,start_at,end_at)) self.plugin_notify("receive_return",(interface,data,start_at,end_at))
@ -156,16 +156,16 @@ class Node:
self.abort("receivet() called with a non-number timeout") self.abort("receivet() called with a non-number timeout")
self.rargs=timeout self.rargs=timeout
self["request"]="timeout_add" self["request"]="timeout_add"
self["state"]="call" self["state"]="call_non_blocking"
self.wait_ack(["timeout_add"]) self.wait_ack(["timeout_add"])
self["request"]="receive" self["request"]="receive"
self.rargs=interface self.rargs=interface
self["state"]="request" self["state"]="call_blocking"
ack=self.wait_ack(["receive","timeout"]) ack=self.wait_ack(["receive","timeout"])
if ack[0] == "timeout": if ack[0] == "timeout":
return (-1,None) return (-1,None)
self["request"]="timeout_remove" self["request"]="timeout_remove"
self["state"]="call" self["state"]="call_non_blocking"
self.wait_ack(["timeout_remove"]) self.wait_ack(["timeout_remove"])
data,start_at,end_at=self["interfaces"][interface].get() data,start_at,end_at=self["interfaces"][interface].get()
self.plugin_notify("receivet_return",(interface,data,start_at,end_at)) self.plugin_notify("receivet_return",(interface,data,start_at,end_at))

View file

@ -128,7 +128,7 @@ class Simulator:
Process all call request and wait for Node.sync() to return Process all call request and wait for Node.sync() to return
""" """
node.sync() node.sync()
while node["state"] == "call": while node["state"] == "call_non_blocking":
if node["request"] == "log": if node["request"] == "log":
self.log(node.rargs,node=node.node_id) self.log(node.rargs,node=node.node_id)
node["state"]="running" node["state"]="running"
@ -267,7 +267,7 @@ class Simulator:
""" """
Collect events from the nodes Collect events from the nodes
""" """
if node["state"] == "request": if node["state"] == "call_blocking":
if node["request"] == "send": if node["request"] == "send":
node["state"]="pending" node["state"]="pending"
interface, data, datasize, dst=node.rargs interface, data, datasize, dst=node.rargs
@ -303,7 +303,7 @@ class Simulator:
duration=datasize*8/(self.netmat[interface]["bandwidth"][src,dst]/self.sharing[interface][dst])+self.netmat[interface]["latency"][src,dst] duration=datasize*8/(self.netmat[interface]["bandwidth"][src,dst]/self.sharing[interface][dst])+self.netmat[interface]["latency"][src,dst]
self.add_event(0,duration+self.time,(src,dst,interface,data,datasize,duration,datasize,self.time)) self.add_event(0,duration+self.time,(src,dst,interface,data,datasize,duration,datasize,self.time))
else: else:
nsrc["state"]="request" # Try later when node is on nsrc["state"]="call_blocking" # Try later when node is on
else: else:
self.log("Send "+str(datasize)+" bytes on "+interface,node=src) self.log("Send "+str(datasize)+" bytes on "+interface,node=src)
for dst in self.list_receivers(nsrc,interface): for dst in self.list_receivers(nsrc,interface):
@ -392,7 +392,7 @@ class Simulator:
self.update_sharing(dst.node_id,-1,interface) self.update_sharing(dst.node_id,-1,interface)
self.log("Receive "+str(datasize)+" bytes on "+interface,node=int(dst_id)) self.log("Receive "+str(datasize)+" bytes on "+interface,node=int(dst_id))
# If node is receiving makes it consume (this way if there is a timeout, it will be removed!) # If node is receiving makes it consume (this way if there is a timeout, it will be removed!)
if dst["state"] == "request" and dst["request"] == "receive": if dst["state"] == "call_blocking" and dst["request"] == "receive":
dst["interfaces_queue_size"][interface]-=1 dst["interfaces_queue_size"][interface]-=1
dst["state"]="running" dst["state"]="running"
dst.rqueue.put(("receive",0)) dst.rqueue.put(("receive",0))
@ -405,7 +405,7 @@ class Simulator:
dst["interfaces_queue_size"][interface]+=1 dst["interfaces_queue_size"][interface]+=1
self.log("Receive "+str(datasize)+" bytes on "+interface,node=int(dst_id)) self.log("Receive "+str(datasize)+" bytes on "+interface,node=int(dst_id))
# If node is receiving makes it consume (this way if there is a timeout, it will be removed!) # If node is receiving makes it consume (this way if there is a timeout, it will be removed!)
if dst["state"] == "request" and dst["request"] == "receive": if dst["state"] == "call_blocking" and dst["request"] == "receive":
dst["interfaces_queue_size"][interface]-=1 dst["interfaces_queue_size"][interface]-=1
dst["state"]="running" dst["state"]="running"
dst.rqueue.put(("receive",0)) dst.rqueue.put(("receive",0))