blob: df2f47d82dbac0c222e274de7a455fa690411ef8 [file] [log] [blame]
dbus:
- could we do signal connection by nih_dbus_proxy_new? If it took an
interfaces list, that could point to auto-generated filter functions,
and these would be automatically hooked up and called when the signal
occurs
- binding tool needs to generate marshal functions for signals
- what if we want both proxy and object code in one source? is there a way
to just generate the arrays for both?
- properties need to be handled in some way
- async method calls with callback function
- could pass NULL callback to mean no reply expected
- need to set timeout and auto start flags somehow?
- binding tool needs to support structs
- binding tool needs to at least acknowledge variants
- rather than hard-coding the names of method and signal handler functions,
it might be nice to have some kind of dispatch table for them. The only
concern is that we'd end up looking up in the interface table to find
the marshaller then the dispatch table to get the handler function.
main:
- there's an argument for making the main loop more generic; having io,
watch, signal, child, timer, etc. just add main loop structs that
have a select() and handle() function - we'd then just have one per
timer, etc.
- we could do that using signalfd() and timerfd_*()
io:
- there's a couple of tricky tests left to do:
- nih_io_message_recv() with socket types other than PF_UNIX
- nih_io_message_recv() when recv() fails
- nih_io_watcher() with write error and free called
timers:
- sub-second timer resolution (since select can do it)
- monotonic and realtime (using timerfd?)
- calendar scheduled timers
watch:
- inotify already has an IN_ISDIR flag to let us know that we got an event
for a directory, so we don't really need to stat() it or pass a statbuf
around; except maybe for compatibility with the walk code.
- handle IN_Q_OVERFLOW in some sane manner, at least log it.
allocator/slab module
string table:
- as hash, but massively optimised for tables of strings