package org.limewire.rudp;
import org.limewire.nio.observer.TransportListener;
import org.limewire.rudp.messages.RUDPMessageFactory;
import org.limewire.rudp.messages.impl.DefaultMessageFactory;
/**
* Aggregates key RUDP classes. <code>DefaultRUDPContext</code> contains
* a {@link RUDPMessageFactory}, a {@link TransportListener},
* {@link UDPService}, {@link RUDPSettings} and a {@link MessageDispatcher},
* along with getters for each object.
*/
public class DefaultRUDPContext implements RUDPContext {
/** The MessageFactory RUDP should create messages from. */
private final RUDPMessageFactory messageFactory;
/** The TransportListener that should be notified when events are pending. */
private final TransportListener transportListener;
/** The UDPService that messages are sent through & udp data is learned from. */
private final UDPService udpService;
/** The dispatcher that messages are pumped through. */
private final MessageDispatcher messageDispatcher;
/** The settings that control the algorithm. */
private final RUDPSettings rudpSettings;
public DefaultRUDPContext() {
this(new DefaultMessageFactory(), new NoOpTransportListener(),
null, new DefaultMessageDispatcher(), new DefaultRUDPSettings());
}
public DefaultRUDPContext(RUDPMessageFactory factory) {
this(factory, new NoOpTransportListener(),
null, new DefaultMessageDispatcher(), new DefaultRUDPSettings());
}
public DefaultRUDPContext(TransportListener transportListener) {
this(new DefaultMessageFactory(), transportListener,
null, new DefaultMessageDispatcher(), new DefaultRUDPSettings());
}
public DefaultRUDPContext(UDPService udpService) {
this(new DefaultMessageFactory(), new NoOpTransportListener(),
udpService, null, new DefaultRUDPSettings());
}
public DefaultRUDPContext(RUDPSettings settings) {
this(new DefaultMessageFactory(), new NoOpTransportListener(),
null, new DefaultMessageDispatcher(), settings);
}
public DefaultRUDPContext(RUDPMessageFactory factory,
TransportListener transportListener,
UDPService udpService,
RUDPSettings settings) {
this(factory, transportListener, udpService, null, settings);
}
public DefaultRUDPContext(RUDPMessageFactory factory,
TransportListener transportListener,
UDPService udpService,
MessageDispatcher dispatcher,
RUDPSettings settings) {
this.messageFactory = factory;
this.transportListener = transportListener;
if(udpService == null)
this.udpService = new DefaultUDPService(dispatcher);
else
this.udpService = udpService;
this.messageDispatcher = dispatcher;
this.rudpSettings = settings;
}
/* (non-Javadoc)
* @see org.limewire.rudp.RUDPContext#getMessageFactory()
*/
public RUDPMessageFactory getMessageFactory() {
return messageFactory;
}
/* (non-Javadoc)
* @see org.limewire.rudp.RUDPContext#getTransportListener()
*/
public TransportListener getTransportListener() {
return transportListener;
}
public UDPService getUDPService() {
return udpService;
}
public MessageDispatcher getMessageDispatcher() {
return messageDispatcher;
}
public RUDPSettings getRUDPSettings() {
return rudpSettings;
}
/** A NoOp TransportListener. */
private static final class NoOpTransportListener implements TransportListener {
public void eventPending() {
}
}
}