R/cli.R

Defines functions `!=.RserveConnection` `==.RserveConnection` print.RserveConnection RS.oobCallbacks RS.login RS.assign RS.authkey RS.switch RS.server.shutdown RS.server.source RS.server.eval RS.collect RS.eval.qap RS.eval RS.close RS.connect

Documented in print.RserveConnection RS.assign RS.authkey RS.close RS.collect RS.connect RS.eval RS.eval.qap RS.login RS.oobCallbacks RS.server.eval RS.server.shutdown RS.server.source RS.switch

RS.connect <- function(host=NULL, port=6311L, tls=FALSE, verify=TRUE, proxy.target=NULL, proxy.wait=TRUE, chain, key, ca) {
    chain <- if (missing(chain)) NULL else path.expand(chain)
    key   <- if (missing(key)) NULL else path.expand(key)
    ca    <- if (missing(ca)) NULL else path.expand(ca)
    .Call(RS_connect, host, port, tls, proxy.target, proxy.wait, verify, chain, key, ca)
}

RS.close <- function(rsc) .Call(RS_close, rsc)

RS.eval <- function(rsc, x, wait=TRUE, lazy=TRUE) {
    r <- .Call(RS_eval, rsc, serialize(if (isTRUE(lazy)) substitute(x) else x, NULL, FALSE), wait)
    if (is.raw(r)) unserialize(r) else r
}

RS.eval.qap <- function(rsc, x, wait=TRUE)
    .Call(RS_eval_qap, rsc, x, wait)

RS.collect <- function(rsc, timeout = Inf, detail = FALSE, qap = FALSE) {
    r <- .Call(RS_collect, rsc, timeout)
    if (is.raw(r)) {
        if (length(r)) {
            val <- if (qap) .Call(RS_decode, r) else unserialize(r)
            if (isTRUE(detail))
                list(value = val, rsc = attr(r, "rsc"))
            else val
        } else if (isTRUE(detail))
            list(rsc = attr(r, "rsc"))
        else NULL
    } else r
}

RS.server.eval <- function(rsc, text) .Call(RS_ctrl_str, rsc, 0x42L, text)

RS.server.source <- function(rsc, filename) .Call(RS_ctrl_str, rsc, 0x45L, filename)

RS.server.shutdown <- function(rsc) .Call(RS_ctrl_str, rsc, 0x44L, "")

RS.switch <- function(rsc, protocol="TLS", verify=TRUE, chain, key, ca) {
    chain <- if (missing(chain)) NULL else path.expand(chain)
    key   <- if (missing(key)) NULL else path.expand(key)
    ca    <- if (missing(ca)) NULL else path.expand(ca)
    .Call(RS_switch, rsc, protocol, verify)
}

RS.authkey <- function(rsc, type="rsa-authkey") .Call(RS_authkey, rsc, type)

RS.assign <- function(rsc, name, value, wait = TRUE) {
  if (missing(value)) {
    sym.name <- deparse(substitute(name))
    value <- name
    name <- sym.name
  }
  .Call(RS_assign, rsc, serialize(list(name, value), NULL), wait)
}

RS.login <- function(rsc, user, password, pubkey, authkey) {
  if (missing(user) || missing(password)) stop("user and password must be specified")
  .Call(RS_secauth, rsc, paste(c(user, password, ''), collapse="\n"), authkey)
}

RS.oobCallbacks <- function(rsc, send, msg) {
  if (missing(send) && missing(msg)) return(.Call(RS_oob_cb, rsc, NULL, NULL, TRUE))
  if (missing(send) || missing(msg)) {
    l <- .Call(RS_oob_cb, rsc, NULL, NULL, TRUE)
    if (missing(send)) send <- l$send
    if (missing(msg))  msg <- l$msg
  }
  invisible(.Call(RS_oob_cb, rsc, send, msg, FALSE))  
}

print.RserveConnection <- function(x, ...) invisible(.Call(RS_print, x))
`==.RserveConnection` <- function(e1, e2) .Call(RS_eq, e1, e2)
`!=.RserveConnection` <- function(e1, e2) !.Call(RS_eq, e1, e2)

Try the RSclient package in your browser

Any scripts or data that you put into this service are public.

RSclient documentation built on Nov. 29, 2022, 9:05 a.m.