예제 #1
0
 public ProtocolReader(RedisSettings settings, ProtocolEncoder encoder,
                       Stream stream) :
     base(settings)
 {
     _stream  = stream;
     _reader  = new RedisReader(stream, settings);
     _encoder = encoder;
 }
예제 #2
0
        public ProtocolWriter(RedisSettings settings, ProtocolEncoder encoder,
                              Stream stream) :
            base(settings)
        {
            _stream  = stream;
            _writer  = new RedisWriter(stream, settings);
            _encoder = encoder;

            AutoFlush = false;
        }
예제 #3
0
        internal RedisClientBase(Stream incoming, Stream outgoing) :
            base(RedisSettings.Default)
        {
            _executor = new ImmediateExecutor();
            _executor.Init(this);

            _socket = null;
            _stream = null;

            _encoder = new ProtocolEncoder(Settings);
            _reader  = new ProtocolReader(Settings, _encoder, incoming);
            _writer  = new ProtocolWriter(Settings, _encoder, outgoing);
        }
예제 #4
0
        public virtual void Reset()
        {
            _disposing = _disposed = false;
            _socket    = new Socket(AddressFamily.InterNetwork,
                                    SocketType.Stream, ProtocolType.Tcp);

            _socket.ReceiveBufferSize = Settings.ReadBufferSize;
            _socket.SendBufferSize    = Settings.WriteBufferSize;
            _socket.NoDelay           = true;

            // TODO: split timeout settings so both can be set separately
            _socket.ReceiveTimeout = Settings.ConnectionTimeout;
            _socket.SendTimeout    = Settings.ConnectionTimeout;

            _socket.Connect(Settings.Host, Settings.Port);
            _stream = new NetworkStream(_socket, FileAccess.ReadWrite, true);

            _encoder = new ProtocolEncoder(Settings);
            _reader  = new ProtocolReader(Settings, _encoder, _stream);
            _writer  = new ProtocolWriter(Settings, _encoder, _stream);
        }