package org.jerlang.erts; import java.util.HashMap; import jline.console.history.MemoryHistory; import org.jerlang.FunctionSignature; import org.jerlang.Process; import org.jerlang.stdlib.Lists; import org.jerlang.type.Atom; import org.jerlang.type.List; import org.jerlang.type.Str; /** * The runtime holds the global states of this node. */ public class Runtime { private static boolean extraFlag = false; // The function to invoke after node has started private static FunctionSignature runFlag = null; private static List plainArguments = List.nil; private static final ThreadLocal<org.jerlang.Process> process = new ThreadLocal<>(); private static final HashMap<Atom, List> userFlags = new HashMap<>(); private static MemoryHistory shellHistory = new MemoryHistory(); public static void addPlainArgument(String string) { plainArguments = new List(Str.of(string), plainArguments); } public static boolean extraFlag() { return extraFlag; } public static HashMap<Atom, List> userFlags() { return userFlags; } public static org.jerlang.Process getProcess() { return process.get(); } public static FunctionSignature getRunFlag() { return runFlag; } public static List plainArguments() { return Lists.reverse(plainArguments); } /** * Used by unit tests only. * Resets all states back to their default. */ public static void reset() { extraFlag = false; } public static void setExtraFlag() { extraFlag = true; } public static void setProcess(Process proc) { process.set(proc); } public static void setRunFlag(FunctionSignature signature) { runFlag = signature; } public static MemoryHistory shellHistory() { return shellHistory; } }