Exemplo n.º 1
0
unsigned int Call::getPeer(unsigned int id)
{
	if (id == getTranslator())
		return getClient();
	else if (id == getClient())
		return getTranslator();
	else
		return 0;
}
Exemplo n.º 2
0
// SessionManager must be read-locked
void Call::sendTimeouts()
{
	Session *cs = sManager->findSessionByUser(getClient());
	if (cs)
		cs->sendPacket_PhoneCallTimeout(false, getTranslator());
	Session *ts = sManager->findSessionByUser(getTranslator());
	if (ts)
		ts->sendPacket_PhoneCallTimeout(true, getClient());
}
Exemplo n.º 3
0
RDFT 
getBFTranslator (char* url) {
	if (startsWith("mailbox://folder/", url)) {
		char* temp = getMem(strlen(url));
		RDFT ans = NULL;
		sprintf(temp, "mailbox://%s", &url[17]);
	    ans = getTranslator(temp);
		freeMem(temp);
		return ans;
	} else return getTranslator(url);
}
Exemplo n.º 4
0
// SessionManager must be read-locked
int Call::tarificate(Connection *sqlCon)
{
	if (price == PRICE_ERROR)
		return -1;
	if (state != ACTIVE && state != END && state != ERROR) {
//		log(LOG_ERROR, "Call::tarificate Error: wrong state %s (call=%d).", State2String(state), getID());
		return 0;
	}

	cost = countCost();

	log(LOG_ERROR, "doing Call::tarificate cost=%d state=%s (call=%d).", cost, StateToString(state), getID());

	Translator *ServerAccount = sManager->getServerAccount();
//	long fee = cost * t->getFeePercent();
	if (cost > 0) {
		User::changeBalanceDyn(sqlCon, sManager, getClient(), -cost);
		User::changeBalanceDyn(sqlCon, sManager, getTranslator(), cost);
		/*
		if (!ServerAccount) {		// done during billing purchase
			log(LOG_FATAL, "Call->tarificate: ServerAccount not initialized.");
		} else {
			ServerAccount->lock();
			ServerAccount->changeBalance(sManager->getCallManager(), cost);
			ServerAccount->DBWrite();
			ServerAccount->unlock();
		}
		*/
	}
//	accounted = 0;
	return 0;
}
Exemplo n.º 5
0
// CallManager must be locked, SessionManager must be read-locked
int Call::sendCallRequestError(int error)
{
	Session *cs = sManager->findSessionByUser(getClient());
	if (cs)
		cs->sendPacket_CallRequestError(error, getID(), false);
	Session *ts = sManager->findSessionByUser(getTranslator());
	if (ts)
		ts->sendPacket_CallRequestError(error, getID(), true);
	return 0;
}
Exemplo n.º 6
0
// CallManager must be locked, SessionManager must be read-locked
int Call::sendCallStatuses()
{
	Session *cs = sManager->findSessionByUser(getClient());
	if (cs)
		cs->sendPacket_CallStatus(getID());
	Session *ts = sManager->findSessionByUser(getTranslator());
	if (ts)
		ts->sendPacket_CallStatus(getID());
	return 0;
}
Exemplo n.º 7
0
TranslatorTab::TranslatorTab(QWidget *parent)
    : QWidget(parent)
{
    QTextBrowser *translators = new QTextBrowser;
    translators->setOpenExternalLinks(true);
    translators->setFrameShape(QFrame::NoFrame);
    translators->setFrameShadow(QFrame::Plain);

    translators->setText(getTranslator());

    QPalette p = translators->palette();
    p.setColor(QPalette::Base, palette().color(QPalette::Window));
    translators->setPalette(p);

    QVBoxLayout *mainLayout = new QVBoxLayout;
    mainLayout->addWidget(translators);

    setLayout(mainLayout);
}
Exemplo n.º 8
0
void Call::setTranslatorBusy(bool busy)
{
	Session *ts = sManager->findSessionByUser(getTranslator());
	if (ts) {
		ts->lock();
		Translator *t = dynamic_cast<Translator *>(ts->getUser());
		if (t)
/*			if (t->setBusy(busy)) {
				vector<Translator> tlist;
				t->lock();
				tlist.push_back(*t);
				t->unlock();
				sManager->Lists_processUpdate(tlist, false);
			}
*/
		ts->SetTranslatorBusy(busy);
		ts->unlock();
	}
}
Exemplo n.º 9
0
bool generateKmer(
    unsigned kmerLength,
    T &kmer,
    InputIteratorT current,
    const InputIteratorT end)
{
    static const Translator defaultTranslator = getTranslator();

    for (unsigned todo = kmerLength; todo; --todo, ++current)
    {
        if (current == end)
        {
            return false;
        }
        kmer <<= 2;
        kmer |= defaultTranslator[*current];
    }
    kmer &= (~((~T(0)) << (2 * kmerLength)));
    return true;
}
Exemplo n.º 10
0
    /// initialize the internal kmer_, skipping the Ns
    void initialize()
    {
        static const Translator defaultTranslator = getTranslator();

        unsigned currentLength = 0;
        while((current_ < end_) && currentLength + 1 < kmerLength_)
        {
            const unsigned baseValue = defaultTranslator[*current_];
            if(4 > baseValue)
            {
                kmer_ <<= 2;
                kmer_ |= baseValue;
                ++currentLength;
            }
            else
            {
                currentLength = 0;
                kmer_ = 0;
            }
        ++current_;        
        }
    }
Exemplo n.º 11
0
    /**
     ** \brief Retrieve the next k-mer hat does not contain any N.
     **
     ** \param kmer the next kmer if any
     **
     ** \param start the position of the next kmer, if any
     **
     ** \return true if a kmer was produced. False otherwise (the end of the
     ** sequence has been reached)
     **/
    bool next(T &kmer, InputIteratorT &position)
    {
        static const Translator defaultTranslator = getTranslator();

        while ((current_ < end_) && (4 <= defaultTranslator[*current_]))
        {
            initialize();
        }
        if (current_ < end_)
        {
            kmer_ <<= 2;
            kmer_ |= defaultTranslator[*current_];
            kmer_ &= mask_;
            kmer = kmer_;
            ++current_;
            position = current_ - kmerLength_;
            return true;
        }
        else
        {
            return false;
        }
    }
Exemplo n.º 12
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;
}
Exemplo n.º 13
0
 virtual std::string_view translateOr(std::string_view key, std::string_view vor) const {
   const Translator* trans = getTranslator();
   if (trans)
     return trans->translateOr(key, vor);
   return vor;
 }
Exemplo n.º 14
0
void Call::setState(call_state st)
{
	log(LOG_ALL, "call %d[%d->%d] state: %s->%s", getID(), getClient(), getTranslator(), StateToString(state), StateToString(st));
	state = st;
}