[Oberon] AosTCPServices on WinAos
Felix Friedrich
friedrich at gsf.de
Mon Aug 11 16:18:54 CEST 2003
Hello Dan,
>I'm new in area, and I'm discovering the wonderful world of Oberon. I like
>it so much, that I intend to switch here all me future projects. I should
>like to write some server code running on both Aos and WinAos. I'm trying
>to run this on WinAos (it runs fine on Aos) but it fails on
>AosTCPServices.OpenService:
Cool, I like Oberon/Aos very much, too.
The network modules contained in the WinAos system are to be handled with a
lot of care. They are coded quick and very dirty the following way:
- moved Win32.NetSystem.Mod to Win32.AosWinsock.Mod,
- new modules Win32.AosTCP.Mod, Win32.AosDNS.Mod,
Win32.AosUDP.Mod, Win32.AosDHCP.Mod available,
they use the pseudo network driver module AosWinsock.
AosWinsock needs module Oberon, this is a temporary patch to make
AosTCP etc. running.
- Win32.NetSystem.Mod replaced by Aos.NetSystem.Mod
i.e. a lot of code from the "old" PlugIn Oberon system has been reused to
make the basic network drivers in WinAos running. Actually, that's the
wrong way round and a need for completely newly coded network modules in
the WinAos system is more than obvious. But, unfortunately, I don't have
the time (and a lack of experience regarding network stuff) to clean up the
code.
Nevertheless I have a patch for the reported problem.
In Module Win32.AosTCP.Mod replace the method Connection.Accept by the
following (the first line had been misssing):
PROCEDURE Accept*( VAR client: Connection; VAR res: LONGINT );
VAR resi: INTEGER;
BEGIN
IF client=NIL THEN NEW(client) END;
AosWinsock.Accept( c, client.c, resi );
IF resi = 0 THEN res := Ok ELSE res := unknown END;
IF trace THEN
AosOut.Enter; AosOut.String( "AosTCP.Accept :" ); AosOut.String(
"(" ); AosOut.Int( res, 1 );
AosOut.String( ")" ); AosOut.Exit
END;
END Accept;
With the modified method, your module compiles and runs without the TRAP.
But I can't tell if the connections really run.
If you are deeply interested in the Aos network system, I recommend you to
have a look at the modules AosNet, AosTCP, AosUDP and one of the network
drivers, for example AosIntel8255x.Mod in the (native) distribution of Aos
(see http://www.bluebottle.ethz.ch/dllatest.html) . Having understood how
these module work you might have a second look at the construction in the
WinAos system, where the network facilities are more or less subsumed in
Win32.AosWinsock.Mod and only accessed via Win32.AosTCP.Mod,
Win32.AosDNS.Mod, Win32.AosUDP.Mod etc.
Felix.
--
Felix Friedrich
Institut für Biomathematik und Biometrie
GSF - Forschungszentrum für Umwelt und Gesundheit, GmbH
Ingolstädter Landstraße 1, D-85764 Neuherberg
Tel: ++49 89 3187 2436
email: friedrich at gsf.de
--
More information about the Oberon
mailing list