KERNEL: fix multisocket

bzr revid: ced-c8ed85742923230161fe7e3d43ad5f20d417ed71
This commit is contained in:
ced 2007-01-26 15:31:20 +00:00
parent 6b621cbb8d
commit 2160a47330
3 changed files with 16 additions and 22 deletions

View File

@ -282,11 +282,14 @@ class TinySocketClientThread(threading.Thread):
def run(self):
import traceback
import time
try:
self.running = True
ts = tiny_socket.mysocket(self.sock)
while self.running:
c = time.time()
msg = ts.myreceive()
print time.time() - c
try:
s=LocalService(msg[0])
@ -311,15 +314,21 @@ class TinySocketClientThread(threading.Thread):
ts.mysend(s, exception=True)
ts.mysend(result)
except Exception, e:
print "exception", e
self.sock.close()
return False
def stop(self):
self.running = False
self.sock.shutdown(socket.SHUT_RDWR)
class TinySocketServerThread(threading.Thread):
def __init__(self, socket):
def __init__(self, interface, port, secure=False):
threading.Thread.__init__(self)
self.socket = socket
self.__port=port
self.__interface=interface
self.socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
self.socket.bind((self.__interface, self.__port))
self.socket.listen(5)
self.threads = []
def run(self):
@ -333,32 +342,17 @@ class TinySocketServerThread(threading.Thread):
ct = TinySocketClientThread(clientsocket)
ct.start()
self.threads.append(ct)
# print "threads size:", len(self.threads)
except Exception, e:
return False
def stop(self):
self.running=False
for t in self.threads:
t.stop()
if t:
t.stop()
self.socket.shutdown(socket.SHUT_RDWR)
class TinySocketDaemon(object):
def __init__(self, interface, port, secure=False):
self.__port=port
self.__interface=interface
self.socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
self.socket.bind((self.__interface, self.__port))
self.socket.listen(10)
def attach(self,path,gw):
pass
def stop(self):
self.st.stop()
def start(self):
self.st = TinySocketServerThread(self.socket)
self.st.start()
# vim:noexpandtab:

View File

@ -9,7 +9,7 @@ class mysocket:
socket.AF_INET, socket.SOCK_STREAM)
else:
self.sock = sock
self.sock.settimeout(50)
self.sock.settimeout(60)
def connect(self, host, port):
self.sock.connect((host, port))
def mysend(self, msg, exception=False):

View File

@ -227,7 +227,7 @@ else:
logger.notifyChannel("web-services", netsvc.LOG_INFO, "You are using the SSL Layer")
tinySocket = netsvc.TinySocketDaemon(interface, 8085, False)
tinySocket = netsvc.TinySocketServerThread(interface, 8085, False)
logger.notifyChannel("web-services", netsvc.LOG_INFO, "starting TinySocket service, port "+str(8085))
def handler(signum, frame):