public interface UpnpServiceConfiguration
This interface offers methods for retrieval of configuration data by the
Router
and the Registry
,
as well as other parts of the UPnP stack.
You can re-use this interface if you implement a subclass of UpnpServiceImpl
or
if you create a new implementation of UpnpService
.
NetworkAddressFactory createNetworkAddressFactory()
NetworkAddressFactory
interface.DatagramProcessor getDatagramProcessor()
DatagramProcessor
.SOAPActionProcessor getSoapActionProcessor()
SOAPActionProcessor
.GENAEventProcessor getGenaEventProcessor()
GENAEventProcessor
.StreamClient createStreamClient()
StreamClient
interface.MulticastReceiver createMulticastReceiver(NetworkAddressFactory networkAddressFactory)
networkAddressFactory
- The configured NetworkAddressFactory
.MulticastReceiver
interface.DatagramIO createDatagramIO(NetworkAddressFactory networkAddressFactory)
networkAddressFactory
- The configured NetworkAddressFactory
.DatagramIO
interface.StreamServer createStreamServer(NetworkAddressFactory networkAddressFactory)
networkAddressFactory
- The configured NetworkAddressFactory
.StreamServer
interface.Executor getMulticastReceiverExecutor()
Executor getDatagramIOExecutor()
ExecutorService getStreamServerExecutorService()
DeviceDescriptorBinder getDeviceDescriptorBinderUDA10()
DeviceDescriptorBinder
for the UPnP 1.0 Device Architecture..ServiceDescriptorBinder getServiceDescriptorBinderUDA10()
ServiceDescriptorBinder
for the UPnP 1.0 Device Architecture..ServiceType[] getExclusiveServiceTypes()
Return null
to completely disable remote device and service discovery.
All incoming notifications and search responses will then be dropped immediately.
This is mostly useful in applications that only provide services with no (remote)
control point functionality.
Note that a discovered service type with version 2 or 3 will match an exclusive service type with version 1. UPnP services are required to be backwards compatible, version 2 is a superset of version 1, and version 3 is a superset of version 2, etc.
null
return value will disable discovery!
An empty array means all services will be discovered.int getRegistryMaintenanceIntervalMillis()
int getAliveIntervalMillis()
Use this to advertise local devices at the specified interval, independent of its
DeviceIdentity.maxAgeSeconds
value. Note
that this will increase network traffic.
Some control points (XBMC and other Platinum UPnP SDK based devices, OPPO-93) seem to not properly receive SSDP M-SEARCH replies sent by Cling, but will handle NOTIFY alive messages just fine.
0
to disableboolean isReceivedSubscriptionTimeoutIgnored()
Some control points have trouble renewing subscriptions properly; enabling this option
in conjunction with a high value for
UserConstants.DEFAULT_SUBSCRIPTION_DURATION_SECONDS
ensures that your devices will not disappear on such control points.
true
if the timeout in incoming event subscriptions should be ignored
and the default value (UserConstants.DEFAULT_SUBSCRIPTION_DURATION_SECONDS
)
should be used instead.Integer getRemoteDeviceMaxAgeSeconds()
This setting is useful on systems which do not support multicast networking
(Android on HTC phones, for example). On such a system you will not receive messages when a
remote device disappears from the network and you will not receive its periodic heartbeat
alive messages. Only an initial search response (UDP unicast) has been received from the
remote device, with its proposed maximum age. To avoid (early) expiration of the remote
device, you can override its maximum age with this configuration setting, ignoring the
initial maximum age sent by the device. You most likely want to return
0
in this case, so that the remote device is never expired unless you
manually remove it from the Registry
. You typically remove
the device when an action or GENA subscription request to the remote device failed.
null
(the default) to accept the remote device's proposed maximum age, or
0
for unlimited age, or a value in seconds.UpnpHeaders getDescriptorRetrievalHeaders(RemoteDeviceIdentity identity)
Some devices might require extra headers to recognize your control point, use this
method to set these headers. They will be used for every descriptor (XML) retrieval
HTTP request by Cling. See ClientInfo
for
action request messages.
identity
- The (so far) discovered identity of the remote device.null
or extra HTTP headers.UpnpHeaders getEventSubscriptionHeaders(RemoteService service)
Some devices might require extra headers to recognize your control point, use this method to set these headers for GENA subscriptions. Note that the headers will not be applied to actual event messages, only subscribe, unsubscribe, and renewal.
null
or extra HTTP headers.Executor getAsyncProtocolExecutor()
ExecutorService getSyncProtocolExecutorService()
Executor getRegistryMaintainerExecutor()
Executor getRegistryListenerExecutor()
void shutdown()
UpnpService
on shutdown, useful to e.g. shutdown thread pools.Copyright © 2016 4th Line GmbH, Switzerland. All rights reserved.