www.riscos.com Technical Support:
The Broadcast Loader enables files to be effectively broadcast to multiple clients, effectively increasing Econet transport throughput. It works in the following way:
When a client requests a file from a file server, it first broadcasts a request onto the network to ask if any other clients are loading the same file. If no other client is loading it, then it proceeds to load the file itself from the file server as normal. If during the loading process other clients ask for the same file, then they are acknowledged by the first client, and they wait for the first client to finish loading the file after which it then broadcasts the file to all the waiting clients.
This module is not supplied as a standard part of RISC OS 2, but will run under it, and is available as a separate product.
The Broadcast Loader greatly reduces the time taken to load the same file or application to a number of users. To a first approximation, the performance of a system using the Broadcast Loader to load a long file to n Clients will be 2 × (time to load single copy) as opposed to n × (time to load single copy).
The Broadcast Loader works by intercepting some FileSwitch calls to NetFSEntry_File and dealing with them as appropriate. This is done using the SWI OS_FSControl (13) to return a pointer to the FileSwitch copy of the NetFS filing system control block, that has been modified to be non-relocatable. The Broadcast Loader then modifies the data pointed to so that when FileSwitch despatches calls to NetFSEntry_File they are in fact despatched to the Broadcast Loader first.
All of the Acorn file servers - Level 2, Level 3, FileStore and Level 4 - as well as the SJ Research MDFS products, are compatible with the Broadcast Loader.
Files are transmitted from the broadcast server to clients in chunks of approximately one thousand bytes with sequence numbers. If a client enters the transaction during the file transfer, or misses a packet due to transmission errors or other reasons, then requests for missing blocks are made and retransmissions made to complete the transaction. A system of timeouts and error messages is provided to ensure no lock-up or erroneous condition can occur.