Ejemplo n.º 1
0
        public void CompilePharoCoreKernelObjectsForNodeJs()
        {
            ChunkReader chunkReader = new ChunkReader(@"PharoCoreKernelObjects.st");
            CodeReader reader = new CodeReader(chunkReader);
            CodeModel model = new CodeModel();

            reader.Process(model);

            this.compiler.Visit(model);
            this.writer.Close();
            string output = this.writer.ToString();

            // TODO more tests
            Assert.IsTrue(ContainsLine(output, "function Object()"));
            Assert.IsTrue(ContainsLine(output, "ObjectClass.__super = ProtoObjectClass;"));
            Assert.IsTrue(ContainsLine(output, "Object.__super = ProtoObject;"));
            Assert.IsTrue(ContainsLine(output, "ObjectClass.prototype.__proto__ = ProtoObjectClass.prototype;"));
            Assert.IsTrue(ContainsLine(output, "Object.prototype.__proto__ = ProtoObject.prototype;"));
            Assert.IsTrue(ContainsLine(output, "BooleanClass.prototype.__proto__ = ObjectClass.prototype;"));
            Assert.IsTrue(ContainsLine(output, "Boolean.prototype.__proto__ = Object.prototype;"));
            Assert.IsTrue(ContainsLine(output, "function Boolean()"));
            Assert.IsTrue(ContainsLine(output, "exports.Object = Object;"));
            Assert.IsTrue(ContainsLine(output, "exports.Boolean = Boolean;"));
            Assert.IsTrue(ContainsLine(output, "exports.ProtoObject = ProtoObject;"));
        }
Ejemplo n.º 2
0
        public static void Main(string[] args)
        {
            StreamWriter swriter = new StreamWriter(GetOutputFileName(args));
            SourceWriter writer = new SourceWriter(swriter);
            CodeModel model = new CodeModel();
            Compilers.Javascript.Compiler compiler = null;

            string target = GetTarget(args);

            if (target == "node")
                compiler = new NodeCompiler(writer);
            else if (target == "browser")
                compiler = new BrowserCompiler(writer);
            else if (target == "vm")
                compiler = new VirtualMachineCompiler(writer);
            else
                throw new ArgumentException("Invalid target");

            foreach (string filename in GetFileNames(args))
            {
                ChunkReader chunkReader = new ChunkReader(filename);
                CodeReader reader = new CodeReader(chunkReader);

                reader.Process(model);
            }

            compiler.Visit(model);

            swriter.Close();
        }
        public void ReadLibraryBehavior()
        {
            ChunkReader reader = new ChunkReader(@"Behavior.st");

            string chunk = reader.GetChunk();

            Assert.IsNotNull(chunk);

            chunk = reader.GetChunk();
            Assert.IsNotNull(chunk);
            Assert.IsFalse(chunk.StartsWith("!"));

            chunk = reader.GetChunk();
            Assert.IsNotNull(chunk);
            Assert.IsTrue(chunk.StartsWith("!"));

            chunk = reader.GetChunk();
            Assert.IsNotNull(chunk);
            Assert.IsFalse(chunk.StartsWith("!"));

            chunk = reader.GetChunk();
            Assert.IsNotNull(chunk);
            Assert.IsFalse(chunk.StartsWith("!"));

            chunk = reader.GetChunk();
            Assert.IsNotNull(chunk);
            Assert.IsFalse(chunk.StartsWith("!"));

            chunk = reader.GetChunk();
            Assert.IsNotNull(chunk);
            Assert.IsTrue(chunk.StartsWith("!"));

            reader.Close();
        }
Ejemplo n.º 4
0
        public void CompilePharoCorePointForNodeJs()
        {
            ChunkReader chunkCoreReader = new ChunkReader(@"PharoCoreKernelObjects.st");
            CodeReader coreReader = new CodeReader(chunkCoreReader);
            ChunkReader chunkReader = new ChunkReader(@"PharoCorePoint.st");
            CodeReader reader = new CodeReader(chunkReader);
            CodeModel model = new CodeModel();

            coreReader.Process(model);
            reader.Process(model);

            this.compiler.Visit(model);
            this.writer.Close();
            string output = this.writer.ToString();

            Assert.IsTrue(ContainsLine(output, "var base = require('./js/ajtalk-base.js');"));
            Assert.IsTrue(ContainsLine(output, "var send = base.send;"));
            Assert.IsTrue(ContainsLine(output, "var sendSuper = base.sendSuper;"));
            Assert.IsTrue(ContainsLine(output, "var primitives = require('./js/ajtalk-primitives.js');"));

            Assert.IsTrue(ContainsLine(output, "function Point()"));
            Assert.IsTrue(ContainsLine(output, "PointClass.__super = ObjectClass;"));
            Assert.IsTrue(ContainsLine(output, "Point.__super = Object;"));
            Assert.IsTrue(ContainsLine(output, "PointClass.prototype.__proto__ = ObjectClass.prototype;"));
            Assert.IsTrue(ContainsLine(output, "Point.prototype.__proto__ = Object.prototype;"));
            Assert.IsTrue(ContainsLine(output, "exports.Point = Point;"));
            Assert.IsTrue(ContainsLine(output, "Point.prototype.$x = null;"));
            Assert.IsTrue(ContainsLine(output, "Point.prototype.$y = null;"));
        }
