revert all recent ecore-con related eo changes. completely broken.
authorMike Blumenkrantz <zmike@osg.samsung.com>
Sat, 30 Aug 2014 12:00:47 +0000 (08:00 -0400)
committerMike Blumenkrantz <zmike@osg.samsung.com>
Sat, 30 Aug 2014 12:12:54 +0000 (08:12 -0400)
please test things before committing.

reverts all changes since and including f6156c9a6234237757b61960c690e8d55779e764

src/Makefile_Ecore_Con.am
src/lib/ecore_con/Ecore_Con.h
src/lib/ecore_con/Ecore_Con_Eo.h
src/lib/ecore_con/Ecore_Con_Legacy.h
src/lib/ecore_con/ecore_con.c
src/lib/ecore_con/ecore_con_base.eo
src/lib/ecore_con/ecore_con_connector.eo [deleted file]
src/lib/ecore_con/ecore_con_private.h
src/lib/ecore_con/ecore_con_server.eo
src/lib/ecore_con/ecore_con_url.c
src/lib/ecore_con/ecore_con_url.eo [deleted file]

index 3fecaa2..ff79a38 100644 (file)
@@ -7,27 +7,19 @@ ecorecon_eobuiltheaders = \
                  lib/ecore_con/ecore_con_client.eo.h \
                  lib/ecore_con/ecore_con_client.eo.legacy.h \
                  lib/ecore_con/ecore_con_server.eo.h \
-                 lib/ecore_con/ecore_con_server.eo.legacy.h \
-                 lib/ecore_con/ecore_con_connector.eo.h \
-                 lib/ecore_con/ecore_con_connector.eo.legacy.h \
-                 lib/ecore_con/ecore_con_url.eo.h \
-                 lib/ecore_con/ecore_con_url.eo.legacy.h
+                 lib/ecore_con/ecore_con_server.eo.legacy.h
 
 BUILT_SOURCES += \
                  ${ecorecon_eobuiltheaders} \
                  lib/ecore_con/ecore_con_base.eo.c \
                  lib/ecore_con/ecore_con_client.eo.c \
-                 lib/ecore_con/ecore_con_server.eo.c \
-                 lib/ecore_con/ecore_con_connector.eo.c \
-                 lib/ecore_con/ecore_con_url.eo.c
+                 lib/ecore_con/ecore_con_server.eo.c
 
 ecoreconeolianfilesdir = $(datadir)/eolian/include/ecore-@VMAJ@
 ecoreconeolianfiles_DATA = \
               lib/ecore_con/ecore_con_base.eo \
               lib/ecore_con/ecore_con_client.eo \
-              lib/ecore_con/ecore_con_server.eo \
-              lib/ecore_con/ecore_con_connector.eo \
-              lib/ecore_con/ecore_con_url.eo
+              lib/ecore_con/ecore_con_server.eo
 
 EXTRA_DIST += \
               ${ecoreconeolianfiles_DATA}
index 4e012c5..e8cc5f1 100644 (file)
@@ -232,7 +232,12 @@ typedef Eo Ecore_Con;
  */
 typedef struct Ecore_Con_Socks Ecore_Con_Socks;
 
-typedef enum _Ecore_Con_Type Ecore_Con_Type;
+/**
+ * @typedef Ecore_Con_Url
+ * A handle to an http upload/download object
+ * @ingroup Ecore_Con_Url_Group
+ */
+typedef struct _Ecore_Con_Url Ecore_Con_Url;
 
 #ifndef EFL_NOLEGACY_API_SUPPORT
 #include "Ecore_Con_Legacy.h"
@@ -1392,7 +1397,25 @@ EAPI Ecore_Con_Url *   ecore_con_url_custom_new(const char *url,
  * @see ecore_con_url_new()
  */
 EAPI void              ecore_con_url_free(Ecore_Con_Url *url_con);
-
+/**
+ * Sets the URL to send the request to.
+ *
+ * @param url_con Connection object through which the request will be sent.
+ * @param url URL that will receive the request
+ *
+ * @return @c EINA_TRUE on success, @c EINA_FALSE on error.
+ */
+EAPI Eina_Bool         ecore_con_url_url_set(Ecore_Con_Url *url_con,
+                                             const char *url);
+/**
+ * Gets the URL to send the request to.
+ *
+ * @param url_con Connection object through which the request will be sent.
+ * @return URL that will receive the request, @c NULL on failure. URL is
+ * stringshared.
+ * @since 1.1
+ */
+EAPI const char       *ecore_con_url_url_get(Ecore_Con_Url *url_con);
 /**
  * Associates data with a connection object.
  *
index aa3719a..9bddda4 100644 (file)
@@ -1,5 +1,3 @@
 #include "ecore_con_base.eo.h"
 #include "ecore_con_server.eo.h"
-#include "ecore_con_connector.eo.h"
 #include "ecore_con_client.eo.h"
-#include "ecore_con_url.eo.h"
index 11fa2d1..f655080 100644 (file)
@@ -1,5 +1,3 @@
 #include "ecore_con_base.eo.legacy.h"
 #include "ecore_con_server.eo.legacy.h"
-#include "ecore_con_connector.eo.legacy.h"
 #include "ecore_con_client.eo.legacy.h"
-#include "ecore_con_url.eo.legacy.h"
index ace1ef4..14db253 100644 (file)
@@ -107,14 +107,6 @@ static void        _ecore_con_lookup_done(void *data,
 
 static const char *_ecore_con_pretty_ip(struct sockaddr *client_addr);
 
-#define EO_CONSTRUCTOR_CHECK_RETURN(obj) do { \
-     if (eo_do(obj, eo_finalized_get())) \
-       { \
-          ERR("This function is only allowed during construction."); \
-          return; \
-       } \
-} while (0)
-
 #ifdef HAVE_SYSTEMD
 int sd_fd_index = 0;
 int sd_fd_max = 0;
@@ -290,10 +282,7 @@ _ecore_con_base_lookup(Eo *kls_obj EINA_UNUSED, void *pd EINA_UNUSED, const char
    if (!name || !done_cb)
      return EINA_FALSE;
 
-   obj = eo_add(ECORE_CON_SERVER_CLASS, NULL,
-         ecore_con_server_obj_connection_type_set(ECORE_CON_REMOTE_TCP),
-         ecore_con_server_obj_name_set(name),
-         ecore_con_obj_port_set(1025));
+   obj = eo_add(ECORE_CON_SERVER_CLASS, NULL);
    Ecore_Con_Server_Data *svr = eo_data_scope_get(obj, ECORE_CON_SERVER_CLASS);
    if (!svr)
      return EINA_FALSE;
@@ -312,7 +301,14 @@ _ecore_con_base_lookup(Eo *kls_obj EINA_UNUSED, void *pd EINA_UNUSED, const char
    if (!svr->name)
      goto on_error;
 
+   svr->type = ECORE_CON_REMOTE_TCP;
+   svr->port = 1025;
    svr->data = lk;
+   svr->created = EINA_TRUE;
+   svr->reject_excess_clients = EINA_FALSE;
+   svr->client_limit = -1;
+   svr->clients = NULL;
+   svr->ppid = getpid();
 
    memset(&hints, 0, sizeof(struct addrinfo));
    hints.ai_family = AF_UNSPEC;
@@ -354,53 +350,39 @@ ecore_con_server_add(Ecore_Con_Type compl_type,
                      const void *data)
 {
    Ecore_Con_Server *obj;
+   Ecore_Con_Type type;
+
+   if (port < 0 || !name)
+     return NULL;  /* local  user   socket: FILE:   ~/.ecore/[name]/[port] */
 
    /* local  system socket: FILE:   /tmp/.ecore_service|[name]|[port] */
    /* remote system socket: TCP/IP: [name]:[port] */
-   obj = eo_add(ECORE_CON_SERVER_CLASS, NULL,
-         ecore_con_server_obj_connection_type_set(compl_type),
-         ecore_con_server_obj_name_set(name),
-         ecore_con_obj_port_set(port));
-
-   ecore_con_server_data_set(obj, (void *) data);
-
-   return obj;
-}
-
-EOLIAN static void
-_ecore_con_server_eo_base_constructor(Ecore_Con_Server *obj, Ecore_Con_Server_Data *svr)
-{
-   eo_do_super(obj, ECORE_CON_SERVER_CLASS, eo_constructor());
+   obj = eo_add(ECORE_CON_SERVER_CLASS, NULL);
+   Ecore_Con_Server_Data *svr = eo_data_scope_get(obj, ECORE_CON_SERVER_CLASS);
 
    svr->fd = -1;
    svr->start_time = ecore_time_get();
+   svr->type = compl_type;
+   svr->port = port;
+   svr->data = (void *)data;
    svr->created = EINA_TRUE;
+   svr->use_cert = (compl_type & ECORE_CON_SSL & ECORE_CON_LOAD_CERT) == ECORE_CON_LOAD_CERT;
    svr->reject_excess_clients = EINA_FALSE;
    svr->client_limit = -1;
    svr->clients = NULL;
    svr->ppid = getpid();
-}
-
-EOLIAN static Eo *
-_ecore_con_server_eo_base_finalize(Ecore_Con_Server *obj, Ecore_Con_Server_Data *svr)
-{
-   Ecore_Con_Type compl_type = svr->type;
-   Ecore_Con_Type type;
-
-   eo_do_super(obj, ECORE_CON_SERVER_CLASS, eo_finalize());
-
-   svr->use_cert = (svr->type & ECORE_CON_SSL & ECORE_CON_LOAD_CERT) == ECORE_CON_LOAD_CERT;
 
    servers = eina_list_append(servers, obj);
 
-   type = compl_type & ECORE_CON_TYPE;
-
+   svr->name = strdup(name);
    if (!svr->name)
      goto error;
 
    if (ecore_con_ssl_server_prepare(obj, compl_type & ECORE_CON_SSL))
      goto error;
 
+   type = compl_type & ECORE_CON_TYPE;
+
    if ((type == ECORE_CON_LOCAL_USER) ||
        (type == ECORE_CON_LOCAL_SYSTEM) ||
        (type == ECORE_CON_LOCAL_ABSTRACT))
@@ -444,36 +426,31 @@ ecore_con_server_connect(Ecore_Con_Type compl_type,
                          const void *data)
 {
    Ecore_Con_Server *obj;
+   Ecore_Con_Type type;
+
+   if ((!name) || (!name[0]))
+     return NULL;
    /* local  user   socket: FILE:   ~/.ecore/[name]/[port] */
    /* local  system socket: FILE:   /tmp/.ecore_service|[name]|[port] */
    /* remote system socket: TCP/IP: [name]:[port] */
-   obj = eo_add(ECORE_CON_CONNECTOR_CLASS, NULL,
-         ecore_con_server_obj_connection_type_set(compl_type),
-         ecore_con_server_obj_name_set(name),
-         ecore_con_obj_port_set(port));
-
-   ecore_con_server_data_set(obj, (void *) data);
-
-   return obj;
-}
-
-EOLIAN static Eo *
-_ecore_con_connector_eo_base_finalize(Ecore_Con_Server *obj, void *pd EINA_UNUSED)
-{
+   obj = eo_add(ECORE_CON_SERVER_CLASS, NULL);
    Ecore_Con_Server_Data *svr = eo_data_scope_get(obj, ECORE_CON_SERVER_CLASS);
-   Ecore_Con_Type compl_type = svr->type;
-   Ecore_Con_Type type;
-
-   /* XXX: We intentionally put SERVER class here and not connector, as we'd
-    * like to skip that one. */
-   eo_do_super(obj, ECORE_CON_SERVER_CLASS, eo_finalize());
-
 
+   svr->fd = -1;
+   svr->type = compl_type;
+   svr->port = port;
+   svr->data = (void *)data;
+   svr->created = EINA_FALSE;
    svr->use_cert = (compl_type & ECORE_CON_SSL & ECORE_CON_LOAD_CERT) == ECORE_CON_LOAD_CERT;
    svr->disable_proxy = (compl_type & ECORE_CON_SUPER_SSL & ECORE_CON_NO_PROXY) == ECORE_CON_NO_PROXY;
+   svr->reject_excess_clients = EINA_FALSE;
+   svr->clients = NULL;
+   svr->client_limit = -1;
+
    servers = eina_list_append(servers, obj);
 
-   if (!svr->name || (svr->port < 0))
+   svr->name = strdup(name);
+   if (!svr->name)
      goto error;
 
    type = compl_type & ECORE_CON_TYPE;
@@ -502,7 +479,7 @@ _ecore_con_connector_eo_base_finalize(Ecore_Con_Server *obj, void *pd EINA_UNUSE
                              (type == ECORE_CON_REMOTE_CORK) ||
                              (type == ECORE_CON_REMOTE_UDP) ||
                              (type == ECORE_CON_REMOTE_BROADCAST)) &&
-                            (svr->port < 0), error);
+                            (port < 0), error);
 
    if ((type == ECORE_CON_LOCAL_USER) ||
        (type == ECORE_CON_LOCAL_SYSTEM) ||
@@ -617,31 +594,6 @@ _ecore_con_server_clients_get(Eo *obj EINA_UNUSED, Ecore_Con_Server_Data *svr)
    return svr->clients;
 }
 
