Ben Collins-Sussman wrote:
> On Nov 30, 2004, at 8:39 PM, Branko Čibej wrote:
>> email@example.com wrote:
>>> Author: sussman
>>> Date: Mon Nov 29 22:03:52 2004
>>> New Revision: 12093
>>> + /* Generate a UUID. */
>>> + /* ### perhaps this should be a func in libsvn_fs.so, shared by
>>> + mod_dav_svn and both fs back-ends?? */
>>> + apr_uuid_get (&uuid);
>>> + apr_uuid_format (uuid_str, &uuid);
>>> + token->uuid_str = uuid_str;
>>> + dlock->locktoken = token;
>> I think it's pretty much obvious that lock all lock token management
>> function should live in libsvn_fs, not in mod_dav_svn. What we have
>> here is a layering violation.
> Well, here's the problem:
> 1. libsvn_fs_base needs to generate lock-token UUIDs.
> 2. libsvn_fs_fs needs to generate lock-token UUIDs.
> 3. mod_dav_svn needs to generate lock-token UUIDs.
All of the above are wrong, because these modules need lock tokens, not
lock token UUIDs.
> At the moment, this is nothing more than calling apr_uuid_get(). But
> maybe we'll want to change that someday, make it fancier, use the
> repos UUID + counter, whatever. So a shared routine would be nice.
> We could certainly make a function in libsvn_fs to do this; but then
> wouldn't it be a layering violation for fs_base or fs_fs to "call up"
> into the fs dispatch library?
No, why? They don't call up into the fs dispatch library, they call into
a fs utilities library. Which doesn't have to be in a separate shared
lib, of course, it can live in libsvn_fs, which happens to be the only
part of the FS layer that implements a public API that other modules can
use. It seems the logical place.
(n.b.: I don't see the term "layering" to mean "calls go only from
higher to lower layers" -- callbacks do exactly the reverse. And you can
look at the fs_util module as a different logical entity that lives side
by side with fs, fs_fs, fs_base and mod_dav_svn -- but just happens to
physically sit in libsvn_fs.)
Ah yes Unless circular dependencies are a problem, in which case we'd
need a separate shared lib anyway. They might be on Windows, who knows...
To unsubscribe, e-mail: firstname.lastname@example.org
For additional commands, e-mail: email@example.com
Received on Wed Dec 1 17:37:39 2004