swh:1:snp:0c004a03453a29b80f921a24433f7e780b9ceb53
Raw File
Tip revision: 86a00a4283730af08ece8128e9cc940845d0222d authored by Nitesh Turaga on 02 May 2019, 15:54:11 UTC
bump x.y.z versions to even y prior to creation of RELEASE_3_9 branch
Tip revision: 86a00a4
loadSession.R
sessionExists <- function(sessionName) {
    ocpuRoot <- strsplit(getwd(), 'ocpu-temp')[[1]][1]
    sessionPath <- paste(ocpuRoot, 'ocpu-store', sessionName, sep=.Platform$file.sep)

    RDataPath <- paste(sessionPath, '.RData', sep=.Platform$file.sep)
    if (file.exists(RDataPath)) {
        env <- new.env()
        load(RDataPath, envir = env)
        validForLoading = !is.null(env$es) && !is.null(attr(env$es, 'published'))

        return (jsonlite::toJSON(list(result=validForLoading), auto_unbox = TRUE))
    }

    return (jsonlite::toJSON(list(result=FALSE), auto_unbox = TRUE))
}

publishSession <- function (sessionName) {
    ocpuRoot <- strsplit(getwd(), 'ocpu-temp')[[1]][1]
    sessionPath <- paste(ocpuRoot, 'ocpu-store', sessionName, sep=.Platform$file.sep)

    RDataPath <- paste(sessionPath, '.RData', sep=.Platform$file.sep)
    if (file.exists(RDataPath)) {
        env <- new.env()
        load(RDataPath, envir = env)

        if (!is.null(env$es)) { # this session is for actual dataset
            attr(env$es, 'published') <- TRUE
            save(list = ls(all.names = TRUE, env), file = file.path(sessionPath, ".RData"), envir = env)
            return (jsonlite::toJSON(list(result=TRUE), auto_unbox = TRUE))
        }
    }

    return (jsonlite::toJSON(list(result=FALSE), auto_unbox = TRUE))
}

loadSession <- function (sessionName) {
    ocpuRoot <- strsplit(getwd(), 'ocpu-temp')[[1]][1]
    sessionPath <- paste(ocpuRoot, 'ocpu-store', sessionName, sep=.Platform$file.sep)

    RDataPath <- paste(sessionPath, '.RData', sep=.Platform$file.sep)
    if (file.exists(RDataPath)) {
        savedEnv <- load(RDataPath)

        if (!("es" %in% savedEnv) || is.null(attr(es, 'published'))) {
            stop('Invalid session key')
        }

        result <- list(es=writeToList(es))
        f <- tempfile(pattern = "session", tmpdir = getwd(), fileext = ".bin")
        writeBin(protolite::serialize_pb(result), f)
        return (jsonlite::toJSON(basename(f)))
    }

    stop('Invalid session key')
}
back to top