Use injection to create plugin factories.

This commit is contained in:
akwizgran
2020-08-06 17:11:24 +01:00
parent 086c10abc0
commit 1af951f8b4
15 changed files with 142 additions and 179 deletions

View File

@@ -5,25 +5,16 @@ import dagger.Module
import dagger.Provides
import org.briarproject.bramble.account.AccountModule
import org.briarproject.bramble.api.FeatureFlags
import org.briarproject.bramble.api.battery.BatteryManager
import org.briarproject.bramble.api.db.DatabaseConfig
import org.briarproject.bramble.api.event.EventBus
import org.briarproject.bramble.api.lifecycle.IoExecutor
import org.briarproject.bramble.api.network.NetworkManager
import org.briarproject.bramble.api.plugin.BackoffFactory
import org.briarproject.bramble.api.plugin.PluginConfig
import org.briarproject.bramble.api.plugin.TorDirectory
import org.briarproject.bramble.api.plugin.TransportId
import org.briarproject.bramble.api.plugin.duplex.DuplexPluginFactory
import org.briarproject.bramble.api.plugin.simplex.SimplexPluginFactory
import org.briarproject.bramble.api.system.Clock
import org.briarproject.bramble.api.system.LocationUtils
import org.briarproject.bramble.api.system.ResourceProvider
import org.briarproject.bramble.api.system.WakefulIoExecutor
import org.briarproject.bramble.battery.DefaultBatteryManagerModule
import org.briarproject.bramble.event.DefaultEventExecutorModule
import org.briarproject.bramble.network.JavaNetworkModule
import org.briarproject.bramble.plugin.tor.CircumventionModule
import org.briarproject.bramble.plugin.tor.CircumventionProvider
import org.briarproject.bramble.plugin.tor.UnixTorPluginFactory
import org.briarproject.bramble.socks.SocksModule
import org.briarproject.bramble.system.DefaultTaskSchedulerModule
@@ -39,9 +30,7 @@ import org.briarproject.briar.headless.forums.HeadlessForumModule
import org.briarproject.briar.headless.messaging.HeadlessMessagingModule
import java.io.File
import java.util.Collections.emptyList
import java.util.concurrent.Executor
import javax.inject.Singleton
import javax.net.SocketFactory
@Module(
includes = [
@@ -77,39 +66,15 @@ internal class HeadlessModule(private val appDir: File) {
}
@Provides
internal fun providePluginConfig(
@IoExecutor ioExecutor: Executor,
@WakefulIoExecutor wakefulIoExecutor: Executor,
torSocketFactory: SocketFactory,
backoffFactory: BackoffFactory,
networkManager: NetworkManager,
locationUtils: LocationUtils,
eventBus: EventBus,
resourceProvider: ResourceProvider,
circumventionProvider: CircumventionProvider,
batteryManager: BatteryManager,
clock: Clock
): PluginConfig {
val duplex: List<DuplexPluginFactory> = if (isLinux() || isMac()) {
val torDirectory = File(appDir, "tor")
val tor = UnixTorPluginFactory(
ioExecutor,
wakefulIoExecutor,
networkManager,
locationUtils,
eventBus,
torSocketFactory,
backoffFactory,
resourceProvider,
circumventionProvider,
batteryManager,
clock,
torDirectory
)
listOf(tor)
} else {
emptyList()
}
@TorDirectory
internal fun provideTorDirectory(): File {
return File(appDir, "tor")
}
@Provides
internal fun providePluginConfig(tor: UnixTorPluginFactory): PluginConfig {
val duplex: List<DuplexPluginFactory> =
if (isLinux() || isMac()) listOf(tor) else emptyList()
return object : PluginConfig {
override fun getDuplexFactories(): Collection<DuplexPluginFactory> = duplex
override fun getSimplexFactories(): Collection<SimplexPluginFactory> = emptyList()