Пример #1
0
		/// <summary>
		/// チケットの生成に必要な情報をもとにチケットを生成します
		/// </summary>
		/// <param name="basicStatus"></param>
		/// <param name="messageStatus"></param>
		/// <param name="liveDescription"></param>
		public LiveTicket(NicoApiSharp.Streaming.IBasicStatus basicStatus, NicoApiSharp.Streaming.IMessageServerStatus messageStatus, NicoApiSharp.Streaming.IDescription description)
		{
			this._id = basicStatus.Id;
			this._communityId = basicStatus.CommunityId;
			this._startTime = basicStatus.StartTime;
			this._localStartTime = basicStatus.LocalStartTime;
			this._roomLabel = basicStatus.RoomLabel;
			this._address = messageStatus.Address;
			this._port = messageStatus.Port;
			this._thread = messageStatus.Thread;
			this._title = description.Title;
			this._communityName = description.CommunityName;
			this._caster = description.Caster;
			this._description = description.Description;
		}
Пример #2
0
		/// <summary>
		/// メッセージサーバーからチャットを受け取ったときに実行される
		/// ただし、過去ログ分については呼び出されない
		/// </summary>
		/// <param name="sender"></param>
		/// <param name="e"></param>
		protected virtual void OnReceivedChat(object sender, NicoApiSharp.Streaming.ChatReceiver.ChatReceiveEventArgs e)
		{
			if (_mainview != null) {
				OcvChat ochat = new OcvChat(e.Chat);
				NotifyReceiveChat(ochat);
			}
		}
Пример #3
0
		/// <summary>
		/// MessageServerStatusで指定されたコメントをすべて取得する
		/// (用途は未定、なんとなく作った)
		/// </summary>
		/// <param name="messageServerStatus"></param>
		/// <returns></returns>
		public bool GetLogComment(NicoApiSharp.Streaming.IMessageServerStatus messageServerStatus)
		{
			if (messageServerStatus != null) {

				if (_accountInfomation == null) {

					_mainview.ShowFatalMessage("ログインが完了していません");
					return false;

				}

				_chats.Clear();
				_ngChecker.Initialize(this);

				_messageServerStatus = messageServerStatus;


				NicoApiSharp.Chat[] chats = NicoApiSharp.Streaming.ChatReceiver.ReceiveAllLog(_messageServerStatus, _accountInfomation.UserId);
				foreach (NicoApiSharp.Chat chat in chats) {
					_chats.Add(new OcvChat(chat));
				}

				// プラグインには開始通知の直後に終了通知する
				OnStartLive(null, null);
				OnDisconnectServer(null, EventArgs.Empty);

				
				return true;
			}

			return false;
		}
Пример #4
0
		/// <summary>
		/// メッセージサーバーからThreadを受け取ったときに実行される
		/// </summary>
		/// <param name="sender"></param>
		/// <param name="e"></param>
		protected virtual void OnStartLive(object sender, NicoApiSharp.Streaming.ChatReceiver.ConnectServerEventArgs e)
		{
			if (_mainview != null) {
				_mainview.ShowStatusMessage("メッセージサーバーに接続しました");

				//DateTime start = DateTime.Now;

				_ngChecker.Check(_chats);
				//TimeSpan spa = DateTime.Now - start;
				//_mainview.ShowStatusMessage(spa.TotalMilliseconds.ToString());

				// プラグインに通知
				foreach (Hal.NCSPlugin.IPlugin plugin in _plugins) {
					plugin.OnLiveStart(this.Id, this.ServerStartTime, _chats.Count);
				}

				// デバッグ用にチケットをすべて保存する
				LiveTicket log = GetLiveTicket();
				if (log != null) {
					string fileName = log.Id + (_seetType == SeetType.Arena ? "Arena" : "Standing") + ".xml";
					string path = System.IO.Path.Combine(ApplicationSettings.Default.LiveTicketsFolder, fileName);
					Utility.Serialize(path, log, typeof(LiveTicket));
				}
			}
		}
Пример #5
0
		/// <summary>
		/// 与えられた情報を元にメッセージサーバーに接続を試みる
		/// </summary>
		/// <param name="accountInfomation">アカウント情報</param>
		/// <param name="liveDescription">放送の詳細情報</param>
		/// <param name="messageServerStatus">メッセージサーバにアクセスするための情報</param>
		/// <returns>接続に成功したか</returns>
		protected bool ConnectServer(NicoApiSharp.IAccountInfomation accountInfomation, NicoApiSharp.Streaming.IDescription description, NicoApiSharp.Streaming.IMessageServerStatus messageServerStatus)
		{

			if (accountInfomation == null) {
				_mainview.ShowFatalMessage("ログインが完了していません");
				return false;
			}

			_chatReceiver.Disconnect();

			_chats.Clear();
			_ngChecker.Initialize(this);

			UserSettings.Default.LastAccessId = description.Id;
			UserSettings.Default.Save();

			NicoApiSharp.Chat[] chats = NicoApiSharp.Streaming.ChatReceiver.ReceiveAllLog(messageServerStatus,  accountInfomation.UserId);
			if (chats != null) {
				foreach (NicoApiSharp.Chat chat in chats) {
					_chats.Add(new OcvChat(chat));
				}

				return _chatReceiver.Connect(messageServerStatus, chats.Length + 1);
			} else {
				return _chatReceiver.Connect(messageServerStatus, -1000);
			}
		}