The GUI retrieves a HyperLink from a user's action. LinkAccessor uses this HyperLink to locate the destination node(s). Each HyperLink comes with a default Protocol. LinkAccessor can use this Protocol to 'access' the destination HyperComponent(s). The 'access' can be, but not limited to, a read, write, or query operation.
A Protocol contains the low level mechanism to access HyperComponents. Examples of Protocol are HttpProtocol and FileProtocol. HttpProtocol can access a HTTP server. FileProtocol deals with local file access. A Protocol needs a Request Command object [ralph] for execution. Request contains all the information needed by Protocol. As an example, HttpProtocol uses HttpRequest to access a Web server. HttpRequest has information like the host, path, port number and the search string. The Request object is filled up by LinkResolvers.
After LinkAccessor accesses the Hypertext through the Protocol, if a data stream is returned from the access, the stream is then sent to a StreamManager for further actions.
For example, hypertext applications that limit users on their degree of access to the HyperComponent need to check for a user's access code before the actual access occur. If these checks are implemented inside HyperLink, HyperApp needs to update all the existing links that have been instantiated when the user access mode is changed. This would be very expensive to do if many links exist. This would be very difficult to do if, by any chance, the HyperLink are shared. However, if LinkAccessor is used, only the LinkAccessor needs to be updated which doesn't have the above problem.
The above argument also applies to other hypertext system features such as locking,...