Ejemplo n.º 1
0
        public void RegisterCounting()
        {
            int timeout = config.CoreDelay;

            var domainStats =
                from e in _pingInputStream
                group e by new { e.ParentDomain, e.SiteId } into domainGroups
                from win in domainGroups.HoppingWindow(
                    TimeSpan.FromSeconds(timeout),
                    TimeSpan.FromSeconds(timeout / 5),
                    HoppingWindowOutputPolicy.ClipToWindowEnd)
                select new DomainStatistics
                {
                    ParentId = domainGroups.Key.SiteId,
                    Id = DomainSelector.GetDomainId(domainGroups.Key.ParentDomain, domainGroups.Key.SiteId),
                    SelectorType = (int)PageSelectorType.DomainString,
                    Count = (int)win.Count(),
                    Pattern = domainGroups.Key.ParentDomain
                };

            var domainPatternStats =
                from e in _pingInputStream
                group e by new { e.SiteId } into domainGroups
                from win in domainGroups.HoppingWindow(
                    TimeSpan.FromSeconds(timeout),
                    TimeSpan.FromSeconds(timeout / 5),
                    HoppingWindowOutputPolicy.ClipToWindowEnd)
                select new DomainStatistics
                {
                    Id = domainGroups.Key.SiteId,
                    ParentId = null,
                    SelectorType = (int)PageSelectorType.DomainPattern,
                    Pattern = null,
                    Count = (int)win.Count()
                };

            var domainStatsTotal =
                from e in domainPatternStats
                select new DomainStatistics
                {
                    ParentId = e.Id,
                    Id = DomainSelector.GetDomainId(DomainSelector.TotalDomain, e.Id),
                    //Domain = string.Empty,
                    SelectorType = (int)PageSelectorType.DomainString,
                    //UserId = Guid.Empty,
                    Pattern = DomainSelector.TotalDomain,
                    Count = e.Count
                    //PageId = null
                };

            var pageStats =
                from e in _pingInputStream
                where e.PageId != null
                group e by new { e.PageId, e.ParentDomain, e.SiteId } into domainGroups
                from win in domainGroups.HoppingWindow(
                    TimeSpan.FromSeconds(timeout),
                    TimeSpan.FromSeconds(timeout / 5),
                    HoppingWindowOutputPolicy.ClipToWindowEnd)
                select new DomainStatistics
                {
                    ParentId = DomainSelector.GetDomainId(domainGroups.Key.ParentDomain, domainGroups.Key.SiteId),
                    Id = PageSelector.GetPageId(domainGroups.Key.PageId.Value, domainGroups.Key.ParentDomain, domainGroups.Key.SiteId),
                    Pattern = null,
                    SelectorType = (int)PageSelectorType.PagePattern,
                    Count = (int)win.Count()
                };

            var totalPageStats =
                from e in _pingInputStream
                where e.PageId != null
                group e by new { e.PageId, e.SiteId } into domainGroups
                from win in domainGroups.HoppingWindow(
                    TimeSpan.FromSeconds(timeout),
                    TimeSpan.FromSeconds(timeout / 5),
                    HoppingWindowOutputPolicy.ClipToWindowEnd)
                select new DomainStatistics
                {
                    ParentId = DomainSelector.GetDomainId(DomainSelector.TotalDomain, domainGroups.Key.SiteId),
                    Id = PageSelector.GetPageId(domainGroups.Key.PageId.Value, DomainSelector.TotalDomain, domainGroups.Key.SiteId),
                    Pattern = null,
                    SelectorType = (int)PageSelectorType.PagePattern,
                    Count = (int)win.Count()
                };

            var totalStats = domainPatternStats.Union(domainStats).Union(domainStatsTotal).Union(totalPageStats).Union(pageStats);

            _domainStatSource = totalStats.ToObservable();

            _statsOutputService = new CepObserver<DomainStatistics>();
            _eventsOutputService = new CepDataCollector<PageRequest>();

            _subscription = _domainStatSource.Subscribe(_statsOutputService);
        }
