changeset 104:86f4b5469bd8 default tip

updated pygnetic
author Szymon Wróblewski <bluex0@gmail.com>
date Sun, 09 Sep 2012 22:46:31 +0200
parents 616421834e19
children
files zrpn/pygnetic/__init__.py zrpn/pygnetic/connection.py zrpn/pygnetic/discovery.py zrpn/pygnetic/message.py
diffstat 4 files changed, 33 insertions(+), 10 deletions(-) [+]
line wrap: on
line diff
--- a/zrpn/pygnetic/__init__.py	Fri Sep 07 02:22:10 2012 +0200
+++ b/zrpn/pygnetic/__init__.py	Sun Sep 09 22:46:31 2012 +0200
@@ -2,6 +2,7 @@
 """Network library for Pygame."""
 
 import logging
+import discovery
 import event
 import message
 import network
--- a/zrpn/pygnetic/connection.py	Fri Sep 07 02:22:10 2012 +0200
+++ b/zrpn/pygnetic/connection.py	Sun Sep 09 22:46:31 2012 +0200
@@ -74,7 +74,7 @@
 
     def _send_message(self, message, *args, **kwargs):
         name = message.__name__
-        params = self.message_factory.get_params(message)[1]
+        params = self.message_factory.get_params(message)
         try:
             message_ = message(*args, **kwargs)
         except TypeError, e:
--- a/zrpn/pygnetic/discovery.py	Fri Sep 07 02:22:10 2012 +0200
+++ b/zrpn/pygnetic/discovery.py	Sun Sep 09 22:46:31 2012 +0200
@@ -30,7 +30,7 @@
     TIMEOUT = 1
 
 
-class ServerHandler(SocketServer.BaseRequestHandler):
+class ServerHandler(SocketServer.BaseRequestHandler, object):
     def handle(self):
         data, socket = self.request
         _logger.debug('Received data: %r', data)
@@ -40,7 +40,7 @@
         name = message.__class__.__name__
         _logger.info('Received %s message from %s', name, self.client_address)
         ret_val, err = getattr(self, 'net_' + name)(message)
-        mid = message_factory.get_params(message.__class__)[0]
+        mid = message_factory.get_type_id(message.__class__)
         ack_data = message_factory.pack(response(message.oid, mid, ret_val, err))
         cnt = socket.sendto(ack_data, self.client_address)
         _logger.info('Sent response to %s', self.client_address)
--- a/zrpn/pygnetic/message.py	Fri Sep 07 02:22:10 2012 +0200
+++ b/zrpn/pygnetic/message.py	Sun Sep 09 22:46:31 2012 +0200
@@ -39,6 +39,7 @@
         if self._frozen == True:
             _logger.warning("Can't register new messages after connection "
                             "establishment")
+            return
         type_id = self._type_id_cnt = self._type_id_cnt + 1
         packet = namedtuple(name, field_names)
         self._message_names[name] = packet
@@ -115,25 +116,46 @@
         """Returns message class with given name.
 
         :param name: name of message
-        :return: message class (namedtuple) or None if not found
+        :return: message class (namedtuple)
         """
-        return self._message_names.get(name)
+        try:
+            return self._message_names[name]
+        except KeyError:
+            raise ValueError('Unknown message name')
+
 
     def get_by_type(self, type_id):
         """Returns message class with given type_id.
 
         :param type_id: type identifier of message
-        :return: message class (namedtuple) or None if not found
+        :return: message class (namedtuple)
         """
-        return self._message_types.get(type_id)
+        try:
+            return self._message_types[type_id]
+        except KeyError:
+            raise ValueError('Unknown message type_id')
 
     def get_params(self, message_cls):
-        """Return tuple containing type_id, and sending keyword arguments
+        """Return dict containing sending keyword arguments
 
         :param message_cls: message class created by register
-        :return: int, dict or None if not found
+        :return: dict
         """
-        return self._message_params.get(message_cls)
+        try:
+            return self._message_params[message_cls][1]
+        except KeyError:
+            raise ValueError('Unregistered message')
+
+    def get_type_id(self, message_cls):
+        """Return message class type_id
+
+        :param message_cls: message class created by register
+        :return: int
+        """
+        try:
+            return self._message_params[message_cls][1]
+        except KeyError:
+            raise ValueError('Unregistered message')
 
     def get_hash(self):
         """Calculate and return hash.