rabin 7 gadi atpakaļ
vecāks
revīzija
39fa3671fa
1 mainītis faili ar 14 papildinājumiem un 6 dzēšanām
  1. 14 6
      tcp.py

+ 14 - 6
tcp.py

@@ -11,25 +11,30 @@ from demeter.core import *
 from demeter.mqtt import *
 from tornado.tcpserver import TCPServer
 from tornado.ioloop  import IOLoop
+from tornado import stack_context  
+from tornado.escape import native_str 
 
 class Connection(object):
 	clients = set()
+	EOF = '|e|'
 	def __init__(self, stream, address):
 		Connection.clients.add(self)
+		self._pub = Pub()
 		self._stream = stream
 		self._address = address
 		self._stream.set_close_callback(self.on_close)
 		self.read_message()
 		
 	def read_message(self):
-		self._stream.read_until('\n', self.broadcast_messages)
+		self._message_callback = stack_context.wrap(self.on_message)  
+		self._stream.read_until(self.EOF, self._message_callback)
 	
-	def broadcast_messages(self, data):
-		pub = Pub()
-		temp = data.split(':')
+	def on_message(self, data):
+		data = data.replace(self.EOF, '')
+		temp = data.split('|:|')
 		key = temp[0]
 		value = temp[1]
-		pub.push(key, value)
+		self._pub.push(key, value)
 		
 		#print "User said:", data[:-1], self._address
 		"""
@@ -52,11 +57,14 @@ class Server(TCPServer):
 		#print "connection num is:", len(Connection.clients)
 
 class Client(object):
+	EOF = '|e|'
 	def __init__(self, host='0.0.0.0', port=8000):
 		self.connect = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
 		self.connect.connect((host, port))
 		
 	def send(self, msg):
-		self.connect.sendall(msg + '\n')
+		msg = msg + self.EOF
+		self.connect.sendall(msg)
 		#data = self.connect.recv(1024)
+	def close(self):
 		self.connect.close()