1253d0ac9acae8e2a7bd4f6f2bf837eae09a9f78
[Sone.git] / src / main / kotlin / net / pterodactylus / sone / main / FreenetModule.kt
1 package net.pterodactylus.sone.main
2
3 import com.google.inject.Binder
4 import com.google.inject.Module
5 import com.google.inject.Provides
6 import freenet.client.HighLevelSimpleClient
7 import freenet.node.Node
8 import freenet.pluginmanager.PluginRespirator
9 import javax.inject.Provider
10 import javax.inject.Singleton
11
12 /**
13  * Guice [Module] that supplies some objects that are in fact supplied by the Freenet node.
14  */
15 class FreenetModule(private val pluginRespirator: PluginRespirator): Module {
16
17         override fun configure(binder: Binder): Unit = binder.run {
18                 bind(PluginRespirator::class.java).toProvider(Provider<PluginRespirator> { pluginRespirator })
19                 pluginRespirator.node!!.let { node -> bind(Node::class.java).toProvider(Provider<Node> { node }) }
20                 bind(HighLevelSimpleClient::class.java).toProvider(Provider<HighLevelSimpleClient> { pluginRespirator.hlSimpleClient!! })
21         }
22
23         @Provides @Singleton
24         fun getSessionManager() = pluginRespirator.getSessionManager("Sone")!!
25
26 }