static struct gfRange *gfQuerySeq(int conn, struct dnaSeq *seq) /* Ask server for places sequence hits. */ { struct gfRange *rangeList = NULL, *range; char buf[256], *row[6]; int rowSize; startSeqQuery(conn, seq, "query"); /* Read results line by line and save in list, and return. */ for (;;) { netRecieveString(conn, buf); if (sameString(buf, "end")) { break; } else if (startsWith("Error:", buf)) { gfServerWarn(seq, buf); break; } else { rowSize = chopLine(buf, row); if (rowSize < 6) errAbort("Expecting 6 words from server got %d", rowSize); range = gfRangeLoad(row); slAddHead(&rangeList, range); } } slReverse(&rangeList); return rangeList; }
int botDelayTime(char *host, int port, char *botCheckString) /* Figure out suggested delay time for ip address in * milliseconds. */ { int sd = netMustConnect(host, port); char buf[256]; netSendString(sd, botCheckString); netRecieveString(sd, buf); close(sd); return atoi(buf); }
static void gfQuerySeqTransTrans(int conn, struct dnaSeq *seq, struct gfClump *clumps[2][3][3], struct lm *lm, struct gfSeqSource **retSsList, int *retTileSize) /* Query server for clumps where translated DNA sequence hits translated * index. */ { int qFrame, tFrame, isRc, rowSize; struct gfClump *clump; int tileSize = 0; char *line; char buf[256], *row[12]; struct gfSeqSource *ssList = NULL, *ss; for (isRc = 0; isRc <= 1; ++isRc) for (qFrame = 0; qFrame<3; ++qFrame) for (tFrame = 0; tFrame<3; ++tFrame) clumps[isRc][qFrame][tFrame] = NULL; /* Send sequence to server. */ startSeqQuery(conn, seq, "transQuery"); line = netRecieveString(conn, buf); if (!startsWith("Error:", line)) { tileSize = findTileSize(line); /* Read results line by line and save in memory. */ for (;;) { /* Read and parse first line that describes clump overall. */ netRecieveString(conn, buf); if (sameString(buf, "end")) { break; } else if (startsWith("Error:", buf)) { gfServerWarn(seq, buf); break; } rowSize = chopLine(buf, row); if (rowSize < 9) errAbort("Expecting 9 words from server got %d", rowSize); AllocVar(clump); clump->qStart = sqlUnsigned(row[0]); clump->qEnd = sqlUnsigned(row[1]); AllocVar(ss); ss->fileName = cloneString(row[2]); slAddHead(&ssList, ss); clump->target = ss; clump->tStart = sqlUnsigned(row[3]); clump->tEnd = sqlUnsigned(row[4]); clump->hitCount = sqlUnsigned(row[5]); isRc = ((row[6][0] == '-') ? 1 : 0); qFrame = sqlUnsigned(row[7]); tFrame = sqlUnsigned(row[8]); slAddHead(&clumps[isRc][qFrame][tFrame], clump); /* Read and parse next (long) line that describes hits. */ clump->hitList = getHitsFromServer(conn, lm); assert(slCount(clump->hitList) == clump->hitCount); } for (isRc = 0; isRc <= 1; ++isRc) for (qFrame = 0; qFrame<3; ++qFrame) for (tFrame = 0; tFrame<3; ++tFrame) slReverse(&clumps[isRc][qFrame][tFrame]); } else { gfServerWarn(seq, buf); } *retSsList = ssList; *retTileSize = tileSize; }