public void CompleteWrite(Ring ring, int result)
        {
            RemoveFlag(ConnectionState.Writing);
            if (result < 0)
            {
                if (!HandleCompleteWriteError(ring, result))
                {
                    DisposeWriteHandles();
                }

                return;
            }

            DisposeWriteHandles();

            SequencePosition end;
            var currentWrite = CurrentWrite;

            if (result == 0)
            {
                end = currentWrite.Start;
            }
            else if (currentWrite.Length == result)
            {
                end = currentWrite.End;
            }
            else
            {
                end = currentWrite.GetPosition(result);
            }

            Outbound.AdvanceTo(end);
            ReadFromApp(ring);
        }