public void Peek(IList <object> messages, int maxNumberOfMessages) { lock (_syncLock) { _readList.Clear(); _queue.Peek(_readList, maxNumberOfMessages); } // Wait if there are no more data to be delivered. if (!_readList.Any()) { _dataEnqueuedEvent.Reset(); if (!_dataEnqueuedEvent.WaitOne(100)) { return; } lock (_syncLock) { _readList.Clear(); _queue.Peek(_readList, maxNumberOfMessages); } } foreach (var buffer in _readList) { var obj = JSON.Parse(Encoding.UTF8.GetString(buffer)); messages.Add(obj); } }
public void Peek(IList <object> messages, int maxNumberOfMessages) { var bufferList = new List <byte[]>(); lock (_syncLock) { _queue.Peek(bufferList, maxNumberOfMessages); } // Wait if there are no more data to be delivered. if (!bufferList.Any()) { _dataEnqueuedEvent.Reset(); if (!_dataEnqueuedEvent.WaitOne(100)) { return; } lock (_syncLock) { _queue.Peek(bufferList, maxNumberOfMessages); } } foreach (var buffer in bufferList) { var obj = _itemSerializer.Deserialize(buffer); messages.Add(obj); } }