Ejemplo n.º 2
0
        public void RegisterCounting()
        {
            int timeout = config.CoreDelay;


            var domainStats =
                from e in _pingInputStream
                group e by new { e.ParentDomain, e.SiteId } into domainGroups
            from win in domainGroups.HoppingWindow(
                TimeSpan.FromSeconds(timeout),
                TimeSpan.FromSeconds(timeout / 5),
                HoppingWindowOutputPolicy.ClipToWindowEnd)
            select new DomainStatistics
            {
                ParentId     = domainGroups.Key.SiteId,
                Id           = DomainSelector.GetDomainId(domainGroups.Key.ParentDomain, domainGroups.Key.SiteId),
                SelectorType = (int)PageSelectorType.DomainString,
                Count        = (int)win.Count(),
                Pattern      = domainGroups.Key.ParentDomain
            };

            var domainPatternStats =
                from e in _pingInputStream
                group e by new { e.SiteId } into domainGroups
            from win in domainGroups.HoppingWindow(
                TimeSpan.FromSeconds(timeout),
                TimeSpan.FromSeconds(timeout / 5),
                HoppingWindowOutputPolicy.ClipToWindowEnd)
            select new DomainStatistics
            {
                Id           = domainGroups.Key.SiteId,
                ParentId     = null,
                SelectorType = (int)PageSelectorType.DomainPattern,
                Pattern      = null,
                Count        = (int)win.Count()
            };

            var domainStatsTotal =
                from e in domainPatternStats
                select new DomainStatistics
            {
                ParentId = e.Id,
                Id       = DomainSelector.GetDomainId(DomainSelector.TotalDomain, e.Id),
                //Domain = string.Empty,
                SelectorType = (int)PageSelectorType.DomainString,
                //UserId = Guid.Empty,
                Pattern = DomainSelector.TotalDomain,
                Count   = e.Count
                          //PageId = null
            };

            var pageStats =
                from e in _pingInputStream
                where e.PageId != null
                group e by new { e.PageId, e.ParentDomain, e.SiteId } into domainGroups
            from win in domainGroups.HoppingWindow(
                TimeSpan.FromSeconds(timeout),
                TimeSpan.FromSeconds(timeout / 5),
                HoppingWindowOutputPolicy.ClipToWindowEnd)
            select new DomainStatistics
            {
                ParentId     = DomainSelector.GetDomainId(domainGroups.Key.ParentDomain, domainGroups.Key.SiteId),
                Id           = PageSelector.GetPageId(domainGroups.Key.PageId.Value, domainGroups.Key.ParentDomain, domainGroups.Key.SiteId),
                Pattern      = null,
                SelectorType = (int)PageSelectorType.PagePattern,
                Count        = (int)win.Count()
            };

            var totalPageStats =
                from e in _pingInputStream
                where e.PageId != null
                group e by new { e.PageId, e.SiteId } into domainGroups
            from win in domainGroups.HoppingWindow(
                TimeSpan.FromSeconds(timeout),
                TimeSpan.FromSeconds(timeout / 5),
                HoppingWindowOutputPolicy.ClipToWindowEnd)
            select new DomainStatistics
            {
                ParentId     = DomainSelector.GetDomainId(DomainSelector.TotalDomain, domainGroups.Key.SiteId),
                Id           = PageSelector.GetPageId(domainGroups.Key.PageId.Value, DomainSelector.TotalDomain, domainGroups.Key.SiteId),
                Pattern      = null,
                SelectorType = (int)PageSelectorType.PagePattern,
                Count        = (int)win.Count()
            };

            var totalStats = domainPatternStats.Union(domainStats).Union(domainStatsTotal).Union(totalPageStats).Union(pageStats);

            _domainStatSource = totalStats.ToObservable();

            _statsOutputService  = new CepObserver <DomainStatistics>();
            _eventsOutputService = new CepDataCollector <PageRequest>();

            _subscription = _domainStatSource.Subscribe(_statsOutputService);
        }