public unsafe void Send(ReadOnlySpan <byte> message) { if (!IsConnected) throw new InvalidOperationException("Trying to send when not connected"); fixed(byte *ptr = message) { _buffer.Wrap(ptr, message.Length); var spinWait = new SpinWait(); while (true) { var errorCode = _publication.Offer(_buffer, 0, message.Length, _dataReservedValueSupplier); if (errorCode >= 0) { break; } var result = Utils.InterpretPublicationOfferResult(errorCode); if (result == AeronResultType.Success) { break; } if (result == AeronResultType.ShouldRetry) { spinWait.SpinOnce(); continue; } _client.SessionDisconnected(this); return; } _buffer.Release(); } }