void ServerHost::run( int port ) { RakNet::SocketDescriptor socketDescriptors; socketDescriptors.port=port; socketDescriptors.socketFamily=AF_INET; // Test out IPV4 m_server->SetMaximumIncomingConnections(400); // Try again, but leave out IPV6 bool b = m_server->Startup(400, &socketDescriptors, 1 )==RakNet::RAKNET_STARTED; if (!b) { puts("Server failed to start. Terminating."); exit(1); } m_server->SetTimeoutTime(10000,RakNet::UNASSIGNED_SYSTEM_ADDRESS); m_server->SetOccasionalPing(true); //m_server->SetUnreliableTimeout(1000); prerun(port); RakNet::TimeMS time0 = RakNet::GetTimeMS(); while(true) { doTick(); runtick(); RakSleep(30); RakNet::TimeMS time1 = RakNet::GetTimeMS(); RakNet::TimeMS difference = time1 - time0; if(difference >= 1000) { time0 = RakNet::GetTimeMS(); tick(); } } postrun(); }
static void parse_input(int argc, char *argv[]) { int ch, foundeof; char **avj; foundeof = 0; switch (ch = getchar()) { case EOF: /* No arguments since last exec. */ if (p == bbp) xexit(*av, rval); goto arg1; case ' ': case '\t': /* Quotes escape tabs and spaces. */ if (insingle || indouble || zflag) goto addch; goto arg2; case '\0': if (zflag) { /* * Increment 'count', so that nulls will be treated * as end-of-line, as well as end-of-argument. This * is needed so -0 works properly with -I and -L. */ count++; goto arg2; } goto addch; case '\n': if (zflag) goto addch; count++; /* Indicate end-of-line (used by -L) */ /* Quotes do not escape newlines. */ arg1: if (insingle || indouble) { warnx("unterminated quote"); xexit(*av, 1); } arg2: foundeof = *eofstr != '\0' && strncmp(argp, eofstr, p - argp) == 0; /* Do not make empty args unless they are quoted */ if ((argp != p || wasquoted) && !foundeof) { *p++ = '\0'; *xp++ = argp; if (Iflag) { size_t curlen; if (inpline == NULL) curlen = 0; else { /* * If this string is not zero * length, append a space for * separation before the next * argument. */ if ((curlen = strlen(inpline))) strcat(inpline, " "); } curlen++; /* * Allocate enough to hold what we will * be holding in a second, and to append * a space next time through, if we have * to. */ inpline = realloc(inpline, curlen + 2 + strlen(argp)); if (inpline == NULL) { warnx("realloc failed"); xexit(*av, 1); } if (curlen == 1) strcpy(inpline, argp); else strcat(inpline, argp); } } /* * If max'd out on args or buffer, or reached EOF, * run the command. If xflag and max'd out on buffer * but not on args, object. Having reached the limit * of input lines, as specified by -L is the same as * maxing out on arguments. */ if (xp == endxp || p > ebp || ch == EOF || (Lflag <= count && xflag) || foundeof) { if (xflag && xp != endxp && p > ebp) { warnx("insufficient space for arguments"); xexit(*av, 1); } if (jfound) { for (avj = argv; *avj; avj++) *xp++ = *avj; } prerun(argc, av); if (ch == EOF || foundeof) xexit(*av, rval); p = bbp; xp = bxp; count = 0; } argp = p; wasquoted = 0; break; case '\'': if (indouble || zflag) goto addch; insingle = !insingle; wasquoted = 1; break; case '"': if (insingle || zflag) goto addch; indouble = !indouble; wasquoted = 1; break; case '\\': if (zflag) goto addch; /* Backslash escapes anything, is escaped by quotes. */ if (!insingle && !indouble && (ch = getchar()) == EOF) { warnx("backslash at EOF"); xexit(*av, 1); } /* FALLTHROUGH */ default: addch: if (p < ebp) { *p++ = ch; break; } /* If only one argument, not enough buffer space. */ if (bxp == xp) { warnx("insufficient space for argument"); xexit(*av, 1); } /* Didn't hit argument limit, so if xflag object. */ if (xflag) { warnx("insufficient space for arguments"); xexit(*av, 1); } if (jfound) { for (avj = argv; *avj; avj++) *xp++ = *avj; } prerun(argc, av); xp = bxp; cnt = ebp - argp; memcpy(bbp, argp, (size_t)cnt); p = (argp = bbp) + cnt; *p++ = ch; break; } }
static void parse_input(int argc, char *argv[]) { int ch, foundeof; char **avj; int last_was_backslashed = 0; foundeof = 0; switch(ch = getchar()) { case EOF: /* No arguments since last exec. */ if (p == bbp) { waitchildren(*argv, 1); exit(rval); } goto arg1; case ' ': last_was_blank = 1; case '\t': /* Quotes escape tabs and spaces. */ if (insingle || indouble || zflag) goto addch; goto arg2; case '\0': if (zflag) { /* * Increment 'count', so that nulls will be treated * as end-of-line, as well as end-of-argument. This * is needed so -0 works properly with -I and -L. */ count++; goto arg2; } goto addch; case '\n': if (zflag) goto addch; if (COMPAT_MODE("bin/xargs", "Unix2003")) { if (last_was_newline) { /* don't count empty line */ break; } if (!last_was_blank ) { /* only count if NOT continuation line */ count++; } } else { count++; } last_was_newline = 1; /* Quotes do not escape newlines. */ arg1: if (insingle || indouble) errx(1, "unterminated quote"); arg2: foundeof = *eofstr != '\0' && strcmp(argp, eofstr) == 0; #ifdef __APPLE__ /* 6591323: -I specifies that it processes the entire line, * so only recognize eofstr at the end of a line. */ if (Iflag && !last_was_newline) foundeof = 0; /* 6591323: Essentially the same as the EOF handling above. */ if (foundeof && (p - strlen(eofstr) == bbp)) { waitchildren(*argv, 1); exit(rval); } #endif /* Do not make empty args unless they are quoted */ if ((argp != p || wasquoted) && !foundeof) { *p++ = '\0'; *xp++ = argp; if (Iflag) { size_t curlen; if (inpline == NULL) curlen = 0; else { /* * If this string is not zero * length, append a space for * separation before the next * argument. */ if ((curlen = strlen(inpline))) strcat(inpline, " "); } curlen++; /* * Allocate enough to hold what we will * be holding in a second, and to append * a space next time through, if we have * to. */ inpline = realloc(inpline, curlen + 2 + strlen(argp)); if (inpline == NULL) errx(1, "realloc failed"); if (curlen == 1) strcpy(inpline, argp); else strcat(inpline, argp); } } /* * If max'd out on args or buffer, or reached EOF, * run the command. If xflag and max'd out on buffer * but not on args, object. Having reached the limit * of input lines, as specified by -L is the same as * maxing out on arguments. */ if (xp == endxp || p + (count * pad9314053) > ebp || ch == EOF || (Lflag <= count && xflag) || foundeof) { if (xflag && xp != endxp && p + (count * pad9314053) > ebp) errx(1, "insufficient space for arguments"); if (jfound) { for (avj = argv; *avj; avj++) *xp++ = *avj; } prerun(argc, av); if (ch == EOF || foundeof) { waitchildren(*argv, 1); exit(rval); } p = bbp; xp = bxp; count = 0; } argp = p; wasquoted = 0; break; case '\'': if (indouble || zflag) goto addch; insingle = !insingle; wasquoted = 1; break; case '"': if (insingle || zflag) goto addch; indouble = !indouble; wasquoted = 1; break; case '\\': last_was_backslashed = 1; if (zflag) goto addch; /* Backslash escapes anything, is escaped by quotes. */ if (!insingle && !indouble && (ch = getchar()) == EOF) errx(1, "backslash at EOF"); /* FALLTHROUGH */ default: addch: if (p < ebp) { *p++ = ch; break; } /* If only one argument, not enough buffer space. */ if (bxp == xp) errx(1, "insufficient space for argument"); /* Didn't hit argument limit, so if xflag object. */ if (xflag) errx(1, "insufficient space for arguments"); if (jfound) { for (avj = argv; *avj; avj++) *xp++ = *avj; } prerun(argc, av); xp = bxp; cnt = ebp - argp; memcpy(bbp, argp, (size_t)cnt); p = (argp = bbp) + cnt; *p++ = ch; break; } if (ch != ' ') last_was_blank = 0; if (ch != '\n' || last_was_backslashed) last_was_newline = 0; }