示例#1
0
        public Connection(SessionCallbackDistributor callbackDistributor,
                          PacketDistributor packetDistributor,
                          IList <EP2PSend> channels, CSteamID remote)
        {
            Remote          = remote;
            allStreams      = channels.Select((c, i) => new ConnectionStream(packetDistributor, remote, i, c)).ToArray();
            normalStreams   = allStreams.Take(channels.Count - 1).ToArray();
            systemStream    = allStreams.Skip(channels.Count - 1).Single();
            SystemChannelID = channels.Count - 1;

            this.callbackDistributor           = callbackDistributor;
            callbackDistributor.ConnectFailed += OnConnectFailed;
        }
示例#2
0
        public Client(SteamLocoTransport transport, CSteamID remote, IList <EP2PSend> channels, TimeSpan connectTimeout)
        {
            this.transport = transport;

            callbackDistributor = new SessionCallbackDistributor();
            packetDistributor   = new PacketDistributor(channels);
            connection          = new Connection(callbackDistributor, packetDistributor, channels, remote);
            establisher         = new ConnectionEstablisherClient(connection, connectTimeout);

            callbackDistributor.ConnectRequested += OnConnectRequested;

            establisher.Connected    += OnConnected;
            establisher.Disconnected += OnDisconnected;

            // handle establisher's timeout

            thread = new Thread(NativeUpdate);
            thread.Start();
        }