Ejemplo n.º 5
0
        protected override async ValueTask <(GitIdType IdType, int ChunkCount, long ChunkTableOffset)> ReadHeaderAsync()
        {
            if (ChunkReader is null)
            {
                throw new InvalidOperationException();
            }

            var headerBuffer = new byte[8];

            if (await ChunkReader.ReadAtAsync(0, headerBuffer).ConfigureAwait(false) != headerBuffer.Length)
            {
                return(GitIdType.None, 0, -1);
            }

            if (!"CGPH\x01".Select(x => (byte)x).SequenceEqual(headerBuffer.Take(5)))
            {
                return(GitIdType.None, 0, -1);
            }

            var idType           = (GitIdType)headerBuffer[5];
            int chunkCount       = headerBuffer[6];
            int baseCommitGraphs = headerBuffer[7];

            if (baseCommitGraphs <= 0)
            {
                _baseCommitGraphs = -1;
            }
            else
            {
                _baseCommitGraphs = baseCommitGraphs;
            }

            return(idType, chunkCount, headerBuffer.Length);
        }
Ejemplo n.º 6
0
        /// <summary>
        ///     Loads data into a <see cref="Vault" /> instance.
        /// </summary>
        /// <param name="vault">The vault to be read and loaded.</param>
        /// <param name="loadingWrapper">The provider of the vault stream readers.</param>
        public void LoadVault(Vault vault, VaultLoadingWrapper loadingWrapper)
        {
            Debug.Assert(vault.Database == null, "vault.Database == null");
            Debug.Assert(vault.BinStream != null, "vault.BinStream != null");
            Debug.Assert(vault.VltStream != null, "vault.VltStream != null");

            vault.Database = this;
            BinaryReader binStreamReader = loadingWrapper.BinReader;
            BinaryReader vltStreamReader = loadingWrapper.VltReader;

            ChunkReader binChunkReader = new ChunkReader(binStreamReader);
            ChunkReader vltChunkReader = new ChunkReader(vltStreamReader);

            //Debug.WriteLine("Processing BIN chunks");
            processBinChunks(vault, binChunkReader);

            //Debug.WriteLine("Processing VLT chunks");
            processVltChunks(vault, vltChunkReader);

            //Debug.WriteLine("Processing pointers");
            fixPointers(vault, VltPointerType.Bin, vault.BinStream);
            fixPointers(vault, VltPointerType.Vlt, vault.VltStream);

            //Debug.WriteLine("Reading exports");
            ReadExports(vault, vltStreamReader, binStreamReader);

            Vaults.Add(vault);
        }
Ejemplo n.º 7
0
        protected ValueTask <int> ReadFromChunkAsync(string chunkType, long position, byte[] buffer, int length)
        {
            if (_chunks == null || ChunkReader == null)
            {
                return(new ValueTask <int>(0));
            }
            else if (length <= 0)
            {
                throw new ArgumentOutOfRangeException(nameof(length));
            }

            Chunk?ch = null;

            foreach (var c in _chunks)
            {
                if (c.Name == chunkType)
                {
                    ch = c;
                    break;
                }
            }
            if (ch == null)
            {
                return(new ValueTask <int>(0));
            }

            int requested = (int)Math.Min(length, ch.Value.Length - position);

            if (requested <= 0)
            {
                return(new ValueTask <int>(0));
            }

            return(ChunkReader.ReadAtAsync(ch.Value.Position + position, buffer, requested));
        }
Ejemplo n.º 8
0
        public void ReadChunksWithExclamationMarksAndSpace()
        {
            ChunkReader reader = new ChunkReader(@"FileOut01.st");

            string chunk = reader.GetChunk();

            Assert.IsNotNull(chunk);
            chunk = reader.GetChunk();
            Assert.IsNotNull(chunk);
            Assert.IsTrue(chunk.Contains("\r"));
            Assert.IsTrue(chunk.Contains("\r\n"));
            chunk = reader.GetChunk();
            Assert.IsNotNull(chunk);
            Assert.IsTrue(chunk.StartsWith("!"));
            chunk = reader.GetChunk();
            Assert.IsNotNull(chunk);
            chunk = reader.GetChunk();
            Assert.IsNotNull(chunk);
            Assert.IsTrue(chunk.StartsWith("!"));
            chunk = reader.GetChunk();
            Assert.IsNotNull(chunk);
            chunk = reader.GetChunk();
            Assert.IsNotNull(chunk);
            Assert.AreEqual(" ", chunk);
            reader.Close();
        }
Ejemplo n.º 9
0
        public void TrickyEmbedTest()
        {
            WithFile(Test).Wait();
            async Task Test(string fname)
            {
                using (var writer = new ChunkWriter(fname)) {
                    await Write(writer, Content(1, count : 1));
                }
                byte[] chunkio = File.ReadAllBytes(fname);
                CollectionAssert.AreEqual(FileHeader, chunkio.Take(FileHeader.Length).ToArray());
                File.Delete(fname);
                using (var writer = new ChunkWriter(fname)) {
                    await Write(writer, Content(1, count : MeterInterval));
                }
                using (var file = new FileStream(fname, FileMode.Open, FileAccess.Write)) {
                    Assert.AreEqual(MeterInterval + 2 * Meter.Size + ChunkHeader.Size, file.Length);
                    file.SetLength(MeterInterval);
                }
                using (var writer = new ChunkWriter(fname)) {
                    await Write(writer, chunkio);
                }
                using (var reader = new ChunkReader(fname)) {
                    IChunk chunk = await reader.ReadFirstAsync(1, long.MaxValue);

                    Assert.IsNotNull(chunk);
                    byte[] content = new byte[chunk.ContentLength];
                    Assert.IsTrue(await chunk.ReadContentAsync(content, 0));
                    // A naive implementation can give Content(1, 1) instead, which is an awful thing to do
                    // because Content(1, 1) is embedded in the middle of a real chunk.
                    CollectionAssert.AreEqual(chunkio, content);
                }
            }
        }
