public void Rpc_OtherClients() { var receivers = new RpcReceiver[ClientsNum]; var clients = new IguagileClient[ClientsNum]; var poolOpen = new Semaphore(0, ClientsNum); var poolClose = new Semaphore(0, ClientsNum); for (var i = 0; i < ClientsNum; i++) { var client = new IguagileClient(); client.Open += () => poolOpen.Release(1); client.Close += () => poolClose.Release(1); client.OnError += e => Assert.Fail(e.Message); var receiver = new RpcReceiver(client, ClientsNum - 1); client.AddRpc(nameof(RpcReceiver.RpcMethod), receiver); client.Connect(ServerAddress, PortTcp, Protocol.Tcp); clients[i] = client; receivers[i] = receiver; } for (var i = 0; i < ClientsNum; i++) { poolOpen.WaitOne(); } for (var i = 0; i < ClientsNum; i++) { clients[i].Rpc(nameof(RpcReceiver.RpcMethod), RpcTargets.OtherClients, clients[i].UserId); } for (var i = 0; i < ClientsNum; i++) { poolClose.WaitOne(); } }
public void Connect_Tcp_WithValidAddress() { var client = new IguagileClient(); client.Open += () => client.Disconnect(); var pool = new Semaphore(0, 1); client.Close += () => pool.Release(1); client.OnError += e => Assert.Fail(e.Message); client.Connect(ServerAddress, PortTcp, Protocol.Tcp); pool.WaitOne(); }