Enlightenment CVS committal

Author  : chaos
Project : e17
Module  : apps/evfs

Dir     : e17/apps/evfs/src/common


Modified Files:
        evfs_cleanup.c evfs_common.c evfs_event_helper.c evfs_io.c 


Log Message:
Ok, lotsa changes:
* Abstracted out the plugin architecture.  Two plugins types now: Filesystem, 
and metadata provider
* Added audio tagger metadata provider (based on e_taggerd by CodeWarrior).  Be 
warned - metadata provider file type is hardcoded to go to this plugin for now 
- more later, including libextract)
* A few bug fixes, whatever ended up in this commit cycle

===================================================================
RCS file: /cvs/e/e17/apps/evfs/src/common/evfs_cleanup.c,v
retrieving revision 1.15
retrieving revision 1.16
diff -u -3 -r1.15 -r1.16
--- evfs_cleanup.c      8 Feb 2006 10:15:29 -0000       1.15
+++ evfs_cleanup.c      21 Apr 2006 15:10:16 -0000      1.16
@@ -128,6 +128,26 @@
 }
 
 void
+evfs_cleanup_metadata_event(evfs_event* event)
+{
+       evfs_meta_obj* obj;
+       Evas_List* l = event->meta->meta_list;
+       
+       for (; l ;) {
+               obj = l->data;
+               l = evas_list_remove(event->meta->meta_list, obj);
+               
+               free(obj->key);
+               free(obj->value);
+               free(obj);
+       }
+       evas_list_free(event->meta->meta_list);
+       free(event->meta);
+
+       /*FIXME - id if client, free hash*/
+}
+
+void
 evfs_cleanup_event(evfs_event * event)
 {
    evfs_cleanup_command(&event->resp_command, EVFS_CLEANUP_PRESERVE_COMMAND);
@@ -149,6 +169,8 @@
      case EVFS_EV_OPERATION:
         evfs_cleanup_operation_event(event);
         break;
+     case EVFS_EV_METADATA:
+       evfs_cleanup_metadata_event(event);
      }
 
    free(event);
===================================================================
RCS file: /cvs/e/e17/apps/evfs/src/common/evfs_common.c,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -3 -r1.3 -r1.4
--- evfs_common.c       12 Mar 2006 05:27:33 -0000      1.3
+++ evfs_common.c       21 Apr 2006 15:10:16 -0000      1.4
@@ -1,5 +1,11 @@
 #include "evfs.h"
 
+evfs_plugin*
+evfs_meta_plugin_get_for_type(evfs_server* server, char* mime)
+{
+       return ecore_hash_get(server->plugin_meta_hash, mime);
+}
+
 evfs_plugin *
 evfs_get_plugin_for_uri(evfs_server * server, char *uri_base)
 {
===================================================================
RCS file: /cvs/e/e17/apps/evfs/src/common/evfs_event_helper.c,v
retrieving revision 1.25
retrieving revision 1.26
diff -u -3 -r1.25 -r1.26
--- evfs_event_helper.c 5 Apr 2006 02:22:48 -0000       1.25
+++ evfs_event_helper.c 21 Apr 2006 15:10:16 -0000      1.26
@@ -144,3 +144,18 @@
    /*Destroy */
    evfs_cleanup_event(event);
 }
+
+void
+evfs_meta_data_event_create(evfs_client* client,evfs_command* command, 
Evas_List* ret_list)
+{
+   evfs_event *event = NEW(evfs_event);
+
+   event->type = EVFS_EV_METADATA;
+   event->meta = calloc(1, sizeof(evfs_event_meta));
+   event->meta->meta_list = ret_list;
+       
+   evfs_write_event(client, command, event);
+
+   /*Destroy */
+   evfs_cleanup_event(event);
+}
===================================================================
RCS file: /cvs/e/e17/apps/evfs/src/common/evfs_io.c,v
retrieving revision 1.52
retrieving revision 1.53
diff -u -3 -r1.52 -r1.53
--- evfs_io.c   5 Apr 2006 05:39:04 -0000       1.52
+++ evfs_io.c   21 Apr 2006 15:10:16 -0000      1.53
@@ -7,6 +7,9 @@
 static Eet_Data_Descriptor *_evfs_progress_event_edd;
 static Eet_Data_Descriptor *_evfs_operation_edd;
 static Eet_Data_Descriptor *_evfs_filemonitor_edd;
+static Eet_Data_Descriptor *_evfs_metalist_edd;
+static Eet_Data_Descriptor *_evfs_metaobj_edd;
+
 
 Eet_Data_Descriptor *
 evfs_io_filereference_edd_get()
@@ -79,6 +82,45 @@
    EET_DATA_DESCRIPTOR_ADD_BASIC(_evfs_progress_event_edd, evfs_event_progress,
                                  "type", type, EET_T_INT);
 
