com.cosylab.epics.caj.impl
Class BroadcastTransport

java.lang.Object
  extended by 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 from BroadcastConnector registered repeater and sends broadcasts datagrams to given addresses.

Version:
$id$
Author:
Matej Sekoranja

Field Summary
protected  ResponseHandler responseHandler
          CAS reponse handler.
 
Constructor Summary
BroadcastTransport(CAContext context, ResponseHandler responseHandler, DatagramChannel channel, InetSocketAddress connectAddress, short remoteTransportRevision)
           
 
Method Summary
 void bind(boolean reuseAddress)
          Bind UDP socket to the connectAddress.
 void close()
          Close transport.
 boolean flush()
          Enqueue (if necessary submit) request message.
 InetSocketAddress[] getBroadcastAddresses()
          Get list of broadcast addresses.
 InetSocketAddress[] getBroadcastAddresses(int port)
           
 DatagramChannel getChannel()
           
 InetSocketAddress getConnectAddress()
          Get connect address.
 CAContext getContext()
          Get context transport is living in.
 InetSocketAddress[] getIgnoredAddresses()
          Get list of ignored addresses.
 short getMinorRevision()
          Transport protocol minor revision.
 short getPriority()
          Transport priority.
 InetSocketAddress getRemoteAddress()
          Get remote address.
 void handleEvent(SelectionKey key)
          Handle IO event.
protected  void processRead()
          Process input (read) IO event.
protected  void processWrite()
          Process output (write) IO event.
protected  void send(ByteBuffer buffer)
          Send a buffer through the transport.
protected  void send(ByteBuffer buffer, InetSocketAddress address)
          Send a buffer through the transport immediately.
 void send(Request requestMessage, InetSocketAddress address)
          Send a request message through the transport.
 void setBroadcastAddresses(InetSocketAddress[] addresses)
          Set list of broadcast addresses.
 void setIgnoredAddresses(InetSocketAddress[] addresses)
          Set list of broadcast addresses.
 void submit(Request requestMessage)
          Send request message(s) immediately.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

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 SocketException
Bind UDP socket to the connectAddress.

Parameters:
reuseAddress - resuse address option.
Throws:
SocketException

close

public void close()
Close transport.


handleEvent

public void handleEvent(SelectionKey key)
Handle IO event.

Specified by:
handleEvent in interface ReactorHandler
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: Transport
Transport protocol minor revision.

Specified by:
getMinorRevision in interface Transport
Returns:
protocol minor revision.
See Also:
Transport.getMinorRevision()

submit

public void submit(Request requestMessage)
Send request message(s) immediately.

Specified by:
submit in interface Transport
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: Transport
Get context transport is living in.

Specified by:
getContext in interface Transport
Returns:
context transport is living in.
See Also:
Transport.getContext()

getPriority

public short getPriority()
Description copied from interface: Transport
Transport priority.

Specified by:
getPriority in interface Transport
Returns:
protocol priority.
See Also:
Transport.getPriority()

flush

public boolean flush()
Description copied from interface: Transport
Enqueue (if necessary submit) request message.

Specified by:
flush in interface Transport
Returns:
true on success, false on failure.
See Also:
Transport.flush()

getRemoteAddress

public InetSocketAddress getRemoteAddress()
Description copied from interface: Transport
Get remote address.

Specified by:
getRemoteAddress in interface Transport
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 default DEFAULT_BROADCAST_ADDRESSES list.

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


Copyright © 2004-2013 Cosylab. All Rights Reserved.