libasyncio: (reinhard) updated ideas.txt from libsimpleio.
[libasyncio] / ideas.txt
1 ideas/todo libasyncio
2 ------------------------
3
4 name
5 -----
6 rename from libsimpleio to libasyncio
7 don't use namespace i2n
8 use namespace asyncio
9
10
11 smaller refactoring
12 -----------
13 remove dependencies to libi2ncommon
14 backend in separate file
15 break backend::doOneStep in 4 functions
16 document reason for ptrlist: keeps iterators valid during loops which do inserts/deletes
17 separate ptrlist
18 protect ptrlist against evil usage (e.g. forbid or overload erase, push_back, insert,...)
19 separate MilliTime
20 separate pollfd, maybe encapsulate the pollfd-struct instead of deriving from it
21 separate polldatacluster
22 document that timerbase is always based on  monotonic clock, getrealwhentime converts the time live
23 document handling of error-cases, m_errno (e.g. mask ENOTSOCK for non-socket fds)
24 provide simple replacements for system() and pipestream using simpleio and timeouts
25
26 bigger refactoring
27 ------------------
28 put iolist, timerlist & child-handling into backend to reduce the usage of global objects
29 make IOImplementations require a link to the backend they are used with
30
31 ideas
32 -----
33 offer a common io-client or io-server, abstracting out the real communication channel used.
34 makes it possible to switch between ways of communication at runtime
35 maybe filter-interface offers this functionality?
36
37 boost::asio
38 -----------
39 feature comparison to boost::asio
40 interface/usage comparison, what is more easy to use for our usecase?
41 long-term: merge with boost::asio, maybe with additional lib or keep it a separate project?
42
43 glue_t2n
44 --------
45 don't call doOneStep from within the fill_buffer()-variants
46 - for the server-variants not that hard if you require that command_server::handle will be called on every socket-event
47 - for the client: needs callback-interface on t2n-side, need to think about it