Пример #1
0
// Given a set of changes, downloads the associated revisions.
func pullChanges(c *api.SyncGatewayClient, changes []*api.Change, wakeup time.Time) (int, interface{}) {
	docs := []api.BulkDocsEntry{}
	var newLastSeq interface{}
	for _, change := range changes {
		newLastSeq = change.Seq
		for _, changeItem := range change.Changes {
			bulk := api.BulkDocsEntry{ID: change.ID, Rev: changeItem.Rev}
			docs = append(docs, bulk)
		}
	}
	if len(docs) == 1 {
		if !c.GetSingleDoc(docs[0].ID, docs[0].Rev, wakeup) {
			docs = nil
			glExpvars.Add("total_doc_failed_to_pull", 1)
		} else {
			glExpvars.Add("total_doc_pulled", 1)
		}
	} else {
		if !c.GetBulkDocs(docs, wakeup) {
			docs = nil
			glExpvars.Add("total_doc_failed_to_pull", int64(len(docs)))
		} else {
			glExpvars.Add("total_doc_pulled", int64(len(docs)))
		}
	}
	return len(docs), newLastSeq
}