getSyncFragments repeatedly gets all sync fragments after the specified usn until there is no more new data remaining and returns the buffered list
(ctx context.DnoteCtx, afterUSN int)
| 162 | // getSyncFragments repeatedly gets all sync fragments after the specified usn until there is no more new data |
| 163 | // remaining and returns the buffered list |
| 164 | func getSyncFragments(ctx context.DnoteCtx, afterUSN int) ([]client.SyncFragment, error) { |
| 165 | var buf []client.SyncFragment |
| 166 | |
| 167 | nextAfterUSN := afterUSN |
| 168 | |
| 169 | for { |
| 170 | resp, err := client.GetSyncFragment(ctx, nextAfterUSN) |
| 171 | if err != nil { |
| 172 | return buf, errors.Wrap(err, "getting sync fragment") |
| 173 | } |
| 174 | |
| 175 | frag := resp.Fragment |
| 176 | buf = append(buf, frag) |
| 177 | |
| 178 | nextAfterUSN = frag.FragMaxUSN |
| 179 | |
| 180 | // if there is no more data, break |
| 181 | if nextAfterUSN == 0 { |
| 182 | break |
| 183 | } |
| 184 | } |
| 185 | |
| 186 | log.Debug("received sync fragments: %+v\n", redactSyncFragments(buf)) |
| 187 | |
| 188 | return buf, nil |
| 189 | } |
| 190 | |
| 191 | // redactSyncFragments returns a deep copy of sync fragments with sensitive fields (note body, book label) removed for safe logging |
| 192 | func redactSyncFragments(fragments []client.SyncFragment) []client.SyncFragment { |
no test coverage detected