Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches

◆ TryWriteToBuffer()

bool int bytesWritten System.IO.StreamBuffer.TryWriteToBuffer ( ReadOnlySpan< byte > buffer)
inlineprivate

Definition at line 112 of file StreamBuffer.cs.

113 {
114 lock (SyncObject)
115 {
116 if (_writeEnded)
117 {
118 throw new InvalidOperationException();
119 }
120 if (_readAborted)
121 {
122 return (wait: false, bytesWritten: buffer.Length);
123 }
125 int num = Math.Min(buffer.Length, _buffer.AvailableMemory.Length);
126 if (num > 0)
127 {
128 _buffer.AvailableMemory.CopyFrom(buffer.Slice(0, num));
129 _buffer.Commit(num);
131 }
132 buffer = buffer.Slice(num);
133 if (buffer.Length == 0)
134 {
135 return (wait: false, bytesWritten: num);
136 }
138 return (wait: true, bytesWritten: num);
139 }
140 }
MultiArrayBuffer _buffer
readonly ResettableValueTaskSource _writeTaskSource
readonly int _maxBufferSize
readonly ResettableValueTaskSource _readTaskSource
void EnsureAvailableSpaceUpToLimit(int byteCount, int limit)
System.Net.MultiMemory AvailableMemory

References System.IO.StreamBuffer._buffer, System.IO.StreamBuffer._maxBufferSize, System.IO.StreamBuffer._readAborted, System.IO.StreamBuffer._readTaskSource, System.IO.StreamBuffer._writeEnded, System.IO.StreamBuffer._writeTaskSource, System.Net.MultiArrayBuffer.AvailableMemory, System.buffer, System.Net.MultiArrayBuffer.Commit(), System.Net.MultiArrayBuffer.EnsureAvailableSpaceUpToLimit(), System.Math.Min(), System.IO.StreamBuffer.ResettableValueTaskSource.Reset(), System.IO.StreamBuffer.ResettableValueTaskSource.SignalWaiter(), System.IO.StreamBuffer.SyncObject, and System.IO.StreamBuffer.wait.

Referenced by System.IO.StreamBuffer.Write(), and System.IO.StreamBuffer.WriteAsync().