Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mono/mono.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlexander Köplinger <alex.koeplinger@outlook.com>2017-07-02 19:35:51 +0300
committerAlexander Köplinger <alex.koeplinger@outlook.com>2017-07-03 00:31:34 +0300
commit9e91b6687e1355421680b7355c8547a88b66a7c9 (patch)
treec5004bebd78d9a4d0482784451ef69da175db8d1 /mcs/class/System.ServiceModel.Discovery
parentca55ce871f12960c58952a1926c064c33b9cac62 (diff)
[System.ServiceModel] Don't use DateTime.Now for measuring elapsed time
Use Stopwatch or DateTime.UtcNow instead which aren't affected by things like daylight-saving time
Diffstat (limited to 'mcs/class/System.ServiceModel.Discovery')
-rw-r--r--mcs/class/System.ServiceModel.Discovery/System.ServiceModel.Discovery.Udp/UdpDuplexChannel.cs4
-rw-r--r--mcs/class/System.ServiceModel.Discovery/System.ServiceModel.Discovery/DiscoveryChannelDispatcher.cs10
-rw-r--r--mcs/class/System.ServiceModel.Discovery/System.ServiceModel.Discovery/DiscoveryRequestChannel.cs4
-rw-r--r--mcs/class/System.ServiceModel.Discovery/Test/System.ServiceModel.Discovery/DiscoveryClientBindingElementTest.cs9
4 files changed, 14 insertions, 13 deletions
diff --git a/mcs/class/System.ServiceModel.Discovery/System.ServiceModel.Discovery.Udp/UdpDuplexChannel.cs b/mcs/class/System.ServiceModel.Discovery/System.ServiceModel.Discovery.Udp/UdpDuplexChannel.cs
index 38caf713397..e8f53c7b598 100644
--- a/mcs/class/System.ServiceModel.Discovery/System.ServiceModel.Discovery.Udp/UdpDuplexChannel.cs
+++ b/mcs/class/System.ServiceModel.Discovery/System.ServiceModel.Discovery.Udp/UdpDuplexChannel.cs
@@ -152,7 +152,7 @@ namespace System.ServiceModel.Discovery.Udp
public bool TryReceive (TimeSpan timeout, out Message msg)
{
- DateTime start = DateTime.Now;
+ DateTime start = DateTime.UtcNow;
ThrowIfDisposedOrNotOpen ();
msg = null;
@@ -188,7 +188,7 @@ namespace System.ServiceModel.Discovery.Udp
msg = message_encoder.ReadMessage (new MemoryStream (bytes), int.MaxValue);
var id = msg.Headers.MessageId;
if (message_ids.Contains (id))
- return TryReceive (timeout - (DateTime.Now - start), out msg);
+ return TryReceive (timeout - (DateTime.UtcNow - start), out msg);
if (id != null) {
message_ids.Enqueue (id);
if (message_ids.Count >= binding_element.TransportSettings.DuplicateMessageHistoryLength)
diff --git a/mcs/class/System.ServiceModel.Discovery/System.ServiceModel.Discovery/DiscoveryChannelDispatcher.cs b/mcs/class/System.ServiceModel.Discovery/System.ServiceModel.Discovery/DiscoveryChannelDispatcher.cs
index 82740e5a1e3..2d00fc5c748 100644
--- a/mcs/class/System.ServiceModel.Discovery/System.ServiceModel.Discovery/DiscoveryChannelDispatcher.cs
+++ b/mcs/class/System.ServiceModel.Discovery/System.ServiceModel.Discovery/DiscoveryChannelDispatcher.cs
@@ -86,7 +86,7 @@ namespace System.ServiceModel.Discovery
if (!handle_announce_online)
return; // Offline announcement is done by another DiscoveryChannelDispatcher
- DateTime start = DateTime.Now;
+ DateTime start = DateTime.UtcNow;
Communication.Open (timeout);
// and call AnnouncementOnline().
@@ -94,7 +94,7 @@ namespace System.ServiceModel.Discovery
// Published endpoints are added by DicoveryEndpointPublisherBehavior, which is added to each ServiceEndpoint in the primary (non-announcement) service.
if (dx != null) {
foreach (var edm in dx.PublishedEndpoints) {
- client.InnerChannel.OperationTimeout = timeout - (DateTime.Now - start);
+ client.InnerChannel.OperationTimeout = timeout - (DateTime.UtcNow - start);
client.AnnounceOnline (edm);
}
}
@@ -115,19 +115,19 @@ namespace System.ServiceModel.Discovery
if (handle_announce_online)
return; // Offline announcement is done by another DiscoveryChannelDispatcher
- DateTime start = DateTime.Now;
+ DateTime start = DateTime.UtcNow;
// and call AnnouncementOnline().
var dx = host.Extensions.Find<DiscoveryServiceExtension> ();
// Published endpoints are added by DicoveryEndpointPublisherBehavior, which is added to each ServiceEndpoint in the primary (non-announcement) service.
if (dx != null) {
foreach (var edm in dx.PublishedEndpoints) {
- client.InnerChannel.OperationTimeout = timeout - (DateTime.Now - start);
+ client.InnerChannel.OperationTimeout = timeout - (DateTime.UtcNow - start);
client.AnnounceOffline (edm);
}
}
// Then close the client.
- Communication.Close (timeout - (DateTime.Now - start));
+ Communication.Close (timeout - (DateTime.UtcNow - start));
}
protected override IAsyncResult OnBeginClose (TimeSpan timeout, AsyncCallback callback, object state)
diff --git a/mcs/class/System.ServiceModel.Discovery/System.ServiceModel.Discovery/DiscoveryRequestChannel.cs b/mcs/class/System.ServiceModel.Discovery/System.ServiceModel.Discovery/DiscoveryRequestChannel.cs
index 893fdf60912..46e450eed15 100644
--- a/mcs/class/System.ServiceModel.Discovery/System.ServiceModel.Discovery/DiscoveryRequestChannel.cs
+++ b/mcs/class/System.ServiceModel.Discovery/System.ServiceModel.Discovery/DiscoveryRequestChannel.cs
@@ -107,9 +107,9 @@ namespace System.ServiceModel.Discovery
protected override void OnOpen (TimeSpan timeout)
{
// FIXME: use timeout
- DateTime start = DateTime.Now;
+ DateTime start = DateTime.UtcNow;
inner = CreateDiscoveryInnerChannel<TChannel> (factory);
- ((IChannel) inner).Open (timeout - (DateTime.Now - start));
+ ((IChannel) inner).Open (timeout - (DateTime.UtcNow - start));
}
public Message Request (Message msg)
diff --git a/mcs/class/System.ServiceModel.Discovery/Test/System.ServiceModel.Discovery/DiscoveryClientBindingElementTest.cs b/mcs/class/System.ServiceModel.Discovery/Test/System.ServiceModel.Discovery/DiscoveryClientBindingElementTest.cs
index 26083822660..6aa0faed67e 100644
--- a/mcs/class/System.ServiceModel.Discovery/Test/System.ServiceModel.Discovery/DiscoveryClientBindingElementTest.cs
+++ b/mcs/class/System.ServiceModel.Discovery/Test/System.ServiceModel.Discovery/DiscoveryClientBindingElementTest.cs
@@ -23,6 +23,7 @@
// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
//
using System;
+using System.Diagnostics;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.IO;
@@ -176,9 +177,9 @@ namespace MonoTests.System.ServiceModel.Discovery
Assert.IsNull (cf.GetProperty<DiscoveryEndpoint> (), "#1");
var ch = cf.CreateChannel (DiscoveryClientBindingElement.DiscoveryEndpointAddress);
Assert.IsNull (ch.GetProperty<DiscoveryEndpoint> (), "#2");
- DateTime start = DateTime.Now;
+ var sw = Stopwatch.StartNew ();
ch.Open (TimeSpan.FromSeconds (5));
- Assert.IsTrue (DateTime.Now - start < TimeSpan.FromSeconds (15), "It is likely that FindCriteria.Duration is ignored");
+ Assert.IsTrue (sw.Elapsed < TimeSpan.FromSeconds (15), "It is likely that FindCriteria.Duration is ignored");
}
[Test]
@@ -193,9 +194,9 @@ namespace MonoTests.System.ServiceModel.Discovery
var cf = be.BuildChannelFactory<IDuplexSessionChannel> (bc);
cf.Open ();
var ch = cf.CreateChannel (DiscoveryClientBindingElement.DiscoveryEndpointAddress);
- DateTime start = DateTime.Now;
+ var sw = Stopwatch.StartNew ();
ch.Open (TimeSpan.FromSeconds (5));
- Assert.IsTrue (DateTime.Now - start < TimeSpan.FromSeconds (15), "It is likely that FindCriteria.Duration is ignored");
+ Assert.IsTrue (sw.Elapsed < TimeSpan.FromSeconds (15), "It is likely that FindCriteria.Duration is ignored");
}
[Test]