A thread-safe custom service implementation that creates a UPnP message from the request,
then passes it to UpnpStream#process(), finally sends the response back to the
client.
The following was added to the UDA 1.1 spec (in 1.3), clarifying the handling of messages:
"If a control point has received at least one 'byebye' message of a root device, embedded device, or
service, then the control point can assume that all are no longer available."
Of course, they contradict this a little later:
"Only when all original advertisements of a root device, embedded device, and services have
expired can a control point assume that they are no longer available."
This could mean that even if we get 'byeby'e for the root device, we still have to assume that its services
are available.