Exemple #1
0
 /// <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;
 }
Exemple #2
0
 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);
 }
Exemple #9
0
 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);
 }
Exemple #10
0
 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);
 }
Exemple #11
0
 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);
 }
Exemple #12
0
 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);
 }
Exemple #13
0
 public override bool NeedCopyUpdate(ref KeyStruct key, ref InputStruct input, ref ValueStruct oldValue, ref OutputStruct output, ref RMWInfo rmwInfo) => true;
Exemple #14
0
 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);
 }
Exemple #15
0
 // 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);
 }
Exemple #18
0
 /// <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);
 }
Exemple #20
0
 /// <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);
 }
Exemple #21
0
 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);
 }
Exemple #22
0
 // 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);
        }