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]);
            }
        }
Exemple #2
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)));
 }
Exemple #5
0
        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));
        }
Exemple #6
0
        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));
 }