From 2f119b81af03e839481cde54551fe1969a3649cf Mon Sep 17 00:00:00 2001 From: Tony Garnock-Jones Date: Thu, 16 May 2019 14:59:23 +0100 Subject: [PATCH] Handle errors from server --- syndicate/mini/core.py | 5 +++++ syndicate/mini/protocol.py | 1 + 2 files changed, 6 insertions(+) diff --git a/syndicate/mini/core.py b/syndicate/mini/core.py index 23dbbfd..6496bc9 100644 --- a/syndicate/mini/core.py +++ b/syndicate/mini/core.py @@ -131,8 +131,13 @@ class Connection(object): if protocol.Add.isClassOf(v): return self._lookup(v[0])._add(v[1]) if protocol.Del.isClassOf(v): return self._lookup(v[0])._del(v[1]) if protocol.Msg.isClassOf(v): return self._lookup(v[0])._msg(v[1]) + if protocol.Err.isClassOf(v): return self._on_error(v[0]) if protocol.Ping.isClassOf(v): self._send(self._encode(protocol.Pong())) + def _on_error(self, detail): + log.error('%s: error from server: %r' % (self.__class__.__qualname__, detail)) + self._disconnect() + def _send(self, bs): raise Exception('subclassresponsibility') diff --git a/syndicate/mini/protocol.py b/syndicate/mini/protocol.py index 50d4be8..d809c1f 100644 --- a/syndicate/mini/protocol.py +++ b/syndicate/mini/protocol.py @@ -14,6 +14,7 @@ Message = Record.makeConstructor('Message', 'body') Add = Record.makeConstructor('Add', 'endpointName captures') Del = Record.makeConstructor('Del', 'endpointName captures') Msg = Record.makeConstructor('Msg', 'endpointName captures') +Err = Record.makeConstructor('Err', 'detail') ## Bidirectional Ping = Record.makeConstructor('Ping', '')