public override bool NeedCopyUpdate(ref int key, ref int input, ref int oldValue, ref int output, ref RMWInfo rmwInfo) { lastFunc = CancelLocation.NeedCopyUpdate; if (cancelLocation == CancelLocation.NeedCopyUpdate) { rmwInfo.Action = RMWAction.CancelOperation; return(false); } return(true); }
// Upsert functions public override bool SingleWriter(ref int key, ref int input, ref int src, ref int dst, ref int output, ref UpsertInfo upsertInfo, WriteReason reason) { lastFunc = CancelLocation.SingleWriter; if (cancelLocation == CancelLocation.SingleWriter) { upsertInfo.Action = UpsertAction.CancelOperation; return(false); } dst = src; return(true); }
public override bool InPlaceUpdater(ref int key, ref int input, ref int value, ref int output, ref RMWInfo rmwInfo) { lastFunc = CancelLocation.InPlaceUpdater; if (cancelLocation == CancelLocation.InPlaceUpdater) { rmwInfo.Action = RMWAction.CancelOperation; return(false); } value = input; return(true); }
public override bool ConcurrentWriter(ref int key, ref int input, ref int src, ref int dst, ref int output, ref UpsertInfo upsertInfo) { lastFunc = CancelLocation.ConcurrentWriter; if (cancelLocation == CancelLocation.ConcurrentWriter) { upsertInfo.Action = UpsertAction.CancelOperation; return(false); } dst = src; return(true); }
/// <inheritdoc/> public override bool CopyUpdater(ref int key, ref int input, ref int oldValue, ref int newValue, ref int output, ref RMWInfo rmwInfo) { lastFunc = CancelLocation.CopyUpdater; Assert.AreNotEqual(CancelLocation.NeedCopyUpdate, cancelLocation); if (cancelLocation == CancelLocation.CopyUpdater) { rmwInfo.Action = RMWAction.CancelOperation; return(false); } newValue = oldValue; return(true); }
public override bool InitialUpdater(ref int key, ref int input, ref int value, ref int output, ref RMWInfo rmwInfo) { lastFunc = CancelLocation.InitialUpdater; Assert.AreNotEqual(CancelLocation.NeedInitialUpdate, cancelLocation); Assert.AreNotEqual(CancelLocation.InPlaceUpdater, cancelLocation); if (cancelLocation == CancelLocation.InitialUpdater) { rmwInfo.Action = RMWAction.CancelOperation; return(false); } value = input; return(true); }
public Cancel(string value, CancelLocation location) { this.Value = value; this.Location = location; this.LocationSpecified = true; }