NetworkMonitor(appeng.me.cache.NetworkMonitor)

基本信息

属性 值
源码 appeng/me/cache/NetworkMonitor.java
类声明行号 55
实现接口 IMEMonitor<T>(appeng/api/storage/IMEMonitor.java)
泛型约束 T extends IAEStack<T>
是否注册为 IGridCache 否

最重要的一点:它不是网格缓存

⚠️ me/cache/ 目录下 10 个类,只有 9 个进 IGridCacheRegistry。 NetworkMonitor 不在其中(注册表见 core/Registration.java:543-552, 逐项清单见 grid-cache 总览)。

它是 GridStorageCache 的内部产物,每个 stack 类型一个实例:

// me/cache/GridStorageCache.java:123
this.monitors.put(type, new NetworkMonitor<>(this, type));

构造器 NetworkMonitor.java:81,签名 (GridStorageCache cache, IAEStackType<T> type)。

职责

IMEMonitor<T> 的全网视图。它自己不存任何东西,所有读写都转发给 NetworkInventoryHandler:

方法 行号 转发目标
getHandler() 249 返回底层 IMEInventoryHandler<T>
getExternalNetworkInventory() 239 IMENetworkInventory<T>
injectItems 191 handler
extractItems 111 handler

优先级与槽位

「哪个 cell 先被抽」由这几组方法表达,全部委托给 handler:

方法 行号
getPriority() 163
getSlot() 168
isPrioritized(T input) 223
getAvailableItemsWithPriority(int iteration) 147
getStorageList() 174

锁

setLocked(boolean)(:88)/ isLocked()(:92)—— 供正在做大批量转移的 操作临时冻结 monitor。

观察者

addListener(:101)/ removeListener(:228),token 校验用 isValid(Object)(:124)。

StorageChannel 缺省实现

getChannel()(:152)返回 @Nullable 的 StorageChannel —— api/storage/StorageChannel.java(不在本分片)。 NetworkMonitor 返回 null,意味着它不受优先级配置约束, 始终按全网统一规则分配。

相关条目