def str(self, *args, **kwargs): # TODO change and check which is the active protocol to serialize # acordingly return CodecFactory().encode(('json', self.serialize(*args, **kwargs)))
def serialize_object(self, obj, *args, **kwargs): return CodecFactory().encode(self.serialization_protocol, ('', obj), *args, **kwargs)[1]
def putEnvironments(self, obj): obj = dict(new=obj) codec = CodecFactory().getCodec('pickle') self.write_attribute('Environment', codec.encode(('', obj)))
def removeEnvironments(self, keys): obj = {'del': keys} codec = CodecFactory().getCodec('pickle') self.write_attribute('Environment', codec.encode(('', obj)))
def write_Environment(self, attr): data = attr.get_write_value() data = CodecFactory().getCodec('pickle').decode(data)[1] self.macro_server.change_env(data)
def on_macro_server_changed(self, evt_src, evt_type, evt_value): # during server startup and shutdown avoid processing element # creation events if SardanaServer.server_state != State.Running: return evt_name = evt_type.name.lower() multi_attr = self.get_device_attr() elems_attr = multi_attr.get_attr_by_name("Elements") if evt_name == "poolelementschanged": # force the element list cache to be rebuild next time someone reads # the element list self.ElementsCache = None self.set_attribute(elems_attr, value=evt_value.rvalue) #self.push_change_event('Elements', *evt_value.value) elif evt_name in ("elementcreated", "elementdeleted"): # force the element list cache to be rebuild next time someone reads # the element list self.ElementsCache = None elem = evt_value value = {} if "created" in evt_name: key = 'new' else: key = 'del' json_elem = elem.serialize(pool=self.pool.full_name) value[key] = json_elem, value = CodecFactory().getCodec('utf8_json').encode(('', value)) self.set_attribute(elems_attr, value=value) #self.push_change_event('Elements', *value) elif evt_name == "elementschanged": # force the element list cache to be rebuild next time someone reads # the element list self.ElementsCache = None ms_name = self.macro_server.full_name new_values, changed_values, deleted_values = [], [], [] for elem in evt_value['new']: json_elem = elem.serialize(macro_server=ms_name) new_values.append(json_elem) for elem in evt_value['change']: json_elem = elem.serialize(macro_server=ms_name) changed_values.append(json_elem) for elem in evt_value['del']: json_elem = elem.serialize(macro_server=ms_name) deleted_values.append(json_elem) value = { "new": new_values, "change": changed_values, "del": deleted_values } value = CodecFactory().getCodec('utf8_json').encode(('', value)) self.set_attribute(elems_attr, value=value) #self.push_change_event('Elements', *value) elif evt_name == "environmentchanged": self.EnvironmentCache = None env_attr = multi_attr.get_attr_by_name("Environment") value = CodecFactory().getCodec('pickle').encode(('', evt_value)) self.set_attribute(env_attr, value=value)
def write_Configuration(self, attr): data = attr.get_write_value() cfg = CodecFactory().decode(('json', data), ensure_ascii=True) self.measurement_group.set_configuration_from_user(cfg)
def read_Configuration(self, attr): cfg = self.measurement_group.get_user_configuration() codec = CodecFactory().getCodec('json') data = codec.encode(('', cfg)) attr.set_value(data[1])
def __init__(self, dclass, name): """Constructor""" PoolElementDevice.__init__(self, dclass, name) self._codec = CodecFactory().getCodec('json')