Re: Disk Device API: Some semantical questions

Tyler Dauwalder <tyler-cyCl/[email protected]>
Newsgroups gmane.os.openbeos.storage
Message-ID <[email protected]>
On 2003-07-11 at 11:42:47 [-0700], Ingo Weinhold wrote:
> > > I wonder whether we cross the line of what should be provided by
> > > the
> > > API and what can be implemented in DriveSetup here. The method 
> > > will
> > > be
> > > relatively expensive if all these checks are done and DriveSetup
> > > will
> > > have to implement the functionality to get all disk systems a
> > > partition
> > > can be initialized with, anyway.
> > 
> > That's a good point. I would say we could probably do without the
> > "InitializablePartion" and "PartitionablePartition" versions. I 
> > think
> > the mounting related ones make sense, and the other three are
> > certainly
> > reasonable.
> 
> OK, then I'll remove the former ones.

Sounds good.

> > What is the "device" parameter to VisitEachDevice() for? Is it
> > intended
> > to actually be a BDiskDevice** output parameter, a la the partition
> > parameter for VisitEachPartition(), instead of BDiskDevice* as my
> > copy
> > is labeled?
> 
> No, it is a BDiskDevice* output parameter. You (can) supply a pointer
> to an uninitialized BDiskDevice and when the visitor requested to stop
> at a particular device, the supplied object is initialized to 
> represent
> this disk device.

Gotcha.

> > For VisitEachPartition(), the "device" parameter allows you
> > to specify a single device on which to visit all partitions, IIRC,
> > but
> > that doesn't make much sense for VisitEachDevice().
> 
> The BDiskDevice* parameter passed to the partition visiting methods is
> an output parameter as well. Since a BPartition object can only exist,
> if it belongs to a BDiskDevice, there must also be a BDiskDevice, if 
> we
> want to return a BPartition*. And that's the function of the device
> parameter; it is set to the device that contains the found partition.
> 
> If that is confusing, we can still change the visiting methods to just
> return a partition_id (all of them) instead of a bool and have no
> further parameters. Then the caller can get a device/partition object
> via Get{DiskDevice,Partition}WithID().

The only confusing part is that one is * and one is a **; that's what 
threw me off originally. Wouldn't using the partition_id be a bit more 
expensive, since you'd have to look up the appropriate partition again? 
Or are you hashing the ids? Regardless, I think the way it's set up 
currently is fine as long as it's properly documented, which it will 
be. :-)

-Tyler
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.