ThinkingHome.DeviceModel
ThinkingHome.DeviceModel
DeviceEntry Class
Запись об одном зарегистрированном устройстве. Инкапсулирует host-level кэш последнего состояния и подписку на изменения устройства. О самом хосте не знает — общается с ним только через два колбэка, полученных в конструкторе: onChanged (фан-аут изменений наверх) и onRemoved (самоудаление из хоста при ThinkingHome.DeviceModel.DeviceEntry.Dispose).
internal sealed class DeviceEntry : System.IDisposableInheritance System.Object → DeviceEntry
Implements System.IDisposable
Constructors
DeviceEntry(IDevice, Action<StateChange>, Action<DeviceEntry>) Constructor
Запись об одном зарегистрированном устройстве. Инкапсулирует host-level кэш последнего состояния и подписку на изменения устройства. О самом хосте не знает — общается с ним только через два колбэка, полученных в конструкторе: onChanged (фан-аут изменений наверх) и onRemoved (самоудаление из хоста при ThinkingHome.DeviceModel.DeviceEntry.Dispose).
public DeviceEntry(ThinkingHome.DeviceModel.IDevice device, System.Action<ThinkingHome.DeviceModel.State.StateChange> onChanged, System.Action<ThinkingHome.DeviceModel.DeviceEntry> onRemoved);Parameters
device IDevice
onChanged System.Action<StateChange>
onRemoved System.Action<DeviceEntry>
Methods
DeviceEntry.Attach() Method
Подписаться на изменения устройства. Вызывается хостом после успешной регистрации.
public void Attach();DeviceEntry.QueryAsync(CancellationToken) Method
Отвечает из кэша; если кэш ещё не заполнен — единожды идёт в драйвер (фолбэк). Параллельные первые запросы коалесцируются: драйвер спрашивается один раз, остальные ждут и берут из кэша.
public System.Threading.Tasks.Task<ThinkingHome.DeviceModel.State.DeviceSnapshot> QueryAsync(System.Threading.CancellationToken ct);Parameters
ct System.Threading.CancellationToken