KLL as a cross-platform API

lxs@mac.com lxs at mac.com
Tue Apr 20 16:41:06 EDT 2004


On Apr 20, 2004, at 2:41 PM, Sam Hartman wrote:

>>>>>> "Miro" == Miro Jurisic <meeroh at meeroh.org> writes:
>
>>> - All these functions need a KLL context argument.
>     Miro> What problem are you trying to solve with the "add a context
>     Miro> argument to all APIs" silver bullet?
>
> Extensibility and thread safety.  I believe we've already decided to
> do so.
>
> Alexis has decided that krb5 was wrong to require every function to
> take a context; functions that take objects already having contexts
> will not take contexts.

To clarify, the new KLL API will be more like the CCAPI in terms of its 
context handling.  In the CCAPI, you create a context for the API and 
then you create types using that context and manipulate the types 
without further needing the context.

Since all KLL types are opaque except for strings, the types will 
contain internal copies of any necessary context information.  As a 
result, the developer won't be forced to pass the context around 
everywhere with the types, and they won't be tempted to pass NULL for 
the context in places where it isn't used by the implementation.

The types will be as object-like as I can make them.  The KLPrincipal 
and KLLoginOptions types are a good example of object-like opaque types 
and should be relatively easy to make thread-safe.  The favorite realms 
list part of the API is a good example of part of the API which is 
neither object-like nor possible to make thread safe.

Using an object-like API design also has the added advantage that it is 
easy to write a well-designed object oriented shim around the library.


--lxs
-----------------------------------------------------------------------
Alexandra Ellwood                                           lxs at mit.edu
MIT Information Services & Technology           http://mit.edu/lxs/www/
-----------------------------------------------------------------------



More information about the krbdev mailing list