Routing
- Routing
__*** Please note TELSTAR as an application is still under development and subject to change. ***__
Routing in Telstar is handled by an asynchromous process that allows for routing to occur whilst pages are being rendered. This means that is a user of the system can navigate quickly to a desired page by simply entering the page number one character after another. Each successive key press with start the rendering of a page but as each subsequent key is pressed, the rendering is cancelled and the foloowing page is rendered and so on until the desired page is rendered.
for example simply pressing *2 2 2* from the main index page (Page 0a) of the Telstar service will result in the Guardians UK News being displayed. For this to work correctly, all intermediary pages must be present. Creating routes through the system such as the one described above, should be the aim when designing a videotex system.
Users can jump directly to a known page by entering the page number using the format **page#*, for example, entering **92#* into the current Telstar system will direct you to page 92, the graphical *'Don't Panic'* test page.
- Page Numbering
Pages are defined by a single integer number between *0* and *999999999*. Each page can have upto 26 frames denoted by the suffix *a-z(. Therefore a fram denoted by for example *222b* would be the second frame of page 222. The maximum page number length is 9 digits plus the frame suffix.
- Zero Page Routing
In cases where a page needs more than 26 frames such as a large Telesoftware program or where large numbers of news articles extends beyond frame *z*, a sequence of *Zero Page Routing* takes place. For example if a Guradian news article starting on frame *222z* needed a continuation frame, the frame *2220a* should be used. If articles continued to frame *2220z* and needed further continuation frames, frame 22200a should be used and so on to the maximum page number length (see above).
- Default Page Routing
When frames are created an optional routing table can be assigned to the frame [Frames in More Detail](see frames.md). this routing table defines what page is selected when a user enters a digit into their videotex client software.
If a routing table is not defined within the frame, the default routing will be used, for example, pressing 6 whilst on page 222 will try and navigate to page 2226, if this page does not exist, this will return a Page Not Found, similarly pressing 7 will try and navigate to 2227 and so on.
The default routing table for page 222 would effectively be:
[2220, 2221, 2222, 2223, 2224, 2225, 2226, 2227, 2228, 2229, 222]
Each entry represents a key press for example if the user presses a *0* then element zero is used and the user is routed to page 2220, entering a *1* would route the user to page 2221 etc. The last element, element 10, represents the routing when the *#* (Return Key) is entered.
In most cases the default routing will work quite well, however, when that isn't the case, the table can be created or updated manually as required.
Forexample lets assume you have only 2 menu items, 1 and 2, and you want these to go to pages 1001 and 1002 instead of 2221 and 2222. The manually created routing table should look like this...
[1001, 1002, 2222, 2223, 2224, 2225, 2226, 2227, 2228, 2229, 222]
If a use presses 3 the system will try and navigate to page 2223 which presumably will not exist (otherwise there would be a menu item for it) and return Page Not Found which is the correct behaviour. In other words simply definine the standard routing table with any changes that are required.
- Redirection
There exists a special frame type that will allow a frame to redirect to another frame, for example the following frame redirects from page *0a* to *9a*.
{ "pid": { "page-no": 0, "frame-id": "a" }, "redirect": { "page-no": 9, "frame-id": "a" }, "visible": true }
See [Frames in More Details](frames.md) for more information.