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