You are not logged in.
Pages: 1
AB,
The latest commits show that epoll is coming to the mORMot - very exciting!
I assume this will effect the websocket connections as well at some point ...
You are probably already aware of this WSAPoll issue, but just in case:
Offline
@Leslie7,
The excitement is coming from the expected performance improvement, right?
Delphi XE4 Pro on Windows 7 64bit.
Lazarus trunk built with fpcupdelux on Windows with cross-compile for Linux 64bit.
Offline
Yes, I know the WSAPoll issue, but what is planned is that this issue is not a big issue: AFAIR it appears only if the socket is broken before added to the poll, which is easy to circumvent.
The hardest part was to abstract all polling techniques: select, poll, epoll, depending on the system it runs on.
In short, we have designed an abstract class as a wrapper around epoll, then emulate it using select or poll.
Select is broken under POSIX (only up to 1024 file descriptors are possible), and WSAPoll is not available before Vista - here why we also implemented select... but with very poor performance, for sure.
It results in something like a KISS pure-pascal libevent/libev/libuv cross-platform set of classes.
Now I'm implementing:
- buffer-based polled reads, able to maintain a lot of connections with minimal resource overhead (to be used for frame-based protocols, like WebSockets or most IoT communication);
- class-based polled reads, to follow more complex HTTP format.
Online
@ab,
Delphi-Cross-Socket: https://github.com/winddriver/Delphi-Cross-Socket
Offline
Scalable HTTP/S and TCP client sockets for the cloud
https://github.com/grijjy/DelphiScalableClientSockets
Offline
libuv FPC wrapper:
https://github.com/zamronypj/libuv-pas
Delphi XE4 Pro on Windows 7 64bit.
Lazarus trunk built with fpcupdelux on Windows with cross-compile for Linux 64bit.
Offline
Pages: 1