mirror of https://github.com/ogoun/Zero.git
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
98 lines
3.4 KiB
98 lines
3.4 KiB
using System;
|
|
using System.Collections.Generic;
|
|
using System.Collections.ObjectModel;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
using System.Windows;
|
|
using System.Windows.Controls;
|
|
using System.Windows.Data;
|
|
using System.Windows.Documents;
|
|
using System.Windows.Input;
|
|
using System.Windows.Media;
|
|
using System.Windows.Media.Imaging;
|
|
using System.Windows.Navigation;
|
|
using System.Windows.Shapes;
|
|
using ZeroLevel;
|
|
using ZeroLevel.Network;
|
|
using ZeroLevel.Network.SDL;
|
|
|
|
namespace ZeroNetworkMonitor
|
|
{
|
|
/// <summary>
|
|
/// Interaction logic for ServiceControlPanel.xaml
|
|
/// </summary>
|
|
public partial class ServiceControlPanel : UserControl
|
|
{
|
|
const string SDL_INBOX = "__service_description__";
|
|
private ServiceDescription _description;
|
|
|
|
public ServiceControlPanel()
|
|
{
|
|
InitializeComponent();
|
|
}
|
|
|
|
public void UpdateView(string serviceKey)
|
|
{
|
|
var exchange = Injector.Default.Resolve<IExchange>();
|
|
var client = exchange.GetConnection(serviceKey);
|
|
client?.Request<ServiceDescription>(SDL_INBOX, desc =>
|
|
{
|
|
_description = desc;
|
|
UpdateDescriptionView();
|
|
});
|
|
}
|
|
|
|
private void UpdateDescriptionView()
|
|
{
|
|
if (_description != null)
|
|
{
|
|
Dispatcher.Invoke(() =>
|
|
{
|
|
tbGroup.Text = _description.ServiceInfo.ServiceGroup;
|
|
tbKey.Text = _description.ServiceInfo.ServiceKey;
|
|
tbName.Text = _description.ServiceInfo.Name;
|
|
tbType.Text = _description.ServiceInfo.ServiceType;
|
|
tbVersion.Text = _description.ServiceInfo.Version;
|
|
lbInboxes.ItemsSource = _description.Inboxes;
|
|
});
|
|
}
|
|
}
|
|
|
|
private void LbInboxes_SelectionChanged(object sender, SelectionChangedEventArgs e)
|
|
{
|
|
var inbox = lbInboxes.SelectedItem as InboxServiceDescription;
|
|
if (inbox != null)
|
|
{
|
|
|
|
var info = new StringBuilder();
|
|
info.AppendLine($"Inbox '{inbox.Name}' type: {inbox.InboxKind}");
|
|
info.AppendLine($"Target: '{inbox.Target}'");
|
|
if (inbox.InboxKind == InboxKind.Handler || inbox.InboxKind == InboxKind.Reqeustor)
|
|
{
|
|
info.AppendLine($"Incoming type: {inbox.IncomingType.Name}");
|
|
if (inbox.IncomingType.Fields != null && inbox.IncomingType.Fields.Any())
|
|
{
|
|
foreach (var field in inbox.IncomingType.Fields)
|
|
{
|
|
info.AppendLine($"\t{field.Key}: {field.Value}");
|
|
}
|
|
}
|
|
}
|
|
if (inbox.InboxKind == InboxKind.Reqeustor)
|
|
{
|
|
info.AppendLine($"Outcoming type: {inbox.OutcomingType.Name}");
|
|
if (inbox.OutcomingType.Fields != null && inbox.OutcomingType.Fields.Any())
|
|
{
|
|
foreach (var field in inbox.OutcomingType.Fields)
|
|
{
|
|
info.AppendLine($"\t{field.Key}: {field.Value}");
|
|
}
|
|
}
|
|
}
|
|
tbInboxDescription.Text = info.ToString();
|
|
}
|
|
}
|
|
}
|
|
}
|