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; }
void BaseModel::free() { if(getTriangles() != 0) delete [] getTriangles(); setNTriangles(0); if(getTreeNodes() != 0) delete [] getTreeNodes(); setNNodes(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; }