blob: c22a86df41800d70b0c5b03e4b889141abcd5473 [file] [log] [blame]
% Generated by roxygen2: do not edit by hand
% Please edit documentation in R/array-stream.R
\name{array_stream_set_finalizer}
\alias{array_stream_set_finalizer}
\title{Register an array stream finalizer}
\usage{
array_stream_set_finalizer(array_stream, finalizer)
}
\arguments{
\item{array_stream}{A \link[=as_nanoarrow_array_stream]{nanoarrow_array_stream}}
\item{finalizer}{A function that will be called with zero arguments.}
}
\value{
A newly allocated \code{array_stream} whose release callback will call
the supplied finalizer.
}
\description{
In some cases, R functions that return a \link[=as_nanoarrow_array_stream]{nanoarrow_array_stream}
may require that the scope of some other object outlive that of the array
stream. If there is a need for that object to be released deterministically
(e.g., to close open files), you can register a function to run after the
stream's release callback is invoked from the R thread. Note that this
finalizer will \strong{not} be run if the stream's release callback is invoked
from a \strong{non}-R thread. In this case, the finalizer and its chain of
environments will be garbage-collected when \code{nanoarrow:::preserved_empty()}
is run.
}
\examples{
stream <- array_stream_set_finalizer(
basic_array_stream(list(1:5)),
function() message("All done!")
)
stream$release()
}