moonbit-observer-ui

    Erlang 节点观察器视图模型(进程表/Supervisor 树/ETS/内存/端口面板;数据面纯核,MoUI 渲染位后置)

    erlang
    observer
    moonbit
    ui
    Download zip
    Author
    Version
    0.0.2
    License
    Apache-2.0
    Last updated
    11 hours ago
    Downloads
    4

    #moonbit-observer-ui

    Erlang 节点观察器(MoonBit):进程表/Supervisor 树/ETS/内存/端口面板。 架构=数据面视图模型纯核(rpc:call 应答形状的规约面)+RenderPort 渲染 注入位(MoUI 组合根实现——真件候后续)。数据源藏 FetchPort trait 后 (beam-rpc call 组合)——观察器不直摸 rpc 词。

    #包结构

    包内容
    thy1016/moonbit-observer-ui视图模型(五面:进程/ETS/树/内存/端口)+Fetch/Render 注入位(唯一包)

    状态:0.0.1 骨架(阶段 6)。数据面纯核全绿;MoUI 渲染真件候后续。

    #特性

    • 五面模型:ProcessRow(进程表)/EtsRow(ETS)/SupNode(树)/ MemorySummary(内存)/端口计数——rpc 应答形状的规约面。
    • refresh 编排:五 fetch→五 render 段段透传(零静默吞错)。
    • 双注入位:FetchPort(数据源=beam-rpc)/RenderPort(MoUI 渲染)。

    #测试门

    moon check --deny-warn && moon test --target native

    #演进位

    • MoUI RenderPort 真实现(渲染位真件)
    • FetchPort 真实现(beam-rpc call 组合+beam-dist 真连——归役自跑)
    • 递归 sup 树/多面板布局

    #仓库

    • mooncakes 名: thy1016/moonbit-observer-ui
    • 仓库: git@gitlink.org.cn:thy7/mbt.observer.ui.git(master)
    • 孵化: bitbang 主仓孵化件独立入库(2026-11-06;孵化期零跨仓 import——组合根候 mooncakes 发版后 moon add 接线)

    FetchPort

    pub(open) trait FetchPort {
    async fn fetch_processes(self : Self) -> Array[ProcessRow] raise ViewError
    async fn fetch_ets(self : Self) -> Array[EtsRow] raise ViewError
    async fn fetch_sup_tree(self : Self, sup : String) -> SupNode raise ViewError
    async fn fetch_memory(self : Self) -> MemorySummary raise ViewError
    async fn fetch_ports(self : Self) -> Int raise ViewError
    }

    FetchPort(数据源注入位——beam-rpc call 组合;观察器不直摸 rpc 词)

    RenderPort

    pub(open) trait RenderPort {
    fn render_processes(self : Self, rows : Array[ProcessRow]) -> Unit
    fn render_ets(self : Self, rows : Array[EtsRow]) -> Unit
    fn render_sup_tree(self : Self, tree : SupNode) -> Unit
    fn render_memory(self : Self, mem : MemorySummary) -> Unit
    fn render_ports(self : Self, count : Int) -> Unit
    }

    渲染注入位(MoUI 组合根实现;数据面纯核零渲染依赖)

    ViewError

    pub(all) suberror ViewError {
    ShapeMismatch(String)
    }

    EtsRow

    pub(all) struct EtsRow {
    name : String
    kind : String
    size : Int
    }

    ETS 表行(表名+类型+大小)

    MemorySummary

    pub(all) struct MemorySummary {
    total : Int
    processes : Int
    ets : Int
    atom : Int
    }

    内存摘要(total/processes/ets/atom——词对应 erlang:memory() 键)

    Observer

    pub struct Observer {
    fetch : &FetchPort
    }

    视图模型:承载 rpc 客户端注入(beam-rpc call 面)的快照拉取编排位

    Observer::new

    fn Observer::new(fetch~ : &FetchPort) -> Observer

    构造(生产面 API——组合根装配位)

    Observer::refresh

    async fn Observer::refresh(self : Observer, render : &RenderPort) -> Unit raise ViewError

    面板全量刷新(编排:五 fetch→五 render——段段透传,零静默吞错)

    ProcessRow

    pub(all) struct ProcessRow {
    pid : String
    name : String
    initial_call : String
    memory_words : Int
    message_queue_len : Int
    }

    进程行(pid 标识+name+初始函数+内存+消息队列长)

    SupChild

    pub(all) struct SupChild {
    child_id : String
    kind : String
    }

    SupNode

    pub(all) struct SupNode {
    name : String
    children : Array[SupChild]
    }

    sup 树节点(子项 id+类型+子树)

    Source Files