Skip to content

ThinkingHome.DeviceModel

ThinkingHome.DeviceModel

DeviceEntry Class

Запись об одном зарегистрированном устройстве. Инкапсулирует host-level кэш последнего состояния и подписку на изменения устройства. О самом хосте не знает — общается с ним только через два колбэка, полученных в конструкторе: onChanged (фан-аут изменений наверх) и onRemoved (самоудаление из хоста при ThinkingHome.DeviceModel.DeviceEntry.Dispose).

csharp
internal sealed class DeviceEntry : System.IDisposable

Inheritance System.Object → DeviceEntry

Implements System.IDisposable

Constructors

DeviceEntry(IDevice, Action<StateChange>, Action<DeviceEntry>) Constructor

Запись об одном зарегистрированном устройстве. Инкапсулирует host-level кэш последнего состояния и подписку на изменения устройства. О самом хосте не знает — общается с ним только через два колбэка, полученных в конструкторе: onChanged (фан-аут изменений наверх) и onRemoved (самоудаление из хоста при ThinkingHome.DeviceModel.DeviceEntry.Dispose).

csharp
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

Подписаться на изменения устройства. Вызывается хостом после успешной регистрации.

csharp
public void Attach();

DeviceEntry.QueryAsync(CancellationToken) Method

Отвечает из кэша; если кэш ещё не заполнен — единожды идёт в драйвер (фолбэк). Параллельные первые запросы коалесцируются: драйвер спрашивается один раз, остальные ждут и берут из кэша.

csharp
public System.Threading.Tasks.Task<ThinkingHome.DeviceModel.State.DeviceSnapshot> QueryAsync(System.Threading.CancellationToken ct);

Parameters

ct System.Threading.CancellationToken

Returns

System.Threading.Tasks.Task<DeviceSnapshot>

Опубликовано под лицензией MIT