public void TestEchoRequest() { try { bool isOk = false; string message = "Hello, world"; using (var waitHandle = new ManualResetEventSlim()) { using (var server = CallbackServer.Create( CreateConfiguration( host => new TcpServerTransportManager(host), (id, args) => { try { Assert.That(args[0] == message, args[0].ToString()); Assert.That(args[1].IsTypeOf <Int64>().GetValueOrDefault(), args[1].ToString()); isOk = true; return(args); } finally { waitHandle.Set(); } } ) ) ) { TestEchoRequestCore(ref isOk, waitHandle, message); waitHandle.Reset(); isOk = false; // Again TestEchoRequestCore(ref isOk, waitHandle, message); waitHandle.Reset(); isOk = false; // Again 2 TestEchoRequestCore(ref isOk, waitHandle, message); } } } catch (SocketException sockEx) { Console.Error.WriteLine("{0}({1}:0x{1:x8})", sockEx.SocketErrorCode, sockEx.ErrorCode); Console.Error.WriteLine(sockEx); throw; } }
public void TestEchoRequestContinuous() { try { const int count = 3; bool[] serverStatus = new bool[count]; string message = "Hello, world"; using (var waitHandle = new CountdownEvent(count)) using (var server = CallbackServer.Create( CreateConfiguration( host => new TcpServerTransportManager(host), (id, args) => { try { Assert.That(args[0] == message); Assert.That(args[1].IsTypeOf <Int64>().GetValueOrDefault()); lock ( serverStatus ) { serverStatus[id.Value] = true; } return(args); } finally { waitHandle.Signal(); } } ) ) ) { TestEchoRequestContinuousCore(serverStatus, waitHandle, count, message); waitHandle.Reset(); Array.Clear(serverStatus, 0, serverStatus.Length); // Again TestEchoRequestContinuousCore(serverStatus, waitHandle, count, message); } } catch (SocketException sockEx) { Console.Error.WriteLine("{0}({1}:0x{1:x8})", sockEx.SocketErrorCode, sockEx.ErrorCode); Console.Error.WriteLine(sockEx); throw; } }