internal async Task RunAsync() { var sw = System.Diagnostics.Stopwatch.StartNew(); while (Connected.Count == 0) { await Task.Delay(10); if (sw.Elapsed.TotalSeconds > 10) { Assert.Fail("Client Took Too Long To Connect"); break; } } await Task.Delay(1000); var singleClient = Connected.First(); singleClient.SendMessage("Hey?"); await Task.Delay(100); singleClient.SendMessage("Anyone?"); await Task.Delay(100); singleClient.SendMessage("What's this?"); await Task.Delay(100); singleClient.SendMessage("What's your status?"); await Task.Delay(10); singleClient.SendMessage("Greetings!!??"); await Task.Delay(100); singleClient.SendMessage("Hello Client!?"); sw = System.Diagnostics.Stopwatch.StartNew(); Console.WriteLine($"Socket: Listening"); while (Connected.Contains(singleClient)) { Receive(); await Task.Delay(100); if (sw.Elapsed.TotalSeconds > 5) { Console.WriteLine("Socket: This all took too long - throwing an exception"); Assert.Fail("Socket Took Too Long"); break; } } Console.WriteLine($"Socket: Closing connection because {Connected.Count()} Connected"); await Task.Delay(1000); Close(); }
internal async Task RunAsync() { var sw = System.Diagnostics.Stopwatch.StartNew(); while (Connected.Count == 0) { await Task.Delay(10); if (sw.Elapsed.TotalSeconds > 5) { Assert.Fail("Client Took Too Long To Connect"); break; } } await Task.Delay(1000); var singleClient = Connected.First(); singleClient.SendMessage("Hey?"); await Task.Delay(100); singleClient.SendMessage("Anyone?"); await Task.Delay(100); singleClient.SendMessage("What's this?"); await Task.Delay(100); singleClient.SendMessage("What's your status?"); await Task.Delay(10); singleClient.SendMessage("Greetings!!??"); await Task.Delay(100); singleClient.SendMessage("Hello Client!?"); sw = System.Diagnostics.Stopwatch.StartNew(); while (Connected.Contains(singleClient)) { Receive(); await Task.Delay(100); if (sw.Elapsed.TotalSeconds > 10) { Assert.Fail("Socket Took Too Long"); break; } } await Task.Delay(1000); Close(); }
private void Connect() { if (X - 1 >= 0 && !Connected.Contains(GameEngine.Puzzle[X - 1, Y])) { if (GameEngine.Puzzle[X - 1, Y].transform.eulerAngles.z == transform.eulerAngles.z && Vector3.Distance(GameEngine.Puzzle[X - 1, Y].transform.position, transform.position + Quaternion.Euler(transform.eulerAngles) * new Vector3(-Settings.PuzzleShift, 0)) < 0.15f) { Connected.Add(GameEngine.Puzzle[X - 1, Y]); GameEngine.Puzzle[X - 1, Y].Connected.Add(this); } } if (X + 1 < GameEngine.W && !Connected.Contains(GameEngine.Puzzle[X + 1, Y])) { if (GameEngine.Puzzle[X + 1, Y].transform.eulerAngles.z == transform.eulerAngles.z && Vector3.Distance(GameEngine.Puzzle[X + 1, Y].transform.position, transform.position + Quaternion.Euler(transform.eulerAngles) * new Vector3(Settings.PuzzleShift, 0)) < 0.15f) { Connected.Add(GameEngine.Puzzle[X + 1, Y]); GameEngine.Puzzle[X + 1, Y].Connected.Add(this); } } if (Y - 1 >= 0 && !Connected.Contains(GameEngine.Puzzle[X, Y - 1])) { if (GameEngine.Puzzle[X, Y - 1].transform.eulerAngles.z == transform.eulerAngles.z && Vector3.Distance(GameEngine.Puzzle[X, Y - 1].transform.position, transform.position + Quaternion.Euler(transform.eulerAngles) * new Vector3(0, -Settings.PuzzleShift)) < 0.15f) { Connected.Add(GameEngine.Puzzle[X, Y - 1]); GameEngine.Puzzle[X, Y - 1].Connected.Add(this); } } if (Y + 1 < GameEngine.H && !Connected.Contains(GameEngine.Puzzle[X, Y + 1])) { if (GameEngine.Puzzle[X, Y + 1].transform.eulerAngles.z == transform.eulerAngles.z && Vector3.Distance(GameEngine.Puzzle[X, Y + 1].transform.position, transform.position + Quaternion.Euler(transform.eulerAngles) * new Vector3(0, Settings.PuzzleShift)) < 0.15f) { Connected.Add(GameEngine.Puzzle[X, Y + 1]); GameEngine.Puzzle[X, Y + 1].Connected.Add(this); } } IsRecu = true; foreach (Puzzle p in Connected) { if (!p.IsRecu) { p.Connect(); } } }