📄 Update year in file headers
[Sone.git] / src / main / kotlin / net / pterodactylus / sone / freenet / plugin / PluginConnector.kt
index fa7c651..88feb13 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Sone - PluginConnector.kt - Copyright Â© 2010–2019 David Roden
+ * Sone - PluginConnector.kt - Copyright Â© 2010–2020 David Roden
  *
  * This program is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
 
 package net.pterodactylus.sone.freenet.plugin
 
-import com.google.common.eventbus.*
-import com.google.inject.*
-import freenet.pluginmanager.*
 import freenet.support.*
 import freenet.support.api.*
-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(
-               private val eventBus: EventBus,
-               private val pluginRespiratorFacade: PluginRespiratorFacade
-) : FredPluginTalker {
+interface PluginConnector {
 
+       /**
+        * Sends a message to another plugin running in the same node.
+        *
+        * @param pluginName The fully qualified name of the plugin
+        * @param fields The message being sent
+        * @param data Optional data
+        * @return The reply from the plugin
+        * @throws PluginException if the plugin identified by [pluginName] does not exist
+        */
        @Throws(PluginException::class)
-       @JvmOverloads
-       fun sendRequest(pluginName: String, identifier: String, fields: SimpleFieldSet, data: Bucket? = null) =
-                       getPluginTalker(pluginName, identifier).send(fields, data)
-
-       private fun getPluginTalker(pluginName: String, identifier: String) =
-                       try {
-                               pluginRespiratorFacade.getPluginTalker(this, pluginName, identifier)
-                       } catch (pnfe1: PluginNotFoundException) {
-                               throw PluginException(pnfe1)
-                       }
-
-       override fun onReply(pluginName: String, identifier: String, params: SimpleFieldSet, data: Bucket) =
-                       eventBus.post(ReceivedReplyEvent(this, pluginName, identifier, params, data))
+       suspend fun sendRequest(pluginName: String, fields: SimpleFieldSet, data: Bucket? = null): PluginReply
 
 }
+
+data class PluginReply(val fields: SimpleFieldSet, val data: Bucket?)