at:tutorial:distribution
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revisionNext revisionBoth sides next revision | ||
at:tutorial:distribution [2009/01/28 17:56] – elisag | at:tutorial:distribution [2009/01/29 10:33] – elisag | ||
---|---|---|---|
Line 134: | Line 134: | ||
</ | </ | ||
- | The '' | + | The '' |
< | < | ||
Line 168: | Line 168: | ||
====Leasing patterns==== | ====Leasing patterns==== | ||
- | < | ||
- | Under construction. | ||
- | </ | ||
As is the case in other leasing mechanisms, determining the proper lease renewal period is not straightforward and may even depend on system parameters such as the number of clients. In AmbientTalk, | As is the case in other leasing mechanisms, determining the proper lease renewal period is not straightforward and may even depend on system parameters such as the number of clients. In AmbientTalk, | ||
- | The first variant is a renew-on-call leased reference which automatically prolongs the lease upon each method call received | + | The first variant is a //renew-on-call// leased reference which automatically prolongs the lease upon each method call received |
- | by the remote object. In other words, as long as the client uses the remote object, the leased reference is transparently renewed by the interpreter. | + | by the remote object. In other words, as long as the client uses the remote object, the leased reference is transparently renewed by the interpreter. |
< | < | ||
Line 188: | Line 185: | ||
</ | </ | ||
- | Similar to lease:for: , this construct takes as parameters a time interval (in milliseconds) and the remote object to which it grants access, and returns a leased | + | Similar to '' |
- | The second variant is a single-call leased reference which automatically revokes the lease upon performing a successful method call on the remote object. | + | The second variant is a //single-call// leased reference which automatically revokes the lease upon performing a successful method call on the remote object. |
< | < | ||
Line 199: | Line 196: | ||
</ | </ | ||
- | Similar to its other two counterparts | + | Similar to the other two constructs, '' |
- | expires after the remote object receives a single message. However, if no message has been received within the specified time interval, the leased reference also expires. | + | |
====Integrating leasing with future-type message passing==== | ====Integrating leasing with future-type message passing==== | ||
Line 206: | Line 202: | ||
Single-call leases are useful for objects adhering to a single call pattern, such as callback objects. Callback objects are often used in asynchronous message passing schemes in order for remote object to be able to return values. These callback objects are typically remotely accessed only once by remote objects with the computed return value. In AmbientTalk, | Single-call leases are useful for objects adhering to a single call pattern, such as callback objects. Callback objects are often used in asynchronous message passing schemes in order for remote object to be able to return values. These callback objects are typically remotely accessed only once by remote objects with the computed return value. In AmbientTalk, | ||
- | We have integrated leasing into futures by parameter-passing a future attached to an asynchronous message via a singe-call lease which either expires due to a timeout or upon the reception of the computed return value. The timeout for the implicit single-call lease on a future can be set by annotating the asynchronous message with a @Due annotation as follows: | + | We have integrated leasing into futures by parameter-passing a future attached to an asynchronous message via a singe-call lease which either expires due to a timeout or upon the reception of the computed return value. The timeout for the implicit single-call lease on a future can be set by annotating the asynchronous message with a '' |
< | < | ||
Line 217: | Line 213: | ||
</ | </ | ||
- | If the future is resolved, the session variable stores a leased object reference to the remote session object. | + | If the future is resolved, the session variable stores a leased object reference to the remote session object. |
< | < | ||
- | Note that specifying a catch: block for the TimeoutException is equivalent to installing a when: | + | Note that specifying a '' |
</ | </ | ||
====Importing leased object references==== | ====Importing leased object references==== | ||
- | Similar to futures, leased object references have been built reflectively on top of AmbientTalk. | + | Similar to futures, leased object references have been built reflectively on top of AmbientTalk. |
To use the language constructs for leased references, you should import the leasedref module as follows: | To use the language constructs for leased references, you should import the leasedref module as follows: | ||
- | import /.at.lang.leasedref; | + | < |
+ | import /.at.lang.leasedrefs; | ||
+ | </ | ||
< | < | ||
- | leasedref | + | leasedrefs |
</ | </ | ||
at/tutorial/distribution.txt · Last modified: 2009/01/30 16:13 by tvcutsem