X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~yarrgweb/git?a=blobdiff_plain;f=yarrg%2Frsmain.c;h=774f507e309857db3c603463ed276920a1c8bdb4;hb=32b7564a13b1b44a5e53c7dcda2794ec0e155feb;hp=a784ae383ef3fa521bc86f7c1d1ce929914f2eaf;hpb=b0df3bd887cce71fdbd60332b89db0a076b1ee4e;p=ypp-sc-tools.db-test.git diff --git a/yarrg/rsmain.c b/yarrg/rsmain.c index a784ae3..774f507 100644 --- a/yarrg/rsmain.c +++ b/yarrg/rsmain.c @@ -7,7 +7,7 @@ int o_quiet= 0; double max_mass=-1, max_volu=-1, max_capi=-1; double distance_loss_factor_per_league; -int max_dist= -1; +int max_dist=-1, min_trade_maxprofit=0; FILE *debug_file; FILE *output; @@ -30,6 +30,9 @@ int main(int argc, const char **argv) { const char *arg; int i, ap; int granui; + const char *database=0; + const char *concur_base=0, *concur_rhs=0; + int concur_lim=-1; #ifndef debug_flags debug_flags= ~( dbg_sql2 ); @@ -38,14 +41,22 @@ int main(int argc, const char **argv) { for (;;) { arg= *++argv; if (arg[0] != '-') break; + if (!strcmp(arg,"-d")) { + database= *++argv; + } else if (!strcmp(arg,"-C")) { + concur_base= *++argv; + concur_rhs= *++argv; + concur_lim= atoi(*++argv); + } else if (!strcmp(arg,"-g")) { + granus= atoi(*++argv); + assert(granus>=1 && granus<=GRANUS); #ifndef debug_flags - if (!strcmp(arg,"-DN")) { + } else if (!strcmp(arg,"-DN")) { debug_flags= 0; } else if (!strcmp(arg,"-D1")) { debug_flags= ~(dbg_sql2|dbg_lp|dbg_value2); - } else #endif - { + } else { abort(); } } @@ -77,8 +88,6 @@ int main(int argc, const char **argv) { debug_file= stderr; } - const char *database= *argv++; - sysassert( !setvbuf(debug,0,_IOLBF,0) ); max_mass= atof(*argv++); @@ -87,6 +96,30 @@ int main(int argc, const char **argv) { double loss_per_league= atof(*argv++); distance_loss_factor_per_league= 1.0 - loss_per_league; + min_trade_maxprofit= atoi(*argv++); + + if (concur_base) { + for (i=0; i= 0); + struct flock fl; + memset(&fl,0,sizeof(fl)); + fl.l_type= F_WRLCK; + r= fcntl(concfd, F_SETLK, &fl); + free(concfn); + if (!r) goto concur_ok; + sysassert( errno == EWOULDBLOCK ); + close(concfd); + } + fprintf(output,"@@@ concurrency limit exceeded (%d)\n", concur_lim); + exit(0); + + concur_ok: + /* deliberately leak concfd */ + fprintf(output,"concurrency slot %d\n", i); + } + setup_sql(database); setup_value(); setup_search(); @@ -184,9 +217,10 @@ int main(int argc, const char **argv) { int midisle= ports[nports/2]; int midarch= route2midarch(ports,nports); fprintf(output, - " @%2d %c#%2d | start%3d mid%d:%3d f%d:%3d | %5d %5d %4d |", - pos, "ap"[ap], nhighscores[granui][ap] - 1 - pos, - ports[0], midarch,midisle, finarch,finisle, + " @%2d %c#%2d | start%3d mid%d:%3d f%d:%3d" + " | %3dlg | %5d %5d %4d |", + pos, "ap"[ap], nhighscores[granui][ap] - pos, + ports[0], midarch,midisle, finarch,finisle, pr->length, (int)hs->value, (int)pr->value[A], (int)pr->value[P]); for (i=0; i