public static void InPlaceUpdater(KeyStruct *key, InputStruct *input, ValueStruct *value) { ValueStruct.AcquireWriteLock(value); value->vfield1 += input->ifield1; value->vfield2 += input->ifield2; ValueStruct.ReleaseWriteLock(value); }
public static void CopyUpdater(KeyStruct *key, InputStruct *input, ValueStruct *oldValue, ValueStruct *newValue) { newValue->vfield1 = oldValue->vfield1 + input->ifield1; newValue->vfield2 = oldValue->vfield2 + input->ifield2; }
public static void InitialUpdater(KeyStruct *key, InputStruct *input, ValueStruct *value) { ValueStruct.Copy((ValueStruct *)input, value); }
public static int InitialValueLength(KeyStruct *key, InputStruct *input) { return(ValueStruct.GetLength(default(ValueStruct *))); }
public static void ConcurrentReader(KeyStruct *key, InputStruct *input, ValueStruct *value, OutputStruct *dst) { ValueStruct.AcquireReadLock(value); ValueStruct.Copy(value, (ValueStruct *)dst); ValueStruct.ReleaseReadLock(value); }
public static void SingleReader(KeyStruct *key, InputStruct *input, ValueStruct *value, OutputStruct *dst) { ValueStruct.Copy(value, (ValueStruct *)dst); }
public static void ReadCompletionCallback(KeyStruct *key, InputStruct *input, OutputStruct *output, Empty *ctx, Status status) { }
public static InputStruct *MoveToContext(InputStruct *input) { return(input); }