Manage your torrents from your Android device
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

34 lines
1.1 KiB

package org.transdroid.connect.clients
import org.transdroid.connect.Configuration
import org.transdroid.connect.clients.rtorrent.Rtorrent
import org.transdroid.connect.clients.transmission.Transmission
import kotlin.reflect.KClass
/**
* Support clients enum, allowing you to create instances (given a configuration) and query for feature support.
*/
enum class Client constructor(internal val type: KClass<*>) {
RTORRENT(Rtorrent::class) {
override fun create(configuration: Configuration): Rtorrent {
return Rtorrent(configuration)
}
},
TRANSMISSION(Transmission::class) {
override fun create(configuration: Configuration): Transmission {
return Transmission()
}
};
internal abstract fun create(configuration: Configuration): Any
fun createClient(configuration: Configuration): ClientSpec {
return ClientDelegate(configuration.client, create(configuration))
}
fun supports(feature: Feature): Boolean {
return feature.type.java.isAssignableFrom(type.java)
}
}