// save phones to use in case of loosing connection by one of peers // SessionManager must be read-locked int PhoneCall::savePhones() { Session *cs = sManager->findSessionByUser(getClient()); if (!cs || !cs->getUser()) return -1; Client *c = dynamic_cast<Client *>(cs->getUser()); if (c && !(!TRANSLATORS_CALL && dynamic_cast<Translator *>(cs->getUser()))) { c->lock(); strncpy(client_phone, c->getPhone(), MAX_PHONE+1); c->unlock(); } Session *ts = sManager->findSessionByUser(getTranslator()); if (!ts || !ts->getUser()) return -1; Translator *t = dynamic_cast<Translator *>(ts->getUser()); if (t) { t->lock(); strncpy(translator_phone, t->getPhone(), MAX_PHONE+1); t->unlock(); } return 0; }