# HG changeset patch # User Steven Robbins # Date 1268587916 0 # Branch messenger # Node ID 4a3e11ca644d49e8c0b96f8f851c657c075c426f # Parent 9aea0843b34b1329c258f6b3803ee82f1b715c12 Moved default proxy to public and a singleton diff -r 9aea0843b34b1329c258f6b3803ee82f1b715c12 -r 4a3e11ca644d49e8c0b96f8f851c657c075c426f TinyIoC/TinyMessenger.cs --- a/TinyIoC/TinyMessenger.cs Sat Mar 13 13:53:34 2010 +0000 +++ b/TinyIoC/TinyMessenger.cs Sun Mar 14 17:31:56 2010 +0000 @@ -126,6 +126,40 @@ { void Deliver(ITinyMessage message, ITinyMessageSubscription subscription); } + + /// + /// Default "pass through" proxy. + /// + /// Does nothing other than deliver the message. + /// + public sealed class DefaultTinyMessageProxy : ITinyMessageProxy + { + private static readonly DefaultTinyMessageProxy _Instance = new DefaultTinyMessageProxy(); + + static DefaultTinyMessageProxy() + { + } + + /// + /// Singleton instance of the proxy. + /// + public static DefaultTinyMessageProxy Instance + { + get + { + return _Instance; + } + } + + private DefaultTinyMessageProxy() + { + } + + public void Deliver(ITinyMessage message, ITinyMessageSubscription subscription) + { + subscription.Deliver(message); + } + } #endregion #region Exceptions @@ -404,18 +438,6 @@ _MessageFilter = messageFilter; } } - - #region Default Message Proxy + Singleton - private static readonly ITinyMessageProxy _DefaultTinyMessageProxy = new DefaultPassThroughTinyMessageProxy(); - - private class DefaultPassThroughTinyMessageProxy : ITinyMessageProxy - { - public void Deliver(ITinyMessage message, ITinyMessageSubscription subscription) - { - subscription.Deliver(message); - } - } - #endregion #endregion #region Subscription dictionary @@ -430,7 +452,7 @@ Subscription = subscription; } } - + private readonly object _SubscriptionsPadlock = new object(); private readonly Dictionary> _Subscriptions = new Dictionary>(); #endregion @@ -447,7 +469,7 @@ /// TinyMessageSubscription used to unsubscribing public TinyMessageSubscriptionToken Subscribe(Action deliveryAction) where TMessage : class, ITinyMessage { - return AddSubscriptionInternal(deliveryAction, (m) => true, false, _DefaultTinyMessageProxy); + return AddSubscriptionInternal(deliveryAction, (m) => true, false, DefaultTinyMessageProxy.Instance); } /// @@ -477,7 +499,7 @@ /// TinyMessageSubscription used to unsubscribing public TinyMessageSubscriptionToken Subscribe(Action deliveryAction, bool useStrongReferences) where TMessage : class, ITinyMessage { - return AddSubscriptionInternal(deliveryAction, (m) => true, useStrongReferences, _DefaultTinyMessageProxy); + return AddSubscriptionInternal(deliveryAction, (m) => true, useStrongReferences, DefaultTinyMessageProxy.Instance); } /// @@ -507,7 +529,7 @@ /// TinyMessageSubscription used to unsubscribing public TinyMessageSubscriptionToken Subscribe(Action deliveryAction, Func messageFilter) where TMessage : class, ITinyMessage { - return AddSubscriptionInternal(deliveryAction, messageFilter, false, _DefaultTinyMessageProxy); + return AddSubscriptionInternal(deliveryAction, messageFilter, false, DefaultTinyMessageProxy.Instance); } /// @@ -538,7 +560,7 @@ /// TinyMessageSubscription used to unsubscribing public TinyMessageSubscriptionToken Subscribe(Action deliveryAction, Func messageFilter, bool useStrongReferences) where TMessage : class, ITinyMessage { - return AddSubscriptionInternal(deliveryAction, messageFilter, useStrongReferences, _DefaultTinyMessageProxy); + return AddSubscriptionInternal(deliveryAction, messageFilter, useStrongReferences, DefaultTinyMessageProxy.Instance); } ///