public void StoreInstance(MeterInstance instance) { // Generate the table store entity var entity = MeterInstanceTableEntity.FromModel(instance); // Merge InsertOrMerge(entity, StorageTable); }
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)); }
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") }); }
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); } }
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); }
public MeterCheckResult checkMeterInstance(MeterInstance instance) { return(new MeterCheckResult(instance, (instance.MeterInstanceValue < instance.MeterValue))); }
public MeterCheckResult(MeterInstance meterInstance, Boolean checkPassed, String checkAlarmMessage) : base(meterInstance) { MeterCheckPassed = checkPassed; MeterCheckAlarmMessage = checkAlarmMessage; }
public MeterCheckResult(MeterInstance meterInstance, Boolean checkPassed) : this(meterInstance, checkPassed, String.Empty) { }
public void StoreInstance(MeterInstance instance) { meterInstanceRepository.StoreInstance(instance); }