Ejemplo n.º 10
0
        /// <summary>
        ///  PNG画像のバイト配列からmeta情報を書き込んだバイト配列を作成します。
        /// </summary>
        /// <param name="image">バイト配列</param>
        /// <param name="vrcMetaData">meta情報</param>
        /// <returns>meta情報を書き込んだバイト配列</returns>
        public static byte[] Write(ReadOnlySpan <byte> image, VrcMetaData vrcMetaData)
        {
            if (image == null)
            {
                throw new ArgumentNullException(nameof(vrcMetaData));
            }

            if (vrcMetaData == null)
            {
                throw new ArgumentNullException(nameof(vrcMetaData));
            }

            var chunks = ChunkReader.SplitChunks(image);

            // 既存のmeta情報を削除
            foreach (var chunk in chunks.Where(c => VrcMetaChunk.IsVrcMetaChunk(c.TypePart)).ToArray())
            {
                chunks.Remove(chunk);
            }

            // 受け取ったmeta情報を末尾に追加
            chunks.Insert(chunks.Count - 1, new Chunk(VrcMetaChunk.ConvertToString(VrcMetaChunk.DateChunk), vrcMetaData.Date?.ToString("yyyyMMddHHmmssfff", new CultureInfo("en", false))));
            chunks.Insert(chunks.Count - 1, new Chunk(VrcMetaChunk.ConvertToString(VrcMetaChunk.WorldChunk), vrcMetaData.World));
            chunks.Insert(chunks.Count - 1, new Chunk(VrcMetaChunk.ConvertToString(VrcMetaChunk.PhotographerChunk), vrcMetaData.Photographer));

            foreach (var user in vrcMetaData.Users)
            {
                chunks.Insert(chunks.Count - 1, new Chunk(VrcMetaChunk.ConvertToString(VrcMetaChunk.UserChunk), user.ToString()));
            }

            return(ChunkWriter.WriteImageBytes(chunks.ToArray()));
        }
Ejemplo n.º 11
0
        private void bbiOpen_ItemClick(object sender, ItemClickEventArgs e)
        {
            OpenFileDialog ofd = new OpenFileDialog();

            ofd.Filter = "SWARM Expriment Record File(*.serf)|*.serf";
            if (ofd.ShowDialog() == DialogResult.Cancel)
            {
                return;
            }
            ChunkReader     reader = new ChunkReader(ofd.FileName);
            BatchExperiment batch  = new BatchExperiment(reader.RootChunk);

            InitializeExperiment(batch);

            if (expListForm == null)
            {
                expListForm = new UI.ExperimentInformation.ExperimentListForm();
            }

            expListForm.BindExperiment(ctxt);
            expListForm.MdiParent = this;
            expListForm.Show();

            MessageBox.Show(batch.ExperimentCount.ToString());
        }
Ejemplo n.º 12
0
        public void TrickyTruncateTest()
        {
            WithFile(Test).Wait();
            async Task Test(string fname)
            {
                using (var writer = new ChunkWriter(fname)) {
                    await Write(writer, Content(1, count : MeterInterval - Meter.Size + 1));
                }
                using (var file = new FileStream(fname, FileMode.Open, FileAccess.Write)) {
                    Assert.AreEqual(MeterInterval + Meter.Size + ChunkHeader.Size + 1, file.Length);
                    file.SetLength(MeterInterval);
                }
                using (var writer = new ChunkWriter(fname)) {
                    await Write(writer, Content(2, count : 1));

                    Assert.AreEqual(MeterInterval + Meter.Size + ChunkHeader.Size + 1, writer.Length);
                    await Write(writer, Content(3, count : 1));
                }
                using (var reader = new ChunkReader(fname)) {
                    IChunk chunk = await reader.ReadFirstAsync(1, long.MaxValue);

                    Assert.IsNotNull(chunk);
                    byte[] content = new byte[chunk.ContentLength];
                    Assert.IsTrue(await chunk.ReadContentAsync(content, 0));
                    // A naive implementation can give Content(3, 1) instead of Content(2, 1), which means
                    // effectively skipping a valid chunk.
                    CollectionAssert.AreEqual(Content(2, count: 1), content);
                }
            }
        }
Ejemplo n.º 13
0
        public void CompilePharoCorePointForBrowser()
        {
            ChunkReader chunkCoreReader = new ChunkReader(@"PharoCoreKernelObjects.st");
            CodeReader coreReader = new CodeReader(chunkCoreReader);
            ChunkReader chunkReader = new ChunkReader(@"PharoCorePoint.st");
            CodeReader reader = new CodeReader(chunkReader);
            CodeModel model = new CodeModel();

            coreReader.Process(model);
            reader.Process(model);

            this.compiler.Visit(model);
            this.writer.Close();
            string output = this.writer.ToString();

            Assert.IsTrue(ContainsLine(output, "AjTalk = function() {"));
            Assert.IsTrue(ContainsLine(output, "var send = base.send;"));
            Assert.IsTrue(ContainsLine(output, "var sendSuper = base.sendSuper;"));

            Assert.IsTrue(ContainsLine(output, "function Point()"));
            Assert.IsTrue(ContainsLine(output, "PointClass.__super = ObjectClass;"));
            Assert.IsTrue(ContainsLine(output, "Point.__super = Object;"));
            Assert.IsTrue(ContainsLine(output, "PointClass.prototype.__proto__ = ObjectClass.prototype;"));
            Assert.IsTrue(ContainsLine(output, "Point.prototype.__proto__ = Object.prototype;"));
            Assert.IsTrue(ContainsLine(output, "Point.prototype.$x = null;"));
            Assert.IsTrue(ContainsLine(output, "Point.prototype.$y = null;"));

            Assert.IsTrue(ContainsLine(output, "Point : Point"));
        }
