at:tutorial:appendix
                Differences
This shows you the differences between two versions of the page.
| Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
| at:tutorial:appendix [2009/01/29 21:24] – adding elisag | at:tutorial:appendix [2024/10/03 22:19] (current) – fixing path to exceptions module elisag | ||
|---|---|---|---|
| Line 1: | Line 1: | ||
| ====== Appendix: Libraries ====== | ====== Appendix: Libraries ====== | ||
| - | In the appendix, we explain useful libraries available to the AmbientTalk/ | + | In the appendix, we explain useful libraries available to the AmbientTalk/ | 
| + | |||
| + | The Ambientalk standard library ('' | ||
| ===== Unit Testing Framework ===== | ===== Unit Testing Framework ===== | ||
| Line 27: | Line 29: | ||
| This will execute all '' | This will execute all '' | ||
| - | Like in JUnit and SUnit, it is possible to define two methods named '' | + | Like in JUnit and SUnit, it is possible to define two methods named '' | 
| ==== Assertions ==== | ==== Assertions ==== | ||
| Line 83: | Line 85: | ||
| It is also possible to use '' | It is also possible to use '' | ||
| - | < | + | < | 
| - | See [[distribution# | + | See the [[distribution# | 
| </ | </ | ||
| Line 351: | Line 353: | ||
| ===== Custom Exceptions ===== | ===== Custom Exceptions ===== | ||
| - | The module ''/ | + | The module ''/ | 
| < | < | ||
| Line 390: | Line 392: | ||
| ===== Language Extensions ===== | ===== Language Extensions ===== | ||
| - | The files in the '' | + | The files in the '' | 
| - | ==== Futures and Multifutures ==== | ||
| - | === Futures === | + | |
| + | |||
| + | =====Futures | ||
| + | |||
| + | ==== Futures ==== | ||
| The module ''/ | The module ''/ | ||
| Line 417: | Line 422: | ||
| </ | </ | ||
| - | Finally, the futures module also provides some auxiliary functions, of which '' | + | The '' | 
| + | |||
| + | === Auxilary functions in the futures module ==== | ||
| + | |||
| + | The futures module also provides some auxiliary functions, of which '' | ||
| < | < | ||
| - | when: (group: [ a<-m(), b<-n() ]) becomes: { |values| | + | when: (group: [ a<-m()@FutureMessage, b<-n()@FutureMessage | 
| def [aResult, bResult] := values; | def [aResult, bResult] := values; | ||
| ... | ... | ||
| Line 426: | Line 435: | ||
| </ | </ | ||
| - | === Multifutures === | + | Another useful auxilary function is '' | 
| + | |||
| + | < | ||
| + | future: { |return| | ||
| + | // some computation | ||
| + | return(val) | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | This is actually equivalent to the slightly more verbose code: | ||
| + | |||
| + | < | ||
| + | def [fut,res] := makeFuture(); | ||
| + | try: { // some computation | ||
| + | res.resolve(val); | ||
| + | } catch: Exception using: { |e| res.ruin(e) } | ||
| + | fut; | ||
| + | </ | ||
| + | |||
| + | ==== Multifutures | ||
| The module ''/ | The module ''/ | ||
| Line 467: | Line 495: | ||
| When the message sent to a multireference is annotated with @Due(t), the timeout is applied to the implicit multifuture, | When the message sent to a multireference is annotated with @Due(t), the timeout is applied to the implicit multifuture, | ||
| - | ==== Dynamic Variables ==== | + | |
| + | ===== Leased Object References ===== | ||
| + | |||
| + | The module ''/ | ||
| + | |||
| + | < | ||
| + | The implementation of leased object references actually consists of two files: ''/ | ||
| + | </ | ||
| + | |||
| + | The '' | ||
| + | * '' | ||
| + | * '' | ||
| + | * '' | ||
| + | |||
| + | Variations of these constructs are also provided to allow developers to specify the renewal time interval in renew-on-call leased references and the name(s) of the method(s) which trigger expiration of a single-call leased reference. | ||
| + | |||
| + | The '' | ||
| + | |||
| + | < | ||
| + | renew: leasedRef for: interval; // renews a lease | ||
| + | revoke: leasedRef; // revokes a lease | ||
| + | leaseTimeLeft: | ||
| + | when: lease expired: {...}; // trigger a closure when the lease expires | ||
| + | </ | ||
| + | |||
| + | The '' | ||
| + | |||
| + | Finally, the '' | ||
| + | |||
| + | |||
| + | |||
| + | ===== TOTAM ===== | ||
| + | |||
| + | The module ''/ | ||
| + | |||
| + | Please have a look to [[: | ||
| + | |||
| + | ===== Dynamic Variables | ||
| The module ''/ | The module ''/ | ||
| Line 494: | Line 559: | ||
| You can find more usage examples of dynamic variables in the unit test included in the file '' | You can find more usage examples of dynamic variables in the unit test included in the file '' | ||
| - | ==== Ambient References ==== | + | ===== Ambient References | 
| Ambient references are defined in the module ''/ | Ambient references are defined in the module ''/ | ||
| Line 508: | Line 573: | ||
| Ambient references ship with two so-called " | Ambient references ship with two so-called " | ||
| - | ==== Structural Types ==== | + | ===== Structural Types ===== | 
| The module ''/ | The module ''/ | ||
| Line 545: | Line 610: | ||
| More usage examples of structural types can be found in the unit test defined in the file '' | More usage examples of structural types can be found in the unit test defined in the file '' | ||
| - | ==== Traits ==== | + | ===== Traits | 
| The module ''/ | The module ''/ | ||
| Line 578: | Line 643: | ||
| The files in the '' | The files in the '' | ||
| + | |||
| ==== Timing Utilities ==== | ==== Timing Utilities ==== | ||
| Line 601: | Line 667: | ||
| The timer module also defines a function '' | The timer module also defines a function '' | ||
| - | The timer module defines | + | Finally, there is a variant | 
| + | |||
| + | < | ||
| + | def testAsyncNearbyPlayerReply(){ | ||
| + | def nearbyPlayers := // search 2 nearby player orjbects; | ||
| + | // wait a bit so that there are the 2 members. | ||
| + | when: 2.seconds elapsedWithFuture: | ||
| + | self.assertEquals(2, | ||
| + | } | ||
| + | }; | ||
| + | </ | ||
| ==== Logging Framework ==== | ==== Logging Framework ==== | ||
| Line 622: | Line 699: | ||
| ==== Object Inspector ==== | ==== Object Inspector ==== | ||
| - | The module ''/ | + | The module ''/ | 
| < | < | ||
| - | import /.at.support.inspector; | + | import /.demo.inspector; | 
| inspect(o); | inspect(o); | ||
| </ | </ | ||
at/tutorial/appendix.1233260693.txt.gz · Last modified:  (external edit)
                
                