aboutsummaryrefslogtreecommitdiffstats
path: root/src/py/netio.py
diff options
context:
space:
mode:
Diffstat (limited to 'src/py/netio.py')
-rw-r--r--src/py/netio.py33
1 files changed, 22 insertions, 11 deletions
diff --git a/src/py/netio.py b/src/py/netio.py
index c6aacbc..0e8cab1 100644
--- a/src/py/netio.py
+++ b/src/py/netio.py
@@ -16,35 +16,42 @@ def recv_pack(stream,callback):
stream.read_bytes(8,_recv_size)
class SocketConnection(Connection):
- def __init__(self,linkclass,linkid,stream):
+ def __init__(self,linkclass,linkid,call_stream,file_stream = None):
super().__init__(linkclass,linkid)
- self.ioloop = tornado.ioloop.IOLoop.current()
- self.stream = stream
- self.stream.set_close_callback(self.close)
+ self._ioloop = tornado.ioloop.IOLoop.current()
+ self.call_stream = call_stream
+ self.call_stream.set_close_callback(self.close)
+
+ if file_stream == None:
+ self.file_stream = None
+
+ else:
+ self.file_stream = file_stream
+ self.file_stream.set_close_callback(self.close)
self._start_ping()
def send_msg(self,data):
- self.stream.write(struct.pack('l',len(data)) + data)
+ self.call_stream.write(struct.pack('l',len(data)) + data)
def start_recv(self,recv_callback):
def _recv_size(data):
size, = struct.unpack('l',data)
if size > 0:
- self.stream.read_bytes(size,_recv_data)
+ self.call_stream.read_bytes(size,_recv_data)
else:
if size == -1: #pong
self._ping_delay = 0
- self.stream.read_bytes(8,_recv_size)
+ self.call_stream.read_bytes(8,_recv_size)
def _recv_data(data):
self._recv_callback(self,data)
- self.stream.read_bytes(8,_recv_size)
+ self.call_stream.read_bytes(8,_recv_size)
self._recv_callback = tornado.stack_context.wrap(recv_callback)
- self.stream.read_bytes(8,_recv_size)
+ self.call_stream.read_bytes(8,_recv_size)
def close(self):
try:
@@ -52,11 +59,15 @@ class SocketConnection(Connection):
except AttributeError:
pass
+ self.call_stream.close()
+ if self.file_stream != None:
+ self.file_stream.close()
+
super().close()
def _start_ping(self):
def __check():
- self.stream.write(struct.pack('l',-1))
+ self.call_stream.write(struct.pack('l',-1))
self._ping_delay += 1
if self._ping_delay > 10:
@@ -70,7 +81,7 @@ class WebSocketConnection(Connection):
def __init__(self,linkclass,linkid,handler):
super().__init__(linkclass,linkid)
- self.ioloop = tornado.ioloop.IOLoop.current()
+ self._ioloop = tornado.ioloop.IOLoop.current()
self.handler = handler
def send_msg(self,data):