public RelayTunnel(ILogger logger, TunnelMetrics metrics, HybridConnectionStream relayStream, ILocalDataChannelFactory localFactory, TunnelCompleted tunnelCompleted) { _log = logger.ForContext(GetType()); _uplinkPumps = new ConcurrentDictionary <object, UplinkPump>(); _localDataChannelFactory = localFactory; _tunnelCompleted = tunnelCompleted; _metrics = metrics; _relayDataChannel = new RemoteRelayDataChannel(logger, metrics.Remote, relayStream); _downlinkPump = new DownlinkPump(logger, _relayDataChannel, CreateLocalDataChannel); }
public ClientTcpForwarder(ILogger logger, MetricsRegistry registry, ServiceNamespaceOptions serviceNamespace, int fromPort, PortMappingOptions portMappings) { _log = logger.ForContext(GetType()); _firewallRules = new FirewallRules(portMappings); _fromPort = fromPort; _bindTo = portMappings.BindToAddress; var metrics = new TunnelMetrics(registry, new MetricTags( new [] { "entityPath", "fromPort" }, new [] { portMappings.EntityPath, fromPort.ToString() })); _relayFactory = new RelayTunnelFactory(logger, metrics, serviceNamespace, portMappings); _log.Information("TCP Forwarder for port {port} initialized", fromPort); }
private ServiceForwarder(ILogger logger, MetricsRegistry registry, int forwarderIdx, HybridConnectionListener listener, RelayMetadata metadata, string entityPath) { _log = logger.ForContext(GetType()); _forwarderIdx = forwarderIdx; _relayListener = listener; _metadata = metadata; var tags = new MetricTags(nameof(entityPath), entityPath); var metrics = new TunnelMetrics(registry, tags); _tunnelFactory = new RelayTunnelFactory(logger, metrics); }
public RelayTunnelFactory(ILogger logger, TunnelMetrics metrics, ServiceNamespaceOptions serviceNamespace, PortMappingOptions portMappings) { _log = logger?.ForContext(GetType()); _poolLocker = new object(); _serviceNamespace = serviceNamespace; _portMappings = portMappings; _replacedTunnels = new ConcurrentDictionary <object, RelayTunnel>(); _tunnels = new RelayTunnel[portMappings.RelayChannelCount]; _metrics = metrics; for (var i = 0; i < portMappings.RelayChannelCount; i++) { _tunnels[i] = new RelayTunnel(logger, _metrics, serviceNamespace, portMappings.EntityPath, portMappings.RemoteConfigurationKey, portMappings.RelayConnectionTtlSeconds); } }
public RelayTunnel( ILogger logger, TunnelMetrics metrics, ServiceNamespaceOptions serviceNamespace, string entityPath, int remoteConfigurationKey, int ttlSeconds) { if (string.IsNullOrWhiteSpace(entityPath)) { throw new ArgumentNullException(nameof(entityPath)); } _log = logger.ForContext(GetType()); _uplinkPumps = new ConcurrentDictionary <object, UplinkPump>(); _establishLock = new SemaphoreSlim(1, 1); _relay = new UriBuilder("sb", serviceNamespace.ServiceNamespace, -1, entityPath).Uri; _tokenProvider = serviceNamespace.CreateSasTokenProvider(); _ttl = TimeSpan.FromSeconds(ttlSeconds); _tunnelPreamble = new TunnelPreamble(remoteConfigurationKey); _canAcceptUntil = DateTime.MaxValue; _metrics = metrics; }
public RelayTunnelFactory(ILogger logger, TunnelMetrics metrics) { _log = logger.ForContext(GetType()); _metrics = metrics; _tunnels = new ConcurrentDictionary <object, RelayTunnel>(); }