marshal.connection: Marshalling of R connections

View source: R/marshal.connection.R

marshal.connectionR Documentation

Marshalling of R connections

Description

Marshalling of R connections

Usage

## S3 method for class 'connection'
marshal(con, ...)

## S3 method for class 'connection'
marshallable(con, ...)

Arguments

con

A connection.

...

Not used.

Value

A marshalled object as described in marshal().

Limitations

Not all connections can be marshalled, specifically we:

  • cannot marshal connections stdin (0), stdout (1), and stderr (2)

  • can only marshal read-only connections

  • can only marshal unopened or seekable connections

Examples

tf <- tempfile()
cat(file = tf, letters, sep = "")

## Read-only connection
con <- file(tf, open = "rb")

bfr <- readChar(con, nchars = 4L)
print(bfr)  ## "abcd"

## Marshal read-only connection, which records the
## current state, including the current file position.
con_ <- marshal(con)

## Unmarshal connection, which restores the state
## of the original connection, including the current
## file position
con2 <- unmarshal(con_)
stopifnot(
  all.equal(summary(con2), summary(con)),
  identical(seek(con2), seek(con))
)

bfr <- readChar(con, nchars = 4L)
print(bfr)
bfr2 <- readChar(con2, nchars = 4L)
print(bfr2)
stopifnot(identical(bfr2, bfr))

## Cleanup
close(con)
close(con2)
file.remove(tf)
con <- url("https://www.r-project.org")
print(con)

## Marshal read-only connection, which records the
## current state, including the current file position.
con_ <- marshal(con)

## Unmarshal connection, which restores the state
## of the original connection
con2 <- unmarshal(con_)
print(con2)

stopifnot(all.equal(summary(con2), summary(con)))

bfr <- readChar(con, nchars = 100L)
print(bfr)
bfr2 <- readChar(con2, nchars = 100L)
print(bfr2)
stopifnot(identical(bfr2, bfr))

## Cleanup
close(con)
close(con2)


HenrikBengtsson/marshal documentation built on June 11, 2024, 11:35 a.m.