Exemple #1
0
int main(int argc, char ** argv)
{
	setvbuf(stdout, NULL, _IONBF, 0);
	setvbuf(stderr, NULL, _IONBF, 0);

	int isCoordinator = 1;
	char * coordinatorIp = NULL;
	int ownPort = -1, coordinatorPort = -1;

	bool correctArgs = false;

	if (argc >= 3) {
		std::stringstream ss;

		isCoordinator = stoi(argv[1]);
		ownPort = stoi(argv[2]);
		ss << isCoordinator << ' ' << ownPort;

		if (!isCoordinator and argc >= 5) {
			coordinatorIp = argv[3];
			coordinatorPort = stoi(argv[4]);
			ss << ' ' << coordinatorIp << ' ' << coordinatorPort;
		}

		if (isCoordinator or (!isCoordinator and argc >= 5)) {
			correctArgs = true;
			dbg("command line args:", ss.str());
		}
	}

	if (!correctArgs) {
		std::cout << argc << std::endl;
		std::cout << "Usage (  coordinator  ): executable  1  ownPort" << std::endl;
		std::cout << "Usage (non-coordinator): executable  0  ownPort  coordinatorIp  coordinatorPort" << std::endl;
		return 0;
	}

#ifdef TEST_READY
	if (isCoordinator and argc > 3) setSize  (stoi(argv[3]));
	if (isCoordinator and argc > 4) setNTests(stoi(argv[4]));
	if (isCoordinator and argc > 5) setNNodes(stoi(argv[5]));
	if (!isCoordinator and argc > 5) setSize  (stoi(argv[5]));
	if (!isCoordinator and argc > 6) setNTests(stoi(argv[6]));
	if (!isCoordinator and argc > 7) setNNodes(stoi(argv[7]));
#endif

	if (isCoordinator) {
		auto node = new igcl::Coordinator(ownPort);
		runCoordinator(node);
		delete node;
	} else {
		auto node = new igcl::Peer(ownPort, coordinatorIp, coordinatorPort);
		runPeer(node);
		delete node;
	}

	return 0;
}
Exemple #2
0
	void BaseModel::free()
	{
		if(getTriangles() != 0) delete [] getTriangles(); setNTriangles(0);
		if(getTreeNodes() != 0) delete [] getTreeNodes(); setNNodes(0);
	}
Exemple #3
0
    bool ModelContainer::readFile(const char *filename)
    {
        bool result = false;
        unsigned int flags;
        unsigned int size;
        char ident[8];
        char chunk[4];
        unsigned int ival;
        FILE *rf = fopen(filename, "rb");
        if(rf)
        {
            free();

            result = true;
            char magic[8];                          // Ignore the added magic header
            fread(magic,1,8,rf);
            if(strncmp(VMAP_MAGIC,magic,8)) result = false;
            if(result && fread(ident,8,1,rf) != 1) result = false;
            if(result && fread(&flags,sizeof(unsigned int),1,rf) != 1) result = false;
            //POS
            if(result && fread(chunk,4,1,rf) != 1) result = false;
            if(result && fread(&size,4,1,rf) != 1) result = false;
            Vector3 basePos;
            if(result && fread(&basePos,sizeof(float),3,rf) != 3) result = false;
            setBasePosition(basePos);

            //---- Box
            if(result && fread(chunk,4,1,rf) != 1) result = false;
            if(result && fread(&size,4,1,rf) != 1) result = false;
            Vector3 low,high;
            if(result && fread(&low,sizeof(float),3,rf) != 3) result = false;
            if(result && fread(&high,sizeof(float),3,rf) != 3) result = false;
            setBounds(low, high);

            //---- TreeNodes
            if(result && fread(chunk,4,1,rf) != 1) result = false;
            if(result && fread(&size,4,1,rf) != 1) result = false;

            if(result && fread(&ival,sizeof(unsigned int),1,rf) != 1) result = false;
            if(result) setNNodes(ival);
            if(result) setTreeNodeArray(new TreeNode[getNNodes()]);
            if(result && fread(getTreeNodes(),sizeof(TreeNode),getNNodes(),rf) != getNNodes()) result = false;

            //---- TriangleBoxes
            if(result && fread(chunk,4,1,rf) != 1) result = false;
            if(result && fread(&size,4,1,rf) != 1) result = false;

            if(result && fread(&ival,sizeof(unsigned int),1,rf) != 1) result = false;
            setNTriangles(ival);
            if(result) setTriangleArray(new TriangleBox[getNTriangles()]);
            if(result && fread(getTriangles(),sizeof(TriangleBox),getNTriangles(),rf) != getNTriangles()) result = false;

            //---- SubModel
            if(result && fread(chunk,4,1,rf) != 1) result = false;
            if(result && fread(&size,4,1,rf) != 1) result = false;

            if(result && fread(&iNSubModel,sizeof(unsigned int),1,rf) != 1) result = false;
            if(result) iSubModel = new SubModel[iNSubModel];

            if(result)
            {
                for (unsigned int i=0; i<iNSubModel && result; ++i)
                {
                    unsigned char readBuffer[52];           // this is the size of SubModel on 32 bit systems
                    if(fread(readBuffer,sizeof(readBuffer),1,rf) != 1) result = false;
                    iSubModel[i].initFromBinBlock(readBuffer);
                    iSubModel[i].setTriangleArray(getTriangles());
                    iSubModel[i].setTreeNodeArray(getTreeNodes());
                }
            }
            fclose(rf);
        }
        return result;
    }