-
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