Пример #1
0
        private void PropertyChangedWithValueHandler(
            object sender,
            PropertyChangedWithValueEventArgs e
            )
        {
            var talker = sender as Talker;

            if (talker != null)
            {
                switch (e.PropertyName)
                {
                case "Connected":
                    var connected = (bool)e.NewValue;
                    Dispatcher.BeginInvoke(
                        DispatcherPriority.Background,
                        new Action(() => {
                        if (connected)
                        {
                            ShowMessage(null, "Connect: " + talker.Host + ":" + talker.Port);
                            button_Connect.IsEnabled    = false;
                            button_Disconnect.IsEnabled = true;
                            button_Send.IsEnabled       = true;
                        }
                        else
                        {
                            ShowMessage(null, "Disconnect: " + talker.Host + ":" + talker.Port);
                            button_Connect.IsEnabled    = true;
                            button_Disconnect.IsEnabled = false;
                            button_Send.IsEnabled       = false;
                        }
                    })
                        );
                    break;

                case "Message":
                    var message = e.NewValue as string;
                    Dispatcher.BeginInvoke(
                        DispatcherPriority.Background,
                        new Action(() => ShowMessage(null, message))
                        );
                    break;
                }
            }
            var listener = sender as Listener;

            if (listener != null)
            {
                switch (e.PropertyName)
                {
                case "Message":
                    var message = e.NewValue as string;
                    Dispatcher.BeginInvoke(
                        DispatcherPriority.Background,
                        new Action(() => ShowMessage(null, message))
                        );
                    break;
                }
            }
        }
Пример #2
0
 // e1.4.3 compatible
 private void OnPropertyChangedWithValue(object sender, PropertyChangedWithValueEventArgs e)
 {
     if (e.PropertyName == "CurrentSelectedClan")
     {
         RefreshCanGrantFief();
         RefreshCanUsurpThrone();
     }
 }
        void _notifyClient(object o, EventArgs e, string eventName)
        {
            IDto dto = o as IDto;

            if (dto == null)
            {
                return;
            }
            EventArgs eventArgs;
            PropertyChangedEventArgs ea = e as PropertyChangedEventArgs;

            if (ea != null && eventName == nameof(INotifyPropertyChanged.PropertyChanged))
            {
                PropertyInfo p = o.GetType().GetProperty(ea.PropertyName);
                if (p?.CanRead == true)
                {
                    eventArgs = new PropertyChangedWithValueEventArgs(ea.PropertyName, p.GetValue(o, null));
                }
                else
                {
                    eventArgs = new PropertyChangedWithValueEventArgs(ea.PropertyName, null);
                    Debug.WriteLine(o, $"{GetType()}: Couldn't get value of {ea.PropertyName}");
                }
            }
            else
            {
                eventArgs = e;
            }
            WebSocketMessage message = new WebSocketMessage()
            {
                DtoGuid     = dto.DtoGuid,
                Response    = eventArgs,
                MessageType = WebSocketMessage.WebSocketMessageType.EventNotification,
                MemberName  = eventName,
#if DEBUG
                DtoName = dto.ToString(),
#endif
            };
            string s = _serialize(message);

            Send(s);
            //Debug.WriteLine($"Server: Notification {eventName} on {dto} sent:\n{s}");
        }
Пример #4
0
        void _onEventNotificationMessage(object sender, WebSocketMessageEventArgs e)
        {
            if (e.Message.DtoGuid == DtoGuid)
            {
                Debug.WriteLine($"ProxyBase: Event {e.Message.MemberName} notified on {this} with value {e.Message.Response}");
                if (e.Message.MemberName == nameof(INotifyPropertyChanged.PropertyChanged))
                {
                    PropertyChangedWithValueEventArgs eav = e.Message.Response as PropertyChangedWithValueEventArgs;
                    if (eav != null)
                    {
                        Type         type     = this.GetType();
                        PropertyInfo property =
                            type.GetProperties(BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.Public).FirstOrDefault(p => p.GetCustomAttributes(typeof(JsonPropertyAttribute), true).Where(a => ((JsonPropertyAttribute)a).PropertyName == eav.PropertyName).Any());
                        if (property != null)
                        {
                            Debug.WriteLine(property.Name);
                        }
                        if (property == null)
                        {
                            property = type.GetProperty(eav.PropertyName);
                        }
//                        if (property.Name == "Commands")
//                            Debug.WriteLine(property.Name);
                        object value = eav.Value;
                        if (property != null)
                        {
                            MethodParametersAlignment.AlignType(ref value, property.PropertyType);
                        }
                        Properties[eav.PropertyName] = value;
                        NotifyPropertyChanged(eav.PropertyName);
                    }
                }
                else
                {
                    OnEventNotification(e.Message);
                }
            }
        }
Пример #5
0
 private void NotifyClient(IDto dto, EventArgs e, string eventName)
 {
     try
     {
         if (e is WrappedEventArgs ea &&
             ea.Args is PropertyChangedEventArgs propertyChangedEventArgs &&
             eventName == nameof(INotifyPropertyChanged.PropertyChanged))
         {
             var p = dto.GetType().GetProperty(propertyChangedEventArgs.PropertyName);
             PropertyChangedWithValueEventArgs value;
             if (p?.CanRead == true)
             {
                 value = new PropertyChangedWithValueEventArgs(propertyChangedEventArgs.PropertyName, p.GetValue(dto, null));
             }
             else
             {
                 value = new PropertyChangedWithValueEventArgs(propertyChangedEventArgs.PropertyName, null);
                 Debug.WriteLine(dto,
                                 $"{GetType()}: Couldn't get value of {propertyChangedEventArgs.PropertyName}");
             }
             Debug.WriteLine($"Server: PropertyChanged {propertyChangedEventArgs.PropertyName} on {dto} sent");
             Send(new SocketMessage(value)
             {
                 MessageType = SocketMessage.SocketMessageType.EventNotification,
                 DtoGuid     = dto.DtoGuid,
                 MemberName  = eventName,
             });
         }
         else
         {
             Send(new SocketMessage(e)
             {
                 MessageType = SocketMessage.SocketMessageType.EventNotification,
                 DtoGuid     = dto.DtoGuid,
                 MemberName  = eventName
             });
         }
     }
Пример #6
0
 private void OnPropertyChangedWithValueEventHandler(object?sender, PropertyChangedWithValueEventArgs args)
 {
     OnPropertyChangedWithValue(args.Value, args.PropertyName);
 }