Example #1
0
        public void StoreInstance(MeterInstance instance)
        {
            // Generate the table store entity
            var entity = MeterInstanceTableEntity.FromModel(instance);

            // Merge
            InsertOrMerge(entity, StorageTable);
        }
Example #2
0
        public MeterCheckResult checkMeterInstance(MeterInstance instance)
        {
            var meterGap = DateTime.Now - instance.MeterInstanceTimestamp;

            if (meterGap.TotalSeconds > Convert.ToDouble(instance.MeterValue))
            {
                return(new MeterCheckResult(instance, false, String.Format("Last Heartbeat {0} seconds ago", meterGap.TotalSeconds)));
            }

            return(new MeterCheckResult(instance, true));
        }
Example #3
0
 public static MeterInstanceTableEntity FromModel(MeterInstance instance)
 {
     return(new MeterInstanceTableEntity(instance.MeterId, instance.MeterInstanceId)
     {
         MeterName = instance.MeterName,
         MeterCategory = instance.MeterCategory,
         MeterDisplayOrder = instance.MeterDisplayOrder,
         MeterType = Convert.ToDouble(Convert.ToInt32(instance.MeterType)),
         MeterValue = Convert.ToDouble(instance.MeterValue),
         MeterInstanceValue = Convert.ToDouble(instance.MeterInstanceValue),
         MeterInstanceTimestamp = instance.MeterInstanceTimestamp.ToString("yyyy-MM-ddTHH:mm:ssZ")
     });
 }
Example #4
0
        public void ExecuteServerSideChecks()
        {
            // load the meter definitions
            var definitions = MeterManagerRepository.LoadServerBasedDefinitions();

            // execute the check
            foreach (var definition in definitions)
            {
                // generate the instance for the heartbeat
                var meterInstance = new MeterInstance(definition);
                meterInstance.MeterValue             = definition.MeterServerCheckInterval;
                meterInstance.MeterInstanceId        = "Server." + definition.MeterId + ".HeartBeat";
                meterInstance.MeterInstanceTimestamp = DateTime.Now;
                MeterManagerRepository.StoreInstance(meterInstance);

                // generate an instance for the http return value
                var meterInstanceHttpResult = new MeterInstance(definition);
                meterInstanceHttpResult.MeterType              = nMeterTypes.EqualsValue;
                meterInstanceHttpResult.MeterValue             = definition.MeterValue;
                meterInstanceHttpResult.MeterInstanceId        = "Server." + definition.MeterId + ".WebCheck";
                meterInstanceHttpResult.MeterInstanceTimestamp = DateTime.Now;

                // check
                try
                {
                    var request = WebRequest.CreateHttp(definition.MeterServerCheckInformation);
                    request.Method  = "HEAD";
                    request.Timeout = 1000;
                    var response = request.GetResponse() as HttpWebResponse;
                    meterInstanceHttpResult.MeterInstanceValue = Convert.ToInt32(response.StatusCode);
                }
                catch (Exception e)
                {
                    if (e is WebException && (((WebException)e).Response as HttpWebResponse) != null)
                    {
                        meterInstanceHttpResult.MeterInstanceValue = Convert.ToInt32(((e as WebException).Response as HttpWebResponse).StatusCode);
                    }
                    else
                    {
                        meterInstanceHttpResult.MeterInstanceValue = -1;
                    }
                }

                // Logging
                Console.WriteLine("Checkking URL: " + definition.MeterServerCheckInformation + " - Result: " + meterInstanceHttpResult.MeterInstanceValue);

                // generate instances per check
                MeterManagerRepository.StoreInstance(meterInstanceHttpResult);
            }
        }
Example #5
0
        public MeterInstance UpdateMeter(String meterId, String meterInstanceId, Decimal meterInstanceValue)
        {
            // lookup if we have the registered meter
            if (!meterCache.ContainsKey(meterId))
            {
                throw new Exception("Meterdefinition for meter with id " + meterId + " is not registered");
            }

            // update the meter by creating a new meter instance and storing this in the repository
            var meterInstance = new MeterInstance(meterCache[meterId]);

            meterInstance.MeterInstanceId        = meterInstanceId;
            meterInstance.MeterInstanceValue     = meterInstanceValue;
            meterInstance.MeterInstanceTimestamp = DateTime.Now;

            // store the meter instance
            meterManagerRepository.StoreInstance(meterInstance);

            // done
            return(meterInstance);
        }
Example #6
0
 public MeterCheckResult checkMeterInstance(MeterInstance instance)
 {
     return(new MeterCheckResult(instance, (instance.MeterInstanceValue < instance.MeterValue)));
 }
Example #7
0
 public MeterCheckResult(MeterInstance meterInstance, Boolean checkPassed, String checkAlarmMessage)
     : base(meterInstance)
 {
     MeterCheckPassed       = checkPassed;
     MeterCheckAlarmMessage = checkAlarmMessage;
 }
Example #8
0
 public MeterCheckResult(MeterInstance meterInstance, Boolean checkPassed)
     : this(meterInstance, checkPassed, String.Empty)
 {
 }
Example #9
0
 public void StoreInstance(MeterInstance instance)
 {
     meterInstanceRepository.StoreInstance(instance);
 }