void OnReadUnix(UVBuffer.Unix buffer, IntPtr bytesAvaliable) { long bytesRead = bytesAvaliable.ToInt64(); if (bytesRead == 0) { return; } else if (bytesRead < 0) { var error = UVException.ErrorCodeToError((int)bytesRead); if (error == UVError.EOF) { OnEndOfStream(); Dispose(); } else { Dispose(); throw new UVException((int)bytesRead); } } else { var readSlice = new Span <byte>((byte *)buffer.Buffer, (int)bytesRead); OnReadCompleted(readSlice); buffer.Dispose(); } }
void OnReadUnix(UVBuffer.Unix buffer, IntPtr bytesAvaliable) { long bytesRead = bytesAvaliable.ToInt64(); if (bytesRead == 0) { return; } else if (bytesRead < 0) { var error = UVException.ErrorCodeToError((int)bytesRead); if (error == UVError.EOF) { OnEndOfStream(); Dispose(); } else { Dispose(); throw new UVException((int)bytesRead); } } else { // This can be a Span<byte> but the samples pass it directly to TryWrite which // needs to unpack the data and turn it back into either an array or native memory var readSlice = new UnsafeMemory <byte>((byte *)buffer.Buffer, (int)bytesRead); OnReadCompleted(readSlice); buffer.Dispose(); } }