// NewDirectoryLayer returns a new root directory (as a Directory). The // subspaces nodeSS and contentSS control where the directory metadata and // contents are stored. The default root directory has a nodeSS of // subspace.FromBytes([]byte{0xFE}) and a contentSS of // subspace.AllKeys(). Specifying more restrictive values for nodeSS and // contentSS will allow using the directory layer alongside other content in a // database. // // If allowManualPrefixes is false, all calls to CreatePrefix on the returned // Directory (or any subdirectories) will fail, and all directory prefixes will // be automatically allocated. The default root directory does not allow manual // prefixes. func NewDirectoryLayer(nodeSS, contentSS subspace.Subspace, allowManualPrefixes bool) Directory { var dl directoryLayer dl.nodeSS = subspace.FromBytes(nodeSS.Bytes()) dl.contentSS = subspace.FromBytes(contentSS.Bytes()) dl.allowManualPrefixes = allowManualPrefixes dl.rootNode = dl.nodeSS.Sub(dl.nodeSS.Bytes()) dl.allocator = newHCA(dl.rootNode.Sub([]byte("hca"))) return dl }