Tempplat object for ClientSubscription.

This commit is contained in:
Marcelo Roberto Jimenez
2010-10-04 17:48:51 -03:00
parent 9e77129b87
commit 549ac300f7
6 changed files with 49 additions and 402 deletions

View File

@@ -131,7 +131,7 @@ static int ScheduleGenaAutoRenew(
/*! [in] The time out value of the subscription. */ /*! [in] The time out value of the subscription. */
IN int TimeOut, IN int TimeOut,
/*! [in] Subscription being renewed. */ /*! [in] Subscription being renewed. */
IN ClientSubscription *sub) IN GenlibClientSubscription *sub)
{ {
UpnpEventSubscribe *RenewEventStruct = NULL; UpnpEventSubscribe *RenewEventStruct = NULL;
upnp_timeout *RenewEvent = NULL; upnp_timeout *RenewEvent = NULL;
@@ -398,7 +398,7 @@ static int gena_subscribe(
int genaUnregisterClient(UpnpClient_Handle client_handle) int genaUnregisterClient(UpnpClient_Handle client_handle)
{ {
ClientSubscription *sub_copy = GenlibClientSubscription_new(); GenlibClientSubscription *sub_copy = GenlibClientSubscription_new();
int return_code = UPNP_E_SUCCESS; int return_code = UPNP_E_SUCCESS;
struct Handle_Info *handle_info = NULL; struct Handle_Info *handle_info = NULL;
http_parser_t response; http_parser_t response;
@@ -446,10 +446,10 @@ int genaUnSubscribe(
UpnpClient_Handle client_handle, UpnpClient_Handle client_handle,
const UpnpString *in_sid) const UpnpString *in_sid)
{ {
ClientSubscription *sub = NULL; GenlibClientSubscription *sub = NULL;
int return_code = GENA_SUCCESS; int return_code = GENA_SUCCESS;
struct Handle_Info *handle_info; struct Handle_Info *handle_info;
ClientSubscription *sub_copy = GenlibClientSubscription_new(); GenlibClientSubscription *sub_copy = GenlibClientSubscription_new();
http_parser_t response; http_parser_t response;
// validate handle and sid // validate handle and sid
@@ -501,7 +501,7 @@ int genaSubscribe(
UpnpString *out_sid) UpnpString *out_sid)
{ {
int return_code = GENA_SUCCESS; int return_code = GENA_SUCCESS;
ClientSubscription *newSubscription = GenlibClientSubscription_new(); GenlibClientSubscription *newSubscription = GenlibClientSubscription_new();
uuid_upnp uid; uuid_upnp uid;
Upnp_SID temp_sid; Upnp_SID temp_sid;
Upnp_SID temp_sid2; Upnp_SID temp_sid2;
@@ -582,8 +582,8 @@ int genaRenewSubscription(
int *TimeOut) int *TimeOut)
{ {
int return_code = GENA_SUCCESS; int return_code = GENA_SUCCESS;
ClientSubscription *sub = NULL; GenlibClientSubscription *sub = NULL;
ClientSubscription *sub_copy = GenlibClientSubscription_new(); GenlibClientSubscription *sub_copy = GenlibClientSubscription_new();
struct Handle_Info *handle_info; struct Handle_Info *handle_info;
UpnpString *ActualSID = UpnpString_new(); UpnpString *ActualSID = UpnpString_new();
ThreadPoolJob tempJob; ThreadPoolJob tempJob;
@@ -682,7 +682,7 @@ void gena_process_notification_event(
IXML_Document *ChangedVars = NULL; IXML_Document *ChangedVars = NULL;
int eventKey; int eventKey;
token sid; token sid;
ClientSubscription *subscription = NULL; GenlibClientSubscription *subscription = NULL;
struct Handle_Info *handle_info; struct Handle_Info *handle_info;
void *cookie; void *cookie;
Upnp_FunPtr callback; Upnp_FunPtr callback;

View File

@@ -1,200 +1,18 @@
/************************************************************************ /*!
* Purpose: This file defines the functions for clients. It defines * \file
* functions for adding and removing clients to and from the client table, *
* adding and accessing subscription and other attributes pertaining to the * \brief GenlibClientSubscription object implementation.
* client *
************************************************************************/ * \author Marcelo Roberto Jimenez
*/
#include "config.h" #include "config.h"
#include "ClientSubscription.h"
#ifdef INCLUDE_CLIENT_APIS #ifdef INCLUDE_CLIENT_APIS
#define TEMPLATE_GENERATE_SOURCE
#include "ClientSubscription.h"
#include <stdlib.h> // for calloc(), free() #endif /* INCLUDE_CLIENT_APIS */
struct SClientSubscription {
int m_renewEventId;
UpnpString *m_SID;
UpnpString *m_actualSID;
UpnpString *m_eventURL;
struct SClientSubscription *m_next;
};
ClientSubscription *GenlibClientSubscription_new()
{
struct SClientSubscription *p = calloc(1, sizeof (struct SClientSubscription));
#if 0
p->renewEventId = 0;
#endif
p->m_SID = UpnpString_new();
p->m_actualSID = UpnpString_new();
p->m_eventURL = UpnpString_new();
p->m_next = NULL;
return (ClientSubscription *)p;
}
void GenlibClientSubscription_delete(ClientSubscription *p)
{
struct SClientSubscription *q = (struct SClientSubscription *)p;
if (!q) return;
q->m_renewEventId = 0;
UpnpString_delete(q->m_SID);
q->m_SID = NULL;
UpnpString_delete(q->m_actualSID);
q->m_actualSID = NULL;
UpnpString_delete(q->m_eventURL);
q->m_eventURL = NULL;
q->m_next = NULL;
free(p);
}
ClientSubscription *GenlibClientSubscription_dup(const ClientSubscription *p)
{
ClientSubscription *q = GenlibClientSubscription_new();
GenlibClientSubscription_assign(q, p);
return q;
}
void GenlibClientSubscription_assign(ClientSubscription *q, const ClientSubscription *p)
{
if (q != p) {
/*struct SClientSubscription *_p = (struct SClientSubscription *)p;*/
struct SClientSubscription *_q = (struct SClientSubscription *)q;
// Do not copy RenewEventId
_q->m_renewEventId = -1;
GenlibClientSubscription_set_SID(q, GenlibClientSubscription_get_SID(p));
GenlibClientSubscription_set_ActualSID(q, GenlibClientSubscription_get_ActualSID(p));
GenlibClientSubscription_set_EventURL(q, GenlibClientSubscription_get_EventURL(p));
// Do not copy m_next
_q->m_next = NULL;
}
}
int GenlibClientSubscription_get_RenewEventId(const ClientSubscription *p)
{
return ((struct SClientSubscription *)p)->m_renewEventId;
}
void GenlibClientSubscription_set_RenewEventId(ClientSubscription *p, int n)
{
((struct SClientSubscription *)p)->m_renewEventId = n;
}
const UpnpString *GenlibClientSubscription_get_SID(const ClientSubscription *p)
{
return ((struct SClientSubscription *)p)->m_SID;
}
const char *GenlibClientSubscription_get_SID_cstr(const ClientSubscription *p)
{
return UpnpString_get_String(GenlibClientSubscription_get_SID(p));
}
void GenlibClientSubscription_set_SID(ClientSubscription *p, const UpnpString *s)
{
UpnpString_delete(((struct SClientSubscription *)p)->m_SID);
((struct SClientSubscription *)p)->m_SID = UpnpString_dup(s);
}
void GenlibClientSubscription_strcpy_SID(ClientSubscription *p, const char *s)
{
UpnpString_delete(((struct SClientSubscription *)p)->m_SID);
((struct SClientSubscription *)p)->m_SID = UpnpString_new();
UpnpString_set_String(((struct SClientSubscription *)p)->m_SID, s);
}
const UpnpString *GenlibClientSubscription_get_ActualSID(const ClientSubscription *p)
{
return ((struct SClientSubscription *)p)->m_actualSID;
}
const char *GenlibClientSubscription_get_ActualSID_cstr(const ClientSubscription *p)
{
return UpnpString_get_String(GenlibClientSubscription_get_ActualSID(p));
}
void GenlibClientSubscription_set_ActualSID(ClientSubscription *p, const UpnpString *s)
{
UpnpString_delete(((struct SClientSubscription *)p)->m_actualSID);
((struct SClientSubscription *)p)->m_actualSID = UpnpString_dup(s);
}
void GenlibClientSubscription_strcpy_ActualSID(ClientSubscription *p, const char *s)
{
UpnpString_delete(((struct SClientSubscription *)p)->m_actualSID);
((struct SClientSubscription *)p)->m_actualSID = UpnpString_new();
UpnpString_set_String(((struct SClientSubscription *)p)->m_actualSID, s);
}
const UpnpString *GenlibClientSubscription_get_EventURL(const ClientSubscription *p)
{
return ((struct SClientSubscription *)p)->m_eventURL;
}
const char *GenlibClientSubscription_get_EventURL_cstr(const ClientSubscription *p)
{
return UpnpString_get_String(GenlibClientSubscription_get_EventURL(p));
}
void GenlibClientSubscription_set_EventURL(ClientSubscription *p, const UpnpString *s)
{
UpnpString_delete(((struct SClientSubscription *)p)->m_eventURL);
((struct SClientSubscription *)p)->m_eventURL = UpnpString_dup(s);
}
void GenlibClientSubscription_strcpy_EventURL(ClientSubscription *p, const char *s)
{
UpnpString_delete(((struct SClientSubscription *)p)->m_eventURL);
((struct SClientSubscription *)p)->m_eventURL = UpnpString_new();
UpnpString_set_String(((struct SClientSubscription *)p)->m_eventURL, s);
}
ClientSubscription *GenlibClientSubscription_get_Next(const ClientSubscription *p)
{
return (ClientSubscription *)(((struct SClientSubscription *)p)->m_next);
}
void GenlibClientSubscription_set_Next(ClientSubscription *p, ClientSubscription *q)
{
((struct SClientSubscription *)p)->m_next = (struct SClientSubscription *)q;
}
#endif /* INCLUDE_CLIENT_APIS */

View File

@@ -19,7 +19,7 @@
#include <stdlib.h> // for calloc(), free() #include <stdlib.h> // for calloc(), free()
void free_client_subscription(ClientSubscription *sub) void free_client_subscription(GenlibClientSubscription *sub)
{ {
upnp_timeout *event; upnp_timeout *event;
ThreadPoolJob tempJob; ThreadPoolJob tempJob;
@@ -40,9 +40,9 @@ void free_client_subscription(ClientSubscription *sub)
} }
void freeClientSubList(ClientSubscription *list) void freeClientSubList(GenlibClientSubscription *list)
{ {
ClientSubscription *next; GenlibClientSubscription *next;
while (list) { while (list) {
free_client_subscription(list); free_client_subscription(list);
next = GenlibClientSubscription_get_Next(list); next = GenlibClientSubscription_get_Next(list);
@@ -52,10 +52,10 @@ void freeClientSubList(ClientSubscription *list)
} }
void RemoveClientSubClientSID(ClientSubscription **head, const UpnpString *sid) void RemoveClientSubClientSID(GenlibClientSubscription **head, const UpnpString *sid)
{ {
ClientSubscription *finger = *head; GenlibClientSubscription *finger = *head;
ClientSubscription *previous = NULL; GenlibClientSubscription *previous = NULL;
int found = 0; int found = 0;
while (finger) { while (finger) {
found = !strcmp( found = !strcmp(
@@ -79,9 +79,9 @@ void RemoveClientSubClientSID(ClientSubscription **head, const UpnpString *sid)
} }
ClientSubscription *GetClientSubClientSID(ClientSubscription *head, const UpnpString *sid) GenlibClientSubscription *GetClientSubClientSID(GenlibClientSubscription *head, const UpnpString *sid)
{ {
ClientSubscription *next = head; GenlibClientSubscription *next = head;
int found = 0; int found = 0;
while (next) { while (next) {
found = !strcmp( found = !strcmp(
@@ -98,9 +98,9 @@ ClientSubscription *GetClientSubClientSID(ClientSubscription *head, const UpnpSt
} }
ClientSubscription *GetClientSubActualSID(ClientSubscription *head, token *sid) GenlibClientSubscription *GetClientSubActualSID(GenlibClientSubscription *head, token *sid)
{ {
ClientSubscription *next = head; GenlibClientSubscription *next = head;
while (next) { while (next) {
if (!memcmp( if (!memcmp(
GenlibClientSubscription_get_ActualSID_cstr(next), GenlibClientSubscription_get_ActualSID_cstr(next),

View File

@@ -1,198 +1,27 @@
#ifndef CLIENTSUBSCRIPTION_H #ifndef CLIENTSUBSCRIPTION_H
#define CLIENTSUBSCRIPTION_H #define CLIENTSUBSCRIPTION_H
/*! /*!
* \file * \file
*
* \brief GenlibClientSubscription object declararion.
*
* \author Marcelo Roberto Jimenez
*/ */
#define CLASS GenlibClientSubscription
#ifdef __cplusplus #define EXPAND_CLASS_MEMBERS(CLASS) \
extern "C" { EXPAND_CLASS_MEMBER_INT(CLASS, RenewEventId, int) \
#endif EXPAND_CLASS_MEMBER_STRING(CLASS, SID) \
EXPAND_CLASS_MEMBER_STRING(CLASS, ActualSID) \
EXPAND_CLASS_MEMBER_STRING(CLASS, EventURL) \
EXPAND_CLASS_MEMBER_INT(CLASS, Next, GenlibClientSubscription *) \
#include "TemplateInclude.h"
#include "UpnpString.h"
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#ifdef INCLUDE_CLIENT_APIS
typedef struct s_ClientSubscription ClientSubscription;
/*!
* \brief Constructor.
*/
ClientSubscription *GenlibClientSubscription_new();
/*!
* \brief Destructor.
*/
void GenlibClientSubscription_delete(
/*! [in] The \b this pointer. */
ClientSubscription *p);
/*!
* \brief Copy Constructor.
*/
ClientSubscription *GenlibClientSubscription_dup(
/*! [in] The \b this pointer. */
const ClientSubscription *p);
/*!
* \brief Assignment operator.
*/
void GenlibClientSubscription_assign(
/*! [in] The \b this pointer. */
ClientSubscription *q,
const ClientSubscription *p);
/*!
* \brief
*/
int GenlibClientSubscription_get_RenewEventId(
/*! [in] The \b this pointer. */
const ClientSubscription *p);
/*!
* \brief
*/
void GenlibClientSubscription_set_RenewEventId(
/*! [in] The \b this pointer. */
ClientSubscription *p,
/*! [in] . */
int n);
/*!
* \brief
*/
const UpnpString *GenlibClientSubscription_get_SID(
/*! [in] The \b this pointer. */
const ClientSubscription *p);
/*!
* \brief
*/
const char *GenlibClientSubscription_get_SID_cstr(
/*! [in] The \b this pointer. */
const ClientSubscription *p);
/*!
* \brief
*/
void GenlibClientSubscription_set_SID(
/*! [in] The \b this pointer. */
ClientSubscription *p,
const UpnpString *s);
/*!
* \brief
*/
void GenlibClientSubscription_strcpy_SID(
/*! [in] The \b this pointer. */
ClientSubscription *p,
const char *s);
/*!
* \brief
*/
const UpnpString *GenlibClientSubscription_get_ActualSID(
/*! [in] The \b this pointer. */
const ClientSubscription *p);
/*!
* \brief
*/
const char *GenlibClientSubscription_get_ActualSID_cstr(
/*! [in] The \b this pointer. */
const ClientSubscription *p);
/*!
* \brief
*/
void GenlibClientSubscription_set_ActualSID(
/*! [in] The \b this pointer. */
ClientSubscription *p,
const UpnpString *s);
/*!
* \brief
*/
void GenlibClientSubscription_strcpy_ActualSID(
/*! [in] The \b this pointer. */
ClientSubscription *p,
const char *s);
/*!
* \brief
*/
const UpnpString *GenlibClientSubscription_get_EventURL(
/*! [in] The \b this pointer. */
const ClientSubscription *p);
/*!
* \brief
*/
void GenlibClientSubscription_set_EventURL(
/*! [in] The \b this pointer. */
ClientSubscription *p,
const UpnpString *s);
/*!
* \brief
*/
void GenlibClientSubscription_strcpy_EventURL(
/*! [in] The \b this pointer. */
ClientSubscription *p,
const char *s);
/*!
* \brief
*/
ClientSubscription *GenlibClientSubscription_get_Next(
/*! [in] The \b this pointer. */
const ClientSubscription *p);
/*!
* \brief
*/
void GenlibClientSubscription_set_Next(
/*! [in] The \b this pointer. */
ClientSubscription *p,
ClientSubscription *q);
#endif /* INCLUDE_CLIENT_APIS */
#ifdef __cplusplus
}
#endif /* __cplusplus */
#endif /* CLIENTSUBSCRIPTION_H */ #endif /* CLIENTSUBSCRIPTION_H */

View File

@@ -40,7 +40,7 @@ extern TimerThread gTimerThread;
*/ */
void free_client_subscription( void free_client_subscription(
/*! [in] Client subscription to be freed. */ /*! [in] Client subscription to be freed. */
ClientSubscription *sub); GenlibClientSubscription *sub);
/*! /*!
@@ -48,7 +48,7 @@ void free_client_subscription(
*/ */
void freeClientSubList( void freeClientSubList(
/*! [in] Client subscription list to be freed. */ /*! [in] Client subscription list to be freed. */
ClientSubscription *list); GenlibClientSubscription *list);
/*! /*!
@@ -58,7 +58,7 @@ void freeClientSubList(
*/ */
void RemoveClientSubClientSID( void RemoveClientSubClientSID(
/*! [in] Head of the subscription list. */ /*! [in] Head of the subscription list. */
ClientSubscription **head, GenlibClientSubscription **head,
/*! [in] Subscription ID to be mactched. */ /*! [in] Subscription ID to be mactched. */
const UpnpString *sid); const UpnpString *sid);
@@ -69,9 +69,9 @@ void RemoveClientSubClientSID(
* *
* \return The matching subscription. * \return The matching subscription.
*/ */
ClientSubscription *GetClientSubClientSID( GenlibClientSubscription *GetClientSubClientSID(
/*! [in] Head of the subscription list. */ /*! [in] Head of the subscription list. */
ClientSubscription *head, GenlibClientSubscription *head,
/*! [in] Subscription ID to be mactched. */ /*! [in] Subscription ID to be mactched. */
const UpnpString *sid); const UpnpString *sid);
@@ -82,9 +82,9 @@ ClientSubscription *GetClientSubClientSID(
* *
* \return The matching subscription. * \return The matching subscription.
*/ */
ClientSubscription *GetClientSubActualSID( GenlibClientSubscription *GetClientSubActualSID(
/*! [in] Head of the subscription list. */ /*! [in] Head of the subscription list. */
ClientSubscription *head, GenlibClientSubscription *head,
/*! [in] Subscription ID to be mactched. */ /*! [in] Subscription ID to be mactched. */
token *sid); token *sid);

View File

@@ -103,7 +103,7 @@ struct Handle_Info
/* Client only */ /* Client only */
#ifdef INCLUDE_CLIENT_APIS #ifdef INCLUDE_CLIENT_APIS
/*! Client subscription list. */ /*! Client subscription list. */
ClientSubscription *ClientSubList; GenlibClientSubscription *ClientSubList;
/*! Active SSDP searches. */ /*! Active SSDP searches. */
LinkedList SsdpSearchList; LinkedList SsdpSearchList;
#endif #endif