MessageProcessor now takes a socket and optional output log file as constructor arguments instead of accepting them as parameters in each method