Routing

From Telstar Wiki
Jump to navigation Jump to search

Navigation

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 will start the rendering of a page but as each subsequent key is pressed, the rendering is cancelled and the following 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.

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 frame 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 a large number of news articles extends beyond frame z, a process 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, (see Frames) 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 message, similarly pressing 7 will try and navigate to 2227 and so on. In most cases the default routing will work well, however, when that isn't the case, the table can be created or updated manually as required.

For example, 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. Note that when a # is entered, the priority is that a follow on frame will always be selected if one exists.

For example 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 define 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 for more information on frame redirects.