コード例 #1
0
ファイル: WCFService.cs プロジェクト: snakefoot/snakeeyes-net
        public override void WriteLine(string message)
        {
            ProbeHistory probeHistory;

            if (!_probeStates.TryGetValue("(Console)", out probeHistory))
            {
                ProbeInfo probeInfo = new ProbeInfo();
                probeInfo.Name = "(Console)";
                if (_probes.Probes == null)
                {
                    _probes.Probes = new List <ProbeInfo>();
                }
                _probes.Probes.Add(probeInfo);

                probeHistory         = new ProbeHistory();
                probeHistory.Name    = "(Console)";
                probeHistory.History = new List <ProbeState>();
                _probeStates.Add(probeHistory.Name, probeHistory);
            }

            ProbeState probeState = new ProbeState();

            probeState.Timestamp = DateTime.Now.ToString("yyyy'-'MM'-'dd' 'HH':'mm':'ss");
            probeState.Message   = message;
            AddProbeState(probeState, ref probeHistory);
        }
コード例 #2
0
ファイル: WCFService.cs プロジェクト: snakefoot/snakeeyes-net
        void AddProbeState(ProbeState probeState, ref ProbeHistory probeHistory)
        {
            probeHistory.History.Insert(0, probeState);
            probeHistory.History.RemoveAll(delegate(ProbeState state) { return(DateTime.Now.Subtract(DateTime.Parse(state.Timestamp)) > TimeSpan.FromDays(1)); });
            string    name      = probeHistory.Name;
            ProbeInfo probeInfo = _probes.Probes.Find(delegate(ProbeInfo probe) { return(probe.Name == name); });

            if (probeInfo != null)
            {
                probeInfo.UpdateState(probeState);
            }
        }
コード例 #3
0
ファイル: WCFService.cs プロジェクト: snakefoot/snakeeyes-net
        public void RegisterProbe(TraceSource probe)
        {
            probe.Listeners.Add(this);

            ProbeInfo probeInfo = new ProbeInfo();

            probeInfo.Name = probe.Name;
            if (_probes.Probes == null)
            {
                _probes.Probes = new List <ProbeInfo>();
            }
            _probes.Probes.Add(probeInfo);

            ProbeHistory probeHistory = new ProbeHistory();

            probeHistory.Name    = probe.Name;
            probeHistory.History = new List <ProbeState>();
            _probeStates.Add(probe.Name, probeHistory);
        }
