public async Task Get() { var random = new Random(); var bytes = new byte[128]; random.NextBytes(bytes); var fileName = Guid.NewGuid().ToString(); var contentType = "image/jpeg"; await this.container.Save(fileName, bytes, contentType); var streamer = new Streamer(this.container); using (var stream = await streamer.Stream(fileName)) { var ms = stream as MemoryStream; Assert.IsNotNull(ms); Assert.AreEqual(bytes, ms.ToArray()); } Assert.AreEqual(contentType, streamer.MimeType); }
public void UpdateDataPoint(Streamer streamer) { _denStream.Update(streamer); }
public void SerializeCachedObjectUsingProtocolBuffers() { ClientSideTypeDescription.RegisterType(typeof(TradeLike)); Random randGen = new Random(); //to byte array for (int i = 0; i < 5000; i++) { TradeLike obj = new TradeLike(1, 1001, "aaa", new DateTime(2009, 10, 10), 1); CachedObject packed = CachedObject.Pack(obj).Metadata; byte[] data = SerializationHelper.ObjectToBytes(packed, SerializationMode.ProtocolBuffers, null); CachedObject reloaded = SerializationHelper.ObjectFromBytes <CachedObject>(data, SerializationMode.ProtocolBuffers, false); Assert.AreEqual(reloaded.IndexKeys[2], packed.IndexKeys[2]); Console.WriteLine(reloaded); } //to stream MemoryStream stream = new MemoryStream(); List <CachedObject> items = new List <CachedObject>(); for (int i = 0; i < 1000; i++) { TradeLike obj = new TradeLike(1, 1001, "aaa", new DateTime(2009, 10, 10), randGen.Next(1000)); CachedObject packed = CachedObject.Pack(obj).Metadata; items.Add(packed); } List <CachedObject> itemsReloaded = new List <CachedObject>(); Streamer.ToStreamGeneric(stream, items); stream.Seek(0, SeekOrigin.Begin); ManualResetEvent evt = new ManualResetEvent(false); Streamer.FromStream(stream, delegate(CachedObject item, int i, int totalItems) { itemsReloaded.Add(item); if (i == totalItems) { evt.Set(); } }, delegate { /* ignore exceptions */ }); evt.WaitOne(); for (int i = 0; i < 1000; i++) { Assert.AreEqual(itemsReloaded[i].IndexKeys[2], items[i].IndexKeys[2]); } }
public void SendManyGeneric <TItemType>(ICollection <TItemType> items) where TItemType : class { Streamer.ToStreamGeneric(_stream, items); _stream.Seek(0, SeekOrigin.Begin); _dataReceived.Set(); }
/// <summary> /// On window loaded - Start Foosbot Application and Threads /// </summary> /// <param name="sender"></param> /// <param name="e"></param> public void OnWindowLoaded(object sender, RoutedEventArgs e) { try { //get operation mode from configuration file _isDemoMode = Configuration.Attributes.GetValue <bool>(KEY_IS_DEMO_MODE); //Set canvas background as green image _guiImage.Background = System.Windows.Media.Brushes.Green; //Init Gui Log AutoscrollCheckbox = true; Log.InitializeGuiLog(UpdateLog); string startMessage = Configuration.Attributes.GetValue <string>("startMessage"); Log.Common.Debug(startMessage); //Start Diagnostics - Processor and Memory Usage StartDiagnostics(); //Call the streamer to get capture from camera if (!_isDemoMode) { _streamer = new RealStreamer(UpdateStatistics); } else { _streamer = new DemoStreamer(UpdateStatistics); } //Initialize Markups to Show on Screen InitializeMarkUps(); //Start streamer after marks initialized _streamer.Start(); //Call ImageProcessingUnit _frameReceiver = new UIFrameObserver(_streamer); _frameReceiver.Start(); if (!_isDemoMode) { _ipu = new ImageProcessingUnit(_streamer, UpdateMarkupCircle, UpdateStatistics); } else { _ipu = new DemoImageProcessingUnit(_streamer as DemoStreamer, UpdateMarkupCircle, UpdateStatistics); } _ipu.Start(); //Show frames in diferent thread _imageBrush = new ImageBrush(); BackgroundWorker worker = new BackgroundWorker(); worker.DoWork += (s, z) => { ShowVideoStream(); }; worker.RunWorkerAsync(); VectorCallculationUnit vectorCalcullationUnit = new VectorCallculationUnit(_ipu.BallLocationPublisher, UpdateMarkupLine, UpdateMarkupCircle); vectorCalcullationUnit.Start(); } catch (Exception ex) { MessageBox.Show("Application can not start. Reason: " + ex.Message); Close(); } }
public Streamer CreateStreamerLogic(Streamer body) { Streamer returnStreamer; using (var context = new MainDataContext()) { Streamer streamer = context.Streamers.FirstOrDefault(item => item.streamerId == body.streamerId); if (streamer == null) { // if streamer does not exist in database and want to add _logger.Info("Adding new streamer..."); string etag = ""; if (GlobalConfig.GetGlobalConfig("contentRootPath") != null) { CreateFolder($"{GlobalConfig.GetGlobalConfig("contentRootPath")}/streamers/{body.streamerId}/"); if (!string.IsNullOrEmpty(body.thumbnailLocation)) { etag = DownloadHelpers.DownloadFile(body.thumbnailLocation, $"{GlobalConfig.GetGlobalConfig("contentRootPath")}/streamers/{body.streamerId}/thumbnail.png"); } } streamer = new Streamer { streamerId = body.streamerId, displayName = body.displayName, username = body.username, isLive = body.isLive ?? false, quality = body.quality == "{\"resolution\":0,\"fps\":0}" ? null : body.quality, getLive = body.getLive ?? false, thumbnailLocation = $"streamers/{body.streamerId}/thumbnail.png", thumbnailETag = etag }; context.Streamers.Add(streamer); returnStreamer = streamer; } /*else if (streamer != null) { * // if streamer exists then update * Console.WriteLine("Updating streamer..."); * streamer.streamerId = body.streamerId; * streamer.displayName = body.displayName; * streamer.username = body.username; * streamer.description = body.description; * streamer.viewCount = body.viewCount; * streamer.thumbnailLocation = $"streamers/{body.streamerId}/thumbnail.png"; * returnStreamer = streamer; * * IList<Parameter> headers = downloadHelpers.GetHeaders(body.thumbnailLocation); * for (var x = 0; x < headers.Count; x++) { * if (headers[x].Name == "ETag") { * var etag = headers[x].Value; * if (etag != null) { * if (streamer.thumbnailETag != etag.ToString().Replace("\"", "")) { * if (contentRootPath != null) * Console.WriteLine("Detected new thumbnail image, downloading..."); * streamer.thumbnailETag = downloadHelpers.DownloadFile(body.thumbnailLocation, * $"{contentRootPath.value}/streamers/{body.streamerId}/thumbnail.png"); * } * } * } * } * }*/ else { //something strange has happened returnStreamer = new Streamer(); } //if (isNew) { //StartupJobs startupJobs = new StartupJobs(); List <Streamer> streamers = new List <Streamer> { streamer }; //lazy JobHelpers.NormalJob <CheckForStreamerLiveStatusJob>("CreateStreamerUpdateLiveStatusJob", "CreateStreamerUpdateLiveStatusTrigger", QuartzSchedulers.PrimaryScheduler()); IJobDetail job = JobBuilder.Create <UpdateStreamerDetailsJob>() .WithIdentity("UpdateStreamerDetailsJob") .Build(); job.JobDataMap.Put("listOfStreamers", streamers); var schedulerFactory = new StdSchedulerFactory(QuartzSchedulers.PrimaryScheduler()); IScheduler scheduler = schedulerFactory.GetScheduler().Result; scheduler.Start(); ISimpleTrigger trigger = (ISimpleTrigger)TriggerBuilder.Create() .WithIdentity("UpdateStreamerDetailsTrigger") .StartNow() .Build(); scheduler.ScheduleJob(job, trigger); //} context.SaveChanges(); } return(returnStreamer); }
private Card RandomCard(Vector2 position, bool front, int playerID) { Card c = null; if (Globals.r.Next(4) == 0) { int cardsCount = 31; int rn = Globals.r.Next(cardsCount); switch (rn) { case 0: c = new Actor(position, front, playerID); break; case 1: c = new Artist(position, front, playerID); break; case 2: c = new Astrophysicist(position, front, playerID); break; case 3: c = new Babysitter(position, front, playerID); break; case 4: c = new BabysitterU(position, front, playerID); break; case 5: c = new BusDriver(position, front, playerID); break; case 6: c = new Conman(position, front, playerID); break; case 7: c = new DeliveryPerson(position, front, playerID); break; case 8: c = new DrugDealer(position, front, playerID); break; case 9: c = new FastFoodEmployee(position, front, playerID); break; case 10: c = new Hacker(position, front, playerID); break; case 11: c = new Hitman(position, front, playerID); break; case 12: c = new HumanTrafficker(position, front, playerID); break; case 13: c = new IndieGameDev(position, front, playerID); break; case 14: c = new Influencer(position, front, playerID); break; case 15: c = new InstaModel(position, front, playerID); break; case 16: c = new InternDev(position, front, playerID); break; case 17: c = new JuniorDev(position, front, playerID); break; case 18: c = new Musician(position, front, playerID); break; case 19: c = new OnlyFans(position, front, playerID); break; case 20: c = new Referee(position, front, playerID); break; case 21: c = new RiceFarmer(position, front, playerID); break; case 22: c = new Santa(position, front, playerID); break; case 23: c = new Shelfstacker(position, front, playerID); break; case 24: c = new Shoplifter(position, front, playerID); break; case 25: c = new Sporter(position, front, playerID); break; case 27: c = new Streamer(position, front, playerID); break; case 28: c = new SugarDaddy(position, front, playerID); break; case 29: c = new TaxiDriver(position, front, playerID); break; case 30: c = new Writer(position, front, playerID); break; case 26: c = new YogaInstructor(position, front, playerID); break; } } else { int cardsCount = 12; int rn = Globals.r.Next(cardsCount); switch (rn) { case 0: c = new Alcohol(position, front, playerID); break; case 1: c = new Drugs(position, front, playerID); break; case 2: c = new EatingOut(position, front, playerID); break; case 3: c = new FastFood(position, front, playerID); break; case 4: c = new Gambling(position, front, playerID); break; case 5: c = new Gaming(position, front, playerID); break; case 6: c = new Joint(position, front, playerID); break; case 7: c = new PomXML(position, front, playerID); break; case 8: c = new Shopping(position, front, playerID); break; case 9: c = new Smoking(position, front, playerID); break; case 10: c = new SocialMedia(position, front, playerID); break; case 11: c = new Streaming(position, front, playerID); break; } } return(c); }
//внутренний дл¤ тестировани¤ internal TOutStream RealisePlan <TOutStream>(FramingPlan plan, Guid rootKey, string nmspc, int maxDepth, Streamer <TOutStream> streamer, Dictionary <string, object> parameters) { var frame = plan.MakeFrame(rootKey, maxDepth, parameters); var filledFrame = _planFiller.FillFrame(frame); var stream = streamer.StreamFilledFrames(filledFrame, nmspc); return(stream); }
/// <summary> /// Splits the scene into tiles. /// </summary> void SplitScene(SceneCollection layer) { warning = ""; splits [layer.layerNumber] = new Dictionary <string, GameObject> (); GameObject[] allObjects = UnityEngine.Object.FindObjectsOfType <GameObject> (); FindSceneGO(layer.prefixScene, allObjects, splits [layer.layerNumber]); ClearSceneGO(layer); foreach (var item in allObjects) { if (item == null || item.transform.parent != null || !item.name.StartsWith(layer.prefixName) || item.GetComponent <SceneSplitManager> () != null || item.GetComponent <SceneCollection> () != null || item.GetComponent <SceneSplitterSettings> () != null) { continue; } string splitName = layer.prefixScene + GetID(item.transform.position, layer); UnityEngine.SceneManagement.Scene scene = EditorSceneManager.GetSceneByName(splitName); //EditorSceneManager.NewScene (NewSceneSetup.EmptyScene, NewSceneMode.Additive); if (scene.name == null) { string splitSceneName = splitName + ".unity"; string sceneName = layer.path + splitSceneName; bool contains = false; foreach (var nameSplit in layer.names) { if (nameSplit == splitSceneName) { contains = true; break; } } if (!contains) { List <string> names = new List <string> (); names.AddRange(layer.names); names.Add(splitSceneName); layer.names = names.ToArray(); scene = EditorSceneManager.NewScene(NewSceneSetup.EmptyScene, NewSceneMode.Additive); EditorSceneManager.SaveScene(scene, sceneName); loadedScenes.Add(scene); } else { scene = EditorSceneManager.OpenScene(sceneName, OpenSceneMode.Additive); loadedScenes.Add(scene); } } } allObjects = UnityEngine.Object.FindObjectsOfType <GameObject> (); FindSceneGO(layer.prefixScene, allObjects, splits [layer.layerNumber]); ClearSceneGO(layer); foreach (var item in allObjects) { if (item == null || item.transform.parent != null || !item.name.StartsWith(layer.prefixName) || item.GetComponent <SceneSplitManager> () != null || item.GetComponent <SceneCollection> () != null || item.GetComponent <SceneSplitterSettings> () != null) { continue; } string itemId = GetID(item.transform.position, layer); GameObject split = null; if (!splits [layer.layerNumber].TryGetValue(itemId, out split)) { split = new GameObject(layer.prefixScene + itemId); SceneSplitManager sceneSplitManager = split.AddComponent <SceneSplitManager> (); sceneSplitManager.sceneName = split.name; sceneSplitManager.size = new Vector3(layer.xSize != 0 ? layer.xSize : 100, layer.ySize != 0 ? layer.ySize : 100, layer.zSize != 0 ? layer.zSize : 100); sceneSplitManager.position = GetSplitPosition(item.transform.position, layer); sceneSplitManager.color = layer.color; splits [layer.layerNumber].Add(itemId, split); Vector3 splitPosId = GetSplitPositionID(item.transform.position, layer); if (layer.xSplitIs) { if (splitPosId.x < layer.xLimitsx) { layer.xLimitsx = (int)splitPosId.x; } if (splitPosId.x > layer.xLimitsy) { layer.xLimitsy = (int)splitPosId.x; } } else { layer.xLimitsx = 0; layer.xLimitsy = 0; } if (layer.ySplitIs) { if (splitPosId.y < layer.yLimitsx) { layer.yLimitsx = (int)splitPosId.y; } if (splitPosId.y > layer.yLimitsy) { layer.yLimitsy = (int)splitPosId.y; } } else { layer.yLimitsx = 0; layer.yLimitsy = 0; } if (layer.zSplitIs) { if (splitPosId.z < layer.zLimitsx) { layer.zLimitsx = (int)splitPosId.x; } if (splitPosId.z > layer.zLimitsy) { layer.zLimitsy = (int)splitPosId.z; } } else { layer.zLimitsx = 0; layer.zLimitsy = 0; } UnityEngine.SceneManagement.Scene scene = EditorSceneManager.GetSceneByName(sceneSplitManager.sceneName); EditorSceneManager.MoveGameObjectToScene(split, scene); } item.transform.SetParent(split.transform); } if (splits.Count == 0) { warning = "No objects to split. Check GameObject or Scene Prefix."; } foreach (var item in loadedScenes) { if (!string.IsNullOrEmpty(item.name) && GameObject.Find(item.name) == null) { GameObject split = new GameObject(item.name); SceneSplitManager sceneSplitManager = split.AddComponent <SceneSplitManager> (); sceneSplitManager.sceneName = split.name; sceneSplitManager.size = new Vector3(layer.xSize != 0 ? layer.xSize : 100, layer.ySize != 0 ? layer.ySize : 100, layer.zSize != 0 ? layer.zSize : 100); int posx; int posy; int posz; Streamer.SceneNameToPos(layer, item.name, out posx, out posy, out posz); posx *= layer.xSize; posy *= layer.ySize; posz *= layer.zSize; sceneSplitManager.position = GetSplitPosition(new Vector3(posx, posy, posz), layer); sceneSplitManager.color = layer.color; splits [layer.layerNumber].Add(split.name.Replace(layer.prefixScene, ""), split); EditorSceneManager.MoveGameObjectToScene(split, item); } } }
public Task EditUser(IUser user, string newUrl) { if (user.IsBot) { return(Task.CompletedTask); } if (string.IsNullOrWhiteSpace(newUrl)) { return(Task.CompletedTask); } if (!newUrl.Contains("http")) { return(ReplyAsync("URL invalid")); } LiteCollection <Streamer> streamers = null; lock (dbLock) { streamers = database.GetCollection <Streamer>("streamers"); } var urlState = twitch.GetTwitchUrlState(newUrl); if (urlState.Result != Twitch.TwitchUrlState.Ok) { return(ReplyAsync("Twitch URL invalid.")); } Dictionary <string, JToken> dict = twitch.TwitchQuery(Twitch.HelixStrings.Users, newUrl).Result; Streamer currentStreamer = null; if ((currentStreamer = streamers.FindOne(x => x.Id == user.Id)) == null) { ReplyAsync("User does not exist in database"); return(Task.CompletedTask); } currentStreamer.Name = (string)dict["login"]; currentStreamer.StreamUrl = "https://www.twitch.tv/" + dict["login"]; currentStreamer.AvatarUrl = (string)dict["profile_image_url"]; bool update = false; lock (dbLock) { update = streamers.Update(currentStreamer); } if (!update) { ReplyAsync("Could not add user to the database"); return(Task.CompletedTask); } ReplyAsync($"Added {user.Mention} to the database"); return(Task.CompletedTask); }
///<summary>これを定期的に呼んで再接続やFriendの取得をやらせる</summary> public async ValueTask <int> ConnectStreamers() { if (!await db.ExistThisPid().ConfigureAwait(false)) { Environment.Exit(1); } int ActiveStreamers = 0; //再接続が不要だったやつの数 ActionBlock <UserStreamer> ConnectBlock = new ActionBlock <UserStreamer>( async(Streamer) => { try { UserStreamer.NeedConnectResult NeedConnect = Streamer.NeedConnect(); //初回とRevoke疑いのときだけVerifyCredentials()する //プロフィールを取得したい if (NeedConnect == UserStreamer.NeedConnectResult.Postponed) { return; } else if (NeedConnect == UserStreamer.NeedConnectResult.First) { switch (await Streamer.VerifyCredentials().ConfigureAwait(false)) { case UserStreamer.TokenStatus.Locked: Streamer.PostponeConnect(); return; case UserStreamer.TokenStatus.Revoked: await RevokeRetry(Streamer).ConfigureAwait(false); return; case UserStreamer.TokenStatus.Failure: return; case UserStreamer.TokenStatus.Success: RevokeRetryUserID.TryRemove(Streamer.Token.UserId, out byte gomi); NeedConnect = UserStreamer.NeedConnectResult.JustNeeded; //無理矢理接続処理に突っ込む #ウンコード break; } } //Streamに接続したりRESTだけにしたり if (NeedConnect == UserStreamer.NeedConnectResult.StreamConnected) { if (Streamer.NeedStreamSpeed() == UserStreamer.NeedStreamResult.RestOnly) { Streamer.DisconnectStream(); return; } else { Interlocked.Increment(ref ActiveStreamers); } } else { //TLの速度を測定して必要ならStreamに接続 switch (await Streamer.RecieveRestTimelineAuto().ConfigureAwait(false)) { case UserStreamer.TokenStatus.Locked: Streamer.PostponeConnect(); break; case UserStreamer.TokenStatus.Revoked: await RevokeRetry(Streamer).ConfigureAwait(false); break; default: UserStreamer.NeedStreamResult NeedStream = Streamer.NeedStreamSpeed(); if (NeedStream == UserStreamer.NeedStreamResult.Stream) { Streamer.RecieveStream(); Interlocked.Increment(ref ActiveStreamers); } //DBが求めていればToken読み込み直後だけ自分のツイートも取得(初回サインイン狙い if (Streamer.NeedRestMyTweet) { Streamer.NeedRestMyTweet = false; await Streamer.RestMyTweet().ConfigureAwait(false); //User streamに繋がない場合はこっちでフォローを取得する必要がある if (NeedStream != UserStreamer.NeedStreamResult.Stream) { await Streamer.RestFriend().ConfigureAwait(false); } await Streamer.RestBlock().ConfigureAwait(false); await db.StoreRestDonetoken(Streamer.Token.UserId).ConfigureAwait(false); } break; } } } catch (Exception e) { Console.WriteLine("ConnectBlock Faulted: {0}", e); } finally { Streamer.ConnectWaiting = false; } }, new ExecutionDataflowBlockOptions() { MaxDegreeOfParallelism = config.crawl.ReconnectThreads, BoundedCapacity = config.crawl.ReconnectThreads << 1, //これでもawaitする SingleProducerConstrained = true, }); SetMaxConnections(0); Stopwatch sw = new Stopwatch(); sw.Start(); await ShowCount(); foreach (KeyValuePair <long, UserStreamer> s in Streamers.ToArray()) //ここでスナップショットを作る { if (!s.Value.ConnectWaiting) { s.Value.ConnectWaiting = true; await ConnectBlock.SendAsync(s.Value).ConfigureAwait(false); } do { SetMaxConnections(ActiveStreamers); if (sw.ElapsedMilliseconds > 60000) { //ここでGCする #ウンコード sw.Restart(); await ShowCount(); //GCSettings.LargeObjectHeapCompactionMode = GCLargeObjectHeapCompactionMode.CompactOnce; //これは毎回必要らしい //GC.Collect(); } //ツイートが詰まってたら休む if (UserStreamerStatic.NeedConnectPostpone()) { await Task.Delay(1000).ConfigureAwait(false); } } while (UserStreamerStatic.NeedConnectPostpone()); } ConnectBlock.Complete(); await ConnectBlock.Completion.ConfigureAwait(false); return(ActiveStreamers); //カウンターを表示したりいろいろ async Task ShowCount() { Counter.PrintReset(); await WatchDogUdp.SendAsync(BitConverter.GetBytes(ThisPid), sizeof(int), WatchDogEndPoint); } }
public Task AddUser(IUser user, [Remainder] string twitchUrl) { if (user.IsBot) { return(Task.CompletedTask); } if (string.IsNullOrWhiteSpace(twitchUrl)) { return(Task.CompletedTask); } LiteCollection <Streamer> streamers = null; lock (dbLock) { streamers = database.GetCollection <Streamer>("streamers"); } var urlState = twitch.GetTwitchUrlState(twitchUrl); if (urlState.Result != Twitch.TwitchUrlState.Ok) { ReplyAsync("Twitch user is not valid"); return(Task.CompletedTask); } Dictionary <string, JToken> dict = twitch.TwitchQuery(Twitch.HelixStrings.Users, twitchUrl).Result; if (streamers.FindOne(x => x.Id == user.Id) != null) { ReplyAsync("User already exists in database"); return(Task.CompletedTask); } var newUser = new Streamer { Id = user.Id, Name = (string)dict["login"], StreamUrl = "https://www.twitch.tv/" + dict["login"], AvatarUrl = (string)dict["profile_image_url"] }; bool update = false; lock (dbLock) { update = streamers.Upsert(newUser); } if (!update) { ReplyAsync("Could not add user to the database"); return(Task.CompletedTask); } ReplyAsync($"Added {user.Mention} to the database"); return(Task.CompletedTask); }
public async Task GetBytesNull() { var container = Substitute.For<IContainer>(); var istreamer = new Streamer(container); await istreamer.Bytes(null); }
public static Streamable <X> make <X>(Streamer <X> streamer, Cardinality cardinality) => new Streamable <X>(streamer, cardinality);
public void RegisterStreamer(Streamer streamer) { this.m_Streamers.Add(streamer); }
public void Init(object sender, EventArgs e) { string PreShow = File.ReadAllLines("./ShowData.txt")[0]; string Show = File.ReadAllLines("./ShowData.txt")[1]; string PostShow = File.ReadAllLines("./ShowData.txt")[2]; bool ShowTime = Boolean.Parse(File.ReadAllLines("./ShowData.txt")[5]); TimeSpan TimeVariance = GetVariance(); string StartValue = File.ReadAllLines("./ShowData.txt")[3]; DateTime StartTime = DateTime.Parse(File.ReadAllLines("./ShowData.txt")[3]) - TimeVariance; DateTime EndTime = DateTime.Parse(File.ReadAllLines("./ShowData.txt")[4]) - TimeVariance; if (ShowTime) { MessageBox.Show(DateTime.UtcNow.ToString()); } if (ShowTime) { MessageBox.Show((DateTime.Parse(File.ReadAllLines("./ShowData.txt")[3]) - TimeVariance).ToString()); } Streamer.URL = PreShow; Application.DoEvents(); this.Refresh(); Streamer.Refresh(); VolumeSlider.Refresh(); while (DateTime.UtcNow < StartTime) { try { WaitTimer.Text = "The Show will begin in: " + Math.Abs((DateTime.UtcNow - StartTime).Days).ToString() + " Days, " + Math.Abs((DateTime.UtcNow - StartTime).Hours).ToString() + " Hours, " + Math.Abs((DateTime.UtcNow - StartTime).Minutes).ToString() + " Minutes, " + Math.Abs((DateTime.UtcNow - StartTime).Seconds).ToString() + " Seconds."; } catch (Exception exception) { MessageBox.Show(exception.ToString()); } Application.DoEvents(); } WaitTimer.Text = ""; if (DateTime.UtcNow > EndTime) { WaitTimer.Text = "The Stream has ended."; return; } Streamer.URL = Show; Streamer.Ctlcontrols.currentPosition = 0; Streamer.Ctlcontrols.pause(); Streamer.settings.volume = 100; if (DateTime.UtcNow > StartTime && DateTime.UtcNow < EndTime) { Streamer.Ctlcontrols.currentPosition = (DateTime.UtcNow - StartTime).TotalSeconds; } while (DateTime.UtcNow >= StartTime && DateTime.UtcNow <= EndTime) { string mins = (DateTime.UtcNow - StartTime).Minutes.ToString(); if (mins.Length == 1) { mins = "0" + mins; } string secs = (DateTime.UtcNow - StartTime).Seconds.ToString(); if (secs.Length == 1) { secs = "0" + secs; } WaitTimer.Text = mins + ":" + secs; Application.DoEvents(); } Streamer.URL = PostShow; WaitTimer.Text = "The Stream has ended."; WaitTimer.ForeColor = System.Drawing.Color.Red; }
private void ClientLoop(object state) { var client = (TcpClient)state; Stream clientStream = client.GetStream(); Thread.CurrentThread.Name = "client loop (server thread)"; try { while (client.Connected) { var inputType = clientStream.ReadByte(); if (inputType == -1) // connection closed { break; } // if its a simple ping do not expect a request if (inputType == Constants.PingCookie) { clientStream.WriteByte(Constants.PingCookie); } else { var request = Streamer.FromStream <Request>(clientStream); if (RequestReceived != null) { var sc = new ServerClient(client); RequestReceived(this, new RequestEventArgs(request, sc)); } else { break; } if (request.IsSimple) { // ReSharper disable once RedundantAssignment var ackOkay = Streamer.ReadAck(clientStream); Debug.Assert(ackOkay); } } } } catch (IOException) { //client disconnected (nothing to do) } // ReSharper disable EmptyGeneralCatchClause catch (Exception) // ReSharper restore EmptyGeneralCatchClause { //ignore } finally { lock (_connectedClients) { _connectedClients.Remove(client); Interlocked.Decrement(ref _connections); } } }
public Streamable(Streamer <X> streamer, Cardinality cardinality) { this.streamer = streamer; this.Cardinality = cardinality; }
public void UnregisterStreamer(Streamer streamer) { _streamersList.Remove(streamer); _streamersNames.Remove(streamer.name); }
public FiniteStreamable(Streamer <X> Streamer) { this.Streamer = Streamer; this.Cardinality = Cardinality.Finite; }
public Streamer UpdateStreamer(Streamer body, int?id) { Streamer returnStreamer; using (var context = new MainDataContext()) { Streamer streamer = id == null?context.Streamers.FirstOrDefault(item => item.streamerId == body.streamerId) : context.Streamers.FirstOrDefault(item => item.id == id); _logger.Info("Updating streamer..."); if (body.streamerId != 0) { streamer.streamerId = body.streamerId; } if (body.displayName != null) { streamer.displayName = body.displayName; } if (body.username != null) { streamer.username = body.username; } if (body.description != null) { streamer.description = body.description; } if (body.isLive != null) { streamer.isLive = body.isLive; } if (body.quality != null) { if (body.quality == "{\"resolution\":0,\"fps\":0}") { streamer.quality = null; } else { streamer.quality = body.quality; } } if (body.getLive != null) { streamer.getLive = body.getLive; } if (body.viewCount != null) { streamer.viewCount = body.viewCount; } returnStreamer = streamer; if (streamer != null) { context.Update(streamer); } if (body.thumbnailLocation != null) { IList <Parameter> headers = DownloadHelpers.GetHeaders(body.thumbnailLocation); for (var x = 0; x < headers.Count; x++) { if (headers[x].Name == "ETag") { var etag = headers[x].Value; if (etag != null) { if (streamer.thumbnailETag != etag.ToString().Replace("\"", "")) { _logger.Info("Detected new thumbnail image, downloading..."); streamer.thumbnailETag = DownloadHelpers.DownloadFile(body.thumbnailLocation, $"{GlobalConfig.GetGlobalConfig("contentRootPath")}/streamers/{body.streamerId}/thumbnail.png"); } } } } } context.SaveChanges(); } return(returnStreamer); }
FiniteStreamable(Streamer <X> Streamer, Cardinality cardinality) { this.Streamer = Streamer; this.Cardinality = cardinality; }
public void SerializeCachedObjectUsingProtocolBuffers() { var schema = TypedSchemaFactory.FromType(typeof(TradeLike)); var randGen = new Random(); //to byte array for (var i = 0; i < 5000; i++) { var obj = new TradeLike(1, 1001, "aaa", new DateTime(2009, 10, 10), 1); var packed = PackedObject.Pack(obj, schema); var data = SerializationHelper.ObjectToBytes(packed, SerializationMode.ProtocolBuffers, false); var reloaded = SerializationHelper.ObjectFromBytes <PackedObject>(data, SerializationMode.ProtocolBuffers, false); Assert.AreEqual(reloaded.Values[2], packed.Values[2]); Console.WriteLine(reloaded); } //to stream var stream = new MemoryStream(); var items = new List <PackedObject>(); for (var i = 0; i < 1000; i++) { var obj = new TradeLike(1, 1001, "aaa", new DateTime(2009, 10, 10), randGen.Next(1000)); var packed = PackedObject.Pack(obj, schema); items.Add(packed); } var itemsReloaded = new List <PackedObject>(); Streamer.ToStreamGeneric(stream, items); stream.Seek(0, SeekOrigin.Begin); var evt = new ManualResetEvent(false); Streamer.FromStream(stream, delegate(PackedObject item, int i, int totalItems) { itemsReloaded.Add(item); if (i == totalItems) { evt.Set(); } }, delegate { /* ignore exceptions */ }); evt.WaitOne(); for (var i = 0; i < 1000; i++) { Assert.AreEqual(itemsReloaded[i].Values[2], items[i].Values[2]); } }
public void SendMany(ICollection <PackedObject> items, int[] selectedIndexes, string[] aliases) { Streamer.ToStreamMany(_stream, items, selectedIndexes, aliases); _stream.Seek(0, SeekOrigin.Begin); _dataReceived.Set(); }
public void SendMany(ICollection <CachedObject> items) { Streamer.ToStreamMany(_stream, items); _stream.Seek(0, SeekOrigin.Begin); _dataReceived.Set(); }
/// <summary> /// Return a list of user posts. /// </summary> /// <returns></returns> public List <object> GetPosts() { return(Streamer.ReadFile(OwnedPostsFile)); }
public void SendMany <THeader>(THeader header, ICollection <CachedObject> items) where THeader : class { Streamer.ToStream(_stream, header, items); _stream.Seek(0, SeekOrigin.Begin); _dataReceived.Set(); }
public IDisposable Stream(int id, Action<Message> action, IObserver<ConnectionState> observer) { var streamer = new Streamer(id, action, observer); _streamers.Add(streamer); return ActionDisposable.Create(() => _streamers.Remove(streamer)); }
public StreamHelpers.GetStreamsResult FetchStreams(int id) { bool isLive = false; using (var context = new MainDataContext()) { Streamer data = context.Streamers.FirstOrDefault(item => item.streamerId == id); if (data != null && data.isLive != null) { isLive = (bool)data.isLive; } } TwitchApiHelpers twitchApiHelpers = new TwitchApiHelpers(); var response = twitchApiHelpers.TwitchRequest("https://api.twitch.tv/helix/videos" + $"?user_id={id}" + "&first=100", Method.GET); var deserializeResponse = JsonConvert.DeserializeObject <StreamHelpers.GetStreamsResult>(response.Content); StreamHelpers.GetStreamsResult getStreamsResult = new StreamHelpers.GetStreamsResult(); getStreamsResult.data = new List <StreamHelpers.Data>(); string cursor; foreach (var stream in deserializeResponse.data) { if (isLive && stream.thumbnail_url.Length > 0) { getStreamsResult.data.Add(stream); } else if (!isLive) { getStreamsResult.data.Add(stream); } } if (deserializeResponse.pagination.cursor != null && deserializeResponse.data.Count >= 100) { cursor = deserializeResponse.pagination.cursor; } else { cursor = null; } while (cursor != null) { var paginatedResponse = twitchApiHelpers.TwitchRequest("https://api.twitch.tv/helix/videos" + $"?user_id={id}" + "&first=100" + $"&after={deserializeResponse.pagination.cursor}", Method.GET); deserializeResponse = JsonConvert.DeserializeObject <StreamHelpers.GetStreamsResult>(paginatedResponse .Content); foreach (var stream in deserializeResponse.data) { if (isLive && stream.thumbnail_url.Length > 0) { getStreamsResult.data.Add(stream); } else if (!isLive) { getStreamsResult.data.Add(stream); } } if (deserializeResponse.data.Count >= 100) { cursor = deserializeResponse.pagination.cursor; } else { cursor = null; } } for (int x = 0; x < getStreamsResult.data.Count; x++) { /*if (getStreamsResult.data[x].type != "archive") { * // only retrieve vods * getStreamsResult.data.Remove(getStreamsResult.data[x]); * }*/ // manually add thumbnail dimensions because twitch is too lazy to do it getStreamsResult.data[x].thumbnail_url = getStreamsResult.data[x].thumbnail_url .Replace("%{width}", "320").Replace("%{height}", "180"); } return(getStreamsResult); }
public void InitIsCalledInConstructorWithParameter() { Streamer streamer = new Streamer(_mediaDeviceWrapperMock.Object, new IntPtr(12345)); _mediaDeviceWrapperMock.Verify(m => m.Init(It.Is <IntPtr>(i => i.ToInt32() == 12345))); }
public static async Task InitializeAsync(StreamingContext context) { context.Database.EnsureCreated(); if (context.Streamers.Any()) { var streamersWithSubscribers = context.Streamers.Where(streamer => streamer.Subscribers.Any(sub => sub.Age > 18)).ToList(); foreach (var streamer in streamersWithSubscribers) { Console.WriteLine($"Streamer: {streamer.Name}"); } var subscribersMonths = context.Subscribers.Where(sub => sub.Subscriptions.Any(x => x.MonthsSubscribed > 3)).ToList(); foreach (var sub in subscribersMonths) { Console.WriteLine($"Subscriber: {sub.Name}"); } return; } var streamer1 = new Streamer { Name = "Patrick" }; var streamer2 = new Streamer { Name = "Ryan" }; var streamers = new Streamer[] { streamer1, streamer2, new Streamer { Name = "Streamer3" }, }; context.AddRange(streamers); context.SaveChanges(); var subscriber1 = new Subscriber { Name = "Aaron", Age = 20, Subscriptions = new List <Subscription> { new Subscription { Streamer = streamer1, MonthsSubscribed = 6 } }, Streamers = new List <Streamer> { streamer2 } }; var subscriber2 = new Subscriber { Name = "Becca", Age = 16, Streamers = new List <Streamer> { streamer1, streamer2 } }; var subscribers = new Subscriber[] { subscriber1, subscriber2, new Subscriber { Name = "Carol", Age = 1 }, }; context.AddRange(subscribers); context.SaveChanges(); //var subscriptions = new Subscription[] //{ // new Subscription { // Streamer = streamer1, // Subscriber = subscriber1, // MonthsSubscribed = 2 // }, // new Subscription { // Streamer = streamer1, // Subscriber = subscriber2, // MonthsSubscribed = 6 // }, // new Subscription { // Streamer = streamer2, // Subscriber = subscriber1, // MonthsSubscribed = 2 // }, //}; }
void SetupClusters(GameObject groupCollider, Vector2Int sizeMap, bool activeScene) { Vector2 sizeCluster = new Vector2(15f, 15f); int width = sizeMap.x % sizeCluster.x == 0 ? sizeMap.x / (int)sizeCluster.x : sizeMap.x / (int)sizeCluster.x + 1; int height = sizeMap.y % sizeCluster.y == 0 ? sizeMap.y / (int)sizeCluster.y : sizeMap.y / (int)sizeCluster.y + 1; GameObject[,] clusters = new GameObject[width, height]; GameObject[,] parents = new GameObject[width, height]; for (int i = 0; i < width; i++) { for (int j = 0; j < height; j++) { clusters[i, j] = new GameObject("Cluster " + i + ":" + j); clusters[i, j].transform.position = new Vector3(i * sizeCluster.x + sizeCluster.x / 2f, -j * sizeCluster.y - sizeCluster.y / 2f); parents[i, j] = new GameObject("parent"); parents[i, j].transform.SetParent(clusters[i, j].transform); parents[i, j].transform.localPosition = Vector3.zero; } } for (int k = 0; k < groupCollider.transform.childCount; k++) { int i = (int)(groupCollider.transform.GetChild(k).position.x / sizeCluster.x); int j = (int)(-groupCollider.transform.GetChild(k).position.y / sizeCluster.y); if (i < 0) { i = 0; } if (i >= width) { i = width - 1; } if (j < 0) { j = 0; } if (j >= height) { j = height - 1; } groupCollider.transform.GetChild(k).SetParent(parents[i, j].transform); k--; } for (int i = 0; i < width; i++) { for (int j = 0; j < height; j++) { clusters[i, j].transform.SetParent(groupCollider.transform); Streamer streamer = clusters[i, j].AddComponent <Streamer>(); streamer.distanceStream = 15f; streamer.nbSecondsForRefreshing = 3f; streamer.target = parents[i, j]; if (activeScene) { streamer.StartStream(); } } } }
public void UnRegisterStreamer(Streamer streamer) { this.m_Streamers.Remove(streamer); }
public void RegisterStreamer(Streamer newStreamer) { _streamersList.Add(newStreamer); _streamersNames.Add(newStreamer.name); }
public void WaitForAck() { Streamer.ReadAck(_tcpClient.GetStream()); }
void Start() { streamerPool = new List<Streamer>(); currentStreamer = GetComponentInChildren<Streamer>(); }