Пример #1
0
        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);
        }
Пример #2
0
 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);
 }
Пример #3
0
 public static bool IsValid(this INngListener self)
 {
     return(self.Id != -1);
 }