Class UdpTransport
- java.lang.Object
-
- org.apache.activemq.util.ServiceSupport
-
- org.apache.activemq.transport.TransportSupport
-
- org.apache.activemq.transport.TransportThreadSupport
-
- org.apache.activemq.transport.udp.UdpTransport
-
- Direct Known Subclasses:
MulticastTransport
public class UdpTransport extends TransportThreadSupport implements Transport, Service, Runnable
An implementation of theTransport
interface using raw UDP
-
-
Constructor Summary
Constructors Modifier Constructor Description protected
UdpTransport(OpenWireFormat wireFormat)
UdpTransport(OpenWireFormat wireFormat, int port)
Used by the server transportUdpTransport(OpenWireFormat wireFormat, SocketAddress socketAddress)
UdpTransport(OpenWireFormat wireFormat, URI remoteLocation)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected void
bind(DatagramSocket socket, SocketAddress localAddress)
protected DatagramChannel
connect(DatagramChannel channel, SocketAddress targetAddress2)
protected InetSocketAddress
createAddress(URI remoteLocation)
Creates an address from the given URIprotected CommandChannel
createCommandChannel()
protected CommandChannel
createCommandDatagramChannel()
protected DatagramHeaderMarshaller
createDatagramHeaderMarshaller()
protected SocketAddress
createLocalAddress()
Replayer
createReplayer()
Creates a replayer for working with the reliable transportprotected void
doStart()
protected void
doStop(ServiceStopper stopper)
ByteBufferPool
getBufferPool()
protected DatagramChannel
getChannel()
CommandChannel
getCommandChannel()
int
getDatagramSize()
InetSocketAddress
getLocalSocketAddress()
int
getMinmumWireFormatVersion()
X509Certificate[]
getPeerCertificates()
int
getPort()
protected String
getProtocolName()
protected String
getProtocolUriScheme()
int
getReceiveCounter()
Returns a counter which gets incremented as data is read from the transport.String
getRemoteAddress()
ReplayBuffer
getReplayBuffer()
ReplayStrategy
getReplayStrategy()
IntSequenceGenerator
getSequenceGenerator()
protected SocketAddress
getTargetAddress()
OpenWireFormat
getWireFormat()
Retrieves the WireFormat instance associated with this Transport instance.boolean
isReplayEnabled()
boolean
isTrace()
boolean
isUseLocalHost()
void
oneway(Object command)
A one way asynchronous sendvoid
oneway(Object command, SocketAddress address)
A one way asynchronous send to a given addressprotected String
resolveHostName(String host)
void
run()
reads packets from a Socketvoid
setBufferPool(ByteBufferPool bufferPool)
protected void
setChannel(DatagramChannel channel)
void
setCommandChannel(CommandDatagramChannel commandChannel)
Sets the implementation of the command channel to use.void
setDatagramSize(int datagramSize)
void
setMinmumWireFormatVersion(int minmumWireFormatVersion)
void
setPeerCertificates(X509Certificate[] certificates)
Sets the certificates provided by the connected peer.void
setPort(int port)
Sets the port to connect onvoid
setReplayBuffer(ReplayBuffer replayBuffer)
void
setReplayEnabled(boolean replayEnabled)
Sets whether or not replay should be enabled when using the reliable transport.void
setReplayStrategy(ReplayStrategy replayStrategy)
Sets the strategy used to replay missed datagramsvoid
setSequenceGenerator(IntSequenceGenerator sequenceGenerator)
void
setTargetEndpoint(Endpoint newTarget)
We have received the WireFormatInfo from the server on the actual channel we should use for all future communication with the server, so lets set the target to be the actual channel that the server has chosen for us to talk on.void
setTrace(boolean trace)
void
setUseLocalHost(boolean useLocalHost)
Sets whether 'localhost' or the actual local host name should be used to make local connections.String
toString()
-
Methods inherited from class org.apache.activemq.transport.TransportThreadSupport
getStackSize, isDaemon, setDaemon, setStackSize
-
Methods inherited from class org.apache.activemq.transport.TransportSupport
asyncRequest, checkStarted, doConsume, getTransportListener, isConnected, isDisposed, isFaultTolerant, isReconnectSupported, isUpdateURIsSupported, narrow, onException, reconnect, request, request, setTransportListener, updateURIs
-
Methods inherited from class org.apache.activemq.util.ServiceSupport
addServiceListener, dispose, isStarted, isStopped, isStopping, postStop, preStart, removeServiceListener, start, stop
-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
-
Methods inherited from interface org.apache.activemq.transport.Transport
asyncRequest, getTransportListener, isConnected, isDisposed, isFaultTolerant, isReconnectSupported, isUpdateURIsSupported, narrow, reconnect, request, request, setTransportListener, updateURIs
-
-
-
-
Constructor Detail
-
UdpTransport
protected UdpTransport(OpenWireFormat wireFormat) throws IOException
- Throws:
IOException
-
UdpTransport
public UdpTransport(OpenWireFormat wireFormat, URI remoteLocation) throws UnknownHostException, IOException
- Throws:
UnknownHostException
IOException
-
UdpTransport
public UdpTransport(OpenWireFormat wireFormat, SocketAddress socketAddress) throws IOException
- Throws:
IOException
-
UdpTransport
public UdpTransport(OpenWireFormat wireFormat, int port) throws UnknownHostException, IOException
Used by the server transport- Throws:
UnknownHostException
IOException
-
-
Method Detail
-
createReplayer
public Replayer createReplayer() throws IOException
Creates a replayer for working with the reliable transport- Throws:
IOException
-
oneway
public void oneway(Object command) throws IOException
A one way asynchronous send- Specified by:
oneway
in interfaceTransport
- Throws:
IOException
-
oneway
public void oneway(Object command, SocketAddress address) throws IOException
A one way asynchronous send to a given address- Throws:
IOException
-
toString
public String toString()
-
setTargetEndpoint
public void setTargetEndpoint(Endpoint newTarget)
We have received the WireFormatInfo from the server on the actual channel we should use for all future communication with the server, so lets set the target to be the actual channel that the server has chosen for us to talk on.
-
isTrace
public boolean isTrace()
-
setTrace
public void setTrace(boolean trace)
-
getDatagramSize
public int getDatagramSize()
-
setDatagramSize
public void setDatagramSize(int datagramSize)
-
isUseLocalHost
public boolean isUseLocalHost()
-
setUseLocalHost
public void setUseLocalHost(boolean useLocalHost)
Sets whether 'localhost' or the actual local host name should be used to make local connections. On some operating systems such as Macs its not possible to connect as the local host name so localhost is better.
-
getCommandChannel
public CommandChannel getCommandChannel() throws IOException
- Throws:
IOException
-
setCommandChannel
public void setCommandChannel(CommandDatagramChannel commandChannel)
Sets the implementation of the command channel to use.
-
getReplayStrategy
public ReplayStrategy getReplayStrategy()
-
setReplayStrategy
public void setReplayStrategy(ReplayStrategy replayStrategy)
Sets the strategy used to replay missed datagrams
-
getPort
public int getPort()
-
setPort
public void setPort(int port)
Sets the port to connect on
-
getMinmumWireFormatVersion
public int getMinmumWireFormatVersion()
-
setMinmumWireFormatVersion
public void setMinmumWireFormatVersion(int minmumWireFormatVersion)
-
getWireFormat
public OpenWireFormat getWireFormat()
Description copied from interface:Transport
Retrieves the WireFormat instance associated with this Transport instance.- Specified by:
getWireFormat
in interfaceTransport
- Returns:
- the WireFormat in use.
-
getSequenceGenerator
public IntSequenceGenerator getSequenceGenerator()
-
setSequenceGenerator
public void setSequenceGenerator(IntSequenceGenerator sequenceGenerator)
-
isReplayEnabled
public boolean isReplayEnabled()
-
setReplayEnabled
public void setReplayEnabled(boolean replayEnabled)
Sets whether or not replay should be enabled when using the reliable transport. i.e. should we maintain a buffer of messages that can be replayed?
-
getBufferPool
public ByteBufferPool getBufferPool()
-
setBufferPool
public void setBufferPool(ByteBufferPool bufferPool)
-
getReplayBuffer
public ReplayBuffer getReplayBuffer()
-
setReplayBuffer
public void setReplayBuffer(ReplayBuffer replayBuffer) throws IOException
- Throws:
IOException
-
createAddress
protected InetSocketAddress createAddress(URI remoteLocation) throws UnknownHostException, IOException
Creates an address from the given URI- Throws:
UnknownHostException
IOException
-
resolveHostName
protected String resolveHostName(String host) throws UnknownHostException
- Throws:
UnknownHostException
-
doStart
protected void doStart() throws Exception
- Overrides:
doStart
in classTransportThreadSupport
- Throws:
Exception
-
createCommandChannel
protected CommandChannel createCommandChannel() throws IOException
- Throws:
IOException
-
createCommandDatagramChannel
protected CommandChannel createCommandDatagramChannel()
-
bind
protected void bind(DatagramSocket socket, SocketAddress localAddress) throws IOException
- Throws:
IOException
-
connect
protected DatagramChannel connect(DatagramChannel channel, SocketAddress targetAddress2) throws IOException
- Throws:
IOException
-
createLocalAddress
protected SocketAddress createLocalAddress()
-
doStop
protected void doStop(ServiceStopper stopper) throws Exception
- Specified by:
doStop
in classServiceSupport
- Throws:
Exception
-
createDatagramHeaderMarshaller
protected DatagramHeaderMarshaller createDatagramHeaderMarshaller()
-
getProtocolName
protected String getProtocolName()
-
getProtocolUriScheme
protected String getProtocolUriScheme()
-
getTargetAddress
protected SocketAddress getTargetAddress()
-
getChannel
protected DatagramChannel getChannel()
-
setChannel
protected void setChannel(DatagramChannel channel)
-
getLocalSocketAddress
public InetSocketAddress getLocalSocketAddress()
-
getRemoteAddress
public String getRemoteAddress()
- Specified by:
getRemoteAddress
in interfaceTransport
- Returns:
- the remote address for this connection
-
getReceiveCounter
public int getReceiveCounter()
Description copied from interface:Transport
Returns a counter which gets incremented as data is read from the transport. It should only be used to determine if there is progress being made in reading the next command from the transport. The value may wrap into the negative numbers.- Specified by:
getReceiveCounter
in interfaceTransport
- Returns:
- a counter which gets incremented as data is read from the transport.
-
getPeerCertificates
public X509Certificate[] getPeerCertificates()
- Specified by:
getPeerCertificates
in interfaceTransport
- Returns:
- the Certificates provided by the peer, or null if not a secure channel.
-
setPeerCertificates
public void setPeerCertificates(X509Certificate[] certificates)
Description copied from interface:Transport
Sets the certificates provided by the connected peer.- Specified by:
setPeerCertificates
in interfaceTransport
- Parameters:
certificates
- the Certificates provided by the peer.
-
-