Refactoring: less unneeded oo, unreachable code gone, relocated logic
This commit is contained in:
parent
d703f018b8
commit
9fc033dc18
1 changed files with 18 additions and 31 deletions
|
@ -32,6 +32,7 @@ META_ROUTE = "meta"
|
||||||
META_ROUTE_INDEX = 0
|
META_ROUTE_INDEX = 0
|
||||||
|
|
||||||
PACK_FORMAT = "BH"
|
PACK_FORMAT = "BH"
|
||||||
|
METADATA_LENGTH = struct.calcsize(PACK_FORMAT)
|
||||||
|
|
||||||
|
|
||||||
class ConvertFailedError(ValueError):
|
class ConvertFailedError(ValueError):
|
||||||
|
@ -39,12 +40,6 @@ class ConvertFailedError(ValueError):
|
||||||
super(ValueError, self).__init__("conversion failed (invalid data type supplied)")
|
super(ValueError, self).__init__("conversion failed (invalid data type supplied)")
|
||||||
|
|
||||||
|
|
||||||
class Metadata:
|
|
||||||
def __init__(self, data_type, m_route):
|
|
||||||
self.data_type = REVERSE_DATA_TYPES[data_type]
|
|
||||||
self.m_route = m_route
|
|
||||||
|
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
def run(self, data, handler):
|
def run(self, data, handler):
|
||||||
if type(data) is dict:
|
if type(data) is dict:
|
||||||
|
@ -82,10 +77,6 @@ def create_metadata(data_type, converted_route, indexed_dict=False):
|
||||||
|
|
||||||
def prepare_data(data):
|
def prepare_data(data):
|
||||||
original_data_type = type(data)
|
original_data_type = type(data)
|
||||||
if original_data_type in DATA_TYPES:
|
|
||||||
data_type = DATA_TYPES[original_data_type]
|
|
||||||
else:
|
|
||||||
data_type = DATA_TYPES[bytes]
|
|
||||||
if original_data_type is str:
|
if original_data_type is str:
|
||||||
data = data.encode()
|
data = data.encode()
|
||||||
elif original_data_type in (int, float):
|
elif original_data_type in (int, float):
|
||||||
|
@ -107,12 +98,7 @@ def pack_message(data, exchange_route,
|
||||||
|
|
||||||
def parse_metadata(message):
|
def parse_metadata(message):
|
||||||
metadata = struct.unpack(PACK_FORMAT, message[:4])
|
metadata = struct.unpack(PACK_FORMAT, message[:4])
|
||||||
return Metadata(metadata[0], metadata[1])
|
return REVERSE_DATA_TYPES[metadata[0]], metadata[1]
|
||||||
|
|
||||||
|
|
||||||
def parse_message(data, data_type):
|
|
||||||
data = convert_data(data[4:], data_type)
|
|
||||||
return data
|
|
||||||
|
|
||||||
|
|
||||||
def convert_data(data, data_type, debug=False):
|
def convert_data(data, data_type, debug=False):
|
||||||
|
@ -144,6 +130,15 @@ class Shared:
|
||||||
def setup(self, routes, debug=False):
|
def setup(self, routes, debug=False):
|
||||||
self.routes = routes
|
self.routes = routes
|
||||||
self.routes["meta"] = Meta()
|
self.routes["meta"] = Meta()
|
||||||
|
self.routes = Routing.create_routes(self.routes)
|
||||||
|
self.reverse_routes = reverse_dict(self.routes)
|
||||||
|
self.exchange_routes = Routing.create_exchange_map(self.routes)
|
||||||
|
self.reverse_exchange_routes = reverse_dict(self.exchange_routes)
|
||||||
|
# Peer routes have not been received yet. As per convention the meta route
|
||||||
|
# has to exist and we need it for our first send to succeed (otherwise it
|
||||||
|
# would fail during route lookup).
|
||||||
|
self.peer_exchange_routes = {META_ROUTE_INDEX : META_ROUTE}
|
||||||
|
self.peer_reverse_exchange_routes = reverse_dict(self.peer_exchange_routes)
|
||||||
self.debug = debug
|
self.debug = debug
|
||||||
|
|
||||||
|
|
||||||
|
@ -156,15 +151,6 @@ class Shared:
|
||||||
|
|
||||||
def patched_opened(self):
|
def patched_opened(self):
|
||||||
self.address, self.port = self.peer_address
|
self.address, self.port = self.peer_address
|
||||||
self.routes = Routing.create_routes(self.routes, self)
|
|
||||||
self.reverse_routes = reverse_dict(self.routes)
|
|
||||||
self.exchange_routes = Routing.create_exchange_map(self.routes)
|
|
||||||
self.reverse_exchange_routes = reverse_dict(self.exchange_routes)
|
|
||||||
# Peer routes have not been received yet. As per convention the meta route
|
|
||||||
# has to exist and we need it for our first send to succeed (otherwise it
|
|
||||||
# would fail during route lookup).
|
|
||||||
self.peer_exchange_routes = {META_ROUTE_INDEX : META_ROUTE}
|
|
||||||
self.peer_reverse_exchange_routes = reverse_dict(self.peer_exchange_routes)
|
|
||||||
try:
|
try:
|
||||||
self.post_opened()
|
self.post_opened()
|
||||||
except AttributeError:
|
except AttributeError:
|
||||||
|
@ -173,21 +159,22 @@ class Shared:
|
||||||
|
|
||||||
def patched_received_message(self, message):
|
def patched_received_message(self, message):
|
||||||
message = message.data
|
message = message.data
|
||||||
metadata = parse_metadata(message)
|
print(message)
|
||||||
|
data_type, m_route = parse_metadata(message)
|
||||||
try:
|
try:
|
||||||
route = self.exchange_routes[metadata.m_route]
|
route = self.exchange_routes[m_route]
|
||||||
except KeyError:
|
except KeyError:
|
||||||
self.send(Handler.INVALID_ROUTE, META_ROUTE)
|
self.send(INVALID_ROUTE, META_ROUTE)
|
||||||
Logging.error("Received message with non-existing route '%d' from '%s:%d'" % (
|
Logging.error("Received message with non-existing route '%d' from '%s:%d'" % (
|
||||||
metadata.m_route, self.address, self.port))
|
m_route, self.address, self.port))
|
||||||
return
|
return
|
||||||
data = parse_message(message, metadata.data_type)
|
data = convert_data(message[METADATA_LENGTH:], data_type)
|
||||||
if self.debug:
|
if self.debug:
|
||||||
data_repr = str(data).replace("\n", " ")
|
data_repr = str(data).replace("\n", " ")
|
||||||
if len(data_repr) > 80:
|
if len(data_repr) > 80:
|
||||||
data_repr = data_repr[:80] + "..."
|
data_repr = data_repr[:80] + "..."
|
||||||
Logging.info("Received '%s' on route '%s': %s (%s:%d)" % (
|
Logging.info("Received '%s' on route '%s': %s (%s:%d)" % (
|
||||||
type(data).__name__ if not metadata.data_type == INDEXED_DICT else "indexed_dict",
|
type(data).__name__ if not data_type == INDEXED_DICT else "indexed_dict",
|
||||||
route, data_repr, self.address,
|
route, data_repr, self.address,
|
||||||
self.port))
|
self.port))
|
||||||
try:
|
try:
|
||||||
|
|
Reference in a new issue