Beispiel #1
0
void test_next_fragment_single() {
  char *sam_filename = "testdata/test_next_fragment_single.sam";
  samfile_t *samfile = samopen(sam_filename, "r", NULL);  
  bam1_t *reads[] = { bam_init1(), bam_init1() };

  int len;

  len = next_fragment(reads, samfile, 2);
  assert_equals(1, len, "Num reads");
  assert_str_equals("seq.1", bam1_qname(reads[0]), "qname");

  len = next_fragment(reads, samfile, 2);
  assert_equals(1, len, "Num reads");
  assert_str_equals("seq.2", bam1_qname(reads[0]), "qname");

  len = next_fragment(reads, samfile, 2);
  assert_equals(0, len, "Num reads");

  samclose(samfile);
}
Beispiel #2
0
void
feeder(struct dpipe *source, struct FeederState *state)
{
    if (!state->file || feof(state->file))
	next_fragment(source, state);

    if (state->file) {
	{
	    char * const transfer = emalloc(BUFSIZ, WHERE(feeder));
	    const int count = efread(transfer, 1, BUFSIZ, state->file, WHERE(feeder));
	    
	    if (count > 0)
		dpipe_Put(source, transfer, count);
	    else
		dpipe_Close(source);
	}
    } else
	dpipe_Close(source);
}