int main(){ gWidth = 1024; gHeight = 600; if (!initGLFW() || !initUserInterface()) return EXIT_FAILURE; if (!initialize()) exit(EXIT_FAILURE); gpScene = new CScene(); gpCamera = new CCamera(); gpScene->loadObjects(); reshape(gpWindow, gWidth, gHeight); mainLoop(); destroy(); return EXIT_SUCCESS; }
int main(int argc, char **argv) { sctpAdaptorMod *sctpA; distributor *dist; int i; int rwnd=0; int swnd=0; int sctpPort,mySctpPort,scopeVal; char *addr; char *binda[100]; int tcpmodel = 0; scopeVal = mySctpPort = sctpPort = 0; addr = binda[0] = NULL; while((i= getopt(argc,argv,"v46h:p:m:b:?s:tr:z:")) != EOF) { switch(i) { case 'v': sctp_verbose = 1; break; case 'z': swnd = strtol(optarg,NULL,0); break; case 't': tcpmodel = 1; break; case 'r': rwnd = strtol(optarg,NULL,0); break; case 's': scopeVal = strtol(optarg,NULL,0); break; case 'h': addr = optarg; destinationSet++; break; case '4': v4only = 1; SCTP_setV4only(); break; case '6': v6only = 1; SCTP_setV6only(); break; case 'p': sctpPort = strtol(optarg, NULL, 10); destinationSet++; break; case 'm': mySctpPort = (u_short)strtol(optarg, NULL, 0); break; case 'b': binda[bindSpecific] = optarg; bindSpecific++; break; default: case '?': printf("Usage: %s [-h destAddress [-s v6scope]] [-p destport]\n" " [-m myPort] [-b bindAddress] [-6] [-4]\n" " -6 : v6 only (default is v4 + v6)\n" " -4 : v4 only\n", argv[0]); return(0); break; } } sendOptions = 0; if (v6only && v4only) { printf("Can't set to v4 only and v6 only at the same time!\n"); return(-4); } /* init the distibutor */ dist = createDistributor(); if(dist == NULL){ printf("Can't create distributor return is NULL?\n"); return(-1); } /* set the v6 scope */ if (scopeVal) SCTP_setIPv6scope((u_int)scopeVal); /* validate the bind address */ if (bindSpecific) { int i; for (i=0; i<bindSpecific; i++) { struct in6_addr in6; struct in_addr in; if (inet_pton(AF_INET6, binda[i], (void *)&in6)) { SCTP_setBind6Addr((u_char *)&in6); } else if (inet_pton(AF_INET, binda[i], (void *) &in)) { SCTP_setBindAddr(in.s_addr); } else { printf("Invalid bind address format [%s]!\n", binda[i]); return(-3); } } } /* now init the SCTP adaptor */ if(tcpmodel) sctpA = create_SCTP_adaptor(dist,mySctpPort,SCTP_TCP_TYPE,rwnd,swnd); else sctpA = create_SCTP_adaptor(dist,mySctpPort,SCTP_UDP_TYPE,rwnd,swnd); if(sctpA == NULL){ printf("Can't init the SCTP adaptor for port %d\n", mySctpPort); return(-2); } /* get the destination address */ if (addr != NULL) { struct in6_addr in6; struct in_addr in; if (inet_pton(AF_INET6, addr, (void *)&in6)) { SCTP_setIPaddr6((u_char *)&in6); destinationSet = 1; } else if (inet_pton(AF_INET, addr, (void *) &in)) { SCTP_setIPaddr(in.s_addr); destinationSet = 1; } else { printf("Invalid destination address format [%s]!\n", addr); return(-3); } } if (sctpPort) { SCTP_setport(htons(sctpPort)); portSet = 1; } /* now init the user interface module */ initUserInterface(dist,sctpA); /* start the main loop */ dist_process(dist); /* if we reach here someone quit ... cleanup */ destroyUserInterface(); /* kill the sctp adaptor */ destroy_SCTP_adaptor(sctpA); /* kill the distributor */ destroyDistributor(dist); /* we are done */ return(0); }