示例#1
0
 public static void InitialUpdater(MixedKeyWrapper *key, MixedInputWrapper *input, MixedValueWrapper *value)
 {
     userFunctions.InitialUpdater(
         UserType.Convert(key),
         UserType.Convert(input),
         ref UserType.Convert(value));
 }
示例#2
0
 public static void SingleReader(MixedKeyWrapper *key, MixedInputWrapper *input, MixedValueWrapper *value, MixedOutputWrapper *dst)
 {
     userFunctions.Reader(
         UserType.Convert(key),
         UserType.Convert(input),
         UserType.Convert(value),
         ref UserType.Convert(dst));
 }
示例#3
0
        public static void FreeFromContext(MixedInputWrapper *i)
        {
#if BLIT_INPUT
            MallocFixedPageSize <MixedInputWrapper> .PhysicalInstance.FreeAtEpoch((long)i);
#else
            ((BlittableTypeWrapper *)&i)->Free <MixedInput>();
#endif
        }
示例#4
0
        public static MixedInputWrapper *MoveToContext(MixedInputWrapper *input)
        {
            var addr = (MixedInputWrapper *)
                       MallocFixedPageSize <MixedInputWrapper> .PhysicalInstance.Allocate();

            Copy(input, addr);
            return(addr);
        }
示例#5
0
 public static void CopyUpdater(MixedKeyWrapper *key, MixedInputWrapper *input, MixedValueWrapper *oldValue, MixedValueWrapper *newValue)
 {
     userFunctions.CopyUpdater(
         UserType.Convert(key),
         UserType.Convert(input),
         UserType.Convert(oldValue),
         ref UserType.Convert(newValue));
 }
示例#6
0
        public static void RMWCompletionCallback(MixedKeyWrapper *key, MixedInputWrapper *input, MixedContextWrapper *ctx, Status status)
        {
            userFunctions.RMWCompletionCallback(
                UserType.Convert(ctx), status);

            UserType.FreeFromContext(key);
            UserType.FreeFromContext(input);
            UserType.FreeFromContext(ctx);
        }
示例#7
0
        public static ref MixedInput Convert(MixedInputWrapper *i)
        {
#if BLIT_INPUT && !GENERIC_BLIT_INPUT
            return(ref i->input);
#elif BLIT_INPUT && GENERIC_BLIT_INPUT
            return(ref Unsafe.AsRef <MixedInput>(i));
#else
            return(ref ((BlittableTypeWrapper *)&i)->GetObject <MixedInput>());
#endif
        }
示例#8
0
        public static void InPlaceUpdater(MixedKeyWrapper *key, MixedInputWrapper *input, MixedValueWrapper *value)
        {
            MixedValueWrapper.AcquireWriteLock(value);

            userFunctions.InPlaceUpdater(
                UserType.Convert(key),
                UserType.Convert(input),
                ref UserType.Convert(value));

            MixedValueWrapper.ReleaseWriteLock(value);
        }
示例#9
0
        public static void ConcurrentReader(MixedKeyWrapper *key, MixedInputWrapper *input, MixedValueWrapper *value, MixedOutputWrapper *dst)
        {
            MixedValueWrapper.AcquireReadLock(value);

            userFunctions.Reader(
                UserType.Convert(key),
                UserType.Convert(input),
                UserType.Convert(value),
                ref UserType.Convert(dst));

            MixedValueWrapper.ReleaseReadLock(value);
        }
示例#10
0
 public static int InitialValueLength(MixedKeyWrapper *key, MixedInputWrapper *input)
 {
     return(MixedValueWrapper.GetLength(null));
 }
示例#11
0
 public static void Copy(MixedInputWrapper *src, MixedInputWrapper *dst)
 {
     dst->input = src->input;
 }
示例#12
0
 public static int GetLength(MixedInputWrapper *input)
 {
     return(sizeof(MixedInputWrapper));
 }