/// <summary> /// Utility ctor /// </summary> public UpsertInfo(ref RMWInfo rmwInfo) { this.SessionType = rmwInfo.SessionType; this.Version = rmwInfo.Version; this.Address = rmwInfo.Address; this.RecordInfo = default; this.Action = UpsertAction.Default; }
public override bool InPlaceUpdater(ref KeyStruct key, ref InputStruct input, ref ValueStruct value, ref OutputStruct output, ref RMWInfo rmwInfo) { Interlocked.Increment(ref _inPlaceUpdaterCallCount); return(false); }
public override bool NeedCopyUpdate(ref AdId key, ref AdInput input, ref NumClicks oldValue, ref Output output, ref RMWInfo rmwInfo) => true;
// RMW functions public override bool InitialUpdater(ref AdId key, ref AdInput input, ref NumClicks value, ref Output output, ref RMWInfo rmwInfo) { value = input.numClicks; return(true); }
public override bool CopyUpdater(ref MyKey key, ref MyInput input, ref MyValue oldValue, ref MyValue newValue, ref MyOutput output, ref RMWInfo rmwInfo) { newValue = oldValue; return(true); }
public override bool InitialUpdater(ref MyKey key, ref MyInput input, ref MyValue value, ref MyOutput output, ref RMWInfo rmwInfo) { value.value = input.value; return(true); }
public override bool InPlaceUpdater(ref int key, ref MyInput input, ref MyValue value, ref MyOutput output, ref RMWInfo rmwInfo) { value.value += input.value; 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 override bool CopyUpdater(ref KeyStruct key, ref InputStruct input, ref ValueStruct oldValue, ref ValueStruct newValue, ref OutputStruct output, ref RMWInfo rmwInfo) { Assert.IsFalse(rmwInfo.RecordInfo.IsNull()); newValue.vfield1 = oldValue.vfield1 + input.ifield1; newValue.vfield2 = oldValue.vfield2 + input.ifield2; return(true); }
public override bool NeedCopyUpdate(ref KeyStruct key, ref InputStruct input, ref ValueStruct oldValue, ref OutputStruct output, ref RMWInfo rmwInfo) { Assert.IsFalse(rmwInfo.RecordInfo.IsNull()); return(true); }
public override bool InPlaceUpdater(ref KeyStruct key, ref InputStruct input, ref ValueStruct value, ref OutputStruct output, ref RMWInfo rmwInfo) { Assert.IsFalse(rmwInfo.RecordInfo.IsNull()); Interlocked.Increment(ref _inPlaceUpdaterCallCount); return(false); }
public override bool CopyUpdater(ref KeyStruct key, ref InputStruct input, ref ValueStruct oldValue, ref ValueStruct newValue, ref OutputStruct output, ref RMWInfo rmwInfo) { newValue.vfield1 = oldValue.vfield1 + input.ifield1; newValue.vfield2 = oldValue.vfield2 + input.ifield2; return(true); }
public override bool NeedCopyUpdate(ref KeyStruct key, ref InputStruct input, ref ValueStruct oldValue, ref OutputStruct output, ref RMWInfo rmwInfo) => true;
public override bool InPlaceUpdater(ref KeyStruct key, ref InputStruct input, ref ValueStruct value, ref OutputStruct output, ref RMWInfo rmwInfo) { value.vfield1 += input.ifield1; value.vfield2 += input.ifield2; return(true); }
// RMW functions public override bool InitialUpdater(ref KeyStruct key, ref InputStruct input, ref ValueStruct value, ref OutputStruct output, ref RMWInfo rmwInfo) { value.vfield1 = input.ifield1; value.vfield2 = input.ifield2; output.value = value; return(true); }
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); }
/// <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); }
/// <inheritdoc/> public override bool CopyUpdater(ref Key key, ref Value input, ref Value oldValue, ref Value newValue, ref Value output, ref RMWInfo rmwInfo) { base.CopyUpdater(ref key, ref input, ref oldValue, ref newValue, ref output, ref rmwInfo); output = newValue; 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); }
/// <inheritdoc/> public override bool InPlaceUpdater(ref Key key, ref Value input, ref Value value, ref Value output, ref RMWInfo rmwInfo) { base.InPlaceUpdater(ref key, ref input, ref value, ref output, ref rmwInfo); output = value; return(true); }
public override bool CopyUpdater(ref int key, ref MyInput input, ref MyValue oldValue, ref MyValue newValue, ref MyOutput output, ref RMWInfo rmwInfo) { newValue = new MyValue { value = oldValue.value + input.value }; return(true); }
// RMW functions public override bool InitialUpdater(ref KeyStruct key, ref InputStruct input, ref ValueStruct value, ref OutputStruct output, ref RMWInfo rmwInfo) { Assert.IsFalse(rmwInfo.RecordInfo.IsNull()); value.vfield1 = input.ifield1; value.vfield2 = input.ifield2; output.value = value; return(true); }
public override bool NeedCopyUpdate(ref MyKey key, ref MyInput input, ref MyValue oldValue, ref MyOutput output, ref RMWInfo rmwInfo) => true;
public override bool InPlaceUpdater(ref int key, ref long input, ref RefCountedValue value, ref Empty output, ref RMWInfo rmwInfo) { Interlocked.Increment(ref InPlaceCount); value.Value = input; value.ReferenceCount++; return(true); }
public override bool InPlaceUpdater(ref MyKey key, ref MyInput input, ref MyValue value, ref MyOutput output, ref RMWInfo rmwInfo) { if (value.value.Length < input.value.Length) { return(false); } value.value = input.value; return(true); }
public override bool InitialUpdater(ref int key, ref Empty input, ref RefCountedValue value, ref Empty output, ref RMWInfo rmwInfo) { Interlocked.Increment(ref InitialCount); value.Value = 0; value.ReferenceCount = 0; return(true); }
public override bool InPlaceUpdater(ref AdId key, ref AdInput input, ref NumClicks value, ref Output output, ref RMWInfo rmwInfo) { Interlocked.Add(ref value.numClicks, input.numClicks.numClicks); return(true); }
public override bool InPlaceUpdater(ref int key, ref Empty input, ref RefCountedValue value, ref Empty output, ref RMWInfo rmwInfo) { Interlocked.Increment(ref InPlaceCount); if (value.ReferenceCount > 0) { value.ReferenceCount--; } return(true); }
public override bool CopyUpdater(ref AdId key, ref AdInput input, ref NumClicks oldValue, ref NumClicks newValue, ref Output output, ref RMWInfo rmwInfo) { newValue.numClicks += oldValue.numClicks + input.numClicks.numClicks; return(true); }
public override bool CopyUpdater(ref int key, ref Empty input, ref RefCountedValue oldValue, ref RefCountedValue newValue, ref Empty output, ref RMWInfo rmwInfo) { Interlocked.Increment(ref CopyCount); newValue.ReferenceCount = oldValue.ReferenceCount; if (newValue.ReferenceCount > 0) { newValue.ReferenceCount--; } newValue.Value = oldValue.Value; return(true); }