Ejemplo n.º 14
0
        private static bool LoadSoundInfos(ChunkReader chunkIO, ChunkId idOuter, Wad2 wad, ref Dictionary <long, WadSoundInfo> outSoundInfos, Dictionary <long, WadSample> samples)
        {
            if (idOuter != Wad2Chunks.SoundInfos)
            {
                return(false);
            }

            var soundInfos = new Dictionary <long, WadSoundInfo>();

            chunkIO.ReadChunks((id, chunkSize) =>
            {
                if (id != Wad2Chunks.SoundInfo)
                {
                    return(false);
                }

                WadSoundInfo soundInfo;
                long index;
                LoadSoundInfo(chunkIO, wad, samples, out soundInfo, out index);
                soundInfos.Add(index, soundInfo);

                return(true);
            });

            outSoundInfos = soundInfos;
            return(true);
        }
        public async Task WriteThenRead_ProducesEquivalentOutput(ChunkConfiguration chunkConfig, TBody body)
        {
            var orignalChunk  = new Chunk <TBody>(chunkConfig, body);
            var storageStream = new MemoryStream();
            Serializer <TBody> chunkBodySerializer = GetBodySerializer(orignalChunk);

            var encodingConfiguration = new EncodingConfiguration("somePass!!", new MemoryStorageProvider(), 4096, 1024 * 1000);

            var decodingConfiguration = new DecodingConfiguration("somePass!!", new MemoryStorageProvider(), 4096);

            ChunkWriter writer = GetChunkWriter(encodingConfiguration);
            await writer.WriteChunkAsync(storageStream, chunkBodySerializer, orignalChunk);

            if (storageStream.Length == 0)
            {
                Debugger.Break();
            }

            storageStream.Position = 0;
            ChunkReader   reader       = GetChunkReader(decodingConfiguration);
            Chunk <TBody> decodedChunk = await reader.ReadChunkAsync(storageStream,
                                                                     new ChunkInfo(chunkConfig, storageStream.Length), chunkBodySerializer);

            AssertEqual(orignalChunk, decodedChunk);
        }
        public void ReadChunksWithExclamationMarksAndSpace()
        {
            ChunkReader reader = new ChunkReader(@"FileOut01.st");

            string chunk = reader.GetChunk();

            Assert.IsNotNull(chunk);
            chunk = reader.GetChunk();
            Assert.IsNotNull(chunk);
            Assert.IsTrue(chunk.Contains("\r"));
            Assert.IsTrue(chunk.Contains("\r\n"));
            chunk = reader.GetChunk();
            Assert.IsNotNull(chunk);
            Assert.IsTrue(chunk.StartsWith("!"));
            chunk = reader.GetChunk();
            Assert.IsNotNull(chunk);
            chunk = reader.GetChunk();
            Assert.IsNotNull(chunk);
            Assert.IsTrue(chunk.StartsWith("!"));
            chunk = reader.GetChunk();
            Assert.IsNotNull(chunk);
            chunk = reader.GetChunk();
            Assert.IsNotNull(chunk);
            Assert.AreEqual(" ", chunk);
            reader.Close();
        }
Ejemplo n.º 17
0
        async ValueTask ReadChunks(long chunkTableOffset, int chunkCount)
        {
            if (ChunkReader is null)
            {
                throw new InvalidOperationException();
            }

            var chunkTable = new byte[(chunkCount + 1) * (4 + sizeof(long))];

            if (await ChunkReader.ReadAtAsync(chunkTableOffset, chunkTable).ConfigureAwait(false) != chunkTable.Length)
            {
                return;
            }

            _chunks = Enumerable.Range(0, chunkCount + 1).Select(i => new Chunk
            {
                Name     = (i < chunkCount) ? Encoding.ASCII.GetString(chunkTable, 12 * i, 4) : null,
                Position = NetBitConverter.ToInt64(chunkTable, 12 * i + 4)
            }).ToArray();

            for (int i = 0; i < chunkCount; i++)
            {
                _chunks[i].Length = _chunks[i + 1].Position - _chunks[i].Position;
            }

            FanOut = await ReadFanOutAsync().ConfigureAwait(false);
        }
Ejemplo n.º 18
0
        public void Load()
        {
            _chunkManager = new ChunkManager(this.GetType().Name, BrokerController.Instance.Setting.MessageChunkConfig);
            _chunkWriter  = new ChunkWriter(_chunkManager);
            _chunkReader  = new ChunkReader(_chunkManager, _chunkWriter);

            _chunkManager.Load(ReadMessage);
        }
Ejemplo n.º 19
0
        public void Load()
        {
            _chunkManager = new ChunkManager(this.GetType().Name, BrokerController.Instance.Setting.MessageChunkConfig);
            _chunkWriter = new ChunkWriter(_chunkManager);
            _chunkReader = new ChunkReader(_chunkManager, _chunkWriter);

            _chunkManager.Load(ReadMessage);
        }
Ejemplo n.º 20
0
        public void Load()
        {
            _bufferQueue  = new BufferQueue <MessageLogRecord>("MessageBufferQueue", BrokerController.Instance.Setting.MessageWriteQueueThreshold, PersistMessages, _logger);
            _chunkManager = new ChunkManager("MessageChunk", BrokerController.Instance.Setting.MessageChunkConfig, BrokerController.Instance.Setting.IsMessageStoreMemoryMode);
            _chunkWriter  = new ChunkWriter(_chunkManager);
            _chunkReader  = new ChunkReader(_chunkManager, _chunkWriter);

            _chunkManager.Load(ReadMessage);
        }
