Exemple #1
0
            /// <inheritdoc/>
            public Status DoFastOperation(FasterKV <Key, Value> fasterKV, ref PendingContext <Input, Output, Context> pendingContext, IFasterSession <Key, Value, Input, Output, Context> fasterSession,
                                          FasterExecutionContext <Input, Output, Context> currentCtx, bool asyncOp, out CompletionEvent flushEvent, out Output output)
            {
                output     = default;
                flushEvent = fasterKV.hlog.FlushEvent;
                Status status = !this.diskRequest.IsDefault()
                    ? fasterKV.InternalCompletePendingRequestFromContext(currentCtx, currentCtx, fasterSession, this.diskRequest, ref pendingContext, asyncOp, out AsyncIOContext <Key, Value> newDiskRequest)
                    : fasterKV.CallInternalRMW(fasterSession, currentCtx, ref pendingContext, ref pendingContext.key.Get(), ref pendingContext.input.Get(), pendingContext.userContext,
                                               pendingContext.serialNum, asyncOp, out flushEvent, out newDiskRequest);

                if (status == Status.PENDING && !newDiskRequest.IsDefault())
                {
                    flushEvent       = default;
                    this.diskRequest = newDiskRequest;
                }
                return(status);
            }