Beispiel #1
0
 private static IEnumerable <Packet> ParsePackets(TransmissionStream stream)
 {
     while (!stream.IsComplete)
     {
         yield return(ParsePacket(stream));
     }
 }
Beispiel #2
0
    private static Packet ParsePacket(TransmissionStream stream)
    {
        uint version = stream.ReadNumber(3);
        uint type    = stream.ReadNumber(3);

        if (type == 4)
        {
            string v       = String.Join("", ParseLiteral(stream));
            ulong  literal = Helpers.ParseBinaryLong(v);
            return(new LiteralPacket(version, type, literal));
        }
        else
        {
            char lengthType = stream.Read(1).Single();
            if (lengthType == '0')
            {
                return(new OperatorPacket(version, type,
                                          ParsePackets(stream.SubStream((int)stream.ReadNumber(15))).ToArray()));
            }
            else
            {
                return(new OperatorPacket(version, type,
                                          ((int)stream.ReadNumber(11)).Times(() => ParsePacket(stream)).ToArray()));
            }
        }
    }
        public void ConstructorTakesTransmissionAndStream()
        {
            var transmission = new Transmission(TransmissionType.DOWNLOAD_MODIFIED_FILE, "path");

            using (var stream = new MemoryStream())
                using (var underTest = new TransmissionStream(stream, transmission)) {
                }
        }
Beispiel #4
0
    private static IEnumerable <string> ParseLiteral(TransmissionStream stream)
    {
        var group = stream.ReadString(5);

        yield return(group.Substring(1, 4));

        if (group[0] == '1')
        {
            group = stream.ReadString(5);
            yield return(group.Substring(1, 4));
        }
    }
        public void AbortWriteIfAbortIsCalled()
        {
            var transmission = new Transmission(TransmissionType.DOWNLOAD_MODIFIED_FILE, "path");

            using (var inputStream = new MemoryStream(new byte[1024 * 1024 * 10]))
                using (var stream = new Mock <MemoryStream>()
                {
                    CallBase = true
                }.Object)
                    using (var underTest = new TransmissionStream(stream, transmission)) {
                        transmission.Abort();
                        Assert.Throws <AbortException>(() => inputStream.CopyTo(underTest));
                        Mock.Get(stream).Verify(s => s.WriteByte(It.IsAny <byte>()), Times.Never());
                        Mock.Get(stream).Verify(s => s.Write(It.IsAny <byte[]>(), It.IsAny <int>(), It.IsAny <int>()), Times.Never());
                    }
        }
        public void AbortReadIfAbortIsCalled()
        {
            var transmission = new Transmission(TransmissionType.DOWNLOAD_MODIFIED_FILE, "path");

            byte[] content = new byte[1024];
            using (var outputStream = new MemoryStream())
                using (var stream = new Mock <MemoryStream>()
                {
                    CallBase = true
                }.Object)
                    using (var underTest = new TransmissionStream(stream, transmission)) {
                        transmission.Abort();
                        Assert.Throws <AbortException>(() => underTest.CopyTo(outputStream));
                        Mock.Get(stream).Verify(s => s.ReadByte(), Times.Never());
                        Mock.Get(stream).Verify(s => s.Read(It.IsAny <byte[]>(), It.IsAny <int>(), It.IsAny <int>()), Times.Never());
                    }
        }