Commit 942b15f4 authored by Marc Gravell's avatar Marc Gravell

pass RawResult as ref-readonly (it's quite a biggie!)

parent 743d3ca8
...@@ -183,7 +183,7 @@ private static void AddFlag(ref ClientFlags value, string raw, ClientFlags toAdd ...@@ -183,7 +183,7 @@ private static void AddFlag(ref ClientFlags value, string raw, ClientFlags toAdd
private class ClientInfoProcessor : ResultProcessor<ClientInfo[]> private class ClientInfoProcessor : ResultProcessor<ClientInfo[]>
{ {
protected override bool SetResultCore(PhysicalConnection connection, Message message, RawResult result) protected override bool SetResultCore(PhysicalConnection connection, Message message, in RawResult result)
{ {
switch(result.Type) switch(result.Type)
{ {
...@@ -198,4 +198,4 @@ protected override bool SetResultCore(PhysicalConnection connection, Message mes ...@@ -198,4 +198,4 @@ protected override bool SetResultCore(PhysicalConnection connection, Message mes
} }
} }
} }
} }
\ No newline at end of file
...@@ -71,7 +71,7 @@ public string GetHelpUrl() ...@@ -71,7 +71,7 @@ public string GetHelpUrl()
private class CommandTraceProcessor : ResultProcessor<CommandTrace[]> private class CommandTraceProcessor : ResultProcessor<CommandTrace[]>
{ {
protected override bool SetResultCore(PhysicalConnection connection, Message message, RawResult result) protected override bool SetResultCore(PhysicalConnection connection, Message message, in RawResult result)
{ {
switch(result.Type) switch(result.Type)
{ {
......
...@@ -262,7 +262,7 @@ public static Condition StringNotEqual(RedisKey key, RedisValue value) ...@@ -262,7 +262,7 @@ public static Condition StringNotEqual(RedisKey key, RedisValue value)
internal abstract IEnumerable<Message> CreateMessages(int db, ResultBox resultBox); internal abstract IEnumerable<Message> CreateMessages(int db, ResultBox resultBox);
internal abstract int GetHashSlot(ServerSelectionStrategy serverSelectionStrategy); internal abstract int GetHashSlot(ServerSelectionStrategy serverSelectionStrategy);
internal abstract bool TryValidate(RawResult result, out bool value); internal abstract bool TryValidate(in RawResult result, out bool value);
internal sealed class ConditionProcessor : ResultProcessor<bool> internal sealed class ConditionProcessor : ResultProcessor<bool>
{ {
...@@ -273,7 +273,7 @@ public static Message CreateMessage(Condition condition, int db, CommandFlags fl ...@@ -273,7 +273,7 @@ public static Message CreateMessage(Condition condition, int db, CommandFlags fl
return new ConditionMessage(condition, db, flags, command, key, value); return new ConditionMessage(condition, db, flags, command, key, value);
} }
protected override bool SetResultCore(PhysicalConnection connection, Message message, RawResult result) protected override bool SetResultCore(PhysicalConnection connection, Message message, in RawResult result)
{ {
connection?.BridgeCouldBeNull?.Multiplexer?.OnTransactionLog($"condition '{message.CommandAndKey}' got '{result.ToString()}'"); connection?.BridgeCouldBeNull?.Multiplexer?.OnTransactionLog($"condition '{message.CommandAndKey}' got '{result.ToString()}'");
var msg = message as ConditionMessage; var msg = message as ConditionMessage;
...@@ -382,7 +382,7 @@ internal override IEnumerable<Message> CreateMessages(int db, ResultBox resultBo ...@@ -382,7 +382,7 @@ internal override IEnumerable<Message> CreateMessages(int db, ResultBox resultBo
internal override int GetHashSlot(ServerSelectionStrategy serverSelectionStrategy) => serverSelectionStrategy.HashSlot(key); internal override int GetHashSlot(ServerSelectionStrategy serverSelectionStrategy) => serverSelectionStrategy.HashSlot(key);
internal override bool TryValidate(RawResult result, out bool value) internal override bool TryValidate(in RawResult result, out bool value)
{ {
switch (type) switch (type)
{ {
...@@ -452,7 +452,7 @@ internal override int GetHashSlot(ServerSelectionStrategy serverSelectionStrateg ...@@ -452,7 +452,7 @@ internal override int GetHashSlot(ServerSelectionStrategy serverSelectionStrateg
return serverSelectionStrategy.HashSlot(key); return serverSelectionStrategy.HashSlot(key);
} }
internal override bool TryValidate(RawResult result, out bool value) internal override bool TryValidate(in RawResult result, out bool value)
{ {
switch (result.Type) switch (result.Type)
{ {
...@@ -512,7 +512,7 @@ internal sealed override IEnumerable<Message> CreateMessages(int db, ResultBox r ...@@ -512,7 +512,7 @@ internal sealed override IEnumerable<Message> CreateMessages(int db, ResultBox r
internal override int GetHashSlot(ServerSelectionStrategy serverSelectionStrategy) => serverSelectionStrategy.HashSlot(key); internal override int GetHashSlot(ServerSelectionStrategy serverSelectionStrategy) => serverSelectionStrategy.HashSlot(key);
internal override bool TryValidate(RawResult result, out bool value) internal override bool TryValidate(in RawResult result, out bool value)
{ {
switch (result.Type) switch (result.Type)
{ {
...@@ -614,7 +614,7 @@ internal override int GetHashSlot(ServerSelectionStrategy serverSelectionStrateg ...@@ -614,7 +614,7 @@ internal override int GetHashSlot(ServerSelectionStrategy serverSelectionStrateg
return serverSelectionStrategy.HashSlot(key); return serverSelectionStrategy.HashSlot(key);
} }
internal override bool TryValidate(RawResult result, out bool value) internal override bool TryValidate(in RawResult result, out bool value)
{ {
switch (result.Type) switch (result.Type)
{ {
......
...@@ -1549,7 +1549,7 @@ private static RawResult ReadLineTerminatedString(ResultType type, ref BufferRea ...@@ -1549,7 +1549,7 @@ private static RawResult ReadLineTerminatedString(ResultType type, ref BufferRea
} }
} }
private static RawResult ParseInlineProtocol(RawResult line) private static RawResult ParseInlineProtocol(in RawResult line)
{ {
if (!line.HasValue) return RawResult.Nil; // incomplete line if (!line.HasValue) return RawResult.Nil; // incomplete line
......
...@@ -3447,7 +3447,7 @@ private sealed class HashScanResultProcessor : ScanResultProcessor<HashEntry> ...@@ -3447,7 +3447,7 @@ private sealed class HashScanResultProcessor : ScanResultProcessor<HashEntry>
{ {
public static readonly ResultProcessor<ScanIterator<HashEntry>.ScanResult> Default = new HashScanResultProcessor(); public static readonly ResultProcessor<ScanIterator<HashEntry>.ScanResult> Default = new HashScanResultProcessor();
private HashScanResultProcessor() { } private HashScanResultProcessor() { }
protected override HashEntry[] Parse(RawResult result) protected override HashEntry[] Parse(in RawResult result)
{ {
if (!HashEntryArray.TryParse(result, out HashEntry[] pairs)) pairs = null; if (!HashEntryArray.TryParse(result, out HashEntry[] pairs)) pairs = null;
return pairs; return pairs;
...@@ -3456,9 +3456,9 @@ protected override HashEntry[] Parse(RawResult result) ...@@ -3456,9 +3456,9 @@ protected override HashEntry[] Parse(RawResult result)
private abstract class ScanResultProcessor<T> : ResultProcessor<ScanIterator<T>.ScanResult> private abstract class ScanResultProcessor<T> : ResultProcessor<ScanIterator<T>.ScanResult>
{ {
protected abstract T[] Parse(RawResult result); protected abstract T[] Parse(in RawResult result);
protected override bool SetResultCore(PhysicalConnection connection, Message message, RawResult result) protected override bool SetResultCore(PhysicalConnection connection, Message message, in RawResult result)
{ {
switch (result.Type) switch (result.Type)
{ {
...@@ -3628,7 +3628,7 @@ private sealed class SetScanResultProcessor : ScanResultProcessor<RedisValue> ...@@ -3628,7 +3628,7 @@ private sealed class SetScanResultProcessor : ScanResultProcessor<RedisValue>
{ {
public static readonly ResultProcessor<ScanIterator<RedisValue>.ScanResult> Default = new SetScanResultProcessor(); public static readonly ResultProcessor<ScanIterator<RedisValue>.ScanResult> Default = new SetScanResultProcessor();
private SetScanResultProcessor() { } private SetScanResultProcessor() { }
protected override RedisValue[] Parse(RawResult result) protected override RedisValue[] Parse(in RawResult result)
{ {
return result.GetItemsAsValues(); return result.GetItemsAsValues();
} }
...@@ -3674,7 +3674,7 @@ private sealed class SortedSetScanResultProcessor : ScanResultProcessor<SortedSe ...@@ -3674,7 +3674,7 @@ private sealed class SortedSetScanResultProcessor : ScanResultProcessor<SortedSe
{ {
public static readonly ResultProcessor<ScanIterator<SortedSetEntry>.ScanResult> Default = new SortedSetScanResultProcessor(); public static readonly ResultProcessor<ScanIterator<SortedSetEntry>.ScanResult> Default = new SortedSetScanResultProcessor();
private SortedSetScanResultProcessor() { } private SortedSetScanResultProcessor() { }
protected override SortedSetEntry[] Parse(RawResult result) protected override SortedSetEntry[] Parse(in RawResult result)
{ {
if (!SortedSetWithScores.TryParse(result, out SortedSetEntry[] pairs)) pairs = null; if (!SortedSetWithScores.TryParse(result, out SortedSetEntry[] pairs)) pairs = null;
return pairs; return pairs;
...@@ -3729,7 +3729,7 @@ private class StringGetWithExpiryProcessor : ResultProcessor<RedisValueWithExpir ...@@ -3729,7 +3729,7 @@ private class StringGetWithExpiryProcessor : ResultProcessor<RedisValueWithExpir
{ {
public static readonly ResultProcessor<RedisValueWithExpiry> Default = new StringGetWithExpiryProcessor(); public static readonly ResultProcessor<RedisValueWithExpiry> Default = new StringGetWithExpiryProcessor();
private StringGetWithExpiryProcessor() { } private StringGetWithExpiryProcessor() { }
protected override bool SetResultCore(PhysicalConnection connection, Message message, RawResult result) protected override bool SetResultCore(PhysicalConnection connection, Message message, in RawResult result)
{ {
switch (result.Type) switch (result.Type)
{ {
......
...@@ -45,7 +45,7 @@ public static RedisResult Create(RedisResult[] values) ...@@ -45,7 +45,7 @@ public static RedisResult Create(RedisResult[] values)
// internally, this is very similar to RawResult, except it is designed to be usable // internally, this is very similar to RawResult, except it is designed to be usable
// outside of the IO-processing pipeline: the buffers are standalone, etc // outside of the IO-processing pipeline: the buffers are standalone, etc
internal static RedisResult TryCreate(PhysicalConnection connection, RawResult result) internal static RedisResult TryCreate(PhysicalConnection connection, in RawResult result)
{ {
try try
{ {
......
...@@ -742,7 +742,7 @@ protected override Message CreateMessage(long cursor) ...@@ -742,7 +742,7 @@ protected override Message CreateMessage(long cursor)
public static readonly ResultProcessor<ScanResult> processor = new KeysResultProcessor(); public static readonly ResultProcessor<ScanResult> processor = new KeysResultProcessor();
private class KeysResultProcessor : ResultProcessor<ScanResult> private class KeysResultProcessor : ResultProcessor<ScanResult>
{ {
protected override bool SetResultCore(PhysicalConnection connection, Message message, RawResult result) protected override bool SetResultCore(PhysicalConnection connection, Message message, in RawResult result)
{ {
switch (result.Type) switch (result.Type)
{ {
......
...@@ -171,7 +171,7 @@ private class QueuedProcessor : ResultProcessor<bool> ...@@ -171,7 +171,7 @@ private class QueuedProcessor : ResultProcessor<bool>
{ {
public static readonly ResultProcessor<bool> Default = new QueuedProcessor(); public static readonly ResultProcessor<bool> Default = new QueuedProcessor();
protected override bool SetResultCore(PhysicalConnection connection, Message message, RawResult result) protected override bool SetResultCore(PhysicalConnection connection, Message message, in RawResult result)
{ {
if (result.Type == ResultType.SimpleString && result.IsEqual(CommonReplies.QUEUED)) if (result.Type == ResultType.SimpleString && result.IsEqual(CommonReplies.QUEUED))
{ {
...@@ -432,7 +432,7 @@ private class TransactionProcessor : ResultProcessor<bool> ...@@ -432,7 +432,7 @@ private class TransactionProcessor : ResultProcessor<bool>
{ {
public static readonly TransactionProcessor Default = new TransactionProcessor(); public static readonly TransactionProcessor Default = new TransactionProcessor();
public override bool SetResult(PhysicalConnection connection, Message message, RawResult result) public override bool SetResult(PhysicalConnection connection, Message message, in RawResult result)
{ {
if (result.IsError && message is TransactionMessage tran) if (result.IsError && message is TransactionMessage tran)
{ {
...@@ -447,7 +447,7 @@ public override bool SetResult(PhysicalConnection connection, Message message, R ...@@ -447,7 +447,7 @@ public override bool SetResult(PhysicalConnection connection, Message message, R
return base.SetResult(connection, message, result); return base.SetResult(connection, message, result);
} }
protected override bool SetResultCore(PhysicalConnection connection, Message message, RawResult result) protected override bool SetResultCore(PhysicalConnection connection, Message message, in RawResult result)
{ {
connection?.BridgeCouldBeNull?.Multiplexer?.OnTransactionLog($"got {result} for {message.CommandAndKey}"); connection?.BridgeCouldBeNull?.Multiplexer?.OnTransactionLog($"got {result} for {message.CommandAndKey}");
if (message is TransactionMessage tran) if (message is TransactionMessage tran)
......
...@@ -165,7 +165,7 @@ public void SetException(Message message, Exception ex) ...@@ -165,7 +165,7 @@ public void SetException(Message message, Exception ex)
box?.SetException(ex); box?.SetException(ex);
} }
// true if ready to be completed (i.e. false if re-issued to another server) // true if ready to be completed (i.e. false if re-issued to another server)
public virtual bool SetResult(PhysicalConnection connection, Message message, RawResult result) public virtual bool SetResult(PhysicalConnection connection, Message message, in RawResult result)
{ {
var bridge = connection.BridgeCouldBeNull; var bridge = connection.BridgeCouldBeNull;
if (message is LoggingMessage logging) if (message is LoggingMessage logging)
...@@ -256,9 +256,9 @@ public virtual bool SetResult(PhysicalConnection connection, Message message, Ra ...@@ -256,9 +256,9 @@ public virtual bool SetResult(PhysicalConnection connection, Message message, Ra
return true; return true;
} }
protected abstract bool SetResultCore(PhysicalConnection connection, Message message, RawResult result); protected abstract bool SetResultCore(PhysicalConnection connection, Message message, in RawResult result);
private void UnexpectedResponse(Message message, RawResult result) private void UnexpectedResponse(Message message, in RawResult result)
{ {
ConnectionMultiplexer.TraceWithoutContext("From " + GetType().Name, "Unexpected Response"); ConnectionMultiplexer.TraceWithoutContext("From " + GetType().Name, "Unexpected Response");
ConnectionFail(message, ConnectionFailureType.ProtocolFailure, "Unexpected response to " + (message?.Command.ToString() ?? "n/a") + ": " + result.ToString()); ConnectionFail(message, ConnectionFailureType.ProtocolFailure, "Unexpected response to " + (message?.Command.ToString() ?? "n/a") + ": " + result.ToString());
...@@ -272,7 +272,7 @@ public TimeSpanProcessor(bool isMilliseconds) ...@@ -272,7 +272,7 @@ public TimeSpanProcessor(bool isMilliseconds)
this.isMilliseconds = isMilliseconds; this.isMilliseconds = isMilliseconds;
} }
public bool TryParse(RawResult result, out TimeSpan? expiry) public bool TryParse(in RawResult result, out TimeSpan? expiry)
{ {
switch (result.Type) switch (result.Type)
{ {
...@@ -304,7 +304,7 @@ public bool TryParse(RawResult result, out TimeSpan? expiry) ...@@ -304,7 +304,7 @@ public bool TryParse(RawResult result, out TimeSpan? expiry)
return false; return false;
} }
protected override bool SetResultCore(PhysicalConnection connection, Message message, RawResult result) protected override bool SetResultCore(PhysicalConnection connection, Message message, in RawResult result)
{ {
if (TryParse(result, out TimeSpan? expiry)) if (TryParse(result, out TimeSpan? expiry))
{ {
...@@ -322,7 +322,7 @@ public static TimerMessage CreateMessage(int db, CommandFlags flags, RedisComman ...@@ -322,7 +322,7 @@ public static TimerMessage CreateMessage(int db, CommandFlags flags, RedisComman
return new TimerMessage(db, flags, command, value); return new TimerMessage(db, flags, command, value);
} }
protected override bool SetResultCore(PhysicalConnection connection, Message message, RawResult result) protected override bool SetResultCore(PhysicalConnection connection, Message message, in RawResult result)
{ {
if (result.Type == ResultType.Error) if (result.Type == ResultType.Error)
{ {
...@@ -376,7 +376,7 @@ protected override void WriteImpl(PhysicalConnection physical) ...@@ -376,7 +376,7 @@ protected override void WriteImpl(PhysicalConnection physical)
public sealed class TrackSubscriptionsProcessor : ResultProcessor<bool> public sealed class TrackSubscriptionsProcessor : ResultProcessor<bool>
{ {
protected override bool SetResultCore(PhysicalConnection connection, Message message, RawResult result) protected override bool SetResultCore(PhysicalConnection connection, Message message, in RawResult result)
{ {
if (result.Type == ResultType.MultiBulk) if (result.Type == ResultType.MultiBulk)
{ {
...@@ -393,7 +393,7 @@ protected override bool SetResultCore(PhysicalConnection connection, Message mes ...@@ -393,7 +393,7 @@ protected override bool SetResultCore(PhysicalConnection connection, Message mes
internal sealed class DemandZeroOrOneProcessor : ResultProcessor<bool> internal sealed class DemandZeroOrOneProcessor : ResultProcessor<bool>
{ {
public static bool TryGet(RawResult result, out bool value) public static bool TryGet(in RawResult result, out bool value)
{ {
switch (result.Type) switch (result.Type)
{ {
...@@ -408,7 +408,7 @@ public static bool TryGet(RawResult result, out bool value) ...@@ -408,7 +408,7 @@ public static bool TryGet(RawResult result, out bool value)
return false; return false;
} }
protected override bool SetResultCore(PhysicalConnection connection, Message message, RawResult result) protected override bool SetResultCore(PhysicalConnection connection, Message message, in RawResult result)
{ {
if (TryGet(result, out bool value)) if (TryGet(result, out bool value))
{ {
...@@ -472,7 +472,7 @@ private static int FromHex(char c) ...@@ -472,7 +472,7 @@ private static int FromHex(char c)
} }
// note that top-level error messages still get handled by SetResult, but nested errors // note that top-level error messages still get handled by SetResult, but nested errors
// (is that a thing?) will be wrapped in the RedisResult // (is that a thing?) will be wrapped in the RedisResult
protected override bool SetResultCore(PhysicalConnection connection, Message message, RawResult result) protected override bool SetResultCore(PhysicalConnection connection, Message message, in RawResult result)
{ {
switch (result.Type) switch (result.Type)
{ {
...@@ -499,7 +499,7 @@ protected override bool SetResultCore(PhysicalConnection connection, Message mes ...@@ -499,7 +499,7 @@ protected override bool SetResultCore(PhysicalConnection connection, Message mes
internal sealed class SortedSetEntryArrayProcessor : ValuePairInterleavedProcessorBase<SortedSetEntry> internal sealed class SortedSetEntryArrayProcessor : ValuePairInterleavedProcessorBase<SortedSetEntry>
{ {
protected override SortedSetEntry Parse(RawResult first, RawResult second) protected override SortedSetEntry Parse(in RawResult first, in RawResult second)
{ {
return new SortedSetEntry(first.AsRedisValue(), second.TryGetDouble(out double val) ? val : double.NaN); return new SortedSetEntry(first.AsRedisValue(), second.TryGetDouble(out double val) ? val : double.NaN);
} }
...@@ -507,7 +507,7 @@ protected override SortedSetEntry Parse(RawResult first, RawResult second) ...@@ -507,7 +507,7 @@ protected override SortedSetEntry Parse(RawResult first, RawResult second)
internal sealed class HashEntryArrayProcessor : ValuePairInterleavedProcessorBase<HashEntry> internal sealed class HashEntryArrayProcessor : ValuePairInterleavedProcessorBase<HashEntry>
{ {
protected override HashEntry Parse(RawResult first, RawResult second) protected override HashEntry Parse(in RawResult first, in RawResult second)
{ {
return new HashEntry(first.AsRedisValue(), second.AsRedisValue()); return new HashEntry(first.AsRedisValue(), second.AsRedisValue());
} }
...@@ -515,7 +515,7 @@ protected override HashEntry Parse(RawResult first, RawResult second) ...@@ -515,7 +515,7 @@ protected override HashEntry Parse(RawResult first, RawResult second)
internal abstract class ValuePairInterleavedProcessorBase<T> : ResultProcessor<T[]> internal abstract class ValuePairInterleavedProcessorBase<T> : ResultProcessor<T[]>
{ {
public bool TryParse(RawResult result, out T[] pairs) public bool TryParse(in RawResult result, out T[] pairs)
{ {
switch (result.Type) switch (result.Type)
{ {
...@@ -549,8 +549,8 @@ public bool TryParse(RawResult result, out T[] pairs) ...@@ -549,8 +549,8 @@ public bool TryParse(RawResult result, out T[] pairs)
} }
} }
protected abstract T Parse(RawResult first, RawResult second); protected abstract T Parse(in RawResult first, in RawResult second);
protected override bool SetResultCore(PhysicalConnection connection, Message message, RawResult result) protected override bool SetResultCore(PhysicalConnection connection, Message message, in RawResult result)
{ {
if (TryParse(result, out T[] arr)) if (TryParse(result, out T[] arr))
{ {
...@@ -563,7 +563,7 @@ protected override bool SetResultCore(PhysicalConnection connection, Message mes ...@@ -563,7 +563,7 @@ protected override bool SetResultCore(PhysicalConnection connection, Message mes
private sealed class AutoConfigureProcessor : ResultProcessor<bool> private sealed class AutoConfigureProcessor : ResultProcessor<bool>
{ {
public override bool SetResult(PhysicalConnection connection, Message message, RawResult result) public override bool SetResult(PhysicalConnection connection, Message message, in RawResult result)
{ {
if (result.IsError && result.StartsWith(CommonReplies.READONLY)) if (result.IsError && result.StartsWith(CommonReplies.READONLY))
{ {
...@@ -578,7 +578,7 @@ public override bool SetResult(PhysicalConnection connection, Message message, R ...@@ -578,7 +578,7 @@ public override bool SetResult(PhysicalConnection connection, Message message, R
return base.SetResult(connection, message, result); return base.SetResult(connection, message, result);
} }
protected override bool SetResultCore(PhysicalConnection connection, Message message, RawResult result) protected override bool SetResultCore(PhysicalConnection connection, Message message, in RawResult result)
{ {
var server = connection.BridgeCouldBeNull?.ServerEndPoint; var server = connection.BridgeCouldBeNull?.ServerEndPoint;
if (server == null) return false; if (server == null) return false;
...@@ -728,7 +728,7 @@ private static string Extract(string line, string prefix) ...@@ -728,7 +728,7 @@ private static string Extract(string line, string prefix)
private sealed class BooleanProcessor : ResultProcessor<bool> private sealed class BooleanProcessor : ResultProcessor<bool>
{ {
protected override bool SetResultCore(PhysicalConnection connection, Message message, RawResult result) protected override bool SetResultCore(PhysicalConnection connection, Message message, in RawResult result)
{ {
if (result.IsNull) if (result.IsNull)
{ {
...@@ -766,7 +766,7 @@ protected override bool SetResultCore(PhysicalConnection connection, Message mes ...@@ -766,7 +766,7 @@ protected override bool SetResultCore(PhysicalConnection connection, Message mes
private sealed class ByteArrayProcessor : ResultProcessor<byte[]> private sealed class ByteArrayProcessor : ResultProcessor<byte[]>
{ {
protected override bool SetResultCore(PhysicalConnection connection, Message message, RawResult result) protected override bool SetResultCore(PhysicalConnection connection, Message message, in RawResult result)
{ {
switch (result.Type) switch (result.Type)
{ {
...@@ -790,7 +790,7 @@ internal static ClusterConfiguration Parse(PhysicalConnection connection, string ...@@ -790,7 +790,7 @@ internal static ClusterConfiguration Parse(PhysicalConnection connection, string
return config; return config;
} }
protected override bool SetResultCore(PhysicalConnection connection, Message message, RawResult result) protected override bool SetResultCore(PhysicalConnection connection, Message message, in RawResult result)
{ {
switch (result.Type) switch (result.Type)
{ {
...@@ -808,7 +808,7 @@ protected override bool SetResultCore(PhysicalConnection connection, Message mes ...@@ -808,7 +808,7 @@ protected override bool SetResultCore(PhysicalConnection connection, Message mes
private sealed class ClusterNodesRawProcessor : ResultProcessor<string> private sealed class ClusterNodesRawProcessor : ResultProcessor<string>
{ {
protected override bool SetResultCore(PhysicalConnection connection, Message message, RawResult result) protected override bool SetResultCore(PhysicalConnection connection, Message message, in RawResult result)
{ {
switch (result.Type) switch (result.Type)
{ {
...@@ -829,7 +829,7 @@ protected override bool SetResultCore(PhysicalConnection connection, Message mes ...@@ -829,7 +829,7 @@ protected override bool SetResultCore(PhysicalConnection connection, Message mes
private sealed class ConnectionIdentityProcessor : ResultProcessor<EndPoint> private sealed class ConnectionIdentityProcessor : ResultProcessor<EndPoint>
{ {
protected override bool SetResultCore(PhysicalConnection connection, Message message, RawResult result) protected override bool SetResultCore(PhysicalConnection connection, Message message, in RawResult result)
{ {
SetResult(message, connection.BridgeCouldBeNull?.ServerEndPoint?.EndPoint); SetResult(message, connection.BridgeCouldBeNull?.ServerEndPoint?.EndPoint);
return true; return true;
...@@ -838,7 +838,7 @@ protected override bool SetResultCore(PhysicalConnection connection, Message mes ...@@ -838,7 +838,7 @@ protected override bool SetResultCore(PhysicalConnection connection, Message mes
private sealed class DateTimeProcessor : ResultProcessor<DateTime> private sealed class DateTimeProcessor : ResultProcessor<DateTime>
{ {
protected override bool SetResultCore(PhysicalConnection connection, Message message, RawResult result) protected override bool SetResultCore(PhysicalConnection connection, Message message, in RawResult result)
{ {
long unixTime; long unixTime;
switch (result.Type) switch (result.Type)
...@@ -880,7 +880,7 @@ protected override bool SetResultCore(PhysicalConnection connection, Message mes ...@@ -880,7 +880,7 @@ protected override bool SetResultCore(PhysicalConnection connection, Message mes
private sealed class DoubleProcessor : ResultProcessor<double> private sealed class DoubleProcessor : ResultProcessor<double>
{ {
protected override bool SetResultCore(PhysicalConnection connection, Message message, RawResult result) protected override bool SetResultCore(PhysicalConnection connection, Message message, in RawResult result)
{ {
switch (result.Type) switch (result.Type)
{ {
...@@ -916,7 +916,7 @@ public ExpectBasicStringProcessor(CommandBytes expected, bool startsWith = false ...@@ -916,7 +916,7 @@ public ExpectBasicStringProcessor(CommandBytes expected, bool startsWith = false
_startsWith = startsWith; _startsWith = startsWith;
} }
protected override bool SetResultCore(PhysicalConnection connection, Message message, RawResult result) protected override bool SetResultCore(PhysicalConnection connection, Message message, in RawResult result)
{ {
if (_startsWith ? result.StartsWith(_expected) : result.IsEqual(_expected)) if (_startsWith ? result.StartsWith(_expected) : result.IsEqual(_expected))
{ {
...@@ -930,7 +930,7 @@ protected override bool SetResultCore(PhysicalConnection connection, Message mes ...@@ -930,7 +930,7 @@ protected override bool SetResultCore(PhysicalConnection connection, Message mes
private sealed class InfoProcessor : ResultProcessor<IGrouping<string, KeyValuePair<string, string>>[]> private sealed class InfoProcessor : ResultProcessor<IGrouping<string, KeyValuePair<string, string>>[]>
{ {
protected override bool SetResultCore(PhysicalConnection connection, Message message, RawResult result) protected override bool SetResultCore(PhysicalConnection connection, Message message, in RawResult result)
{ {
if (result.Type == ResultType.BulkString) if (result.Type == ResultType.BulkString)
{ {
...@@ -969,7 +969,7 @@ private static string Normalize(string category) ...@@ -969,7 +969,7 @@ private static string Normalize(string category)
private class Int64Processor : ResultProcessor<long> private class Int64Processor : ResultProcessor<long>
{ {
protected override bool SetResultCore(PhysicalConnection connection, Message message, RawResult result) protected override bool SetResultCore(PhysicalConnection connection, Message message, in RawResult result)
{ {
switch (result.Type) switch (result.Type)
{ {
...@@ -990,7 +990,7 @@ protected override bool SetResultCore(PhysicalConnection connection, Message mes ...@@ -990,7 +990,7 @@ protected override bool SetResultCore(PhysicalConnection connection, Message mes
private class PubSubNumSubProcessor : Int64Processor private class PubSubNumSubProcessor : Int64Processor
{ {
protected override bool SetResultCore(PhysicalConnection connection, Message message, RawResult result) protected override bool SetResultCore(PhysicalConnection connection, Message message, in RawResult result)
{ {
if (result.Type == ResultType.MultiBulk) if (result.Type == ResultType.MultiBulk)
{ {
...@@ -1007,7 +1007,7 @@ protected override bool SetResultCore(PhysicalConnection connection, Message mes ...@@ -1007,7 +1007,7 @@ protected override bool SetResultCore(PhysicalConnection connection, Message mes
private sealed class NullableDoubleProcessor : ResultProcessor<double?> private sealed class NullableDoubleProcessor : ResultProcessor<double?>
{ {
protected override bool SetResultCore(PhysicalConnection connection, Message message, RawResult result) protected override bool SetResultCore(PhysicalConnection connection, Message message, in RawResult result)
{ {
switch (result.Type) switch (result.Type)
{ {
...@@ -1033,7 +1033,7 @@ protected override bool SetResultCore(PhysicalConnection connection, Message mes ...@@ -1033,7 +1033,7 @@ protected override bool SetResultCore(PhysicalConnection connection, Message mes
private sealed class NullableInt64Processor : ResultProcessor<long?> private sealed class NullableInt64Processor : ResultProcessor<long?>
{ {
protected override bool SetResultCore(PhysicalConnection connection, Message message, RawResult result) protected override bool SetResultCore(PhysicalConnection connection, Message message, in RawResult result)
{ {
switch (result.Type) switch (result.Type)
{ {
...@@ -1065,7 +1065,7 @@ public RedisChannelArrayProcessor(RedisChannel.PatternMode mode) ...@@ -1065,7 +1065,7 @@ public RedisChannelArrayProcessor(RedisChannel.PatternMode mode)
this.mode = mode; this.mode = mode;
} }
protected override bool SetResultCore(PhysicalConnection connection, Message message, RawResult result) protected override bool SetResultCore(PhysicalConnection connection, Message message, in RawResult result)
{ {
switch (result.Type) switch (result.Type)
{ {
...@@ -1094,7 +1094,7 @@ protected override bool SetResultCore(PhysicalConnection connection, Message mes ...@@ -1094,7 +1094,7 @@ protected override bool SetResultCore(PhysicalConnection connection, Message mes
private sealed class RedisKeyArrayProcessor : ResultProcessor<RedisKey[]> private sealed class RedisKeyArrayProcessor : ResultProcessor<RedisKey[]>
{ {
protected override bool SetResultCore(PhysicalConnection connection, Message message, RawResult result) protected override bool SetResultCore(PhysicalConnection connection, Message message, in RawResult result)
{ {
switch (result.Type) switch (result.Type)
{ {
...@@ -1109,7 +1109,7 @@ protected override bool SetResultCore(PhysicalConnection connection, Message mes ...@@ -1109,7 +1109,7 @@ protected override bool SetResultCore(PhysicalConnection connection, Message mes
private sealed class RedisKeyProcessor : ResultProcessor<RedisKey> private sealed class RedisKeyProcessor : ResultProcessor<RedisKey>
{ {
protected override bool SetResultCore(PhysicalConnection connection, Message message, RawResult result) protected override bool SetResultCore(PhysicalConnection connection, Message message, in RawResult result)
{ {
switch (result.Type) switch (result.Type)
{ {
...@@ -1125,7 +1125,7 @@ protected override bool SetResultCore(PhysicalConnection connection, Message mes ...@@ -1125,7 +1125,7 @@ protected override bool SetResultCore(PhysicalConnection connection, Message mes
private sealed class RedisTypeProcessor : ResultProcessor<RedisType> private sealed class RedisTypeProcessor : ResultProcessor<RedisType>
{ {
protected override bool SetResultCore(PhysicalConnection connection, Message message, RawResult result) protected override bool SetResultCore(PhysicalConnection connection, Message message, in RawResult result)
{ {
switch (result.Type) switch (result.Type)
{ {
...@@ -1144,7 +1144,7 @@ protected override bool SetResultCore(PhysicalConnection connection, Message mes ...@@ -1144,7 +1144,7 @@ protected override bool SetResultCore(PhysicalConnection connection, Message mes
private sealed class RedisValueArrayProcessor : ResultProcessor<RedisValue[]> private sealed class RedisValueArrayProcessor : ResultProcessor<RedisValue[]>
{ {
protected override bool SetResultCore(PhysicalConnection connection, Message message, RawResult result) protected override bool SetResultCore(PhysicalConnection connection, Message message, in RawResult result)
{ {
switch (result.Type) switch (result.Type)
{ {
...@@ -1164,7 +1164,7 @@ protected override bool SetResultCore(PhysicalConnection connection, Message mes ...@@ -1164,7 +1164,7 @@ protected override bool SetResultCore(PhysicalConnection connection, Message mes
private sealed class StringArrayProcessor : ResultProcessor<string[]> private sealed class StringArrayProcessor : ResultProcessor<string[]>
{ {
protected override bool SetResultCore(PhysicalConnection connection, Message message, RawResult result) protected override bool SetResultCore(PhysicalConnection connection, Message message, in RawResult result)
{ {
switch (result.Type) switch (result.Type)
{ {
...@@ -1180,7 +1180,7 @@ protected override bool SetResultCore(PhysicalConnection connection, Message mes ...@@ -1180,7 +1180,7 @@ protected override bool SetResultCore(PhysicalConnection connection, Message mes
private sealed class RedisValueGeoPositionProcessor : ResultProcessor<GeoPosition?> private sealed class RedisValueGeoPositionProcessor : ResultProcessor<GeoPosition?>
{ {
protected override bool SetResultCore(PhysicalConnection connection, Message message, RawResult result) protected override bool SetResultCore(PhysicalConnection connection, Message message, in RawResult result)
{ {
switch (result.Type) switch (result.Type)
{ {
...@@ -1196,7 +1196,7 @@ protected override bool SetResultCore(PhysicalConnection connection, Message mes ...@@ -1196,7 +1196,7 @@ protected override bool SetResultCore(PhysicalConnection connection, Message mes
private sealed class RedisValueGeoPositionArrayProcessor : ResultProcessor<GeoPosition?[]> private sealed class RedisValueGeoPositionArrayProcessor : ResultProcessor<GeoPosition?[]>
{ {
protected override bool SetResultCore(PhysicalConnection connection, Message message, RawResult result) protected override bool SetResultCore(PhysicalConnection connection, Message message, in RawResult result)
{ {
switch (result.Type) switch (result.Type)
{ {
...@@ -1233,7 +1233,7 @@ private GeoRadiusResultArrayProcessor(GeoRadiusOptions options) ...@@ -1233,7 +1233,7 @@ private GeoRadiusResultArrayProcessor(GeoRadiusOptions options)
this.options = options; this.options = options;
} }
protected override bool SetResultCore(PhysicalConnection connection, Message message, RawResult result) protected override bool SetResultCore(PhysicalConnection connection, Message message, in RawResult result)
{ {
switch (result.Type) switch (result.Type)
{ {
...@@ -1260,7 +1260,7 @@ protected override bool SetResultCore(PhysicalConnection connection, Message mes ...@@ -1260,7 +1260,7 @@ protected override bool SetResultCore(PhysicalConnection connection, Message mes
return false; return false;
} }
private static GeoRadiusResult Parse(GeoRadiusOptions options, RawResult item) private static GeoRadiusResult Parse(GeoRadiusOptions options, in RawResult item)
{ {
if (options == GeoRadiusOptions.None) if (options == GeoRadiusOptions.None)
{ {
...@@ -1296,7 +1296,7 @@ private static GeoRadiusResult Parse(GeoRadiusOptions options, RawResult item) ...@@ -1296,7 +1296,7 @@ private static GeoRadiusResult Parse(GeoRadiusOptions options, RawResult item)
private sealed class RedisValueProcessor : ResultProcessor<RedisValue> private sealed class RedisValueProcessor : ResultProcessor<RedisValue>
{ {
protected override bool SetResultCore(PhysicalConnection connection, Message message, RawResult result) protected override bool SetResultCore(PhysicalConnection connection, Message message, in RawResult result)
{ {
switch (result.Type) switch (result.Type)
{ {
...@@ -1312,7 +1312,7 @@ protected override bool SetResultCore(PhysicalConnection connection, Message mes ...@@ -1312,7 +1312,7 @@ protected override bool SetResultCore(PhysicalConnection connection, Message mes
private sealed class LeaseProcessor : ResultProcessor<Lease<byte>> private sealed class LeaseProcessor : ResultProcessor<Lease<byte>>
{ {
protected override bool SetResultCore(PhysicalConnection connection, Message message, RawResult result) protected override bool SetResultCore(PhysicalConnection connection, Message message, in RawResult result)
{ {
switch (result.Type) switch (result.Type)
{ {
...@@ -1328,7 +1328,7 @@ protected override bool SetResultCore(PhysicalConnection connection, Message mes ...@@ -1328,7 +1328,7 @@ protected override bool SetResultCore(PhysicalConnection connection, Message mes
private class ScriptResultProcessor : ResultProcessor<RedisResult> private class ScriptResultProcessor : ResultProcessor<RedisResult>
{ {
public override bool SetResult(PhysicalConnection connection, Message message, RawResult result) public override bool SetResult(PhysicalConnection connection, Message message, in RawResult result)
{ {
if (result.Type == ResultType.Error && result.StartsWith(CommonReplies.NOSCRIPT)) if (result.Type == ResultType.Error && result.StartsWith(CommonReplies.NOSCRIPT))
{ // scripts are not flushed individually, so assume the entire script cache is toast ("SCRIPT FLUSH") { // scripts are not flushed individually, so assume the entire script cache is toast ("SCRIPT FLUSH")
...@@ -1341,7 +1341,7 @@ public override bool SetResult(PhysicalConnection connection, Message message, R ...@@ -1341,7 +1341,7 @@ public override bool SetResult(PhysicalConnection connection, Message message, R
// note that top-level error messages still get handled by SetResult, but nested errors // note that top-level error messages still get handled by SetResult, but nested errors
// (is that a thing?) will be wrapped in the RedisResult // (is that a thing?) will be wrapped in the RedisResult
protected override bool SetResultCore(PhysicalConnection connection, Message message, RawResult result) protected override bool SetResultCore(PhysicalConnection connection, Message message, in RawResult result)
{ {
var value = Redis.RedisResult.TryCreate(connection, result); var value = Redis.RedisResult.TryCreate(connection, result);
if (value != null) if (value != null)
...@@ -1362,7 +1362,7 @@ public SingleStreamProcessor(bool skipStreamName = false) ...@@ -1362,7 +1362,7 @@ public SingleStreamProcessor(bool skipStreamName = false)
this.skipStreamName = skipStreamName; this.skipStreamName = skipStreamName;
} }
protected override bool SetResultCore(PhysicalConnection connection, Message message, RawResult result) protected override bool SetResultCore(PhysicalConnection connection, Message message, in RawResult result)
{ {
if (result.IsNull) if (result.IsNull)
{ {
...@@ -1445,7 +1445,7 @@ Multibulk array. ...@@ -1445,7 +1445,7 @@ Multibulk array.
4) "Austen" 4) "Austen"
*/ */
protected override bool SetResultCore(PhysicalConnection connection, Message message, RawResult result) protected override bool SetResultCore(PhysicalConnection connection, Message message, in RawResult result)
{ {
if (result.IsNull) if (result.IsNull)
{ {
...@@ -1488,7 +1488,7 @@ private static T[] ConvertAll<T>(ReadOnlySpan<RawResult> items, Func<RawResult, ...@@ -1488,7 +1488,7 @@ private static T[] ConvertAll<T>(ReadOnlySpan<RawResult> items, Func<RawResult,
} }
internal sealed class StreamConsumerInfoProcessor : InterleavedStreamInfoProcessorBase<StreamConsumerInfo> internal sealed class StreamConsumerInfoProcessor : InterleavedStreamInfoProcessorBase<StreamConsumerInfo>
{ {
protected override StreamConsumerInfo ParseItem(RawResult result) protected override StreamConsumerInfo ParseItem(in RawResult result)
{ {
// Note: the base class passes a single consumer from the response into this method. // Note: the base class passes a single consumer from the response into this method.
...@@ -1517,7 +1517,7 @@ protected override StreamConsumerInfo ParseItem(RawResult result) ...@@ -1517,7 +1517,7 @@ protected override StreamConsumerInfo ParseItem(RawResult result)
internal sealed class StreamGroupInfoProcessor : InterleavedStreamInfoProcessorBase<StreamGroupInfo> internal sealed class StreamGroupInfoProcessor : InterleavedStreamInfoProcessorBase<StreamGroupInfo>
{ {
protected override StreamGroupInfo ParseItem(RawResult result) protected override StreamGroupInfo ParseItem(in RawResult result)
{ {
// Note: the base class passes a single item from the response into this method. // Note: the base class passes a single item from the response into this method.
...@@ -1546,9 +1546,9 @@ protected override StreamGroupInfo ParseItem(RawResult result) ...@@ -1546,9 +1546,9 @@ protected override StreamGroupInfo ParseItem(RawResult result)
internal abstract class InterleavedStreamInfoProcessorBase<T> : ResultProcessor<T[]> internal abstract class InterleavedStreamInfoProcessorBase<T> : ResultProcessor<T[]>
{ {
protected abstract T ParseItem(RawResult result); protected abstract T ParseItem(in RawResult result);
protected override bool SetResultCore(PhysicalConnection connection, Message message, RawResult result) protected override bool SetResultCore(PhysicalConnection connection, Message message, in RawResult result)
{ {
if (result.Type != ResultType.MultiBulk) if (result.Type != ResultType.MultiBulk)
{ {
...@@ -1585,7 +1585,7 @@ internal sealed class StreamInfoProcessor : StreamProcessorBase<StreamInfo> ...@@ -1585,7 +1585,7 @@ internal sealed class StreamInfoProcessor : StreamProcessorBase<StreamInfo>
// 12) 1) 1526569544280-0 // 12) 1) 1526569544280-0
// 2) 1) "message" // 2) 1) "message"
// 2) "banana" // 2) "banana"
protected override bool SetResultCore(PhysicalConnection connection, Message message, RawResult result) protected override bool SetResultCore(PhysicalConnection connection, Message message, in RawResult result)
{ {
if (result.Type != ResultType.MultiBulk) if (result.Type != ResultType.MultiBulk)
{ {
...@@ -1650,7 +1650,7 @@ protected override bool SetResultCore(PhysicalConnection connection, Message mes ...@@ -1650,7 +1650,7 @@ protected override bool SetResultCore(PhysicalConnection connection, Message mes
internal sealed class StreamPendingInfoProcessor : ResultProcessor<StreamPendingInfo> internal sealed class StreamPendingInfoProcessor : ResultProcessor<StreamPendingInfo>
{ {
protected override bool SetResultCore(PhysicalConnection connection, Message message, RawResult result) protected override bool SetResultCore(PhysicalConnection connection, Message message, in RawResult result)
{ {
// Example: // Example:
// > XPENDING mystream mygroup // > XPENDING mystream mygroup
...@@ -1704,7 +1704,7 @@ protected override bool SetResultCore(PhysicalConnection connection, Message mes ...@@ -1704,7 +1704,7 @@ protected override bool SetResultCore(PhysicalConnection connection, Message mes
internal sealed class StreamPendingMessagesProcessor : ResultProcessor<StreamPendingMessageInfo[]> internal sealed class StreamPendingMessagesProcessor : ResultProcessor<StreamPendingMessageInfo[]>
{ {
protected override bool SetResultCore(PhysicalConnection connection, Message message, RawResult result) protected override bool SetResultCore(PhysicalConnection connection, Message message, in RawResult result)
{ {
if (result.Type != ResultType.MultiBulk) if (result.Type != ResultType.MultiBulk)
{ {
...@@ -1732,7 +1732,7 @@ internal abstract class StreamProcessorBase<T> : ResultProcessor<T> ...@@ -1732,7 +1732,7 @@ internal abstract class StreamProcessorBase<T> : ResultProcessor<T>
{ {
// For command response formats see https://redis.io/topics/streams-intro. // For command response formats see https://redis.io/topics/streams-intro.
protected StreamEntry ParseRedisStreamEntry(RawResult item) protected StreamEntry ParseRedisStreamEntry(in RawResult item)
{ {
if (item.IsNull || item.Type != ResultType.MultiBulk) if (item.IsNull || item.Type != ResultType.MultiBulk)
{ {
...@@ -1746,7 +1746,7 @@ protected StreamEntry ParseRedisStreamEntry(RawResult item) ...@@ -1746,7 +1746,7 @@ protected StreamEntry ParseRedisStreamEntry(RawResult item)
return new StreamEntry(id: entryDetails[0].AsRedisValue(), return new StreamEntry(id: entryDetails[0].AsRedisValue(),
values: ParseStreamEntryValues(entryDetails[1])); values: ParseStreamEntryValues(entryDetails[1]));
} }
protected StreamEntry[] ParseRedisStreamEntries(RawResult result) protected StreamEntry[] ParseRedisStreamEntries(in RawResult result)
{ {
if (result.Type != ResultType.MultiBulk) if (result.Type != ResultType.MultiBulk)
{ {
...@@ -1758,7 +1758,7 @@ protected StreamEntry[] ParseRedisStreamEntries(RawResult result) ...@@ -1758,7 +1758,7 @@ protected StreamEntry[] ParseRedisStreamEntries(RawResult result)
return ConvertAll(arr, item => ParseRedisStreamEntry(item)); return ConvertAll(arr, item => ParseRedisStreamEntry(item));
} }
protected NameValueEntry[] ParseStreamEntryValues(RawResult result) protected NameValueEntry[] ParseStreamEntryValues(in RawResult result)
{ {
// The XRANGE, XREVRANGE, XREAD commands return stream entries // The XRANGE, XREVRANGE, XREAD commands return stream entries
// in the following format. The name/value pairs are interleaved // in the following format. The name/value pairs are interleaved
...@@ -1802,7 +1802,7 @@ protected NameValueEntry[] ParseStreamEntryValues(RawResult result) ...@@ -1802,7 +1802,7 @@ protected NameValueEntry[] ParseStreamEntryValues(RawResult result)
private sealed class StringPairInterleavedProcessor : ValuePairInterleavedProcessorBase<KeyValuePair<string, string>> private sealed class StringPairInterleavedProcessor : ValuePairInterleavedProcessorBase<KeyValuePair<string, string>>
{ {
protected override KeyValuePair<string, string> Parse(RawResult first, RawResult second) protected override KeyValuePair<string, string> Parse(in RawResult first, in RawResult second)
{ {
return new KeyValuePair<string, string>(first.GetString(), second.GetString()); return new KeyValuePair<string, string>(first.GetString(), second.GetString());
} }
...@@ -1810,7 +1810,7 @@ private sealed class StringPairInterleavedProcessor : ValuePairInterleavedProces ...@@ -1810,7 +1810,7 @@ private sealed class StringPairInterleavedProcessor : ValuePairInterleavedProces
private sealed class StringProcessor : ResultProcessor<string> private sealed class StringProcessor : ResultProcessor<string>
{ {
protected override bool SetResultCore(PhysicalConnection connection, Message message, RawResult result) protected override bool SetResultCore(PhysicalConnection connection, Message message, in RawResult result)
{ {
switch (result.Type) switch (result.Type)
{ {
...@@ -1841,7 +1841,7 @@ public TracerProcessor(bool establishConnection) ...@@ -1841,7 +1841,7 @@ public TracerProcessor(bool establishConnection)
this.establishConnection = establishConnection; this.establishConnection = establishConnection;
} }
public override bool SetResult(PhysicalConnection connection, Message message, RawResult result) public override bool SetResult(PhysicalConnection connection, Message message, in RawResult result)
{ {
connection?.BridgeCouldBeNull?.Multiplexer.OnInfoMessage($"got '{result}' for '{message.CommandAndKey}' on '{connection}'"); connection?.BridgeCouldBeNull?.Multiplexer.OnInfoMessage($"got '{result}' for '{message.CommandAndKey}' on '{connection}'");
var final = base.SetResult(connection, message, result); var final = base.SetResult(connection, message, result);
...@@ -1863,7 +1863,7 @@ public override bool SetResult(PhysicalConnection connection, Message message, R ...@@ -1863,7 +1863,7 @@ public override bool SetResult(PhysicalConnection connection, Message message, R
return final; return final;
} }
protected override bool SetResultCore(PhysicalConnection connection, Message message, RawResult result) protected override bool SetResultCore(PhysicalConnection connection, Message message, in RawResult result)
{ {
bool happy; bool happy;
switch (message.Command) switch (message.Command)
...@@ -1924,7 +1924,7 @@ protected override bool SetResultCore(PhysicalConnection connection, Message mes ...@@ -1924,7 +1924,7 @@ protected override bool SetResultCore(PhysicalConnection connection, Message mes
private sealed class SentinelGetMasterAddressByNameProcessor : ResultProcessor<EndPoint> private sealed class SentinelGetMasterAddressByNameProcessor : ResultProcessor<EndPoint>
{ {
protected override bool SetResultCore(PhysicalConnection connection, Message message, RawResult result) protected override bool SetResultCore(PhysicalConnection connection, Message message, in RawResult result)
{ {
// To repro timeout fail: // To repro timeout fail:
// if (result.Type == ResultType.MultiBulk) throw new Exception("Woops"); // if (result.Type == ResultType.MultiBulk) throw new Exception("Woops");
...@@ -1960,7 +1960,7 @@ protected override bool SetResultCore(PhysicalConnection connection, Message mes ...@@ -1960,7 +1960,7 @@ protected override bool SetResultCore(PhysicalConnection connection, Message mes
private sealed class SentinelArrayOfArraysProcessor : ResultProcessor<KeyValuePair<string, string>[][]> private sealed class SentinelArrayOfArraysProcessor : ResultProcessor<KeyValuePair<string, string>[][]>
{ {
protected override bool SetResultCore(PhysicalConnection connection, Message message, RawResult result) protected override bool SetResultCore(PhysicalConnection connection, Message message, in RawResult result)
{ {
if (!(StringPairInterleaved is StringPairInterleavedProcessor innerProcessor)) if (!(StringPairInterleaved is StringPairInterleavedProcessor innerProcessor))
{ {
......
...@@ -28,7 +28,7 @@ public string GetString(int index) ...@@ -28,7 +28,7 @@ public string GetString(int index)
=> string.Equals(value, _inner[index].GetString(), StringComparison.OrdinalIgnoreCase); => string.Equals(value, _inner[index].GetString(), StringComparison.OrdinalIgnoreCase);
public override int GetHashCode() => throw new NotSupportedException(); public override int GetHashCode() => throw new NotSupportedException();
internal RedisRequest(RawResult result) internal RedisRequest(in RawResult result)
{ {
_inner = result; _inner = result;
Count = result.ItemsCount; Count = result.ItemsCount;
......
...@@ -468,7 +468,7 @@ public TypedRedisValue Execute(RedisClient client, RedisRequest request) ...@@ -468,7 +468,7 @@ public TypedRedisValue Execute(RedisClient client, RedisRequest request)
} }
} }
internal static string ToLower(RawResult value) internal static string ToLower(in RawResult value)
{ {
var val = value.GetString(); var val = value.GetString();
if (string.IsNullOrWhiteSpace(val)) return val; if (string.IsNullOrWhiteSpace(val)) return val;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment