kodi
|
UPnP Device Host. More...
#include <PltDeviceHost.h>
Public Member Functions | |
PLT_DeviceHost (const char *description_path="/", const char *uuid="", const char *device_type="", const char *friendly_name="", bool show_ip=false, NPT_UInt16 port=0, bool port_rebind=false) | |
Creates a new instance of UPnP Device Host. More... | |
virtual void | SetExtraBroadcast (bool broadcast) |
virtual void | SetByeByeFirst (bool bye_bye_first) |
When a UPnP device comes up, the specifications require that a SSDP bye-bye sequence is sent to force the removal of the device in case it wasn't sent properly during the last shutdown. More... | |
virtual NPT_UInt16 | GetPort () |
Returns the port used by the internal HTTP server for all incoming requests. More... | |
NPT_Result | SetLeaseTime (NPT_TimeInterval lease_time) |
Sets the lease time. More... | |
virtual NPT_Result | AddIcon (const PLT_DeviceIcon &icon, const char *fileroot, const char *urlroot="/") |
Add UPnP icon information to serve from file system. More... | |
virtual NPT_Result | AddIcon (const PLT_DeviceIcon &icon, const void *data, NPT_Size size, bool copy=true) |
Add UPnP icon information to serve using static image. More... | |
![]() | |
PLT_DeviceData (NPT_HttpUrl description_url=NPT_HttpUrl(NULL, 0, "/description.xml"), const char *uuid="", NPT_TimeInterval lease_time= *PLT_Constants::GetInstance().GetDefaultDeviceLease(), const char *device_type="", const char *friendly_name="") | |
virtual NPT_Result | GetDescription (NPT_String &desc) |
virtual NPT_String | GetDescriptionUrl (const char *ip_address=NULL) |
virtual NPT_HttpUrl | GetURLBase () |
virtual NPT_HttpUrl | NormalizeURL (const NPT_String &url) |
virtual NPT_Result | GetDescription (NPT_XmlElementNode *parent, NPT_XmlElementNode **device=NULL) |
virtual NPT_String | GetIconUrl (const char *mimetype=NULL, NPT_Int32 maxsize=0, NPT_Int32 maxdepth=0) |
bool | IsRoot () |
const NPT_TimeInterval & | GetLeaseTime () const |
const NPT_String & | GetUUID () const |
const NPT_String & | GetFriendlyName () const |
const NPT_String & | GetType () const |
const NPT_String & | GetModelDescription () const |
const NPT_String & | GetParentUUID () const |
const NPT_IpAddress & | GetLocalIP () const |
const NPT_Array< PLT_Service * > & | GetServices () const |
const NPT_Array< PLT_DeviceDataReference > & | GetEmbeddedDevices () const |
NPT_Result | FindEmbeddedDevice (const char *uuid, PLT_DeviceDataReference &device) |
NPT_Result | FindEmbeddedDeviceByType (const char *type, PLT_DeviceDataReference &device) |
NPT_Result | FindServiceById (const char *id, PLT_Service *&service) |
NPT_Result | FindServiceByType (const char *type, PLT_Service *&service) |
NPT_Result | FindServiceByName (const char *name, PLT_Service *&service) |
NPT_Result | FindServiceBySCPDURL (const char *url, PLT_Service *&service, bool recursive=false) |
NPT_Result | FindServiceByControlURL (const char *url, PLT_Service *&service, bool recursive=false) |
NPT_Result | FindServiceByEventSubURL (const char *url, PLT_Service *&service, bool recursive=false) |
NPT_Result | AddEmbeddedDevice (PLT_DeviceDataReference &device) |
NPT_Result | RemoveEmbeddedDevice (PLT_DeviceDataReference &device) |
NPT_Result | AddService (PLT_Service *service) |
NPT_Result | RemoveService (PLT_Service *service) |
void | SetBootId (NPT_UInt32 bootId) |
void | SetNextBootId (NPT_UInt32 nextBootId) |
NPT_UInt32 | GenerateNextBootId () |
operator const char * () | |
![]() | |
virtual NPT_Result | SendResponseBody (const NPT_HttpRequestContext &context, NPT_HttpResponse &response, NPT_OutputStream &output) |
Override this method if you want to write the body yourself. More... | |
virtual void | Completed (NPT_Result) |
A notification method called by the server upon completing the processing of a request. | |
Protected Member Functions | |
NPT_Result | SetupResponse (NPT_HttpRequest &request, const NPT_HttpRequestContext &context, NPT_HttpResponse &response) override |
NPT_HttpRequestHandler method for setting up the response of an incoming HTTP request. More... | |
NPT_Result | Announce (NPT_HttpRequest &request, NPT_UdpSocket &socket, PLT_SsdpAnnounceType type) |
Called during SSDP announce. More... | |
NPT_Result | OnSsdpPacket (const NPT_HttpRequest &request, const NPT_HttpRequestContext &context) override |
PLT_SsdpPacketListener method called when a M-SEARCH SSDP packet is received. More... | |
virtual NPT_Result | SendSsdpSearchResponse (NPT_HttpResponse &response, NPT_UdpSocket &socket, const char *st, const NPT_SocketAddress *addr=NULL) |
Called by PLT_SsdpDeviceSearchResponseTask when responding to a M-SEARCH SSDP request. More... | |
virtual NPT_Result | SetupServices ()=0 |
Required method for setting up UPnP services of device host (and any embedded). More... | |
virtual NPT_Result | SetupIcons () |
Default implementation for registering device icon resources. More... | |
virtual NPT_Result | SetupDevice () |
Default implementation for setting up device host. More... | |
virtual NPT_Result | Start (PLT_SsdpListenTask *task) |
Called by PLT_TaskManager when the device is started. More... | |
virtual NPT_Result | Stop (PLT_SsdpListenTask *task) |
Called by PLT_TaskManager when the device is stoped. More... | |
virtual NPT_Result | OnAction (PLT_ActionReference &action, const PLT_HttpRequestContext &context) |
This mehod is called when an action performed by a control point has been received and needs to be answered. More... | |
virtual NPT_Result | ProcessGetDescription (NPT_HttpRequest &request, const NPT_HttpRequestContext &context, NPT_HttpResponse &response) |
This method is called when a control point is requesting the device description. More... | |
virtual NPT_Result | ProcessGetSCPD (PLT_Service *service, NPT_HttpRequest &request, const NPT_HttpRequestContext &context, NPT_HttpResponse &response) |
This method is called when a control point is requesting a service SCPD. More... | |
virtual NPT_Result | ProcessHttpGetRequest (NPT_HttpRequest &request, const NPT_HttpRequestContext &context, NPT_HttpResponse &response) |
This method is called when a "GET" request for a resource other than the device description, SCPD, or icons has been received. More... | |
virtual NPT_Result | ProcessHttpPostRequest (NPT_HttpRequest &request, const NPT_HttpRequestContext &context, NPT_HttpResponse &response) |
This method is called when a "POST" request has been received. More... | |
virtual NPT_Result | ProcessHttpSubscriberRequest (NPT_HttpRequest &request, const NPT_HttpRequestContext &context, NPT_HttpResponse &response) |
This method is called when a request from a subscriber has been received. More... | |
![]() | |
virtual void | Cleanup () |
virtual NPT_Result | OnAddExtraInfo (NPT_XmlElementNode *) |
Static Protected Member Functions | |
static NPT_Result | Announce (PLT_DeviceData *device, NPT_HttpRequest &request, NPT_UdpSocket &socket, PLT_SsdpAnnounceType type) |
Static method similar to Announce. More... | |
static NPT_Result | SendSsdpSearchResponse (PLT_DeviceData *device, NPT_HttpResponse &response, NPT_UdpSocket &socket, const char *st, const NPT_SocketAddress *addr=NULL) |
Static method similar to SendSsdpSearchResponse. More... | |
Protected Attributes | |
PLT_TaskManagerReference | m_TaskManager |
PLT_HttpServerReference | m_HttpServer |
bool | m_ExtraBroascast |
NPT_UInt16 | m_Port |
bool | m_PortRebind |
bool | m_ByeByeFirst |
bool | m_Started |
![]() | |
NPT_String | m_ParentUUID |
NPT_String | m_UUID |
NPT_HttpUrl | m_URLDescription |
NPT_HttpUrl | m_URLBase |
NPT_String | m_DeviceType |
NPT_String | m_FriendlyName |
NPT_TimeInterval | m_LeaseTime |
NPT_TimeStamp | m_LeaseTimeLastUpdate |
NPT_Array< PLT_Service * > | m_Services |
NPT_Array< PLT_DeviceDataReference > | m_EmbeddedDevices |
NPT_Array< PLT_DeviceIcon > | m_Icons |
NPT_IpAddress | m_LocalIfaceIp |
NPT_String | m_Representation |
Additional Inherited Members | |
![]() | |
NPT_String | m_Manufacturer |
NPT_String | m_ManufacturerURL |
NPT_String | m_ModelDescription |
NPT_String | m_ModelName |
NPT_String | m_ModelNumber |
NPT_String | m_ModelURL |
NPT_String | m_SerialNumber |
NPT_String | m_UPC |
NPT_String | m_PresentationURL |
NPT_String | m_DlnaDoc |
NPT_String | m_DlnaCap |
NPT_String | m_AggregationFlags |
UPnP Device Host.
The PLT_DeviceHost class is a base class for implementing a UPnP Device. It handles network announcements and responses to searches from ControlPoints. ControlPoint action invocations are also received and delegated to derived classes. A PLT_DeviceHost also takes care of eventing when services state variables change.
PLT_DeviceHost::PLT_DeviceHost | ( | const char * | description_path = "/" , |
const char * | uuid = "" , |
||
const char * | device_type = "" , |
||
const char * | friendly_name = "" , |
||
bool | show_ip = false , |
||
NPT_UInt16 | port = 0 , |
||
bool | port_rebind = false |
||
) |
Creates a new instance of UPnP Device Host.
description_path | Relative path for description url |
uuid | UPnP device unique id |
device_type | UPnP device type |
friendly_name | Name advertised for UPnP device |
show_ip | Flag to indicate if device IP should be appended to friendly name |
port | local port for the device host internal HTTP server, 0 for randomly selected. |
port_rebind | Flag to indicate if device host should automatically try to look for another port if failing to choose the one passed. |
|
virtual |
Add UPnP icon information to serve from file system.
icon | the icon information including url path |
fileroot | the file system root path |
urlroot | the url root path of the icon url to match to fileroot Note: As an exemple, if the icon url path is "/images/icon1.jpg", the fileroot is "/Users/joe/www" and the urlroot is "/", when a request is made for "/images/icon1.jpg", the file is expected to be found at "/Users/joe/www/images/icon1.jpg". If the urlroot were "/images", the file would be expected to be found at "/Users/joe/www/icon1.jpg". |
|
virtual |
Add UPnP icon information to serve using static image.
icon | the icon information including url path |
data | the image data |
size | the image data size |
copy | boolean to indicate the data should be copied internally |
|
staticprotected |
Static method similar to Announce.
device | the device to announce |
request | the SSDP pre formatted request |
socket | the network socket to use to send the request |
type | PLT_SsdpAnnounceType enum if the announce is a SSDP bye-bye, update or alive. |
|
inlineprotected |
Called during SSDP announce.
The HTTP request is already configured with the right method and host.
request | the SSDP pre formatted request |
socket | the network socket to use to send the request |
type | PLT_SsdpAnnounceType enum if the announce is a SSDP bye-bye, update or alive. |
|
inlinevirtual |
Returns the port used by the internal HTTP server for all incoming requests.
|
protectedvirtual |
This mehod is called when an action performed by a control point has been received and needs to be answered.
action | the action information to answer |
context | the context information including the HTTP request and local and remote socket information (IP & port). |
Reimplemented in PLT_MediaServer, PLT_MediaRenderer, PLT_MediaConnect, and PLT_LightSampleDevice.
|
overrideprotectedvirtual |
PLT_SsdpPacketListener method called when a M-SEARCH SSDP packet is received.
request | SSDP packet |
context | the context of the request |
Implements PLT_SsdpPacketListener.
|
protectedvirtual |
This method is called when a control point is requesting the device description.
request | the HTTP request |
context | the context information including local and remote socket information. |
response | the response to setup. |
Reimplemented in PLT_MediaConnect.
|
protectedvirtual |
This method is called when a control point is requesting a service SCPD.
service | the service |
request | the HTTP request |
context | the context information including local and remote socket information. |
response | the response to setup. |
Reimplemented in UPNP::CUPnPServer, and PLT_MediaConnect.
|
protectedvirtual |
This method is called when a "GET" request for a resource other than the device description, SCPD, or icons has been received.
request | the HTTP request |
context | the context information including local and remote socket information. |
response | the response to setup. |
Reimplemented in PLT_MediaServer, and UPNP::CUPnPRenderer.
|
protectedvirtual |
This method is called when a "POST" request has been received.
This is usually an UPnP service action invocation. This will deserialize the request and call the OnAction method.
request | the HTTP request |
context | the context information including local and remote socket information. |
response | the response to setup. |
|
protectedvirtual |
This method is called when a request from a subscriber has been received.
This is for any new subscritions, existing subscrition renewal or cancellation.
request | the HTTP request |
context | the context information including local and remote socket information. |
response | the response to setup. |
|
staticprotected |
Static method similar to SendSsdpSearchResponse.
device | the device to announce |
response | the SSDP pre formatted response |
socket | the network socket to use to send the request |
st | the original request search target |
addr | the remote address to send the response back to in case the socket is not already connected. |
|
inlineprotectedvirtual |
Called by PLT_SsdpDeviceSearchResponseTask when responding to a M-SEARCH SSDP request.
response | the SSDP pre formatted response |
socket | the network socket to use to send the request |
st | the original request search target |
addr | the remote address to send the response back to in case the socket is not already connected. |
|
inlinevirtual |
When a UPnP device comes up, the specifications require that a SSDP bye-bye sequence is sent to force the removal of the device in case it wasn't sent properly during the last shutdown.
bye_bye_first | Boolean to indicate that SSDP bye-bye sequence should be sent first or not. |
|
inline |
Sets the lease time.
lease_time | Lease Time |
|
protectedvirtual |
Default implementation for setting up device host.
This calls SetupServices and SetupIcons when device starts.
|
protectedvirtual |
Default implementation for registering device icon resources.
Override to use different ones. Called when device starts.
Reimplemented in UPNP::CUPnPServer, and PLT_Xbox360.
|
overrideprotectedvirtual |
NPT_HttpRequestHandler method for setting up the response of an incoming HTTP request.
request | the request received |
context | the context of the request |
response | the response to set up |
Implements NPT_HttpRequestHandler.
|
protectedpure virtual |
Required method for setting up UPnP services of device host (and any embedded).
Called when device starts.
Implemented in PLT_MediaServer, PLT_MediaRenderer, UPNP::CUPnPServer, PLT_MediaConnect, PLT_LightSampleDevice, PLT_Simple, and PLT_Xbox360.
|
protectedvirtual |
Called by PLT_TaskManager when the device is started.
task | the SSDP listening task to attach to for receiving SSDP M-SEARCH messages. |
|
protectedvirtual |
Called by PLT_TaskManager when the device is stoped.
task | the SSDP listening task to detach from to stop receiving SSDP M-SEARCH messages. |