36f8f6fb024b20cc523cdf9ebde7491eca84fd7c markd Sun Dec 6 20:33:20 2020 -0800 multiple request per connect works except hgBlat diff --git src/hg/hgBlat/hgBlat.c src/hg/hgBlat/hgBlat.c index 28a6a51..2254fe8 100644 --- src/hg/hgBlat/hgBlat.c +++ src/hg/hgBlat/hgBlat.c @@ -993,60 +993,60 @@ return; int qFactor = 3; int tFactor = 3; if (gH->isProt) qFactor = 1; struct gfResult *gfR = NULL; for(gfR=gH->gfList; gfR; gfR=gfR->next) { gfR->qStart = gfR->qStart * qFactor + gfR->qFrame; gfR->qEnd = gfR->qEnd * qFactor + gfR->qFrame; gfR->tStart = gfR->tStart * tFactor + gfR->tFrame; gfR->tEnd = gfR->tEnd * tFactor + gfR->tFrame; } } -struct gfConnection *gfConnectEx(char *host, char *port) +struct gfConnection *gfConnectEx(char *host, char *port, boolean isDynamic) /* Try to connect to gfServer */ { if (allGenomes) - return gfMayConnect(host, port); // returns NULL on failure + return gfMayConnect(host, port, isDynamic); // returns NULL on failure else - return gfConnect(host, port); // errAborts on failure. + return gfConnect(host, port, isDynamic); // errAborts on failure. } void queryServerFinish(struct genomeHits *gH) /* Report results from gfServer. */ { char buf[256]; int matchCount = 0; -gH->conn = gfConnectEx(gH->host, gH->port); +gH->conn = gfConnectEx(gH->host, gH->port, gH->isDynamic); if (gH->conn == NULL) { gH->error = TRUE; gH->networkErrMsg = "Connection to gfServer failed."; return; } dyStringPrintf(gH->dbg,"query strand %s qsize %d
\n", gH->queryRC ? "-" : "+", gH->dnaSize); /* Put together query command. */ if (gH->isDynamic) - safef(buf, sizeof buf, "%s%s %d %s %s", gfSignature(), gH->type, gH->dnaSize, - dynServerGenome(gH->db), gH->genomeDataDir); + safef(buf, sizeof buf, "%s%s %s %s %d", gfSignature(), gH->type, + dynServerGenome(gH->db), gH->genomeDataDir, gH->dnaSize); else safef(buf, sizeof buf, "%s%s %d", gfSignature(), gH->type, gH->dnaSize); mustWriteFd(gH->conn->fd, buf, strlen(buf)); if (read(gH->conn->fd, buf, 1) < 0) errAbort("queryServerFinish: read failed: %s", strerror(errno)); if (buf[0] != 'Y') errAbort("Expecting 'Y' from server, got %c", buf[0]); mustWriteFd(gH->conn->fd, gH->dna, gH->dnaSize); // Cannot shifted earlier for speed. must wait for Y confirmation. if (gH->complex) { char *s = netRecieveString(gH->conn->fd, buf); if (!s) errAbort("expected response from gfServer with tileSize"); @@ -1330,35 +1330,35 @@ genomeSize += twoBitSeqSize(genome->tbf, index->name); } twoBitClose(&genome->tbf); return genomeSize; } int findGenomeParams(struct serverTable *serve) /* Send status message to server arnd report result. * Get tileSize stepSize and minMatch. */ { char buf[256]; -struct gfConnection *conn = NULL; int ret = 0; /* Put together command. */ -conn = gfConnectEx(serve->host, serve->port); +// FIXME: need to keep open +struct gfConnection *conn = gfConnectEx(serve->host, serve->port, serve->isDynamic); if (serve->isDynamic) sprintf(buf, "%s%s %s %s", gfSignature(), (serve->isTrans ? "transInfo" : "untransInfo"), dynServerGenome(serve->db), serve->genomeDataDir); else sprintf(buf, "%sstatus", gfSignature()); mustWriteFd(conn->fd, buf, strlen(buf)); for (;;) { if (netGetString(conn->fd, buf) == NULL) { warn("Error reading status information from %s:%s",serve->host, serve->port); ret = -1; break; } @@ -1630,79 +1630,79 @@ warn("Sequence %s would take us over the %d letter limit, stopping here.", seq->name, maxTotalSize); break; } if (isTx) { gvo->reportTargetStrand = TRUE; if (isTxTx) { if (allGenomes) queryServer(serve->host, serve->port, db, seq, "transQuery", xType, TRUE, FALSE, FALSE, seqNumber, serve->genomeDataDir); else { - conn = gfConnectEx(serve->host, serve->port); + conn = gfConnectEx(serve->host, serve->port, serve->isDynamic); gfAlignTransTrans(conn, serve->nibDir, seq, FALSE, 5, tFileCache, gvo, !txTxBoth, dynServerGenome(serve->db), serve->genomeDataDir); } if (txTxBoth) { reverseComplement(seq->dna, seq->size); if (allGenomes) queryServer(serve->host, serve->port, db, seq, "transQuery", xType, TRUE, FALSE, TRUE, seqNumber, serve->genomeDataDir); else { - conn = gfConnectEx(serve->host, serve->port); + conn = gfConnectEx(serve->host, serve->port, serve->isDynamic); gfAlignTransTrans(conn, serve->nibDir, seq, TRUE, 5, tFileCache, gvo, FALSE, dynServerGenome(serve->db), serve->genomeDataDir); } } } else { if (allGenomes) queryServer(serve->host, serve->port, db, seq, "protQuery", xType, TRUE, TRUE, FALSE, seqNumber, serve->genomeDataDir); else { - conn = gfConnectEx(serve->host, serve->port); + conn = gfConnectEx(serve->host, serve->port, serve->isDynamic); gfAlignTrans(conn, serve->nibDir, seq, 5, tFileCache, gvo, dynServerGenome(serve->db), serve->genomeDataDir); } } } else { if (allGenomes) queryServer(serve->host, serve->port, db, seq, "query", xType, FALSE, FALSE, FALSE, seqNumber, serve->genomeDataDir); else { - conn = gfConnectEx(serve->host, serve->port); + conn = gfConnectEx(serve->host, serve->port, serve->isDynamic); gfAlignStrand(conn, serve->nibDir, seq, FALSE, minMatchShown, tFileCache, gvo, dynServerGenome(serve->db), serve->genomeDataDir); } reverseComplement(seq->dna, seq->size); if (allGenomes) queryServer(serve->host, serve->port, db, seq, "query", xType, FALSE, FALSE, TRUE, seqNumber, serve->genomeDataDir); else { - conn = gfConnectEx(serve->host, serve->port); + conn = gfConnectEx(serve->host, serve->port, serve->isDynamic); gfAlignStrand(conn, serve->nibDir, seq, TRUE, minMatchShown, tFileCache, gvo, dynServerGenome(serve->db), serve->genomeDataDir); } } gfOutputQuery(gvo, f); ++seqNumber; } carefulClose(&f); if (!allGenomes) { showAliPlaces(pslTn.forCgi, faTn.forCgi, NULL, serve->db, qType, tType, organism, feelingLucky); }