Пример #1
0
 private void SaveStreamHead(RavenStreamHead streamHead)
 {
     if (_consistentQueries)
     {
         SaveStreamHeadAsync(streamHead);
     }
     else
     {
         ThreadPool.QueueUserWorkItem(x => SaveStreamHeadAsync(streamHead), null);
     }
 }
Пример #2
0
 public static RavenStreamHead ToRavenStreamHead(this Snapshot snapshot)
 {
     return(new RavenStreamHead
     {
         Id = RavenStreamHead.GetStreamHeadId(snapshot.BucketId, snapshot.StreamId),
         BucketId = snapshot.BucketId,
         StreamId = snapshot.StreamId,
         HeadRevision = snapshot.StreamRevision,
         SnapshotRevision = snapshot.StreamRevision
     });
 }
Пример #3
0
 public static RavenStreamHead ToRavenStreamHead(this Commit commit)
 {
     return(new RavenStreamHead
     {
         Id = RavenStreamHead.GetStreamHeadId(commit.BucketId, commit.StreamId),
         BucketId = commit.BucketId,
         StreamId = commit.StreamId,
         HeadRevision = commit.StreamRevision,
         SnapshotRevision = 0
     });
 }
Пример #4
0
        private void SaveStreamHeadAsync(RavenStreamHead updated)
        {
            TryRaven(() =>
            {
                using (TransactionScope scope = OpenCommandScope())
                    using (IDocumentSession session = _store.OpenSession())
                    {
                        RavenStreamHead current = session.Load <RavenStreamHead>(RavenStreamHead.GetStreamHeadId(updated.BucketId, updated.StreamId)) ?? updated;
                        current.HeadRevision    = updated.HeadRevision;

                        if (updated.SnapshotRevision > 0)
                        {
                            current.SnapshotRevision = updated.SnapshotRevision;
                        }

                        session.Advanced.UseOptimisticConcurrency = false;
                        session.Store(current);
                        session.SaveChanges();
                        scope.Complete(); // if this fails it's no big deal, stream heads can be updated whenever
                    }
                return(true);
            });
        }
Пример #5
0
 public static StreamHead ToStreamHead(this RavenStreamHead streamHead)
 {
     return(new StreamHead(streamHead.BucketId, streamHead.StreamId, streamHead.HeadRevision, streamHead.SnapshotRevision));
 }