(v reflect.Value)
| 39 | } |
| 40 | |
| 41 | func loadValue(v reflect.Value) (reset func()) { |
| 42 | resets := []func(){} |
| 43 | |
| 44 | forEachField(v, func(f reflect.Value) { |
| 45 | switch x := f.Interface().(type) { |
| 46 | case protocol.RecordReader: |
| 47 | records := loadRecords(x) |
| 48 | resetFunc := func() { |
| 49 | f.Set(reflect.ValueOf(protocol.NewRecordReader(makeRecords(records)...))) |
| 50 | } |
| 51 | resetFunc() |
| 52 | resets = append(resets, resetFunc) |
| 53 | case io.Reader: |
| 54 | buf, _ := io.ReadAll(x) |
| 55 | resetFunc := func() { |
| 56 | f.Set(reflect.ValueOf(bytes.NewBuffer(buf))) |
| 57 | } |
| 58 | resetFunc() |
| 59 | resets = append(resets, resetFunc) |
| 60 | } |
| 61 | }) |
| 62 | |
| 63 | return func() { |
| 64 | for _, f := range resets { |
| 65 | f() |
| 66 | } |
| 67 | } |
| 68 | } |
| 69 | |
| 70 | func forEachField(v reflect.Value, do func(reflect.Value)) { |
| 71 | for v.Kind() == reflect.Ptr { |
no test coverage detected