35 lines
788 B
Kotlin
35 lines
788 B
Kotlin
package drills.drill02.exercise1
|
|
|
|
import java.rmi.Remote
|
|
import java.rmi.RemoteException
|
|
import java.rmi.server.UnicastRemoteObject
|
|
|
|
interface RemoteObservable : Remote {
|
|
@Throws(RemoteException::class)
|
|
fun attach(o: RemoteObserver)
|
|
|
|
@Throws(RemoteException::class)
|
|
fun detach(o: RemoteObserver)
|
|
|
|
@Throws(RemoteException::class)
|
|
fun notify(obj: Any)
|
|
}
|
|
|
|
abstract class AbstractRemoteObservable : RemoteObservable, UnicastRemoteObject() {
|
|
private val observers = mutableListOf<RemoteObserver>()
|
|
|
|
override fun attach(o: RemoteObserver) {
|
|
observers.add(o)
|
|
}
|
|
|
|
override fun detach(o: RemoteObserver) {
|
|
observers.remove(o)
|
|
}
|
|
|
|
override fun notify(obj: Any) {
|
|
observers.forEach {
|
|
it.update(obj)
|
|
}
|
|
}
|
|
}
|