hide everything except push() inside SocketSessionForwarderHolder.
this will make the caller side much simpler. in particular, the caller now doesn't have to handle exceptions. connect() and close() can now be private. To handle various types of requests, the constructor is extended to take a message type, which will be used in the log message on failure. log message ID and description were made generic.
Showing with 80 additions and 59 deletions