package org.prevayler.foundation.network; import java.io.IOException; import java.util.Collections; import java.util.HashMap; import java.util.Map; /** * Stubborn Network keeps reconnecting sockets should they fail. * Lets UnknownHostException pass back to caller (not much can do if the * hostname / IP Address is wrong). */ public class StubbornNetworkImpl extends BaseNetworkImpl implements StubbornNetwork { private final Map _sessionsInService; public StubbornNetworkImpl(){ super(); _sessionsInService=Collections.synchronizedMap(new HashMap()); } public ObjectReceiver newReceiver( String ipAddress, int port, ObjectReceiver client) throws IOException { return new StubbornClientReceiverImpl(this,ipAddress,port,client); } public ObjectReceiver newReceiver( Service service, ObjectSocket socket) throws IOException { SessionsManager sessionsManager=getSessionManager(service); return new StubbornServerReceiverImpl(service,socket,sessionsManager); } private SessionsManager getSessionManager( Service service){ SessionsManager sessionsManager; sessionsManager=(SessionsManager)_sessionsInService.get(service); if (sessionsManager == null) { sessionsManager=new SessionsManagerImpl(); _sessionsInService.put(service,sessionsManager); } return sessionsManager; } public ObjectSocket newInstance( String ipAddress, int port) throws IOException { return new ObjectSocketImpl(ipAddress,port); } }