internal/filesystem/document_metadata.go (51 lines of code) (raw):

package filesystem import ( "sync" "github.com/Azure/azapi-lsp/internal/source" ) type documentMetadata struct { dh DocumentHandler mu *sync.RWMutex isOpen bool version int langId string lines source.Lines } func NewDocumentMetadata(dh DocumentHandler, langId string, content []byte) *documentMetadata { return &documentMetadata{ dh: dh, mu: &sync.RWMutex{}, langId: langId, lines: source.MakeSourceLines(dh.Filename(), content), } } func (d *documentMetadata) setOpen(isOpen bool) { d.mu.Lock() defer d.mu.Unlock() d.isOpen = isOpen } func (d *documentMetadata) setVersion(version int) { d.mu.Lock() defer d.mu.Unlock() d.version = version } func (d *documentMetadata) updateLines(content []byte) { d.mu.Lock() defer d.mu.Unlock() d.lines = source.MakeSourceLines(d.dh.Filename(), content) } func (d *documentMetadata) Lines() source.Lines { d.mu.RLock() defer d.mu.RUnlock() return d.lines } func (d *documentMetadata) Version() int { d.mu.RLock() defer d.mu.RUnlock() return d.version } func (d *documentMetadata) IsOpen() bool { d.mu.RLock() defer d.mu.RUnlock() return d.isOpen }