rec_kv.go 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. // package rec_kv -- запись KV-хранилища.
  2. package rec_kv
  3. import (
  4. "gitp78su.ipnodns.ru/svi/kern/v4/lev0/helpers"
  5. "gitp78su.ipnodns.ru/svi/kern/v4/lev2/lsi/store_ent/rec_key"
  6. "gitp78su.ipnodns.ru/svi/kern/v4/lev2/lsi/store_ent/rec_meta"
  7. "gitp78su.ipnodns.ru/svi/kern/v4/lev2/lsi/store_ent/rec_val"
  8. )
  9. var (
  10. hassert = helpers.Hassert
  11. )
  12. // IRecKvFix -- интерфейс записи KV-хранилища.
  13. type IRecKvFix interface {
  14. // Meta -- метаданные записи
  15. Meta() rec_meta.IRecMeta
  16. // Key -- ключ записи
  17. Key() rec_key.IRecKeyFix
  18. // Val -- значение записи
  19. Val() rec_val.IRecValFix
  20. }
  21. // RecKv -- запись KV-хранилища.
  22. type RecKv struct {
  23. key rec_key.IRecKeyFix // Ключ записи
  24. meta rec_meta.IRecMeta // Метаданные записи
  25. val rec_val.IRecValFix // Значение записи
  26. }
  27. // NewRecKv -- создает новую запись.
  28. func NewRecKv(key rec_key.IRecKeyFix, val rec_val.IRecValFix) *RecKv {
  29. hassert(key != nil, "NewRecKv(): key==nil")
  30. hassert(val != nil, "NewRecKv(): val==nil")
  31. meta := rec_meta.NewRecMeta(key)
  32. sf := &RecKv{
  33. key: key,
  34. meta: meta,
  35. val: val,
  36. }
  37. _ = IRecKvFix(sf)
  38. return sf
  39. }
  40. // Key -- ключ записи.
  41. func (sf *RecKv) Key() rec_key.IRecKeyFix {
  42. return sf.key
  43. }
  44. // Meta -- метаданные записи.
  45. func (sf *RecKv) Meta() rec_meta.IRecMeta {
  46. return sf.meta
  47. }
  48. // Val -- значение записи.
  49. func (sf *RecKv) Val() rec_val.IRecValFix {
  50. return sf.val
  51. }