Делегирование функций в kotlin
Я изучаю Kotlin и не могу найти способ как сделать аналог события в C#.
Код, который я хочу переписать под Kotlin:
//main file c#
public class Main{
private void echoClientIP(Client c){
Console.WriteLine(c.IP);
}
private void echoClientName(Client c){
Console.WriteLine(c.Name);
}
public Main(){
ListenServer = new CustomServer();
ListenServer.ClientConnected += echoClientIP;
ListenServer.ClientConnected += echoClientName;
}
}
//server file c#
public class CustomServer(){
public event ClientConnectedHandler ClientConnected;
public delegate void ClientConnectedHandler(Client c);
public CustomServer(){
Listen();
}
private void OnClientConnected(Client c){
var handler = ClientConnected;
handler?.Invoke(c);
}
private void Listen(){
...
if (client.password == realClientPassword){
client.connected = true
OnClientConnected(client)
}
...
}
}
В моем случае сервер работает в отдельном потоке, и как только к нему подключается какой-то пользователь, сервер выполняет функции (например добавление в список пользователей онлайн) из класса, который его создал.
Как это реализовать на Kotlin?