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

github.com/mono/rx.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'Rx.NET/Microsoft.Reactive.Testing/Subscription.cs')
-rw-r--r--Rx.NET/Microsoft.Reactive.Testing/Subscription.cs124
1 files changed, 124 insertions, 0 deletions
diff --git a/Rx.NET/Microsoft.Reactive.Testing/Subscription.cs b/Rx.NET/Microsoft.Reactive.Testing/Subscription.cs
new file mode 100644
index 0000000..2f9b7a5
--- /dev/null
+++ b/Rx.NET/Microsoft.Reactive.Testing/Subscription.cs
@@ -0,0 +1,124 @@
+// Copyright (c) Microsoft Open Technologies, Inc. All rights reserved. See License.txt in the project root for license information.
+
+using System;
+using System.Diagnostics;
+using System.Globalization;
+
+namespace Microsoft.Reactive.Testing
+{
+ /// <summary>
+ /// Records information about subscriptions to and unsubscriptions from observable sequences.
+ /// </summary>
+#if !NO_DEBUGGER_ATTRIBUTES
+ [DebuggerDisplay("({Subscribe}, {Unsubscribe})")]
+#endif
+#if !NO_SERIALIZABLE
+ [Serializable]
+#endif
+ public struct Subscription : IEquatable<Subscription>
+ {
+ /// <summary>
+ /// Infinite virtual time value, used to indicate an unsubscription never took place.
+ /// </summary>
+ public const long Infinite = long.MaxValue;
+
+ private long _subscribe;
+ private long _unsubscribe;
+
+ /// <summary>
+ /// Gets the subscription virtual time.
+ /// </summary>
+ public long Subscribe { get { return _subscribe; } }
+
+ /// <summary>
+ /// Gets the unsubscription virtual time.
+ /// </summary>
+ public long Unsubscribe { get { return _unsubscribe; } }
+
+ /// <summary>
+ /// Creates a new subscription object with the given virtual subscription time.
+ /// </summary>
+ /// <param name="subscribe">Virtual time at which the subscription occurred.</param>-
+ public Subscription(long subscribe)
+ {
+ _subscribe = subscribe;
+ _unsubscribe = Infinite;
+ }
+
+ /// <summary>
+ /// Creates a new subscription object with the given virtual subscription and unsubscription time.
+ /// </summary>
+ /// <param name="subscribe">Virtual time at which the subscription occurred.</param>
+ /// <param name="unsubscribe">Virtual time at which the unsubscription occurred.</param>
+ public Subscription(long subscribe, long unsubscribe)
+ {
+ _subscribe = subscribe;
+ _unsubscribe = unsubscribe;
+ }
+
+ /// <summary>
+ /// Checks whether the given subscription is equal to the current instance.
+ /// </summary>
+ /// <param name="other">Subscription object to check for equality.</param>
+ /// <returns>true if both objects are equal; false otherwise.</returns>
+ public bool Equals(Subscription other)
+ {
+ return Subscribe == other.Subscribe && Unsubscribe == other.Unsubscribe;
+ }
+
+ /// <summary>
+ /// Determines whether the two specified Subscription values have the same Subscribe and Unsubscribe.
+ /// </summary>
+ /// <param name="left">The first Subscription value to compare.</param>
+ /// <param name="right">The second Subscription value to compare.</param>
+ /// <returns>true if the first Subscription value has the same Subscribe and Unsubscribe as the second Subscription value; otherwise, false.</returns>
+ public static bool operator==(Subscription left, Subscription right)
+ {
+ return left.Equals(right);
+ }
+
+ /// <summary>
+ /// Determines whether the two specified Subscription values don't have the same Subscribe and Unsubscribe.
+ /// </summary>
+ /// <param name="left">The first Subscription value to compare.</param>
+ /// <param name="right">The second Subscription value to compare.</param>
+ /// <returns>true if the first Subscription value has a different Subscribe or Unsubscribe as the second Subscription value; otherwise, false.</returns>
+ public static bool operator !=(Subscription left, Subscription right)
+ {
+ return !left.Equals(right);
+ }
+
+ /// <summary>
+ /// Determines whether the specified System.Object is equal to the current Subscription value.
+ /// </summary>
+ /// <param name="obj">The System.Object to compare with the current Subscription value.</param>
+ /// <returns>true if the specified System.Object is equal to the current Subscription value; otherwise, false.</returns>
+ public override bool Equals(object obj)
+ {
+ if (obj is Subscription)
+ return Equals((Subscription)obj);
+ return false;
+ }
+
+ /// <summary>
+ /// Returns the hash code for the current Subscription value.
+ /// </summary>
+ /// <returns>A hash code for the current Subscription value.</returns>
+ public override int GetHashCode()
+ {
+ return Subscribe.GetHashCode() ^ Unsubscribe.GetHashCode();
+ }
+
+ /// <summary>
+ /// Returns a string representation of the current Subscription value.
+ /// </summary>
+ /// <returns>String representation of the current Subscription value.</returns>
+ public override string ToString()
+ {
+ if (Unsubscribe == Infinite)
+ return string.Format(CultureInfo.CurrentCulture, "({0}, Infinite)", Subscribe);
+ else
+ return string.Format(CultureInfo.CurrentCulture, "({0}, {1})", Subscribe, Unsubscribe);
+ }
+ }
+}