package memory import ( "lindenii.org/go/furgit/object/id" "lindenii.org/go/furgit/object/store" "lindenii.org/go/furgit/object/typ" "lindenii.org/go/lgo/sync" ) // Memory is one in-memory object store. // // Labels: MT-Safe, Close-Caller. type Memory struct { objectFormat id.ObjectFormat objects *sync.Map[id.ObjectID, storedObject] } // storedObject is one in-memory object entry. type storedObject struct { ty typ.Type content []byte } var ( _ store.ObjectReader = (*Memory)(nil) _ store.ObjectWriter = (*Memory)(nil) ) // New builds one empty in-memory store for one object format. func New(objectFormat id.ObjectFormat) *Memory { return &Memory{ objectFormat: objectFormat, objects: &sync.Map[id.ObjectID, storedObject]{}, } } // ObjectFormat returns the object format used by the store. func (memory *Memory) ObjectFormat() id.ObjectFormat { return memory.objectFormat }