Ejemplo n.º 1
0
        /// <summary>
        /// Ouverture d'une nouvelle instance de base de données.
        /// </summary>
        /// <param name="dataBaseName">Nom de la base de données.</param>
        /// <param name="description">Description du manager associé.</param>
        public void OpenDataBase(string dataBaseName, IManagerDescription description)
        {
            if (!IsEnabled)
            {
                return;
            }

            if (dataBaseName == null)
            {
                throw new ArgumentNullException("dataBaseName");
            }

            CounterDataBase db = new CounterDataBase(dataBaseName);

            lock (this) {
                if (_map.ContainsKey(dataBaseName))
                {
                    return;
                }

                _map.Add(dataBaseName, db);

                if (description != null)
                {
                    _mapDescription.Add(dataBaseName, description);

                    foreach (IMonitoringStore store in _monitoringStore)
                    {
                        ExceptionSafeCreateDatabase(store, dataBaseName, description);
                    }
                }
            }
        }
Ejemplo n.º 2
0
 /// <summary>
 /// Ajoute la description d'une base de données.
 /// </summary>
 /// <param name="databaseName">Nom de la base de données.</param>
 /// <param name="description">Description.</param>
 public void AddDatabaseDescription(string databaseName, IManagerDescription description)
 {
     if (!this.DatabaseDefinition.ContainsKey(databaseName))
     {
         this.DatabaseDefinition.Add(databaseName, description);
     }
 }
Ejemplo n.º 3
0
        /// <summary>
        /// Ajoute un nouveau store.
        /// </summary>
        /// <param name="store">Store.</param>
        public void AddMonitoringStore(IMonitoringStore store)
        {
            if (!IsEnabled)
            {
                return;
            }

            if (store == null)
            {
                throw new ArgumentNullException("store");
            }

            _monitoringStore.Add(store);

            // Enregistrement en base de données des bases déja enregistrés.
            foreach (string dataBaseName in _mapDescription.Keys)
            {
                IManagerDescription description = _mapDescription[dataBaseName];
                ExceptionSafeCreateDatabase(store, dataBaseName, description);
            }

            // Enregistrement en base de données des compteurs déja enregistrés.
            foreach (ICounterDefinition counter in _counterDefinitionRepository.Values)
            {
                ExceptionSafeCreateCounter(store, counter);
            }

            lock (_resetEvent) {
                if (!_threadStarted)
                {
                    _threadStarted = true;
                    _storageThread.Start();
                }
            }
        }
Ejemplo n.º 4
0
        /// <summary>
        /// Réalise le rendu du contrôle.
        /// </summary>
        /// <param name="writer">Writer HTML.</param>
        public override void RenderControl(HtmlTextWriter writer)
        {
            if (writer == null)
            {
                throw new ArgumentNullException("writer");
            }

            Context ctx = new Context(HttpContext.Current, this.ResolveUrl(this.HandlerPath));

            ctx.ClearAction();
            foreach (string param in _params.Keys)
            {
                ctx.AddParam(param, _params[param]);
            }

            writer.AddAttribute(HtmlTextWriterAttribute.Id, "managers");
            writer.RenderBeginTag(HtmlTextWriterTag.Div);

            SortedDictionary <int, string> sortMap = new SortedDictionary <int, string>();

            foreach (string databaseName in _databaseSet.DatabaseNames)
            {
                IManagerDescription description = this.DatabaseDefinition[databaseName];
                sortMap.Add(description.Priority, databaseName);
            }

            foreach (int priority in sortMap.Keys)
            {
                string databaseName             = sortMap[priority];
                IManagerDescription description = this.DatabaseDefinition[databaseName];

                writer.AddAttribute(HtmlTextWriterAttribute.Id, "manager");
                writer.RenderBeginTag(HtmlTextWriterTag.Div);

                writer.WriteLine("<h1 style=\"background-image: url('" + this.ResolveUrl(this.HandlerPath) + "?CONTENT=img_manager&MON_ID=" +
                                 description.Image + "');\">");

                writer.WriteLine(description.Name);
                writer.WriteLine("</h1>");
                writer.WriteLine("<div id=\"description\">");

                IHyperCube hyperCube = _databaseSet.GetDatabase(databaseName);
                HtmlPageHelper.ToSummary(hyperCube, ctx, writer);
                HtmlPageHelper.ToTable(hyperCube, ctx, writer);

                writer.WriteLine("</div>"); // description

                writer.RenderEndTag();
            }

            writer.RenderEndTag();
        }
