I have posted this as a [GOODIE], but the definition for Goodies says:
'Goodies are usually short, no more than a few pages of code typically, and add or enhance only one or two specific items or capabilities.'
Since it is more than just a few pages of code, I've started with this page.
Design goal of the underlying communication stuff (this is the first app using it) has been to have a robust permanent connection between client and server. If the connection is lost
the server automatically restarts itself (default behavior);
only Smalltalk expressions and the result object are transmitted between client and server (no graphics, no mouse events, etc.);
only one socket connection;
should work with a slow connection, but I haven't tested this (I have upload speed of 128kBit and download of 768kBit with which it works well);
should be able to coexist with other server applications, since it wastes very less time while polling for commands.
"Change Set: RemoteCommander v1.1
Date: 14 September 2002
Author: Stephan Rudlof
Preconditions: Morphic, Squeak 3.2 (don't know what happens under 3.3)
This is a client/server application which allows to send ""Compiler evaluate: '...'"" commands to another Squeak.
You are just typing in Smalltalk code in a specialized RemoteCommandWorkspace running as client, which can then be evaluated remote at the server, together with sending back the result to the client (printIt, doIt, etc.).
This app may e.g. serve as a tool to control a Swiki from another host, since the server doesn't need much CPU time, while it's waiting for commands.
After filing in this changeset a window describing the next steps appears.
Tests:
It has worked
locally started, both images at my machine under Linux;
from my Linux machine to a host under Solaris far away, both client and server (btw: to see what happens, I've redirected the X output from far away to my machine -> damn slow, but it's sufficient for tests!).
Bugs:
almost no class comments;
after building such an application, refactoring is needed (though I'm always refactoring while I'm writing software);
no SUnitTests.
Notes:
This tool is realized with the 'normal' socket stuff: special thanks to the implementors of Nebraska, from which I have adapted much of it's client/server socket handling code.
It shouldn't be very hard to switch to Craig Latta's Flow implementation, but I haven't used it here.
History:
1.1 :
timeout for remote evaluations: controllable by RemoteCommandWorkspace menu!
refactoring: simplified server loop, cleaner Peer cleanup (release)