blob: 9770546f821b3adf2598e5239907902d09ae3217 [file] [log] [blame]
/* TODO(benh): Improve link/connection management. For example, make
links be about sockets. Then see whether or not already connected
sockets can be used for sending a message back (without opening a
new socket first). */
/* TODO(benh): When a link fails, try and reconnect a configurable
number of times before you just assume the link is dead. */
/* TODO(benh): Fix link functionality (processes need to send
process_exit message since a dead process on one node might not
know that a process on another node linked with it). */
/* TODO(benh): What happens when a remote link exits? Do we close the
socket correclty?. */
/* TODO(benh): Handle/Enable forking. */
/* TODO(benh): Use multiple processing threads (do process affinity). */
/* TODO(benh): Better error handling (i.e., warn if re-spawn process
instead of just returning bad pid). */
/* TODO(benh): Use different backends for files and sockets. */
/* TODO(benh): Allow messages to be received out-of-order (i.e., allow
someone to do a receive with a message id and let other messages
queue until a message with that message id is received). */
/* TODO(benh): LinkManager::link and LinkManager::send are pretty big
functions, we could probably create some queue that the I/O thread
checks for sending messages and creating links instead ... that
would probably be faster, and have less contention for the mutex
(that might mean we can eliminate contention for the mutex!). */