public override ConnectionResult OpenDeviceConnection(string deviceCode, out RemoteHostInfo hostInfo) { ConnectionResult err = ConnectionResult.Successful; string ip; hostInfo = default(RemoteHostInfo); if (!AddressBook.ContainsKey(deviceCode)) { err = UpdateAddressBook(deviceCode, AddressBook); if (err != 0) { return(err); } err = GetIp(deviceCode, _timeOut, out ip); if (err != 0) { return(err); } AddressBook.AddOrUpdate(deviceCode, new Addresses(EmptyMacAddress, ip), (s, addresses) => addresses); } ip = AddressBook[deviceCode].IpAddress; if (String.IsNullOrEmpty(ip)) { err = GetIp(deviceCode, _timeOut, out ip); if (err != 0) { return(err); } AddressBook[deviceCode] = new Addresses(EmptyMacAddress, ip); } hostInfo = new RemoteHostInfo(ip, TcpProlocol); return(err); }
protected override ConnectionResult UpdateAddressBook(string deviceCode, AddressBook addressBook) { var err = GetIp(deviceCode, _timeOut, out string ip); addressBook.AddOrUpdate(deviceCode, new Addresses(EmptyMacAddress, ip), (s, addresses) => addresses); return(err); }
protected sealed override AddressBook GetAddressBookDb(IList <string> hostCodes) { AddressBook addressBook = new AddressBook(new Dictionary <string, Addresses>(hostCodes.Count)); foreach (string hostCode in hostCodes) { addressBook.AddOrUpdate(hostCode, new Addresses(), (s, addresses) => addresses); } return(addressBook); }
public override void AddAddress(string code, Addresses addresses) { AddressBook.AddOrUpdate(code, addresses, (s, oldAddress) => addresses); }