/// <exclude /> public static ClientElement GetClientElement(this Element element) { if (element.VisualData.Icon == null || element.Actions.Any(a => a.VisualData?.Icon == null)) { throw new InvalidOperationException($"Unable to create ClientElement from Element with entity token '{element.ElementHandle.EntityToken.Serialize()}'. The element or one of its actions is missing an icon definition."); } string entityToken = EntityTokenSerializer.Serialize(element.ElementHandle.EntityToken, true); string piggyBag = element.ElementHandle.SerializedPiggyback; var clientElement = new ClientElement { ElementKey = $"{element.ElementHandle.ProviderName}{entityToken}{piggyBag}", ProviderName = element.ElementHandle.ProviderName, EntityToken = entityToken, Piggybag = piggyBag, PiggybagHash = HashSigner.GetSignedHash(piggyBag).Serialize(), Label = element.VisualData.Label, HasChildren = element.VisualData.HasChildren, IsDisabled = element.VisualData.IsDisabled, Icon = element.VisualData.Icon, OpenedIcon = element.VisualData.OpenedIcon, ToolTip = element.VisualData.ToolTip, Actions = element.Actions.ToClientActionList(), PropertyBag = element.PropertyBag.ToClientPropertyBag(), TagValue = element.TagValue, ContainsTaggedActions = element.Actions.Any(f => f.TagValue != null), TreeLockEnabled = element.TreeLockBehavior == TreeLockBehavior.Normal, ElementBundle = element.VisualData.ElementBundle, BundleElementName = element.VisualData.BundleElementName }; clientElement.ActionKeys = (from clientAction in clientElement.Actions select clientAction.ActionKey).ToList(); if (element.MovabilityInfo.DragType != null) { clientElement.DragType = element.MovabilityInfo.GetHashedTypeIdentifier(); } List <string> apoptables = element.MovabilityInfo.GetDropHashTypeIdentifiers(); if (apoptables != null && apoptables.Count > 0) { clientElement.DropTypeAccept = apoptables; } clientElement.DetailedDropSupported = element.MovabilityInfo.SupportsIndexedPosition; return(clientElement); }
/// <exclude /> public static ClientElement GetClientElement(this Element element) { if (element.VisualData.Icon == null || element.Actions.Any(a => a.VisualData.Icon == null)) { throw new InvalidOperationException(string.Format("Unable to create ClientElement from Element with entity token '{0}'. The element or one of its actions is missing an icon definition.", element.ElementHandle.EntityToken.Serialize())); } string entityToken = EntityTokenSerializer.Serialize(element.ElementHandle.EntityToken, true); string piggyBag = element.ElementHandle.SerializedPiggyback; var clientElement = new ClientElement { ElementKey = string.Format("{0}{1}{2}", element.ElementHandle.ProviderName, entityToken, piggyBag), ProviderName = element.ElementHandle.ProviderName, EntityToken = entityToken, Piggybag = piggyBag, PiggybagHash = HashSigner.GetSignedHash(piggyBag).Serialize(), Label = element.VisualData.Label, HasChildren = element.VisualData.HasChildren, IsDisabled = element.VisualData.IsDisabled, Icon = element.VisualData.Icon, OpenedIcon = element.VisualData.OpenedIcon, ToolTip = element.VisualData.ToolTip, Actions = element.Actions.ToClientActionList(), PropertyBag = element.PropertyBag.ToClientPropertyBag(), TagValue = element.TagValue, ContainsTaggedActions = element.Actions.Any(f => f.TagValue != null), TreeLockEnabled = element.TreeLockBehavior == TreeLockBehavior.Normal, ElementBundle = element.VisualData.ElementBundle, BundleElementName = element.VisualData.BundleElementName }; clientElement.ActionKeys = (from clientAction in clientElement.Actions select clientAction.ActionKey).ToList(); if (element.MovabilityInfo.DragType != null) clientElement.DragType = element.MovabilityInfo.GetHashedTypeIdentifier(); List<string> apoptables = element.MovabilityInfo.GetDropHashTypeIdentifiers(); if (apoptables != null && apoptables.Count > 0) { clientElement.DropTypeAccept = apoptables; } clientElement.DetailedDropSupported = element.MovabilityInfo.SupportsIndexedPosition; return clientElement; }
private void CreateServerHandler(object sender, RoutedEventArgs e) { tb_IPAddress.Background = new SolidColorBrush(Colors.LightGray); tb_Port.Background = new SolidColorBrush(Colors.LightGray); bool error = false; if (!Regex.IsMatch(tb_IPAddress.Text, @"^((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9]))\.((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9]))\.((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9]))\.((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9]))$")) { error = true; tb_IPAddress.Background = new SolidColorBrush(Colors.Red); } if (!IPAddress.TryParse(tb_IPAddress.Text, out IPAddress ip)) { error = true; tb_IPAddress.Background = new SolidColorBrush(Colors.Red); } if (!int.TryParse(tb_Port.Text, out int port)) { error = true; tb_Port.Background = new SolidColorBrush(Colors.Red); } if (port < 0 || port >= 65536) { error = true; tb_Port.Background = new SolidColorBrush(Colors.Red); } Global.Server = new Core.Server.Server(); Global.Server.OnNewConnectionCreated += delegate(object o, ClientConnectedEventArgs args) { LogWindow.Dispatcher.Invoke(delegate() { LogWindow.WriteLog("Подключен новый агент"); }); }; Global.Server.OnServerStarted += delegate(object o, EventArgs args) { LogWindow.WriteLog("Сервер настроен и начинает прослушивание"); }; Global.Server.OnMessageReceived += delegate(object o, ReceiveMessageEventArgs args) { LogWindow.Dispatcher.Invoke(delegate() { LogWindow.WriteLog($"[{args.FromID}] >> {args.Message}"); }); }; Global.Server.OnClientDisconnected += delegate(object o, EventArgs args) { ClientElement cl = (ClientElement)o; LogWindow.Dispatcher.Invoke(delegate() { LogWindow.WriteLog("Клиент отключился"); }); }; Exception connectException = Global.Server.CreateServer(ip, port); if (connectException != null) { error = true; tb_Port.Background = new SolidColorBrush(Colors.Red); tb_IPAddress.Background = new SolidColorBrush(Colors.Red); MessageBox.Show("Ошибка при подключении к серверу: " + connectException.Message); } if (error) { return; } LogWindow.Title = "Сервер [" + tb_IPAddress.Text + ":" + tb_Port.Text + "]"; LogWindow.Show(); this.Close(); }