asyncstreams
Нестабильный API.
Импорты
- asyncfutures, deques
Типы
FutureStream[T] = ref object queue: Deque[T] finished: bool cb: proc () {...}{.closure, gcsafe.} error*: ref Exception- Специальный фьючер, который действует как очередь. Его API всё ещё находится в стадии разработки и может быть изменён. Исходный код Редактировать
Процедуры
proc newFutureStream[T](fromProc = "unspecified"): FutureStream[T]
- Создаёт новый
FutureStream. Обработчик этого фьючера активируется при наступлении двух событий:- Новые данные записываются в поток фьючера.
- Поток фьючера завершается (это означает, что больше данных не будет записываться).
Указание
fromProc, которое представляет собой строку, определяющую имя процедуры, к которой относится этот фьючер, является хорошей практикой, так как это помогает при отладке.Примечание: API FutureStream всё ещё новый и в будущем вероятность его изменения выше.
Исходный код Редактировать proc complete[T](future: FutureStream[T])
- Завершает
FutureStream, сигнализируя об окончании данных. Исходный код Редактировать proc fail[T](future: FutureStream[T]; error: ref Exception)
- Завершает
futureсо значениемerror. Исходный код Редактировать proc callback=[T](future: FutureStream[T]; cb: proc (future: FutureStream[T]) {...}{.closure, gcsafe.})-
Устанавливает процедуру обратного вызова, которая должна быть вызвана при размещении данных в потоке фьючера.
Обратный вызов также вызывается при завершении фьючера. Поэтому следует использовать
finishedдля проверки наличия данных.Если в потоке фьючера уже есть данные или он завершён,
Исходный код Редактироватьcbбудет вызван немедленно. proc finished[T](future: FutureStream[T]): bool
- Проверяет, завершён ли
FutureStream. Значениеtrueозначает, что больше данных не будет помещено в поток и нет данных, ожидающих извлечения. Исходный код Редактировать proc failed[T](future: FutureStream[T]): bool
- Определяет, завершился ли
futureс ошибкой. Исходный код Редактировать proc write[T](future: FutureStream[T]; value: T): Future[void]
-
Записывает указанное значение в указанный поток фьючера.
Это вызовет
Исходный код РедактироватьValueError, еслиfutureзавершён. proc read[T](future: FutureStream[T]): owned(Future[(bool, T)])
-
Возвращает фьючер, который завершит свою работу, когда в
FutureStreamбудут помещены данные. Фьючер будет завершён со значением самого старого значения, хранящегося в потоке. Возвращаемое значение также определит, были ли получены данные,falseозначает, что поток фьючера был завершён, и данные не были получены.Эта функция удалит данные, которые были возвращены из базового
Исходный код РедактироватьFutureStream. proc len[T](future: FutureStream[T]): int
- Возвращает количество элементов данных в потоке. Исходный код Редактировать
© 2006–2021 Andreas Rumpf
Licensed under the MIT License.
https://nim-lang.org/docs/asyncstreams.html