X-Git-Url: https://git.pterodactylus.net/?p=Sone.git;a=blobdiff_plain;f=src%2Fmain%2Fkotlin%2Fnet%2Fpterodactylus%2Fsone%2Ffreenet%2Fplugin%2FPluginConnector.kt;h=c55859bddfe00a69df2fceb1b802d28d1951913a;hp=fa7c651c83eb403be6f07c1f3834544339e75af3;hb=8788d5ab31bba7dd145c25b979f99a8bc640c37e;hpb=5997c20d49159eaecf9ba51e769b22e63ce75525 diff --git a/src/main/kotlin/net/pterodactylus/sone/freenet/plugin/PluginConnector.kt b/src/main/kotlin/net/pterodactylus/sone/freenet/plugin/PluginConnector.kt index fa7c651..c55859b 100644 --- a/src/main/kotlin/net/pterodactylus/sone/freenet/plugin/PluginConnector.kt +++ b/src/main/kotlin/net/pterodactylus/sone/freenet/plugin/PluginConnector.kt @@ -28,15 +28,30 @@ import net.pterodactylus.sone.freenet.plugin.event.* * Interface for talking to other plugins. Other plugins are identified by their * name and a unique connection identifier. */ -@Singleton -class PluginConnector @Inject constructor( +interface PluginConnector { + + /** + * Sends a message to another plugin running in the same node. + * + * @param pluginName The fully qualified name of the plugin + * @param identifier The unique identifier of the request + * @param fields The message being sent + * @param data Optional data + */ + @Throws(PluginException::class) + fun sendRequest(pluginName: String, identifier: String, fields: SimpleFieldSet, data: Bucket? = null): Unit + +} + +/** + * Fred-based [PluginConnector] implementation. + */ +class FredPluginConnector @Inject constructor( private val eventBus: EventBus, private val pluginRespiratorFacade: PluginRespiratorFacade -) : FredPluginTalker { +) : PluginConnector, FredPluginTalker { - @Throws(PluginException::class) - @JvmOverloads - fun sendRequest(pluginName: String, identifier: String, fields: SimpleFieldSet, data: Bucket? = null) = + override fun sendRequest(pluginName: String, identifier: String, fields: SimpleFieldSet, data: Bucket?) = getPluginTalker(pluginName, identifier).send(fields, data) private fun getPluginTalker(pluginName: String, identifier: String) =