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)
......
This diff is collapsed.
...@@ -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