コード例 #1
0
ファイル: LeagueSocket.cs プロジェクト: pipe01/LCU.NET
        public void HandleEvent(JsonApiEvent @event)
        {
            foreach (var item in Subscribers.ToArray().Where(o => o.Key.IsMatch(@event.URI)))
            {
                if (item.Value.ModelType == typeof(JsonApiEvent))
                {
                    item.Value.Callback.DynamicInvoke(@event);
                }
                else
                {
                    object data;

                    try
                    {
                        data = @event.GetData(item.Value.ModelType);
                    }
                    catch (InvalidCastException)
                    {
                        //TODO Do something?
                        continue;
                    }

                    item.Value.Callback.DynamicInvoke(@event.EventType, data);
                }
            }
        }
コード例 #2
0
ファイル: LeagueSocket.cs プロジェクト: pipe01/LCU.NET
        private void Socket_MessageReceived(string message)
        {
            if (DumpToDebug)
            {
                Debug.WriteLine(message);
            }

            if (IsPlaying)
            {
                return;
            }

            var ev = JsonApiEvent.Parse(message);

            if (!ev.Equals(default(JsonApiEvent)))
            {
                bool subscribed = Subscribers.ToArray().Any(o => o.Key.IsMatch(ev.URI));

                var args = new MessageReceivedEventArgs(ev, message, subscribed);
                MessageReceived?.Invoke(this, args);

                if (args.Handled)
                {
                    return;
                }

                HandleEvent(ev);
            }
        }
コード例 #3
0
        private void Handler(JsonApiEvent obj)
        {
            Dispatcher.Invoke(() =>
            {
                if (!Attach)
                {
                    return;
                }

                Events.Add(new EventData(this.StartTime, obj));

                if (ScrollToBottom)
                {
                    EventsList.ScrollToBottom();
                }
            });
        }
コード例 #4
0
ファイル: EventData.cs プロジェクト: kinglyu/LCU.NET
 public EventData(DateTime recordingStartTime, JsonApiEvent jsonEvent)
     : this(DateTime.Now, recordingStartTime, jsonEvent)
 {
 }
コード例 #5
0
ファイル: EventData.cs プロジェクト: kinglyu/LCU.NET
 public EventData(DateTime time, DateTime recordingStartTime, JsonApiEvent jsonEvent)
 {
     this.Time = time;
     this.RecordingStartTime = recordingStartTime;
     this.JsonEvent          = jsonEvent;
 }
コード例 #6
0
 internal MessageReceivedEventArgs(JsonApiEvent @event, string raw, bool hasSubscribers)
 {
     this.HasSubscribers = hasSubscribers;
     this.Event          = @event;
     this.RawData        = raw;
 }
コード例 #7
0
            public JsonApiEvent Handle(JsonApiEvent @event)
            {
                this.Window.Add($"<- [{@event.EventType}] {@event.URI}", @event);

                return(@event);
            }