On Fri, 17 Feb 2012 21:40:37 -0500 Michael Blumenkrantz <[email protected]> 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) [email protected]
/*
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 [email protected] https://lists.sourceforge.net/lists/listinfo/enlightenment-devel
