Patch title: Release 94 bulk changes
Abstract:
File: /pliant/storage/database/file_pml.pli
Key:
    Removed line
    Added line
abstract
  [Handles datas stored in a Pliant storage object fiber.]


module "/pliant/language/compiler.pli"
module "prototype.pli"
module "/pliant/util/pml/io.pli"
module "/pliant/language/data/string_cast.pli"
module "/pliant/language/data/cache.pli"
module "/pliant/storage/ground/control.pli"
module "/pliant/language/schedule/threads_engine.pli"
module "io_pml.pli"


public
  type DatabaseFilePml
    field Database_ common
    field Sem sem
    field Link:DataInterface_ root_interface
    field Link:StorageControl control
    field Str fiber

Database_ maybe DatabaseFilePml


function build df
  arg_w DatabaseFilePml df
  df:common sem :> df sem
  df:common flags := cast 0 DatabaseFlags


method df update s -> status
  oarg_rw DatabaseFilePml df ; arg_rw Stream s ; arg ExtendedStatus status
  df:common update_begin
  df get_root (var Data_ root)
  root load_pml s
  df:common update_end
  status := success

method df dump s -> status
  oarg_rw DatabaseFilePml df ; arg_rw Stream s ; arg ExtendedStatus status
  df get_root (var Data_ root)
  root store_pml s
  status := success

method df sleep
  oarg_rw DatabaseFilePml df
  if (exists df:control)
    df control :> null map StorageControl


method df get_root d
  arg DatabaseFilePml df ; arg_w Data_ d
  d adr := addressof:df translate DatabaseFilePml 1
  d object := addressof df
  d interface :> df root_interface
  d base :> df
  d path1 :> ""
  d path2 :> null map Str


method df log_begin -> required
  arg_rw DatabaseFilePml df ; arg CBool required
  if df:common:is_update
    return false
  if not (exists df:control)
    if (df:common:id parse "/pliant/fiber/" any:(var Str site) "/" any:(var Str category) "/" any:(var Str object) "/" any:(var Str fiber))
      df control :> storage_control site category object
      df fiber := fiber
  df:control fiber_modify_begin df:fiber current_thread_header:user
  required := true

method df log -> s
  arg_rw DatabaseFilePml df ; arg_C Stream s
  s :> df:control stream

method df log_end
  arg_rw DatabaseFilePml df
  df:control fiber_modify_end


method df notify_set d adr type
  arg_rw DatabaseFilePml df ; arg Data_ d ; arg Address adr ; arg Type type
  plugin notify_set
  if df:log_begin
    if type=Str
      df:log otag "set" d:dbpath (adr map Str)
    else
      var Str value := to_string adr type "raw"
      df:log otag "set" d:dbpath value
    df log_end

method df notify_reset d
  arg_rw DatabaseFilePml df ; arg Data_ d
  plugin notify_reset
  if df:log_begin
    df:log otag "reset" d:dbpath
    df log_end

method df notify_create d k
  arg_rw DatabaseFilePml df ; arg Data_ d ; arg Str k
  plugin notify_create
  if df:log_begin
    df:log otag "create" d:dbpath
    df log_end

method df notify_delete d k
  arg_rw DatabaseFilePml df ; arg Data_ d ; arg Str k
  plugin notify_delete
  if df:log_begin
    df:log otag "delete" d:dbpath
    df log_end


method df query command -> answer
  oarg DatabaseFilePml df ; arg Str command answer
  answer := ""

method df configure command -> status
  oarg_rw DatabaseFilePml df ; arg Str command ; arg Status status
  status := failure