Fixed connection_model_set on object.

This commit is contained in:
Felipe Magno de Almeida 2015-09-25 13:15:49 -07:00
parent 7457f37df4
commit 462ecf69d3
10 changed files with 120 additions and 173 deletions

View File

@ -37,20 +37,6 @@ _eldbus_model_connection_eo_base_constructor(Eo *obj, Eldbus_Model_Connection_Da
return obj;
}
/* static void */
/* _eldbus_model_connection_constructor(Eo *obj EINA_UNUSED, */
/* Eldbus_Model_Connection_Data *pd, */
/* int type, */
/* const char* address, */
/* Eina_Bool private) */
/* { */
/* DBG("(%p)", obj); */
/* pd->type = type; */
/* pd->address = eina_stringshare_add(address); */
/* pd->private = private; */
/* } */
static void
_eldbus_model_connection_eo_base_destructor(Eo *obj, Eldbus_Model_Connection_Data *pd)
{
@ -269,6 +255,9 @@ _eldbus_model_connection_type_set(Eo *obj EINA_UNUSED, Eldbus_Model_Connection_D
static void
_eldbus_model_connection_connect(Eldbus_Model_Connection_Data *pd)
{
fprintf(stderr, "connecting\n");
fflush(stderr);
EINA_SAFETY_ON_NULL_RETURN(pd);
if (ELDBUS_CONNECTION_TYPE_ADDRESS == pd->type)
@ -357,7 +346,9 @@ _eldbus_model_connection_names_list_cb(void *data,
DBG("(%p): bus = %s", pd->obj, bus);
Eo *child = eo_add(ELDBUS_MODEL_OBJECT_CLASS, NULL,
eldbus_model_object_connection_constructor(pd->connection, bus, "/"));
eldbus_model_object_connection_set(pd->connection),
eldbus_model_object_bus_set(bus),
eldbus_model_object_path_set("/"));
pd->children_list = eina_list_append(pd->children_list, child);
}

View File

@ -4,6 +4,7 @@
#include "eldbus_model_object_private.h"
#include "eldbus_model_private.h"
#include "eldbus_model_connection_private.h"
#include <Eina.h>
@ -35,9 +36,6 @@ _eldbus_model_object_eo_base_constructor(Eo *obj, Eldbus_Model_Object_Data *pd)
pd->object_list = NULL;
pd->properties_array = NULL;
pd->children_list = NULL;
pd->type = ELDBUS_CONNECTION_TYPE_UNKNOWN;
pd->address = NULL;
pd->private = false;
pd->bus = NULL;
pd->path = NULL;
pd->unique_name = NULL;
@ -48,40 +46,40 @@ _eldbus_model_object_eo_base_constructor(Eo *obj, Eldbus_Model_Object_Data *pd)
}
static void
_eldbus_model_object_constructor(Eo *obj EINA_UNUSED,
Eldbus_Model_Object_Data *pd,
int type,
const char* address,
Eina_Bool private,
const char* bus,
const char* path)
{
DBG("(%p)", obj);
EINA_SAFETY_ON_NULL_RETURN(bus);
EINA_SAFETY_ON_NULL_RETURN(path);
pd->type = type;
pd->address = eina_stringshare_add(address);
pd->private = private;
pd->bus = eina_stringshare_add(bus);
pd->path = eina_stringshare_add(path);
}
static void
_eldbus_model_object_connection_constructor(Eo *obj EINA_UNUSED,
Eldbus_Model_Object_Data *pd,
Eldbus_Connection *connection,
const char* bus,
const char* path)
_eldbus_model_object_connection_set(Eo *obj EINA_UNUSED,
Eldbus_Model_Object_Data *pd,
Eldbus_Connection *connection)
{
DBG("(%p)", obj);
EINA_SAFETY_ON_NULL_RETURN(connection);
EINA_SAFETY_ON_NULL_RETURN(bus);
EINA_SAFETY_ON_NULL_RETURN(path);
pd->connection = eldbus_connection_ref(connection);
pd->bus = eina_stringshare_add(bus);
pd->path = eina_stringshare_add(path);
}
static Eldbus_Connection*
_eldbus_model_object_connection_get(Eo *obj EINA_UNUSED,
Eldbus_Model_Object_Data *pd)
{
DBG("(%p)", obj);
return pd->connection;
}
static void
_eldbus_model_object_connection_model_set(Eo *obj EINA_UNUSED,
Eldbus_Model_Object_Data *pd,
Eldbus_Model_Connection *connection)
{
DBG("(%p)", obj);
EINA_SAFETY_ON_NULL_RETURN(connection);
Eldbus_Model_Connection_Data* connection_data
= eo_data_scope_get(connection, ELDBUS_MODEL_CONNECTION_CLASS);
eo_do(connection, fprintf(stderr, "%d\n", eldbus_model_connection_type_get()));
fflush(stderr);
pd->connection = eldbus_connection_ref(connection_data->connection);
EINA_SAFETY_ON_FALSE_RETURN(NULL != pd->connection);
}
static void
@ -89,7 +87,6 @@ _eldbus_model_object_eo_base_destructor(Eo *obj, Eldbus_Model_Object_Data *pd)
{
DBG("(%p)", obj);
eina_stringshare_del(pd->address);
eina_stringshare_del(pd->bus);
eina_stringshare_del(pd->path);
@ -270,43 +267,6 @@ _eldbus_model_object_efl_model_base_children_load(Eo *obj, Eldbus_Model_Object_D
efl_model_load_set(pd->obj, &pd->load, EFL_MODEL_LOAD_STATUS_LOADING_CHILDREN);
}
static const char *
_eldbus_model_object_address_get(Eo *obj EINA_UNUSED, Eldbus_Model_Object_Data *pd)
{
return pd->address;
}
static void
_eldbus_model_object_address_set(Eo *obj EINA_UNUSED, Eldbus_Model_Object_Data *pd, const char *value)
{
eina_stringshare_del(pd->address);
pd->address = eina_stringshare_add(value);
}
static Eina_Bool
_eldbus_model_object_private_get(Eo *obj EINA_UNUSED, Eldbus_Model_Object_Data *pd)
{
return pd->private;
}
static void
_eldbus_model_object_private_set(Eo *obj EINA_UNUSED, Eldbus_Model_Object_Data *pd, Eina_Bool value)
{
pd->private = value;
}
static int
_eldbus_model_object_type_get(Eo *obj EINA_UNUSED, Eldbus_Model_Object_Data *pd)
{
return pd->type;
}
static void
_eldbus_model_object_type_set(Eo *obj EINA_UNUSED, Eldbus_Model_Object_Data *pd, int value)
{
pd->type = value;
}
static const char *
_eldbus_model_object_bus_get(Eo *obj EINA_UNUSED, Eldbus_Model_Object_Data *pd)
{
@ -338,20 +298,20 @@ _eldbus_model_object_connect(Eldbus_Model_Object_Data *pd)
{
EINA_SAFETY_ON_NULL_RETURN(pd);
if (ELDBUS_CONNECTION_TYPE_ADDRESS == pd->type)
{
if (pd->private)
pd->connection = eldbus_address_connection_get(pd->address);
else
pd->connection = eldbus_private_address_connection_get(pd->address);
}
else
{
if (pd->private)
pd->connection = eldbus_private_connection_get(pd->type);
else
pd->connection = eldbus_connection_get(pd->type);
}
/* if (ELDBUS_CONNECTION_TYPE_ADDRESS == pd->type) */
/* { */
/* if (pd->private) */
/* pd->connection = eldbus_address_connection_get(pd->address); */
/* else */
/* pd->connection = eldbus_private_address_connection_get(pd->address); */
/* } */
/* else */
/* { */
/* if (pd->private) */
/* pd->connection = eldbus_private_connection_get(pd->type); */
/* else */
/* pd->connection = eldbus_connection_get(pd->type); */
/* } */
// TODO: Register for disconnection event

View File

@ -2,53 +2,33 @@ class Eldbus.Model_Object (Eo.Base, Efl.Model.Base) {
legacy_prefix: null;
data: Eldbus_Model_Object_Data;
methods {
constructor {
[[Custom Eldbus_Model_Object constructor.
@since 1.16]]
params {
@in type: int; [[The connection type]]
@in address: const(char)*; [[Remote address of dbus]]
@in private_: bool; [[Non shared dbus connection]]
@in bus: const(char)*; [[DBus Name or unique-id]]
@in path: const(char)*; [[DBus path]]
}
}
connection_constructor {
[[Custom Eldbus_Model_Object connection_constructor.
@since 1.16]]
params {
@in connection: Eldbus_Connection*; [[Eldbus connection]]
@in bus: const(char)*; [[DBus Name or unique-id]]
@in path: const(char)*; [[DBus path]]
}
}
@property type {
values {
value: int;
}
}
@property address {
values {
value: const(char)*;
}
}
@property private {
values {
value: bool;
}
}
@property bus {
set {}
get {}
values {
value: const(char)*;
}
}
@property path {
set {}
get {}
values {
value: const(char)*;
}
}
@property connection_model {
set {}
values {
value: Eldbus.Model_Connection*;
}
}
@property connection {
set {}
get {}
values {
value: Eldbus_Connection*;
}
}
}
implements {
Eo.Base.constructor;
@ -67,7 +47,9 @@ class Eldbus.Model_Object (Eo.Base, Efl.Model.Base) {
Efl.Model.Base.children_load;
}
constructors {
.constructor;
.connection_constructor;
.connection @optional;
.connection_model @optional;
.bus;
.path;
}
}

View File

@ -18,9 +18,9 @@ struct _Eldbus_Model_Object_Data
Eina_List *object_list;
Eina_Array *properties_array;
Eina_List *children_list;
Eldbus_Connection_Type type;
Eina_Stringshare *address;
bool private;
// Eldbus_Connection_Type type;
// Eina_Stringshare *address;
// bool private;
Eina_Stringshare *bus;
Eina_Stringshare *path;
Eina_Value *unique_name;

View File

@ -378,7 +378,7 @@ _eldbus_model_proxy_create_signals_children(Eldbus_Model_Proxy_Data *pd)
DBG("(%p) Creating signal child: bus = %s, path = %s, signal = %s::%s", pd->obj, bus, path, interface_name, signal_name);
Eo *child = eo_add(ELDBUS_MODEL_SIGNAL_CLASS, NULL,
eldbus_model_signal_proxy_set(pd->proxy),
eldbus_model_arguments_proxy_set(pd->proxy),
eldbus_model_signal_set(signal));
pd->children_list = eina_list_append(pd->children_list, child);

View File

@ -1,16 +1,6 @@
class Eldbus.Model_Signal (Eldbus.Model_Arguments) {
legacy_prefix: null;
methods {
@property proxy {
[[Custom Eldbus_Model_Signal constructor.
@since 1.16]]
set {}
get {}
values {
proxy: Eldbus_Proxy*; [[Eldbus proxy]]
}
}
@property signal {
set {}
get {}
@ -26,7 +16,7 @@ class Eldbus.Model_Signal (Eldbus.Model_Arguments) {
Efl.Model.Base.unload;
}
constructors {
.proxy;
Eldbus.Model_Arguments.proxy;
.signal;
}
}

View File

@ -147,12 +147,18 @@ create_and_load_connection(void)
Eo *
create_object(void)
{
Eo *connection = eo_add(ELDBUS_MODEL_CONNECTION_CLASS, NULL,
eldbus_model_connection_type_set(ELDBUS_CONNECTION_TYPE_SESSION),
eldbus_model_connection_address_set(NULL),
eldbus_model_connection_private_set(EINA_FALSE));
ck_assert_ptr_ne(NULL, connection);
efl_model_load_and_wait_for_load_status(connection, EFL_MODEL_LOAD_STATUS_LOADED);
Eo *object = eo_add_ref(ELDBUS_MODEL_OBJECT_CLASS, NULL,
eldbus_model_object_constructor(ELDBUS_CONNECTION_TYPE_SESSION,
NULL,
EINA_FALSE,
ELDBUS_FDO_BUS,
ELDBUS_FDO_PATH));
eldbus_model_object_connection_model_set(connection),
eldbus_model_object_bus_set(ELDBUS_FDO_BUS),
eldbus_model_object_path_set(ELDBUS_FDO_PATH));
ck_assert_ptr_ne(NULL, object);
return object;
}

View File

@ -29,12 +29,18 @@ _setup(void)
fake_server = fake_server_start(&fake_server_data);
Eldbus_Model_Connection* connection
= eo_add(ELDBUS_MODEL_CONNECTION_CLASS, NULL,
eldbus_model_connection_type_set(ELDBUS_CONNECTION_TYPE_SESSION),
eldbus_model_connection_address_set(NULL),
eldbus_model_connection_private_set(EINA_FALSE));
efl_model_load_and_wait_for_load_status(connection, EFL_MODEL_LOAD_STATUS_LOADED);
fake_server_object = eo_add(ELDBUS_MODEL_OBJECT_CLASS, NULL,
eldbus_model_object_constructor(ELDBUS_CONNECTION_TYPE_SESSION,
NULL,
EINA_FALSE,
FAKE_SERVER_BUS,
FAKE_SERVER_PATH));
eldbus_model_object_connection_model_set(connection),
eldbus_model_object_bus_set(FAKE_SERVER_BUS),
eldbus_model_object_path_set(FAKE_SERVER_PATH));
ck_assert_ptr_ne(NULL, fake_server_object);
efl_model_load_and_wait_for_load_status(fake_server_object, EFL_MODEL_LOAD_STATUS_LOADED);

View File

@ -27,12 +27,18 @@ _setup(void)
fake_server = fake_server_start(&fake_server_data);
Eldbus_Model_Connection* connection
= eo_add(ELDBUS_MODEL_CONNECTION_CLASS, NULL,
eldbus_model_connection_type_set(ELDBUS_CONNECTION_TYPE_SESSION),
eldbus_model_connection_address_set(NULL),
eldbus_model_connection_private_set(EINA_FALSE));
efl_model_load_and_wait_for_load_status(connection, EFL_MODEL_LOAD_STATUS_LOADED);
fake_server_object = eo_add(ELDBUS_MODEL_OBJECT_CLASS, NULL,
eldbus_model_object_constructor(ELDBUS_CONNECTION_TYPE_SESSION,
NULL,
EINA_FALSE,
FAKE_SERVER_BUS,
FAKE_SERVER_PATH));
eldbus_model_object_connection_model_set(connection),
eldbus_model_object_bus_set(FAKE_SERVER_BUS),
eldbus_model_object_path_set(FAKE_SERVER_PATH));
ck_assert_ptr_ne(NULL, fake_server_object);
efl_model_load_and_wait_for_load_status(fake_server_object, EFL_MODEL_LOAD_STATUS_LOADED);

View File

@ -33,12 +33,18 @@ _setup(void)
};
fake_server = fake_server_start(&fake_server_data);
Eldbus_Model_Connection* connection
= eo_add(ELDBUS_MODEL_CONNECTION_CLASS, NULL,
eldbus_model_connection_type_set(ELDBUS_CONNECTION_TYPE_SESSION),
eldbus_model_connection_address_set(NULL),
eldbus_model_connection_private_set(EINA_FALSE));
efl_model_load_and_wait_for_load_status(connection, EFL_MODEL_LOAD_STATUS_LOADED);
fake_server_object = eo_add(ELDBUS_MODEL_OBJECT_CLASS, NULL,
eldbus_model_object_constructor(ELDBUS_CONNECTION_TYPE_SESSION,
NULL,
EINA_FALSE,
FAKE_SERVER_BUS,
FAKE_SERVER_PATH));
eldbus_model_object_connection_model_set(connection),
eldbus_model_object_bus_set(FAKE_SERVER_BUS),
eldbus_model_object_path_set(FAKE_SERVER_PATH));
ck_assert_ptr_ne(NULL, fake_server_object);
efl_model_load_and_wait_for_load_status(fake_server_object, EFL_MODEL_LOAD_STATUS_LOADED);