示例#1
0
        public void BuildPacketFromBytes()
        {
            // Arrange
            var originalPacket = new RconPacket(PacketType.Auth, "password");

            // Act
            var buffer       = originalPacket.GetBytes();
            var parsedPacket = RconPacket.FromBytes(buffer);

            // Assert
            Assert.IsTrue(parsedPacket.Body.Equals(originalPacket.Body));
            Assert.IsTrue(parsedPacket.Id.Equals(originalPacket.Id));
        }
示例#2
0
        public Task SendAsync(ReadOnlyMemory <byte> payload)
        {
            var request = RconPacket.FromBytes(payload.ToArray());

            switch (request.Type)
            {
            case PacketType.Auth:
                pendingResponses.Add(RconPacket.Create(PacketType.Response, "").ToBytes());
                pendingResponses.Add(RconPacket.Create(request.Body.Equals("valid") ? request.Id : -1, PacketType.AuthResponse, "").ToBytes());
                break;

            case PacketType.ExecCommand:
                pendingResponses.Add(RconPacket.Create(PacketType.Response, "This will be a ve").ToBytes());
                pendingResponses.Add(RconPacket.Create(PacketType.Response, "ry long message").ToBytes());
                break;

            case PacketType.Response:
                pendingResponses.Add(RconPacket.Create(0, PacketType.Response, "").ToBytes());
                pendingResponses.Add(RconPacket.Create(0, PacketType.Response, "\u0001").ToBytes());
                break;
            }
            return(Task.CompletedTask);
        }
示例#3
0
 public Task SendAsync(ReadOnlyMemory <byte> payload)
 {
     incomingRequests.Add(RconPacket.FromBytes(payload.ToArray()));
     return(Task.CompletedTask);
 }