[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]

Re: [Libvir] PATCH: 5/10: public auth callback API

On Tue, Dec 04, 2007 at 04:06:32PM +0000, Daniel P. Berrange wrote:
> On Tue, Dec 04, 2007 at 10:46:50AM -0500, Daniel Veillard wrote:
> > On Tue, Dec 04, 2007 at 12:57:39PM +0000, Richard W.M. Jones wrote:
> > > Daniel P. Berrange wrote:
> > > > virConnectPtr           virConnectOpenAuth      (const char *name,
> > > > 						 virConnectAuthPtr auth,
> > > > 						 int flags);
> > > 
> > > I'm a fan of callers passing in the size of the structure (as they see 
> > > it).  Allows the structure to be expanded in future, and if done right 
> > > can allow both forwards and backwards compatibility.
> > > 
> > > cf: http://www.libvirt.org/html/libvirt-libvirt.html#virDomainInterfaceStats
> > 
> >   Hum, honnestly, that's not my preferred way. If you really think there
> > should be room for expansion, I would either:
> >    - add a version number to the structure and allocator/destructor
> >      functions as part of the API (prefered)
> This adds more complexity and the single sizeof(*auth) param IMHO.

  not really, I could argue that most users would prefer a function
to allocate the data needed, instead of doing the right malloc/sizeof/return
check themselve

> >    - add padding at tyhe end of the structure which could allow 
> >      a future growth
> > adding the size of the structure as the argument moves the complexity away
> > from the library implementor to the library user, 
> It doesn't really - the user just has to add  sizeof(*auth) as an arg and
> all the rest of the complexity is in the library internals.

  and I'm afraid they won't naturally do sizeof(*auth) and could very well
put a number in situ

> In fact it doesn't need to add any complexity, because we could make it a
> compile time macro
>   #define virConnectOpenAuth(name,auth,flags) virConnectOpenAuth(name,auth,sizeof(*auth),flags)

  Okay except I really prefer macros all uppercase, even if I see why you
would do this. It's not a function anymore, you could hide or expose it, 


Red Hat Virtualization group http://redhat.com/virtualization/
Daniel Veillard      | virtualization library  http://libvirt.org/
veillard redhat com  | libxml GNOME XML XSLT toolkit  http://xmlsoft.org/
http://veillard.com/ | Rpmfind RPM search engine  http://rpmfind.net/

[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]