Package com.cosylab.epics.caj.impl
Class BroadcastTransport
- java.lang.Object
-
- com.cosylab.epics.caj.impl.BroadcastTransport
-
- All Implemented Interfaces:
ReactorHandler,Transport
public class BroadcastTransport extends Object implements Transport, ReactorHandler
CA UDP transport implementation. It receives datagrams fromBroadcastConnectorregistered repeater and sends broadcasts datagrams to given addresses.- Version:
- $id$
- Author:
- Matej Sekoranja
-
-
Field Summary
Fields Modifier and Type Field Description protected ResponseHandlerresponseHandlerCAS reponse handler.
-
Constructor Summary
Constructors Constructor Description BroadcastTransport(CAContext context, ResponseHandler responseHandler, DatagramChannel channel, InetSocketAddress connectAddress, short remoteTransportRevision)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description voidbind(boolean reuseAddress)Bind UDP socket to theconnectAddress.voidclose()Close transport.booleanflush()Enqueue (if necessary submit) request message.InetSocketAddress[]getBroadcastAddresses()Get list of broadcast addresses.InetSocketAddress[]getBroadcastAddresses(int port)DatagramChannelgetChannel()InetSocketAddressgetConnectAddress()Get connect address.CAContextgetContext()Get context transport is living in.InetSocketAddress[]getIgnoredAddresses()Get list of ignored addresses.shortgetMinorRevision()Transport protocol minor revision.shortgetPriority()Transport priority.InetSocketAddressgetRemoteAddress()Get remote address.voidhandleEvent(SelectionKey key)Handle IO event.protected voidprocessRead()Process input (read) IO event.protected voidprocessWrite()Process output (write) IO event.voidsend(Request requestMessage, InetSocketAddress address)Send a request message through the transport.protected voidsend(ByteBuffer buffer)Send a buffer through the transport.protected voidsend(ByteBuffer buffer, InetSocketAddress address)Send a buffer through the transport immediately.voidsetBroadcastAddresses(InetSocketAddress[] addresses)Set list of broadcast addresses.voidsetIgnoredAddresses(InetSocketAddress[] addresses)Set list of broadcast addresses.voidsubmit(Request requestMessage)Send request message(s) immediately.StringtoString()
-
-
-
Field Detail
-
responseHandler
protected ResponseHandler responseHandler
CAS reponse handler.
-
-
Constructor Detail
-
BroadcastTransport
public BroadcastTransport(CAContext context, ResponseHandler responseHandler, DatagramChannel channel, InetSocketAddress connectAddress, short remoteTransportRevision)
- Parameters:
context-
-
-
Method Detail
-
getBroadcastAddresses
public InetSocketAddress[] getBroadcastAddresses(int port)
-
bind
public void bind(boolean reuseAddress) throws SocketExceptionBind UDP socket to theconnectAddress.- Parameters:
reuseAddress- resuse address option.- Throws:
SocketException
-
close
public void close()
Close transport.
-
handleEvent
public void handleEvent(SelectionKey key)
Handle IO event.- Specified by:
handleEventin interfaceReactorHandler- Parameters:
key- key to be processed.- See Also:
ReactorHandler.handleEvent(java.nio.channels.SelectionKey)
-
processRead
protected void processRead()
Process input (read) IO event.
-
processWrite
protected void processWrite()
Process output (write) IO event.
-
send
protected void send(ByteBuffer buffer)
Send a buffer through the transport.- Parameters:
buffer- buffer to send.
-
send
protected void send(ByteBuffer buffer, InetSocketAddress address) throws IOException
Send a buffer through the transport immediately.- Parameters:
buffer- buffer to send.address- send address.- Throws:
IOException
-
getMinorRevision
public short getMinorRevision()
Description copied from interface:TransportTransport protocol minor revision.- Specified by:
getMinorRevisionin interfaceTransport- Returns:
- protocol minor revision.
- See Also:
Transport.getMinorRevision()
-
submit
public void submit(Request requestMessage)
Send request message(s) immediately.- Specified by:
submitin interfaceTransport- Parameters:
requestMessage- request message to enqueue.- See Also:
Transport.submit(com.cosylab.epics.caj.impl.Request)
-
send
public void send(Request requestMessage, InetSocketAddress address) throws IOException
Send a request message through the transport.- Parameters:
requestMessage- message to send.address- send address.- Throws:
IOException
-
getContext
public CAContext getContext()
Description copied from interface:TransportGet context transport is living in.- Specified by:
getContextin interfaceTransport- Returns:
- context transport is living in.
- See Also:
Transport.getContext()
-
getPriority
public short getPriority()
Description copied from interface:TransportTransport priority.- Specified by:
getPriorityin interfaceTransport- Returns:
- protocol priority.
- See Also:
Transport.getPriority()
-
flush
public boolean flush()
Description copied from interface:TransportEnqueue (if necessary submit) request message.- Specified by:
flushin interfaceTransport- Returns:
trueon success,falseon failure.- See Also:
Transport.flush()
-
getRemoteAddress
public InetSocketAddress getRemoteAddress()
Description copied from interface:TransportGet remote address.- Specified by:
getRemoteAddressin interfaceTransport- Returns:
- remote address.
- See Also:
Transport.getRemoteAddress()
-
getBroadcastAddresses
public InetSocketAddress[] getBroadcastAddresses()
Get list of broadcast addresses.- Returns:
- broadcast addresses.
-
getIgnoredAddresses
public InetSocketAddress[] getIgnoredAddresses()
Get list of ignored addresses.- Returns:
- broadcast addresses.
-
getConnectAddress
public InetSocketAddress getConnectAddress()
Get connect address.- Returns:
- connect address.
-
setBroadcastAddresses
public void setBroadcastAddresses(InetSocketAddress[] addresses)
Set list of broadcast addresses. This overrides defaultDEFAULT_BROADCAST_ADDRESSESlist.- Parameters:
addresses- list of broadcast addresses, non-null.
-
setIgnoredAddresses
public void setIgnoredAddresses(InetSocketAddress[] addresses)
Set list of broadcast addresses.- Parameters:
addresses- list of ignored addresses.
-
getChannel
public DatagramChannel getChannel()
- Returns:
- the channel
-
-