Beispiel #1
0
        protected IEnumerator <object> CreateTangles()
        {
            Delegate deserializer = null, serializer = null;

            foreach (var tf in TangleFields)
            {
                var constructor = tf.Type.GetConstructors()[0];
                var subStorage  = new SubStreamSource(Storage, tf.Name + "_");

                Deserializers.TryGetValue(tf.Name, out deserializer);
                Serializers.TryGetValue(tf.Name, out serializer);

                var theTangle = (ITangle)constructor.Invoke(new object[] {
                    Scheduler, subStorage, serializer, deserializer, false
                });
                tf.Value = theTangle;
                Tangles.Add(theTangle);
            }

            yield return(SymbolCache.CreateIndex <string>(
                             "ByFunction",
                             IndexSymbolByFunction
                             ).Bind(() => SymbolsByFunction));

            /*
             * yield return Tracebacks.CreateIndex(
             *  "ByFramePrefix",
             *  IndexTracebackByFrames
             * );
             */
        }
Beispiel #2
0
        public void IndexUpdatedWhenAddingNewValues()
        {
            var ByValue = Scheduler.WaitFor(Tangle.CreateIndex("ByValue", (ref string v) => v));

            var key   = new TangleKey("hello");
            var value = "world";

            Scheduler.WaitFor(Tangle.Set(key, value));

            Assert.AreEqual(key, Scheduler.WaitFor(ByValue.FindOne(value)));
            Assert.AreEqual(value, Scheduler.WaitFor(ByValue.GetOne(value)));
        }