public async void Search(int startIndex, int endIndex, int timeout = 300) { // 1. Convert the passed IP down to 3 places. // 2. Create System.Net.Http.HttpClient (NOTE: Windows HttpClient doesn't seem to have // adjustable timeout.) // 3. Set the POST string to "name". This will be used as a handshake. // 4. Iterate over the IP range, POSTing handshake. // 5. If handshake successful at IP, create a peripheral and add it to list. // 6. Update DeviceState: Searching->On // 7. After iteration, return list, even if empty. DiscoveredPeripherals = new Dictionary <string, WebServerPeripheral>(); DataConversion dataConverter = new DataConversion(); var fourthPartOfIp = DataConversion.SeperateStringByCharacterIndex(IP.ToString(), 3, '.'); var threePartIP = IP.ToString().Replace(fourthPartOfIp, ""); var httpClient = new System.Net.Http.HttpClient(); httpClient.Timeout = new TimeSpan(0, 0, 0, 0, timeout); DeviceState.State = States.Searching; OnDeviceStateChange(DeviceState); for (int i = startIndex; i < endIndex; i++) { try { string ip = threePartIP + i.ToString() + "/"; var resourceUri = new Uri(ip + WebServerPeripheral.WebServiceGetName); var response = await httpClient.PostAsync(resourceUri, null); if (response.IsSuccessStatusCode == true) { var deviceName = await response.Content.ReadAsStringAsync(); if (deviceName != "") { try { WebServerPeripheral peripheral = new WebServerPeripheral(deviceName, new Uri(ip)); DiscoveredPeripherals.Add(deviceName, peripheral); OnDiscoveringDevice(peripheral); } catch (Exception ex) { Debug.WriteLine("Exception in WifiCentralManager.Search: " + ex.Message); } } } response.Dispose(); } catch (Exception ex) { OnDiscoveringDevice(null); Debug.WriteLine("Exception in WifiCentralManager.Search: " + ex.Message); DeviceState.State = States.Unknown; } } UpdateDeviceStateWithWifiStatus(); }
public void DataConversion_HighNonReadableSeperationChar_ReturnEmptyString() { var seperatedString = DataConversion.SeperateStringByCharacterIndex(".123.123.123", 2, Convert.ToChar(0xFF)); Assert.AreEqual("", seperatedString); }
public void DataConversion_StringWithStartIndexThree_ReturnSeperatedString() { var seperatedString = DataConversion.SeperateStringByCharacterIndex(".123.123.123", 0, '.'); Assert.AreEqual("123.123.123", seperatedString); }
public void DataConversion_StringWithAllSeperators_ReturnSeperatedString() { var seperatedString = DataConversion.SeperateStringByCharacterIndex("....", 1, '.'); Assert.AreEqual("...", seperatedString); }
public void DataConversion_EmptyString_ReturnSeperatedString() { var seperatedString = DataConversion.SeperateStringByCharacterIndex("", 1, '.'); Assert.AreEqual("", seperatedString); }
public void DataConversion_StringWithThreeSeperatorsNegativeIndex_ReturnSeperatedString() { var seperatedString = DataConversion.SeperateStringByCharacterIndex("123.12.3.", -1, '.'); Assert.AreEqual("12.3.", seperatedString); }