cevent.h File Reference

#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>
#include <cybergarage/upnp/cupnp_function.h>

Data Structures

struct  _CgUpnpEventListenerList

Defines

#define CG_UPNP_SUBSCRIPTION_SID_SIZE   (CG_UPNP_UUID_MAX_LEN + 8)
#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 struct
_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)
void cg_upnp_event_subscription_request_setrenewsubscription (CgUpnpSubscriptionRequest *subReq, CgUpnpService *service, char *uuid, long timeout)
void cg_upnp_event_subscription_request_setunsubscription (CgUpnpSubscriptionRequest *subReq, CgUpnpService *service)
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)
CgUpnpEventListenerListcg_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 Documentation

#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

Parameters:
subReq The request to be checked
Returns:
True if request is subscription request, false otherwise
#define cg_upnp_event_subscription_isunsubscriberequest ( subReq   )     cg_streq(cg_http_request_getmethod(subReq), CG_HTTP_UNSUBSCRIBE)

Checks if request type is unsubscription request

Parameters:
subReq The request to be checked
Returns:
True if request is unsubscription request
#define cg_upnp_event_subscription_request_delete ( subReq   )     cg_http_request_delete(subReq);

Subscription request destructor

Parameters:
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

Parameters:
subReq Subscription request
Returns:
Character array containing the callback URL
#define cg_upnp_event_subscription_request_gethost ( subReq   )     cg_http_packet_getheadervalue(((CgHttpPacket*)subReq), CG_HTTP_HOST)

Get host header value from subscription request

Parameters:
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

Parameters:
subReq Subscription request
Returns:
Character array containing the NT header value
#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

Parameters:
subReq Subscription request
Returns:
Character array containing the requested SID
#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

Parameters:
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

Parameters:
subReq Subscription request
Returns:
True if subscription request has callback URL, false otherwise
#define cg_upnp_event_subscription_request_hasnt ( subReq   )     cg_http_packet_hasheader(((CgHttpPacket*)subReq), CG_HTTP_NT)

Checks if subscription request has NT

Parameters:
subReq Subscription request
Returns:
True if subscription request contains NT, false otherwise
#define cg_upnp_event_subscription_request_hassid ( subReq   )     cg_http_packet_hasheader(((CgHttpPacket*)subReq), CG_HTTP_SID)

Checks if subscription object has SID

Parameters:
subReq Subscription request
Returns:
True if subscription has SID, false otherwise
 
#define cg_upnp_event_subscription_request_new (  )     cg_http_request_new();

Subscription request constructor

Returns:
Pointer to newly created subsription request
#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

Parameters:
subReq Subscription request
#define cg_upnp_event_subscription_request_postresponse ( subReq,
subRes   )     cg_http_request_postresponse(subReq, subRes)

Send response to subscription request

Parameters:
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

Parameters:
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

Parameters:
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

Parameters:
subReq Subscription request
value Notification type
#define cg_upnp_event_subscription_response_delete ( subRes   )     cg_http_response_delete(subRes);

Destructor for subscription response

Parameters:
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

Parameters:
subRes Subscription request
Returns:
C string containing SID
#define cg_upnp_event_subscription_response_getstatuscode ( subRes,
code   )     cg_http_response_getstatuscode(subRes)

Get status code from subscription response object

Parameters:
subRes Subscription response
code Status code
Returns:
Status code
Bug:
Status code is not needed here! (It is not even passed to the wrapped function)
#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

Parameters:
subRes Subscription response
Returns:
C string containing the timeout
#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

Parameters:
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

Parameters:
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.

Parameters:
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

Parameters:
eventListenerList Event listener list
#define cg_upnp_eventlistenerlist_next ( eventListenerList   )     (CgUpnpEventListenerList*)cg_list_next((CgList *)eventListenerList)

Fetches next list element from event listener list

Parameters:
eventListenerList Event listener list
#define cg_upnp_eventlistenerlist_size ( eventListenerList   )     cg_list_size((CgList *)eventListenerList)

Get the size of the device list

Parameters:
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   (CG_UPNP_UUID_MAX_LEN + 8)

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 Documentation

Type definition for event listener callback

Type definition for event listener list

Type definition for subsription request

