private IEnumerable <(string, BufferSlice)> EnumerateAllBufferSlices()
        {
            foreach (var pair in bufferPools)
            {
                var routingKey = pair.Key;
                var bufferPool = pair.Value;

                var maximumSliceLength = messageBuffer.Length
                                         - RequestMessageBuilder.CommonHeaderSize
                                         - RequestMessageBuilder.EstimateEventGroupHeaderSize(routingKey);

                var snapshot = bufferPool.GetSnapshot();
                if (snapshot == null)
                {
                    continue;
                }

                foreach (var buffer in snapshot)
                {
                    foreach (var slice in bufferSliceFactory.Cut(buffer, maximumSliceLength))
                    {
                        yield return(routingKey, slice);
                    }
                }
            }
        }
Example #2
0
 public void Reset()
 {
     CurrentSlices         = new List <BufferSlice>();
     CurrentMessageBuilder = new RequestMessageBuilder(messageBuffer);
 }