public Task<Progressive.PecaStarter5.Plugins.BroadcastingParameter> BroadcastAsync( IPeercast peercast, IEnumerable<IExternalYellowPages> externalYellowPagesList, IYellowPages yellowPages, int? acceptedHash, Dictionary<string, string> yellowPagesParameter, BroadcastParameter parameter, IProgress<string> progress) { return Task.Factory.StartNew(() => { // YPの更新確認 ThrowIfYellowPagesUpdatedAwait(yellowPages, acceptedHash, progress); // 開始 var broadcastedParameter = StartBroadcastAwait(peercast, parameter, yellowPages, yellowPagesParameter, progress); // 外部YPに通知 if (yellowPages.IsExternal) { try { Find(externalYellowPagesList, yellowPages.Name) .OnBroadcastedAsync(broadcastedParameter).Wait(); } catch (Exception ex) { peercast.StopAsync(broadcastedParameter.Id).Wait(); throw ex; } } progress.Report("チャンネルを作成しました"); return broadcastedParameter; }); }
public Task<Progressive.PecaStarter5.Plugins.StoppedParameter> StopAsync( IPeercast peercast, IEnumerable<IExternalYellowPages> externalYellowPagesList, IYellowPages yellowPages, Dictionary<string, string> yellowPagesParameter, string name, string id, IProgress<string> progress) { return Task.Factory.StartNew(() => { // 停止 progress.Report("通信中..."); var stoppedParameter = new Progressive.PecaStarter5.Plugins.StoppedParameter { Name = name, Id = id, YellowPagesParameters = yellowPagesParameter }; // 外部YPに通知 if (yellowPages.IsExternal) { Find(externalYellowPagesList, yellowPages.Name).OnStopedAsync(stoppedParameter).Wait(); } peercast.StopAsync(id).Wait(); progress.Report("チャンネルを切断しました"); return stoppedParameter; }); }