Sha256: 47b779d43d8c9c4530324fa4a8e040021f77412fbf27fa6be0e2020d9cbf6f79

Contents?: true

Size: 1.28 KB

Versions: 1

Compression:

Stored size: 1.28 KB

Contents

require 'stf/model/device'

module Stf
# can not inherite from Array because http://words.steveklabnik.com/beware-subclassing-ruby-core-classes
  class DeviceList
    def initialize(devices)
      if devices.nil?
        @devices = Array.new
      else
        @devices = devices.map {|d| (d.kind_of? Device) ? d : Device.new(d)}
      end
    end

    def byFilter(filter)
      filter ? select {|d| d.checkFilter(filter)} : Array.new
    end

    def exceptFilter(filter)
      filter ? reject {|d| d.checkFilter(filter)} : this
    end

    def filterReadyToConnect
      # https://github.com/openstf/stf/blob/93d9d7fe859bb7ca71669f375d841d94fa47d751/lib/wire/wire.proto#L170
      # enum DeviceStatus {
      #   OFFLINE = 1;
      #   UNAUTHORIZED = 2;
      #   ONLINE = 3;
      #   CONNECTING = 4;
      #   AUTHORIZING = 5;
      # }
      select {|d| d.ready == true && d.present == true && d.usage.nil? && d.status == 3 }
    end

    def asConnectUrlList
      @devices.map {|d| d.remoteConnectUrl}
    end

    def select
      DeviceList.new(@devices.select {|d| yield(d)})
    end

    def reject
      DeviceList.new(@devices.select {|d| !yield(d)})
    end

    def empty?
      @devices.empty?
    end

    def size
      @devices.size
    end

    def asArray
      @devices
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
stf-client-0.3.0.rc10 lib/stf/model/device_list.rb