public void OnReceive(Header header, Stream contentStream, int contentLength) { if (IsStreamPayload(header)) { _streamManager.OnReceive(header, contentStream, contentLength); } else { if (_activeAssemblers.TryGetValue(header.Id, out var assembler)) { assembler.OnReceive(header, contentStream, contentLength); } // remove them when we are done if (header.End) { _activeAssemblers.Remove(header.Id); } // ignore unknown header ids } }