| 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... | |
|  Public Member Functions inherited from PLT_DeviceData | |
| 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 * () | |
|  Public Member Functions inherited from NPT_HttpRequestHandler | |
| 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... | |
|  Protected Member Functions inherited from PLT_DeviceData | |
| 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 | 
|  Protected Attributes inherited from PLT_DeviceData | |
| 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 | |
|  Public Attributes inherited from PLT_DeviceData | |
| 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. | 
 1.8.13
 1.8.13