This part is similar to what I'm working on now. Instead of having both socket() and createReusePortSocket(), I will merge them into listenSocketFactory() and the factory will provide socket either reusing port or shared. 