Пример #1
0
        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));
        }
Пример #2
0
        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);
        }
Пример #3
0
        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);
        }
Пример #4
0
        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);
            }
        }
Пример #5
0
#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);
        }
Пример #6
0
    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();
    }