Platinum UPnP SDK
1.0.5.13
|
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 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... | |
virtual NPT_UInt16 | GetPort () |
Returns the port used by the internal HTTP server for all incoming requests. More... | |
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... | |
NPT_Result | SetLeaseTime (NPT_TimeInterval lease_time) |
Sets the lease time. More... | |
Protected Member Functions | |
NPT_Result | Announce (NPT_HttpRequest &request, NPT_UdpSocket &socket, PLT_SsdpAnnounceType type) |
Called during SSDP announce. 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 | OnSsdpPacket (const NPT_HttpRequest &request, const NPT_HttpRequestContext &context) |
PLT_SsdpPacketListener method called when a M-SEARCH SSDP packet is received. 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 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 | SetupDevice () |
Default implementation for setting up device host. More... | |
virtual NPT_Result | SetupIcons () |
Default implementation for registering device icon resources. More... | |
virtual NPT_Result | SetupResponse (NPT_HttpRequest &request, const NPT_HttpRequestContext &context, NPT_HttpResponse &response) |
NPT_HttpRequestHandler method for setting up the response of an incoming HTTP request. More... | |
virtual NPT_Result | SetupServices ()=0 |
Required method for setting up UPnP services of device host (and any embedded). 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... | |
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... | |
Friends | |
class | PLT_Service |
class | PLT_SsdpAnnounceInterfaceIterator |
class | PLT_SsdpDeviceSearchResponseInterfaceIterator |
class | PLT_SsdpDeviceSearchResponseTask |
class | PLT_UPnP |
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. |
Referenced by Announce().
|
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. |
References Announce().
|
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.
|
protectedvirtual |
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. |
|
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. |
|
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.
|
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. |
Referenced by SendSsdpSearchResponse().
|
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. |
References SendSsdpSearchResponse().
|
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.
|
protectedvirtual |
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 |
|
protectedpure virtual |
Required method for setting up UPnP services of device host (and any embedded).
Called when device starts.
Implemented in PLT_MediaServer.
|
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. |