Ejemplo n.º 21
0
        private static bool LoadSprites(ChunkReader chunkIO, ChunkId idOuter, Wad2 wad, ref Dictionary <long, WadSprite> outSprites)
        {
            if (idOuter != Wad2Chunks.Sprites)
            {
                return(false);
            }

            var  sprites       = new Dictionary <long, WadSprite>();
            long obsoleteIndex = 0; // Move this into each chunk once we got rid of old style *.wad2 files.

            chunkIO.ReadChunks((id, chunkSize) =>
            {
                if (id != Wad2Chunks.Sprite)
                {
                    return(false);
                }

                int width          = LEB128.ReadInt(chunkIO.Raw);
                int height         = LEB128.ReadInt(chunkIO.Raw);
                byte[] imageData   = null;
                RectangleInt2 rect = new RectangleInt2();

                chunkIO.ReadChunks((id2, chunkSize2) =>
                {
                    if (id2 == Wad2Chunks.SpriteIndex)
                    {
                        obsoleteIndex = chunkIO.ReadChunkLong(chunkSize2);
                    }
                    else if (id2 == Wad2Chunks.SpriteData)
                    {
                        imageData = chunkIO.ReadChunkArrayOfBytes(chunkSize2);
                    }
                    else if (id2 == Wad2Chunks.SpriteSides)
                    {
                        rect.X0 = chunkIO.Raw.ReadInt32();
                        rect.Y0 = chunkIO.Raw.ReadInt32();
                        rect.X1 = chunkIO.Raw.ReadInt32();
                        rect.Y1 = chunkIO.Raw.ReadInt32();
                    }
                    else
                    {
                        return(false);
                    }
                    return(true);
                });

                sprites.Add(obsoleteIndex++, new WadSprite {
                    Texture   = new WadTexture(ImageC.FromByteArray(imageData, width, height)),
                    Alignment = rect
                })
                ;
                return(true);
            });

            outSprites = sprites;
            return(true);
        }
Ejemplo n.º 22
0
 public RoomNameChunkReader()
 {
     _reader = new ChunkReader<RoomNameTag>("<style id=\"roomName\"", "<style id=\"\"", true);
     _reader.Append = (builder, result, tag) => {
         builder.Append(tag.Name);
         result.AddTag(tag);
         return 0;
     };
 }
Ejemplo n.º 23
0
        public async void ShouldThrowCancellationWhenReadAsyncIsCancelled()
        {
            var reader = new ChunkReader(AsyncTestStream.CreateCancellingStream());

            var ex = await Record.ExceptionAsync(() => reader.ReadNextMessagesAsync(new MemoryStream()));

            ex.Should().NotBeNull();
            ex.Should().BeAssignableTo <OperationCanceledException>();
        }
Ejemplo n.º 24
0
        public void ProcessDoubleBang()
        {
            ChunkReader reader = new ChunkReader(new StringReader("!!new! !!new"));

            Assert.AreEqual("!new", reader.GetChunk());
            Assert.AreEqual(" !new", reader.GetChunk());
            Assert.IsNull(reader.GetChunk());
            reader.Close();
        }
Ejemplo n.º 25
0
        private static byte[] ConstructMessage(byte[] buffer)
        {
            var stream = new MemoryStream();
            var reader = new ChunkReader(new MemoryStream(buffer));

            reader.ReadNextMessages(stream);

            return(stream.ToArray());
        }
Ejemplo n.º 26
0
 public static BufferLogRecord TryReadRecordBufferAt(this ChunkReader chunkReader, long position)
 {
     return(chunkReader.TryReadAt(position, recordBuffer =>
     {
         var record = new BufferLogRecord();
         record.ReadFrom(recordBuffer);
         return record;
     }));
 }
Ejemplo n.º 27
0
        public async void ShouldThrowIOExceptionWhenReadAsyncIsFaulted()
        {
            var reader = new ChunkReader(AsyncTestStream.CreateFailingStream(new IOException("some error")));

            var ex = await Record.ExceptionAsync(() => reader.ReadNextMessagesAsync(new MemoryStream()));

            ex.Should().NotBeNull();
            ex.Should().BeAssignableTo <IOException>().Which.Message.Should().Be("some error");
        }
        public void ProcessDoubleBang()
        {
            ChunkReader reader = new ChunkReader(new StringReader("!!new! !!new"));

            Assert.AreEqual("!new", reader.GetChunk());
            Assert.AreEqual(" !new", reader.GetChunk());
            Assert.IsNull(reader.GetChunk());
            reader.Close();
        }
Ejemplo n.º 29
0
        public async void ShouldThrowIOExceptionWhenReadAsyncReturnsZeroOrLess(int returnValue)
        {
            var reader = new ChunkReader(AsyncTestStream.CreateStream(Task.FromResult(returnValue)));

            var ex = await Record.ExceptionAsync(() => reader.ReadNextMessagesAsync(new MemoryStream()));

            ex.Should().NotBeNull();
            ex.Should().BeAssignableTo <IOException>().Which.Message.Should().StartWith("Unexpected end of stream, read returned");
        }
Ejemplo n.º 30
0
 public CsvReader(Stream source, Encoding encoding, Config config = default(Config))
 {
     _currentChunk      = null;
     _currentRow        = null;
     _currentChunkStart = 0;
     _reader            = new ChunkReader(source, encoding, config);
     _config            = config;
     _rowCnt            = 0;
     _rowPool           = Row.CreatePool();
 }
        public void ReadFirstChunk()
        {
            ChunkReader reader = new ChunkReader(@"FileOut01.st");

            string chunk = reader.GetChunk();

            Assert.IsNotNull(chunk);
            Assert.IsTrue(chunk.StartsWith("'"));
            reader.Close();
        }
        public void reads_the_tag()
        {
            const string tag = "<style id=\"roomName\" />[The Western Road, Stream Bank]\n<style id=\"\"/>";

            var reader = new ChunkReader<RoomNameTag>("<style id=\"roomName\"", "<style id=\"\"");
            var result = reader.Read(Chunk.For(tag));

            Assert.AreEqual(tag, result.Tags.Single().Text);
            Assert.AreEqual("[The Western Road, Stream Bank]\n", result.Tags.OfType<RoomNameTag>().Single().Name);
        }
