migrate 'publish()' method to gdbus
authorFrederic PAUT <frederic.paut@linux.intel.com>
Tue, 6 Mar 2012 13:29:36 +0000 (14:29 +0100)
committerFrederic PAUT <frederic.paut@linux.intel.com>
Tue, 6 Mar 2012 13:29:36 +0000 (14:29 +0100)
lib/neardal.c
lib/neardal.h
lib/neardal_adapter.c
lib/neardal_manager.c
lib/neardal_record.c
lib/neardal_record.h
lib/neardal_target.c
lib/neardal_tools.c
lib/neardal_tools.h
lib/neardal_traces_prv.h
ncl/ncl_cmd.c

index dd48808..1c46f3e 100644 (file)
@@ -281,8 +281,8 @@ errorCode_t neardal_publish(neardal_t neardalMgr, neardal_record *record)
        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:
@@ -462,12 +462,12 @@ errorCode_t neardal_get_record_properties(neardal_t neardalMgr,
        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:
index a0cd4e2..f50d1a7 100644 (file)
@@ -102,8 +102,6 @@ technologies */
        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' */
@@ -112,6 +110,8 @@ technologies */
        const char      *representation;
 /*! @brief Uri datas */
        const char      *uri;
+//*! @brief Uri datas */
+       unsigned int    uriObjSize;
 /*! @brief MIME Type datas */
        const char      *mime;
 } neardal_record;
index 91cdd21..0e12e4c 100644 (file)
@@ -29,6 +29,7 @@
 #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>
 
 
 /******************************************************************************
@@ -231,7 +232,7 @@ static errorCode_t neardal_adp_prv_read_properties(AdpProp *adpProp)
                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);
@@ -520,31 +521,37 @@ errorCode_t neardal_adp_remove(neardal_t neardalMgr, AdpProp *adpProp)
  *****************************************************************************/
 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;
 }
index 196e74f..c010fc5 100644 (file)
@@ -132,8 +132,8 @@ static errorCode_t neardal_mgr_prv_get_all_adapters(neardal_t neardalMgr,
        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);
index 126806e..1f53dfe 100644 (file)
 #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
@@ -106,8 +55,18 @@ static errorCode_t neardal_rcd_prv_read_properties(RcdProp *rcd)
                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);
@@ -120,15 +79,15 @@ static errorCode_t neardal_rcd_prv_read_properties(RcdProp *rcd)
        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;
 }
@@ -187,69 +146,49 @@ static void neardal_rcd_prv_free(RcdProp **rcd)
 }
 
 /******************************************************************************
- * 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;
 }
 
index 8527db0..cc2fccd 100644 (file)
@@ -22,6 +22,7 @@
 #define __NEARDAL_RECORD_H
 
 #include "neard_record_proxy.h"
+#include <../lib/i386-linux-gnu/glib-2.0/include/glibconfig.h>
 
 #ifdef __cplusplus
 extern "C" {
@@ -39,11 +40,11 @@ typedef struct {
        gchar           *encoding;
        gboolean        handOver;
        gchar           *language;
-       gboolean        smartPoster;
        gchar           *action;
        gchar           *type;
        gchar           *representation;
        gchar           *uri;
+       gsize           uriObjSize;
        gchar           *mime;
 } RcdProp;
 
@@ -63,7 +64,7 @@ void neardal_rcd_remove(RcdProp *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
 }
index b015094..f04e7d4 100644 (file)
@@ -89,8 +89,7 @@ static errorCode_t neardal_tgt_prv_read_properties(TgtProp *tgtProp)
                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);
index b554f8a..dbb9e60 100644 (file)
 
 #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
  *****************************************************************************/
@@ -157,25 +89,22 @@ GHashTable *neardal_tools_create_dict(void)
 /******************************************************************************
  * 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;
 }
 
index 2bbfb5a..0890daf 100644 (file)
@@ -45,8 +45,8 @@ GHashTable *neardal_tools_create_dict(void);
 /******************************************************************************
  * 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
 }
index c3c7508..c6f7943 100644 (file)
@@ -48,6 +48,8 @@ extern "C" {
        #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__)
 
index ecb37fc..93abc87 100644 (file)
@@ -247,13 +247,12 @@ static void ncl_cmd_prv_dump_record(neardal_record record)
        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);
 }
 
@@ -733,9 +732,20 @@ static GOptionEntry options[] = {
        /* 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) {