public SelectQueueDialog(IServiceBusDiscovery discovery, ServerConfig3 serverCfg, string[] queueNames) { InitializeComponent(); _disc = discovery; _serverSettings = serverCfg.ConnectionSettings; Topmost = SbmqSystem.UIState.AlwaysOnTop; var qItems = queueNames.Select(n => new QueueListItem() { Name = n, Access = QueueAccess.Unknown }).ToList(); lbQueues.ItemsSource = qItems; BackgroundWorker bw = new BackgroundWorker(); bw.DoWork += (s, e) => { foreach( var q in qItems ) { if( _disc.CanAccessQueue(_serverSettings, q.Name) ) q.Access = QueueAccess.RW; else { q.Access = QueueAccess.None; } } }; bw.RunWorkerCompleted += (s, e) => { lbQueues.Items.Refresh(); }; bw.RunWorkerAsync(); }
public void CopyTo(ServerConfig3 obj) { obj.Name = Name; obj.ServiceBus = ServiceBus; obj.ServiceBusVersion = ServiceBusVersion; obj.ServiceBusQueueType = ServiceBusQueueType; obj.MonitorInterval = MonitorInterval; obj.MonitorQueues = MonitorQueues; obj.ConnectionSettings = new Dictionary<string, object>(ConnectionSettings); obj.CommandsAssemblyPaths = CommandsAssemblyPaths; obj.CommandDefinition = CommandDefinition; obj.CommandContentType = CommandContentType; }
public void CopyTo(ServerConfig3 obj) { obj.Name = Name; obj.ServiceBus = ServiceBus; obj.ServiceBusVersion = ServiceBusVersion; obj.ServiceBusQueueType = ServiceBusQueueType; obj.MonitorInterval = MonitorInterval; obj.MonitorQueues = MonitorQueues; obj.ConnectionSettings = new Dictionary <string, object>(ConnectionSettings); obj.CommandsAssemblyPaths = CommandsAssemblyPaths; obj.CommandDefinition = CommandDefinition; obj.CommandContentType = CommandContentType; }
private void LoadSubscriptionTypes(ServerConfig3 server = null, Action onCompleted = null) { if( server == null ) server = ( cbServer.SelectedItem as ServerConfig3 ); var currSrv = _sys.Config.CurrentServer; if( server.ServiceBus == currSrv.ServiceBus && server.ServiceBusVersion != currSrv.ServiceBusVersion ) { _allItems.Clear(); _items.Clear(); SetInfoText("Can't load subscriptions as Service Bus has a different version from the Currently Active"); return; } var serverName = server.ConnectionSettings["server"]; imgServerLoading.Visibility = System.Windows.Visibility.Visible; btnRefresh.Visibility = System.Windows.Visibility.Hidden; cbServer.IsEnabled = false; BackgroundWorker w = new BackgroundWorker(); w.DoWork += (s, e) => { e.Result = _sys.GetMessageSubscriptions(server); }; w.RunWorkerCompleted += (s, e) => { MessageSubscription[] subs = e.Result as MessageSubscription[]; _allItems.Clear(); _items.Clear(); foreach( var ms in subs ) { var key = ms.FullName.ToLower() + ": " + ms.Publisher.ToLower() + " => " + ms.Subscriber.ToLower(); if(!_allItems.ContainsKey(key)) _allItems.Add(key, ms); else SetInfoText("Found a duplicate Pub/Sub, for message " + key); _items.Add(ms); } imgServerLoading.Visibility = System.Windows.Visibility.Hidden; btnRefresh.Visibility = System.Windows.Visibility.Visible; cbServer.IsEnabled = true; Filter(); if( onCompleted != null ) onCompleted(); }; w.RunWorkerAsync(); }
public ManageServerDialog(SbmqSystem system, ServerConfig3 server, bool copy = false) { InitializeComponent(); Topmost = SbmqSystem.UIState.AlwaysOnTop; _sys = system; _config = system.Config; _server = server; _managerTypes = ServiceBusFactory.AvailableServiceBusManagers(); Result = new ConfigWindow.AddServerResult(); Result.Server = new ServerConfig3(); if( server != null ) { server.CopyTo(Result.Server); if( copy ) { Result.Server.Name = string.Empty; Result.Server.ConnectionSettings = new Dictionary<string, object>(); } } DialogActionType = server == null ? ActionType.Add : ( copy ? ActionType.Copy : ActionType.Edit ); string verb = ( DialogActionType == ActionType.Edit ) ? "Edit" : "Add"; lbTitle.Content = Title = "{0} Server".With(verb); lbInfo.Content = string.Empty; cbServiceBus.ItemsSource = _managerTypes.GroupBy(g => g.DisplayName).Select(x => x.Key).ToArray(); //cbServiceBus.DisplayMemberPath = "DisplayName"; //cbServiceBus.SelectedValuePath = "Name"; tbName.Init(Result.Server.Name, typeof(string), false); //var s = cbServiceBus.SelectedValue as string; //cbTransport.ItemsSource = _managerTypes.GroupBy(g => g.Name).Single(x => x.Key == s).Select(x => x.QueueType); //tbInterval.Init(750, typeof(int), false); if( DialogActionType == ActionType.Edit ) { _nameEdited = GetDefaultServerName(_server.ConnectionSettings.First().Value as string, _server.ServiceBus, _server.ServiceBusVersion, _server.ServiceBusQueueType) != _server.Name; } BindServerInfo(); }
public MessageSubscription[] GetMessageSubscriptions(ServerConfig3 server) { IViewSubscriptions sc = null; if( server.ServiceBus == _mgr.ServiceBusName && server.ServiceBusVersion == _mgr.ServiceBusVersion && server.ServiceBusQueueType == _mgr.MessageQueueType ) { sc = _mgr as IViewSubscriptions; } else { var mgr = ServiceBusFactory.CreateManager(server.ServiceBus, server.ServiceBusVersion, server.ServiceBusQueueType); sc = mgr as IViewSubscriptions; } if( sc != null ) return sc.GetMessageSubscriptions(server.ConnectionSettings, server.MonitorQueues.Select(q => q.Name)); else return new MessageSubscription[0]; }
private void UpdateQueueLists(ServerConfig3 s) { queueCommands.BindItems(s.MonitorQueues.Where(q => q.Type == QueueType.Command).Select( q => new QueueListControl.QueueListItem(q.Name, q.Color))); queueEvents.BindItems(s.MonitorQueues.Where(q => q.Type == QueueType.Event).Select( q => new QueueListControl.QueueListItem(q.Name, q.Color))); queueMessages.BindItems(s.MonitorQueues.Where(q => q.Type == QueueType.Message).Select( q => new QueueListControl.QueueListItem(q.Name, q.Color))); queueErrors.BindItems(s.MonitorQueues.Where(q => q.Type == QueueType.Error).Select( q => new QueueListControl.QueueListItem(q.Name, q.Color))); }
private void ValidateQueues(ServerConfig3 s) { if( _allQueueNames != null && _allQueueNames.ContainsKey(s.Name) ) { var allQueues = _allQueueNames[s.Name]; var removedQueues = s.MonitorQueues.Where(q => !allQueues.Any(x => q.Name == x)).ToArray(); if( removedQueues.Any() ) { MessageDialog.Show(MessageType.Info, "Removed Queues", "These queues could not be found at the server and therefore removed from monitoring:\n" + removedQueues.AsString(",\n")); s.MonitorQueues = s.MonitorQueues.Where(q => allQueues.Any(x => q.Name == x)).ToArray(); _config.Save(); UpdateQueueLists(s); } } }
private void GetAllAvailableQueueNamesForServer(ServerConfig3 server) { if( !_allQueueNames.ContainsKey(server.Name) ) { _SetAccessingServer(true); BackgroundWorker w = new BackgroundWorker(); w.DoWork += (s, arg) => { try { var queues = GetDiscoveryService(server).GetAllAvailableQueueNames(server.ConnectionSettings); _allQueueNames.Add(server.Name, queues); } catch(Exception e) { ShowErrorMessage(e); } }; w.RunWorkerCompleted += (s, arg) => { ValidateQueues(server); _SetAccessingServer(false); }; w.RunWorkerAsync(); } }
private IServiceBusDiscovery GetDiscoveryService(ServerConfig3 s) { return GetDiscoveryService(s.ServiceBus, s.ServiceBusVersion, s.ServiceBusQueueType); }
private void BindSendCommandView(ServerConfig3 server) { asmPaths.BindItems(server.CommandsAssemblyPaths); tbNamespace.Init(server.CommandDefinition.NamespaceContains, typeof(string), true); tbCmdInherits.Text = server.CommandDefinition.InheritsType; }
private void GetAllAvailableQueueNamesForServer(ServerConfig3 server) { if( !_allQueueNames.ContainsKey(server.Name) ) { _SetAccessingServer(true); BackgroundWorker w = new BackgroundWorker(); w.DoWork += (s, arg) => { _allQueueNames.Add(server.Name, GetDiscoveryService(server).GetAllAvailableQueueNames(server.ConnectionSettings)); }; w.RunWorkerCompleted += (s, arg) => { ValidateQueues(server); _SetAccessingServer(false); }; w.RunWorkerAsync(); } }