private void UdpSocket_MessageReceived(DatagramSocket sender, DatagramSocketMessageReceivedEventArgs args) { try { var dr = args.GetDataReader(); var udpResult = ReadDataReader(UdpStartTime, dr); UdpResults.TryAdd(sender.Information.LocalPort, udpResult); } catch (Exception ex) { // This should not every actually happen Stats.NExceptions++; Log($"TIME: CLIENT: ERROR {ex.Message}"); var delta = DateTime.UtcNow.Subtract(UdpStartTime).TotalSeconds; var udpResult = TimeResult.MakeFailed(ex, delta); UdpResults.TryAdd(sender.Information.LocalPort, udpResult); } // Don't need the socket after we get the first message sender.MessageReceived -= UdpSocket_MessageReceived; sender.Dispose(); }
private TimeResult ReadDataReader(DateTime startTime, DataReader dr) { uint count = dr.UnconsumedBufferLength; if (count >= 4) { var rawdata = dr.ReadUInt32(); var result = TimeServer_Rfc_868.TimeConversion.Convert(rawdata); // Convert to now var stringresult = $"{result.ToString()} raw={rawdata} {rawdata:X}"; Log($"{stringresult}"); // Will be printed on the screen. var delta = DateTime.UtcNow.Subtract(startTime).TotalSeconds; return(TimeResult.MakeSucceeded(result.ToUnixTimeSeconds(), stringresult, delta)); } else { var stringresult = "ERROR:No results!"; Log($"TIME: CLIENT:{stringresult}"); var delta = DateTime.UtcNow.Subtract(startTime).TotalSeconds; return(TimeResult.MakeFailed(SocketErrorStatus.HttpInvalidServerResponse, delta)); } }
public void SetValue(double value, SourceValue sourceValue = SourceValue.Digits, TimeResult timeValueResult = TimeResult.None, TimeResult timeShortestVariant = TimeResult.None) { string strFormat = string.Empty; if (timeShortestVariant > TimeResult.None && timeShortestVariant < timeValueResult) { var ts = new TimeShort(value, this.timeResultStrings, sourceValue); strFormat = ts.GetShortestString(timeShortestVariant); } else { strFormat = this.GetFormatTimeString(this.timeResultStrings, timeValueResult); } switch (sourceValue) { case SourceValue.Seconds: this.SetText(new TimeFormatFromSeconds() { format = strFormat }.GetValue(value)); return; case SourceValue.Milliseconds: this.SetText(new TimeFormatFromMilliseconds() { format = strFormat }.GetValue(value)); return; } }
private string GetFormatTimeString(TimeResultStrings ts, TimeResult result) { return(new TimeFormat(ts, result).GetString()); }
public TimeFormat(TimeResultStrings timeResultStrings, TimeResult result) { this.timeResultStrings = timeResultStrings; this.result = result; }
public void Handle(TimeResult message) { AppendToLastOutputLine(message.ElapsedMilliseconds + "ms"); }
protected void SetResultType(SimpleTypes resultType) { SimpleType = resultType; switch (resultType) { case SimpleTypes.Boolean: GetIntResultOut = GetBoolAsInt; GetStrResultOut = GetBoolAsStr; GetFloatResultOut = GetBoolAsFloat; GetDateTimeResultOut = GetBoolAsDateTime; GetTimeResultOut = GetBoolAsTime; GetGeomResultOut = GetBoolAsGeom; break; case SimpleTypes.String: GetBoolResultOut = GetStrAsBool; GetIntResultOut = GetStrAsInt; GetFloatResultOut = GetStrAsFloat; GetDateTimeResultOut = GetStrAsDateTime; GetTimeResultOut = GetStrAsTime; GetGeomResultOut = GetStrAsGeom; break; case SimpleTypes.Integer: GetBoolResultOut = GetIntAsBool; GetStrResultOut = GetIntAsStr; GetFloatResultOut = GetIntAsFloat; GetDateTimeResultOut = GetIntAsDateTime; GetTimeResultOut = GetIntAsTime; GetGeomResultOut = GetIntAsGeom; break; case SimpleTypes.Float: GetBoolResultOut = GetFloatAsBool; GetStrResultOut = GetFloatAsStr; GetIntResultOut = GetFloatAsInt; GetDateTimeResultOut = GetFloatAsDateTime; GetTimeResultOut = GetFloatAsTime; GetGeomResultOut = GetFloatAsGeom; break; case SimpleTypes.Date: GetBoolResultOut = GetDateTimeAsBool; GetStrResultOut = GetDateAsStr; GetFloatResultOut = GetDateTimeAsFloat; GetIntResultOut = GetDateTimeAsInt; GetTimeResultOut = GetDateTimeAsTime; GetGeomResultOut = GetDateTimeAsGeom; break; case SimpleTypes.DateTime: GetBoolResultOut = GetDateTimeAsBool; GetStrResultOut = GetDateTimeAsStr; GetFloatResultOut = GetDateTimeAsFloat; GetIntResultOut = GetDateTimeAsInt; GetTimeResultOut = GetDateTimeAsTime; GetGeomResultOut = GetDateTimeAsGeom; break; case SimpleTypes.Time: GetBoolResultOut = GetTimeAsBool; GetStrResultOut = GetTimeAsStr; GetFloatResultOut = GetTimeAsFloat; GetIntResultOut = GetTimeAsInt; GetDateTimeResultOut = GetTimeAsDateTime; GetGeomResultOut = GetTimeAsGeom; break; case SimpleTypes.Geometry: GetBoolResultOut = GetGeomAsBool; GetStrResultOut = GetGeomAsStr; GetFloatResultOut = GetGeomAsFloat; GetIntResultOut = GetGeomAsInt; GetDateTimeResultOut = GetGeomAsDateTime; GetTimeResultOut = GetGeomAsTime; break; case SimpleTypes.Blob: GetBoolResultOut = GetBlobAsBool; GetStrResultOut = GetBlobAsStr; GetFloatResultOut = GetBlobAsFloat; GetIntResultOut = GetBlobAsInt; GetDateTimeResultOut = GetBlobAsDateTime; GetTimeResultOut = GetBlobAsTime; break; } }
private bool IsSuccessfulResponse(TimeResult result, HttpStatusCode? expectedStatusCode) { TimeResult<HttpWebResponse> httpResult = result as TimeResult<HttpWebResponse>; if (httpResult == null) { return false; } var response = httpResult.Result; var statusCode = (int)response.StatusCode; return (expectedStatusCode == null && statusCode >= 200 && statusCode < 300) || (expectedStatusCode != null && ((int)expectedStatusCode.Value == statusCode)); }
private async Task ReportFailure(TimeResult lastResult) { // Try to grab a trace route IEnumerable<IPAddress> traceRoute = null; try { traceRoute = await NetworkHelpers.TraceRoute(Url.Host); } catch (PingException pex) { // Report a monitor failure MonitorFailure(String.Format("Failed to collect trace route to {0}. {1}", Url.AbsoluteUri, pex)); } if (!lastResult.IsSuccess) { Failure(String.Format("Definite Failure. Exception Requesting Page: {0}.\nTrace Route:\n{1}", lastResult.Exception.GetBaseException().Message, FormatTraceRoute(traceRoute))); return; } else if (!IsSuccessfulResponse(lastResult, ExpectedStatusCode)) { var httpResult = lastResult as TimeResult<HttpWebResponse>; if (httpResult != null) { Failure(String.Format("Definite Failure. HTTP Error: {0} {1}.\nTrace Route: {2}", httpResult.Result.StatusCode, httpResult.Result.StatusCode, FormatTraceRoute(traceRoute))); } return; } }
//Метод записи результатов тестов в поля на форме. public void RecordResult() { LabelResult.Content = TestResult + "%"; LabelTimeResult.Content = TimeResult.ToString("mm\\:ss"); }
public void SetValue(double value, SourceValue sourceValue = SourceValue.Digits, TimeResult timeValueResult = TimeResult.None, TimeResult timeShortestVariant = TimeResult.None) { var currentData = new ValueData() { value = value, sourceValue = sourceValue, timeValueResult = timeValueResult, timeShortestVariant = timeShortestVariant, isCreated = true, }; if (this.lastValueData == currentData) { return; } this.lastValueData = currentData; this.lastText = null; string strFormat; if (timeShortestVariant > TimeResult.None && timeShortestVariant < timeValueResult) { var ts = new TimeShort(value, this.timeResultStrings, sourceValue); strFormat = ts.GetShortestString(timeShortestVariant); } else { strFormat = this.GetFormatTimeString(this.timeResultStrings, timeValueResult); } switch (sourceValue) { case SourceValue.Digits: this.SetText(value.ToString()); return; case SourceValue.Seconds: this.SetText(new TimeFormatFromSeconds() { format = strFormat }.GetValue(value)); return; case SourceValue.Milliseconds: this.SetText(new TimeFormatFromMilliseconds() { format = strFormat }.GetValue(value)); return; } }