Slot(数据槽)是 ArchGuard 中用来构建数据分析流的一种机制。最典型的用法是在 analyser 分析完之后,结合 rule 来对数据进行分析。
接口实现见:Slot.kt。
SQL 示例:
class SqlRuleSlot : Slot {
override var material: Materials = listOf()
override var outClass: String = Issue.Companion::class.java.name
override fun ticket(): Coin {
return listOf(String::class.java.name)
}
override fun prepare(items: List<Any>): List<Any> {
val ruleSets = listOf(SqlRuleSetProvider().get())
this.material = ruleSets
return ruleSets
}
override fun process(items: List<Any>): OutputType {
return SqlRuleVisitor(items as List<String>).visitor(this.material as Iterable<RuleSet>)
}
}
ticket()
用于告知 SlotHub 当前的 Slot 所需要的数据类型prepare()
用于做自身数据处理的准备process()
为处理数据的逻辑。outClass
用于告知 SlotHub 输出的类型,用于输出数据的再次处理。