Esempio n. 1
0
void DSBBranch::setMainConnections(QList<DSBNode*> own)
{
    for (int i = 0; i < own.size(); i++)
    {
        DSBNode *n = own.at(i);
        DSBReaction *reac = dynamic_cast<DSBReaction*>(n);
        DSBClone *cl = dynamic_cast<DSBClone*>(n);
        if (reac)
        {
            // predecessor
            n = getPredecessor(reac);
            if (n)
            {
                DSBClone *c = dynamic_cast<DSBClone*>(n);
                assert(c);
                reac->setMainInput(c);
            }
            // successor
            n = getSuccessor(reac);
            if (n)
            {
                DSBClone *c = dynamic_cast<DSBClone*>(n);
                assert(c);
                reac->setMainOutput(c);
            }
        }
        else if (cl)
        {
            DSBFork *fork = cl->getFork();
            if (fork)
            {
                // predecessor
                n = getPredecessor(cl);
                if (n)
                {
                    DSBReaction *r = dynamic_cast<DSBReaction*>(n);
                    assert(r);
                    fork->setMainInput(r);
                }
                // successor
                n = getSuccessor(cl);
                if (n)
                {
                    DSBReaction *r = dynamic_cast<DSBReaction*>(n);
                    assert(r);
                    fork->setMainOutput(r);
                }
            }
        }
        else
        {
            qDebug() << "ERROR: Found Node which was neither Clone nor Reaction: " << n;
        }
    }
}
Esempio n. 2
0
bool ProjectionTreeLabel::descendantAxisBetw(unsigned basing_id,
                                                bool consider_final) {

    // if this is the basing_id label we are done
    if (id==basing_id) {
        if (consider_final) {
            return getPathStep()->getAxisType()==at_descendant ||
                    getPathStep()->getAxisType()==at_dos;
        } else {
            return false; 
        }
    } else if (getPathStep()->getAxisType()==at_descendant ||
                getPathStep()->getAxisType()==at_dos) {
        return true; // we found such an axis
    } else {
        return getPredecessor()->descendantAxisBetw(basing_id,consider_final);
    }
}
Esempio n. 3
0
int FingerTable::toString(char **buf , unsigned int &length) 
{
	/**/
	char *buffer = new char[4000] ;
	if (buffer==NULL)
	  return -1;

	char *message = buffer ;

	sprintf(message,"**********FINGER TABLE**********") ;
	message = message + strlen (message);
	strncpy (message, "\r\n\0", 2);
	message = message + 2;

	for(int i = 0 ; i < getTableLength() ; i++)
	{
		sprintf (message, "finger[%d]:	node:%d		start:%d	interval:%d~%d", 
			i+1,
			getFinger(i+1)->node.GetId() ,
			getFinger(i+1)->start.GetId() ,
			getFinger(i+1)->interval[0].GetId() ,
			getFinger(i+1)->interval[1].GetId() 
			);
		message = message + strlen (message);
		strncpy (message, "\r\n\0", 2);
		message = message + 2;
	}

	sprintf(message,"**********SUCC LIST**********") ;
	message = message + strlen (message);
	strncpy (message, "\r\n\0", 2);
	message = message + 2;

	for(i = 0 ; i < getSuccNum() ; i++)
	{
		sprintf (message, "SUCCLIST[%d]:	id:%d		ip:%s", 
			i,
			getSuccessor(i).GetId() ,
			getSuccessor(i).GetAddress() 
			);
		message = message + strlen (message);
		strncpy (message, "\r\n\0", 2);
		message = message + 2;
	}

	sprintf(message,"\r\n**********PREDECESSOR**********") ;
	message = message + strlen (message);
	strncpy (message, "\r\n\0", 2);
	message = message + 2;

	sprintf (message, "PREDECESSOR:		id:%d		ip:%s", 
			getPredecessor().GetId() ,
			getPredecessor().GetAddress() 
			);
	message = message + strlen (message);
	strncpy (message, "\r\n\0", 2);
	message = message + 2;

	strncpy(message,"\0",1) ;
	*buf = buffer ;
	length = strlen(buffer) ;
	return 0 ;
}