public static bool TryParseFromUri(Uri uri, out TcpPortConfig opt) { if (!"tcp".Equals(uri.Scheme, StringComparison.InvariantCultureIgnoreCase)) { opt = null; return(false); } var coll = HttpUtility.ParseQueryString(uri.Query); opt = new TcpPortConfig { IsServer = bool.Parse(coll["srv"] ?? bool.FalseString), ReconnectTimeout = int.Parse(coll["rx_timeout"] ?? "10000"), Host = IPAddress.Parse(uri.Host).ToString(), Port = uri.Port, }; return(true); }
public static IPort Create(string connectionString) { var uri = new Uri(connectionString); TcpPortConfig tcp; if (TcpPortConfig.TryParseFromUri(uri, out tcp)) { if (tcp.IsServer) { return(new TcpServerPort(tcp)); } else { return(new TcpClientPort(tcp)); } } UdpPortConfig udp; if (UdpPortConfig.TryParseFromUri(uri, out udp)) { return(new UdpPort(udp)); } SerialPortConfig ser; if (SerialPortConfig.TryParseFromUri(uri, out ser)) { return(new CustomSerialPort(ser)); } throw new Exception(string.Format(RS.RemoteStreamFactory_CreateStream_Connection_string_is_invalid, connectionString)); }
public TcpServerPort(TcpPortConfig cfg) { _cfg = cfg; Observable.Timer(TimeSpan.FromSeconds(1), TimeSpan.FromSeconds(3)).Where(_ => IsEnabled.Value).Subscribe(DeleteClients, DisposeCancel); DisposeCancel.Register(InternalStop); }
public TcpClientPort(TcpPortConfig cfg) { _cfg = cfg; }