module Redis::Connection::SocketMixin
def write(buffer)
def write(buffer) return super(buffer) unless @write_timeout bytes_to_write = buffer.bytesize total_bytes_written = 0 loop do case bytes_written = write_nonblock(buffer, exception: false) when :wait_readable unless wait_readable(@write_timeout) raise Redis::TimeoutError end when :wait_writable unless wait_writable(@write_timeout) raise Redis::TimeoutError end when nil raise Errno::ECONNRESET when Integer total_bytes_written += bytes_written if total_bytes_written >= bytes_to_write return total_bytes_written end buffer = buffer.byteslice(bytes_written..-1) end end end