diff options
| author | Valery Febvre <vfebvre at easter-eggs.com> | 2004-12-10 17:42:57 +0000 |
|---|---|---|
| committer | Valery Febvre <vfebvre at easter-eggs.com> | 2004-12-10 17:42:57 +0000 |
| commit | 21828cf8d5b83994afddf4c9df3d71d57b0dc177 (patch) | |
| tree | 1033a6062d944866100764246fc0067375790077 | |
| parent | 77f4d7cee51aab94935b812897b203dc6138cedd (diff) | |
Added LassoService class
| -rw-r--r-- | lasso/id-ff/Makefile.am | 2 | ||||
| -rw-r--r-- | lasso/id-ff/service.c | 133 | ||||
| -rw-r--r-- | lasso/id-ff/service.h | 75 |
3 files changed, 210 insertions, 0 deletions
diff --git a/lasso/id-ff/Makefile.am b/lasso/id-ff/Makefile.am index 0b4ae247..f4d3de36 100644 --- a/lasso/id-ff/Makefile.am +++ b/lasso/id-ff/Makefile.am @@ -22,6 +22,7 @@ liblasso_id_ff_la_SOURCES = \ profile.c \ provider.c \ server.c \ + service.c \ session.c liblassoinclude_HEADERS = \ @@ -36,4 +37,5 @@ liblassoinclude_HEADERS = \ profile.h \ provider.h \ server.h \ + service.h \ session.h diff --git a/lasso/id-ff/service.c b/lasso/id-ff/service.c new file mode 100644 index 00000000..d667a6be --- /dev/null +++ b/lasso/id-ff/service.c @@ -0,0 +1,133 @@ +/* $Id$ + * + * Lasso - A free implementation of the Liberty Alliance specifications. + * + * Copyright (C) 2004 Entr'ouvert + * http://lasso.entrouvert.org + * + * Authors: Nicolas Clapies <nclapies@entrouvert.com> + * Valery Febvre <vfebvre@easter-eggs.com> + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include <lasso/id-ff/service.h> + +/*****************************************************************************/ +/* public methods */ +/*****************************************************************************/ + +gchar* +lasso_service_dump(LassoService *service) +{ + return lasso_node_dump(LASSO_NODE(service), NULL, 1); +} + +void +lasso_service_destroy(LassoService *service) +{ + /* XXX do nothing */ +} + +/*****************************************************************************/ +/* private methods */ +/*****************************************************************************/ + +static struct XmlSnippet schema_snippets[] = { + { "type", SNIPPET_CONTENT, G_STRUCT_OFFSET(LassoService, type) }, + { "endpoint", SNIPPET_CONTENT, G_STRUCT_OFFSET(LassoService, endpoint) }, + { "ServiceDumpVersion", SNIPPET_ATTRIBUTE | SNIPPET_INTEGER, + G_STRUCT_OFFSET(LassoService, ServiceDumpVersion) }, + { NULL, 0, 0} +}; + +/*****************************************************************************/ +/* overridden parent class methods */ +/*****************************************************************************/ + +/*****************************************************************************/ +/* instance and class init functions */ +/*****************************************************************************/ + +static void +instance_init(LassoService *service) +{ + service->type = NULL; + service->endpoint = NULL; + service->ServiceDumpVersion = 1; +} + +static void +class_init(LassoServiceClass *klass) +{ + LassoNodeClass *nclass = LASSO_NODE_CLASS(klass); + + nclass->node_data = g_new0(LassoNodeClassData, 1); + lasso_node_class_set_nodename(nclass, "Service"); + lasso_node_class_set_ns(nclass, NULL, LASSO_LASSO_PREFIX); + lasso_node_class_add_snippets(nclass, schema_snippets); +} + +GType +lasso_service_get_type() +{ + static GType this_type = 0; + + if (!this_type) { + static const GTypeInfo this_info = { + sizeof (LassoServiceClass), + NULL, + NULL, + (GClassInitFunc) class_init, + NULL, + NULL, + sizeof(LassoService), + 0, + (GInstanceInitFunc) instance_init, + }; + + this_type = g_type_register_static(LASSO_TYPE_NODE, + "LassoService", &this_info, 0); + } + return this_type; +} + +LassoService* +lasso_service_new(const gchar *type, + const gchar *endpoint) +{ + LassoService *service; + + service = g_object_new(LASSO_TYPE_SERVICE, NULL); + + service->type = g_strdup(type); + service->endpoint = g_strdup(endpoint); + + return service; +} + +LassoService* +lasso_service_new_from_dump(const gchar *dump) +{ + LassoService *service; + xmlDoc *doc; + + service = g_object_new(LASSO_TYPE_SERVICE, NULL); + doc = xmlParseMemory(dump, strlen(dump)); + lasso_node_init_from_xml(LASSO_NODE(service), xmlDocGetRootElement(doc)); + xmlFreeDoc(doc); + + return service; +} diff --git a/lasso/id-ff/service.h b/lasso/id-ff/service.h new file mode 100644 index 00000000..5f36688a --- /dev/null +++ b/lasso/id-ff/service.h @@ -0,0 +1,75 @@ +/* $Id$ + * + * Lasso - A free implementation of the Liberty Alliance specifications. + * + * Copyright (C) 2004 Entr'ouvert + * http://lasso.entrouvert.org + * + * Authors: Nicolas Clapies <nclapies@entrouvert.com> + * Valery Febvre <vfebvre@easter-eggs.com> + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef __LASSO_SERVICE_H__ +#define __LASSO_SERVICE_H__ + +#ifdef __cplusplus +extern "C" { +#endif /* __cplusplus */ + +#include <lasso/xml/xml.h> + +#define LASSO_TYPE_SERVICE (lasso_service_get_type()) +#define LASSO_SERVICE(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), LASSO_TYPE_SERVICE, LassoService)) +#define LASSO_SERVICE_CLASS(klass) \ + (G_TYPE_CHECK_CLASS_CAST((klass), LASSO_TYPE_SERVICE, LassoServiceClass)) +#define LASSO_IS_SERVICE(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), LASSO_TYPE_SERVICE)) +#define LASSO_IS_SERVICE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), LASSO_TYPE_SERVICE)) +#define LASSO_SERVICE_GET_CLASS(o) \ + (G_TYPE_INSTANCE_GET_CLASS ((o), LASSO_TYPE_SERVICE, LassoServiceClass)) + +typedef struct _LassoService LassoService; +typedef struct _LassoServiceClass LassoServiceClass; +typedef struct _LassoServicePrivate LassoServicePrivate; + +struct _LassoService { + LassoNode parent; + + gchar *type; + gchar *endpoint; + gint ServiceDumpVersion; +}; + +struct _LassoServiceClass { + LassoNodeClass parent; +}; + +LASSO_EXPORT GType lasso_service_get_type(void); + +LASSO_EXPORT LassoService* lasso_service_new(const gchar *type, + const gchar *endpoint); + +LASSO_EXPORT LassoService* lasso_service_new_from_dump(const gchar *dump); + +LASSO_EXPORT gchar* lasso_service_dump(LassoService *service); + +LASSO_EXPORT void lasso_service_destroy(LassoService *service); + +#ifdef __cplusplus +} +#endif /* __cplusplus */ + +#endif /* __LASSO_SERVICE_H__ */ |
