Пример #1
0
        private static DayExportEntriesOverview CreateOverview(DailyReport report)
        {
            var timeSpan = default(TimeSpan);

            report.SortedReportEntries.ForEach(entry => timeSpan += entry.CalculateReportedMinutes());

            var timeDescription = new TimeDescription(timeSpan);

            return(new DayExportEntriesOverview(timeDescription));
        }
Пример #2
0
        private static DayExportReportEntry CreateFromReportEntries(IGrouping <string, ReportEntry> entries)
        {
            var reportedTimeSpans = default(TimeSpan);

            entries.ForEach(f => reportedTimeSpans += f.CalculateReportedMinutes());

            var timeDescription = new TimeDescription(reportedTimeSpans);

            return(new DayExportReportEntry(timeDescription, entries.Key));
        }
Пример #3
0
        public void StopWatcher(string key, Dictionary <string, string> properties, Dictionary <string, double> measures)
        {
            if (!_cache.ContainsKey(key))
            {
                return;
            }

            var time = _cache[key];

            time.Watcher.Stop();

            properties = properties ?? new Dictionary <string, string>();
            measures   = measures ?? new Dictionary <string, double>();
            measures.Add("ms", time.Watcher.ElapsedMilliseconds);

            var value = new TimeDescription(time.Name, time.Key, time.Telemetry, time.Debug, time.Watcher, time.Level,
                                            properties, measures);

            _timeTracer?.Log($"{value.FormatLevel()}{key.Split(':')[0]}: {value.Format()}");

            _cache[key] = value;
            _count--;
        }
 public DayExportEntriesOverview(TimeDescription timeDescription)
 {
     TimeDescription = timeDescription;
 }
Пример #5
0
        public static SDP Parse(string data)
        {
            TimeDescription  currentTd = null;
            MediaDescription currentMd = null;

            try
            {
                SDP sdp = new SDP();

                var lines = Regex.Split(data, CRLF);

                foreach (var line in lines)
                {
                    var trimmed = line.Trim();

                    if (trimmed.StartsWith("v="))
                    {
                        var value = ParseKeyValueLine(trimmed, "Session Version");

                        decimal version;
                        if (!decimal.TryParse(value, out version))
                        {
                            // TODO(frank.lamar): warn.
                        }
                        else
                        {
                            sdp.Version = version;
                        }
                    }
                    else if (trimmed.StartsWith("o="))
                    {
                        sdp.Origin = SessionOriginator.Parse(trimmed);
                    }
                    else if (trimmed.StartsWith("s="))
                    {
                        sdp.SessionName = ParseKeyValueLine(trimmed, "Session Name");
                    }
                    else if (trimmed.StartsWith("i="))
                    {
                        var info = ParseKeyValueLine(trimmed, "Session Information");

                        if (currentMd != null)
                        {
                            // Media Title at the media level
                            currentMd.MediaTitle = info;
                        }
                        else
                        {
                            // Session information at the Session level.
                            sdp.SessionInformation = info;
                        }
                    }
                    else if (trimmed.StartsWith("u="))
                    {
                        var value = ParseKeyValueLine(trimmed, "Session URI");

                        Uri uri;
                        if (!Uri.TryCreate(value, UriKind.RelativeOrAbsolute, out uri))
                        {
                            throw new SdpParseException($"Unable to parse malformed Session URI {value}");
                        }

                        sdp.URI = uri;
                    }
                    else if (trimmed.StartsWith("e="))
                    {
                        sdp.Email = ParseKeyValueLine(trimmed, "Session Email");
                    }
                    else if (trimmed.StartsWith("p="))
                    {
                        sdp.PhoneNumber = ParseKeyValueLine(trimmed, "Session Phone Number");
                    }
                    else if (trimmed.StartsWith("c="))
                    {
                        var connection = ConnectionInfo.Parse(trimmed);

                        if (currentMd != null)
                        {
                            // Media Description connection
                            currentMd.Connection = connection;
                        }
                        else
                        {
                            // Session level connection
                            sdp.Connection = connection;
                        }
                    }
                    else if (trimmed.StartsWith("b="))
                    {
                        var bandwidth = BandwidthInfo.Parse(trimmed);

                        if (currentMd != null)
                        {
                            // Media Description bandwidth
                            currentMd.Bandwidths.Add(bandwidth);
                        }
                        else
                        {
                            // Session level bandwidth
                            sdp.Bandwidths.Add(bandwidth);
                        }
                    }
                    else if (trimmed.StartsWith("t="))
                    {
                        currentTd = TimeDescription.Parse(trimmed);
                        sdp.TimeDescriptions.Add(currentTd);
                    }
                    else if (trimmed.StartsWith("r="))
                    {
                        if (currentTd != null)
                        {
                            currentTd.RepeatTimes.Add(RepeatTime.Parse(trimmed));
                        }

                        // Just ignore the repeate time if no current time was defined.
                    }
                    else if (trimmed.StartsWith("z="))
                    {
                        sdp.TimeZone = TimeZone.Parse(trimmed);
                    }
                    else if (trimmed.StartsWith("a="))
                    {
                        if (currentMd != null)
                        {
                            // Media Description level attribute
                            currentMd.Attributes.Add(Attribute.Parse(trimmed));
                        }
                        else
                        {
                            // Session level attribute
                            sdp.Attributes.Add(Attribute.Parse(trimmed));
                        }
                    }
                    else if (trimmed.StartsWith("m="))
                    {
                        currentMd = MediaDescription.Parse(trimmed);
                        sdp.MediaDescriptions.Add(currentMd);
                    }
                } // end foreach...

                return(sdp);
            }
            catch (Exception e)
            {
                if (e is SdpParseException)
                {
                    throw e;
                }

                throw new SdpParseException("Failed to parse session description", e);
            }
        }
Пример #6
0
 public override TimeSpan?TimeSpan2Now()
 {
     return(SpecifyTimeMode(TimeDescription.Trim()));
 }
Пример #7
0
 public override TimeSpan? TimeSpan2Now()
 {
     return AddMode(TimeDescription.Trim());
 }