On Fri, 17 Feb 2012 21:40:37 -0500 Michael Blumenkrantz <michael.blumenkra...@gmail.com> said:
> Hi, > > Attached is a very tiny demo which showcases a pretty huge (imo) bug in > ecore-con-url: multiple simultaneous fetches are broken. When more than one > curl object is added, only the last one will actually be fetched. can't reproduce. i expanded your demo to call progress/data/complete callbacks. attached src and log. downloads both urls - in parallel (well for the first bit). the first 33.9kb data is fetched completely as is the 64.8k data. i haven't actually checked the data itself - but everything else is showing "all ok". no proxy set up here for this test btw. i ran a second test with a proxy (well proxy fwd'd via an ssh tunnel to the other side of the world) and it works too with slightly different fetch ordering. attached logs+src. my svn updated and completely rebuilt just before this test was run. -- ------------- Codito, ergo sum - "I code, therefore I am" -------------- The Rasterman (Carsten Haitzler) ras...@rasterman.com
/* gcc ecore_con_url_example.c -o ecore_con_url_example `pkg-config --cflags --libs ecore ecore-con` */ #include <Ecore.h> #include <Ecore_Con.h> Ecore_Con_Url *url1, *url2; static const char * url_num_get(Ecore_Con_Url *url) { if (url == url1) return "URL1"; else if (url == url2) return "URL2"; return "????"; } static Eina_Bool data_cb(void *data, int ev_type, void *event) { Ecore_Con_Event_Url_Data *ev = event; printf("[%s] data size = %i\n", url_num_get(ev->url_con), ev->size); return EINA_FALSE; } static Eina_Bool progress_cb(void *data, int ev_type, void *event) { Ecore_Con_Event_Url_Progress *ev = event; printf("[%s] progress %1.1fKB / %1.1fKB\n", url_num_get(ev->url_con), ev->down.now / 1024, ev->down.total / 1024); return EINA_FALSE; } static Eina_Bool complete_cb(void *data, int ev_type, void *event) { Ecore_Con_Event_Url_Complete *ev = event; printf("[%s] complete status %i\n", url_num_get(ev->url_con), ev->status); return EINA_FALSE; } int main(void) { eina_init(); ecore_init(); ecore_con_init(); ecore_con_url_init(); ecore_event_handler_add(ECORE_CON_EVENT_URL_DATA, data_cb, NULL); ecore_event_handler_add(ECORE_CON_EVENT_URL_PROGRESS, progress_cb, NULL); ecore_event_handler_add(ECORE_CON_EVENT_URL_COMPLETE, complete_cb, NULL); url1 = ecore_con_url_new("http://www.dreamincode.net/forums/uploads/monthly_05_2010/post-380028-12747928967239.jpg.pagespeed.ce.yRppR_j7ae.jpg"); printf("[%p]-> URL1\n", url1); ecore_con_url_get(url1); url2 = ecore_con_url_new("http://www.prelovac.com/vladimir/wp-content/uploads/2008/03/example.jpg"); printf("[%p]-> URL2\n", url2); ecore_con_url_get(url2); ecore_main_loop_begin(); return 0; }
ecore_con_url_example.log
Description: Binary data
ecore_con_url_example-proxy.log
Description: Binary data
------------------------------------------------------------------------------ Virtualization & Cloud Management Using Capacity Planning Cloud computing makes use of virtualization - but cloud computing also focuses on allowing computing to be delivered as a service. http://www.accelacomm.com/jaw/sfnl/114/51521223/
_______________________________________________ enlightenment-devel mailing list enlightenment-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-devel