Explorar o código

Created Observer class. Now to wire it up. :P

Steve Thielemann %!s(int64=5) %!d(string=hai) anos
pai
achega
8c78743c08
Modificáronse 1 ficheiros con 26 adicións e 0 borrados
  1. 26 0
      tcp-proxy2.py

+ 26 - 0
tcp-proxy2.py

@@ -60,6 +60,29 @@ def cleanANSI(line):
     # return re.sub(r'\x1b\[([0-9,A-Z]{1,2}(;[0-9]{1,2})?(;[0-9]{3})?)?[m|K]?', '', line)
 
 
+class Observer(object):
+    def __init__(self):
+        self.dispatch = {}
+
+    def emit(signal, message):
+        if signal in dispatch:
+            # something to do
+            for listener in dispatch[signal]:
+                reactor.callLater(0, listener, message)
+            return True
+        return False
+
+    def connect(signal, func):
+        if not signal in dispatch:
+            dispatch[signal] = []
+
+        dispatch[signal].append(func)
+
+    def disconnect(signal, func):
+        if signal in dispatch:
+            dispatch[signal].remove(func)
+
+
 class Game(protocol.Protocol):
     def __init__(self):
         self.buffer = ""
@@ -69,6 +92,7 @@ class Game(protocol.Protocol):
         log.msg("Connected to Game Server")
         self.queue_player = self.factory.queue_player
         self.queue_game = self.factory.queue_game
+        self.observer = self.factory.observer
         self.setPlayerReceived()
 
     def setPlayerReceived(self):
@@ -167,6 +191,7 @@ class GlueFactory(protocol.ClientFactory):
         self.player = player
         self.queue_player = player.queue_player
         self.queue_game = player.queue_game
+        self.observer = player.observer
 
     def closeIt(self):
         log.msg("closeIt")
@@ -194,6 +219,7 @@ class Player(protocol.Protocol):
     def __init__(self):
         self.buffer = ""
         self.user = None
+        self.observer = Observer()
 
     def connectionMade(self):
         """ connected, setup queues.