Requests
Within SST, normal Smalltalk message sends and replies are treated as instances of the classes SstRequest and SstReply (subclasses of SstAbstractRequest), respectively. Both requests and replies contain an indication of the message receiver, a selector, and the arguments for the message. Message objects also have an info table, which is used to tag messages with system and application-level information. The info table is much like a dictionary though it is recommended that only simple objects such as immediates or immutables be used as keys. The values may be any object but note that no special steps are taken during their marshaling. That is, if they are mutable, they may be passed as references.
SstRequest objects embody a Smalltalk message being sent. In addition to the slots standard receiver, selector, arguments slots, they maintain a replyReceiver. When a request is sent, this field may have one of the following settings which define how the result of the request is handled.
nil
Indicates that no reply is required so the sender need not wait.
0
The reply value is required but let the system automatically generate a location to hold the reply when it comes. The sender can wait at this location for the value. (This is the default.)
Non-zero number
Use the reply location identified by the given number as the location to store the reply. The sender can wait at this location for the value.
Replies are treated largely as requests to return a value to the sender. That is, they are much the same as requests but are somewhat under-the-hood. They are simply messages sent to the specified reply receiver where the selector is typically sstSetValue: and the single argument is the value being returned.
Last modified date: 01/29/2015