Skip to content
Snippets Groups Projects
Commit a0f18a6a authored by jkerdreu's avatar jkerdreu
Browse files

- Transform xaal.lib.binding.UUID to uuid.UUID to comply RapidJSON specs

git-svn-id: https://redmine.imt-atlantique.fr/svn/xaal/code/Python/branches/0.7@2818 b32b6428-25c9-4566-ad07-03861ab6144f
parent ef1af282
Branches
No related tags found
No related merge requests found
import rapidjson
from xaal.lib import bindings
"""
Since version 0.7 xAAL msg are CBOR encoded, this means w/ addresses now
......@@ -9,8 +10,42 @@ to sio package.
def dumps(*args,**kwargs):
obj = args[0]
#import pdb;pdb.set_trace()
return rapidjson.dumps(obj,uuid_mode=rapidjson.UM_CANONICAL)
try:
r = rapidjson.dumps(obj,uuid_mode=rapidjson.UM_CANONICAL)
except TypeError:
import pdb;pdb.set_trace()
return r
def cleanup(obj):
"""
recursive walk a object to search for un-wanted CBOR tags.
Transform this tag in string format, this can be UUID, URL..
Should be Ok, with list, dicts..
Warning: This operate in-place changes.
Warning: This won't work for tags in dict keys.
"""
if isinstance(obj,list):
for i in range(0,len(obj)):
obj[i] = cleanup(obj[i])
return obj
if isinstance(obj,dict):
for k in obj.keys():
obj.update({k:cleanup(obj[k])})
return obj
if type(obj) in bindings.classes:
r = obj.get()
return r
else:
return obj
def prepare_cbor(obj):
import copy
r = copy.deepcopy(obj)
return cleanup(r)
loads = rapidjson.loads
......@@ -15,7 +15,7 @@ def remote_addr(sid):
return env['REMOTE_ADDR']
def broadcast(event,sio_msg):
socket.emit(event,sio_msg)
socket.emit(event,json.prepare_cbor(sio_msg))
@socket.on('send_request')
def send_xaal_request(sid,addr,action,body):
......@@ -25,7 +25,7 @@ def send_xaal_request(sid,addr,action,body):
def query_attributes(sid,addr):
dev = xaal_core.get_device(addr)
if dev:
msg = { 'address': dev.address.get(),'attributes':dev.attributes}
msg = { 'address': dev.address.get(),'attributes':json.prepare_cbor(dev.attributes)}
socket.emit('event_attributeChanges',msg,room=sid)
@socket.on('refresh_attributes')
......@@ -34,7 +34,7 @@ def refresh_attributes(sid,addrs):
for addr in addrs:
dev = xaal_core.get_device(addr)
if dev:
msg = { 'address': dev.address.get(),'attributes':dev.attributes}
msg = { 'address': dev.address.get(),'attributes':json.prepare_cbor(dev.attributes)}
socket.emit('event_attributeChanges',msg,room=sid)
else:
print("Unknow device: %s" % addr)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please to comment