public void Handle(ClientMessage.TransactionWrite message)
        {
            var manager = new SingleAckRequestManager(_bus, _prepareTimeout);

            _currentRequests.Add(message.InternalCorrId, manager);
            manager.Handle(message);
        }
 public void Write(ClientMessage.TransactionWrite message, ref int fakePosition)
 {
     foreach (var @event in message.Events)
     {
         _events.Add(Tuple.Create(fakePosition, @event));
         fakePosition += 50;
     }
 }
 private void Handle(ClientMessage.TransactionWrite message)
 {
     _outputBus.Publish(new StorageMessage.TransactionWriteRequestCreated(message.CorrelationId,
                                                                          message.Envelope,
                                                                          message.TransactionId,
                                                                          message.EventStreamId,
                                                                          message.Events));
 }
        public void Handle(ClientMessage.TransactionWrite message)
        {
            var manager = new SingleAckRequestManager(_bus, _prepareTimeout, _betterOrdering);

            _currentRequests.Add(message.InternalCorrId, manager);
            _currentTimedRequests.Add(message.InternalCorrId, Stopwatch.StartNew());
            manager.Handle(message);
        }
        private static TcpPackage WrapTransactionWrite(ClientMessage.TransactionWrite msg)
        {
            var dto = new ClientMessageDto.TransactionWrite(msg.TransactionId,
                                                            msg.EventStreamId,
                                                            msg.Events.Select(x => new ClientMessageDto.Event(x.EventId, x.EventType, x.Data, x.Metadata)).ToArray());

            return(new TcpPackage(TcpCommand.TransactionWrite, msg.CorrelationId, dto.Serialize()));
        }
Beispiel #6
0
 public TcpPackage CreateNetworkPackage()
 {
     lock (_corrIdLock)
     {
         var dtos  = _events.Select(x => new ClientMessage.ClientEvent(x.EventId.ToByteArray(), x.Type, x.IsJson, x.Data, x.Metadata)).ToArray();
         var write = new ClientMessage.TransactionWrite(_transactionId, _stream, dtos, _forward);
         return(new TcpPackage(TcpCommand.TransactionWrite, _corrId, write.Serialize()));
     }
 }
		public void Handle(ClientMessage.TransactionWrite message) {
			Transaction transaction;
			if (!_activeTransactions.TryGetValue(message.TransactionId, out transaction)) {
				message.Envelope.ReplyWith(
					new ClientMessage.TransactionWriteCompleted(
						message.CorrelationId, message.TransactionId, OperationResult.InvalidTransaction,
						"Transaction not found"));
			} else {
				transaction.Write(message, ref _fakePosition);
			}
		}
        private void HandleAsNonMaster(ClientMessage.TransactionWrite message)
        {
            if (message.RequireMaster)
            {
                DenyRequestBecauseNotMaster(message.CorrelationId, message.Envelope);
                return;
            }
            var timeoutMessage = new ClientMessage.TransactionWriteCompleted(
                message.CorrelationId, message.TransactionId, OperationResult.ForwardTimeout, "Forwarding timeout");

            ForwardRequest(message, timeoutMessage);
        }
Beispiel #9
0
        private static TcpPackage WrapTransactionWrite(ClientMessage.TransactionWrite msg)
        {
            var events = new TcpClientMessageDto.NewEvent[msg.Events.Length];

            for (int i = 0; i < events.Length; ++i)
            {
                var e = msg.Events[i];
                events[i] = new TcpClientMessageDto.NewEvent(e.EventId.ToByteArray(), e.EventType, e.IsJson ? 1 : 0, 0, e.Data, e.Metadata);
            }
            var dto = new TcpClientMessageDto.TransactionWrite(msg.TransactionId, events, msg.RequireMaster);

            return(CreateWriteRequestPackage(TcpCommand.TransactionWrite, msg, dto));
        }
Beispiel #10
0
        public Task TransactionalWriteAsync(EventStoreTransaction transaction, IEnumerable <EventData> events,
                                            UserCredentials userCredentials = null)
        {
            var source = new TaskCompletionSource <EventStoreTransaction>();

            var envelope = new EmbeddedResponseEnvelope(new EmbeddedResponders.TransactionWrite(source, this));

            Guid corrId = Guid.NewGuid();

            var message = new ClientMessage.TransactionWrite(corrId, corrId, envelope, false,
                                                             transaction.TransactionId, events.ConvertToEvents(), SystemAccount.Principal);

            _publisher.Publish(message);

            return(source.Task);
        }
        public void Handle(ClientMessage.TransactionWrite message)
        {
            var manager = new TransactionWrite(
                _bus,
                _prepareTimeout,
                message.Envelope,
                message.InternalCorrId,
                message.CorrelationId,
                message.Events,
                message.TransactionId,
                _commitSource);

            _currentRequests.Add(message.InternalCorrId, manager);
            _currentTimedRequests.Add(message.InternalCorrId, Stopwatch.StartNew());
            manager.Start();
        }
        public void Handle(ClientMessage.TransactionWrite request)
        {
            if (_initialized)
            {
                throw new InvalidOperationException();
            }

            _initialized      = true;
            _requestType      = RequestType.TransactionWrite;
            _responseEnvelope = request.Envelope;
            _internalCorrId   = request.InternalCorrId;
            _clientCorrId     = request.CorrelationId;

            _transactionId = request.TransactionId;

            _bus.Publish(new StorageMessage.WriteTransactionData(_internalCorrId, _publishEnvelope, _transactionId, request.Events));
            CompleteSuccessRequest();
        }
Beispiel #13
0
 private void Handle(ClientMessage.TransactionWrite message)
 {
     _outputBus.Publish(message);
 }