/* 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!). */