97052b54a39bd15ffd0f610bdb16ccd0ea65ca53
angie
  Mon Jun 10 14:37:22 2013 -0700
Added a chunked-query mode to annoStreamDb, similar to that of annoStreamBigBed,so that we can quickly drain sqlResults from smaller queries instead of keeping
a genome-wide sqlResult open for the whole time we're processing -- that was
making mysql have mysterious hangs on hgwdev. (http://bugs.mysql.com/bug.php?id=50399)

diff --git src/lib/annoAssembly.c src/lib/annoAssembly.c
index 9bce1d9..23453ec 100644
--- src/lib/annoAssembly.c
+++ src/lib/annoAssembly.c
@@ -1,33 +1,43 @@
 /* annoAssembly -- basic metadata about an assembly for the annoGrator framework. */
 
 #include "common.h"
 #include "twoBit.h"
 #include "annoAssembly.h"
 
 struct annoAssembly *annoAssemblyNew(char *name, char *twoBitPath)
 /* Return an annoAssembly with open twoBitFile. */
 {
 struct annoAssembly *aa;
 AllocVar(aa);
 aa->name = cloneString(name);
 aa->tbf = twoBitOpen(twoBitPath);
+aa->twoBitPath = cloneString(twoBitPath);
 return aa;
 }
 
+struct slName *annoAssemblySeqNames(struct annoAssembly *aa)
+/* Return a list of sequence names in this assembly. */
+{
+struct slName *seqNames = twoBitSeqNames(aa->twoBitPath);
+slSort(&seqNames, slNameCmp);
+return seqNames;
+}
+
 uint annoAssemblySeqSize(struct annoAssembly *aa, char *seqName)
 /* Return the number of bases in seq which must be in aa's twoBitFile. */
 {
 return (uint)twoBitSeqSize(aa->tbf, seqName);
 }
 
 void annoAssemblyClose(struct annoAssembly **pAa)
 /* Close aa's twoBitFile and free mem. */
 {
 if (*pAa == NULL)
     return;
 struct annoAssembly *aa = *pAa;
 freeMem(aa->name);
+freeMem(aa->twoBitPath);
 twoBitClose(&(aa->tbf));
 freez(pAa);
 }