/// <summary> /// アラート情報の受信を通知します。 /// </summary> private void OnLiveAlerted(LiveAlertedEventArgs e) { var handler = this.LiveAlerted; if (handler != null) { Util.SafeCall(() => handler(this, e)); } }
/// <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); } }
/// <summary> /// アラート情報の受信を通知します。 /// </summary> private void OnLiveAlerted(LiveAlertedEventArgs e) { var handler = this.LiveAlerted; if (handler != null) { Util.SafeCall(() => handler(this, e)); } }
/// <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); } }