public EventsChasingService(string name, IEventStoreCheckpoint storeChekpoint, object projection, IBufferedDocumentWriter writer, IDocumentStore viewsStorage, MessageStore eventsStore) { Condition.Requires(name, "name").IsNotNull(); Condition.Requires(eventsStore, "eventsStore").IsNotNull(); Condition.Requires(projection, "projection").IsNotNull(); Condition.Requires(writer, "writer").IsNotNull(); Condition.Requires(viewsStorage, "viewsStorage").IsNotNull(); Condition.Requires(eventsStore, "eventsStore").IsNotNull(); this._name = name; this._storeChekpoint = storeChekpoint; this._writer = writer; this._eventsStore = eventsStore; this._projectionName = projection.GetType().Name; this._eventHandlers = new RedirectToDynamicEvent(); this._eventHandlers.WireToWhen(projection); }
public IDocumentWriter <TKey, TEntity> GetWriter <TKey, TEntity>() { // find existing writer if one exists var bufferedWriter = (BufferedDocumentWriter <TKey, TEntity>) this._documentWriters.FirstOrDefault(w => w is BufferedDocumentWriter <TKey, TEntity>); if (bufferedWriter != null) { return(bufferedWriter); } // create writer since one doesn't exist var innerWriter = this._innerDocumentStore.GetWriter <TKey, TEntity>(); var innerReader = this._innerDocumentStore.GetReader <TKey, TEntity>(); bufferedWriter = new BufferedDocumentWriter <TKey, TEntity>(innerReader, innerWriter, _strategy); this._documentWriters.Add(bufferedWriter); LatestWriter = bufferedWriter; return(bufferedWriter); }