public static async Task <Device> PowerOnAsync(string liveId, int times = 5, int delay = 1000, string addressOrHostname = null) { using (var messageTransport = new MessageTransport(addressOrHostname)) { var poweronRequestMessage = new PowerOnMessage { LiveId = liveId }; for (var i = 0; i < times; i++) { await messageTransport.SendAsync(poweronRequestMessage); await Task.Delay(delay); } var presenceRequestMessage = new PresenceRequestMessage(); var response = await TaskExtensions.WithRetries(() => messageTransport.WaitForMessageAsync <PresenceResponseMessage>(pingTimeout, () => messageTransport.SendAsync(presenceRequestMessage).GetAwaiter().GetResult()), pingRetries); return(new Device(response)); } }
public static async Task <Device> PingAsync(string addressOrHostname) { using (var messageTransport = new MessageTransport(addressOrHostname)) { var requestMessage = new PresenceRequestMessage(); var response = await TaskExtensions.WithRetries(() => messageTransport.WaitForMessageAsync <PresenceResponseMessage>(pingTimeout, () => messageTransport.SendAsync(requestMessage).Wait()), pingRetries); return(new Device(response)); } }
public static Task <IEnumerable <Device> > DiscoverAsync() { return(Task.Run(() => { using (var messageTransport = new MessageTransport()) { var requestMessage = new PresenceRequestMessage(); return messageTransport.ReadMessages(discoveryListenTime, () => messageTransport.SendAsync(requestMessage).Wait()) .OfType <PresenceResponseMessage>() .DistinctBy(m => m.HardwareId) .Select(m => new Device(m)).ToArray().AsEnumerable(); } })); }