#include <cybergarage/typedef.h>
#include <cybergarage/http/chttp.h>
#include <cybergarage/util/cstring.h>
#include <cybergarage/util/clist.h>
#include <cybergarage/upnp/event/cproperty.h>
#include <cybergarage/upnp/cservice.h>
Data Structures | |
struct | _CgUpnpEventListenerList |
Defines | |
#define | CG_UPNP_SUBSCRIPTION_SID_SIZE (((4+1)*4) + 1) |
#define | CG_UPNP_SUBSCRIPTION_SID_HEADER_SIZE (5 + CG_UPNP_SUBSCRIPTION_SID_SIZE) |
#define | CG_UPNP_SUBSCRIPTION_XMLNS "urn:schemas-upnp-org:event-1-0" |
#define | CG_UPNP_SUBSCRIPTION_TIMEOUT_HEADER "Second-" |
#define | CG_UPNP_SUBSCRIPTION_INFINITE_STRING "infinite" |
#define | CG_UPNP_SUBSCRIPTION_INFINITE_VALUE (-1) |
#define | CG_UPNP_SUBSCRIPTION_UUID "uuid:" |
#define | CG_UPNP_SUBSCRIPTION_CALLBACK_START_WITH "<" |
#define | CG_UPNP_SUBSCRIPTION_CALLBACK_END_WITH ">" |
#define | CG_UPNP_SUBSCRIPTION_DELAY 30 |
#define | CG_UPNP_EVENT_MAX_SEQ 2147483647 |
#define | CG_UPNP_SUBSCRIPTION_MAX_TIMEOUT 300 |
#define | cg_upnp_event_subscription_request_new() cg_http_request_new(); |
#define | cg_upnp_event_subscription_request_delete(subReq) cg_http_request_delete(subReq); |
#define | cg_upnp_event_subscription_issubscriberequest(subReq) cg_streq(cg_http_request_getmethod(subReq), CG_HTTP_SUBSCRIBE) |
#define | cg_upnp_event_subscription_isunsubscriberequest(subReq) cg_streq(cg_http_request_getmethod(subReq), CG_HTTP_UNSUBSCRIBE) |
#define | cg_upnp_event_subscription_request_getsid(subReq) cg_upnp_event_subscription_getsid(cg_http_packet_getheadervalue(((CgHttpPacket*)subReq), CG_HTTP_SID)) |
#define | cg_upnp_event_subscription_request_hassid(subReq) cg_http_packet_hasheader(((CgHttpPacket*)subReq), CG_HTTP_SID) |
#define | cg_upnp_event_subscription_request_setnt(subReq, value) cg_http_packet_setheadervalue(((CgHttpPacket*)subReq), CG_HTTP_NT, value) |
#define | cg_upnp_event_subscription_request_getnt(subReq) cg_http_packet_getheadervalue(((CgHttpPacket*)subReq), CG_HTTP_NT) |
#define | cg_upnp_event_subscription_request_hasnt(subReq) cg_http_packet_hasheader(((CgHttpPacket*)subReq), CG_HTTP_NT) |
#define | cg_upnp_event_subscription_request_setcallback(subReq, value) cg_http_packet_setheadervalue(((CgHttpPacket*)subReq), CG_HTTP_CALLBACK, value) |
#define | cg_upnp_event_subscription_request_getcallback(subReq) cg_http_packet_getheadervalue(((CgHttpPacket*)subReq), CG_HTTP_CALLBACK) |
#define | cg_upnp_event_subscription_request_hascallback(subReq) cg_http_packet_hasheader(((CgHttpPacket*)subReq), CG_HTTP_CALLBACK) |
#define | cg_upnp_event_subscription_request_gettimeout(subReq) cg_upnp_event_subscription_gettimeout(cg_http_packet_getheadervalue(((CgHttpPacket*)subReq), CG_HTTP_TIMEOUT)) |
#define | cg_upnp_event_subscription_request_sethost(subReq, value) cg_http_packet_setheadervalue(((CgHttpPacket*)subReq), CG_HTTP_HOST, value) |
#define | cg_upnp_event_subscription_request_gethost(subReq) cg_http_packet_getheadervalue(((CgHttpPacket*)subReq), CG_HTTP_HOST) |
#define | cg_upnp_event_subscription_request_post(subReq) cg_http_request_post(subReq, cg_net_url_gethost(cg_http_request_getposturl(subReq)), cg_net_url_getport(cg_http_request_getposturl(subReq))) |
#define | cg_upnp_event_subscription_request_postresponse(subReq, subRes) cg_http_request_postresponse(subReq, subRes) |
#define | cg_upnp_event_subscription_response_new() cg_http_response_new(); |
#define | cg_upnp_event_subscription_response_delete(subRes) cg_http_response_delete(subRes); |
#define | cg_upnp_event_subscription_response_issuccessful(subRes) cg_http_response_issuccessful(subRes) |
#define | cg_upnp_event_subscription_response_setstatuscode(subRes, code) cg_http_response_setstatuscode(subRes, code) |
#define | cg_upnp_event_subscription_response_getstatuscode(subRes, code) cg_http_response_getstatuscode(subRes) |
#define | cg_upnp_event_subscription_response_getsid(subRes) cg_upnp_event_subscription_getsid(cg_http_packet_getheadervalue(((CgHttpPacket*)subRes), CG_HTTP_SID)) |
#define | cg_upnp_event_subscription_response_gettimeout(subRes) cg_upnp_event_subscription_gettimeout(cg_http_packet_getheadervalue(((CgHttpPacket*)subRes), CG_HTTP_TIMEOUT)) |
#define | cg_upnp_eventlistenerlist_clear(eventListenerList) cg_list_clear((CgList *)eventListenerList, (CG_LIST_DESTRUCTORFUNC)free) |
#define | cg_upnp_eventlistenerlist_size(eventListenerList) cg_list_size((CgList *)eventListenerList) |
#define | cg_upnp_eventlistenerlist_gets(eventListenerList) (CgUpnpEventListenerList*)cg_list_next((CgList *)eventListenerList) |
#define | cg_upnp_eventlistenerlist_next(eventListenerList) (CgUpnpEventListenerList*)cg_list_next((CgList *)eventListenerList) |
Typedefs | |
typedef CgHttpRequest | CgUpnpSubscriptionRequest |
typedef CgHttpResponse | CgUpnpSubscriptionResponse |
typedef void(*) | CG_UPNP_EVENT_LISTENER (CgUpnpProperty *) |
typedef _CgUpnpEventListenerList | CgUpnpEventListenerList |
Functions | |
char * | cg_upnp_event_subscription_totimeoutheaderstring (long time, CgString *buf) |
long | cg_upnp_event_subscription_gettimeout (char *headerValue) |
char * | cg_upnp_event_subscription_createsid (char *buf, int bufSize) |
char * | cg_upnp_event_subscription_tosidheaderstring (char *sid, char *buf, int bufSize) |
char * | cg_upnp_event_subscription_getsid (char *headerValue) |
void | cg_upnp_event_subscription_request_setsid (CgUpnpSubscriptionRequest *subReq, char *sid) |
void | cg_upnp_event_subscription_request_settimeout (CgUpnpSubscriptionRequest *subReq, long timeout) |
void | cg_upnp_event_subscription_request_setnewsubscription (CgUpnpSubscriptionRequest *subReq, CgUpnpService *service, char *callback, long timeout, char *remoteAddress) |
void | cg_upnp_event_subscription_request_setrenewsubscription (CgUpnpSubscriptionRequest *subReq, CgUpnpService *service, char *uuid, long timeout, char *remoteAddress) |
void | cg_upnp_event_subscription_request_setunsubscription (CgUpnpSubscriptionRequest *subReq, CgUpnpService *service, char *remoteAddress) |
void | cg_upnp_event_subscription_response_setsid (CgUpnpSubscriptionResponse *subRes, char *sid) |
void | cg_upnp_event_subscription_response_settimeout (CgUpnpSubscriptionResponse *subRes, long value) |
void | cg_upnp_event_subscription_subscriberesponse_setresponse (CgUpnpSubscriptionResponse *subRes, int code) |
CgUpnpEventListenerList * | cg_upnp_eventlistenerlist_new () |
void | cg_upnp_eventlistenerlist_delete (CgUpnpEventListenerList *eventListenerList) |
void | cg_upnp_eventlistenerlist_remove (CgUpnpEventListenerList *eventListenerList, CG_UPNP_EVENT_LISTENER listener) |
void | cg_upnp_eventlistenerlist_add (CgUpnpEventListenerList *eventListenerList, CG_UPNP_EVENT_LISTENER listener) |
void | cg_upnp_eventlistenerlist_notify (CgUpnpEventListenerList *eventListenerList, CgUpnpProperty *property) |
#define CG_UPNP_EVENT_MAX_SEQ 2147483647 |
Definition for maximum event sequence number
#define cg_upnp_event_subscription_issubscriberequest | ( | subReq | ) | cg_streq(cg_http_request_getmethod(subReq), CG_HTTP_SUBSCRIBE) |
Checks if request type is subscription request
subReq | The request to be checked |
#define cg_upnp_event_subscription_isunsubscriberequest | ( | subReq | ) | cg_streq(cg_http_request_getmethod(subReq), CG_HTTP_UNSUBSCRIBE) |
Checks if request type is unsubscription request
subReq | The request to be checked |
#define cg_upnp_event_subscription_request_delete | ( | subReq | ) | cg_http_request_delete(subReq); |
Subscription request destructor
subReq | Reference to the subscription request to be deleted |
#define cg_upnp_event_subscription_request_getcallback | ( | subReq | ) | cg_http_packet_getheadervalue(((CgHttpPacket*)subReq), CG_HTTP_CALLBACK) |
Get subscription callback URL
subReq | Subscription request |
#define cg_upnp_event_subscription_request_gethost | ( | subReq | ) | cg_http_packet_getheadervalue(((CgHttpPacket*)subReq), CG_HTTP_HOST) |
Get host header value from subscription request
subReq | Subscription request |
#define cg_upnp_event_subscription_request_getnt | ( | subReq | ) | cg_http_packet_getheadervalue(((CgHttpPacket*)subReq), CG_HTTP_NT) |
Get NT from subscription request
subReq | Subscription request |
#define cg_upnp_event_subscription_request_getsid | ( | subReq | ) | cg_upnp_event_subscription_getsid(cg_http_packet_getheadervalue(((CgHttpPacket*)subReq), CG_HTTP_SID)) |
Get sid from subscription request
subReq | Subscription request |
#define cg_upnp_event_subscription_request_gettimeout | ( | subReq | ) | cg_upnp_event_subscription_gettimeout(cg_http_packet_getheadervalue(((CgHttpPacket*)subReq), CG_HTTP_TIMEOUT)) |
Get timeout value from subscription request
subReq | Subscription request |
#define cg_upnp_event_subscription_request_hascallback | ( | subReq | ) | cg_http_packet_hasheader(((CgHttpPacket*)subReq), CG_HTTP_CALLBACK) |
Checks if subscription request has callback URL
subReq | Subscription request |
#define cg_upnp_event_subscription_request_hasnt | ( | subReq | ) | cg_http_packet_hasheader(((CgHttpPacket*)subReq), CG_HTTP_NT) |
Checks if subscription request has NT
subReq | Subscription request |
#define cg_upnp_event_subscription_request_hassid | ( | subReq | ) | cg_http_packet_hasheader(((CgHttpPacket*)subReq), CG_HTTP_SID) |
Checks if subscription object has SID
subReq | Subscription request |
#define cg_upnp_event_subscription_request_new | ( | ) | cg_http_request_new(); |
Subscription request constructor
#define cg_upnp_event_subscription_request_post | ( | subReq | ) | cg_http_request_post(subReq, cg_net_url_gethost(cg_http_request_getposturl(subReq)), cg_net_url_getport(cg_http_request_getposturl(subReq))) |
Send subscription request to device
subReq | Subscription request |
#define cg_upnp_event_subscription_request_postresponse | ( | subReq, | |||
subRes | ) | cg_http_request_postresponse(subReq, subRes) |
Send response to subscription request
subReq | Subscription request | |
subRes | Subscription response |
#define cg_upnp_event_subscription_request_setcallback | ( | subReq, | |||
value | ) | cg_http_packet_setheadervalue(((CgHttpPacket*)subReq), CG_HTTP_CALLBACK, value) |
Set subscription request callback URL
subReq | Subscription request | |
value | Callback URL string |
#define cg_upnp_event_subscription_request_sethost | ( | subReq, | |||
value | ) | cg_http_packet_setheadervalue(((CgHttpPacket*)subReq), CG_HTTP_HOST, value) |
Set HTTP host header value
subReq | Subscription request | |
value | HTTP Host: header content |
#define cg_upnp_event_subscription_request_setnt | ( | subReq, | |||
value | ) | cg_http_packet_setheadervalue(((CgHttpPacket*)subReq), CG_HTTP_NT, value) |
Set NT (Notification target) for subscription request
subReq | Subscription request | |
value | Notification type |
#define cg_upnp_event_subscription_response_delete | ( | subRes | ) | cg_http_response_delete(subRes); |
Destructor for subscription response
subRes | Subscription response |
#define cg_upnp_event_subscription_response_getsid | ( | subRes | ) | cg_upnp_event_subscription_getsid(cg_http_packet_getheadervalue(((CgHttpPacket*)subRes), CG_HTTP_SID)) |
Get SID
subRes | Subscription request |
#define cg_upnp_event_subscription_response_getstatuscode | ( | subRes, | |||
code | ) | cg_http_response_getstatuscode(subRes) |
Get status code from subscription response object
subRes | Subscription response | |
code | Status code |
#define cg_upnp_event_subscription_response_gettimeout | ( | subRes | ) | cg_upnp_event_subscription_gettimeout(cg_http_packet_getheadervalue(((CgHttpPacket*)subRes), CG_HTTP_TIMEOUT)) |
Get timeout value from subscription response
subRes | Subscription response |
#define cg_upnp_event_subscription_response_issuccessful | ( | subRes | ) | cg_http_response_issuccessful(subRes) |
Checks if subscription was successfull by checking status code from subscription response
subRes | Subscription response |
#define cg_upnp_event_subscription_response_new | ( | ) | cg_http_response_new(); |
Constructor for subscription response
#define cg_upnp_event_subscription_response_setstatuscode | ( | subRes, | |||
code | ) | cg_http_response_setstatuscode(subRes, code) |
Set status code for subscription response
subRes | Subscription response | |
code | Status code |
#define cg_upnp_eventlistenerlist_clear | ( | eventListenerList | ) | cg_list_clear((CgList *)eventListenerList, (CG_LIST_DESTRUCTORFUNC)free) |
Clear the contents of a event listener list.
eventListenerList | The device list to clear |
#define cg_upnp_eventlistenerlist_gets | ( | eventListenerList | ) | (CgUpnpEventListenerList*)cg_list_next((CgList *)eventListenerList) |
Fetches next list element from event listener list
eventListenerList | Event listener list |
#define cg_upnp_eventlistenerlist_next | ( | eventListenerList | ) | (CgUpnpEventListenerList*)cg_list_next((CgList *)eventListenerList) |
Fetches next list element from event listener list
eventListenerList | Event listener list |
#define cg_upnp_eventlistenerlist_size | ( | eventListenerList | ) | cg_list_size((CgList *)eventListenerList) |
Get the size of the device list
eventListenerList | The device list |
#define CG_UPNP_SUBSCRIPTION_CALLBACK_END_WITH ">" |
Definition for subscription callback end tag
#define CG_UPNP_SUBSCRIPTION_CALLBACK_START_WITH "<" |
Definition for subscription callback start tag
#define CG_UPNP_SUBSCRIPTION_DELAY 30 |
Definition for subscription delay
#define CG_UPNP_SUBSCRIPTION_INFINITE_STRING "infinite" |
Definition for infinite string in subscription
#define CG_UPNP_SUBSCRIPTION_INFINITE_VALUE (-1) |
Definition for infinite value in subscription
#define CG_UPNP_SUBSCRIPTION_MAX_TIMEOUT 300 |
Definition for maximum upnp subscription timeout
#define CG_UPNP_SUBSCRIPTION_SID_HEADER_SIZE (5 + CG_UPNP_SUBSCRIPTION_SID_SIZE) |
Definition for SID header size
#define CG_UPNP_SUBSCRIPTION_SID_SIZE (((4+1)*4) + 1) |
Definition for SID size
#define CG_UPNP_SUBSCRIPTION_TIMEOUT_HEADER "Second-" |
Definition for subscription timeout header prefix
#define CG_UPNP_SUBSCRIPTION_UUID "uuid:" |
Definition for subscription uuid prefix
#define CG_UPNP_SUBSCRIPTION_XMLNS "urn:schemas-upnp-org:event-1-0" |
Definition for subscription xml namespace
typedef void(*) CG_UPNP_EVENT_LISTENER(CgUpnpProperty *) |
Type definition for event listener callback
typedef struct _CgUpnpEventListenerList CgUpnpEventListenerList |
Type definition for event listener list
Type definition for subsription request
Type definition for subsrciption response
char* cg_upnp_event_subscription_createsid | ( | char * | buf, | |
int | bufSize | |||
) |
Create SID for subscription
buf | Character buffer where SID is created | |
bufSize | Buffer size. |
char* cg_upnp_event_subscription_getsid | ( | char * | headerValue | ) |
Get SID
headerValue | Raw header C string |
long cg_upnp_event_subscription_gettimeout | ( | char * | headerValue | ) |
Get event subscription timeout
headerValue | Header value |
void cg_upnp_event_subscription_request_setnewsubscription | ( | CgUpnpSubscriptionRequest * | subReq, | |
CgUpnpService * | service, | |||
char * | callback, | |||
long | timeout, | |||
char * | remoteAddress | |||
) |
(Re)initializes subscription request
subReq | Subscription request | |
service | Service to be subscribed | |
callback | URL to be called when service state changes | |
timeout | Subscription timeout | |
remoteAddress | HTTP Host: header content |
void cg_upnp_event_subscription_request_setrenewsubscription | ( | CgUpnpSubscriptionRequest * | subReq, | |
CgUpnpService * | service, | |||
char * | uuid, | |||
long | timeout, | |||
char * | remoteAddress | |||
) |
(Re)initializes subscription request to be renewal request
subReq | Subscription request | |
service | Service to be subscribed | |
uuid | Devices unique identification string | |
timeout | Subscription timeout | |
remoteAddress | HTTP Host: header content |
void cg_upnp_event_subscription_request_setsid | ( | CgUpnpSubscriptionRequest * | subReq, | |
char * | sid | |||
) |
Set sid to subscription request
subReq | Subscription request | |
sid | SID (Subscription id) |
void cg_upnp_event_subscription_request_settimeout | ( | CgUpnpSubscriptionRequest * | subReq, | |
long | timeout | |||
) |
Set timeout for subscription request
subReq | Subscription request | |
timeout | Timeout value for subscription request |
void cg_upnp_event_subscription_request_setunsubscription | ( | CgUpnpSubscriptionRequest * | subReq, | |
CgUpnpService * | service, | |||
char * | remoteAddress | |||
) |
(Re)initializes subscription request to be unsubscription request
subReq | Subscription request | |
service | Service where to be unsubscribed | |
remoteAddress | HTTP Host: header content |
void cg_upnp_event_subscription_response_setsid | ( | CgUpnpSubscriptionResponse * | subRes, | |
char * | sid | |||
) |
Set SID (Subscription ID) for response
subRes | Subscription response | |
sid | Subscription ID |
void cg_upnp_event_subscription_response_settimeout | ( | CgUpnpSubscriptionResponse * | subRes, | |
long | value | |||
) |
Set HTTP timeout for subscription response
subRes | Subscription response | |
value | Timeout |
void cg_upnp_event_subscription_subscriberesponse_setresponse | ( | CgUpnpSubscriptionResponse * | subRes, | |
int | code | |||
) |
Set response code for subscription response
subRes | Subscription response | |
code | Response code |
char* cg_upnp_event_subscription_tosidheaderstring | ( | char * | sid, | |
char * | buf, | |||
int | bufSize | |||
) |
Creates SID header string
sid | Character array containing the SID | |
buf | A buffer where header string is created | |
bufSize | Size of the used buffer |
char* cg_upnp_event_subscription_totimeoutheaderstring | ( | long | time, | |
CgString * | buf | |||
) |
Create timeout header string
time | Timeout | |
buf | Buffer used when creating header string |
void cg_upnp_eventlistenerlist_add | ( | CgUpnpEventListenerList * | eventListenerList, | |
CG_UPNP_EVENT_LISTENER | listener | |||
) |
Add a listener to the event listener list
eventListenerList | The event listener list | |
listener | The listener to add |
void cg_upnp_eventlistenerlist_delete | ( | CgUpnpEventListenerList * | eventListenerList | ) |
Delete a event listener list.
eventListenerList | The event listener list to delete |
CgUpnpEventListenerList* cg_upnp_eventlistenerlist_new | ( | ) |
Create a new event listener list
void cg_upnp_eventlistenerlist_notify | ( | CgUpnpEventListenerList * | eventListenerList, | |
CgUpnpProperty * | property | |||
) |
Call all event listeners in the list with the given evented data.
eventListenerList | The list to iterate thru | |
property | The property that has been evented |
void cg_upnp_eventlistenerlist_remove | ( | CgUpnpEventListenerList * | eventListenerList, | |
CG_UPNP_EVENT_LISTENER | listener | |||
) |
Remove a listener from the event listener list
eventListenerList | The event listener list | |
listener | The listener to remove |