v4.1 #11
@ -634,6 +634,8 @@ module Query =
|
|||||||
|> function it -> $" ORDER BY {it}"
|
|> function it -> $" ORDER BY {it}"
|
||||||
|
|
||||||
|
|
||||||
|
#nowarn "FS3511" // "let rec" is not statically compilable
|
||||||
|
|
||||||
open System.IO.Pipelines
|
open System.IO.Pipelines
|
||||||
|
|
||||||
/// <summary>Functions that manipulate <c>PipeWriter</c>s</summary>
|
/// <summary>Functions that manipulate <c>PipeWriter</c>s</summary>
|
||||||
@ -648,8 +650,7 @@ module PipeWriter =
|
|||||||
let writeString (writer: PipeWriter) (text: string) = backgroundTask {
|
let writeString (writer: PipeWriter) (text: string) = backgroundTask {
|
||||||
try
|
try
|
||||||
let! writeResult = writer.WriteAsync(Encoding.UTF8.GetBytes text)
|
let! writeResult = writer.WriteAsync(Encoding.UTF8.GetBytes text)
|
||||||
let! flushResult = writer.FlushAsync()
|
return not writeResult.IsCompleted
|
||||||
return not (writeResult.IsCompleted || flushResult.IsCompleted)
|
|
||||||
with :? System.ObjectDisposedException -> return false
|
with :? System.ObjectDisposedException -> return false
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -659,19 +660,20 @@ module PipeWriter =
|
|||||||
/// <returns><c>true</c> if the pipe is still open, <c>false</c> if not</returns>
|
/// <returns><c>true</c> if the pipe is still open, <c>false</c> if not</returns>
|
||||||
[<CompiledName "WriteStrings">]
|
[<CompiledName "WriteStrings">]
|
||||||
let writeStrings writer items = backgroundTask {
|
let writeStrings writer items = backgroundTask {
|
||||||
let rec writeNext docs idx = backgroundTask {
|
let theItems = Seq.cache items
|
||||||
match items |> Seq.tryItem idx with
|
let rec writeNext idx = backgroundTask {
|
||||||
|
match theItems |> Seq.tryItem idx with
|
||||||
| Some item ->
|
| Some item ->
|
||||||
if idx > 0 then
|
if idx > 0 then
|
||||||
let! _ = writeString writer ","
|
let! _ = writeString writer ","
|
||||||
()
|
()
|
||||||
match! writeString writer item with
|
match! writeString writer item with
|
||||||
| true -> return! writeNext docs (idx + 1)
|
| true -> return! writeNext (idx + 1)
|
||||||
| false -> return false
|
| false -> return false
|
||||||
| None -> return true
|
| None -> return true
|
||||||
}
|
}
|
||||||
let! _ = writeString writer "["
|
let! _ = writeString writer "["
|
||||||
let! isCleanFinish = writeNext items 0
|
let! isCleanFinish = writeNext 0
|
||||||
if isCleanFinish then
|
if isCleanFinish then
|
||||||
let! _ = writeString writer "]"
|
let! _ = writeString writer "]"
|
||||||
()
|
()
|
||||||
|
Loading…
x
Reference in New Issue
Block a user