public interface Router
Encapsulates the transport layer and provides methods to the upper layers for
sending UPnP stream (HTTP) StreamRequestMessage
s,
sending (UDP) datagram OutgoingDatagramMessage
s,
as well as broadcasting bytes to all LAN participants.
A router also maintains listening sockets and services, for incoming UDP unicast/multicast
IncomingDatagramMessage
and TCP
UpnpStream
s. An implementation of this interface
handles these messages, e.g. by selecting and executing the right protocol.
An implementation must be thread-safe, and can be accessed concurrently. If the Router is disabled, it doesn't listen on the network for incoming messages and does not send outgoing messages.
ProtocolFactory
Modifier and Type | Method and Description |
---|---|
void |
broadcast(byte[] bytes)
Call this method to broadcast a UDP message to all hosts on the network.
|
boolean |
disable()
Unbinds all sockets and stops all listening threads for datagrams and streams.
|
boolean |
enable()
Starts all sockets and listening threads for datagrams and streams.
|
List<NetworkAddress> |
getActiveStreamServers(InetAddress preferredAddress) |
UpnpServiceConfiguration |
getConfiguration() |
ProtocolFactory |
getProtocolFactory() |
void |
handleStartFailure(InitializationException ex)
Called by the
enable() method before it returns. |
boolean |
isEnabled() |
void |
received(IncomingDatagramMessage msg)
This method is called internally by the transport layer when a datagram, either unicast or
multicast, has been received.
|
void |
received(UpnpStream stream)
This method is called internally by the transport layer when a TCP stream connection has
been made and a response has to be returned to the sender.
|
void |
send(OutgoingDatagramMessage msg)
Call this method to send a UDP datagram message.
|
StreamResponseMessage |
send(StreamRequestMessage msg)
Call this method to send a TCP (HTTP) stream message.
|
void |
shutdown()
Disables the router and releases all other resources.
|
UpnpServiceConfiguration getConfiguration()
ProtocolFactory getProtocolFactory()
boolean enable() throws RouterException
true
if the router was enabled. false
if it's already running.RouterException
boolean disable() throws RouterException
true
if the router was disabled. false
if it wasn't running.RouterException
void shutdown() throws RouterException
RouterException
boolean isEnabled() throws RouterException
true
if the router is currently enabled.RouterException
void handleStartFailure(InitializationException ex) throws InitializationException
enable()
method before it returns.ex
- The cause of the failure.InitializationException
- if the exception was not recoverable.List<NetworkAddress> getActiveStreamServers(InetAddress preferredAddress) throws RouterException
preferredAddress
- A preferred stream server bound address or null
.RouterException
void received(IncomingDatagramMessage msg)
This method is called internally by the transport layer when a datagram, either unicast or multicast, has been received. An implementation of this interface has to handle the received message, e.g. selecting and executing a UPnP protocol. This method should not block until the execution completes, the calling thread should be free to handle the next reception as soon as possible.
msg
- The received datagram message.void received(UpnpStream stream)
This method is called internally by the transport layer when a TCP stream connection has been made and a response has to be returned to the sender. An implementation of this interface has to handle the received stream connection and return a response, e.g. selecting and executing a UPnP protocol. This method should not block until the execution completes, the calling thread should be free to process the next reception as soon as possible. Typically this means starting a new thread of execution in this method.
stream
- void send(OutgoingDatagramMessage msg) throws RouterException
Call this method to send a UDP datagram message.
msg
- The UDP datagram message to send.RouterException
- if a recoverable error, such as thread interruption, occurs.StreamResponseMessage send(StreamRequestMessage msg) throws RouterException
Call this method to send a TCP (HTTP) stream message.
msg
- The TCP (HTTP) stream message to send.RouterException
- if a recoverable error, such as thread interruption, occurs.void broadcast(byte[] bytes) throws RouterException
Call this method to broadcast a UDP message to all hosts on the network.
bytes
- The byte payload of the UDP datagram.RouterException
- if a recoverable error, such as thread interruption, occurs.Copyright © 2016 4th Line GmbH, Switzerland. All rights reserved.