Exemplo n.º 1
0
        public RelayTunnel Create(HybridConnectionStream stream, ILocalDataChannelFactory localFactory)
        {
            var tunnel = new RelayTunnel(_log, _metrics, stream, localFactory, OnTunnelCompleted);

            _tunnels[tunnel] = tunnel;

            return(tunnel);
        }
Exemplo n.º 2
0
        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);
        }
        private void EstablishTunnel(HybridConnectionStream stream, ILocalDataChannelFactory localFactory)
        {
            var tunnel = _tunnelFactory.Create(stream, localFactory);

            tunnel.Start();
        }