lm-sistemi-software-distrib.../src/main/kotlin/util/rmi/Server.kt

34 lines
1.0 KiB
Kotlin

package util.rmi
import java.net.MalformedURLException
import java.rmi.AccessException
import java.rmi.AlreadyBoundException
import java.rmi.Naming
import java.rmi.Remote
import java.rmi.RemoteException
import java.rmi.registry.LocateRegistry
class Server(private val handler: () -> Unit) {
fun start() = try {
handler()
} catch (e: AccessException) {
System.err.println("Bind operation not permitted $e")
} catch (e: RemoteException) {
System.err.println("Registry could not be contacted $e")
} catch (e: MalformedURLException) {
System.err.println("Wrong URL for binding $e")
} catch (e: AlreadyBoundException) {
System.err.println("Object alreay bound to the registry $e")
} catch (e: Exception) {
System.err.println("Generic Error $e")
}
companion object {
fun bind(remote: Remote, name: String, port: Int = 4242) {
LocateRegistry.createRegistry(port)
Naming.bind("rmi://localhost:$port/$name", remote)
}
}
}