private ValueTask <RespConnection> ConnectAsync(CancellationToken cancellationToken) { int index = Interlocked.Increment(ref _nextConnectionIndex); var name = $"connection " + index; var socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); SocketConnection.SetRecommendedClientOptions(socket); socket.Connect(Configuration.EndPoints.Single()); return(HandshakeAsync(RespConnection.Create(new NetworkStream(socket), name), cancellationToken)); }
static RespConnection CreateClient(bool asNetworkStream) { var socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); SocketConnection.SetRecommendedClientOptions(socket); socket.Connect(ServerEndpoint); var connection = asNetworkStream ? RespConnection.Create(new NetworkStream(socket)) : RespConnection.Create(socket); // connection.Ping(); return(connection); }
static RespConnection[] CreateClients(int count, bool asNetworkStream) { var clients = new RespConnection[count]; for (int i = 0; i < clients.Length; i++) { var socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); SocketConnection.SetRecommendedClientOptions(socket); socket.Connect(ServerEndpoint); var connection = asNetworkStream ? RespConnection.Create(new NetworkStream(socket)) : RespConnection.Create(socket); // connection.Ping(); clients[i] = connection; } return(clients); }
internal async Task Setup(bool minimal) { _ssredis = RedisClient.New(); _ssAsync = _ssredis; if (!minimal) { _seredis = await ConnectionMultiplexer.ConnectAsync("127.0.0.1:6379"); _seredis_server = _seredis.GetServer(_seredis.GetEndPoints().Single()); _seredis_db = _seredis.GetDatabase(); var socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); SocketConnection.SetRecommendedClientOptions(socket); socket.Connect("127.0.0.1", 6379); _respite = RespConnection.Create(socket); } }
#pragma warning disable IDE0051 // Remove unused private members static async ValueTask BasicTest() #pragma warning restore IDE0051 // Remove unused private members { var socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); SocketConnection.SetRecommendedClientOptions(socket); socket.Connect(ServerEndpoint); await using var client = RespConnection.Create(socket); var payload = new string('a', 2048); var frame = RespValue.CreateAggregate(RespType.Array, "ping", payload); var timer = Stopwatch.StartNew(); for (int i = 0; i < 1000; i++) { client.Send(frame); using var reply = client.Receive(); reply.Value.ThrowIfError(); // client.Ping(); } timer.Stop(); Log("sync", timer.Elapsed, 1000, payload); }
public async Task ConnectAsync() { var endpoint = new IPEndPoint(IPAddress.Loopback, 6379); _muxer = await ConnectionMultiplexer.ConnectAsync(new ConfigurationOptions { EndPoints = { endpoint } }); _server = _muxer.GetServer(endpoint); SERedis(); await SERedisAsync(); var serviceProvider = new ServiceCollection().BuildServiceProvider(); var client = new ClientBuilder(serviceProvider) .UseSockets() .Build(); _connection = await client.ConnectAsync(endpoint); _bedrock = new RespBedrockProtocol(_connection); Bedrock(); await BedrockAsync(); var socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); SocketConnection.SetRecommendedClientOptions(socket); socket.Connect(endpoint); _socket = RespConnection.Create(socket); Socket(); await SocketAsync(); socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); SocketConnection.SetRecommendedClientOptions(socket); socket.Connect(endpoint); _stream = RespConnection.Create(new NetworkStream(socket)); Stream(); await StreamAsync(); }