diff options
Diffstat (limited to 'object/store/dual/dual.go')
| -rw-r--r-- | object/store/dual/dual.go | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/object/store/dual/dual.go b/object/store/dual/dual.go new file mode 100644 index 00000000..627cc121 --- /dev/null +++ b/object/store/dual/dual.go @@ -0,0 +1,35 @@ +package dual + +import objectstore "codeberg.org/lindenii/furgit/object/store" + +type objectSide interface { + objectstore.Reader + objectstore.ObjectWriter + objectstore.ObjectQuarantiner +} + +type packSide interface { + objectstore.Reader + objectstore.PackWriter + objectstore.PackQuarantiner +} + +// Dual composes one object-wise store and one pack-wise store into one logical +// object store. +// +// Reads are served from the combined object reader of both stores. Individual +// object writes are routed to the object-wise store, and pack writes are routed +// to the pack-wise store. Coordinated quarantines go across both stores. +type Dual struct { + object objectSide + pack packSide + reader objectstore.Reader +} + +var ( + _ objectstore.Reader = (*Dual)(nil) + _ objectstore.ObjectWriter = (*Dual)(nil) + _ objectstore.PackWriter = (*Dual)(nil) + _ objectstore.ObjectQuarantiner = (*Dual)(nil) + _ objectstore.PackQuarantiner = (*Dual)(nil) +) |
