template, fixes
This commit is contained in:
parent
a8009f744d
commit
ac045c3e0e
7 changed files with 238 additions and 37 deletions
25
network.py
25
network.py
|
|
@ -1,4 +1,4 @@
|
|||
import socket, os, sys
|
||||
import socket, os, sys, json
|
||||
from threading import Thread, Lock
|
||||
|
||||
NETTRACE = str(os.environ.get("NETTRACE", "0")) == "1"
|
||||
|
|
@ -12,25 +12,44 @@ class Sock:
|
|||
self.queue_lock = Lock()
|
||||
self.sock_thread = None
|
||||
|
||||
def send(self, message, address):
|
||||
def send_raw(self, message, address):
|
||||
if type(message) == str:
|
||||
message = message.encode()
|
||||
if NETTRACE:
|
||||
print("Send to", tuple(address), ":", message, file=sys.stderr)
|
||||
self.sock.sendto(message, tuple(address))
|
||||
|
||||
def send(self, message, address):
|
||||
message = json.dumps(message)
|
||||
if NETTRACE:
|
||||
print("Send to", tuple(address), ":", message, file=sys.stderr)
|
||||
self.sock.sendto(message.encode(), tuple(address))
|
||||
|
||||
def listen(self, address, length=65535):
|
||||
self.sock_thread = SockThread(self, tuple(address), length)
|
||||
self.sock_thread.setDaemon(True)
|
||||
self.sock_thread.start()
|
||||
|
||||
def get(self):
|
||||
def get_raw(self):
|
||||
if len(self.queue) == 0:
|
||||
return []
|
||||
with self.queue_lock:
|
||||
queue = self.queue
|
||||
self.queue = []
|
||||
return queue
|
||||
|
||||
def get(self):
|
||||
if len(self.queue) == 0:
|
||||
return []
|
||||
queue = []
|
||||
with self.queue_lock:
|
||||
for r in self.queue:
|
||||
try:
|
||||
queue.append([json.loads(r[0].decode()), r[1]])
|
||||
except:
|
||||
pass
|
||||
self.queue.clear()
|
||||
return queue
|
||||
|
||||
class SockThread(Thread):
|
||||
def __init__(self, sock, address, length):
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue