Example #1
0
        public void TestInputClientHandshake()
        {
            InputClientHandshake packet = NanoPacketFactory
                                          .ParsePacket(ResourcesProvider.GetBytes("tcp_input_client_handshake.bin", ResourceType.Nano), _context)
                                          as InputClientHandshake;

            Assert.NotNull(packet);
            Assert.NotNull(packet.Header);

            Assert.Equal <NanoChannel>(NanoChannel.Input, packet.Channel);
            Assert.Equal <NanoPayloadType>(NanoPayloadType.Streamer, packet.Header.PayloadType);

            Assert.Equal <InputPayloadType>(InputPayloadType.ClientHandshake,
                                            (InputPayloadType)packet.StreamerHeader.PacketType);
            Assert.Equal <StreamerFlags>(StreamerFlags.GotSeqAndPrev | StreamerFlags.Unknown1,
                                         packet.StreamerHeader.Flags);
            Assert.Equal <uint>(1, packet.StreamerHeader.SequenceNumber);
            Assert.Equal <uint>(0, packet.StreamerHeader.PreviousSequenceNumber);

            Assert.Equal <uint>(10, packet.MaxTouches);
            Assert.Equal <ulong>(1498690645999, packet.ReferenceTimestamp);
        }
        public async Task OpenAsync(uint desktopWidth, uint desktopHeight)
        {
            // -> Console to client
            // <- Client to console
            // Input Feedback
            // -> ChannelCreate
            // -> ChannelOpen
            // <- ChannelOpen
            // <- ServerHandshake
            // -> ClientHandshake
            DesktopWidth  = desktopWidth;
            DesktopHeight = desktopHeight;

            Task <ChannelCreate> waitCreateTask = WaitForMessageAsync <ChannelCreate>(
                TimeSpan.FromSeconds(3),
                startAction: null,
                filter: p => p.Channel == NanoChannel.InputFeedback);

            Task <ChannelOpen> openTask = WaitForMessageAsync <ChannelOpen>(
                TimeSpan.FromSeconds(3),
                startAction: null,
                filter: open => open.Channel == NanoChannel.InputFeedback);

            await Task.WhenAll(waitCreateTask, openTask);

            await _transport
            .SendChannelOpen(NanoChannel.InputFeedback, openTask.Result.Flags);

            InputClientHandshake handshake = await WaitForMessageAsync <InputClientHandshake>(
                TimeSpan.FromSeconds(3),
                async() => await SendServerHandshakeAsync(),
                p => p.Channel == NanoChannel.InputFeedback
                );

            MaxTouches = handshake.MaxTouches;
            ReferenceTimestampUlong = handshake.ReferenceTimestamp;
        }
Example #3
0
 public abstract void OnClientHandshake(InputClientHandshake handshake);
        private async Task SendClientHandshakeAsync()
        {
            InputClientHandshake packet = new InputClientHandshake(10, ReferenceTimestampUlong);

            await SendAsync(packet);
        }
 public override void OnClientHandshake(InputClientHandshake handshake)
 {
 }
 public override void OnClientHandshake(InputClientHandshake handshake)
 {
     throw new NotImplementedException("");
 }