コード例 #1
0
 public TcpPackage CreateNetworkPackage()
 {
     lock (_corrIdLock)
     {
         var dtos  = _events.Select(x => new ClientMessages.Event(x.EventId, x.Type, x.Data, x.Metadata)).ToArray();
         var write = new ClientMessages.WriteEvents(_stream, _expectedVersion, dtos);
         return(new TcpPackage(TcpCommand.WriteEvents, _correlationId, write.Serialize()));
     }
 }
コード例 #2
0
        public Task <WriteResult> AppendToStreamAsync(string stream, int expectedVersion, IEnumerable <Event> events)
        {
            var correlationId = Guid.NewGuid();

            var eventDtos = events.Select(x => new ClientMessages.Event(x.EventId,
                                                                        x.Type,
                                                                        x.Data,
                                                                        x.Metadata)).ToArray();

            var dto = new ClientMessages.WriteEvents(correlationId,
                                                     stream,
                                                     expectedVersion,
                                                     eventDtos);

            var package = new TcpPackage(TcpCommand.WriteEvents, correlationId, dto.Serialize());
            var taskCompletionSource = new TaskCompletionSource <WriteResult>();
            var taskWrapper          = new WriteTaskCompletionWrapper(taskCompletionSource);

            RegisterHandler(correlationId, taskWrapper);
            EnqueueForSend(package);

            return(taskCompletionSource.Task);
        }
コード例 #3
0
        public Task<WriteResult> AppendToStreamAsync(string stream, int expectedVersion, IEnumerable<Event> events)
        {
            var correlationId = Guid.NewGuid();

            var eventDtos = events.Select(x => new ClientMessages.Event(x.EventId,
                                                                          x.Type,
                                                                          x.Data,
                                                                          x.Metadata)).ToArray();

            var dto = new ClientMessages.WriteEvents(correlationId,
                                                       stream,
                                                       expectedVersion,
                                                       eventDtos);

            var package = new TcpPackage(TcpCommand.WriteEvents, correlationId, dto.Serialize());
            var taskCompletionSource = new TaskCompletionSource<WriteResult>();
            var taskWrapper = new WriteTaskCompletionWrapper(taskCompletionSource);
            RegisterHandler(correlationId, taskWrapper);
            EnqueueForSend(package);

            return taskCompletionSource.Task;
        }