diff --git a/legacy/eio/configure.ac b/legacy/eio/configure.ac index 18a9aae273..20a855cc4b 100644 --- a/legacy/eio/configure.ac +++ b/legacy/eio/configure.ac @@ -74,7 +74,6 @@ dnl we just have set the version info, then: AC_SUBST(version_info) AC_PROG_CC - # pkg-config PKG_PROG_PKG_CONFIG @@ -94,7 +93,7 @@ EFL_CHECK_DOXYGEN([build_doc="yes"], [build_doc="no"]) ### Checks for libraries -requirements_eio="eina >= 1.0.0 ecore >= 1.0.0" +requirements_eio="eet >= 1.5.0 eina >= 1.0.0 ecore >= 1.0.0" PKG_CHECK_MODULES([EIO], [${requirements_eio}]) diff --git a/legacy/eio/src/lib/Eio.h b/legacy/eio/src/lib/Eio.h index f7538be2d6..3efa840fb0 100644 --- a/legacy/eio/src/lib/Eio.h +++ b/legacy/eio/src/lib/Eio.h @@ -31,6 +31,7 @@ #include #include +#include #ifdef EAPI # undef EAPI @@ -123,17 +124,21 @@ typedef void (*Eio_Main_Direct_Cb)(void *data, Eio_File *handler, const Eina_Fil typedef void (*Eio_Stat_Cb)(void *data, Eio_File *handler, const struct stat *stat); typedef void (*Eio_Progress_Cb)(void *data, Eio_File *handler, const Eio_Progress *info); +typedef void (*Eio_Eet_Open_Cb)(void *data, Eio_File *handler, Eet_File *file); typedef void (*Eio_Open_Cb)(void *data, Eio_File *handler, Eina_File *file); - typedef Eina_Bool (*Eio_Filter_Map_Cb)(void *data, Eio_File *handler, void *map, size_t length); - typedef void (*Eio_Map_Cb)(void *data, Eio_File *handler, void *map, size_t length); +typedef Eina_Bool (*Eio_Filter_Map_Cb)(void *data, Eio_File *handler, void *map, size_t length); +typedef void (*Eio_Map_Cb)(void *data, Eio_File *handler, void *map, size_t length); -typedef void (*Eio_Done_Data_Cb)(void *data, Eio_File *handler, const char *xattr_data, unsigned int xattr_size); +typedef void (*Eio_Done_Data_Cb)(void *data, Eio_File *handler, const char *read_data, unsigned int size); typedef void (*Eio_Done_String_Cb)(void *data, Eio_File *handler, const char *xattr_string); typedef void (*Eio_Done_Double_Cb)(void *data, Eio_File *handler, double xattr_double); -typedef void (*Eio_Done_Int_Cb)(void *data, Eio_File *handler, int xattr_int); +typedef void (*Eio_Done_Int_Cb)(void *data, Eio_File *handler, int i); +typedef void (*Eio_Done_ERead_Cb)(void *data, Eio_File *handler, void *decoded); +typedef void (*Eio_Done_Read_Cb)(void *data, Eio_File *handler, void *read_data, unsigned int size); typedef void (*Eio_Done_Cb)(void *data, Eio_File *handler); typedef void (*Eio_Error_Cb)(void *data, Eio_File *handler, int error); +typedef void (*Eio_Eet_Error_Cb)(void *data, Eio_File *handler, Eet_Error err); struct _Eio_Progress { @@ -774,6 +779,89 @@ EAPI Eio_File *eio_file_map_new(Eina_File *f, * @} */ +/** + * @defgroup Eio_Eet Eio asynchronous API for Eet file. + * + * @brief This set of functions help use Eet asynchronously + * + * @{ + */ + +EAPI Eio_File *eio_eet_open(const char *filename, + Eet_File_Mode mode, + Eio_Eet_Open_Cb eet_cb, + Eio_Error_Cb error_cb, + const void *data); + +EAPI Eio_File *eio_eet_close(Eet_File *ef, + Eio_Done_Cb done_cb, + Eio_Eet_Error_Cb error_cb, + const void *data); + +EAPI Eio_File *eio_eet_sync(Eet_File *ef, + Eio_Done_Cb done_cb, + Eio_Eet_Error_Cb error_cb, + const void *data); + +EAPI Eio_File *eio_eet_data_write_cipher(Eet_File *ef, + Eet_Data_Descriptor *edd, + const char *name, + const char *cipher_key, + void *write_data, + int compress, + Eio_Done_Int_Cb done_cb, + Eio_Error_Cb error_cb, + const void *user_data); + +EAPI Eio_File *eio_eet_data_read_cipher(Eet_File *ef, + Eet_Data_Descriptor *edd, + const char *name, + const char *cipher_key, + Eio_Done_ERead_Cb done_cb, + Eio_Error_Cb error_cb, + const void *data); + +EAPI Eio_File *eio_eet_data_image_write_cipher(Eet_File *ef, + const char *name, + const char *cipher_key, + void *write_data, + unsigned int w, + unsigned int h, + int alpha, + int compress, + int quality, + int lossy, + Eio_Done_Int_Cb done_cb, + Eio_Error_Cb error_cb, + const void *user_data); + +EAPI Eio_File *eio_eet_read_direct(Eet_File *ef, + const char *name, + Eio_Done_Data_Cb done_cb, + Eio_Error_Cb error_cb, + const void *data); + +EAPI Eio_File *eio_eet_read_cipher(Eet_File *ef, + const char *name, + const char *cipher_key, + Eio_Done_Read_Cb done_cb, + Eio_Error_Cb error_cb, + const void *data); + +EAPI Eio_File *eio_eet_write_cipher(Eet_File *ef, + const char *name, + void *write_data, + int size, + int compress, + const char *cipher_key, + Eio_Done_Int_Cb done_cb, + Eio_Error_Cb error_cb, + const void *user_data); + +/** + * @} + */ + /** * @defgroup Eio_Monitor Eio file and directory monitoring API * diff --git a/legacy/eio/src/lib/Makefile.am b/legacy/eio/src/lib/Makefile.am index 24fa85955c..94d6abe340 100644 --- a/legacy/eio/src/lib/Makefile.am +++ b/legacy/eio/src/lib/Makefile.am @@ -17,6 +17,7 @@ eio_dir.c \ eio_monitor.c \ eio_poll.c \ eio_map.c \ +eio_eet.c \ eio_xattr.c if EIO_HAVE_INOTIFY diff --git a/legacy/eio/src/lib/eio_map.c b/legacy/eio/src/lib/eio_map.c index 3478d3ffd3..af53eea91b 100644 --- a/legacy/eio/src/lib/eio_map.c +++ b/legacy/eio/src/lib/eio_map.c @@ -43,7 +43,7 @@ _eio_file_open_job(void *data, Ecore_Thread *thread) static void _eio_file_open_free(Eio_File_Map *map) { - if (!map->name) eina_stringshare_del(map->name); + if (map->name) eina_stringshare_del(map->name); free(map); } diff --git a/legacy/eio/src/lib/eio_private.h b/legacy/eio/src/lib/eio_private.h index 8b548daaf6..42da6cade6 100644 --- a/legacy/eio/src/lib/eio_private.h +++ b/legacy/eio/src/lib/eio_private.h @@ -51,6 +51,11 @@ #define EIO_PACKED_TIME 0.003 +typedef struct _Eio_Eet_Open Eio_Eet_Open; +typedef struct _Eio_Eet_Simple Eio_Eet_Simple; +typedef struct _Eio_Eet_Write Eio_Eet_Write; +typedef struct _Eio_Eet_Read Eio_Eet_Read; +typedef struct _Eio_Eet_Image_Write Eio_Eet_Image_Write; typedef struct _Eio_File_Map Eio_File_Map; typedef struct _Eio_File_Map_Rule Eio_File_Map_Rule; typedef struct _Eio_File_Ls Eio_File_Ls; @@ -111,6 +116,81 @@ struct _Eio_File } worker, main; }; +struct _Eio_Eet_Simple +{ + Eio_File common; + + Eet_File *ef; + Eio_Eet_Error_Cb error_cb; + Eet_Error error; +}; + +struct _Eio_Eet_Write +{ + Eio_File common; + + Eet_File *ef; + Eet_Data_Descriptor *edd; + const char *name; + const char *cipher_key; + void *write_data; + int compress; + int size; + + int result; + Eio_Done_Int_Cb done_cb; +}; + +struct _Eio_Eet_Read +{ + Eio_File common; + + Eet_File *ef; + Eet_Data_Descriptor *edd; + const char *name; + const char *cipher_key; + + int size; + + void *result; + union { + Eio_Done_ERead_Cb eread; + Eio_Done_Data_Cb data; + Eio_Done_Read_Cb read; + } done_cb; +}; + +struct _Eio_Eet_Image_Write +{ + Eio_File common; + + Eet_File *ef; + const char *name; + const char *cipher_key; + void *write_data; + + unsigned int w; + unsigned int h; + int alpha; + int compress; + int quality; + int lossy; + + int result; + Eio_Done_Int_Cb done_cb; +}; + +struct _Eio_Eet_Open +{ + Eio_File common; + + Eio_Eet_Open_Cb eet_cb; + const char *filename; + Eet_File_Mode mode; + + Eet_File *result; +}; + struct _Eio_File_Map { Eio_File common;