示例#1
0
        public IEnumerator <T> GetEnumerator()
        {
            var entries = _atomfeed.Entries.ToArray();

            if (!entries.Any())
            {
                yield break;
            }

            IEnumerable <AtomEntry> outStandingEntries;

            if (_lastReadFeedItem.LastEntryReadId != Guid.Empty)
            {
                outStandingEntries = entries
                                     .Reverse()
                                     .SkipWhile(entry => ((Guid)entry.Id) != _lastReadFeedItem.LastEntryReadId)
                                     .Skip(1);
            }
            else
            {
                outStandingEntries = entries.Reverse();
            }

            foreach (var entry in outStandingEntries)
            {
                using (var scope = _lastReadFeedItemDao.BeginTransaction())
                {
                    _lastReadFeedItem.LastEntryReadId = entry.Id;
                    _lastReadFeedItemDao.Update(_lastReadFeedItem);
                    scope.Commit();
                }

                yield return((T)entry.Content.Item);
            }
        }
示例#2
0
        public ReferenceDataFeedReader(ILastReadFeedItemDAO lastReadFeedItemDao, AtomFeed atomfeed)
        {
            _lastReadFeedItemDao = lastReadFeedItemDao;
            _atomfeed            = atomfeed;

            _lastReadFeedItem = _lastReadFeedItemDao.FindByFeedId(atomfeed.Id);
            if (_lastReadFeedItem == null)
            {
                using (var scope = _lastReadFeedItemDao.BeginTransaction())
                {
                    _lastReadFeedItem = _lastReadFeedItemDao.Add(new LastReadFeedItem(atomfeed.Id, Guid.Empty));
                    scope.Commit();
                }
            }
        }