/// <summary> /// Read 'Count' number of samples /// </summary> /// <param name="Count">Number of samples to read</param> /// <returns></returns> public short[] Read(int Count) { lock (this) { try { /* * short[] Readed = new short[Count]; * int ReadCount = Math.Min(Buffer.ConsumeRemaining, Count); * Buffer.Consume(Readed, 0, ReadCount); * return Readed; */ return(Buffer.Consume(Math.Min(Buffer.ConsumeRemaining, Count))); } finally { foreach (var Event in BufferEvents .Where(ExpectedConsumed => Buffer.TotalConsumed >= ExpectedConsumed.Item1).ToArray()) { BufferEvents.Remove(Event); Event.Item2(); } } } }
public void ConsumeTest() { var Buffer = new ProduceConsumeBuffer<int>(); Buffer.Produce(new int[] { 10, 20, -2, 3, 15 }); Assert.AreEqual(Buffer.IndexOf(-2), 2); CollectionAssert.AreEqual(Buffer.Consume(2), new int[] { 10, 20 }); Assert.AreEqual(Buffer.IndexOf(-2), 0); CollectionAssert.AreEqual(Buffer.Consume(1), new int[] { -2 }); Assert.AreEqual(Buffer.IndexOf(-2), -1); Buffer.Produce(new int[] { 4, 2 }); CollectionAssert.AreEqual(Buffer.Items, new int[] { 3, 15, 4, 2 }); Assert.AreEqual(-1, Buffer.IndexOf(new int[] { 3, 15, 4, 1 })); Assert.AreEqual(0, Buffer.IndexOf(new int[] { 3, 15, 4 })); Assert.AreEqual(1, Buffer.IndexOf(new int[] { 15, 4 })); Assert.AreEqual(2, Buffer.IndexOf(new int[] { 4, 2 })); }
public void ConsumeTest() { var Buffer = new ProduceConsumeBuffer <int>(); Buffer.Produce(new int[] { 10, 20, -2, 3, 15 }); Assert.AreEqual(Buffer.IndexOf(-2), 2); CollectionAssert.AreEqual(Buffer.Consume(2), new int[] { 10, 20 }); Assert.AreEqual(Buffer.IndexOf(-2), 0); CollectionAssert.AreEqual(Buffer.Consume(1), new int[] { -2 }); Assert.AreEqual(Buffer.IndexOf(-2), -1); Buffer.Produce(new int[] { 4, 2 }); CollectionAssert.AreEqual(Buffer.Items, new int[] { 3, 15, 4, 2 }); Assert.AreEqual(-1, Buffer.IndexOf(new int[] { 3, 15, 4, 1 })); Assert.AreEqual(0, Buffer.IndexOf(new int[] { 3, 15, 4 })); Assert.AreEqual(1, Buffer.IndexOf(new int[] { 15, 4 })); Assert.AreEqual(2, Buffer.IndexOf(new int[] { 4, 2 })); }
/// <summary> /// /// </summary> /// <param name="numberOfBytes"></param> public void SkipBytes(int numberOfBytes) { _buffer.Consume(numberOfBytes); }
public void SkipBytes(int NumberOfBytes) { Buffer.Consume(NumberOfBytes); }
public async Task SkipBytesAsync(int NumberOfBytes) { await EnsureDataAsync(NumberOfBytes); Buffer.Consume(NumberOfBytes); }