#!/usr/bin/env python
# -'- coding: utf-8 -*.
"""
authored by: RaNaN
This modul class handels all incoming and outgoing data between server and gui
"""
import asynchat
import asyncore
import socket
import threading
class ServerThread(threading.Thread):
def __init__(self, pycore):
threading.Thread.__init__(self)
self.setDaemon(True)
self.server = MainServerSocket(7272, pycore)
def run(self):
asyncore.loop()
print "loop closed"
class MainServerSocket(asyncore.dispatcher):
def __init__(self, port, pycore):
print 'initing MSS'
asyncore.dispatcher.__init__(self)
self.pycore = pycore
self.create_socket(socket.AF_INET, socket.SOCK_STREAM)
self.bind(('localhost', port))
self.listen(5)
def handle_accept(self):
newSocket, address = self.accept()
print "Connected from", address
SecondaryServerSocket(newSocket, self.pycore)
def handle_close(self):
print "going to close"
self.close()
class SecondaryServerSocket(asynchat.async_chat):
def __init__(self, pycore, *args):
print 'initing SSS'
self.pycore = pycore
asynchat.async_chat.__init__(self, *args)
self.set_terminator('\n')
self.data = []
def collect_incoming_data(self, data):
self.data.append(data)
def found_terminator(self):
self.push("daten")
self.data = []
#having fun with the data
def handle_close(self):
print "Disconnected from", self.getpeername()
self.close()