Mercurial > zrpn
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.
