protected async Task <IActivityStreamRepository> Open(SavedIPAddressModel savedAddress, int port) { var peer = new Peer() { Address = savedAddress, AddressPort = port, }; return(new HttpActivityStreamRepository(null, peer)); }
public async Task <SavedIPAddressModel> GetOrRememberIP(IPAddress address) { var ipaddress = address.ToString(); var ips = address.AddressFamily == AddressFamily.InterNetworkV6 ? GetIPv6() : GetIPv4(); var ip = await ips.FirstOrDefaultAsync(ip => ip.Address == ipaddress); if (ip == null) { ip = new SavedIPAddressModel() { Type = address.AddressFamily == AddressFamily.InterNetworkV6 ? IPType.IPv6 : IPType.IPv4, Address = ipaddress, }; await _db.IPs.AddAsync(ip); await _db.SaveChangesAsync(); } return(ip); }
public async Task <Estuary.Actors.Peer> GetPeer(SavedIPAddressModel address, int?port = null) { port = port ?? 443; var dir = PeerDirectory(address, port); if (System.IO.Directory.Exists(dir)) { Estuary.Actors.Peer peer = null; using (var stream = new FileStream($"{dir}/peer.json", FileMode.Open)) { peer = await JsonSerializer.DeserializeAsync <Estuary.Actors.Peer>(stream); } return(peer); } else { return(null); } }
public Task PeerAddressChanged(SavedIPAddressModel addressFrom, int portFrom, SavedIPAddressModel addressTo, int portTo) { var dirFrom = PeerDirectory(addressFrom, portFrom); if (System.IO.Directory.Exists(dirFrom)) { var dirTo = PeerDirectory(addressTo, portTo); if (!System.IO.Directory.Exists(dirTo)) { System.IO.Directory.Move(dirFrom, dirTo); return(Task.CompletedTask); } else { return(Task.FromException(new Exception($"New address and port already in use"))); } } else { return(Task.FromException(new Exception($"Existing address and port does not exist"))); } }
private string PeerHandle(SavedIPAddressModel address, int?port) => $"{address}-{port}";