[MudNet-Announce] Progress update #2
Robby Griffin
rmg@MIT.EDU
Sat Jan 20 04:02:01 2001
Thanks for bearing with us during construction. I'm pleased to announce
that we are on schedule so far. Tonight I committed the first round of
i/o changes to the development tree, and we'll spend the next several
days testing and refining that. This work is all to be deployed in
February; the fact that we've made changes in the development tree does
not mean that there are any changes in the running bot or that an update
beyond 3.3b softcode is required yet.
To give you an idea of what's involved, here's how a relay command such
as mnwho works now:
Player1@World1 types 'mnwho world2'.
World1's globals pemit an RWHOrequest to MudNet on World1.
The bot parses the request and sends off a DOING command to World2,
surrounded with a couple of @pemits.
The bot listens for the first pemitted string, meanwhile doing nothing
else.
After receiving the start string, the bot begins relaying lines from
World2 back to Player1@World1, and stops when it receives the end
string.
Notice that if World2 doesn't respond quickly, the bot sits there listening
to it, blocking on all worlds, while other requests pile up. After the
redesign:
Player1@World1 types 'mnwho world2'.
World1's globals pemit an RWHOrequest to MudNet on World1.
The bot parses the request, sends off a request trigger to World2
(I'll provide more API details closer to release time), and goes
back to listening for requests on any world.
Softcode triggered on World2 can decide whether to run the DOING command
or not; if it is run it'll be surrounded with a couple of @pemits that
look a lot like ordinary R-requests; if it's denied, the softcode will
send back a permission-denied message that also looks a lot like an
ordinary R-request.
The bot parses one of these types of requests from World2 and relays
the result back to Player1@World1 thru a response trigger on World1.
In this design, the bot can handle requests asynchronously, blocking on
only those worlds where relay results are awaited at any given time.
This will generally mean lower latency.
As a bonus all the commands except @trigger, roughly speaking, have been
pushed out of the bot and into the softcode. The difference is so dramatic
that I'm labeling the remaining interface as an API, and writing up a guide
for people who want to port or customize the softcode. I may need to add a
couple days to the schedule, for documentation.
--Alierak, sleep-deprived as usual