Пожалуйста, подтвердите, что этот код XMPP не является потокобезопасным - PullRequest
1 голос
/ 09 апреля 2009

Я читаю исходный код API Smack, и метод XMPPConnection # disconnect выглядит следующим образом:

public void disconnect(Presence unavailablePresence) {
    // If not connected, ignore this request.
    if (packetReader == null || packetWriter == null) {
        return;
    }

    shutdown(unavailablePresence);

    if (roster != null) {
        roster.cleanup();
        roster = null;
    }

    wasAuthenticated = false;

    packetWriter.cleanup();
    packetWriter = null;
    packetReader.cleanup();
    packetReader = null;
}

В моем сценарии я храню живое XMPPConnection внутри класса с именем Session. Отдельный поток выполнения попытается закрыть мой экземпляр XMPPConnection, вызвав Session # shutdown () . Насколько я понимаю, мне придется совместно сказать Session закрыть XMPPConnection, получив мьютекс или что-то в этом роде. Правильно?

1 Ответ

4 голосов
/ 09 апреля 2009

Похоже, это известная ошибка .

...