1. OMG Issue

FTAM — Directory::list and FileWrapper

  • Key: FTAM-23
  • Legacy Issue Number: 4391
  • Status: closed  
  • Source: DSTC ( Ted McFadden)
  • Summary:

    The Directory::list & FileIterator operations return sequences of
    FileWrappers defined as:

    struct FileWrapper

    { File the_file; FileType file_type; }


    This has the unforunate side effect of creating large numbers of
    unnecessary File object references.

    For example, to query a directory with 10,000 Files. The server must
    return 10,000 separate usable file references. If I then want the
    names of the files, that's 10,000 more calls to File::get_name().

    Even if the server implementation is clever and is only generating
    references for these files and not directly backing them with
    servants, the server must maintain some context about them.

    Considering a client will probably only transfer a minority of the
    references it receives from list it would be advantageous to structure
    the list operation to return the relative names of the entries to the
    enclosing directory:

    struct DirEntry

    { wstring relative_name; FileType file_type; }


    Then, the client has immediate access to what is arguably the most
    frequently accessed File attribute (the name), and the File object can
    then be gotten by adding a get_file operation on the Directory itself.

    Further to making the list call more useful and not having to make
    mutiple calls on each File object to query attributes, the list
    signature could be:

    Directory::list(in CosPropertyService::PropertyNames listProps)

    struct DirEntry

    { RelativeName name; CosPropertyService::Properties props; DirEntryType type; }


    Now it is easy for a client, to obtain a directory listing with file
    names, size, owner, etc... without forcing the server to create any
    File references and eliminating any client calls to these references.

    Only if the client wants to transfer or delete a file will it have to
    ask for a reference.

  • Reported: FTAM 1.0b1 — Mon, 25 Jun 2001 04:00 GMT
  • Disposition: Resolved — FTAM 1.0
  • Disposition Summary:

    see above

  • Updated: Fri, 6 Mar 2015 21:48 GMT