Ejemplo n.º 33
0
        public void dailog_data_ignores_other_tags()
        {
            const string compassTag = "<compass><dir value=\"e\"/><dir value=\"nw\"/></compass>";

            var reader = new ChunkReader<Tag>("<dialogData", "</dialogData");

            var result = reader.Read(Chunk.For(compassTag));

            Assert.AreEqual(compassTag, result.Chunk.Text);
        }
Ejemplo n.º 34
0
        public async void ShouldThrowWhenEndOfMessageMarkerNotPresentAsync(byte[] input)
        {
            var reader = new ChunkReader(new MemoryStream(input));

            var targetStream = new MemoryStream();
            var ex           = await Record.ExceptionAsync(() => reader.ReadNextMessagesAsync(targetStream));

            ex.Should().NotBeNull();
            ex.Should().BeOfType <IOException>().Which.Message.Should().StartWith("Unexpected end of stream");
        }
Ejemplo n.º 35
0
        public void ShouldThrowWhenEndOfStreamIsDetected(byte[] input)
        {
            var reader = new ChunkReader(new MemoryStream(input));

            var targetStream = new MemoryStream();
            var ex           = Record.Exception(() => reader.ReadNextMessages(targetStream));

            ex.Should().NotBeNull();
            ex.Should().BeOfType <IOException>().Which.Message.Should().StartWith("Unexpected end of stream");
        }
Ejemplo n.º 36
0
        public int Load()
        {
            _chunkManager = new ChunkManager(this.GetType().Name, BrokerController.Instance.Setting.MessageChunkConfig);
            _chunkWriter  = new ChunkWriter(_chunkManager);
            _chunkReader  = new ChunkReader(_chunkManager, _chunkWriter);

            _chunkManager.Load(ReadMessage);

            return(_chunkManager.GetAllChunks().Count);
        }
Ejemplo n.º 37
0
        public void ReadBangSkippingNewLines()
        {
            ChunkReader reader = new ChunkReader(@"Transactions.st");

            string chunk = reader.GetChunk();
            Assert.IsNotNull(chunk);
            Assert.IsTrue(chunk.StartsWith("!"));

            reader.Close();
        }
Ejemplo n.º 38
0
 static private long[] ReadLengthArray(byte[] bytes, int startOffset, int dataDimension, out int readDataSize)
 {
     long[] lengthArray = new long[dataDimension];
     readDataSize = dataDimension * Marshal.SizeOf(typeof(long));
     for (int iDim = 0; iDim < dataDimension; ++iDim)
     {
         lengthArray[iDim] = ChunkReader.BigEndianBytesToInt64(bytes, startOffset + iDim * Marshal.SizeOf(typeof(long)));
     }
     return(lengthArray);
 }
Ejemplo n.º 39
0
        public void ShouldReadMessageSpanningMultipleChunks(byte[] input, byte[] expectedMessageBuffers, int expectedCount)
        {
            var reader = new ChunkReader(new MemoryStream(input));

            var targetStream   = new MemoryStream();
            var count          = reader.ReadNextMessages(targetStream);
            var messageBuffers = targetStream.ToArray();

            count.Should().Be(expectedCount);
            messageBuffers.Should().Equal(expectedMessageBuffers);
        }
Ejemplo n.º 40
0
 public void CountChunks()
 {
     ChunkReader reader = new ChunkReader(@"Chunks.st");
     int count = 0;
     ChunkReaderProcessor processor = new ChunkReaderProcessor((Machine machine, ICompiler compiler, string text) => { count++; });
     processor.Process(reader, null, null);
     Assert.AreEqual(3, count);
     count = 0;
     processor.Process(reader, null, null);
     Assert.AreEqual(2, count);
 }
Ejemplo n.º 41
0
        public async void ShouldResetInternalBufferPositionsWhenWritableBufferIsSmallerThanSetWatermarkAsync()
        {
            var input  = GenerateMessageChunk(Constants.ChunkBufferSize - Constants.ChunkBufferResetPositionsWatermark);
            var logger = new Mock <ILogger>();
            var reader = new ChunkReader(new MemoryStream(input), logger.Object);

            var count = await reader.ReadNextMessagesAsync(new MemoryStream());

            count.Should().Be(1);
            logger.Verify(l => l.Trace(It.IsRegex(CompactingArgumentRegEx), It.IsAny <object[]>()), Times.Once);
        }
        public void ReadBangSkippingNewLines()
        {
            ChunkReader reader = new ChunkReader(@"Transactions.st");

            string chunk = reader.GetChunk();

            Assert.IsNotNull(chunk);
            Assert.IsTrue(chunk.StartsWith("!"));

            reader.Close();
        }
Ejemplo n.º 43
0
        public void ReadDefineRectangle()
        {
            ChunkReader reader = new ChunkReader(@"DefineRectangle.st");

            string chunk = reader.GetChunk();

            Assert.IsNotNull(chunk);
            chunk = reader.GetChunk();
            Assert.IsNotNull(chunk);
            Assert.IsTrue(chunk.StartsWith("!"));
            reader.Close();
        }
