func (mi *Indexer) EnumerateBlobs(dest chan<- blobref.SizedBlobRef, after string, limit uint, waitSeconds int) (err os.Error) { // MySQL connection stuff. var client *mysql.Client client, err = mi.getConnection() if err != nil { return } defer mi.releaseConnection(client) var stmt *mysql.Statement stmt, err = client.Prepare("SELECT blobref, size FROM blobs WHERE blobref > ? ORDER BY blobref LIMIT ?") if err != nil { return } err = stmt.BindParams(after, limit) if err != nil { return } err = stmt.Execute() if err != nil { return } var row blobRow stmt.BindResult(&row.blobref, &row.size) for { var done bool done, err = stmt.Fetch() if err != nil { return } if done { break } br := blobref.Parse(row.blobref) if br == nil { continue } dest <- blobref.SizedBlobRef{ BlobRef: br, Size: row.size, } } close(dest) return }