Example #1
0
        /// <summary>
        /// アラート情報の受信を通知します。
        /// </summary>
        private void OnLiveAlerted(LiveAlertedEventArgs e)
        {
            var handler = this.LiveAlerted;

            if (handler != null)
            {
                Util.SafeCall(() => handler(this, e));
            }
        }
Example #2
0
        /// <summary>
        /// アラートメッセージを処理します。
        /// </summary>
        private void HandleMessage(string message)
        {
            var doc = new XmlDocument();

            doc.LoadXml(message);

            var node = doc.DocumentElement;

            if (node.Name != "chat")
            {
                return;
            }

            Log.Trace("Alert {0}", node.InnerText);

            // 内部テキストは
            //   [放送ID],[チャンネル/コミュニティID/official],[ユーザーID]
            // となっています。
            var values = node.InnerText.Split(',');

            if (values.Length < 3)
            {
                return;
            }

            // 放送IDを取得します。
            var liveId = StrUtil.ToInt(values[0], 0);

            if (liveId <= 0)
            {
                return;
            }

            // 提供者を取得します。
            var providerData = NicoUtil.ParseProvider(values[1]);

            if (providerData == null)
            {
                return;
            }

            // ユーザー情報を取得します。
            var userId = StrUtil.ToInt(values[2], -1);

            // IDが重複して送られてくることがあるので、
            // すでに受信した放送IDならば無視します。
            if (!IsContainsLiveId(liveId))
            {
                var e = new LiveAlertedEventArgs(
                    liveId, providerData, userId);
                OnLiveAlerted(e);

                AddLiveIdToHistoryBuffer(liveId);
            }
        }
Example #3
0
        /// <summary>
        /// アラート情報の受信を通知します。
        /// </summary>
        private void OnLiveAlerted(LiveAlertedEventArgs e)
        {
            var handler = this.LiveAlerted;

            if (handler != null)
            {
                Util.SafeCall(() => handler(this, e));
            }
        }
Example #4
0
        /// <summary>
        /// アラートメッセージを処理します。
        /// </summary>
        private void HandleMessage(string message)
        {
            var doc = new XmlDocument();
            doc.LoadXml(message);

            var node = doc.DocumentElement;
            if (node.Name != "chat")
            {
                return;
            }

            Log.Trace("Alert {0}", node.InnerText);

            // 内部テキストは
            //   [放送ID],[チャンネル/コミュニティID/official],[ユーザーID]
            // となっています。
            var values = node.InnerText.Split(',');
            if (values.Length < 3)
            {
                return;
            }

            // 放送IDを取得します。
            var liveId = StrUtil.ToInt(values[0], 0);
            if (liveId <= 0)
            {
                return;
            }

            // 提供者を取得します。
            var providerData = LiveUtil.ParseProvider(values[1]);
            if (providerData == null)
            {
                return;
            }

            // ユーザー情報を取得します。
            var userId = StrUtil.ToInt(values[2], -1);

            // IDが重複して送られてくることがあるので、
            // すでに受信した放送IDならば無視します。
            if (!IsContainsLiveId(liveId))
            {
                var e = new LiveAlertedEventArgs(
                    liveId, providerData, userId);
                OnLiveAlerted(e);

                AddLiveIdToHistoryBuffer(liveId);
            }
        }