OLD | NEW |
1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 package memory | 5 package memory |
6 | 6 |
7 import ( | 7 import ( |
8 "bytes" | 8 "bytes" |
9 "fmt" | 9 "fmt" |
10 "sync" | 10 "sync" |
(...skipping 265 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
276 if oldPM, err = rpm(old); err != nil { | 276 if oldPM, err = rpm(old); err != nil { |
277 return | 277 return |
278 } | 278 } |
279 } | 279 } |
280 ents.Set(keyBytes(ret), dataBytes) | 280 ents.Set(keyBytes(ret), dataBytes) |
281 updateIndexes(d.head, ret, oldPM, pmap) | 281 updateIndexes(d.head, ret, oldPM, pmap) |
282 return | 282 return |
283 }() | 283 }() |
284 if cb != nil { | 284 if cb != nil { |
285 if err := cb(k, err); err != nil { | 285 if err := cb(k, err); err != nil { |
286 if err == ds.Stop { | |
287 return nil | |
288 } | |
289 return err | 286 return err |
290 } | 287 } |
291 } | 288 } |
292 } | 289 } |
293 return nil | 290 return nil |
294 } | 291 } |
295 | 292 |
296 func getMultiInner(keys []*ds.Key, cb ds.GetMultiCB, getColl func() (*memCollect
ion, error)) error { | 293 func getMultiInner(keys []*ds.Key, cb ds.GetMultiCB, getColl func() (*memCollect
ion, error)) error { |
297 ents, err := getColl() | 294 ents, err := getColl() |
298 if err != nil { | 295 if err != nil { |
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
351 if err != nil { | 348 if err != nil { |
352 return err | 349 return err |
353 } | 350 } |
354 ents.Delete(kb) | 351 ents.Delete(kb) |
355 updateIndexes(d.head, k, oldPM, nil) | 352 updateIndexes(d.head, k, oldPM, nil) |
356 } | 353 } |
357 return nil | 354 return nil |
358 }() | 355 }() |
359 if cb != nil { | 356 if cb != nil { |
360 if err := cb(err); err != nil { | 357 if err := cb(err); err != nil { |
361 if err == ds.Stop { | |
362 return nil | |
363 } | |
364 return err | 358 return err |
365 } | 359 } |
366 } | 360 } |
367 } | 361 } |
368 } else if cb != nil { | 362 } else if cb != nil { |
369 for range keys { | 363 for range keys { |
370 if err := cb(nil); err != nil { | 364 if err := cb(nil); err != nil { |
371 if err == ds.Stop { | |
372 return nil | |
373 } | |
374 return err | 365 return err |
375 } | 366 } |
376 } | 367 } |
377 } | 368 } |
378 return nil | 369 return nil |
379 } | 370 } |
380 | 371 |
381 func (d *dataStoreData) canApplyTxn(obj memContextObj) bool { | 372 func (d *dataStoreData) canApplyTxn(obj memContextObj) bool { |
382 // TODO(riannucci): implement with Flush/FlushRevert for persistance. | 373 // TODO(riannucci): implement with Flush/FlushRevert for persistance. |
383 | 374 |
(...skipping 188 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
572 } | 563 } |
573 | 564 |
574 func keyBytes(key *ds.Key) []byte { | 565 func keyBytes(key *ds.Key) []byte { |
575 return serialize.ToBytes(ds.MkProperty(key)) | 566 return serialize.ToBytes(ds.MkProperty(key)) |
576 } | 567 } |
577 | 568 |
578 func rpm(data []byte) (ds.PropertyMap, error) { | 569 func rpm(data []byte) (ds.PropertyMap, error) { |
579 return serialize.ReadPropertyMap(bytes.NewBuffer(data), | 570 return serialize.ReadPropertyMap(bytes.NewBuffer(data), |
580 serialize.WithContext, "", "") | 571 serialize.WithContext, "", "") |
581 } | 572 } |
OLD | NEW |