[Jaffa Software]



ActiveApps is a protocol allowing any application to talk, and control, another. Designed to be implentable by any Desktop task, it is a superset of other implementations such as Impulse, StrongHelp, ANT URL protocol and others. It is designed to allow commands to be transmitted from one machine to another, whether it be via a phone line, LAN or the Internet.

The standard is implemented by means of two WIMP messages:

These user messages are broadcast using Wimp_SendMessage to all tasks in a system. It is up to each task which receives the message to decide if it was relevant to it.

All WimpWorks applications are able to support the standard transparently, and also support one more additional method:

Exec <tokenised BASIC>
This will execute the tokenised BASIC string inside the application's code, this could be used, for instance, to control an application which doesn't supply an ActiveApps method for what you want to do. NB Certain commands which are insecure will not work.


Gateway allows ActiveApps messages to be distributed across between machines transparently to the application sending the application. The machines can be connected by null modem, TCP/IP, Econet etc.

ActiveApps messages are broadcast using Wimp_SendMessage. As all tasks receive the messages each task can pick and choose whether or not it is relevant to it. Gateway picks up on the "To" field and checks to see if it is of the form Task@machine.domain. If it is then it strips off the tail, modifies the "From" field to point back to the local machine, opens a connection to the copy of Gateway running on the remote machine and sends the message. The remote Gateway then rebroadcasts the new WIMP message which the remote task will pick up on.

As the "From" address has been modified to point back to the original machine, the remote client can simply respond to it without knowing where the machine is or the protocols necessary to communicate with it. This makes writing distributed applications very easy!

Gateway may also include a secure encryption option which will encrypt all the transfers between the two machines.

It will be fully configurable to only allow messages from certain domains/tasks or to automatically refuse a message based on the originating domain or task.

Gateway was under-development, but has since been paused. If there is interest, it could be finished. The implementation will be similar to the AATerm example shipped with WimpWorks. Another alternative would be to look at reimplementing it on top of ØMQ.