A warrant is a right to use a service.
Two of our hello world examples have a client netlet and a server netlet; the client gets and displays the message from the server netlet. The clients have warrants which allow them to use a hello world service.
Another way to think of a warrant is that it is evidence of a contract. If a contract has been arranged (on- or off-line) then a warrant will result so that the service can be used and the contract fulfilled.
When a client netlet wants to use a service it presents its warrant to the node which then finds and binds the server netlet. On binding, a service session is created. In fact, service sessions can only be created though warrants.
Of course, for a node to use a warrant to find a service the warrant
needs to contain either a descriptor or a URL reference of where to
find that descriptor--Figure .
So to make use of a service, a netlet needs only a warrant. This contains
everything a node needs to find and bind a service, however indirectly.
![]()
|
![]()
|
To recap: a descriptor contains netlet code, or a URL for netlet code, plus an initialisation object. A warrant contains a descriptor or a URL for a descriptor.
A warrant is not just a general right to use a service--it is very
likely to be limited for the terms of the particular contract for
which it was issued. Two netlets may have warrants to use a service,
but one may be time-limited, and another may be resource limited.
That's up to whoever arranged the contract. In Figure
different warrants for the same service allow their holders access
only to their area of that service.
The agreements that warrants are based on are key to Jtrix, because nothing can execute without explicit rights to do so. Moreover, all resources consumed (bandwidth to load the netlet, CPU time and memory to run it, disk space to store it, etc) must be accounted for and, almost certainly, paid for.
Nik Silver 2002-03-09