Skip to content
Snippets Groups Projects
Commit f4b653ff authored by Antoine Millet's avatar Antoine Millet
Browse files

Now raise an exception when protocols are used in fallback mode

parent 9151bf7f
No related branches found
No related tags found
No related merge requests found
......@@ -31,3 +31,11 @@ class NoFreeLabelError(Exception):
Exception raised when no more free labels are available for protocol
allocation.
'''
class FallbackModeEnabledError(Exception):
'''
Exception raised when a feature which is not compatible with fallback mode
is used.
'''
......@@ -12,7 +12,8 @@ import socket
import logging
from sjrpc.core.protocols import Protocol, RpcProtocol, TunnelProtocol
from sjrpc.core.exceptions import RpcError, NoFreeLabelError
from sjrpc.core.exceptions import (RpcError, NoFreeLabelError,
FallbackModeEnabledError)
import pyev
......@@ -62,6 +63,9 @@ class RpcConnection(object):
self._sock = sock
sock.setblocking(False)
# Initialization requires fallback mode disabled:
self.fallback = False
# Get the pyev loop:
if loop is None:
self.loop = pyev.default_loop()
......@@ -294,6 +298,9 @@ class RpcConnection(object):
'''
Register a new protocol for the specified label.
'''
if self.fallback:
raise FallbackModeEnabledError('Fallback mode is not compatible '
'with protocols')
if label is None:
for label in xrange(0, RpcConnection.MAX_LABEL):
if label not in self._protocols:
......@@ -312,6 +319,9 @@ class RpcConnection(object):
Unregister the specified protocol label for this connection.
'''
if self.fallback:
raise FallbackModeEnabledError('Fallback mode is not compatible '
'with protocols')
if label in self._protocols and label != 0:
del self._protocols[label]
else:
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment