IEnumerator Broadcast(BroadcastInfo bi) { if (bi.useTimeScale) { yield return(new WaitForSeconds(bi.delayTime)); } else { float pauseEndTime = Time.realtimeSinceStartup + bi.delayTime; while (Time.realtimeSinceStartup < pauseEndTime) { yield return(0); } } if (bi.em.targetObj) { // Object Event EventManager.SendObjectEvent(bi.em); } else { // Global Event EventManager.Broadcast(bi.em); } // remove timer timerCount--; if (timerCount <= 0) { Destroy(this); } }
public string GetFilename(BroadcastInfo broadcast) { string ext = (broadcast.MediaType == MediaType.MP3) ? "mp3" : "wav"; string dt = broadcast.StartTime.ToString("dd-MM-yyyy-hh-mm-ss"); return(string.Format("{0}-{1}.{2}", dt, broadcast.Username, ext)); }
public UploadBroadcastRequest(User user, BroadcastInfo broadcast, MediaType format, int port, int bufferSize = 1024) : base(user) { Broadcast = broadcast; Format = format; Port = port; BufferSize = bufferSize; }
static void WithBroadcaster(Action <Broadcaster> f) { WithSync(() => { var broadcast = new BroadcastInfo(new RabbitHostInfo("localhost"), "BroadcastTestExchange"); using (var b1 = new Broadcaster(broadcast)) { f(b1); } }); }
public void Add(BroadcastInfo broadcast) { CreateCommand("INSERT INTO broadcasts " + "(username, start_time, duration, data_source_type, media_type, filename, label) " + "VALUES ('{0}', '{1}', {2}, {3}, {4}, {5}, '{6}');", broadcast.Username, broadcast.StartTime.ToString(DT_FORMAT), Math.Ceiling(broadcast.Duration.TotalSeconds), (int)broadcast.Type, (int)broadcast.MediaType, (broadcast.Filename != null) ? "'" + broadcast.Filename + "'" : "NULL", broadcast.Label). ExecuteNonQuery(); broadcast.Id = (int)connection.LastInsertRowId; }
public static void AddTimer(float time, System.Action callback, object param, bool useTimeScale) { BroadcastInfo bi = new BroadcastInfo(); bi.callback = callback; bi.delayTime = time; bi.useTimeScale = useTimeScale; EventTimer et = EventTimer.Get(GetGameObject(null)); if (et != null) { et.AddTimerInternal(bi); } }
public static void AddTimer(EventMessage em, Vector2 delayTime, bool useTimeScale) { // Get GameObject from Object GameObject attachObj = GetGameObject(em.origSrc); BroadcastInfo bi = new BroadcastInfo(); bi.em = em; // Calculate delay time bi.delayTime = Random.Range(Mathf.Min(delayTime[0], delayTime[1]), Mathf.Max(delayTime[0], delayTime[1])); bi.useTimeScale = useTimeScale; EventTimer et = EventTimer.Get(attachObj); if (et != null) { et.AddTimerInternal(bi); } }
private void broadcast(object o) { BroadcastInfo bInfo = o as BroadcastInfo; Socket s = bInfo.s; string channel = bInfo.channel; string msg = bInfo.msg; if (channel == "") { return; } foreach (var item in channelToSocket[channel]) { if (item != s) { MyNetWorkLibrary.SendAndRecvHelper.SendVarData(item, Encoding.UTF8.GetBytes(msg)); } } }
public static void BroadCast(BroadcastInfo b) { uint unixTimestamp = (uint)(DateTime.UtcNow.Subtract(new DateTime(1970, 1, 1))).TotalMinutes; // min ! switch (b.flag) { case 1: NT.BroadcastFile(b.filePath, b.header); BroadcastQueue.RemoveAt(0); break; case 2: if (unixTimestamp > LATEST_FBROADCAST_TICK + BROADCAST_FULL_BLOCKCHAIN_CLOCK) { //NT.BroadcastFile(GetLatestBlockChainFilePath(), 1); uint latestIndex = RequestLatestBlockIndex(true); Print("broadcast = " + latestIndex); NT.BroadcastBlockchain(1, latestIndex); BroadcastQueue = new List <BroadcastInfo>(); LATEST_FBROADCAST_TICK = unixTimestamp; } else { uint latestIndex = RequestLatestBlockIndex(true); int startI = (int)(latestIndex - BROADCAST_BLOCKS_LIMIT); Print("broadcast = " + latestIndex); if (startI < 1) { startI = 1;; } NT.BroadcastBlockchain((uint)startI, latestIndex); BroadcastQueue.RemoveAt(0); } break; } }
public async Task <ActionResult> SendNotificationToOrganisation(BroadcastInfo taskInfo) { try { var currentTaskList = new List <BroadcastInfo>(); List <BroadcastInfo> taskList = new List <BroadcastInfo>(); _taskList.TryGetValue("taskList", out currentTaskList); taskInfo.taskId = Guid.NewGuid(); if (currentTaskList == null) { taskList.Add(taskInfo); _taskList.AddOrUpdate("taskList", taskList, (key, newValue) => taskList); ViewBag.TaskList = taskList; } else { currentTaskList.Add(taskInfo); _taskList.AddOrUpdate("taskList", currentTaskList, (key, newValue) => currentTaskList); ViewBag.TaskList = currentTaskList; } // Graph client for user. var graphClient = SimpleGraphClient.GetGraphClient(taskInfo.access_token); // Graph client for app. var graphClientApp = SimpleGraphClient.GetGraphClientforApp(_configuration["AzureAd:MicrosoftAppId"], _configuration["AzureAd:MicrosoftAppPassword"], _configuration["AzureAd:TenantId"]); var usersList = await graphClient.Users .Request() .GetAsync(); var installedAppsForCurrentUser = await graphClient.Users[taskInfo.userId].Teamwork.InstalledApps .Request() .Expand("teamsAppDefinition") .GetAsync(); // Get app id using app display name. var appId = installedAppsForCurrentUser.Where(id => id.TeamsAppDefinition.DisplayName == "Activity feed broadcast").Select(x => x.TeamsAppDefinition.TeamsAppId); Parallel.ForEach(usersList, async users => { var installedApp = await graphClient.Users[users.Id].Teamwork.InstalledApps .Request() .Expand("teamsApp") .GetAsync(); var response = new HttpResponseMessage(); var installationId = installedApp.Where(id => id.TeamsApp.DisplayName == "Activity feed broadcast").Select(x => x.TeamsApp.Id); var client = new HttpClient(); var url = "https://teams.microsoft.com/l/entity/" + appId.ToList()[0] + "/broadcast?context={\"subEntityId\":\"" + taskInfo.taskId + "\"}"; var postData = new { topic = new TeamworkActivityTopic() { Source = TeamworkActivityTopicSource.Text, Value = $"{taskInfo.title}", WebUrl = url }, activityType = "approvalRequired", previewText = new ItemBody { Content = $"Message By:" }, templateParameters = new List <Microsoft.Graph.KeyValuePair>() { new Microsoft.Graph.KeyValuePair { Name = "approvalTaskId", Value = taskInfo.title } } }; var data = new StringContent(JsonConvert.SerializeObject(postData), Encoding.UTF8, "application/json"); if (installationId.ToList().Count == 0) { var userScopeTeamsAppInstallation = new UserScopeTeamsAppInstallation { AdditionalData = new Dictionary <string, object>() { { "*****@*****.**", "https://graph.microsoft.com/v1.0/appCatalogs/teamsApps/" + appId.ToList()[0] } } }; await graphClient.Users[users.Id].Teamwork.InstalledApps .Request() .AddAsync(userScopeTeamsAppInstallation); client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", taskInfo.access_token); await client.PostAsync($"https://graph.microsoft.com/v1.0/users/{users.Id}/teamwork/sendActivityNotification", data); } else { client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", taskInfo.access_token); response = await client.PostAsync($"https://graph.microsoft.com/v1.0/users/{users.Id}/teamwork/sendActivityNotification", data); } if (response.StatusCode == HttpStatusCode.TooManyRequests) { await Policy .Handle <HttpRequestException>() .OrResult <HttpResponseMessage>(response => response.StatusCode == HttpStatusCode.TooManyRequests || response.StatusCode == HttpStatusCode.ServiceUnavailable) .WaitAndRetryAsync(3, sleepDurationProvider: (retryCount, response, context) => { var delay = TimeSpan.FromSeconds(0); // if an exception was thrown, this will be null if (response.Result != null) { if (!response.Result.Headers.TryGetValues("Retry-After", out IEnumerable <string> values)) { return(delay); } if (int.TryParse(values.First(), out int delayInSeconds)) { delay = TimeSpan.FromSeconds(delayInSeconds); } } else { var exponentialBackoff = Math.Pow(2, retryCount); var delayInSeconds = exponentialBackoff * 10000; delay = TimeSpan.FromMilliseconds(delayInSeconds); } return(delay); }, onRetryAsync: async(response, timespan, retryCount, context) => { } ).ExecuteAsync(async() => { return(await client.PostAsync($"https://graph.microsoft.com/v1.0/users/{users.Id}/teamwork/sendActivityNotification", data)); } ); } }); } catch (Exception ex) { Console.WriteLine(ex); } return(View("Index")); }
public string GenerateFullFilename(BroadcastInfo broadcast) { string filename = GetFilename(broadcast); return(Path.Combine(PathRoot, filename)); }
public string GetFullFilename(BroadcastInfo broadcast) { return(Path.Combine(PathRoot, broadcast.Filename)); }
public PlanBroadcastRequest(User user, BroadcastInfo broadcast) : base(user) { Broadcast = broadcast; }
void AddTimerInternal(BroadcastInfo bi) { timerCount++; StartCoroutine("Broadcast", bi); }
private void LoadBroadcast(BroadcastInfo broadcast) { txtDescription.Text = broadcast.Label; dtpDate.Value = broadcast.StartTime.Date; dtpTime.Value = broadcast.StartTime; }
public RemoveBroadcasRequest(User user, BroadcastInfo broadcast) : base(user) { Broadcast = broadcast; }
private void OnBroadcast() { var source = StreamSource; var contentReaderFactory = ContentReaderFactory; if (!CanBroadcast(source, contentReaderFactory, channelName)) return; IYellowPageClient yellowPage = this.yellowPage; var channelInfo = CreateChannelInfo(this); var channelTrack = CreateChannelTrack(this); var channel_id = Utils.CreateChannelID( peerCast.BroadcastID, channelName, genre, source.ToString()); var channel = peerCast.BroadcastChannel( yellowPage, channel_id, channelInfo, source, contentReaderFactory); if (channel!=null) { channel.ChannelTrack = channelTrack; } var info = new BroadcastInfo { StreamUrl = this.StreamUrl, Bitrate = this.bitrate.HasValue ? this.bitrate.Value : 0, ContentType = this.ContentType.ContentReaderFactory.Name, YellowPage = this.YellowPage!=null ? this.YellowPage.Name : null, ChannelName = this.ChannelName, Genre = this.Genre, Description = this.Description, Comment = this.Comment, ContactUrl = this.ContactUrl, TrackTitle = this.TrackTitle, TrackAlbum = this.TrackAlbum, TrackArtist = this.TrackArtist, TrackGenre = this.TrackGenre, TrackUrl = this.TrackUrl, }; var settings = PeerCastApplication.Current.Settings.Get<WPFSettings>(); if (!settings.BroadcastHistory.Any(i => i.Equals(info))) { settings.BroadcastHistory = Enumerable.Repeat(info, 1) .Concat(settings.BroadcastHistory) .Take(20) .ToArray(); } }
private void NewBroadcast() { AudioFileReader reader; var file = GetFilename(); if (file == null) { return; } else { reader = new AudioFileReader(file); } var duration = (rbLiveBroadcast.Checked) ? dtpDuration.Value.TimeOfDay : reader.TotalTime; var broadcast = new BroadcastInfo(currentUser.Username, StartTime, duration, BroadcastType, MediaType, txtDescription.Text); var planRequest = new PlanBroadcastRequest(currentUser, broadcast); var planResponse = client.SendAndRecieve <PlanBroadcastResponse>(planRequest); if (planRequest != null) { switch (planResponse.Result) { case PlanBroadcastResult.CanUpload: break; case PlanBroadcastResult.CannotUpload: MessageBox.Show("Hlášení koliduje s jiným(i) hlášením(i), zvolte, prosím, jiný čas."); return; case PlanBroadcastResult.CanUploadIfAdmin: var result = MessageBox.Show("Hlášení koliduje s jiným(i) hlášením(i), chcete tato hlášení odstranit?", "Otázka", MessageBoxButtons.YesNo, MessageBoxIcon.Question); if (result == DialogResult.Yes) { break; } else { return; } } } else { return; } if (!rbLiveBroadcast.Checked) { var settings = Settings.Default; var uploadRequest = new UploadBroadcastRequest(currentUser, broadcast, MediaType.MP3, settings.BROADCAST_PORT, settings.TRANSFER_BUFFER_SIZE); //TODO: Media file detection var uploadResponse = client.SendAndRecieve <UploadBroadcastResponse>(uploadRequest); if (uploadResponse != null) { switch (uploadResponse.Result) { case UploadBroadcastResult.Success: FileStreamer streamer = new FileStreamer(file, settings.TRANSFER_BUFFER_SIZE, settings.SERVER_IP, settings.BROADCAST_PORT); //TODO: From settings... streamer.Start(); MessageBox.Show("Vaše hlášení bylo úspěšně naplánováno.", "Oznámení", MessageBoxButtons.OK, MessageBoxIcon.Information); this.Close(); break; case UploadBroadcastResult.CollissionBlocked: MessageBox.Show("Hlášení koliduje s jiným(i) hlášením(i), zvolte, prosím, jiný čas.", "Upozornění", MessageBoxButtons.OK, MessageBoxIcon.Warning); break; } } else { return; } } }
public TimeLineTask(BroadcastInfo task) { Task = task; XStart = 0; XEnd = 0; }