R/storage.R

Defines functions storage_driver_environment storage_driver_rds storage_driver

storage_driver <- function(name, create, packages = NULL) {
  if (!is.null(packages)) {
    assert_character(packages)
  }
  assert_function(create)
  ret <- list(name = name,
              create = create,
              packages = packages)
  class(ret) <- "context_storage_driver"
  ret
}

storage_driver_rds <- function() {
  storage_driver("rds", function(path, id, args) {
    storr::storr_rds(path_db(path),
                     compress = args$compress %||% FALSE,
                     mangle_key = args$mangle_key %||% TRUE,
                     mangle_key_pad = args$mangle_key_pad %||% TRUE)
  })
}

storage_driver_environment <- function() {
  storage_driver("environment", function(path, id, args) {
    if (file.exists(path_config(path))) {
      stop("Cannot reconnect to environment storage")
    }
    storr::storr_environment()
  })
}
mrc-ide/context documentation built on June 4, 2023, 5:36 a.m.