public ChunkReaderQueue(IChunkReader chunkReader, IWorkDoer workDoer, int queueLength) { _WorkDoer = workDoer; _QueueLength = queueLength; ChunkReader = chunkReader; _WaitForAddEvent = new ManualResetEventSlim(false); _WaitForRemoveEvent = new ManualResetEventSlim(true); _ChunkInProgressIndices = new int[workDoer.ThreadCount]; }
public void reads_multiple_tags_in_same_chunk() { const string testData = "<streamWindow id=\"death\" title=\"Deaths\" location=\"left\" resident=\"true\" nameFilterOption=\"true\" timestamp=\"on\"/>\n<streamWindow id=\"assess\" title=\"Assess\" location=\"right\" resident=\"true\"/>\n<streamWindow id='conversation' title='Conversation' location='center' resident='true' ifClosed='' timestamp='on'/>\n<streamWindow id='whispers' title='Whispers' location='center' resident='true' timestamp='on' ifClosed='conversation'/>\n<streamWindow id='talk' title='Talk' location='center' resident='true' timestamp='on' ifClosed='conversation'/>\n<streamWindow id='experience' title='Field Experience' location='center' target='drop' ifClosed='' resident='true'/><clearStream id='experience'/><pushStream id='experience'/><output class='mono'/>\n<compDef id='exp Shield Usage'></compDef>\n<compDef id='exp Light Armor'></compDef>\n<compDef id='exp Chain Armor'></compDef>\n<compDef id='exp Brigandine'></compDef>\n<compDef id='exp Plate Armor'></compDef>\n<compDef id='exp Defending'></compDef>\n<compDef id='exp Parry Ability'></compDef>\n"; theReader = new SelfClosingChunkReader<Tag>("<streamWindow"); var result = theReader.Read(Chunk.For(testData)); Assert.AreEqual(6, result.Tags.Count()); }
public BoltReader(IChunkReader chunkReader, int defaultBufferSize, int maxBufferSize, ILogger logger, bool supportBytes) { Throw.ArgumentNullException.IfNull(chunkReader, nameof(chunkReader)); _logger = logger; _chunkReader = chunkReader; _defaultBufferSize = defaultBufferSize; _maxBufferSize = maxBufferSize; _bufferStream = new MemoryStream(_defaultBufferSize); _packStreamReader = supportBytes ? new PackStreamReader(_bufferStream, StructHandlers) : new PackStreamReaderBytesIncompatible(_bufferStream, StructHandlers); }
public MessageReader(IChunkReader chunkReader, int defaultBufferSize, int maxBufferSize, ILogger logger, IMessageFormat messageFormat) { Throw.ArgumentNullException.IfNull(chunkReader, nameof(chunkReader)); Throw.ArgumentNullException.IfNull(messageFormat, nameof(messageFormat)); _logger = logger; _chunkReader = chunkReader; _defaultBufferSize = defaultBufferSize; _maxBufferSize = maxBufferSize; _bufferStream = new MemoryStream(_defaultBufferSize); _packStreamReader = messageFormat.CreateReader(_bufferStream); }
public BoltReader(IChunkReader chunkReader, int defaultBufferSize, int maxBufferSize, ILogger logger, IPackStreamFactory packStreamFactory) { Throw.ArgumentNullException.IfNull(chunkReader, nameof(chunkReader)); Throw.ArgumentNullException.IfNull(packStreamFactory, nameof(packStreamFactory)); _logger = logger; _chunkReader = chunkReader; _defaultBufferSize = defaultBufferSize; _maxBufferSize = maxBufferSize; _bufferStream = new MemoryStream(_defaultBufferSize); _packStreamReader = packStreamFactory.CreateReader(_bufferStream); }
protected virtual void Dispose(bool disposing) { if (!disposedValue) { if (disposing) { StopWork(); _WorkDoer.Stop(); _WorkDoer.WaitToEnd(); ChunkReader?.Dispose(); ChunkReader = null; } disposedValue = true; } }
public RenderChunk(IWorldReader world, IChunkReader chunk) { calculating = false; viewManager = new ChunkViewEventManager(); coroutineManager = new ChunkCoroutineEventManager(); calcVisibiltyProvider = new ChunkEventProvider <RenderCalcVisibilityEvent>(viewManager); calcVerticesProvider = new ChunkEventProvider <RenderCalcVerticesEvent>(viewManager); calcMeshProvider = new ChunkEventProvider <RenderCalcMeshEvent>(coroutineManager); this.world = world; this.chunk = chunk; visibilityVersion = 0; meshVersion = 0; bounds = chunk.position.bounds; empty = 4096; data = new bool[empty]; // 16 * 16 * 16 mesh = new Mesh(); visibleFacing = 0; }
/// <summary> /// All lines in input should be already sorted /// </summary> /// <param name="input"></param> public List<WordsFrequency> CalcTop(IChunkReader input) { string line; while((line = input.MoveNextLine()) != null) { curr = WordsFrequency.Parse(line); if (prev != null && prev.Word != curr.Word) { Handle(prev); prev = curr; } else { if (prev == null) prev = curr; else prev.Frequency += curr.Frequency; } } Handle(prev); return top.ToList(); }
public void Merge(IChunkReader[] chunkReaders, IChunkWriter output) { var list = new LinkedList<Pair>(); for(int i = 0; i < chunkReaders.Length; i++) { string current = chunkReaders[i].MoveNextLine(); if(current == null) continue; AddToList(list, new Pair(i, current)); } while(list.Count > 0) { Pair pair = list.First.Value; list.RemoveFirst(); string line = pair.Key; output.WriteLine(line); string current = chunkReaders[pair.InputIndex].MoveNextLine(); if(current == null) continue; pair.Key = current; AddToList(list, pair); } }
public void ReadChunk(IChunkReader reader) { byte[] idBytes = ReadByteArray(4); StringBuilder sb = new StringBuilder(); for (int i = 0; i < 4; i++) { char c = (char)idBytes[i]; if (c >= 'A' && c <= 'Z') { sb.Append(c); } else { throw new Exception("Chunk id contained unexpected letter"); } } string id = sb.ToString(); //System.Console.WriteLine("Reading " + id); long chunkLength = ReadLong(); long chunkStart = stream.Position; currentChunkStart = chunkStart; currentChunkLength = chunkLength; reader.ReadChunk(id, chunkLength, this); long bytesReadByReader = stream.Position - chunkStart; if (bytesReadByReader > chunkLength) { throw new Exception("Chunk reader read past the end of chunk '" + id + "'"); } //System.Console.WriteLine("Skipping " + (chunkLength - bytesReadByReader)); // Skip the rest of the chunk stream.Seek(chunkLength - bytesReadByReader, SeekOrigin.Current); }
public void ReadAllChunks(IChunkReader reader) { long start = currentChunkStart; long length = currentChunkLength; while (stream.Position < start + length) { ReadChunk(reader); } }
public GZipTestDecompress(IChunkReader chunkReader, IChunkWriter chunkWriter) { _ChunkReader = chunkReader ?? throw new ArgumentNullException(nameof(chunkReader)); _ChunkWriter = chunkWriter ?? throw new ArgumentNullException(nameof(chunkWriter)); }
public void SetUp() { theReader = new SelfClosingChunkReader<Tag>("<roundTime"); }