Beispiel #1
0
 public CascadingGetMultipleThunk(IEnumerable <Tangle <T> .JoinBarrierThunk> barriers, IEnumerable <Tangle <T> > cascades, IEnumerable <TKey> keys)
 {
     Barriers     = barriers;
     Cascades     = cascades;
     Keys         = keys;
     KeyConverter = TangleKey.GetConverter <TKey>();
 }
Beispiel #2
0
        protected Index(Tangle <TValue> tangle, string name, Delegate function)
        {
            IndexFunction         = function as IndexFunc <TIndexKey, TValue>;
            IndexMultipleFunction = function as IndexMultipleFunc <TIndexKey, TValue>;

            if ((IndexFunction == null) && (IndexMultipleFunction == null))
            {
                throw new InvalidOperationException("An index must have either an IndexFunc or IndexMultipleFunc");
            }

            Tangle       = tangle;
            Name         = name;
            KeyConverter = TangleKey.GetConverter <TIndexKey>();

            IndexBase <TValue> temp;

            if (tangle.Indices.TryGetValue(name, out temp))
            {
                throw new InvalidOperationException("An index with that name already exists");
            }

            BTree = new BTree(tangle.Storage, Name + "_");

            tangle.Indices.Add(name, this);

            if (tangle.Count != BTree.MutationSentinel)
            {
                Populate();
            }
        }
Beispiel #3
0
 public MapReduceThunk(
     IEnumerable <TKey> keys, Func <TKey, T, TMapped> map,
     Func <TMapped, TMapped, TMapped> reduce,
     TMapped initialValue, TMapped defaultValue
     )
 {
     Keys         = keys;
     KeyConverter = TangleKey.GetConverter <TKey>();
     Map          = map;
     Reduce       = reduce;
     InitialValue = initialValue;
     DefaultValue = defaultValue;
 }
Beispiel #4
0
 public JoinThunk(
     Tangle <TRight> .JoinBarrierThunk rightBarrier,
     Tangle <TRight> right,
     IEnumerable <TLeftKey> keys,
     JoinKeySelector <TLeftKey, T, TRightKey> keySelector,
     JoinValueSelector <TLeftKey, T, TRightKey, TRight, TOut> valueSelector
     )
 {
     RightBarrier      = rightBarrier;
     Right             = right;
     Keys              = keys;
     KeySelector       = keySelector;
     ValueSelector     = valueSelector;
     LeftKeyConverter  = TangleKey.GetConverter <TLeftKey>();
     RightKeyConverter = TangleKey.GetConverter <TRightKey>();
 }
Beispiel #5
0
 public ForEachThunk(IEnumerable <TKey> keys, Action <TKey, T> function)
 {
     Keys         = keys;
     KeyConverter = TangleKey.GetConverter <TKey>();
     Function     = function;
 }
Beispiel #6
0
 public GetMultipleThunk(IEnumerable <TKey> keys)
 {
     Keys         = keys;
     KeyConverter = TangleKey.GetConverter <TKey>();
 }
Beispiel #7
0
 public static void RegisterKeyType <T> (TangleKeyConverter <T> converter)
 {
     RegisterType <T>(autoConverter: false);
     Converters[typeof(T)] = converter;
 }