You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
48 lines
1.7 KiB
48 lines
1.7 KiB
import time
|
|
|
|
from Event.EventDispatcher import EventDispatcher
|
|
from Event.EventHandler import EventHandler
|
|
import Event.Signal as Signal
|
|
|
|
from Communication.Manager import CommunicationManager
|
|
from Communication.EndPoint import CommunicationEndPoint
|
|
from Communication.ConnectEntryPoint import ConnectEntryPoint
|
|
from Communication.DatagramEntryPoint import DatagramEntryPoint
|
|
from Communication.ProtocolHandler import ProtocolHandler
|
|
from Communication.Connector import Connector
|
|
|
|
from Transport.IoHandler import IoHandler
|
|
from Transport.TcpSocket import TcpSocket
|
|
from Transport.UdpSocket import UdpSocket
|
|
|
|
class Server(object):
|
|
def __init__(self, application):
|
|
self._con_mngr = CommunicationManager()
|
|
self._dispatcher = EventDispatcher()
|
|
|
|
self._dispatcher.registerHandler(self._con_mngr)
|
|
self._dispatcher.registerHandler(Connector())
|
|
self._dispatcher.registerHandler(IoHandler())
|
|
self._dispatcher.registerHandler(ProtocolHandler())
|
|
self._dispatcher.registerHandler(application)
|
|
Signal.initSignals(self._dispatcher)
|
|
|
|
def addEndpoint(self, endpoint):
|
|
self._con_mngr.addEndPoint(endpoint)
|
|
|
|
def bindTcp(self, ip, port, protocol):
|
|
self.addEndpoint(ConnectEntryPoint(TcpSocket(ip, port), protocol))
|
|
|
|
def bindUdp(self, ip, port, protocol):
|
|
self.addEndpoint(DatagramEntryPoint(UdpSocket(ip, port), protocol))
|
|
|
|
def addHandler(self, handler):
|
|
self._dispatcher.registerHandler(handler)
|
|
|
|
def start(self, heartbeat = None):
|
|
if heartbeat:
|
|
self._dispatcher.setHeartbeat(heartbeat)
|
|
|
|
self._dispatcher.start(None)
|
|
|
|
# vim: set ft=python et ts=8 sw=4 sts=4:
|