Spec-Zone.ru › Nim

std/asyncstreams

Source Edit

Нестабильный API.

Импорты

asyncfutures, deques

Типы

FutureStream[T] = ref object
  error*: ref Exception
Специальное будущее, которое действует как очередь. Его API всё ещё находится в стадии разработки и может быть изменён. Source Edit

Процедуры

proc callback=[T](future: FutureStream[T];
                  cb: proc (future: FutureStream[T]) {.closure, ...gcsafe.})

Устанавливает процедуру обратного вызова, которая будет вызвана при размещении данных в потоке будущего.

Обратный вызов также вызывается при завершении будущего. Поэтому следует использовать finished для проверки наличия данных.

Если в потоке будущего уже есть данные или он завершён, то cb будет вызван немедленно.

Source Edit
proc complete[T](future: FutureStream[T])
Завершает FutureStream, сигнализируя об окончании данных. Source Edit
proc fail[T](future: FutureStream[T]; error: ref Exception)
Завершает future с error. Source Edit
proc failed[T](future: FutureStream[T]): bool
Определяет, завершился ли future с ошибкой. Source Edit
proc finished[T](future: FutureStream[T]): bool
Проверяет, завершен ли FutureStream. Значение true означает, что больше данных не будет помещено в поток *и* нет данных, ожидающих извлечения. Source Edit
proc len[T](future: FutureStream[T]): int
Возвращает количество фрагментов данных в потоке. Source Edit
proc newFutureStream[T](fromProc = "unspecified"): FutureStream[T]
Создать новый FutureStream. Обратный вызов этого будущего активируется при возникновении двух событий:
  • Новые данные записываются в поток будущего.
  • Поток будущего завершается (это означает, что больше данных не будет записано).

Указание fromProc, которое представляет собой строку, указывающую имя процедуры, к которой принадлежит это будущее, – хорошая практика, так как это помогает при отладке.

Примечание: API FutureStream всё ещё новый, поэтому вероятность его изменения в будущем выше.

Source Edit
proc read[T](future: FutureStream[T]): owned(Future[(bool, T)])

Возвращает будущее, которое завершится, когда в FutureStream будут помещены данные. Будущее будет завершено с самым старым значением, хранящимся в потоке. Возвращаемое значение также определит, были ли извлечены данные, false означает, что поток будущего был завершен, и данные не были извлечены.

Эта функция удалит извлечённые данные из базового FutureStream.

Source Edit
proc write[T](future: FutureStream[T]; value: T): Future[void]

Записывает указанное значение в указанный поток будущего.

Это вызовет ValueError если future завершен.

Source Edit

© 2006–2024 Andreas Rumpf
Licensed under the MIT License.
https://nim-lang.org/docs/asyncstreams.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API