Spec-Zone.ru › Nim 1

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

Spec-Zone.ru

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