Registers custom serialization and unserialization functions for sending and receiving external pointer reference objects.
serialization(refhook = list(), class = "", vec = FALSE)
either a list or pairlist of two functions: the
signature for the first must accept a reference object inheriting from
'class' (or a list of such objects) and return a raw vector, and the
second must accept a raw vector and return reference objects (or a list
of such objects),
or else NULL to reset.
[default ""] a character string representing the class of object that these serialization function will be applied to, e.g. 'ArrowTabular' or 'torch_tensor'.
[default FALSE] the serialization functions accept and return
reference object individually e.g. arrow::write_to_raw
and
arrow::read_ipc_stream
. If TRUE, the serialization functions are
vectorized and accept and return a list of reference objects, e.g.
torch::torch_serialize
and torch::torch_load
.
Invisibly, the pairlist of currently-registered 'refhook' functions. A message is printed to the console when functions are successfully registered or reset.
Calling without any arguments returns the pairlist of currently-registered 'refhook' functions.
This function may be called prior to or after setting daemons, with the registered functions applying across all compute profiles.
r <- serialization(list(function(x) serialize(x, NULL), unserialize))
print(serialization())
#> [[1]]
#> function(x) serialize(x, NULL)
#> <environment: 0x55be9f1f1cc8>
#>
#> [[2]]
#> function (connection, refhook = NULL)
#> {
#> if (typeof(connection) != "raw" && !is.character(connection) &&
#> !inherits(connection, "connection"))
#> stop("'connection' must be a connection")
#> .Internal(unserialize(connection, refhook))
#> }
#> <bytecode: 0x55be9f22df40>
#> <environment: namespace:base>
#>
serialization(r)
serialization(NULL)
print(serialization())
#> [[1]]
#> NULL
#>
#> [[2]]
#> NULL
#>