コード例 #1
0
        private void CheckTargets()
        {
            while (targets.Count > 0)
            {
                Target target = GetTargetFromQueue();
                if (!(this.previousTarget is null))
                {
                    this.delay = (int)(target.Time - previousTarget.Time).TotalMilliseconds;
                }

                if (previousTarget is null ||
                    (target.Coordinate.Latitude != previousTarget.Coordinate.Latitude &&
                     target.Coordinate.Longitude != previousTarget.Coordinate.Longitude))
                {
                    Task movingTask = Task.Run(() => Move(target.Coordinate));

                    double distance = 0;

                    Tube tube = tubes.Find(t =>
                    {
                        distance = GetDistance(t.Coordinate, target.Coordinate);
                        return(distance < 351);
                    });

                    double speed = previousTarget is null
                        ? 30
                        : speed = CalculateSpeed(previousTarget, target);

                    string reportMessage;
                    if (!(tube is null))
                    {
                        TrafficReport report = new TrafficReport(tube.Name, id, target.Time, speed);
                        reportMessage = CreateSuccessReport(report, distance);
                    }
コード例 #2
0
ファイル: brh.cs プロジェクト: vijayamazon/ezbob
        }         // BuildUiExtXls

        public ExcelPackage BuildTrafficReportXls(Report report, DateTime from, DateTime to)
        {
            var trafficReport = new TrafficReport(DB, this);
            KeyValuePair <ReportQuery, DataTable> oData = trafficReport.CreateTrafficReport(report, from, to);

            return(AddSheetToExcel(oData.Value, report.GetTitle(from, oToDate: to), report.Title));
        }         // BuildTrafficReportXls
コード例 #3
0
ファイル: brh.cs プロジェクト: vijayamazon/ezbob
        }         // TableReport

        public ATag BuildTrafficReport(Report report, DateTime from, DateTime to, List <string> oColumnTypes = null)
        {
            var trafficReport = new TrafficReport(DB, this);
            KeyValuePair <ReportQuery, DataTable> oData = trafficReport.CreateTrafficReport(report, from, to);

            return(new Body().Add <Class>("Body")
                   .Append(new H1().Append(new Text(report.GetTitle(from, oToDate: to))))
                   .Append(new P().Append(TableReport(oData.Key, oData.Value, oColumnTypes: oColumnTypes))));
        }         // BuildTrafficReport
コード例 #4
0
        public void merges_crawler_entries_for_different_user_agent_representations()
        {
            var report = new TrafficReport();

            report.AddEntry("1.1.1.1", "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)".CorrectSpacesInUserAgentBecauseTheyWontWorkInLogParser(), 12, 2048);
            report.AddEntry("1.1.1.1", "Googlebot/2.1 (+http://www.google.com/bot.html)".CorrectSpacesInUserAgentBecauseTheyWontWorkInLogParser(), 132, 11048);

            var sut = new CrawlerTrafficProcessor(new UserAgentBasedCrawlerDetector());

            var trafficDtos = sut.Process(report);

            trafficDtos.Should().HaveCount(1);
        }
コード例 #5
0
        public double addTrafficDelay(double time, double distanceFromTraffic, TrafficReport TrafficReport)
        {
            double trafficDelay = 0;

            switch (TrafficReport.Severity)
            {
            case TrafficSeverity.Low:
                if ((distanceFromTraffic <= TrafficReport.TrafficPropagationMaxDistance) && (distanceFromTraffic >= (TrafficReport.TrafficPropagationMaxDistance / 2)))
                {
                    trafficDelay = time * 0.5;
                }
                break;

            case TrafficSeverity.Medium:
                if ((distanceFromTraffic <= TrafficReport.TrafficPropagationMaxDistance) && (distanceFromTraffic >= (TrafficReport.TrafficPropagationMaxDistance / 2)))
                {
                    trafficDelay = time * 1;
                }
                else if ((distanceFromTraffic <= (TrafficReport.TrafficPropagationMaxDistance / 2)) && (distanceFromTraffic >= (TrafficReport.TrafficPropagationMaxDistance / 3)))
                {
                    trafficDelay = time * 0.5;
                }
                break;

            case TrafficSeverity.High:
                if ((distanceFromTraffic <= TrafficReport.TrafficPropagationMaxDistance) && (distanceFromTraffic >= (TrafficReport.TrafficPropagationMaxDistance / 2)))
                {
                    trafficDelay = time * 2;
                }
                else if ((distanceFromTraffic <= (TrafficReport.TrafficPropagationMaxDistance / 2)) && (distanceFromTraffic >= (TrafficReport.TrafficPropagationMaxDistance / 3)))
                {
                    trafficDelay = time * 1;
                }
                else if ((distanceFromTraffic <= (TrafficReport.TrafficPropagationMaxDistance / 3)) && (distanceFromTraffic >= (TrafficReport.TrafficPropagationMaxDistance / 4)))
                {
                    trafficDelay = time * 0.5;
                }
                break;

            default:
                break;
            }

            return(trafficDelay);
        }
コード例 #6
0
        public void only_keeps_recognized_crawler_entries()
        {
            var report = new TrafficReport();

            report.AddEntry("1.1.1.1", "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)".CorrectSpacesInUserAgentBecauseTheyWontWorkInLogParser(), 12, 2048);
            report.AddEntry("2.1.2.1", "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)".CorrectSpacesInUserAgentBecauseTheyWontWorkInLogParser(), 132, 11048);
            report.AddEntry(
                "1.1.1.1",
                "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:40.0) Gecko/20100101 Firefox/40.1".CorrectSpacesInUserAgentBecauseTheyWontWorkInLogParser(),
                1,
                100);

            var sut = new CrawlerTrafficProcessor(new UserAgentBasedCrawlerDetector());

            var trafficDtos = sut.Process(report);

            trafficDtos.Should().HaveCount(2);
            trafficDtos.Should().NotContain(x => x.CrawlerName == Crawler.Unrecognized.Name);
        }
コード例 #7
0
        public IList <CrawlerTraffic> Process(TrafficReport report)
        {
            var result = new List <CrawlerTraffic>();

            foreach (var entry in report.Entries)
            {
                var crawler = this.detector.Recognize(entry);
                if (crawler == Crawler.Unrecognized)
                {
                    continue;
                }

                var traffic = new CrawlerTraffic();
                traffic.CrawlerName     = $"{crawler.Name}({entry.Ip})";
                traffic.AccessAttempts  = entry.AccessAttempts;
                traffic.TransferedBytes = entry.TransferedBytes;

                result.Add(traffic);
            }

            return(this.MergeDuplicatingEntries(result));
        }
コード例 #8
0
ファイル: Program.cs プロジェクト: merdacz/Matej
        public void Run()
        {
            var logsPath     = this.configuration.GetLogsPath();
            var logsTimespan = this.configuration.GetLogsTimespan();

            TrafficReport trafficReport = null;

            if (logsTimespan == TimeSpan.MaxValue)
            {
                trafficReport = this.queries.GetUnboundedTrafficReport(logsPath);
            }
            else
            {
                var now = DateTime.Now;
                trafficReport = this.queries.GetTrafficReport(
                    logsPath,
                    now - logsTimespan,
                    now);
            }

            var trafficDtos = this.crawlerTrafficProcessor.Process(trafficReport);

            this.storage.RefreshTrafficReport(trafficDtos);
        }
コード例 #9
0
        public static List <TrafficReport> getTrafficDataFromBackend(Routing.Nodes.Point MinPoint, Point MaxPoint, double TrafficPropagationMaxDistance)
        {
            ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls
                                                   | SecurityProtocolType.Tls11
                                                   | SecurityProtocolType.Tls12
                                                   | SecurityProtocolType.Ssl3;
            List <TrafficReport> TrafficReport = new List <TrafficReport> {
            };
            TrafficJson TrafficJson            = new TrafficJson {
            };

            string url = reports_boundary + "?" +
                         "min_lat=" + MinPoint.Latitude + "&" +
                         "min_lon=" + MinPoint.Longitude + "&" +
                         "max_lat=" + MaxPoint.Latitude + "&" +
                         "max_lon=" + MaxPoint.Longitude;

            try
            {
                HttpWebRequest httpWebRequest = (HttpWebRequest)WebRequest.Create(url);
                httpWebRequest.Method      = WebRequestMethods.Http.Get;
                httpWebRequest.Accept      = "application/json";
                httpWebRequest.Credentials = new NetworkCredential(user, pw);
                httpWebRequest.UserAgent   = "RP client";

                HttpWebResponse response = (HttpWebResponse)httpWebRequest.GetResponse();
                log.Info(url);
                if (response != null && response.StatusCode == HttpStatusCode.OK)
                {
                    Stream       stream         = response.GetResponseStream();
                    StreamReader reader         = new StreamReader(stream, Encoding.UTF8);
                    String       responseString = reader.ReadToEnd();

                    TrafficJson = JsonConvert.DeserializeObject <TrafficJson>(responseString);

                    ///* ONLY FOR TESTING: add one fake traffic report in "Massagno, Praccio" */
                    //// Accident in "Massagno Praccio"
                    //TrafficJson.Report testReport = new TrafficJson.Report();
                    //TrafficJson.reports = new List<TrafficJson.Report>();
                    //testReport.category = "ACCIDENT";
                    //testReport.severity = "HIGH";
                    //testReport._id = "000000000000000000000001";
                    //testReport.loc = new TrafficJson.Loc();
                    //testReport.loc.coordinates = new List<double> { 8.943813, 46.01345 };
                    //testReport.loc.type = "Point";
                    //TrafficJson.reports.Add(testReport);
                    ///* END TESTING */

                    ///* ONLY FOR TESTING: add one fake traffic report in "Chiasso" */
                    //// Accident in "Chiasso"
                    //TrafficJson.Report testReport = new TrafficJson.Report();
                    //TrafficJson.reports = new List<TrafficJson.Report>();
                    //testReport.category = "ACCIDENT";
                    //testReport.severity = "MEDIUM";
                    //testReport._id = "000000000000000000000001";
                    //testReport.loc = new TrafficJson.Loc();
                    //testReport.loc.coordinates = new List<double> { 9.022495, 45.839520 };
                    //testReport.loc.type = "Point";
                    //TrafficJson.reports.Add(testReport);
                    ///* END TESTING */

                    if ((TrafficJson == null) || (TrafficJson.reports.Count == 0))
                    {
                        log.Warn("Traffic: no data available from backend");
                    }
                    else
                    {
                        foreach (TrafficJson.Report el in TrafficJson.reports)
                        {
                            TrafficReport Traffic = new TrafficReport(el._id, new Point(el.location.geometry.coordinates.Last(), el.location.geometry.coordinates.First()), el.category, el.severity, el.location.address, TrafficPropagationMaxDistance);
                            TrafficReport.Add(Traffic);
                        }
                    }
                }
                else
                {
                    log.Error("An error occured while calling the traffic data service: StatusCode=" + response.StatusCode);
                    return(null);
                }
            }
            catch (Exception ex)
            {
                log.Error("An error occured during the traffic data get: " + ex.ToString());
                return(null);
            }

            if (TrafficReport != null)
            {
                if (TrafficReport.Count == 0)
                {
                    log.Warn(TrafficReport.Count + " traffic reports received");
                }
                else
                {
                    log.Info(TrafficReport.Count + " traffic reports received");
                }
            }

            return(TrafficReport);
        }
コード例 #10
0
ファイル: TrafficReport.cs プロジェクト: karunasagark/ps
 private static Boolean KawigiEdit_RunTest(int testNum, string[] p0, string[] p1, Boolean hasAnswer, int p2)
 {
     Console.Write("Test " + testNum + ": [" + "{");
     for (int i = 0; p0.Length > i; ++i) {
         if (i > 0) {
             Console.Write(",");
         }
         Console.Write("\"" + p0[i] + "\"");
     }
     Console.Write("}" + "," + "{");
     for (int i = 0; p1.Length > i; ++i) {
         if (i > 0) {
             Console.Write(",");
         }
         Console.Write("\"" + p1[i] + "\"");
     }
     Console.Write("}");
     Console.WriteLine("]");
     TrafficReport obj;
     int answer;
     obj = new TrafficReport();
     DateTime startTime = DateTime.Now;
     answer = obj.bestRoute(p0, p1);
     DateTime endTime = DateTime.Now;
     Boolean res;
     res = true;
     Console.WriteLine("Time: " + (endTime - startTime).TotalSeconds + " seconds");
     if (hasAnswer) {
         Console.WriteLine("Desired answer:");
         Console.WriteLine("\t" + p2);
     }
     Console.WriteLine("Your answer:");
     Console.WriteLine("\t" + answer);
     if (hasAnswer) {
         res = answer == p2;
     }
     if (!res) {
         Console.WriteLine("DOESN'T MATCH!!!!");
     } else if ((endTime - startTime).TotalSeconds >= 2) {
         Console.WriteLine("FAIL the timeout");
         res = false;
     } else if (hasAnswer) {
         Console.WriteLine("Match :-)");
     } else {
         Console.WriteLine("OK, but is it right?");
     }
     Console.WriteLine("");
     return res;
 }
コード例 #11
0
 public override void setTrafficReport(TrafficReport TrafficReport)
 {
     this.TrafficReport = TrafficReport;
 }
コード例 #12
0
 public override void setTrafficReport(TrafficReport TrafficReport)
 {
     throw new NotImplementedException();
 }
コード例 #13
0
 /* Traffic functions */
 public abstract void setTrafficReport(TrafficReport TrafficReport);