Bedrock.DataPlane.Materializer.Olivine.DataDatabase (bedrock v0.5.3)
View SourceLow-level data storage for Olivine, handling file I/O and buffering.
Summary
Types
@type locator() :: <<_::64>>
@type t() :: %Bedrock.DataPlane.Materializer.Olivine.DataDatabase{ buffer: :ets.tab(), file: :file.fd(), file_name: [char()], file_offset: non_neg_integer(), window_size_in_microseconds: pos_integer() }
Functions
@spec close(t()) :: :ok
@spec flush(t(), size_in_bytes :: pos_integer()) :: {:ok, t()} | {:error, {:data_file_write_failed, File.posix()} | {:data_file_sync_failed, File.posix()}}
@spec load_value(t(), locator()) :: {:ok, Bedrock.value()} | {:error, :not_found}
@spec many_value_loader(t()) :: ([locator()] -> {:ok, %{required(locator()) => Bedrock.value()}} | {:error, :not_found} | {:error, :shutting_down})
@spec open(file_path :: String.t(), opts :: keyword()) :: {:ok, t()} | {:error, File.posix()}
@spec store_value( t(), key :: Bedrock.key(), version :: Bedrock.version(), value :: Bedrock.value() ) :: {:ok, locator(), t()}
@spec value_loader(t()) :: (locator() -> {:ok, Bedrock.value()} | {:error, :not_found} | {:error, :shutting_down})