in bulk_indexer.go [129:190]
func init() {
jsoniter.RegisterTypeDecoderFunc("docappender.BulkIndexerResponseStat", func(ptr unsafe.Pointer, iter *jsoniter.Iterator) {
iter.ReadObjectCB(func(i *jsoniter.Iterator, s string) bool {
switch s {
case "items":
var idx int
iter.ReadArrayCB(func(i *jsoniter.Iterator) bool {
return i.ReadMapCB(func(i *jsoniter.Iterator, s string) bool {
var item BulkIndexerResponseItem
i.ReadObjectCB(func(i *jsoniter.Iterator, s string) bool {
switch s {
case "_index":
item.Index = i.ReadString()
case "status":
item.Status = i.ReadInt()
case "failure_store":
// For the stats track only actionable explicit failure store statuses "used", "failed" and "not_enabled".
switch fs := i.ReadString(); FailureStoreStatus(fs) {
case FailureStoreStatusUsed:
(*((*BulkIndexerResponseStat)(ptr))).FailureStoreDocs.Used++
case FailureStoreStatusFailed:
(*((*BulkIndexerResponseStat)(ptr))).FailureStoreDocs.Failed++
case FailureStoreStatusNotEnabled:
(*((*BulkIndexerResponseStat)(ptr))).FailureStoreDocs.NotEnabled++
}
case "error":
i.ReadObjectCB(func(i *jsoniter.Iterator, s string) bool {
switch s {
case "type":
item.Error.Type = i.ReadString()
case "reason":
item.Error.Reason = i.ReadString()
default:
i.Skip()
}
return true
})
default:
i.Skip()
}
return true
})
item.Position = idx
idx++
if item.Error.Type != "" || item.Status > 201 {
(*((*BulkIndexerResponseStat)(ptr))).FailedDocs = append((*((*BulkIndexerResponseStat)(ptr))).FailedDocs, item)
} else {
(*((*BulkIndexerResponseStat)(ptr))).Indexed = (*((*BulkIndexerResponseStat)(ptr))).Indexed + 1
}
return true
})
})
// no need to proceed further, return early
return false
default:
i.Skip()
return true
}
})
})
}