//------------------------------------------------------------------------------
        //
        // Method: ProcessStatusMetricEvent
        //
        //------------------------------------------------------------------------------
        /// <summary>
        /// Writes a status metric event to the database.
        /// </summary>
        /// <param name="statusMetricEvent">The status metric event to write.</param>
        protected override void ProcessStatusMetricEvent(StatusMetricEventInstance statusMetricEvent)
        {
            StringBuilder sqlInsertStatement = new StringBuilder();

            sqlInsertStatement.Append("INSERT ");
            sqlInsertStatement.Append("INTO    StatusMetricInstances ");
            sqlInsertStatement.Append("        ( CtgrId, ");
            sqlInsertStatement.Append("          SmetId, ");
            sqlInsertStatement.Append("          [Value], ");
            sqlInsertStatement.Append("          [Timestamp] ");
            sqlInsertStatement.Append("          ) ");
            sqlInsertStatement.Append("SELECT  Ctgr.CtgrId, ");
            sqlInsertStatement.Append("        Smet.SmetId, ");
            sqlInsertStatement.Append("        " + statusMetricEvent.Metric.Value.ToString() + ", ");
            sqlInsertStatement.Append("        '" + statusMetricEvent.EventTime.ToString("yyyy-MM-dd HH:mm:ss") + "' ");
            sqlInsertStatement.Append("FROM    StatusMetrics Smet, ");
            sqlInsertStatement.Append("        Categories Ctgr ");
            sqlInsertStatement.Append("WHERE   Smet.Name = '" + statusMetricEvent.Metric.Name + "' ");
            sqlInsertStatement.Append("  AND   Ctgr.Name = '" + metricCategoryName + "';");

            dbCommand.CommandText = sqlInsertStatement.ToString();

            try
            {
                dbCommand.ExecuteNonQuery();
            }
            catch (Exception e)
            {
                exceptionHandler.Handle(new Exception("Failed to insert instance of status metric '" + statusMetricEvent.Metric.Name + "'.", e));
            }
        }
 //------------------------------------------------------------------------------
 //
 // Method: ProcessStatusMetricEvent
 //
 //------------------------------------------------------------------------------
 /// <summary>
 /// Stores the value contained in the specified status metric event.
 /// </summary>
 /// <param name="statusMetricEvent">The status metric event.</param>
 protected override void ProcessStatusMetricEvent(StatusMetricEventInstance statusMetricEvent)
 {
     if (statusMetricLatestValues.ContainsKey(statusMetricEvent.MetricType) == false)
     {
         statusMetricLatestValues.Add(statusMetricEvent.MetricType, new StatusMetricValueContainer(statusMetricEvent.Metric));
     }
     statusMetricLatestValues[statusMetricEvent.MetricType].Set(statusMetricEvent.Metric.Value);
 }
Ejemplo n.º 3
0
        protected override void ProcessStatusMetricEvent(StatusMetricEventInstance statusMetricEvent)
        {
            StringBuilder stringBuilder = InitializeStringBuilder(statusMetricEvent.EventTime.ToLocalTime());

            stringBuilder.Append(statusMetricEvent.Metric.Name);
            AppendSeparatorCharacter(stringBuilder);
            stringBuilder.Append(statusMetricEvent.Metric.Value);
            streamWriter.WriteLine(stringBuilder.ToString());
            streamWriter.Flush();
        }
 //------------------------------------------------------------------------------
 //
 // Method: ProcessStatusMetricEvent
 //
 //------------------------------------------------------------------------------
 /// <summary>
 /// Processes a logged status metric event.
 /// </summary>
 /// <param name="statusMetricEvent">The status metric event to process.</param>
 /// <remarks>Implementations of this method define how a status metric event should be processed after it has been retrieved from the internal buffer queue.  The event could for example be written to a database, or to the console.</remarks>
 protected abstract void ProcessStatusMetricEvent(StatusMetricEventInstance statusMetricEvent);