Skip to content

Commit 3467f6f

Browse files
committed
Use static local function but capture 'this'.
1 parent 5dc007d commit 3467f6f

File tree

1 file changed

+19
-19
lines changed

1 file changed

+19
-19
lines changed

src/MySqlConnector/Core/ResultSet.cs

Lines changed: 19 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -219,11 +219,11 @@ private ValueTask<Row> ScanRowAsync(IOBehavior ioBehavior, Row row, Cancellation
219219
{
220220
var payloadValueTask = Session.ReceiveReplyAsync(ioBehavior, CancellationToken.None);
221221
return payloadValueTask.IsCompletedSuccessfully
222-
? new ValueTask<Row>(ScanRowAsyncRemainder(payloadValueTask.Result, row))
223-
: new ValueTask<Row>(ScanRowAsyncAwaited(payloadValueTask.AsTask(), row, cancellationToken));
222+
? new ValueTask<Row>(ScanRowAsyncRemainder(this, payloadValueTask.Result, row))
223+
: new ValueTask<Row>(ScanRowAsyncAwaited(this, payloadValueTask.AsTask(), row, cancellationToken));
224224
}
225225

226-
async Task<Row> ScanRowAsyncAwaited(Task<PayloadData> payloadTask, Row row_, CancellationToken token)
226+
static async Task<Row> ScanRowAsyncAwaited(ResultSet this_, Task<PayloadData> payloadTask, Row row_, CancellationToken token)
227227
{
228228
PayloadData payloadData;
229229
try
@@ -232,39 +232,39 @@ async Task<Row> ScanRowAsyncAwaited(Task<PayloadData> payloadTask, Row row_, Can
232232
}
233233
catch (MySqlException ex)
234234
{
235-
BufferState = State = ResultSetState.NoMoreData;
235+
this_.BufferState = this_.State = ResultSetState.NoMoreData;
236236
if (ex.Number == (int) MySqlErrorCode.QueryInterrupted)
237237
token.ThrowIfCancellationRequested();
238238
throw;
239239
}
240-
return ScanRowAsyncRemainder(payloadData, row_);
240+
return ScanRowAsyncRemainder(this_, payloadData, row_);
241241
}
242242

243-
Row ScanRowAsyncRemainder(PayloadData payload, Row row_)
243+
static Row ScanRowAsyncRemainder(ResultSet this_, PayloadData payload, Row row_)
244244
{
245245
if (payload.HeaderByte == EofPayload.Signature)
246246
{
247247
var span = payload.AsSpan();
248-
if (Session.SupportsDeprecateEof && OkPayload.IsOk(span, Session.SupportsDeprecateEof))
248+
if (this_.Session.SupportsDeprecateEof && OkPayload.IsOk(span, this_.Session.SupportsDeprecateEof))
249249
{
250-
var ok = OkPayload.Create(span, Session.SupportsDeprecateEof, Session.SupportsSessionTrack);
251-
BufferState = (ok.ServerStatus & ServerStatus.MoreResultsExist) == 0 ? ResultSetState.NoMoreData : ResultSetState.HasMoreData;
252-
m_rowBuffered = null;
250+
var ok = OkPayload.Create(span, this_.Session.SupportsDeprecateEof, this_.Session.SupportsSessionTrack);
251+
this_.BufferState = (ok.ServerStatus & ServerStatus.MoreResultsExist) == 0 ? ResultSetState.NoMoreData : ResultSetState.HasMoreData;
252+
this_.m_rowBuffered = null;
253253
return null;
254254
}
255-
if (!Session.SupportsDeprecateEof && EofPayload.IsEof(payload))
255+
if (!this_.Session.SupportsDeprecateEof && EofPayload.IsEof(payload))
256256
{
257257
var eof = EofPayload.Create(span);
258-
BufferState = (eof.ServerStatus & ServerStatus.MoreResultsExist) == 0 ? ResultSetState.NoMoreData : ResultSetState.HasMoreData;
259-
m_rowBuffered = null;
258+
this_.BufferState = (eof.ServerStatus & ServerStatus.MoreResultsExist) == 0 ? ResultSetState.NoMoreData : ResultSetState.HasMoreData;
259+
this_.m_rowBuffered = null;
260260
return null;
261261
}
262262
}
263263

264264
if (row_ is null)
265265
{
266266
bool isBinaryRow = false;
267-
if (payload.HeaderByte == 0 && !Connection.IgnorePrepare)
267+
if (payload.HeaderByte == 0 && !this_.Connection.IgnorePrepare)
268268
{
269269
// this might be a binary row, but it might also be a text row whose first column is zero bytes long; try reading
270270
// the row as a series of length-encoded values (the text format) to see if this might plausibly be a text row
@@ -317,7 +317,7 @@ Row ScanRowAsyncRemainder(PayloadData payload, Row row_)
317317
reader.Offset += length;
318318
columnCount++;
319319

320-
if (columnCount == ColumnDefinitions.Length)
320+
if (columnCount == this_.ColumnDefinitions.Length)
321321
{
322322
// if we used up all the bytes reading exactly 'ColumnDefinitions' length-encoded columns, then assume this is a text row
323323
if (reader.BytesRemaining == 0)
@@ -328,12 +328,12 @@ Row ScanRowAsyncRemainder(PayloadData payload, Row row_)
328328

329329
isBinaryRow = !isTextRow;
330330
}
331-
row_ = isBinaryRow ? (Row) new BinaryRow(this) : new TextRow(this);
331+
row_ = isBinaryRow ? (Row) new BinaryRow(this_) : new TextRow(this_);
332332
}
333333
row_.SetData(payload.ArraySegment);
334-
m_rowBuffered = row_;
335-
m_hasRows = true;
336-
BufferState = ResultSetState.ReadingRows;
334+
this_.m_rowBuffered = row_;
335+
this_.m_hasRows = true;
336+
this_.BufferState = ResultSetState.ReadingRows;
337337
return row_;
338338
}
339339
}

0 commit comments

Comments
 (0)