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 ConcurrentWriter(KeyStruct *key, ValueStruct *src, ValueStruct *dst) { ValueStruct.AcquireWriteLock(dst); ValueStruct.Copy(src, dst); ValueStruct.ReleaseWriteLock(dst); }
public static void InitialUpdater(KeyStruct *key, InputStruct *input, ValueStruct *value) { ValueStruct.Copy((ValueStruct *)input, value); }
public static void Free(ValueStruct *key) { throw new NotImplementedException(); }
public static void SingleWriter(KeyStruct *key, ValueStruct *src, ValueStruct *dst) { ValueStruct.Copy(src, dst); }
public static void UpsertCompletionCallback(KeyStruct *key, ValueStruct *output, Empty *ctx) { }
// Shared read/write capabilities on value public static void AcquireReadLock(ValueStruct *value) { }
public static void Free(ValueStruct *key) { throw new InvalidOperationException(); }
public static ValueStruct *MoveToContext(ValueStruct *value) { return(value); }
public static void Deserialize(ValueStruct *key, Stream fromStream) { throw new InvalidOperationException(); }
public static void ReleaseWriteLock(ValueStruct *value) { }
public static void AcquireWriteLock(ValueStruct *value) { }
public static int GetLength(ValueStruct *input) { return(physicalSize); }
public static void SingleReader(KeyStruct *key, InputStruct *input, ValueStruct *value, OutputStruct *dst) { ValueStruct.Copy(value, (ValueStruct *)dst); }
public static void Copy(ValueStruct *src, ValueStruct *dst) { dst->vfield1 = src->vfield1; dst->vfield2 = src->vfield2; }
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 ReleaseReadLock(ValueStruct *value) { }
public static void Deserialize(ValueStruct *key, Stream fromStream) { throw new NotImplementedException(); }