Type definition for subsrciption response


Function Documentation

char* cg_upnp_event_subscription_createsid ( char *  buf,
int  bufSize 
)

Create SID for subscription

Parameters:
buf Character buffer where SID is created
bufSize Buffer size.
Returns:
Pointer to buffer containing SID
char* cg_upnp_event_subscription_getsid ( char *  headerValue  ) 

Get SID

Parameters:
headerValue Raw header C string
Returns:
C string containing SID
long cg_upnp_event_subscription_gettimeout ( char *  headerValue  ) 

Get event subscription timeout

Parameters:
headerValue Header value
Returns:
Timeout
void cg_upnp_event_subscription_request_setnewsubscription ( CgUpnpSubscriptionRequest subReq,
CgUpnpService service,
char *  callback,
long  timeout 
)

(Re)initializes subscription request

Parameters:
subReq Subscription request
service Service to be subscribed
callback URL to be called when service state changes
timeout Subscription timeout
void cg_upnp_event_subscription_request_setrenewsubscription ( CgUpnpSubscriptionRequest subReq,
CgUpnpService service,
char *  uuid,
long  timeout 
)

(Re)initializes subscription request to be renewal request

Parameters:
subReq Subscription request
service Service to be subscribed
uuid Devices unique identification string
timeout Subscription timeout
void cg_upnp_event_subscription_request_setsid ( CgUpnpSubscriptionRequest subReq,
char *  sid 
)

Set sid to subscription request

Parameters:
subReq Subscription request
sid SID (Subscription id)
void cg_upnp_event_subscription_request_settimeout ( CgUpnpSubscriptionRequest subReq,
long  timeout 
)

Set timeout for subscription request

Parameters:
subReq Subscription request
timeout Timeout value for subscription request
void cg_upnp_event_subscription_request_setunsubscription ( CgUpnpSubscriptionRequest subReq,
CgUpnpService service 
)

(Re)initializes subscription request to be unsubscription request

Parameters:
subReq Subscription request
service Service where to be unsubscribed
void cg_upnp_event_subscription_response_setsid ( CgUpnpSubscriptionResponse subRes,
char *  sid 
)

Set SID (Subscription ID) for response

Parameters:
subRes Subscription response
sid Subscription ID
void cg_upnp_event_subscription_response_settimeout ( CgUpnpSubscriptionResponse subRes,
long  value 
)

Set HTTP timeout for subscription response

Parameters:
subRes Subscription response
value Timeout
void cg_upnp_event_subscription_subscriberesponse_setresponse ( CgUpnpSubscriptionResponse subRes,
int  code 
)

Set response code for subscription response

Parameters:
subRes Subscription response
code Response code
char* cg_upnp_event_subscription_tosidheaderstring ( char *  sid,
char *  buf,
int  bufSize 
)

Creates SID header string

Parameters:
sid Character array containing the SID
buf A buffer where header string is created
bufSize Size of the used buffer
Returns:
Pointer to buffer containing SID header string
char* cg_upnp_event_subscription_totimeoutheaderstring ( long  time,
CgString buf 
)

Create timeout header string

Parameters:
time Timeout
buf Buffer used when creating header string
Returns:
Timeout header C string
void cg_upnp_eventlistenerlist_add ( CgUpnpEventListenerList eventListenerList,
CG_UPNP_EVENT_LISTENER  listener 
)

Add a listener to the event listener list

Parameters:
eventListenerList The event listener list
listener The listener to add

Add a listener to the event listener list

Parameters:
eventListenerList The event listener list
listener The listener to add
void cg_upnp_eventlistenerlist_delete ( CgUpnpEventListenerList eventListenerList  ) 

Delete a event listener list.

Parameters:
eventListenerList The event listener list to delete

Delete a event listener list.

Parameters:
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 data.

Parameters:
eventListenerList The list to iterate thru
property The property that has been evented

Call all event listeners in the list with the given evented data.

Parameters:
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

Parameters:
eventListenerList The event listener list
listener The listener to remove

Remove a listener from the event listener list

Parameters:
eventListenerList The event listener list
listener The listener to remove

Generated on Tue Feb 23 23:14:23 2010 for CyberLink for C by  doxygen 1.6.1