-EOLIAN static void
-_ecore_con_server_connection_type_set(Eo *obj, Ecore_Con_Server_Data *svr, Ecore_Con_Type type)
-{
-   EO_CONSTRUCTOR_CHECK_RETURN(obj);
-
-   svr->type = type;
-}
-
-EOLIAN static Ecore_Con_Type
-_ecore_con_server_connection_type_get(Eo *obj EINA_UNUSED, Ecore_Con_Server_Data *svr)
-{
-   return svr->type;
-}
-
-EOLIAN static void
-_ecore_con_server_name_set(Eo *obj EINA_UNUSED, Ecore_Con_Server_Data *svr, const char *name)
-{
-   EO_CONSTRUCTOR_CHECK_RETURN(obj);
-
-   if (svr->name)
-      free(svr->name);
-
-   svr->name = strdup(name);
-}
-
 EOLIAN static const char *
 _ecore_con_server_name_get(Eo *obj EINA_UNUSED, Ecore_Con_Server_Data *svr)
 {
@@ -654,14 +606,6 @@ ecore_con_server_port_get(const Ecore_Con *obj)
    return eo_do((Ecore_Con *)obj, ecore_con_obj_port_get());
 }
 
-EOLIAN static void
-_ecore_con_server_ecore_con_base_port_set(Eo *obj EINA_UNUSED, Ecore_Con_Server_Data *svr, int port)
-{
-   EO_CONSTRUCTOR_CHECK_RETURN(obj);
-
-   svr->port = port;
-}
-
 EOLIAN static int
 _ecore_con_server_ecore_con_base_port_get(Eo *obj EINA_UNUSED, Ecore_Con_Server_Data *svr)
 {
@@ -1283,7 +1227,7 @@ _ecore_con_server_eo_base_destructor(Eo *obj, Ecore_Con_Server_Data *svr)
    Ecore_Con_Client *cl_obj;
    double t_start, t;
 
-   if (svr->event_count) goto end;
+   if (svr->event_count) return;
 
    while (svr->infos)
      {
@@ -1309,7 +1253,7 @@ _ecore_con_server_eo_base_destructor(Eo *obj, Ecore_Con_Server_Data *svr)
 #ifdef _WIN32
    ecore_con_local_win32_server_del(obj);
 #endif
-   if (svr->event_count) goto end;
+   if (svr->event_count) return;
 
    if (svr->buf)
      eina_binbuf_free(svr->buf);
@@ -1352,7 +1296,6 @@ _ecore_con_server_eo_base_destructor(Eo *obj, Ecore_Con_Server_Data *svr)
    servers = eina_list_remove(servers, obj);
    svr->data = NULL;
 
-end:
    eo_do_super(obj, ECORE_CON_SERVER_CLASS, eo_destructor());
 }
 
@@ -2837,4 +2780,3 @@ _ecore_con_lookup_done(void *data,
 #include "ecore_con_base.eo.c"
 #include "ecore_con_client.eo.c"
 #include "ecore_con_server.eo.c"
-#include "ecore_con_connector.eo.c"
index e6eed1b..d1e3845 100644 (file)
@@ -38,9 +38,6 @@ abstract Ecore.Con.Base (Eo.Base) {
           * @brief Return the port that the obj is connected to
           *
           */
-         set {
-             legacy: null;
-         }
          get {
              legacy: null;
          }
@@ -198,9 +195,7 @@ type Ecore_Con_Dns_Cb: func void (const(char) *canonname,
 * Add events (to all of the ecore con stuff, e.g url).
 * Make server the father of the client - make sure I don't leak references.
 *
-* Still need to add constructor client, and most likely migrate ecore_con_eet.
+* Still need to add constructors to server/client, and most likely migrate ecore_con_eet.
 *
 * Split server to two classes, listener and connector (or w/e).
-*
-* Mark the constructing properties all around.
 */
diff --git a/src/lib/ecore_con/ecore_con_connector.eo b/src/lib/ecore_con/ecore_con_connector.eo
deleted file mode 100644 (file)
index 9952637..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-class Ecore.Con.Connector (Ecore.Con.Server) {
-   legacy_prefix: null;
-   eo_prefix: ecore_con_connector_obj;
-   data: null;
-   implements {
-      Eo.Base.finalize;
-   }
-}
index 93942e2..53c024a 100644 (file)
@@ -198,6 +198,33 @@ struct _Ecore_Con_Server_Data
 
 typedef struct _Ecore_Con_Server_Data Ecore_Con_Server_Data;
 
+struct _Ecore_Con_Url
+{
+   ECORE_MAGIC;
+   void *curl_easy;
+   struct curl_slist *headers;
+   Eina_List *additional_headers;
+   Eina_List *response_headers;
+   const char *url;
+   long proxy_type;
+   int status;
+
+   Ecore_Timer *timer;
+
+   Ecore_Con_Url_Time time_condition;
+   double timestamp;
+   void *data;
+   
+   void *post_data;
+
+   int received;
+   int write_fd;
+
+   unsigned int event_count;
+   Eina_Bool dead : 1;
+   Eina_Bool multi : 1;
+};
+
 struct _Ecore_Con_Info
 {
    unsigned int size;
index 83151cc..8fbd016 100644 (file)
@@ -1,3 +1,4 @@
+/* FIXME: make abstract. */
 class Ecore.Con.Server (Ecore.Con.Base) {
    eo_prefix: ecore_con_server_obj;
    properties {
@@ -7,9 +8,6 @@ class Ecore.Con.Server (Ecore.Con.Base) {
           *
           * The name returned is the name used to connect on this server.
           */
-         set {
-            legacy: null;
-         }
          get {
          }
          values {
@@ -54,25 +52,11 @@ class Ecore.Con.Server (Ecore.Con.Base) {
             const(Eina_List <const(Ecore.Con.Client) *>) *clients; /*@ The list of clients on this server. */
          }
       }
-      connection_type {
-        get {
-            legacy: null;
-        }
-        set {
-            legacy: null;
-        }
-        values {
-            Ecore_Con_Type conn_type;
-        }
-      }
    }
    implements {
-      Eo.Base.constructor;
       Eo.Base.destructor;
-      Eo.Base.finalize;
       Ecore.Con.Base.ip.get;
       Ecore.Con.Base.uptime.get;
-      Ecore.Con.Base.port.set;
       Ecore.Con.Base.port.get;
       Ecore.Con.Base.fd.get;
       Ecore.Con.Base.connected.get;
index c1cb638..b6ea436 100644 (file)
@@ -30,8 +30,6 @@
 #include "Ecore_Con.h"
 #include "ecore_con_private.h"
 
-#define MY_CLASS ECORE_CON_URL_CLASS
-
 // all the types, defines, enums etc. from curl that we actuall USE.
 // we have to add to this if we use more things from curl not already
 // defined here. see culr headers to get them from
@@ -224,34 +222,6 @@ struct _Ecore_Con_Curl
    curl_version_info_data *(*curl_version_info)(CURLversion);
 };
 
-struct _Ecore_Con_Url_Data
-{
-   void *curl_easy;
-   struct curl_slist *headers;
-   Eina_List *additional_headers;
-   Eina_List *response_headers;
-   const char *url;
-   long proxy_type;
-   int status;
-
-   Ecore_Timer *timer;
-
-   Ecore_Con_Url_Time time_condition;
-   double timestamp;
-   void *data;
-   
-   void *post_data;
-
-   int received;
-   int write_fd;
-
-   unsigned int event_count;
-   Eina_Bool dead : 1;
-   Eina_Bool multi : 1;
-};
-
-typedef struct _Ecore_Con_Url_Data Ecore_Con_Url_Data;
-
 #define CURL_MIN_TIMEOUT 100
 
 int ECORE_CON_EVENT_URL_DATA = 0;
@@ -432,40 +402,29 @@ extern Ecore_Con_Socks *_ecore_con_proxy_global;
 EAPI Ecore_Con_Url *
 ecore_con_url_new(const char *url)
 {
-   Ecore_Con_Url *url_obj;
-   url_obj = eo_add(ECORE_CON_URL_CLASS, NULL,
-         ecore_con_url_obj_url_set(url));
+   Ecore_Con_Url *url_con;
+   CURLcode ret;
 
-   return url_obj;
-}
+   if (!_init_count) return NULL;
+   if (!_c_init()) return NULL;
 
-EOLIAN static void
-_ecore_con_url_eo_base_constructor(Ecore_Con_Url *url_obj, Ecore_Con_Url_Data *url_con EINA_UNUSED)
-{
-   eo_do_super(url_obj, MY_CLASS, eo_constructor());
+   url_con = calloc(1, sizeof(Ecore_Con_Url));
+   if (!url_con) return NULL;
 
-   if (!_init_count) eo_error_set(url_obj);
-   if (!_c_init()) eo_error_set(url_obj);
+   url_con->write_fd = -1;
 
    url_con->curl_easy = _c->curl_easy_init();
    if (!url_con->curl_easy)
      {
-        eo_error_set(url_obj);
-        return;
+        free(url_con);
+        return NULL;
      }
 
-}
-
-EOLIAN static Eo *
-_ecore_con_url_eo_base_finalize(Ecore_Con_Url *url_obj, Ecore_Con_Url_Data *url_con)
-{
-   CURLcode ret;
-
-   url_con->write_fd = -1;
+   ECORE_MAGIC_SET(url_con, ECORE_MAGIC_CON_URL);
 
-   if (!url_con->url)
+   if (!ecore_con_url_url_set(url_con, url))
      {
-        ecore_con_url_free(url_obj);
+        ecore_con_url_free(url_con);
         return NULL;
      }
 
@@ -503,8 +462,8 @@ _ecore_con_url_eo_base_finalize(Ecore_Con_Url *url_obj, Ecore_Con_Url_Data *url_
                    _ecore_con_proxy_global->port);
         else snprintf(proxy, sizeof(proxy), "%s", host);
 
-        ecore_con_url_proxy_set(url_obj, proxy);
-        ecore_con_url_proxy_username_set(url_obj,
+        ecore_con_url_proxy_set(url_con, proxy);
+        ecore_con_url_proxy_username_set(url_con,
                                          _ecore_con_proxy_global->username);
      }
 
@@ -514,45 +473,44 @@ _ecore_con_url_eo_base_finalize(Ecore_Con_Url *url_obj, Ecore_Con_Url_Data *url_
      {
         ERR("Could not set CURLOPT_ENCODING to \"gzip,deflate\": %s",
             _c->curl_easy_strerror(ret));
-        ecore_con_url_free(url_obj);
+        ecore_con_url_free(url_con);
         return NULL;
      }
 
    _c->curl_easy_setopt(url_con->curl_easy, CURLOPT_WRITEFUNCTION,
                         _ecore_con_url_data_cb);
-   _c->curl_easy_setopt(url_con->curl_easy, CURLOPT_WRITEDATA, url_obj);
+   _c->curl_easy_setopt(url_con->curl_easy, CURLOPT_WRITEDATA, url_con);
 
    _c->curl_easy_setopt(url_con->curl_easy, CURLOPT_PROGRESSFUNCTION,
                         _ecore_con_url_progress_cb);
-   _c->curl_easy_setopt(url_con->curl_easy, CURLOPT_PROGRESSDATA, url_obj);
+   _c->curl_easy_setopt(url_con->curl_easy, CURLOPT_PROGRESSDATA, url_con);
    _c->curl_easy_setopt(url_con->curl_easy, CURLOPT_NOPROGRESS, EINA_FALSE);
 
    _c->curl_easy_setopt(url_con->curl_easy, CURLOPT_HEADERFUNCTION,
                         _ecore_con_url_header_cb);
-   _c->curl_easy_setopt(url_con->curl_easy, CURLOPT_HEADERDATA, url_obj);
+   _c->curl_easy_setopt(url_con->curl_easy, CURLOPT_HEADERDATA, url_con);
    /*
     * FIXME: Check that these timeouts are sensible defaults
     * FIXME: Provide a means to change these timeouts
     */
    _c->curl_easy_setopt(url_con->curl_easy, CURLOPT_CONNECTTIMEOUT, 30);
    _c->curl_easy_setopt(url_con->curl_easy, CURLOPT_FOLLOWLOCATION, 1);
-   return url_obj;
+   return url_con;
 }
 
 EAPI Ecore_Con_Url *
 ecore_con_url_custom_new(const char *url,
                          const char *custom_request)
 {
-   Ecore_Con_Url *url_obj;
+   Ecore_Con_Url *url_con;
    CURLcode ret;
 
    if (!_init_count) return NULL;
    if (!_c_init()) return NULL;
    if (!url) return NULL;
    if (!custom_request) return NULL;
-   url_obj = ecore_con_url_new(url);
-   if (!url_obj) return NULL;
-   Ecore_Con_Url_Data *url_con = eo_data_scope_get(url_obj, MY_CLASS);
+   url_con = ecore_con_url_new(url);
+   if (!url_con) return NULL;
 
    ret = _c->curl_easy_setopt(url_con->curl_easy, CURLOPT_CUSTOMREQUEST,
                               custom_request);
@@ -560,27 +518,23 @@ ecore_con_url_custom_new(const char *url,
      {
         ERR("Could not set a custom request string: %s",
             _c->curl_easy_strerror(ret));
-        ecore_con_url_free(url_obj);
+        ecore_con_url_free(url_con);
         return NULL;
      }
-   return url_obj;
+   return url_con;
 }
 
 EAPI void
-ecore_con_url_free(Ecore_Con_Url *url_obj)
-{
-   if (!eo_isa(url_obj, ECORE_CON_URL_CLASS))
-      return;
-
-   eo_del(url_obj);
-}
-
-EOLIAN static void
-_ecore_con_url_eo_base_destructor(Ecore_Con_Url *url_obj, Ecore_Con_Url_Data *url_con)
+ecore_con_url_free(Ecore_Con_Url *url_con)
 {
    char *s;
 
    if (!_c) return;
+   if (!ECORE_MAGIC_CHECK(url_con, ECORE_MAGIC_CON_URL))
+     {
+        ECORE_MAGIC_FAIL(url_con, ECORE_MAGIC_CON_URL, __func__);
+        return;
+     }
    if (url_con->curl_easy)
      {
         // FIXME : How can we delete curl_easy's fds ??
@@ -593,8 +547,8 @@ _ecore_con_url_eo_base_destructor(Ecore_Con_Url *url_obj, Ecore_Con_Url_Data *ur
 
         if (url_con->multi)
           {
-             _ecore_con_url_multi_remove(url_obj);
-             _url_con_list = eina_list_remove(_url_con_list, url_obj);
+             _ecore_con_url_multi_remove(url_con);
+             _url_con_list = eina_list_remove(_url_con_list, url_con);
           }
 
         _c->curl_easy_cleanup(url_con->curl_easy);
@@ -605,6 +559,7 @@ _ecore_con_url_eo_base_destructor(Ecore_Con_Url *url_obj, Ecore_Con_Url_Data *ur
    url_con->timer = NULL;
    url_con->dead = EINA_TRUE;
    if (url_con->event_count) return;
+   ECORE_MAGIC_SET(url_con, ECORE_MAGIC_NONE);
 
    _c->curl_slist_free_all(url_con->headers);
    EINA_LIST_FREE(url_con->additional_headers, s)
@@ -613,29 +568,42 @@ _ecore_con_url_eo_base_destructor(Ecore_Con_Url *url_obj, Ecore_Con_Url_Data *ur
      free(s);
    eina_stringshare_del(url_con->url);
    if (url_con->post_data) free(url_con->post_data);
+   free(url_con);
 }
 
-EOLIAN static const char *
-_ecore_con_url_url_get(Ecore_Con_Url *url_obj EINA_UNUSED, Ecore_Con_Url_Data *url_con)
+EAPI const char *
+ecore_con_url_url_get(Ecore_Con_Url *url_con)
 {
+   if (!ECORE_MAGIC_CHECK(url_con, ECORE_MAGIC_CON_URL))
+     {
+        ECORE_MAGIC_FAIL(url_con, ECORE_MAGIC_CON_URL, __func__);
+        return NULL;
+     }
    return url_con->url;
 }
 
 EAPI int
-ecore_con_url_status_code_get(Ecore_Con_Url *url_obj)
+ecore_con_url_status_code_get(Ecore_Con_Url *url_con)
 {
-   Ecore_Con_Url_Data *url_con = eo_data_scope_get(url_obj, MY_CLASS);
-   if (!eo_isa(url_obj, ECORE_CON_URL_CLASS))
-      return 0;
+   if (!ECORE_MAGIC_CHECK(url_con, ECORE_MAGIC_CON_URL))
+     {
+        ECORE_MAGIC_FAIL(url_con, ECORE_MAGIC_CON_URL, __func__);
+        return 0;
+     }
    if (url_con->status) return url_con->status;
-   _ecore_con_url_status_get(url_obj);
+   _ecore_con_url_status_get(url_con);
    return url_con->status;
 }
 
-EOLIAN static Eina_Bool
-_ecore_con_url_url_set(Ecore_Con_Url *url_obj EINA_UNUSED, Ecore_Con_Url_Data *url_con, const char *url)
+EAPI Eina_Bool
+ecore_con_url_url_set(Ecore_Con_Url *url_con, const char *url)
 {
    if (!_c) return EINA_FALSE;
+   if (!ECORE_MAGIC_CHECK(url_con, ECORE_MAGIC_CON_URL))
+     {
+        ECORE_MAGIC_FAIL(url_con, ECORE_MAGIC_CON_URL, __func__);
+        return EINA_FALSE;
+     }
    if (url_con->dead) return EINA_FALSE;
    eina_stringshare_replace(&url_con->url, url);
    if (url_con->url)
@@ -647,22 +615,27 @@ _ecore_con_url_url_set(Ecore_Con_Url *url_obj EINA_UNUSED, Ecore_Con_Url_Data *u
 }
 
 EAPI void
-ecore_con_url_data_set(Ecore_Con_Url *url_obj, void *data)
+ecore_con_url_data_set(Ecore_Con_Url *url_con, void *data)
 {
-   Ecore_Con_Url_Data *url_con = eo_data_scope_get(url_obj, MY_CLASS);
-   if (!eo_isa(url_obj, ECORE_CON_URL_CLASS))
-      return;
+   if (!ECORE_MAGIC_CHECK(url_con, ECORE_MAGIC_CON_URL))
+     {
+        ECORE_MAGIC_FAIL(url_con, ECORE_MAGIC_CON_URL, __func__);
+        return;
+     }
    url_con->data = data;
 }
 
 EAPI void
-ecore_con_url_additional_header_add(Ecore_Con_Url *url_obj, const char *key, const char *value)
+ecore_con_url_additional_header_add(Ecore_Con_Url *url_con, const char *key, const char *value)
 {
-   Ecore_Con_Url_Data *url_con = eo_data_scope_get(url_obj, MY_CLASS);
-   if (!eo_isa(url_obj, ECORE_CON_URL_CLASS))
-      return;
    char *tmp;
 
+   if (!ECORE_MAGIC_CHECK(url_con, ECORE_MAGIC_CON_URL))
+     {
+        ECORE_MAGIC_FAIL(url_con, ECORE_MAGIC_CON_URL, __func__);
+        return;
+     }
+
    if (url_con->dead) return;
    tmp = malloc(strlen(key) + strlen(value) + 3);
    if (!tmp) return;
@@ -672,75 +645,89 @@ ecore_con_url_additional_header_add(Ecore_Con_Url *url_obj, const char *key, con
 }
 
 EAPI void
-ecore_con_url_additional_headers_clear(Ecore_Con_Url *url_obj)
+ecore_con_url_additional_headers_clear(Ecore_Con_Url *url_con)
 {
-   Ecore_Con_Url_Data *url_con = eo_data_scope_get(url_obj, MY_CLASS);
-   if (!eo_isa(url_obj, ECORE_CON_URL_CLASS))
-      return;
    char *s;
 
+   if (!ECORE_MAGIC_CHECK(url_con, ECORE_MAGIC_CON_URL))
+     {
+        ECORE_MAGIC_FAIL(url_con, ECORE_MAGIC_CON_URL, __func__);
+        return;
+     }
    EINA_LIST_FREE(url_con->additional_headers, s)
      free(s);
 }
 
 EAPI void *
-ecore_con_url_data_get(Ecore_Con_Url *url_obj)
+ecore_con_url_data_get(Ecore_Con_Url *url_con)
 {
-   Ecore_Con_Url_Data *url_con = eo_data_scope_get(url_obj, MY_CLASS);
-   if (!eo_isa(url_obj, ECORE_CON_URL_CLASS))
-      return NULL;
+   if (!ECORE_MAGIC_CHECK(url_con, ECORE_MAGIC_CON_URL))
+     {
+        ECORE_MAGIC_FAIL(url_con, ECORE_MAGIC_CON_URL, __func__);
+        return NULL;
+     }
    return url_con->data;
 }
 
 EAPI void
-ecore_con_url_time(Ecore_Con_Url *url_obj, Ecore_Con_Url_Time condition, double timestamp)
+ecore_con_url_time(Ecore_Con_Url *url_con, Ecore_Con_Url_Time condition, double timestamp)
 {
-   Ecore_Con_Url_Data *url_con = eo_data_scope_get(url_obj, MY_CLASS);
-   if (!eo_isa(url_obj, ECORE_CON_URL_CLASS))
-      return;
+   if (!ECORE_MAGIC_CHECK(url_con, ECORE_MAGIC_CON_URL))
+     {
+        ECORE_MAGIC_FAIL(url_con, ECORE_MAGIC_CON_URL, __func__);
+        return;
+     }
    if (url_con->dead) return;
    url_con->time_condition = condition;
    url_con->timestamp = timestamp;
 }
 
 EAPI void
-ecore_con_url_fd_set(Ecore_Con_Url *url_obj, int fd)
+ecore_con_url_fd_set(Ecore_Con_Url *url_con, int fd)
 {
-   Ecore_Con_Url_Data *url_con = eo_data_scope_get(url_obj, MY_CLASS);
-   if (!eo_isa(url_obj, ECORE_CON_URL_CLASS))
-      return;
+   if (!ECORE_MAGIC_CHECK(url_con, ECORE_MAGIC_CON_URL))
+     {
+        ECORE_MAGIC_FAIL(url_con, ECORE_MAGIC_CON_URL, __func__);
+        return;
+     }
    if (url_con->dead) return;
    url_con->write_fd = fd;
 }
 
 EAPI int
-ecore_con_url_received_bytes_get(Ecore_Con_Url *url_obj)
+ecore_con_url_received_bytes_get(Ecore_Con_Url *url_con)
 {
-   Ecore_Con_Url_Data *url_con = eo_data_scope_get(url_obj, MY_CLASS);
-   if (!eo_isa(url_obj, ECORE_CON_URL_CLASS))
-      return -1;
+   if (!ECORE_MAGIC_CHECK(url_con, ECORE_MAGIC_CON_URL))
+     {
+        ECORE_MAGIC_FAIL(url_con, ECORE_MAGIC_CON_URL, __func__);
+        return -1;
+     }
    return url_con->received;
 }
 
 EAPI const Eina_List *
-ecore_con_url_response_headers_get(Ecore_Con_Url *url_obj)
+ecore_con_url_response_headers_get(Ecore_Con_Url *url_con)
 {
-   Ecore_Con_Url_Data *url_con = eo_data_scope_get(url_obj, MY_CLASS);
-   if (!eo_isa(url_obj, ECORE_CON_URL_CLASS))
-      return NULL;
+   if (!ECORE_MAGIC_CHECK(url_con, ECORE_MAGIC_CON_URL))
+     {
+        ECORE_MAGIC_FAIL(url_con, ECORE_MAGIC_CON_URL, __func__);
+        return NULL;
+     }
    return url_con->response_headers;
 }
 
 EAPI Eina_Bool
-ecore_con_url_httpauth_set(Ecore_Con_Url *url_obj, const char *username, const char *password, Eina_Bool safe)
+ecore_con_url_httpauth_set(Ecore_Con_Url *url_con, const char *username, const char *password, Eina_Bool safe)
 {
-   Ecore_Con_Url_Data *url_con = eo_data_scope_get(url_obj, MY_CLASS);
-   if (!eo_isa(url_obj, ECORE_CON_URL_CLASS))
-      return EINA_FALSE;
    CURLcode ret;
    curl_version_info_data *vers = NULL;
 
    if (!_c) return EINA_FALSE;
+   if (!ECORE_MAGIC_CHECK(url_con, ECORE_MAGIC_CON_URL))
+     {
+        ECORE_MAGIC_FAIL(url_con, ECORE_MAGIC_CON_URL, __func__);
+        return EINA_FALSE;
+     }
    if (url_con->dead) return EINA_FALSE;
    vers = _c->curl_version_info(CURLVERSION_NOW);
    if (vers->version_num >= 0x071301)
@@ -782,16 +769,18 @@ ecore_con_url_httpauth_set(Ecore_Con_Url *url_obj, const char *username, const c
 #define MODE_POST 2
 
 static Eina_Bool
-_ecore_con_url_send(Ecore_Con_Url *url_obj, int mode, const void *data, long length, const char *content_type)
+_ecore_con_url_send(Ecore_Con_Url *url_con, int mode, const void *data, long length, const char *content_type)
 {
-   Ecore_Con_Url_Data *url_con = eo_data_scope_get(url_obj, MY_CLASS);
-   if (!eo_isa(url_obj, ECORE_CON_URL_CLASS))
-      return EINA_FALSE;
    Eina_List *l;
    const char *s;
    char tmp[512];
 
    if (!_c) return EINA_FALSE;
+   if (!ECORE_MAGIC_CHECK(url_con, ECORE_MAGIC_CON_URL))
+     {
+        ECORE_MAGIC_FAIL(url_con, ECORE_MAGIC_CON_URL, __func__);
+        return EINA_FALSE;
+     }
 
    if (!url_con->url) return EINA_FALSE;
    if (url_con->dead) return EINA_FALSE;
@@ -864,7 +853,7 @@ _ecore_con_url_send(Ecore_Con_Url *url_obj, int mode, const void *data, long len
    _c->curl_easy_setopt(url_con->curl_easy, CURLOPT_HTTPHEADER,
                         url_con->headers);
    url_con->received = 0;
-   return _ecore_con_url_perform(url_obj);
+   return _ecore_con_url_perform(url_con);
 }
 
 EAPI Eina_Bool
@@ -880,11 +869,8 @@ ecore_con_url_post(Ecore_Con_Url *url_con, const void *data, long length, const
 }
 
 EAPI Eina_Bool
-ecore_con_url_ftp_upload(Ecore_Con_Url *url_obj, const char *filename, const char *user, const char *pass, const char *upload_dir)
+ecore_con_url_ftp_upload(Ecore_Con_Url *url_con, const char *filename, const char *user, const char *pass, const char *upload_dir)
 {
-   Ecore_Con_Url_Data *url_con = eo_data_scope_get(url_obj, MY_CLASS);
-   if (!eo_isa(url_obj, MY_CLASS))
-      return EINA_FALSE;
    char url[4096];
    char userpwd[4096];
    FILE *fd;
@@ -892,6 +878,11 @@ ecore_con_url_ftp_upload(Ecore_Con_Url *url_obj, const char *filename, const cha
    CURLcode ret;
 
    if (!_c) return EINA_FALSE;
+   if (!ECORE_MAGIC_CHECK(url_con, ECORE_MAGIC_CON_URL))
+     {
+        ECORE_MAGIC_FAIL(url_con, ECORE_MAGIC_CON_URL, __func__);
+        return EINA_FALSE;
+     }
 
    if (url_con->dead) return EINA_FALSE;
    if (!url_con->url) return EINA_FALSE;
@@ -918,7 +909,7 @@ ecore_con_url_ftp_upload(Ecore_Con_Url *url_obj, const char *filename, const cha
      snprintf(url, sizeof(url), "ftp://%s/%s", url_con->url,
               basename(tmp));
 
-   if (!ecore_con_url_url_set(url_obj, url))
+   if (!ecore_con_url_url_set(url_con, url))
      return EINA_FALSE;
    _c->curl_easy_setopt(url_con->curl_easy, CURLOPT_INFILESIZE_LARGE,
                         (off_t)file_info.st_size);
@@ -932,73 +923,85 @@ ecore_con_url_ftp_upload(Ecore_Con_Url *url_obj, const char *filename, const cha
         return EINA_FALSE;
      }
    _c->curl_easy_setopt(url_con->curl_easy, CURLOPT_READDATA, fd);
-   return _ecore_con_url_perform(url_obj);
+   return _ecore_con_url_perform(url_con);
 }
 
 EAPI void
-ecore_con_url_cookies_init(Ecore_Con_Url *url_obj)
+ecore_con_url_cookies_init(Ecore_Con_Url *url_con)
 {
-   Ecore_Con_Url_Data *url_con = eo_data_scope_get(url_obj, MY_CLASS);
-   if (!eo_isa(url_obj, ECORE_CON_URL_CLASS))
-      return;
    if (!_c) return;
+   if (!ECORE_MAGIC_CHECK(url_con, ECORE_MAGIC_CON_URL))
+     {
+        ECORE_MAGIC_FAIL(url_con, ECORE_MAGIC_CON_URL, __func__);
+        return;
+     }
    if (url_con->dead) return;
    _c->curl_easy_setopt(url_con->curl_easy, CURLOPT_COOKIEFILE, "");
 }
 
 EAPI void
-ecore_con_url_cookies_ignore_old_session_set(Ecore_Con_Url *url_obj, Eina_Bool ignore)
+ecore_con_url_cookies_ignore_old_session_set(Ecore_Con_Url *url_con, Eina_Bool ignore)
 {
-   Ecore_Con_Url_Data *url_con = eo_data_scope_get(url_obj, MY_CLASS);
-   if (!eo_isa(url_obj, ECORE_CON_URL_CLASS))
-      return;
    if (!_c) return;
+   if (!ECORE_MAGIC_CHECK(url_con, ECORE_MAGIC_CON_URL))
+     {
+        ECORE_MAGIC_FAIL(url_con, ECORE_MAGIC_CON_URL, __func__);
+        return;
+     }
    if (url_con->dead) return;
    _c->curl_easy_setopt(url_con->curl_easy, CURLOPT_COOKIESESSION, ignore);
 }
 
 EAPI void
-ecore_con_url_cookies_clear(Ecore_Con_Url *url_obj)
+ecore_con_url_cookies_clear(Ecore_Con_Url *url_con)
 {
-   Ecore_Con_Url_Data *url_con = eo_data_scope_get(url_obj, MY_CLASS);
-   if (!eo_isa(url_obj, ECORE_CON_URL_CLASS))
-      return;
    if (!_c) return;
+   if (!ECORE_MAGIC_CHECK(url_con, ECORE_MAGIC_CON_URL))
+     {
+        ECORE_MAGIC_FAIL(url_con, ECORE_MAGIC_CON_URL, __func__);
+        return;
+     }
    if (url_con->dead) return;
    _c->curl_easy_setopt(url_con->curl_easy, CURLOPT_COOKIELIST, "ALL");
 }
 
 EAPI void
-ecore_con_url_cookies_session_clear(Ecore_Con_Url *url_obj)
+ecore_con_url_cookies_session_clear(Ecore_Con_Url *url_con)
 {
-   Ecore_Con_Url_Data *url_con = eo_data_scope_get(url_obj, MY_CLASS);
-   if (!eo_isa(url_obj, ECORE_CON_URL_CLASS))
-      return;
    if (!_c) return;
+   if (!ECORE_MAGIC_CHECK(url_con, ECORE_MAGIC_CON_URL))
+     {
+        ECORE_MAGIC_FAIL(url_con, ECORE_MAGIC_CON_URL, __func__);
+        return;
+     }
    if (url_con->dead) return;
    _c->curl_easy_setopt(url_con->curl_easy, CURLOPT_COOKIELIST, "SESS");
 }
 
 EAPI void
-ecore_con_url_cookies_file_add(Ecore_Con_Url *url_obj, const char *const file_name)
+ecore_con_url_cookies_file_add(Ecore_Con_Url *url_con, const char *const file_name)
 {
-   Ecore_Con_Url_Data *url_con = eo_data_scope_get(url_obj, MY_CLASS);
-   if (!eo_isa(url_obj, ECORE_CON_URL_CLASS))
-      return;
    if (!_c) return;
+   if (!ECORE_MAGIC_CHECK(url_con, ECORE_MAGIC_CON_URL))
+     {
+        ECORE_MAGIC_FAIL(url_con, ECORE_MAGIC_CON_URL, __func__);
+        return;
+     }
    if (url_con->dead) return;
    _c->curl_easy_setopt(url_con->curl_easy, CURLOPT_COOKIEFILE, file_name);
 }
 
 EAPI Eina_Bool
-ecore_con_url_cookies_jar_file_set(Ecore_Con_Url *url_obj, const char *const cookiejar_file)
+ecore_con_url_cookies_jar_file_set(Ecore_Con_Url *url_con, const char *const cookiejar_file)
 {
-   Ecore_Con_Url_Data *url_con = eo_data_scope_get(url_obj, MY_CLASS);
-   if (!eo_isa(url_obj, ECORE_CON_URL_CLASS))
-      return EINA_FALSE;
    CURLcode ret;
 
    if (!_c) return EINA_FALSE;
+   if (!ECORE_MAGIC_CHECK(url_con, ECORE_MAGIC_CON_URL))
+     {
+        ECORE_MAGIC_FAIL(url_con, ECORE_MAGIC_CON_URL, __func__);
+        return EINA_FALSE;
+     }
    if (url_con->dead) return EINA_FALSE;
    ret = _c->curl_easy_setopt(url_con->curl_easy, CURLOPT_COOKIEJAR,
                               cookiejar_file);
@@ -1012,36 +1015,42 @@ ecore_con_url_cookies_jar_file_set(Ecore_Con_Url *url_obj, const char *const coo
 }
 
 EAPI void
-ecore_con_url_cookies_jar_write(Ecore_Con_Url *url_obj)
+ecore_con_url_cookies_jar_write(Ecore_Con_Url *url_con)
 {
-   Ecore_Con_Url_Data *url_con = eo_data_scope_get(url_obj, MY_CLASS);
-   if (!eo_isa(url_obj, ECORE_CON_URL_CLASS))
-      return;
    if (!_c) return;
+   if (!ECORE_MAGIC_CHECK(url_con, ECORE_MAGIC_CON_URL))
+     {
+        ECORE_MAGIC_FAIL(url_con, ECORE_MAGIC_CON_URL, __func__);
+        return;
+     }
 
    if (url_con->dead) return;
    _c->curl_easy_setopt(url_con->curl_easy, CURLOPT_COOKIELIST, "FLUSH");
 }
 
 EAPI void
-ecore_con_url_verbose_set(Ecore_Con_Url *url_obj, Eina_Bool verbose)
+ecore_con_url_verbose_set(Ecore_Con_Url *url_con, Eina_Bool verbose)
 {
-   Ecore_Con_Url_Data *url_con = eo_data_scope_get(url_obj, MY_CLASS);
-   if (!eo_isa(url_obj, ECORE_CON_URL_CLASS))
-      return;
    if (!_c) return;
+   if (!ECORE_MAGIC_CHECK(url_con, ECORE_MAGIC_CON_URL))
+     {
+        ECORE_MAGIC_FAIL(url_con, ECORE_MAGIC_CON_URL, __func__);
+        return;
+     }
    if (!url_con->url) return;
    if (url_con->dead) return;
    _c->curl_easy_setopt(url_con->curl_easy, CURLOPT_VERBOSE, (int)verbose);
 }
 
 EAPI void
-ecore_con_url_ftp_use_epsv_set(Ecore_Con_Url *url_obj, Eina_Bool use_epsv)
+ecore_con_url_ftp_use_epsv_set(Ecore_Con_Url *url_con, Eina_Bool use_epsv)
 {
-   Ecore_Con_Url_Data *url_con = eo_data_scope_get(url_obj, MY_CLASS);
-   if (!eo_isa(url_obj, ECORE_CON_URL_CLASS))
-      return;
    if (!_c) return;
+   if (!ECORE_MAGIC_CHECK(url_con, ECORE_MAGIC_CON_URL))
+     {
+        ECORE_MAGIC_FAIL(url_con, ECORE_MAGIC_CON_URL, __func__);
+        return;
+     }
    if (!url_con->url) return;
    if (url_con->dead) return;
    _c->curl_easy_setopt(url_con->curl_easy, CURLOPT_FTP_USE_EPSV,
@@ -1061,12 +1070,14 @@ ecore_con_url_ftp_use_epsv_set(Ecore_Con_Url *url_obj, Eina_Bool use_epsv)
  * @since 1.1.0
  */
 EAPI void
-ecore_con_url_ssl_verify_peer_set(Ecore_Con_Url *url_obj, Eina_Bool verify)
+ecore_con_url_ssl_verify_peer_set(Ecore_Con_Url *url_con, Eina_Bool verify)
 {
-   Ecore_Con_Url_Data *url_con = eo_data_scope_get(url_obj, MY_CLASS);
-   if (!eo_isa(url_obj, ECORE_CON_URL_CLASS))
-      return;
    if (!_c) return;
+   if (!ECORE_MAGIC_CHECK(url_con, ECORE_MAGIC_CON_URL))
+     {
+        ECORE_MAGIC_FAIL(url_con, ECORE_MAGIC_CON_URL, __func__);
+        return;
+     }
    if (!url_con->url) return;
    if (url_con->dead) return;
    _c->curl_easy_setopt(url_con->curl_easy, CURLOPT_SSL_VERIFYPEER,
@@ -1092,14 +1103,16 @@ ecore_con_url_ssl_verify_peer_set(Ecore_Con_Url *url_obj, Eina_Bool verify)
  *          are equal to cURL error codes.
  */
 EAPI int
-ecore_con_url_ssl_ca_set(Ecore_Con_Url *url_obj, const char *ca_path)
+ecore_con_url_ssl_ca_set(Ecore_Con_Url *url_con, const char *ca_path)
 {
-   Ecore_Con_Url_Data *url_con = eo_data_scope_get(url_obj, MY_CLASS);
-   if (!eo_isa(url_obj, ECORE_CON_URL_CLASS))
-      return -1;
    int res = -1;
 
    if (!_c) return -1;
+   if (!ECORE_MAGIC_CHECK(url_con, ECORE_MAGIC_CON_URL))
+     {
+        ECORE_MAGIC_FAIL(url_con, ECORE_MAGIC_CON_URL, __func__);
+        return -1;
+     }
    if (!url_con->url) return -1;
    if (url_con->dead) return -1;
    if (ca_path == NULL)
@@ -1116,14 +1129,16 @@ ecore_con_url_ssl_ca_set(Ecore_Con_Url *url_obj, const char *ca_path)
 }
 
 EAPI Eina_Bool
-ecore_con_url_http_version_set(Ecore_Con_Url *url_obj, Ecore_Con_Url_Http_Version version)
+ecore_con_url_http_version_set(Ecore_Con_Url *url_con, Ecore_Con_Url_Http_Version version)
 {
-   Ecore_Con_Url_Data *url_con = eo_data_scope_get(url_obj, MY_CLASS);
-   if (!eo_isa(url_obj, ECORE_CON_URL_CLASS))
-      return EINA_FALSE;
    int res = -1;
 
    if (!_c) return EINA_FALSE;
+   if (!ECORE_MAGIC_CHECK(url_con, ECORE_MAGIC_CON_URL))
+     {
+        ECORE_MAGIC_FAIL(url_con, ECORE_MAGIC_CON_URL, __func__);
+        return EINA_FALSE;
+     }
    if (url_con->dead) return EINA_FALSE;
    switch (version)
      {
@@ -1151,15 +1166,17 @@ ecore_con_url_http_version_set(Ecore_Con_Url *url_obj, Ecore_Con_Url_Http_Versio
 }
 
 EAPI Eina_Bool
-ecore_con_url_proxy_set(Ecore_Con_Url *url_obj, const char *proxy)
+ecore_con_url_proxy_set(Ecore_Con_Url *url_con, const char *proxy)
 {
-   Ecore_Con_Url_Data *url_con = eo_data_scope_get(url_obj, MY_CLASS);
-   if (!eo_isa(url_obj, ECORE_CON_URL_CLASS))
-      return EINA_FALSE;
    int res = -1;
    curl_version_info_data *vers = NULL;
 
    if (!_c) return EINA_FALSE;
+   if (!ECORE_MAGIC_CHECK(url_con, ECORE_MAGIC_CON_URL))
+     {
+        ECORE_MAGIC_FAIL(url_con, ECORE_MAGIC_CON_URL, __func__);
+        return EINA_FALSE;
+     }
    if (!url_con->url) return EINA_FALSE;
    if (url_con->dead) return EINA_FALSE;
    if (!proxy)
@@ -1203,27 +1220,31 @@ ecore_con_url_proxy_set(Ecore_Con_Url *url_obj, const char *proxy)
 }
 
 EAPI void
-ecore_con_url_timeout_set(Ecore_Con_Url *url_obj, double timeout)
+ecore_con_url_timeout_set(Ecore_Con_Url *url_con, double timeout)
 {
-   Ecore_Con_Url_Data *url_con = eo_data_scope_get(url_obj, MY_CLASS);
-   if (!eo_isa(url_obj, ECORE_CON_URL_CLASS))
-      return;
+   if (!ECORE_MAGIC_CHECK(url_con, ECORE_MAGIC_CON_URL))
+     {
+        ECORE_MAGIC_FAIL(url_con, ECORE_MAGIC_CON_URL, __func__);
+        return;
+     }
    if (url_con->dead) return;
    if (!url_con->url || timeout < 0) return;
    if (url_con->timer) ecore_timer_del(url_con->timer);
    url_con->timer = ecore_timer_add(timeout, _ecore_con_url_timeout_cb,
-                                    url_obj);
+                                    url_con);
 }
 
 EAPI Eina_Bool
-ecore_con_url_proxy_username_set(Ecore_Con_Url *url_obj, const char *username)
+ecore_con_url_proxy_username_set(Ecore_Con_Url *url_con, const char *username)
 {
-   Ecore_Con_Url_Data *url_con = eo_data_scope_get(url_obj, MY_CLASS);
-   if (!eo_isa(url_obj, ECORE_CON_URL_CLASS))
-      return EINA_FALSE;
    int res = -1;
 
    if (!_c) return EINA_FALSE;
+   if (!ECORE_MAGIC_CHECK(url_con, ECORE_MAGIC_CON_URL))
+     {
+        ECORE_MAGIC_FAIL(url_con, ECORE_MAGIC_CON_URL, __func__);
+        return EINA_FALSE;
+     }
    if (url_con->dead) return EINA_FALSE;
    if (!url_con->url) return EINA_FALSE;
    if ((!username) || (!username[0])) return EINA_FALSE;
@@ -1244,14 +1265,16 @@ ecore_con_url_proxy_username_set(Ecore_Con_Url *url_obj, const char *username)
 }
 
 EAPI Eina_Bool
-ecore_con_url_proxy_password_set(Ecore_Con_Url *url_obj, const char *password)
+ecore_con_url_proxy_password_set(Ecore_Con_Url *url_con, const char *password)
 {
-   Ecore_Con_Url_Data *url_con = eo_data_scope_get(url_obj, MY_CLASS);
-   if (!eo_isa(url_obj, ECORE_CON_URL_CLASS))
-      return EINA_FALSE;
    int res = -1;
 
    if (!_c) return EINA_FALSE;
+   if (!ECORE_MAGIC_CHECK(url_con, ECORE_MAGIC_CON_URL))
+     {
+        ECORE_MAGIC_FAIL(url_con, ECORE_MAGIC_CON_URL, __func__);
+        return EINA_FALSE;
+     }
    if (!url_con->url) return EINA_FALSE;
    if (url_con->dead) return EINA_FALSE;
    if (!password) return EINA_FALSE;
@@ -1274,9 +1297,8 @@ ecore_con_url_proxy_password_set(Ecore_Con_Url *url_obj, const char *password)
  */
 
 static void
-_ecore_con_url_status_get(Ecore_Con_Url *url_obj)
+_ecore_con_url_status_get(Ecore_Con_Url *url_con)
 {
-   Ecore_Con_Url_Data *url_con = eo_data_scope_get(url_obj, MY_CLASS);
    long status = 0;
 
    if (!_c) return;
@@ -1289,9 +1311,8 @@ _ecore_con_url_status_get(Ecore_Con_Url *url_obj)
 }
 
 static void
-_ecore_con_url_event_url_complete(Ecore_Con_Url *url_obj, CURLMsg *curlmsg)
+_ecore_con_url_event_url_complete(Ecore_Con_Url *url_con, CURLMsg *curlmsg)
 {
-   Ecore_Con_Url_Data *url_con = eo_data_scope_get(url_obj, MY_CLASS);
    Ecore_Con_Event_Url_Complete *e;
    int status = url_con->status;
 
@@ -1312,7 +1333,7 @@ _ecore_con_url_event_url_complete(Ecore_Con_Url *url_obj, CURLMsg *curlmsg)
      {
         if (!status)
           {
-             _ecore_con_url_status_get(url_obj);
+             _ecore_con_url_status_get(url_con);
              status = url_con->status;
           }
      }
@@ -1322,16 +1343,15 @@ _ecore_con_url_event_url_complete(Ecore_Con_Url *url_obj, CURLMsg *curlmsg)
             curlmsg->data.result, _c->curl_easy_strerror(curlmsg->data.result));
      }
    e->status = status;
-   e->url_con = url_obj;
+   e->url_con = url_con;
    url_con->event_count++;
    ecore_event_add(ECORE_CON_EVENT_URL_COMPLETE, e,
-                   (Ecore_End_Cb)_ecore_con_event_url_free, url_obj);
+                   (Ecore_End_Cb)_ecore_con_event_url_free, url_con);
 }
 
 static void
-_ecore_con_url_multi_remove(Ecore_Con_Url *url_obj)
+_ecore_con_url_multi_remove(Ecore_Con_Url *url_con)
 {
-   Ecore_Con_Url_Data *url_con = eo_data_scope_get(url_obj, MY_CLASS);
    CURLMcode ret;
 
    if (!_c) return;
@@ -1343,16 +1363,15 @@ _ecore_con_url_multi_remove(Ecore_Con_Url *url_obj)
 static Eina_Bool
 _ecore_con_url_timeout_cb(void *data)
 {
-   Ecore_Con_Url *url_obj = data;
-   Ecore_Con_Url_Data *url_con = eo_data_scope_get(url_obj, MY_CLASS);
+   Ecore_Con_Url *url_con = data;
    CURLMsg timeout_msg;
 
    if (!_c) return ECORE_CALLBACK_CANCEL;
-   if (!url_obj) return ECORE_CALLBACK_CANCEL;
+   if (!url_con) return ECORE_CALLBACK_CANCEL;
    if (!url_con->curl_easy) return ECORE_CALLBACK_CANCEL;
 
-   _ecore_con_url_multi_remove(url_obj);
-   _url_con_list = eina_list_remove(_url_con_list, url_obj);
+   _ecore_con_url_multi_remove(url_con);
+   _url_con_list = eina_list_remove(_url_con_list, url_con);
 
    _c->curl_slist_free_all(url_con->headers);
    url_con->headers = NULL;
@@ -1363,20 +1382,24 @@ _ecore_con_url_timeout_cb(void *data)
    timeout_msg.easy_handle = NULL;
    timeout_msg.data.result = CURLE_OPERATION_TIMEDOUT;
 
-   _ecore_con_url_event_url_complete(url_obj, &timeout_msg);
+   _ecore_con_url_event_url_complete(url_con, &timeout_msg);
    return ECORE_CALLBACK_CANCEL;
 }
 
 static size_t
 _ecore_con_url_data_cb(void *buffer, size_t size, size_t nitems, void *userp)
 {
-   Ecore_Con_Url *url_obj = (Ecore_Con_Url *)userp;
+   Ecore_Con_Url *url_con;
    Ecore_Con_Event_Url_Data *e;
    size_t real_size = size * nitems;
 
-   Ecore_Con_Url_Data *url_con = eo_data_scope_get(url_obj, MY_CLASS);
-   if (!eo_isa(url_obj, ECORE_CON_URL_CLASS))
-      return -1;
+   url_con = (Ecore_Con_Url *)userp;
+   if (!url_con) return -1;
+   if (!ECORE_MAGIC_CHECK(url_con, ECORE_MAGIC_CON_URL))
+     {
+        ECORE_MAGIC_FAIL(url_con, ECORE_MAGIC_CON_URL, __func__);
+        return -1;
+     }
 
    url_con->received += real_size;
    INF("reading from %s", url_con->url);
@@ -1387,12 +1410,12 @@ _ecore_con_url_data_cb(void *buffer, size_t size, size_t nitems, void *userp)
                  (real_size - 1));
         if (e)
           {
-             e->url_con = url_obj;
+             e->url_con = url_con;
              e->size = real_size;
              memcpy(e->data, buffer, real_size);
              url_con->event_count++;
              ecore_event_add(ECORE_CON_EVENT_URL_DATA, e,
-                             (Ecore_End_Cb)_ecore_con_event_url_free, url_obj);
+                             (Ecore_End_Cb)_ecore_con_event_url_free, url_con);
           }
      }
    else
@@ -1424,10 +1447,7 @@ static size_t
 _ecore_con_url_header_cb(void *ptr, size_t size, size_t nitems, void *stream)
 {
    size_t real_size = size * nitems;
-   Ecore_Con_Url *url_obj = stream;
-   Ecore_Con_Url_Data *url_con = eo_data_scope_get(url_obj, MY_CLASS);
-   if (!eo_isa(url_obj, ECORE_CON_URL_CLASS))
-      return 0;
+   Ecore_Con_Url *url_con = stream;
 
    char *header = malloc(sizeof(char) * (real_size + 1));
    if (!header) return real_size;
@@ -1442,21 +1462,20 @@ static int
 _ecore_con_url_progress_cb(void *clientp, double dltotal, double dlnow, double ultotal, double ulnow)
 {
    Ecore_Con_Event_Url_Progress *e;
-   Ecore_Con_Url *url_obj = clientp;
-
-   Ecore_Con_Url_Data *url_con = eo_data_scope_get(url_obj, MY_CLASS);
+   Ecore_Con_Url *url_con;
 
+   url_con = clientp;
    e = malloc(sizeof(Ecore_Con_Event_Url_Progress));
    if (e)
      {
-        e->url_con = url_obj;
+        e->url_con = url_con;
         e->down.total = dltotal;
         e->down.now = dlnow;
         e->up.total = ultotal;
         e->up.now = ulnow;
         url_con->event_count++;
         ecore_event_add(ECORE_CON_EVENT_URL_PROGRESS, e,
-                        (Ecore_End_Cb)_ecore_con_event_url_free, url_obj);
+                        (Ecore_End_Cb)_ecore_con_event_url_free, url_con);
      }
    return 0;
 }
@@ -1490,16 +1509,15 @@ _ecore_con_url_info_read(void)
    while ((curlmsg = _c->curl_multi_info_read(_c->_curlm, &n_remaining)))
      {
         Eina_List *l, *ll;
-        Ecore_Con_Url *url_obj = NULL;
+        Ecore_Con_Url *url_con = NULL;
 
         DBG("Curl message: %d", curlmsg->msg);
         if (curlmsg->msg == CURLMSG_DONE)
           {
-             EINA_LIST_FOREACH_SAFE(_url_con_list, l, ll, url_obj)
+             EINA_LIST_FOREACH_SAFE(_url_con_list, l, ll, url_con)
                {
-                  Ecore_Con_Url_Data *url_con = eo_data_scope_get(url_obj, MY_CLASS);
                   if (curlmsg->easy_handle == url_con->curl_easy)
-                    _ecore_con_url_event_url_complete(url_obj, curlmsg);
+                    _ecore_con_url_event_url_complete(url_con, curlmsg);
                }
           }
      }
@@ -1620,9 +1638,8 @@ _ecore_con_url_timer(void *data EINA_UNUSED)
 }
 
 static Eina_Bool
-_ecore_con_url_perform(Ecore_Con_Url *url_obj)
+_ecore_con_url_perform(Ecore_Con_Url *url_con)
 {
-   Ecore_Con_Url_Data *url_con = eo_data_scope_get(url_obj, MY_CLASS);
    CURLMcode ret;
 
    if (!_c) return EINA_FALSE;
@@ -1634,19 +1651,16 @@ _ecore_con_url_perform(Ecore_Con_Url *url_obj)
         return EINA_FALSE;
      }
    url_con->multi = EINA_TRUE;
-   _url_con_list = eina_list_append(_url_con_list, url_obj);
+   _url_con_list = eina_list_append(_url_con_list, url_con);
    ecore_timer_thaw(_curl_timer);
    return EINA_TRUE;
 }
 
 static void
-_ecore_con_event_url_free(Ecore_Con_Url *url_obj, void *ev)
+_ecore_con_event_url_free(Ecore_Con_Url *url_con, void *ev)
 {
-   Ecore_Con_Url_Data *url_con = eo_data_scope_get(url_obj, MY_CLASS);
-
    free(ev);
    url_con->event_count--;
-   if (url_con->dead && (!url_con->event_count)) ecore_con_url_free(url_obj);
+   if (url_con->dead && (!url_con->event_count)) ecore_con_url_free(url_con);
 }
 
-#include "ecore_con_url.eo.c"
diff --git a/src/lib/ecore_con/ecore_con_url.eo b/src/lib/ecore_con/ecore_con_url.eo
deleted file mode 100644 (file)
index 743e5f2..0000000
+++ /dev/null
@@ -1,25 +0,0 @@
-class Ecore.Con.Url (Eo.Base) {
-   eo_prefix: ecore_con_url_obj;
-   properties {
-      url {
-         /**
-          * Controls the URL to send the request to.
-          */
-         set {
-            return: bool (false); /* true on success, false on error. */
-         }
-         get {
-         }
-         values {
-            const(char) *url; /*@ The URL */
-         }
-      }
-   }
-   implements {
-        Eo.Base.constructor;
-        Eo.Base.destructor;
-        Eo.Base.finalize;
-   }
-}
-
-/* FIXME: Actually migrate all of the functions. */