Делегирование функций в 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?


Ответы (0 шт):