public byte[] SerializeEvent(ISourcedEvent e) { byte[] content; using (var ms = new MemoryStream()) { serializer.Serialize(e, e.GetType(), ms); content = ms.ToArray(); } byte[] messageContractBuffer; using (var ms = new MemoryStream()) { var name = e.GetType().GetContractName(); var messageContract = new MessageContract(name, content.Length, 0, e.EventIdentifier, e.EventSequence); serializer.Serialize(messageContract, typeof(MessageContract), ms); messageContractBuffer = ms.ToArray(); } using (var ms = new MemoryStream()) { var headerContract = new MessageHeaderContract(messageContractBuffer.Length); headerContract.WriteHeader(ms); ms.Write(messageContractBuffer, 0, messageContractBuffer.Length); ms.Write(content, 0, content.Length); return ms.ToArray(); } }
public byte[] SerializeEvent(ISourcedEvent e) { byte[] content; using (var ms = new MemoryStream()) { serializer.Serialize(e, e.GetType(), ms); content = ms.ToArray(); } byte[] messageContractBuffer; using (var ms = new MemoryStream()) { var name = e.GetType().GetContractName(); var messageContract = new MessageContract(name, content.Length, 0, e.EventIdentifier, e.EventSequence); serializer.Serialize(messageContract, typeof(MessageContract), ms); messageContractBuffer = ms.ToArray(); } using (var ms = new MemoryStream()) { var headerContract = new MessageHeaderContract(messageContractBuffer.Length); headerContract.WriteHeader(ms); ms.Write(messageContractBuffer, 0, messageContractBuffer.Length); ms.Write(content, 0, content.Length); return(ms.ToArray()); } }
public void Invoke(object record, ISourcedEvent @event) { var projectionType = typeof(IProjection<,>).MakeGenericType(record.GetType(), @event.GetType()); var projection = _container.Resolve(projectionType); if (projection != null) { var method = projectionType.GetMethod("Project", new[] { record.GetType(), @event.GetType() }); method?.Invoke(projection, new [] { record, @event }); } }
private void SaveEvent(ISourcedEvent evnt, Guid eventSourceId, SQLiteTransaction transaction) { if (evnt == null || transaction == null) { throw new ArgumentNullException(); } using (var dataStream = new MemoryStream()) { var bag = _converter.Convert(evnt); var formatter = new BinaryFormatter(); formatter.Serialize(dataStream, bag); var data = dataStream.ToArray(); using (var cmd = new SQLiteCommand(Query.InsertNewEventQuery, transaction.Connection)) { cmd.SetTransaction(transaction) .AddParam("Id", eventSourceId) .AddParam("Name", evnt.GetType().FullName) .AddParam("Sequence", evnt.EventSequence) .AddParam("Timestamp", evnt.EventTimeStamp.Ticks) .AddParam("Data", data); cmd.ExecuteNonQuery(); } } }
public StoredEvent <JObject> Serialize(ISourcedEvent theEvent) { var eventName = _typeResolver.EventNameFor(theEvent.GetType()); var data = JObject.FromObject(theEvent, _serializer); StoredEvent <JObject> obj = new StoredEvent <JObject>( theEvent.EventIdentifier, theEvent.EventTimeStamp, eventName, theEvent.EventVersion, theEvent.EventSourceId, theEvent.EventSequence, data); data.Remove("EventIdentifier"); data.Remove("EventTimeStamp"); data.Remove("EventName"); data.Remove("EventVersion"); data.Remove("EventSourceId"); data.Remove("EventSequence"); return(obj); }
/// <summary> /// Saves the event to the data store. /// </summary> /// <param name="evnt">The event to save.</param> /// <param name="eventSourceId">The id of the event source that owns the event.</param> /// <param name="transaction">The transaction.</param> private static void SaveEvent(ISourcedEvent evnt, Guid eventSourceId, SqlTransaction transaction) { Contract.Requires<ArgumentNullException>(evnt != null, "The argument evnt could not be null."); Contract.Requires<ArgumentNullException>(transaction != null, "The argument transaction could not be null."); using (var dataStream = new MemoryStream()) { var formatter = new BinaryFormatter(); formatter.Serialize(dataStream, evnt); byte[] data = dataStream.ToArray(); using (var command = new SqlCommand(InsertNewEventQuery, transaction.Connection)) { command.Transaction = transaction; command.Parameters.AddWithValue("Id", eventSourceId); command.Parameters.AddWithValue("Name", evnt.GetType().FullName); command.Parameters.AddWithValue("Sequence", evnt.EventSequence); command.Parameters.AddWithValue("Data", data); command.ExecuteNonQuery(); } } }
private void SaveEvent(ISourcedEvent evnt, Guid eventSourceId, SQLiteTransaction transaction) { if (evnt == null || transaction == null) throw new ArgumentNullException(); using (var dataStream = new MemoryStream()) { var bag = _converter.Convert(evnt); var formatter = new BinaryFormatter(); formatter.Serialize(dataStream, bag); var data = dataStream.ToArray(); using (var cmd = new SQLiteCommand(Query.InsertNewEventQuery, transaction.Connection)) { cmd.SetTransaction(transaction) .AddParam("Id", eventSourceId) .AddParam("Name", evnt.GetType().FullName) .AddParam("Sequence", evnt.EventSequence) .AddParam("Timestamp", evnt.EventTimeStamp.Ticks) .AddParam("Data", data); cmd.ExecuteNonQuery(); } } }
/// <summary> /// Saves the event to the data store. /// </summary> /// <param name="evnt">The event to save.</param> /// <param name="eventSourceId">The id of the event source that owns the event.</param> /// <param name="transaction">The transaction.</param> private void SaveEvent(ISourcedEvent evnt, SqlTransaction transaction) { Contract.Requires<ArgumentNullException>(evnt != null, "The argument evnt could not be null."); Contract.Requires<ArgumentNullException>(transaction != null, "The argument transaction could not be null."); var bag = _converter.Convert(evnt); byte[] data = ToBinary(bag); using (var command = new SqlCommand(InsertNewEventQuery, transaction.Connection)) { command.Transaction = transaction; command.Parameters.AddWithValue("EventId", evnt.EventIdentifier); command.Parameters.AddWithValue("EventSourceId", evnt.EventSourceId); command.Parameters.AddWithValue("Name", evnt.GetType().FullName); command.Parameters.AddWithValue("Sequence", evnt.EventSequence); command.Parameters.AddWithValue("Data", data); command.ExecuteNonQuery(); } }