+
+   /*Meta obj eet*/
+   _evfs_metaobj_edd =       eet_data_descriptor_new("evfs_meta_obj",
+                              sizeof(evfs_meta_obj),
+                              (void *(*)(void *))evas_list_next,
+                              (void *(*)(void *, void *))evas_list_append,
+                              (void *(*)(void *))evas_list_data,
+                              (void *(*)(void *))evas_list_free,
+                              (void (*)
+                               (void *,
+                                int (*)(void *, const char *, void *, void *),
+                                void *))evas_hash_foreach, (void *(*)(void *,
+                                                                      const 
char
+                                                                      *,
+                                                                      void *))
+                              evas_hash_add, (void (*)(void *))evas_hash_free);
+   
+   EET_DATA_DESCRIPTOR_ADD_BASIC(_evfs_metaobj_edd, evfs_meta_obj, "key", key, 
EET_T_STRING);
+   EET_DATA_DESCRIPTOR_ADD_BASIC(_evfs_metaobj_edd, evfs_meta_obj, "value", 
value, EET_T_STRING);
+
+   /*Meta list eet*/
+   _evfs_metalist_edd =       eet_data_descriptor_new("evfs_metalist",
+                              sizeof(evfs_event_meta),
+                              (void *(*)(void *))evas_list_next,
+                              (void *(*)(void *, void *))evas_list_append,
+                              (void *(*)(void *))evas_list_data,
+                              (void *(*)(void *))evas_list_free,
+                              (void (*)
+                               (void *,
+                                int (*)(void *, const char *, void *, void *),
+                                void *))evas_hash_foreach, (void *(*)(void *,
+                                                                      const 
char
+                                                                      *,
+                                                                      void *))
+                              evas_hash_add, (void (*)(void *))evas_hash_free);
+   
+   EET_DATA_DESCRIPTOR_ADD_LIST(_evfs_metalist_edd, evfs_event_meta, 
"evfs_event_meta", meta_list,
+                       _evfs_metaobj_edd);
+
    /*Evfs_operation eet */
    _evfs_operation_edd =
       eet_data_descriptor_new("evfs_operation", sizeof(evfs_operation),
@@ -248,6 +290,26 @@
                                                              
event->data.size));
 }
 
+void evfs_write_meta_event(evfs_client * client, evfs_command * command,
+                          evfs_event * event)
+{
+   int size_ret = 0;
+   char *data;
+
+   data =
+      eet_data_descriptor_encode(_evfs_metalist_edd, event->meta,
+                                 &size_ret);
+
+   evfs_write_ecore_ipc_client_message(client->client,
+                                       ecore_ipc_message_new(EVFS_EV_REPLY,
+                                                             
EVFS_EV_PART_METALIST,
+                                                             client->id, 0, 0,
+                                                             data, size_ret));
+
+   free(data);
+
+}
+
 void
 evfs_write_progress_event(evfs_client * client, evfs_command * command,
                           evfs_event * event)
@@ -256,11 +318,6 @@
    evfs_filereference *ref;
    char *data;
 
-   if (event->progress->type == EVFS_PROGRESS_TYPE_DONE)
-     {
-        printf("Sendign Done!\n");
-     }
-
    data =
       eet_data_descriptor_encode(_evfs_progress_event_edd, event->progress,
                                  &size_ret);
@@ -347,6 +404,9 @@
      case EVFS_EV_FILE_PROGRESS:
         evfs_write_progress_event(client, command, event);
         break;
+     case EVFS_EV_METADATA:
+       evfs_write_meta_event(client,command,event);
+       break;
 
      case EVFS_EV_FILE_OPEN:
         printf("Open event send\n");
@@ -420,6 +480,33 @@
         }
         break;
 
+     
+     case EVFS_EV_PART_METALIST:
+       {
+               evfs_meta_obj* obj;
+               Evas_List* l;
+               
+               evfs_event_meta* meta = 
+                     eet_data_descriptor_decode(_evfs_metalist_edd, msg->data,
+                          msg->len);
+
+               /*Now we have to push this list to a hash..*/
+               event->meta = meta;
+               event->meta->meta_hash = ecore_hash_new(ecore_str_hash, 
ecore_str_compare);
+
+               for (l  = event->meta->meta_list; l; ) {
+                       obj = l->data;
+                       l = evas_list_remove(event->meta->meta_list, l->data);
+                       
+                       ecore_hash_set(event->meta->meta_hash, obj->key, 
obj->value);
+                       free(obj);
+
+               }
+               evas_list_free(event->meta->meta_list);
+
+       }
+     break;
+
      case EVFS_EV_PART_DATA:
         {
            event->data.size = msg->len;
@@ -558,6 +645,7 @@
      case EVFS_CMD_FILE_OPEN:
      case EVFS_CMD_FILE_READ:
      case EVFS_CMD_DIRECTORY_CREATE:
+     case EVFS_CMD_METADATA_RETRIEVE:
      case EVFS_CMD_PING:
         evfs_write_file_command(conn, command);
         break;
@@ -592,6 +680,7 @@
      case EVFS_CMD_FILE_OPEN:
      case EVFS_CMD_FILE_READ:
      case EVFS_CMD_DIRECTORY_CREATE:
+     case EVFS_CMD_METADATA_RETRIEVE:
      case EVFS_CMD_PING:
         evfs_write_file_command_client(client, command);
         break;




-------------------------------------------------------
Using Tomcat but need to do more? Need to support web services, security?
Get stuff done quickly with pre-integrated technology to make your job easier
Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642
_______________________________________________
enlightenment-cvs mailing list
enlightenment-cvs@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs

Reply via email to