From 1235aecf3506e668b6328ed090bb3d0a036e39fe Mon Sep 17 00:00:00 2001 From: Tiru Srikantha Date: Thu, 23 Jul 2015 11:24:08 -0700 Subject: [PATCH] Fixes a bunch of bugs 1. KV.Acquire was not writing Value. 2. Nanosecond time converter was actually converting to microseconds. 3. Duration would just return "ms" if the timespan passed in was Timespan.Zero --- Consul/GoDuration.cs | 26 +++++++++++++++----------- Consul/JsonConverters.cs | 12 ++++++------ Consul/KV.cs | 2 +- 3 files changed, 22 insertions(+), 18 deletions(-) diff --git a/Consul/GoDuration.cs b/Consul/GoDuration.cs index 9909e39cd80c..17cfe028fae2 100644 --- a/Consul/GoDuration.cs +++ b/Consul/GoDuration.cs @@ -28,12 +28,12 @@ namespace Consul /// public class Duration { - public const ulong Nanosecond = Microsecond/1000; - public const ulong Microsecond = Millisecond/1000; - public const ulong Millisecond = 1; - public const ulong Second = 1000*Millisecond; - public const ulong Minute = 60*Second; - public const ulong Hour = 60*Minute; + public const double Nanosecond = Microsecond / 1000; + public const double Microsecond = Millisecond / 1000; + public const double Millisecond = 1; + public const double Second = 1000 * Millisecond; + public const double Minute = 60 * Second; + public const double Hour = 60 * Minute; public static Dictionary UnitMap = new Dictionary() { @@ -49,6 +49,10 @@ public class Duration public static string ToDuration(TimeSpan ts) { + if (ts == TimeSpan.Zero) + { + return "0"; + } var outDuration = new StringBuilder(); if (ts.TotalSeconds < 1) { @@ -56,15 +60,15 @@ public static string ToDuration(TimeSpan ts) } else { - if ((int) ts.TotalHours > 0) + if ((int)ts.TotalHours > 0) { outDuration.Append(ts.TotalHours.ToString("#h")); } - if ((int) ts.TotalMinutes > 0) + if ((int)ts.TotalMinutes > 0) { outDuration.Append(ts.Minutes.ToString("#m")); } - if ((int) ts.TotalSeconds > 0) + if ((int)ts.TotalSeconds > 0) { outDuration.Append(ts.Seconds.ToString("#")); } @@ -94,7 +98,7 @@ public static TimeSpan Parse(string value) ulong result; if (ulong.TryParse(value, out result)) { - return TimeSpan.FromTicks((long) (result/100)); + return TimeSpan.FromTicks((long)(result / 100)); } var matches = Regex.Matches(value, pattern); @@ -111,7 +115,7 @@ public static TimeSpan Parse(string value) { if (UnitMap.ContainsKey(match.Groups[2].Value)) { - time += res*UnitMap[match.Groups[2].Value]; + time += res * UnitMap[match.Groups[2].Value]; } else { diff --git a/Consul/JsonConverters.cs b/Consul/JsonConverters.cs index a4772ea367d3..6f6339b60560 100644 --- a/Consul/JsonConverters.cs +++ b/Consul/JsonConverters.cs @@ -25,18 +25,18 @@ public class NanoSecTimespanConverter : JsonConverter { public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer) { - serializer.Serialize(writer, ((TimeSpan) value).TotalMilliseconds*1000, typeof (long)); + serializer.Serialize(writer, (long)((TimeSpan)value).TotalMilliseconds * 1000000, typeof(long)); } public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer) { - return Duration.Parse((string) serializer.Deserialize(reader, typeof (string))); + return Duration.Parse((string)serializer.Deserialize(reader, typeof(string))); } public override bool CanConvert(Type objectType) { - if (objectType == typeof (TimeSpan)) + if (objectType == typeof(TimeSpan)) { return true; } @@ -48,18 +48,18 @@ public class DurationTimespanConverter : JsonConverter { public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer) { - serializer.Serialize(writer, Duration.ToDuration((TimeSpan) value)); + serializer.Serialize(writer, Duration.ToDuration((TimeSpan)value)); } public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer) { - return Duration.Parse((string) serializer.Deserialize(reader, typeof (string))); + return Duration.Parse((string)serializer.Deserialize(reader, typeof(string))); } public override bool CanConvert(Type objectType) { - if (objectType == typeof (TimeSpan)) + if (objectType == typeof(TimeSpan)) { return true; } diff --git a/Consul/KV.cs b/Consul/KV.cs index 2440d0a89239..076fa304bf55 100644 --- a/Consul/KV.cs +++ b/Consul/KV.cs @@ -262,7 +262,7 @@ public WriteResult Acquire(KVPair p) /// A write result indicating if the acquisition attempt succeeded public WriteResult Acquire(KVPair p, WriteOptions q) { - var req = _client.CreateWriteRequest(string.Format("/v1/kv/{0}", p.Key), q); + var req = _client.CreateWriteRequest(string.Format("/v1/kv/{0}", p.Key), p.Value, q); if (p.Flags > 0) { req.Params["flags"] = p.Flags.ToString();