Example #1
0
// 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;
}