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 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(); }
private void BindSendCommandView(ServerConfig3 server) { asmPaths.BindItems(server.CommandsAssemblyPaths); tbNamespace.Init(server.CommandDefinition.NamespaceContains, typeof(string), true); tbCmdInherits.Text = server.CommandDefinition.InheritsType; }
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 string GetDefaultServerName(string name, string serviceBus, string version, string queueType) { int index = name.IsValid() ? name.IndexOf("//") : -1; if (index != -1) { name = name.Substring(index + 2); } return("{0} ( {1} / {2} )".With(name.CutEnd(20), ServerConfig3.GetFullMessageBusName(serviceBus, version), queueType)); }
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(); }
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) => { _allQueueNames.Add(server.Name, GetDiscoveryService(server).GetAllAvailableQueueNames(server.ConnectionSettings)); }; w.RunWorkerCompleted += (s, arg) => { ValidateQueues(server); _SetAccessingServer(false); }; w.RunWorkerAsync(); } }
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(); } }
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(); }
private IServiceBusDiscovery GetDiscoveryService(ServerConfig3 s) { return(GetDiscoveryService(s.ServiceBus, s.ServiceBusVersion, s.ServiceBusQueueType)); }