R/svTaskCallbackManager.R
svTaskCallbackManager.Rd
svTaskCallbackManager()
is a copy of taskCallbackManager()
in R base
package, as of version 4.0.5 of R. Two important differences: (1) the top
task created is named SV-taskCallbackManager
instead of
R-taskCallbackManager
, and its tasks are executed after each top-level task
in R console, or after execution of non-hidden R code from the socket or http
server (take care: only once per set of code, no matter the number of
top-level task in the R code send by the client in the second case). All
taskCallbacks defined by addTaskCallback()
or taskCallbackManager$add()
from R base package are not executed when code is invoked from the R socket
or http server!
svTaskCallbackManager(handlers = list(), registered = FALSE, verbose = FALSE)
this can be a list of callbacks in which each element is a
list with an element named f
which is a callback function, and an optional
element named data
which is the 5-th argument to be supplied to the
callback when it is invoked. Typically this argument is not specified, and
one uses add to register callbacks after the manager is created.
a logical value indicating whether the evaluate
function has already been registered with the internal task callback
mechanism. This is usually FALSE
and the first time a callback is
added via the add function, the evaluate function is automatically
registered. One can control when the function is registered by specifying
TRUE
for this argument and calling addTaskCallback()
manually.
a logical value, which if TRUE
, causes information to be
printed to the console about certain activities this dispatch manager
performs. This is useful for debugging callbacks and the handler itself.
See ?taskCallbackManager
for both the returned object and how to use it.
# create a task callback manager
cbman <- svTaskCallbackManager()
# Add a function to activate after each code evaluation in R
cbman$add(function(expr, value, ok, visible) {
cat("Hi from the callback manager!\n")
return(TRUE)
}, name = "exampleHandler")
#> [1] "exampleHandler"
# Just issue a command and see the callback function activated
1 + 1
#> [1] 2
# List defined callbacks
cbman$callbacks()
#> $exampleHandler
#> $exampleHandler$f
#> function(expr, value, ok, visible) {
#> cat("Hi from the callback manager!\n")
#> return(TRUE)
#> }
#> <environment: 0x55c4dccfa718>
#>
#>
# Remove the callback we just defined
cbman$remove("exampleHandler")
#> [1] TRUE
1 + 1
#> [1] 2
# Remove the task callback manager (base R function)
removeTaskCallback("SV-taskCallbackManager")
#> [1] TRUE