コード例 #1
0
 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)))
コード例 #2
0
 def serialize_object(self, obj, *args, **kwargs):
     return CodecFactory().encode(self.serialization_protocol, ('', obj),
                                  *args, **kwargs)[1]
コード例 #3
0
 def putEnvironments(self, obj):
     obj = dict(new=obj)
     codec = CodecFactory().getCodec('pickle')
     self.write_attribute('Environment', codec.encode(('', obj)))
コード例 #4
0
 def removeEnvironments(self, keys):
     obj = {'del': keys}
     codec = CodecFactory().getCodec('pickle')
     self.write_attribute('Environment', codec.encode(('', obj)))
コード例 #5
0
 def write_Environment(self, attr):
     data = attr.get_write_value()
     data = CodecFactory().getCodec('pickle').decode(data)[1]
     self.macro_server.change_env(data)
コード例 #6
0
    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)
コード例 #7
0
 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)
コード例 #8
0
 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])
コード例 #9
0
ファイル: PoolDevice.py プロジェクト: suyzhu/sardana
 def __init__(self, dclass, name):
     """Constructor"""
     PoolElementDevice.__init__(self, dclass, name)
     self._codec = CodecFactory().getCodec('json')