POOL 是 ZerOS 内核的全局对象池,用于存储和共享内核对象。提供统一的全局对象管理接口,支持类别管理和命名元素管理。
__INIT__(datas)初始化池(可传入预定义的 type 列表)。
参数:
datas (Array|Object|*): 预定义的类别列表(可选)示例:
// 初始化单个类别
POOL.__INIT__("KERNEL_GLOBAL_POOL");
// 初始化多个类别
POOL.__INIT__(["KERNEL_GLOBAL_POOL", "APPLICATION_POOL"]);
// 使用枚举对象初始化
POOL.__INIT__(GroupEnum.POOL);
__ADD__(type, name, elem)向类别添加元素。
参数:
type (string|Object): 类别名称或枚举对象name (string): 元素名称elem (*): 元素值返回值: void
示例:
// 添加元素到类别
POOL.__ADD__("KERNEL_GLOBAL_POOL", "GUIManager", GUIManager);
POOL.__ADD__("KERNEL_GLOBAL_POOL", "ProcessManager", ProcessManager);
// 使用枚举对象
POOL.__ADD__(GroupEnum.POOL, "GUIManager", GUIManager);
__GET__(type, name)从类别获取元素。
参数:
type (string|Object): 类别名称或枚举对象name (string): 元素名称(可选,如果不提供则返回整个类别对象)返回值: * - 元素值或类别对象,如果不存在返回 { isInit: false }
示例:
// 获取元素
const guiManager = POOL.__GET__("KERNEL_GLOBAL_POOL", "GUIManager");
// 获取整个类别对象
const kernelPool = POOL.__GET__("KERNEL_GLOBAL_POOL");
// 使用枚举对象
const guiManager = POOL.__GET__(GroupEnum.POOL, "GUIManager");
__GET_ALL__(type)获取类别的所有项的浅拷贝。
参数:
type (string|Object): 类别名称或枚举对象返回值: Object - 类别所有项的浅拷贝对象
示例:
const allItems = POOL.__GET_ALL__("KERNEL_GLOBAL_POOL");
Object.keys(allItems).forEach(name => {
console.log(`${name}: ${allItems[name]}`);
});
__HAS__(type, name)检查类别或元素是否存在。
参数:
type (string|Object): 类别名称或枚举对象name (string): 元素名称(可选)返回值: boolean - 是否存在
示例:
// 检查类别是否存在
if (POOL.__HAS__("KERNEL_GLOBAL_POOL")) {
console.log("类别存在");
}
// 检查元素是否存在
if (POOL.__HAS__("KERNEL_GLOBAL_POOL", "GUIManager")) {
console.log("元素存在");
}
__REMOVE__(type, name)删除类别或元素。
参数:
type (string|Object): 类别名称或枚举对象name (string): 元素名称(可选,如果不提供则删除整个类别)返回值: void
示例:
// 删除元素
POOL.__REMOVE__("KERNEL_GLOBAL_POOL", "GUIManager");
// 删除整个类别
POOL.__REMOVE__("KERNEL_GLOBAL_POOL");
__CLEAR__(type)清空整个池或指定类别的内容。
参数:
type (string|Object): 类别名称(可选,如果不提供则清空整个池)返回值: void
示例:
// 清空指定类别
POOL.__CLEAR__("KERNEL_GLOBAL_POOL");
// 清空整个池
POOL.__CLEAR__();
内核全局对象池,存储内核核心对象:
GUIManager - GUI 管理器ProcessManager - 进程管理器MemoryManager - 内存管理器ThemeManager - 主题管理器TaskbarManager - 任务栏管理器NotificationManager - 通知管理器Disk - 磁盘管理器Dependency - 依赖管理器应用程序对象池,存储应用程序对象。
应用程序共享空间,存储应用程序共享的 API:
TerminalAPI - 终端 API类型池,存储类型定义:
FileType - 文件类型枚举LogLevel - 日志级别枚举AddressType - 地址类型枚举// 初始化类别
POOL.__INIT__("KERNEL_GLOBAL_POOL");
// 添加对象
POOL.__ADD__("KERNEL_GLOBAL_POOL", "MyManager", MyManager);
// 获取对象
const myManager = POOL.__GET__("KERNEL_GLOBAL_POOL", "MyManager");
// 检查是否存在
if (POOL.__HAS__("KERNEL_GLOBAL_POOL", "MyManager")) {
console.log("MyManager 已注册");
}
// 删除对象
POOL.__REMOVE__("KERNEL_GLOBAL_POOL", "MyManager");
// 获取 GUI 管理器
const guiManager = POOL.__GET__("KERNEL_GLOBAL_POOL", "GUIManager");
if (guiManager) {
guiManager.registerWindow(pid, windowElement, options);
}
// 获取进程管理器
const processManager = POOL.__GET__("KERNEL_GLOBAL_POOL", "ProcessManager");
if (processManager) {
const pid = await processManager.startProgram('myapp');
}
// 获取主题管理器
const themeManager = POOL.__GET__("KERNEL_GLOBAL_POOL", "ThemeManager");
if (themeManager) {
const theme = themeManager.getCurrentTheme();
}
// 获取内核全局池的所有对象
const kernelPool = POOL.__GET_ALL__("KERNEL_GLOBAL_POOL");
Object.keys(kernelPool).forEach(name => {
console.log(`${name}: ${typeof kernelPool[name]}`);
});
// 在程序初始化时注册到应用程序池
__init__: async function(pid, initArgs) {
this.pid = pid;
// 注册到应用程序池
if (typeof POOL !== 'undefined') {
POOL.__INIT__("APPLICATION_POOL");
POOL.__ADD__("APPLICATION_POOL", "MYAPP", this);
}
}
// 定义枚举对象
const GroupEnum = {
POOL: "KERNEL_GLOBAL_POOL",
APP: "APPLICATION_POOL"
};
// 使用枚举对象
POOL.__INIT__(GroupEnum.POOL);
POOL.__ADD__(GroupEnum.POOL, "MyManager", MyManager);
const manager = POOL.__GET__(GroupEnum.POOL, "MyManager");
__INIT__)__GET_ALL__ 返回的是浅拷贝,修改不会影响原始对象