Esempio n. 1
0
        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();
            }
        }
Esempio n. 2
0
        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 });
     }
 }
Esempio n. 4
0
        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();
                }
            }
        }
Esempio n. 5
0
        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);
        }
Esempio n. 6
0
        /// <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();
                }
            }
        }
Esempio n. 7
0
        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();
            }
        }