mirror of
https://gitlab.com/manzerbredes/esds.git
synced 2025-04-09 22:56:53 +00:00
Improve API arguments checking
This commit is contained in:
parent
0daa96651f
commit
b81ea45bd3
1 changed files with 29 additions and 10 deletions
39
esds/esds.py
39
esds/esds.py
|
@ -50,7 +50,15 @@ class Node:
|
|||
value=self.chest[key]=value
|
||||
self.chest_lock.release()
|
||||
|
||||
def abort(self,reason):
|
||||
self.rargs=reason
|
||||
self["request"]="abort"
|
||||
self["state"]="call"
|
||||
while True: continue
|
||||
|
||||
def log(self,msg):
|
||||
if type(msg) != str:
|
||||
self.abort("log() called with a non-string argument")
|
||||
self.rargs=msg
|
||||
self["request"]="log"
|
||||
self["state"]="call"
|
||||
|
@ -90,6 +98,8 @@ class Node:
|
|||
self.wait_ack(["turn_on"])
|
||||
|
||||
def send(self, interface, data, datasize, dst):
|
||||
if interface not in self["interfaces"]:
|
||||
self.abort("send() called with an unknown interface \""+interface+"\"")
|
||||
self.plugin_notify("send_call",(interface,data,datasize,dst))
|
||||
self.rargs=(interface, data, datasize, dst)
|
||||
self["request"]="send"
|
||||
|
@ -98,16 +108,9 @@ class Node:
|
|||
self.plugin_notify("send_return",(interface,data,datasize,dst,ack[1]))
|
||||
return ack[1]
|
||||
|
||||
def receive(self,interface):
|
||||
self["request"]="receive"
|
||||
self.rargs=interface
|
||||
self["state"]="request"
|
||||
self.wait_ack(["receive"])
|
||||
data,start_at,end_at=self["interfaces"][interface].get()
|
||||
self.plugin_notify("receive_return",(interface,data,start_at,end_at))
|
||||
return (0,data)
|
||||
|
||||
def sendt(self, interface, data, datasize, dst, timeout):
|
||||
if interface not in self["interfaces"]:
|
||||
self.abort("sendt() called with an unknown interface \""+interface+"\"")
|
||||
self.rargs=timeout
|
||||
self["request"]="timeout_add"
|
||||
self["state"]="call"
|
||||
|
@ -125,8 +128,21 @@ class Node:
|
|||
self["state"]="call"
|
||||
self.wait_ack(["timeout_remove"])
|
||||
return ack[1]
|
||||
|
||||
def receive(self,interface):
|
||||
if interface not in self["interfaces"]:
|
||||
self.abort("receive() called with an unknown interface \""+interface+"\"")
|
||||
self["request"]="receive"
|
||||
self.rargs=interface
|
||||
self["state"]="request"
|
||||
self.wait_ack(["receive"])
|
||||
data,start_at,end_at=self["interfaces"][interface].get()
|
||||
self.plugin_notify("receive_return",(interface,data,start_at,end_at))
|
||||
return (0,data)
|
||||
|
||||
def receivet(self,interface, timeout):
|
||||
if interface not in self["interfaces"]:
|
||||
self.abort("receivet() called with an unknown interface \""+interface+"\"")
|
||||
self.rargs=timeout
|
||||
self["request"]="timeout_add"
|
||||
self["state"]="call"
|
||||
|
@ -284,7 +300,7 @@ class Simulator:
|
|||
"""
|
||||
node=Node(src, self.netmat.keys())
|
||||
self.nodes.append(node)
|
||||
thread=threading.Thread(target=node.run, daemon=False,args=[args])
|
||||
thread=threading.Thread(target=node.run, daemon=True,args=[args])
|
||||
thread.start()
|
||||
|
||||
def log(self,msg,node=None):
|
||||
|
@ -322,6 +338,9 @@ class Simulator:
|
|||
self.events=self.events[~np.array(selector)]
|
||||
node["state"]="running"
|
||||
node.rqueue.put(("timeout_remove",0))
|
||||
elif node["request"] == "abort":
|
||||
self.log("Simulation aborted: "+node.rargs,node=node.node_id)
|
||||
exit(1)
|
||||
elif node["request"] == "read":
|
||||
node["state"]="running"
|
||||
if node.rargs == "clock":
|
||||
|
|
Loading…
Add table
Reference in a new issue