feat(rcf): Added property agnostic method

This commit is contained in:
Swann
2019-02-14 13:13:28 +01:00
parent 67c5976c74
commit 2cd1f604ec
3 changed files with 99 additions and 25 deletions

View File

@ -15,14 +15,17 @@ class RCFMessage(object):
"""
Message is formatted on wire as 2 frames:
frame 0: key (0MQ string) // property path
frame 1: type (0MQ string) // property path
frame 2: body (blob) // Could be any data
"""
key = None # key (string)
body = None # blob
type = None # data type (string)
body = None # data blob
def __init__(self, key=None, body=None):
def __init__(self, key=None, type=None, body=None):
self.key = key
self.type = type
self.body = body
def store(self, dikt):
@ -35,14 +38,16 @@ class RCFMessage(object):
def send(self, socket):
"""Send key-value message to socket; any empty frames are sent as such."""
key = '' if self.key is None else self.key.encode()
type = '' if self.type is None else self.type.encode()
body = '' if self.body is None else umsgpack.packb(self.body)
socket.send_multipart([key, body])
@classmethod
def recv(cls, socket):
"""Reads key-value message from socket, returns new kvmsg instance."""
key, body = socket.recv_multipart(zmq.NOBLOCK)
key,type, body = socket.recv_multipart(zmq.NOBLOCK)
key = key.decode() if key else None
body = body.decode() if body else None
body = umsgpack.unpackb(body) if body else None
return cls(key=key, body=body)
@ -54,9 +59,10 @@ class RCFMessage(object):
else:
size = len(self.body)
data = repr(self.body)
print("[key:{key}][size:{size}] {data}".format(
print("[key:{key}][size:{size}][type:{type}] {data}".format(
key=self.key,
size=size,
type=self.type,
data=data,
))
@ -122,7 +128,7 @@ class Client():
for f in self.recv_callback:
f(rcfmsg)
def push_update(self, key, body):
def push_update(self, key,type,body):
rcfmsg = RCFMessage(key,body)
rcfmsg.send(self.push_sock)
# self.push_sock.send_multipart()