public static string GetDialUrl(INngListener listener, string url) { if (url.EndsWith(":0", StringComparison.OrdinalIgnoreCase) && (url.StartsWith("tcp", StringComparison.OrdinalIgnoreCase) || url.StartsWith("ws", StringComparison.OrdinalIgnoreCase)) ) { var res = listener.GetOpt(nng.Native.Defines.NNG_OPT_LOCADDR, out nng_sockaddr addr); if (res == 0) { ushort port = 0; switch (addr.s_family) { case Native.nng_sockaddr_family.NNG_AF_INET: port = (ushort)System.Net.IPAddress.NetworkToHostOrder((short)addr.s_in.sa_port); break; case Native.nng_sockaddr_family.NNG_AF_INET6: port = (ushort)System.Net.IPAddress.NetworkToHostOrder((short)addr.s_in6.sa_port); break; default: Assert.True(false, addr.s_family.ToString()); break; } url = url.Substring(0, url.Length - 1) + port; } } return(url); }
public static NngResult <T> ThenListenAs <T>(this NngResult <T> result, out INngListener listener, string url, Native.Defines.NngFlag flags = default) where T : INngSocket { listener = null; if (result.IsOk()) { var socket = result.Ok(); var res = socket.ListenWithListener(url, flags); if (res.IsOk()) { listener = res.Ok(); } else { return(res.IntoErr <T>()); } } return(result); }
public static bool IsValid(this INngListener self) { return(self.Id != -1); }