diff --git a/maestro/attributes.c b/maestro/attributes.c index 128fe04541872ba6065e0750bb0b923015e1397b..ab5e2cddd43cab98bb1d3ae9959862315b4adc84 100644 --- a/maestro/attributes.c +++ b/maestro/attributes.c @@ -92,9 +92,6 @@ const char *MSTRO_ATTR_CORE_CDO_ISDISTRIBUTED = const char *MSTRO_ATTR_CORE_CDO_DIST_LAYOUT = ".maestro.core.cdo.dist-layout"; -const char *MSTRO_ATTR_CORE_CDO_DIST_LAYOUT = - ".maestro.core.cdo.dist-layout"; - /* .... */ diff --git a/maestro/pool_manager_registry.c b/maestro/pool_manager_registry.c index e23fa556e73bf7c907d8d47d1d31a60c12864614..9439e041c63f6af13abc6c24961806ab4a1057da 100644 --- a/maestro/pool_manager_registry.c +++ b/maestro/pool_manager_registry.c @@ -231,7 +231,6 @@ mstro_pm_app_register(struct mstro_endpoint *ep, e->component_name = strdup(component_name); e->component_index = component_index; - DEBUG("Registered app %" PRIappid " for %s:%" PRIu64 " with transport methods %p\n", e->appid, e->component_name, e->component_index, e->transport_methods); @@ -1700,6 +1699,62 @@ mstro_pm_cdo_registry_find(mstro_app_id app, const struct mstro_cdo_id *id) return MSTRO_FAIL; } +mstro_status +mstro_pm_cdo_registry_store_dist_layout(struct cdo_handle_entry *e, + Mstro__Pool__Attributes *attributes) +{ + mstro_status status = MSTRO_OK; + size_t n = attributes->kv_map->n_map; + /*declare and init all dist layout variables */ + bool dist = false; + size_t *offsets = NULL; + size_t *sizes = NULL; + size_t element_size_bytes = 0; + size_t index = -1; + size_t n_blocks = 0; + int n_req_attribs = 0; + mmbLayout *dist_layout; + + DEBUG("looking for distributed layout among %d attributes \n", n); + const char *key; + for(size_t i=0; i<n; i++) { + key = attributes->kv_map->map[i]->key; + ERR("key len: %d (%s)\n", strlen(key), key); + if(strcmp(key,".maestro.core.cdo.isdistributed")==0) { + dist = attributes->kv_map->map[i]->val->bool_; + ERR("dist = %d \n", dist ); + } else if(strcmp(key,".maestro.core.cdo.dist-layout")==0) { + ERR("DIST Layout found ... \n\n\n"); + size_t n = (size_t) attributes->kv_map->map[i]->val->mmblayout->irregular->n_blocks; + ERR("layout type %d \n ", attributes->kv_map->map[i]->val->mmblayout->type); + ERR("layout index %"PRIu64" \n ", attributes->kv_map->map[i]->val->mmblayout->index); + ERR("nblocks %zu \n", n); + for (size_t k = 0; k < n; k++) { + ERR("offsets[%zu] = %"PRIu64", lengths[%zu] = %"PRIu64" \n", k, + attributes->kv_map->map[i]->val->mmblayout->irregular->offsets[k], + k, + attributes->kv_map->map[i]->val->mmblayout->irregular->lengths[k]); + } + n_req_attribs++; + } + } + + if(dist) + { + ERR("DIST CDO !!!!!! \n\n\n\n"); + if (n_req_attribs != 2) + { + ERR("Found only %d out of 2 required dist attributes", n_req_attribs); + } + + } + else { + ERR("NOT DIST CDO !!!! \n\n\n"); + } + + return status; +} + mstro_status mstro_pm_cdo_registry_store_attributes(const struct mstro_cdo_id *cdo_id, mstro_app_id app_id,