コード例 #1
0
        public override Func <string, Equinox.Core.IStream <TEvent, TState> > Resolve <TEvent, TState>(
            FsCodec.IEventCodec <TEvent, byte[], object> codec,
            Func <TState, IEnumerable <TEvent>, TState> fold,
            TState initial,
            Func <TEvent, bool> isOrigin     = null,
            Func <TState, TEvent> toSnapshot = null)
        {
            var accessStrategy =
                isOrigin == null && toSnapshot == null
                    ? null
                    : AccessStrategy <TEvent, TState> .NewSnapshot(FuncConvert.FromFunc(isOrigin), FuncConvert.FromFunc(toSnapshot));

            var cacheStrategy = _cache == null
                ? null
                : CachingStrategy.NewSlidingWindow(_cache, TimeSpan.FromMinutes(20));
            var resolver = new Resolver <TEvent, TState, object>(_store, codec, FuncConvert.FromFunc(fold), initial, cacheStrategy, accessStrategy, compressUnfolds: FSharpOption <bool> .None);

            return(t => resolver.Resolve(t));
        }
コード例 #2
0
        public override Func <string, IStream <TEvent, TState> > Resolve <TEvent, TState>(
            FsCodec.IEventCodec <TEvent, byte[], object> codec,
            Func <TState, IEnumerable <TEvent>, TState> fold,
            TState initial,
            Func <TEvent, bool> isOrigin     = null,
            Func <TState, TEvent> toSnapshot = null)
        {
            var accessStrategy =
                isOrigin == null && toSnapshot == null
                    ? null
                    : AccessStrategy <TEvent, TState> .NewRollingSnapshots(FuncConvert.FromFunc(isOrigin), FuncConvert.FromFunc(toSnapshot));

            var cacheStrategy = _cache == null
                ? null
                : CachingStrategy.NewSlidingWindow(_cache, TimeSpan.FromMinutes(20));
            var cat = new EventStoreCategory <TEvent, TState, object>(_connection, codec, FuncConvert.FromFunc(fold),
                                                                      initial, cacheStrategy, accessStrategy);

            return(t => cat.Resolve(t));
        }
コード例 #3
0
 public abstract Func <string, Equinox.Core.IStream <TEvent, TState> > Resolve <TEvent, TState>(
     FsCodec.IEventCodec <TEvent, byte[], object> codec,
     Func <TState, IEnumerable <TEvent>, TState> fold,
     TState initial,
     Func <TEvent, bool> isOrigin     = null,
     Func <TState, TEvent> toSnapshot = null);