public void EnqueueOrMergeSendRequest(ReadOnlySpan <byte> message, SendRequestProcessingEngine engine) { var lockTaken = false; try { _lock.Enter(ref lockTaken); var currentEntry = _currentRequestEntry; if (currentEntry != null) { if (TryAddMessageToExistingRequest(currentEntry, message)) { return; } } _currentRequestEntry = null; } finally { if (lockTaken) { _lock.Exit(); } } EnqueueNewMergeRequest(message, engine); }
private void EnqueueNewMergeRequest(ReadOnlySpan <byte> message, SendRequestProcessingEngine engine) { using (var entry = engine.AcquireSendRequestEntry()) { entry.Value->SetWriteRequest(_sessionId, message); _currentRequestEntry = entry.Value; } }