コード例 #4
0
ファイル: WCFService.cs プロジェクト: snakefoot/snakeeyes-net
        public Stream CurrentStatus()
        {
            // Open "Status.html" and let javascript query for nodes and history (GWT ?)

            // Implement Search and Replace framework for filling into html-template
            MemoryStream stream    = new MemoryStream();
            XmlWriter    xmlWriter = XmlWriter.Create(stream);

            xmlWriter.WriteStartDocument();
            xmlWriter.WriteRaw(@"<!DOCTYPE html PUBLIC ""-//W3C//DTD XHTML 1.0 Strict//EN"" ""http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"">");
            {
                xmlWriter.WriteStartElement("html", "http://www.w3.org/1999/xhtml");
                {
                    xmlWriter.WriteStartElement("head");
                    xmlWriter.WriteElementString("title", "SnakeEyes Status");
                    xmlWriter.WriteStartElement("link");
                    xmlWriter.WriteAttributeString("rel", "stylesheet");
                    xmlWriter.WriteAttributeString("href", "../files/status.css");
                    xmlWriter.WriteAttributeString("type", "text/css");
                    xmlWriter.WriteEndElement();
                    xmlWriter.WriteEndElement();
                }
                {
                    xmlWriter.WriteStartElement("body");
                    foreach (ProbeInfo probe in _probes.Probes)
                    {
                        xmlWriter.WriteStartElement("div");
                        xmlWriter.WriteAttributeString("class", "probeInfo");
                        xmlWriter.WriteAttributeString("id", probe.Name);

                        {
                            xmlWriter.WriteStartElement("div");
                            xmlWriter.WriteAttributeString("class", "probeName");
                            xmlWriter.WriteValue(probe.Name);
                            xmlWriter.WriteEndElement();

                            xmlWriter.WriteStartElement("div");
                            xmlWriter.WriteAttributeString("class", "probeLastStatus");
                            if (probe.Status != null)
                            {
                                xmlWriter.WriteValue(probe.Status);
                            }
                            xmlWriter.WriteEndElement();

                            xmlWriter.WriteStartElement("div");
                            xmlWriter.WriteAttributeString("class", "probeLastEventId");
                            xmlWriter.WriteValue(probe.EventId);
                            xmlWriter.WriteEndElement();

                            xmlWriter.WriteStartElement("div");
                            xmlWriter.WriteAttributeString("class", "probeLastMessage");
                            if (probe.Message != null)
                            {
                                xmlWriter.WriteValue(probe.Message);
                            }
                            xmlWriter.WriteEndElement();

                            xmlWriter.WriteStartElement("div");
                            xmlWriter.WriteAttributeString("class", "probeLastUpdate");
                            if (probe.Timestamp != null)
                            {
                                xmlWriter.WriteValue(probe.Timestamp);
                            }
                            xmlWriter.WriteEndElement();

                            xmlWriter.WriteStartElement("div");
                            xmlWriter.WriteAttributeString("class", "probeLastValue");
                            if (probe.Value != null)
                            {
                                xmlWriter.WriteValue(probe.Value);
                            }
                            xmlWriter.WriteEndElement();
                        }
                        xmlWriter.WriteEndElement();

                        xmlWriter.WriteStartElement("div");
                        xmlWriter.WriteAttributeString("class", "probeHistory");
                        xmlWriter.WriteAttributeString("id", probe.Name);
                        {
                            ProbeHistory probeHistory = GetProbeHistory(probe.Name);
                            if (probeHistory != null)
                            {
                                foreach (ProbeState probeEvent in probeHistory.History)
                                {
                                    xmlWriter.WriteStartElement("div");
                                    xmlWriter.WriteAttributeString("class", "probeState");
                                    xmlWriter.WriteAttributeString("id", probe.Timestamp);

                                    {
                                        xmlWriter.WriteStartElement("div");
                                        xmlWriter.WriteAttributeString("class", "probeStatus");
                                        if (probeEvent.Status != null)
                                        {
                                            xmlWriter.WriteValue(probeEvent.Status);
                                        }
                                        xmlWriter.WriteEndElement();

                                        xmlWriter.WriteStartElement("div");
                                        xmlWriter.WriteAttributeString("class", "probeEventId");
                                        xmlWriter.WriteValue(probeEvent.EventId);
                                        xmlWriter.WriteEndElement();

                                        xmlWriter.WriteStartElement("div");
                                        xmlWriter.WriteAttributeString("class", "probeMessage");
                                        if (probeEvent.Message != null)
                                        {
                                            xmlWriter.WriteValue(probeEvent.Message);
                                        }
                                        xmlWriter.WriteEndElement();

                                        xmlWriter.WriteStartElement("div");
                                        xmlWriter.WriteAttributeString("class", "probeTimestamp");
                                        if (probeEvent.Timestamp != null)
                                        {
                                            xmlWriter.WriteValue(probeEvent.Timestamp);
                                        }
                                        xmlWriter.WriteEndElement();

                                        xmlWriter.WriteStartElement("div");
                                        xmlWriter.WriteAttributeString("class", "probeValue");
                                        if (probeEvent.Value != null)
                                        {
                                            xmlWriter.WriteValue(probeEvent.Value);
                                        }
                                        xmlWriter.WriteEndElement();
                                    }

                                    xmlWriter.WriteEndElement();
                                }
                            }
                        }
                        xmlWriter.WriteEndElement();
                    }
                    xmlWriter.WriteEndElement();
                }
                xmlWriter.WriteEndElement();
            }
            xmlWriter.WriteEndDocument();
            xmlWriter.Flush();

            stream.Position = 0;

            if (WebOperationContext.Current != null)
            {
                WebOperationContext.Current.OutgoingResponse.ContentType = "text/html";
            }
            return(stream);
        }