Home Reference Source

src/tangojs/core/api/AttributeProxy.js


import { DeviceProxy } from './DeviceProxy'
import { DeviceAttribute } from './DeviceAttribute'

/** @private */
const _proxy = Symbol.for('_proxy')

/** @private */
const _attname = Symbol.for('_attname')

export class AttributeProxy {

  /**
   * @param {string} devname
   * @param {string} attname
   */
  constructor (devname, attname) {

    /** @private */
    this[_attname] = attname

    /** @private */
    this[_proxy] = new DeviceProxy(devname)
  }

  /**
   * @return {Promise<AttributeInfo,Error>}
   */
  get_info () {
    return this[_proxy].get_attribute_info(this[_attname])
  }

  /**
   * @return {Promise<DeviceAttribute,Error>}
   */
  read () {
    return this[_proxy].read_attribute(this[_attname])
  }

  /**
   * @param {DeviceAttribute} attr
   * @return {Promise<undefined,Error>}
   */
  write (attr) {
    // FIXME do sth with accessing private _data
    const data = Object.assign({}, attr._data, { name: this[_attname] })
    const attribute = new DeviceAttribute(data)
    return this[_proxy].write_attribute(attribute)
  }
}