Good news is that I’ve implemented NNG_OPT_SNDFD and NNG_OPT_RCVFD.
The bad news is that I’m not thrilled with the extra levels of indirection
I’ve had to do have done to performance — the context switching between
threads has a measurable impact — cutting my performance into about half of
what it was before.
I have some ideas for how to fix this — including disabling notifications
for cases where the caller hasn’t asked for them, and avoiding one more
context switch even when I do notifications if the socket is buffered.
(Unbuffered sockets have to endure some pain — not sure how I can help
them.)
Anyway, optimizations aside, I’m reasonably comfortable with the API now,
and all of the critical functionality required for the compatibility layer
is now implemented. I had hoped to have that layer implemented tonight,
but its taken a while to debug the various event stuff on the different
platforms.
I’ll probably focus on finishing this functionality before I go back to
work out the context switch related issues.
- Garrett