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>

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)
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   (((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 Documentation

typedef void(*) CG_UPNP_EVENT_LISTENER(CgUpnpProperty *)

Type definition for event listener callback

typedef struct _CgUpnpEventListenerList CgUpnpEventListenerList

Type definition for event listener list

typedef CgHttpRequest CgUpnpSubscriptionRequest

Type definition for subsription request

typedef CgHttpResponse CgUpnpSubscriptionResponse

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,
char *  remoteAddress 
)

(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
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

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

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,
char *  remoteAddress 
)

(Re)initializes subscription request to be unsubscription request

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

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

void cg_upnp_eventlistenerlist_delete ( CgUpnpEventListenerList eventListenerList  ) 

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


Generated on Tue Aug 8 14:56:29 2006 for CyberLinkC by  doxygen 1.4.7