Ejemplo n.º 5
0
        /// <summary>
        /// Rendu html des managers.
        /// </summary>
        /// <param name="context">Context courant.</param>
        /// <param name="writer">Writer HTML.</param>
        private static void RenderManagers(Context context, HtmlTextWriter writer)
        {
            // Rendu du reset global.
            writer.Write("<div>");
            writer.WriteLine("<ul>");
            writer.Write("<li>");
            writer.WriteLine(HtmlPageRenderer.GetLink(context.Reset("ALL"), "Tout remettre à zéro", true));
            writer.WriteLine("</li>");
            writer.WriteLine("</ul>");
            writer.WriteLine("</div>");

            writer.WriteLine("<div id=\"managers\">");
            writer.WriteLine("</div>");

            CurrentContext = context;

            foreach (IManager manager in ManagerContainer.Instance.ManagerList)
            {
                writer.WriteLine("<div id=\"manager\">");

                IManagerDescription description = manager.Description;
                string name  = (description != null) ? description.Name : manager.GetType().Name;
                string image = (description != null) ? description.Image : "misc.png";

                writer.WriteLine("<h1 style=\"background-image: url('?CONTENT=img_manager&MON_ID=" + image + "');\">");
                writer.WriteLine(name);
                writer.WriteLine("</h1>");

                if (description != null)
                {
                    writer.WriteLine("<div id=\"description\">");

                    // On ne passe pas le contexte opour ne pas créer une adhérence au niveau de l'API.
                    description.ToHtml(writer);
                    writer.WriteLine("</div>"); // description
                }

                writer.WriteLine("</div>"); // manager
                writer.WriteLine("</td>");
            }

            writer.WriteLine("</div>");
        }
Ejemplo n.º 6
0
        /// <summary>
        /// Traite une requête pour du contenu attaché à la page.
        /// </summary>
        /// <param name="context">Contexte HTTP.</param>
        /// <param name="requestContext">Contexte de la requête.</param>
        private static void ProcessContentRequest(HttpContext context, Context requestContext)
        {
            if (requestContext.Content.Equals("img_manager"))
            {
                string mimeType = null;
                IManagerDescription managerDescription = null;

                foreach (IManager manager in ManagerContainer.Instance.ManagerList)
                {
                    IManagerDescription description = manager.Description;
                    if (description != null && description.Image != null &&
                        description.Image.Equals(requestContext.Id))
                    {
                        managerDescription = description;
                        break;
                    }
                }

                if (managerDescription == null)
                {
                    byte[] imageData = IR.Misc_png;
                    mimeType = "image/png";
                    context.Response.ContentType = mimeType;
                    context.Response.OutputStream.Write(imageData, 0, imageData.Length);
                }
                else
                {
                    context.Response.ContentType = managerDescription.ImageMimeType;
                    byte[] img = managerDescription.ImageData;
                    context.Response.OutputStream.Write(img, 0, img.Length);
                }
            }
            else if (requestContext.Content.Equals("sparklines.png"))
            {
                context.Response.ContentType = "image/png";
                CounterDataBase counterDataBase = Analytics.Instance.GetDataBase(requestContext.Id);
                HtmlPageRenderer.ToChart(counterDataBase.HyperCube, requestContext, context.Response.OutputStream);
            }
            else
            {
                throw new NotImplementedException();
            }
        }
Ejemplo n.º 7
0
 private static void ExceptionSafeCreateDatabase(IMonitoringStore store, string dataBaseName, IManagerDescription description)
 {
     try {
         store.CreateDatabase(new DatabaseDefinition(dataBaseName, description));
     } catch (Exception e) {
         ILog log = LogManager.GetLogger("Monitoring");
         if (log.IsErrorEnabled)
         {
             log.Error("Erreur de persistance du monitoring.", e);
         }
     }
 }
Ejemplo n.º 8
0
 /// <summary>
 /// Crée une nouvelle définition de base de données associée à un manager.
 /// </summary>
 /// <param name="name">Nom de la base de données.</param>
 /// <param name="managerDescription">Description du manager.</param>
 internal DatabaseDefinition(string name, IManagerDescription managerDescription)
 {
     _managerDescription = managerDescription;
     _name = name;
 }