Mercurial > silverbladetech
diff Messaging/Server/EndPoints/MessageEndPoint.cs @ 29:9919ee227c93
msmq added
author | adminsh@apollo |
---|---|
date | Wed, 21 Mar 2012 22:09:18 +0000 |
parents | |
children | 7d9de5746f18 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Messaging/Server/EndPoints/MessageEndPoint.cs Wed Mar 21 22:09:18 2012 +0000 @@ -0,0 +1,173 @@ +using System; +using System.Threading.Tasks; +using Common.Messages; +using GalaSoft.MvvmLight; +using GalaSoft.MvvmLight.Messaging; +using Server.Interfaces; + +namespace Server.EndPoints +{ + public class MessageEndPoint<T, TV> : ObservableObject + where T : MessageBase + where TV : LogMessage + + { + #region Fields + + private readonly IListener _listener; + + #endregion + + #region Constructor + + public MessageEndPoint(IListener listener) + { + _listener = listener; + Init(); + } + + #endregion + + public void Init() + { + Messenger.Default.Register<T>(this, ClientMessageReceived); + Messenger.Default.Register<TV>(this, LogMessageReceived); + } + + protected void LogMessageReceived(TV message) + { + this.DisplayLog = DisplayLog + Environment.NewLine + message.Body; + } + + protected void ClientMessageReceived(T message) + { + this.DisplayCount++; + } + + #region Properties + + #region IsListening + + public const string IsListeningPropertyName = "IsListening"; + private bool _isListening; + public bool IsListening + { + get { return _isListening; } + set + { + if (_isListening == value) return; + _isListening = value; + RaisePropertyChanged(() => IsListening); + ToggleListener(); + } + } + + #endregion + + #region DisplayText + + public const string DisplayTextPropertyName = "DisplayText"; + private string _displayText; + public string DisplayText + { + get { return _displayText; } + set + { + if (_displayText == value) return; + _displayText = value; + RaisePropertyChanged(() => DisplayText); + } + } + + #endregion + + #region DisplayCount + + public const string DisplayCountPropertyName = "DisplayCount"; + private volatile int _displayCount; + public int DisplayCount + { + get { return _displayCount; } + set + { + if (_displayCount == value) return; + _displayCount = value; + RaisePropertyChanged(() => DisplayCount); + } + } + #endregion + + #region DisplayLog + + public const string DisplayLogPropertyName = "DisplayLog"; + private string _displayLog = string.Empty; + public string DisplayLog + { + get { return _displayLog; } + set + { + if (_displayLog == value) return; + _displayLog = value; + RaisePropertyChanged(() => DisplayLog); + IsLogChanged = true; + } + } + + #endregion + + #region IsLogChanged + + public const string IsLogChangedPropertyName = "IsLogChanged"; + private bool _isLogChanged; + public bool IsLogChanged + { + get { return _isLogChanged; } + set + { + if (_isLogChanged == value) return; + _isLogChanged = value; + RaisePropertyChanged(() => IsLogChanged); + } + } + + #endregion + + #region ToolTip + + public const string ToolTipPropertyName = "ToolTip"; + private string _toolTip = string.Empty; + public string ToolTip + { + get { return _toolTip; } + set + { + if (_toolTip == value) return; + _toolTip = value; + RaisePropertyChanged(() => ToolTip); + } + } + + #endregion + + #endregion + + #region Commands + + + private void ToggleListener() + { + if (null == _listener) return; + + if (_listener.IsListening) + { + Task.Factory.StartNew(_listener.Stop); + } + else + { + Task.Factory.StartNew(_listener.Start); + } + } + + #endregion + } +}