rcd.type = (gchar *) record->type;
rcd.representation = (gchar *) record->representation;
rcd.uri = (gchar *) record->uri;
+ rcd.uriObjSize = record->uriObjSize;
rcd.mime = (gchar *) record->mime;
- rcd.smartPoster = (gboolean) record->smartPoster;
neardal_adp_publish(adpProp, &rcd);
exit:
record->encoding = (const char *) rcdProp->encoding;
record->handOver = (short) rcdProp->handOver;
record->language = (const char *) rcdProp->language;
- record->smartPoster = (short) rcdProp->smartPoster;
record->action = (const char *) rcdProp->action;
record->type = (const char *) rcdProp->type;
record->representation = (const char *) rcdProp->representation;
record->uri = (const char *) rcdProp->uri;
+ record->uriObjSize = (uint) rcdProp->uriObjSize;
record->mime = (const char *) rcdProp->mime;
exit:
short handOver;
/*! @brief internation language used */
const char *language;
-/*! @brief is tag smartposter? */
- short smartPoster;
/*! @brief 'Action' Save, Edit, Download... */
const char *action;
/*! @brief tag type: 'Text', 'Uri', 'MIME Type' */
const char *representation;
/*! @brief Uri datas */
const char *uri;
+//*! @brief Uri datas */
+ unsigned int uriObjSize;
/*! @brief MIME Type datas */
const char *mime;
} neardal_record;
#include "neardal_prv.h"
#include <glib-2.0/glib/gerror.h>
#include <glib-2.0/glib/glist.h>
+#include <glib-2.0/glib/gvariant.h>
/******************************************************************************
goto exit;
}
- NEARDAL_TRACEF("GVariant=%s\n", g_variant_print (tmp, TRUE));
+ NEARDAL_TRACE_LOG("Reading:\n%s\n", g_variant_print(tmp, TRUE));
tmpOut = g_variant_lookup_value(tmp, "Targets", G_VARIANT_TYPE_ARRAY);
if (tmpOut != NULL) {
tgtArray = g_variant_dup_objv (tmpOut, &len);
*****************************************************************************/
errorCode_t neardal_adp_publish(AdpProp *adpProp, RcdProp *rcd)
{
- GHashTable *hash = NULL;
+ GVariantBuilder *builder= NULL;
+ GVariant *in;
errorCode_t err;
- GError *gerror = NULL;
+ GError *gerror = NULL;
g_assert(adpProp != NULL);
- hash = neardal_tools_create_dict();
- if (hash == NULL)
+ builder = g_variant_builder_new (G_VARIANT_TYPE_ARRAY);
+ if (builder == NULL)
return NEARDAL_ERROR_NO_MEMORY;
- err = neardal_rcd_prv_format(&hash, rcd);
+ g_variant_builder_init(builder, G_VARIANT_TYPE_ARRAY);
+ err = neardal_rcd_prv_format(builder, rcd);
if (err != NEARDAL_SUCCESS)
goto exit;
-// TODO org_neard_Adapter_publish(adpProp->proxy, hash, &gerror);
+ in = g_variant_builder_end (builder);
+ NEARDAL_TRACE_LOG("Sending:\n%s\n", g_variant_print(in, TRUE));
+ org_neard_adp__call_publish_sync(adpProp->proxy, in, NULL, &gerror);
exit:
- if (hash != NULL)
- g_hash_table_destroy(hash);
if (gerror != NULL) {
NEARDAL_TRACE_ERR("Unable to publish tag record (%d:%s)\n",
gerror->code, gerror->message);
g_error_free(gerror);
err = NEARDAL_ERROR_DBUS;
}
+ if (in != NULL)
+ g_variant_unref(in);
+ if (builder != NULL)
+ g_variant_builder_unref(builder);
return err;
}
if (org_neard_mgr__call_get_properties_sync(neardalMgr->proxy, &tmp,
NULL,
&neardalMgr->gerror)) {
+ NEARDAL_TRACE_LOG("Reading:\n%s\n", g_variant_print(tmp, TRUE));
NEARDAL_TRACEF("Parsing neard adapters...\n");
- NEARDAL_TRACEF("GVariant=%s\n", g_variant_print (tmp, TRUE));
tmpOut = g_variant_lookup_value(tmp, "Adapters",
G_VARIANT_TYPE_ARRAY);
#include <glib-2.0/glib/gerror.h>
#include <glib-2.0/glib/glist.h>
-/******************************************************************************
- * neardal_rcd_prv_read_std_properties: Get Neard Record Properties for non
- * smartPoster tag
- *****************************************************************************/
-static errorCode_t neardal_rcd_prv_read_std_properties(GVariant *value,
- RcdProp *rcd)
-{
- errorCode_t errCode = NEARDAL_SUCCESS;
- GVariant *tmpOut = NULL;
-
- tmpOut = g_variant_lookup_value(value, "Type", G_VARIANT_TYPE_STRING);
- if (tmpOut != NULL)
- rcd->type = g_variant_dup_string(tmpOut, NULL);
-
- if (!strcmp(rcd->type, "Text")) {
- tmpOut = g_variant_lookup_value(value, "Representation",
- G_VARIANT_TYPE_STRING);
- if (tmpOut != NULL)
- rcd->representation = g_variant_dup_string(tmpOut,
- NULL);
- }
-
- if (!strcmp(rcd->type, "URI")) {
- tmpOut = g_variant_lookup_value(value, "URI",
- G_VARIANT_TYPE_STRING);
- if (tmpOut != NULL)
- rcd->uri = g_variant_dup_string(tmpOut, NULL);
- }
-
- if (!strcmp(rcd->type, "MIME Type (RFC 2046)")) {
- tmpOut = g_variant_lookup_value(value, "MIME",
- G_VARIANT_TYPE_STRING);
- if (tmpOut != NULL)
- rcd->mime = g_variant_dup_string(tmpOut, NULL);
- }
- return errCode;
-}
-
-/******************************************************************************
- * neardal_rcd_prv_read_sp_properties: Get Neard Record Properties
- * for smartPoster tag
- *****************************************************************************/
-static errorCode_t neardal_rcd_prv_read_sp_properties(GVariant *value,
- RcdProp *rcd)
-{
- /* TODO */
- (void) value; /* remove warning */
- (void) rcd; /* remove warning */
-
- return NEARDAL_ERROR_GENERAL_ERROR;
-}
/******************************************************************************
* neardal_rcd_prv_read_properties: Get Neard Record Properties
g_error_free(gerror);
return errCode;
}
- NEARDAL_TRACEF("GVariant=%s\n", g_variant_print (tmp, TRUE));
+ NEARDAL_TRACE_LOG("Reading:\n%s\n", g_variant_print(tmp, TRUE));
+
+ tmpOut = g_variant_lookup_value(tmp, "Type", G_VARIANT_TYPE_STRING);
+ if (tmpOut != NULL)
+ rcd->type = g_variant_dup_string(tmpOut, NULL);
+ tmpOut = g_variant_lookup_value(tmp, "Representation",
+ G_VARIANT_TYPE_STRING);
+ if (tmpOut != NULL)
+ rcd->representation = g_variant_dup_string(tmpOut,
+ NULL);
+
tmpOut = g_variant_lookup_value(tmp, "Encoding", G_VARIANT_TYPE_STRING);
if (tmpOut != NULL)
rcd->encoding = g_variant_dup_string(tmpOut, NULL);
if (tmpOut != NULL)
rcd->language = g_variant_dup_string(tmpOut, NULL);
- tmpOut = g_variant_lookup_value(tmp, "SmartPoster",
- G_VARIANT_TYPE_BOOLEAN);
+ tmpOut = g_variant_lookup_value(tmp, "MIME",
+ G_VARIANT_TYPE_STRING);
if (tmpOut != NULL)
- rcd->smartPoster = g_variant_get_boolean (tmpOut);
+ rcd->mime = g_variant_dup_string(tmpOut, NULL);
- if (rcd->smartPoster == FALSE)
- errCode = neardal_rcd_prv_read_std_properties(tmp, rcd);
- else
- errCode = neardal_rcd_prv_read_sp_properties(tmp, rcd);
+ tmpOut = g_variant_lookup_value(tmp, "URI",
+ G_VARIANT_TYPE_STRING);
+ if (tmpOut != NULL)
+ rcd->uri = g_variant_dup_string(tmpOut, NULL);
return errCode;
}
}
/******************************************************************************
- * neardal_rcd_prv_read_std_properties: Insert key/value in a GHashTable for
- * non smartPoster tag
+ * neardal_rcd_prv_format: Insert key/value in a GHashTable
*****************************************************************************/
-static errorCode_t neardal_rcd_prv_format_std_properties(GHashTable **hash,
- RcdProp *rcd)
+errorCode_t neardal_rcd_prv_format(GVariantBuilder *builder, RcdProp *rcd)
{
- if (rcd->action != NULL)
- neardal_tools_add_dict_entry(*hash, "Action", rcd->action);
-
- if (rcd->encoding != NULL)
- neardal_tools_add_dict_entry(*hash, "Encoding", rcd->encoding);
-
- if (rcd->language != NULL)
- neardal_tools_add_dict_entry(*hash, "Language", rcd->language);
+ errorCode_t errCode = NEARDAL_SUCCESS;
- if (rcd->mime != NULL)
- neardal_tools_add_dict_entry(*hash, "MIME", rcd->mime);
- if (rcd->representation != NULL)
- neardal_tools_add_dict_entry(*hash, "Representation",
- rcd->representation);
+ NEARDAL_TRACEIN();
+ g_assert(rcd != NULL);
if (rcd->type != NULL)
- neardal_tools_add_dict_entry(*hash, "Type", rcd->type);
-
- if (rcd->uri != NULL)
- neardal_tools_add_dict_entry(*hash, "URI", rcd->uri);
-
- return NEARDAL_SUCCESS;
-}
-
-/******************************************************************************
- * neardal_rcd_prv_read_sp_properties: Insert key/value in a GHashTable for
- * smartPoster tag
- *****************************************************************************/
-static errorCode_t neardal_rcd_prv_format_sp_properties(GHashTable **hash,
- RcdProp *rcd)
-{
- /* TODO */
- (void) hash; /* remove warning */
- (void) rcd; /* remove warning */
-
- return NEARDAL_ERROR_GENERAL_ERROR;
-}
+ neardal_tools_add_dict_entry(builder, "Type", rcd->type,
+ (int) G_TYPE_STRING);
+ if (rcd->encoding != NULL)
+ neardal_tools_add_dict_entry(builder, "Encoding", rcd->encoding,
+ (int) G_TYPE_STRING);
-/******************************************************************************
- * neardal_rcd_prv_format: Insert key/value in a GHashTable
- *****************************************************************************/
-errorCode_t neardal_rcd_prv_format(GHashTable **hash, RcdProp *rcd)
-{
- errorCode_t errCode = NEARDAL_SUCCESS;
+ if (rcd->language != NULL)
+ neardal_tools_add_dict_entry(builder, "Language", rcd->language,
+ (int) G_TYPE_STRING);
+ if (rcd->representation != NULL)
+ neardal_tools_add_dict_entry(builder, "Representation",
+ rcd->representation,
+ (int) G_TYPE_STRING);
- NEARDAL_TRACEIN();
- g_assert(rcd != NULL);
- g_assert(rcd->proxy != NULL);
+ if (rcd->uri != NULL) {
+ neardal_tools_add_dict_entry(builder, "URI", rcd->uri,
+ (int) G_TYPE_STRING);
+ neardal_tools_add_dict_entry(builder, "Size",
+ (void*) rcd->uriObjSize,
+ (int) G_TYPE_UINT);
- if (rcd->smartPoster == FALSE)
- errCode = neardal_rcd_prv_format_std_properties(hash, rcd);
- else
- errCode = neardal_rcd_prv_format_sp_properties(hash, rcd);
+ }
+ if (rcd->mime != NULL)
+ neardal_tools_add_dict_entry(builder, "MIME", rcd->mime,
+ (int) G_TYPE_STRING);
+ if (rcd->action != NULL)
+ neardal_tools_add_dict_entry(builder, "Action", rcd->action,
+ (int) G_TYPE_STRING);
+
return errCode;
}
#define __NEARDAL_RECORD_H
#include "neard_record_proxy.h"
+#include <../lib/i386-linux-gnu/glib-2.0/include/glibconfig.h>
#ifdef __cplusplus
extern "C" {
gchar *encoding;
gboolean handOver;
gchar *language;
- gboolean smartPoster;
gchar *action;
gchar *type;
gchar *representation;
gchar *uri;
+ gsize uriObjSize;
gchar *mime;
} RcdProp;
/******************************************************************************
* neardal_rcd_prv_format: Insert key/value in a GHashTable
*****************************************************************************/
-errorCode_t neardal_rcd_prv_format(GHashTable ** hash, RcdProp *rcdProp);
+errorCode_t neardal_rcd_prv_format(GVariantBuilder *builder, RcdProp *rcdProp);
#ifdef __cplusplus
}
g_error_free(gerror);
goto exit;
}
- NEARDAL_TRACEF("GVariant=%s\n", g_variant_print (tmp, TRUE));
-
+ NEARDAL_TRACE_LOG("Reading:\n%s\n", g_variant_print(tmp, TRUE));
tmpOut = g_variant_lookup_value(tmp, "Records", G_VARIANT_TYPE_ARRAY);
if (tmpOut != NULL) {
rcdArray = g_variant_dup_objv (tmpOut, &len);
#include "neardal.h"
#include "neardal_prv.h"
+#include <glib-2.0/glib/gvariant.h>
-#define g_marshal_value_peek_string(v) (char *) g_value_get_string(v)
-#define g_marshal_value_peek_boxed(v) g_value_get_boxed(v)
-
-void
-neardal_marshal_VOID__STRING_BOXED(GClosure *closure, GValue *return_value,
- guint n_param_values,
- const GValue *param_values,
- gpointer invocation_hint,
- gpointer marshal_data)
-{
-typedef void (*GMarshalFunc_VOID__STRING_BOXED)(gpointer data1, gpointer arg_1,
- gpointer arg_2, gpointer data2);
-
- register GMarshalFunc_VOID__STRING_BOXED callback;
- register gpointer data1, data2;
- register GCClosure *cc = (GCClosure *)closure;
- GValue *value = NULL;
-
- g_return_if_fail(n_param_values == 3);
- (void) return_value; /* remove warning */
- (void) invocation_hint; /* remove warning */
-
- if (G_CCLOSURE_SWAP_DATA(closure)) {
- data1 = closure->data;
- data2 = g_value_peek_pointer(param_values + 0);
- } else {
- data1 = g_value_peek_pointer(param_values + 0);
- data2 = closure->data;
- }
- callback = (GMarshalFunc_VOID__STRING_BOXED) (marshal_data ?
- marshal_data : cc->callback);
-
- if (G_IS_VALUE(g_marshal_value_peek_boxed(param_values + 2)))
- value = g_marshal_value_peek_boxed(param_values + 2);
-
- callback(data1, g_marshal_value_peek_string(param_values + 1), value,
- data2);
-}
-
-/******************************************************************************
- * neardal_tools_prv__g_ptr_array_copy: duplicate a 'GPtrArray' array
- *****************************************************************************/
-// static void neardal_tools_g_ptr_array_add(gpointer data, gpointer array)
-// {
-// char *tmp;
-// tmp = g_strdup(data);
-// g_ptr_array_add(array, tmp);
-// }
-// void neardal_tools_prv_array_copy(gchar ***target, gchar **source)
-// {
-// if (*target == NULL)
-// *target = g_ptr_array_sized_new(source->len);
-// g_ptr_array_foreach(source, neardal_tools_g_ptr_array_add, *target);
-// }
-
-/******************************************************************************
- * neardal_tools_prv_g_ptr_array_free: free a 'GPtrArray' array
- *****************************************************************************/
-// static void neardal_tools_g_ptr_array_free_node(gpointer data, gpointer array)
-// {
-// (void) array; /* remove warning */
-// g_free(data);
-// }
-// void neardal_tools_prv_g_ptr_array_free(GPtrArray *array)
-// {
-// g_ptr_array_foreach(array, neardal_tools_g_ptr_array_free_node, NULL);
-// g_ptr_array_free(array, TRUE);
-// }
-
/******************************************************************************
* neardal_tools_prv_free_gerror: freeing gerror in neardal context
*****************************************************************************/
/******************************************************************************
* neardal_tools_add_dict_entry: add an entry in a dictionnary
*****************************************************************************/
-errorCode_t neardal_tools_add_dict_entry(GHashTable *hash, gchar *key,
- gchar *value)
-{
- errorCode_t err = NEARDAL_ERROR_NO_MEMORY;
- GValue *gvalue;
-
- g_assert(hash != NULL);
-
- gvalue = g_try_malloc0(sizeof(GValue));
- if (gvalue == NULL)
- goto error;
+errorCode_t neardal_tools_add_dict_entry(GVariantBuilder *builder, gchar *key,
+ void *value, int gVariantType)
+{
+ GVariant *tmp;
+ g_assert(builder != NULL);
+
+ switch(gVariantType) {
+ case G_TYPE_STRING:
+ tmp = g_variant_new_string(value);
+ break;
+ case G_TYPE_UINT:
+ tmp = g_variant_new_uint32((guint32) value);
+ break;
+ }
+ g_variant_builder_add(builder, "{sv}", key, tmp);
- g_value_init (gvalue, G_TYPE_STRING);
- g_value_set_string (gvalue, value);
- g_hash_table_insert (hash, (char *) key, gvalue);
-
- err = NEARDAL_SUCCESS;
-
-error:
- return err;
+ return NEARDAL_SUCCESS;
}
/******************************************************************************
* neardal_tools_add_dict_entry: add an entry in a dictionnary
*****************************************************************************/
-errorCode_t neardal_tools_add_dict_entry(GHashTable *hash, gchar *key,
- gchar *value);
+errorCode_t neardal_tools_add_dict_entry(GVariantBuilder *builder, gchar *key,
+ void *value, int gVariantType);
#ifdef __cplusplus
}
#define NEARDAL_TRACEIN() (void)0
#endif /* NEARDAL_DEBUG */
/* always defined */
+#define NEARDAL_TRACE_LOG(msg, ...) neardal_trace(stdout, \
+ "%s() : " msg, __func__, ##__VA_ARGS__)
#define NEARDAL_TRACE_ERR(msg, ...) neardal_trace(stderr, \
"%s(ERR) : " msg, __func__, ##__VA_ARGS__)
NCL_CMD_PRINT(".. HandOver:\t\t%s\n" ,
record.handOver ? "TRUE" : "FALSE");
NCL_CMD_PRINT(".. Language:\t\t%s\n" , record.language);
- NCL_CMD_PRINT(".. SmartPoster:\t\t%s\n" ,
- record.smartPoster ? "TRUE" : "FALSE");
NCL_CMD_PRINT(".. Action:\t\t%s\n" , record.action);
NCL_CMD_PRINT(".. Type:\t\t%s\n" , record.type);
NCL_CMD_PRINT(".. Representation:\t%s\n", record.representation);
NCL_CMD_PRINT(".. URI:\t\t\t%s\n" , record.uri);
+ NCL_CMD_PRINT(".. URI size:\t\t%d\n" , record.uriObjSize);
NCL_CMD_PRINT(".. MIME:\t\t%s\n" , record.mime);
}
/* Parse options */
memset(&rcd, 0, sizeof(neardal_record));
nclErr = ncl_cmd_prv_parseOptions(&argc, &argv, options);
+ if (nclErr == NCLERR_NOERROR_HELP_DISP) {
+ ncl_cmd_print(stdout, "Sample (Type 'Text'):");
+ ncl_cmd_print(stdout, "e.g. < publish --type Text --lang en-US \
+--encoding UTF-8 --rep \"Simple text\" --adp /org/neard/nfc0 >\n");
+ ncl_cmd_print(stdout, "Sample (Type 'URI'):");
+ ncl_cmd_print(stdout, "e.g. < publish --type URI \
+--uri=http://www.nfc-forum.com --adp /org/neard/nfc0 >\n");
+ ncl_cmd_print(stdout, "Sample (Type 'SmartPoster'):");
+ ncl_cmd_print(stdout, "e.g. < publish --type=SmartPoster \
+--uri=http://www.nfc-forum.com > --adp /org/neard/nfc0 >\n");
+ }
+
if (nclErr != NCLERR_NOERROR)
goto exit;
- rcd.smartPoster = (smartPoster != 0) ? true : false;
/* Check if NEARDAL object exist */
if (sNclCmdCtx.neardalMgr == NULL) {