internal static DataStoreRequest Create(string journalName, Offset offset, Offset journalSize,
			RequestUID requestUID, WorkerUID workerUID)
        {
            var request = new ReadJournalRequest(journalName, offset, journalSize);
            var header = new Header(RequestType.READ_JOURNAL, request.SizeOf, requestUID, HeaderProperties.None,
                workerUID);

            return new DataStoreRequest(header, request);
        }
 public CommitResponseState(bool success, Offset journalSize)
 {
     Response = new Some<IMessageResponse>(new CommitTransactionResponse(success, journalSize));
 }
 public IResponseState Parse(Header header, IEndianAwareReader reader)
 {
     var success = reader.ReadIntAsBool();
     var journalSize = new Offset(reader.ReadInt32());
     return new CommitResponseState(success, journalSize);
 }
 public NewTransactionResponseState(Offset journalSize, TransactionUID transactionUID)
 {
     Response = new Some<IMessageResponse>(new NewTransactionResponse(journalSize, transactionUID));
 }
 public IResponseState Parse(Header header, IEndianAwareReader reader)
 {
     var journalSize = new Offset(reader.ReadInt32());
     var transactionUID = new TransactionUID(reader.ReadInt32());
     return new NewTransactionResponseState(journalSize, transactionUID);
 }
 public Task<IEnumerable<object>> ReadEventsFromJournal(ITransaction transaction, Offset offset)
 {
     return sender.ReadEventsFromJournal((TransactionImpl)transaction, offset);
 }
 public NewTransactionResponse(Offset journalSize, TransactionUID transactionUID)
 {
     this.JournalSize = journalSize;
     this.TransactionUID = transactionUID;
 }
 public CommitFailed(List<object> events, Offset journalSize)
 {
     Events = events;
     JournalSize = journalSize;
 }
 private ReadJournalRequest(string journalName, Offset offset, Offset journalSize)
 {
     this.JournalName = journalName;
     this.Offset = offset;
     this.JournalSize = journalSize;
 }
        internal Task<IEnumerable<object>> ReadEventsFromJournal(TransactionImpl transaction, Offset offset)
        {
            var request = ReadJournalRequest.Create(transaction.Name, offset, transaction.JournalSize,
                nextRequestUID(), transaction.WorkerUID);
            var tcs = new TaskCompletionSource<IEnumerable<object>>();

            mapper.Add(request.Header.RequestUID, (response) =>
            {
                var r = (ReadJournalResponse)response.Body;
                var events = r.Events.Select(evt => serializer.ConvertFromString(evt.Data) );
                snapshotManager.ForEach(m => m.SaveSnapshot(transaction.Name, new SnapshotEntry(r.Bytes, r.Events)) );
                tcs.SetResult(events);
            }, (failure) =>
            {
                tcs.SetException(failure);
            });

            requests.Add(request, cancellationToken.Token);
            return tcs.Task;
        }