Ejemplo n.º 44
0
        public Queue(string topic, int queueId)
        {
            Topic = topic;
            QueueId = queueId;

            _jsonSerializer = ObjectContainer.Resolve<IJsonSerializer>();
            _chunkManager = new ChunkManager(string.Format("{0}-{1}", Topic, QueueId), BrokerController.Instance.Setting.QueueChunkConfig, Topic + @"\" + QueueId);
            _chunkWriter = new ChunkWriter(_chunkManager);
            _chunkReader = new ChunkReader(_chunkManager, _chunkWriter);
            _queueSettingFile = Path.Combine(_chunkManager.ChunkPath, QueueSettingFileName);
            _logger = ObjectContainer.Resolve<ILoggerFactory>().Create(this.GetType().FullName);
        }
Ejemplo n.º 45
0
        public Queue(string topic, int queueId)
        {
            Topic = topic;
            QueueId = queueId;
            Key = new QueueKey(topic, queueId);

            _jsonSerializer = ObjectContainer.Resolve<IJsonSerializer>();
            _chunkManager = new ChunkManager("QueueChunk-" + Key.ToString(), BrokerController.Instance.Setting.QueueChunkConfig, BrokerController.Instance.Setting.IsMessageStoreMemoryMode, Topic + @"\" + QueueId);
            _chunkWriter = new ChunkWriter(_chunkManager);
            _chunkReader = new ChunkReader(_chunkManager, _chunkWriter);
            _queueSettingFile = Path.Combine(_chunkManager.ChunkPath, QueueSettingFileName);
            _logger = ObjectContainer.Resolve<ILoggerFactory>().Create(this.GetType().FullName);
        }
Ejemplo n.º 46
0
        public StreamChunkReader()
        {
            _reader = new ChunkReader<StreamTag>("<pushStream", "<popStream", checkEndTag: true, skipNewLineAfterTag: true);
            _reader.Append = (builder, result, tag) => {

                if(string.Equals(tag.Id, "assess"))
                {
                    builder.Append(tag.Value);
                }

                result.AddTag(tag);
                return 0;
            };
        }
Ejemplo n.º 47
0
        public void ProcessFileOut01()
        {
            ChunkReader chunkReader = new ChunkReader(@"FileOut01.st");
            CodeReader reader = new CodeReader(chunkReader);
            CodeModel model = new CodeModel();

            reader.Process(model);

            Assert.IsNotNull(model.GetClass("Object"));
            Assert.AreEqual(3, model.Elements.Count());

            Assert.IsInstanceOfType(model.Elements.First(), typeof(ClassModel));
            Assert.IsInstanceOfType(model.Elements.Skip(1).First(), typeof(MethodModel));
            Assert.IsInstanceOfType(model.Elements.Skip(2).First(), typeof(MethodModel));
        }
	void Awake()
	{
		if (chunkHandler != null)
		{
			GameObject.Destroy(chunkHandler);
		}
		else
		{
			chunkHandler = this;
		}
		
		DontDestroyOnLoad(this);

		ChunkReader chunkReader = new ChunkReader(chunkTextFile);

	}
Ejemplo n.º 49
0
        public PresetChunkReader()
        {
            _reader = new ChunkReader<PresetTag>("<preset", "</preset");
            _reader.Append = (builder, result, tag) => {
                var skip = 0;
                if(tag.Id.Equals("roomdesc")) {
                    builder.Append(tag.Value);
                    skip = 2;
                }

                if(tag.Id.Equals("speech")) {
                    builder.Append(tag.Value);
                }

                result.AddTag(tag);

                return skip;
            };
        }
Ejemplo n.º 50
0
        public PromptChunkReader()
        {
            _reader = new ChunkReader<PromptTag>("<prompt", "</prompt", skipNewLineAfterTag: false);
            _reader.Append = (builder, result, tag) => {

                var skip = 0;

                if(_count == 0 && !tag.Equals(_lastPrompt)) {
                    builder.Append(tag.Prompt);
                }
                else {
                    skip = 1;
                }

                _lastPrompt = tag;
                result.AddTag(tag);
                _count++;
                return skip;
            };
        }
Ejemplo n.º 51
0
        public OutputChunkReader()
        {
            _reader = new ChunkReader<Tag>("<output class=\"mono\"", "<output class=\"\"", true);
            _reader.Append = (builder, result, tag) => {
                return 0;
            };
            _reader.AppendPartial = (builder, state, result) => {
                if(state.Text.Length > 0) {
                    var newData = state.Text.ToString().Substring(state.DequedTextIndex, state.Text.Length - state.DequedTextIndex);
                    state.DequedText.Append(newData);
                    state.DequedTextIndex = state.Text.Length;

                    if(!string.IsNullOrWhiteSpace(newData)){
                        if(!newData.StartsWith(Start_Tag)){
                            newData = Start_Tag + newData;
                        }
                        if(!newData.EndsWith(End_Tag)){
                            newData += End_Tag;
                        }
                        builder.Append(newData);
                    }
                }
            };
        }
Ejemplo n.º 52
0
        public void CompileFileOut01()
        {
            ChunkReader chunkReader = new ChunkReader(@"FileOut01.st");
            CodeReader reader = new CodeReader(chunkReader);
            CodeModel model = new CodeModel();

            reader.Process(model);

            this.compiler.Visit(model);
            this.writer.Close();
            string output = this.writer.ToString();

            // TODO more tests
            Assert.IsTrue(ContainsLine(output, "function Object()"));
        }
Ejemplo n.º 53
0
        public void ReadLibraryBehavior()
        {
            ChunkReader reader = new ChunkReader(@"Behavior.st");

            string chunk = reader.GetChunk();
            Assert.IsNotNull(chunk);

            chunk = reader.GetChunk();
            Assert.IsNotNull(chunk);
            Assert.IsFalse(chunk.StartsWith("!"));

            chunk = reader.GetChunk();
            Assert.IsNotNull(chunk);
            Assert.IsTrue(chunk.StartsWith("!"));

            chunk = reader.GetChunk();
            Assert.IsNotNull(chunk);
            Assert.IsFalse(chunk.StartsWith("!"));

            chunk = reader.GetChunk();
            Assert.IsNotNull(chunk);
            Assert.IsFalse(chunk.StartsWith("!"));

            chunk = reader.GetChunk();
            Assert.IsNotNull(chunk);
            Assert.IsFalse(chunk.StartsWith("!"));

            chunk = reader.GetChunk();
            Assert.IsNotNull(chunk);
            Assert.IsTrue(chunk.StartsWith("!"));

            reader.Close();
        }
Ejemplo n.º 54
0
        public void CompilePharoCoreRectangle()
        {
            ChunkReader chunkCoreReader = new ChunkReader(@"PharoCoreKernelObjects.st");
            CodeReader coreReader = new CodeReader(chunkCoreReader);
            ChunkReader chunkReader = new ChunkReader(@"PharoCoreRectangle.st");
            CodeReader reader = new CodeReader(chunkReader);
            CodeModel model = new CodeModel();

            coreReader.Process(model);
            reader.Process(model);

            this.compiler.Visit(model);
            this.writer.Close();
            string output = this.writer.ToString();

            // TODO more tests
            Assert.IsTrue(ContainsLine(output, "function Rectangle()"));
            Assert.IsTrue(ContainsLine(output, "RectangleClass.__super = ObjectClass;"));
            Assert.IsTrue(ContainsLine(output, "Rectangle.__super = Object;"));
            Assert.IsTrue(ContainsLine(output, "RectangleClass.prototype.__proto__ = ObjectClass.prototype;"));
            Assert.IsTrue(ContainsLine(output, "Rectangle.prototype.__proto__ = Object.prototype;"));
            Assert.IsTrue(ContainsLine(output, "Rectangle.prototype.$origin = null;"));
            Assert.IsTrue(ContainsLine(output, "Rectangle.prototype.$corner = null;"));
        }
Ejemplo n.º 55
0
 public void SetUp()
 {
     reader = new ChunkReader<Tag>("<prompt", "</prompt");
 }
Ejemplo n.º 56
0
        public void CompileSqueakKernelObjectsForNodeJs()
        {
            ChunkReader chunkReader = new ChunkReader(@"SqueakKernelObjects.st");
            CodeReader reader = new CodeReader(chunkReader);
            CodeModel model = new CodeModel();

            reader.Process(model);

            this.compiler.Visit(model);
            this.writer.Close();
            string output = this.writer.ToString();

            // TODO more tests
            Assert.IsTrue(ContainsLine(output, "function Object()"));
            Assert.IsTrue(ContainsLine(output, "function Boolean()"));
            Assert.IsTrue(ContainsLine(output, "exports.Object = Object;"));
            Assert.IsTrue(ContainsLine(output, "exports.Boolean = Boolean;"));

            // Class variables in Object
            Assert.IsTrue(ContainsLine(output, "ObjectClass.$DependentsFields = null;"));
        }
Ejemplo n.º 57
0
        public void CompilePharoCoreRectangle()
        {
            ChunkReader chunkCoreReader = new ChunkReader(@"PharoCoreKernelObjects.st");
            CodeReader coreReader = new CodeReader(chunkCoreReader);
            ChunkReader chunkReader = new ChunkReader(@"PharoCoreRectangle.st");
            CodeReader reader = new CodeReader(chunkReader);
            CodeModel model = new CodeModel();

            coreReader.Process(model);
            reader.Process(model);

            foreach (var element in model.Elements)
            {
                Block block = new Block();
                BytecodeCompiler compiler = new BytecodeCompiler(block);
                element.Visit(compiler);

                if (element is MethodModel && ((MethodModel)element).Body == null)
                    continue;

                Assert.IsNotNull(block.ByteCodes);
            }
        }
Ejemplo n.º 58
0
        public void CompileSqueakObjectForNodeJs()
        {
            ChunkReader chunkReader = new ChunkReader(@"SqueakObject.st");
            CodeReader reader = new CodeReader(chunkReader);
            CodeModel model = new CodeModel();

            reader.Process(model);

            this.compiler.Visit(model);
            this.writer.Close();
            string output = this.writer.ToString();

            // TODO more tests
            Assert.IsTrue(ContainsLine(output, "var base = require('./js/ajtalk-base.js');"));
            Assert.IsTrue(ContainsLine(output, "var send = base.send;"));
            Assert.IsTrue(ContainsLine(output, "var sendSuper = base.sendSuper;"));
            Assert.IsTrue(ContainsLine(output, "var primitives = require('./js/ajtalk-primitives.js');"));

            Assert.IsTrue(ContainsLine(output, "function Object()"));

            Assert.IsTrue(ContainsLine(output, "exports.Object = Object;"));
        }
Ejemplo n.º 59
0
        public int Load()
        {
            _chunkManager = new ChunkManager(this.GetType().Name, BrokerController.Instance.Setting.MessageChunkConfig);
            _chunkWriter = new ChunkWriter(_chunkManager);
            _chunkReader = new ChunkReader(_chunkManager, _chunkWriter);

            _chunkManager.Load(ReadMessage);

            return _chunkManager.GetAllChunks().Count;
        }
Ejemplo n.º 60
0
        internal static void CompileFile(string filename)
        {
            ChunkReader chunkReader = new ChunkReader(filename);
            CodeReader reader = new CodeReader(chunkReader);
            CodeModel model = new CodeModel();

            reader.Process(model);

            foreach (var element in model.Elements)
            {
                Block block = new Block();
                BytecodeCompiler compiler = new BytecodeCompiler(block);
                element.Visit(compiler);
                if (element is MethodModel && ((MethodModel)element).Body == null)
                    continue;
                Assert.IsNotNull(block.ByteCodes);
            }
        }