mirror of
https://gitlab.com/manzerbredes/esds.git
synced 2025-04-19 03:59:45 +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
|
value=self.chest[key]=value
|
||||||
self.chest_lock.release()
|
self.chest_lock.release()
|
||||||
|
|
||||||
|
def abort(self,reason):
|
||||||
|
self.rargs=reason
|
||||||
|
self["request"]="abort"
|
||||||
|
self["state"]="call"
|
||||||
|
while True: continue
|
||||||
|
|
||||||
def log(self,msg):
|
def log(self,msg):
|
||||||
|
if type(msg) != str:
|
||||||
|
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"
|
||||||
|
@ -90,6 +98,8 @@ class Node:
|
||||||
self.wait_ack(["turn_on"])
|
self.wait_ack(["turn_on"])
|
||||||
|
|
||||||
def send(self, interface, data, datasize, dst):
|
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.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"
|
||||||
|
@ -98,16 +108,9 @@ class Node:
|
||||||
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]
|
||||||
|
|
||||||
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):
|
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.rargs=timeout
|
||||||
self["request"]="timeout_add"
|
self["request"]="timeout_add"
|
||||||
self["state"]="call"
|
self["state"]="call"
|
||||||
|
@ -126,7 +129,20 @@ class Node:
|
||||||
self.wait_ack(["timeout_remove"])
|
self.wait_ack(["timeout_remove"])
|
||||||
return ack[1]
|
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):
|
def receivet(self,interface, timeout):
|
||||||
|
if interface not in self["interfaces"]:
|
||||||
|
self.abort("receivet() called with an unknown interface \""+interface+"\"")
|
||||||
self.rargs=timeout
|
self.rargs=timeout
|
||||||
self["request"]="timeout_add"
|
self["request"]="timeout_add"
|
||||||
self["state"]="call"
|
self["state"]="call"
|
||||||
|
@ -284,7 +300,7 @@ class Simulator:
|
||||||
"""
|
"""
|
||||||
node=Node(src, self.netmat.keys())
|
node=Node(src, self.netmat.keys())
|
||||||
self.nodes.append(node)
|
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()
|
thread.start()
|
||||||
|
|
||||||
def log(self,msg,node=None):
|
def log(self,msg,node=None):
|
||||||
|
@ -322,6 +338,9 @@ class Simulator:
|
||||||
self.events=self.events[~np.array(selector)]
|
self.events=self.events[~np.array(selector)]
|
||||||
node["state"]="running"
|
node["state"]="running"
|
||||||
node.rqueue.put(("timeout_remove",0))
|
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":
|
elif node["request"] == "read":
|
||||||
node["state"]="running"
|
node["state"]="running"
|
||||||
if node.rargs == "clock":
|
if node.rargs == "clock":
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue