ThinkingHome.DeviceModel.Remoting.ProxyServer
ThinkingHome.DeviceModel.Remoting.ProxyServer
RemoteHost Class
Прокси-сторона одного домашнего хоста: реализует IDeviceHost, но вызовы уходят по SignalR текущему соединению этого hostId. connectionId резолвится на каждый вызов (переживает реконнект). Discovery — pull + кэш (сбрасывается при (ре)коннекте). Живёт в реестре и после разрыва, чтобы подписки бриджа на Changed переживали реконнект.
public sealed class RemoteHost : ThinkingHome.DeviceModel.IDeviceHostInheritance System.Object → RemoteHost
Implements IDeviceHost
Constructors
RemoteHost(string, IHubContext<DeviceHub>) Constructor
Прокси-сторона одного домашнего хоста: реализует IDeviceHost, но вызовы уходят по SignalR текущему соединению этого hostId. connectionId резолвится на каждый вызов (переживает реконнект). Discovery — pull + кэш (сбрасывается при (ре)коннекте). Живёт в реестре и после разрыва, чтобы подписки бриджа на Changed переживали реконнект.
public RemoteHost(string hostId, Microsoft.AspNetCore.SignalR.IHubContext<ThinkingHome.DeviceModel.Remoting.ProxyServer.DeviceHub> hub);Parameters
hostId System.String
hub Microsoft.AspNetCore.SignalR.IHubContext<DeviceHub>
Properties
RemoteHost.HostId Property
Идентификатор домашнего хоста.
public string HostId { get; }Property Value
RemoteHost.IsOnline Property
Есть ли живое соединение с хостом прямо сейчас.
public bool IsOnline { get; }Property Value
Methods
RemoteHost.ExecuteAsync(string, DeviceCommand, CancellationToken) Method
Исполнить команду над устройством (execute).
public System.Threading.Tasks.Task<ThinkingHome.DeviceModel.CommandOutcome> ExecuteAsync(string deviceId, ThinkingHome.DeviceModel.Commands.DeviceCommand command, System.Threading.CancellationToken ct=default(System.Threading.CancellationToken));Parameters
deviceId System.String
command DeviceCommand
ct System.Threading.CancellationToken
Implements ExecuteAsync(string, DeviceCommand, CancellationToken)
Returns
System.Threading.Tasks.Task<CommandOutcome>
RemoteHost.GenerateLinkingOtpAsync(CancellationToken) Method
Привязка: попросить хост сгенерировать и доставить OTP.
public System.Threading.Tasks.Task GenerateLinkingOtpAsync(System.Threading.CancellationToken ct=default(System.Threading.CancellationToken));Parameters
ct System.Threading.CancellationToken
Returns
RemoteHost.GetDeviceAsync(string, CancellationToken) Method
Описание одного устройства или null, если его нет.
public System.Threading.Tasks.Task<ThinkingHome.DeviceModel.DeviceDescriptor?> GetDeviceAsync(string deviceId, System.Threading.CancellationToken ct=default(System.Threading.CancellationToken));Parameters
deviceId System.String
ct System.Threading.CancellationToken
Implements GetDeviceAsync(string, CancellationToken)
Returns
System.Threading.Tasks.Task<DeviceDescriptor>
RemoteHost.GetDevicesAsync(CancellationToken) Method
Все зарегистрированные устройства (discovery). Async — может уходить по сети (remote host).
public System.Threading.Tasks.Task<System.Collections.Generic.IReadOnlyCollection<ThinkingHome.DeviceModel.DeviceDescriptor>> GetDevicesAsync(System.Threading.CancellationToken ct=default(System.Threading.CancellationToken));Parameters
ct System.Threading.CancellationToken
Implements GetDevicesAsync(CancellationToken)
Returns
System.Threading.Tasks.Task<System.Collections.Generic.IReadOnlyCollection<DeviceDescriptor>>
RemoteHost.QueryAsync(string, CancellationToken) Method
Опросить состояние устройства (query).
public System.Threading.Tasks.Task<ThinkingHome.DeviceModel.State.DeviceSnapshot> QueryAsync(string deviceId, System.Threading.CancellationToken ct=default(System.Threading.CancellationToken));Parameters
deviceId System.String
ct System.Threading.CancellationToken
Implements QueryAsync(string, CancellationToken)
Returns
System.Threading.Tasks.Task<DeviceSnapshot>
RemoteHost.ValidateLinkingOtpAsync(string, CancellationToken) Method
Привязка: проверить OTP на хосте.
public System.Threading.Tasks.Task<bool> ValidateLinkingOtpAsync(string otp, System.Threading.CancellationToken ct=default(System.Threading.CancellationToken));Parameters
otp System.String
ct System.Threading.CancellationToken
Returns
System.Threading.Tasks.Task<System.Boolean>
Events
RemoteHost.Changed Event
Агрегированный поток изменений состояния всех устройств (report).
public event Action<StateChange>? Changed;Implements Changed