public MsSqlServerEventStore(String connectionString, IEventTypeResolver typeResolver, IEventConverter converter) { if (String.IsNullOrEmpty(connectionString)) throw new ArgumentNullException("connectionString"); _connectionString = connectionString; _converter = converter ?? new NullEventConverter(); _formatter = new JsonEventFormatter(typeResolver ?? new SimpleEventTypeResolver()); _translator = new StringEventTranslator(); }
/// <summary> /// <see cref="IEventSink{T}.TryPublishEvent(Disruptor.IEventTranslator{T})"/> /// </summary> public bool TryPublishEvent(IEventTranslator <T> translator) { if (_fields.Sequencer.TryNext(out var sequence)) { TranslateAndPublish(translator, sequence); return(true); } return(false); }
private void TranslateAndPublish(IEventTranslator <TEvent> translator, long sequence) { try { translator.TranslateTo(Get(sequence), sequence); } finally { Sequencer.Publish(sequence); } }
private void TranslateAndPublish(IEventTranslator <T> translator, long sequence) { try { translator.TranslateTo(this[sequence], sequence); } finally { _fields.Sequencer.Publish(sequence); } }
public MongoDBEventStore(string connectionString = DEFAULT_DATABASE_URI, IEventTypeResolver typeResolver = null, IEventConverter converter = null) { _database = MongoDatabase.Create(connectionString); _commits = _database.GetCollection<MongoCommit>("Commits"); _events = _database.GetCollection<BsonDocument>("SourcedEvents"); _converter = converter ?? new NullEventConverter(); _formatter = new JsonEventFormatter(typeResolver ?? new SimpleEventTypeResolver()); _translator = new StringEventTranslator(); EnsureIndexes(); }
public PostgreServerEventStore(String connectionString, IEventTypeResolver typeResolver, IEventConverter converter) { if (String.IsNullOrEmpty(connectionString)) { throw new ArgumentNullException("connectionString"); } _connectionString = connectionString; _converter = converter ?? new NullEventConverter(); _formatter = new JsonEventFormatter(typeResolver ?? new SimpleEventTypeResolver()); _translator = new StringEventTranslator(); }
public MongoDBEventStore(string connectionString = DEFAULT_DATABASE_URI, IEventTypeResolver typeResolver = null, IEventConverter converter = null) { _database = MongoDatabase.Create(connectionString); _commits = _database.GetCollection <MongoCommit>("Commits"); _events = _database.GetCollection <BsonDocument>("SourcedEvents"); _converter = converter ?? new NullEventConverter(); _formatter = new JsonEventFormatter(typeResolver ?? new SimpleEventTypeResolver()); _translator = new StringEventTranslator(); EnsureIndexes(); }
public bool TryPublishEvent(IEventTranslator <T> translator) { try { long sequence = _fields.Sequencer.TryNext(); TranslateAndPublish(translator, sequence); return(true); } catch (InsufficientCapacityException) { return(false); } }
public Task <TResult> PublishEvent(IEventTranslator <TEvent> translator) { var taskCompletionSource = new TaskCompletionSource <TResult>(); Events.Add(translator.Translate(Activator.CreateInstance <TEvent>(), 0)); taskCompletionSource.SetResult(default(TResult)); if (_publishAction != null) { _publishAction(); _publishAction = null; } return(taskCompletionSource.Task); }
/// <summary> /// <see cref="IEventSink{TEvent}.TryPublishEvent(IEventTranslator{TEvent})"/> /// </summary> /// <param name="translator"></param> /// <returns></returns> public bool TryPublishEvent(IEventTranslator <TEvent> translator) { try { if (Sequencer.TryNext(out long sequence)) { TranslateAndPublish(translator, sequence); return(true); } else { return(false); } } catch (InsufficientCapacityException e) { return(false); } }
private void TranslateAndPublishBatch(IEventTranslator <T>[] translators, int batchStartsAt, int batchSize, long finalSequence) { long initialSequence = finalSequence - (batchSize - 1); try { long sequence = initialSequence; int batchEndsAt = batchStartsAt + batchSize; for (int i = batchStartsAt; i < batchEndsAt; i++) { IEventTranslator <T> translator = translators[i]; translator.TranslateTo(this[sequence], sequence++); } } finally { _sequencerDispatcher.Sequencer.Publish(initialSequence, finalSequence); } }
/// <summary>Initializes a new instance of the <see cref="MsSqlServerEventStore"/> class.</summary> /// <param name="connectionString">The database connection string to the database.</param> /// <param name="applicationName">The application name that is used to isolate events and surces etc...</param> /// <param name="typeResolver">Indicates the <see cref="IEventTypeResolver"/> to use.</param> /// <param name="converter">Indicates the <see cref="IEventConverter"/> to use.</param> public MultiAppSqlServerEventStore( string connectionString, string applicationName, IEventTypeResolver typeResolver, IEventConverter converter) { if (String.IsNullOrEmpty(connectionString)) { throw new ArgumentNullException("connectionString"); } if (String.IsNullOrEmpty(applicationName)) { throw new ArgumentNullException("applicationName"); } _connectionString = connectionString; _applicationName = applicationName; _converter = converter ?? new NullEventConverter(); _formatter = new JsonEventFormatter(typeResolver ?? new SimpleEventTypeResolver()); _translator = new StringEventTranslator(); InitializeEventStore(); }
/// <summary> /// Publish an event to the ring buffer. /// </summary> /// <param name="eventTranslator">the translator that will load data into the event.</param> public void PublishEvent(IEventTranslator <T> eventTranslator) { _ringBuffer.PublishEvent(eventTranslator); }
public Task <TResult> PublishEvent(IEventTranslator <TEvent> translator, TimeSpan timeout) { return(PublishEvent(translator)); }
public void PublishEvent(IEventTranslator <T> translator, TimeSpan timeout) { _eventPublisher.PublishEvent(translator.Translate, timeout); }
public void PublishEvent(IEventTranslator <T> translator) { long sequence = _fields.Sequencer.Next(); TranslateAndPublish(translator, sequence); }
public void PublishEvent(IEventTranslator <T> translator) { long sequence = _sequencerDispatcher.Sequencer.Next(); TranslateAndPublish(translator, sequence); }
public void PublishEvent(IEventTranslator <TEvent> translator) { throw new NotImplementedException(); }
/// <summary> /// <see cref="IEventSink{TEvent}.PublishEvent(IEventTranslator{TEvent})"/> /// </summary> /// <param name="translator"></param> public void PublishEvent(IEventTranslator <TEvent> translator) { var sequence = Sequencer.Next(); TranslateAndPublish(translator, sequence); }
public void PublishEvent(IEventTranslator <T> translator) { _eventPublisher.PublishEvent(translator.Translate); }