committed reorganization of Win32 event handling

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
2 messages Options
Reply | Threaded
Open this post in threaded view
|

committed reorganization of Win32 event handling

Paolo Bonzini-2
I finally finished the reorganization of sysdep code I started last weekend:

1) last weekend I separated the sysdep code into various pieces in the
sysdep/ directory, organized by "topic" and OS, and duplicated events.c
(previously considered non-system-dependent, but actually relying
heavily on POSIX features) into sysdep/posix/events.c and
sysdep/win32/events.c.

2) now I rewrote sysdep/win32/events.c to use native Win32 APIs; so I
was also able to figure out the common parts, and move them back to
libgst/events.c.

The Win32 code is still not very commented and not very readable; the
approach is totally different from POSIX because it signals Smalltalk
semaphores from a separate thread rather than from signal handlers.  In
the future, however, this may turn out to be the way to go even for
POSIX (via libevent)!

While I wrote the code independently, after the fact I noticed that
putty uses the same approach.  This cannot be bad.

3) at the same time, sockets became a bit more intertwined with the
event handling machinery, so I moved socket code into the main DLL.  You
will still have to load the Sockets.star package (it's just the C module
that is no more).

The good news are threefolded.  First, the POSIX code sees just
functions moving around; the actually code is basically untouched.  This
is good for stability.  Second, some very ugly code for Win32 (the
emulation of poll, and signalx.*) goes away: the net effect is like -600
lines of code.  Third, despite extremely light testing, it is less buggy
than before---at least "Sockets.Socket microTest" works.

Besides including VisualGST, I think we're now feature-complete for 3.2.

Paolo


_______________________________________________
help-smalltalk mailing list
[hidden email]
http://lists.gnu.org/mailman/listinfo/help-smalltalk
Reply | Threaded
Open this post in threaded view
|

Re: committed reorganization of Win32 event handling

Dmitry Matveev
Great job!

2009/8/26, Paolo Bonzini <[hidden email]>:

> I finally finished the reorganization of sysdep code I started last weekend:
>
> 1) last weekend I separated the sysdep code into various pieces in the
> sysdep/ directory, organized by "topic" and OS, and duplicated events.c
> (previously considered non-system-dependent, but actually relying
> heavily on POSIX features) into sysdep/posix/events.c and
> sysdep/win32/events.c.
>
> 2) now I rewrote sysdep/win32/events.c to use native Win32 APIs; so I
> was also able to figure out the common parts, and move them back to
> libgst/events.c.
>
> The Win32 code is still not very commented and not very readable; the
> approach is totally different from POSIX because it signals Smalltalk
> semaphores from a separate thread rather than from signal handlers.  In
> the future, however, this may turn out to be the way to go even for
> POSIX (via libevent)!
>
> While I wrote the code independently, after the fact I noticed that
> putty uses the same approach.  This cannot be bad.
>
> 3) at the same time, sockets became a bit more intertwined with the
> event handling machinery, so I moved socket code into the main DLL.  You
> will still have to load the Sockets.star package (it's just the C module
> that is no more).
>
> The good news are threefolded.  First, the POSIX code sees just
> functions moving around; the actually code is basically untouched.  This
> is good for stability.  Second, some very ugly code for Win32 (the
> emulation of poll, and signalx.*) goes away: the net effect is like -600
> lines of code.  Third, despite extremely light testing, it is less buggy
> than before---at least "Sockets.Socket microTest" works.
>
> Besides including VisualGST, I think we're now feature-complete for 3.2.
>
> Paolo
>
>
> _______________________________________________
> help-smalltalk mailing list
> [hidden email]
> http://lists.gnu.org/mailman/listinfo/help-smalltalk
>


_______________________________________________
help-smalltalk mailing list
[hidden email]
http://lists.gnu.org/mailman/listinfo/help-smalltalk