static int _list_NORMAL(struct gridd_filter_ctx_s *ctx, struct gridd_reply_ctx_s *reply, struct list_params_s *lp) { GError *e = NULL; struct meta2_backend_s *m2b = meta2_filter_ctx_get_backend(ctx); struct hc_url_s *url = meta2_filter_ctx_get_url(ctx); struct on_bean_ctx_s *obc = _on_bean_ctx_init(ctx, reply); if (hc_url_has(url, HCURL_SNAPSHOT)) { lp->snapshot_name = hc_url_get(url, HCURL_SNAPSHOT); } else if (hc_url_has(url, HCURL_VERSION)) { lp->snapshot_name = hc_url_get(url, HCURL_VERSION); } e = meta2_backend_list_aliases(m2b, url, lp, _get_cb, obc); if (NULL != e) { GRID_DEBUG("Fail to return alias for url: %s", hc_url_get(url, HCURL_WHOLE)); _on_bean_ctx_clean(obc); meta2_filter_ctx_set_error(ctx, e); return FILTER_KO; } _on_bean_ctx_send_list(obc, TRUE); _on_bean_ctx_clean(obc); return FILTER_OK; }
S3_RESPONSE_HEADER(M2_KEY_PREFIX, lp->params.s3.prefix); S3_RESPONSE_HEADER(M2_KEY_MARKER, lp->params.s3.marker); S3_RESPONSE_HEADER(M2_KEY_DELIMITER, lp->params.s3.delimiter); S3_RESPONSE_HEADER(M2_KEY_MAX_KEYS, (maxkeys_str) ? maxkeys_str : "1000"); S3_RESPONSE_HEADER("TRUNCATED", truncated ? "true" : "false"); S3_RESPONSE_HEADER("NEXT_MARKER", next_marker); _on_bean_ctx_send_list(obc, TRUE); } GRID_DEBUG("prefix = %s | marker = %s | delimiter = %s | max-keys = %"G_GINT64_FORMAT, lp->params.s3.prefix, lp->params.s3.marker, lp->params.s3.delimiter, lp->params.s3.maxkeys); e = meta2_backend_list_aliases(m2b, url, lp, s3_list_cb, NULL); if (NULL != e) { GRID_DEBUG("Fail to return alias for url: %s", hc_url_get(url, HCURL_WHOLE)); _on_bean_ctx_clean(obc); meta2_filter_ctx_set_error(ctx, e); return FILTER_KO; } send_result(); g_free(next_marker); g_slist_free(common_prefixes); return FILTER_OK;
if (DESCR(bean) == &descr_struct_ALIASES) { _bean_list_cb(&obc->l, bean); if (0 == --max) next_marker = g_strdup(ALIASES_get_alias(bean)->str); } else { _bean_list_cb(&obc->l, bean); } } else { if (DESCR(bean) == &descr_struct_ALIASES) truncated = TRUE; _bean_clean(bean); } } lp->maxkeys ++; e = meta2_backend_list_aliases(m2b, url, lp, headers, s3_list_cb, NULL, &properties); if (NULL != e) { GRID_DEBUG("Fail to return alias for url: %s", hc_url_get(url, HCURL_WHOLE)); _on_bean_ctx_clean(obc); meta2_filter_ctx_set_error(ctx, e); if (properties) g_strfreev (properties); return FILTER_KO; } S3_RESPONSE_HEADER(NAME_MSGKEY_PREFIX, lp->prefix); S3_RESPONSE_HEADER(NAME_MSGKEY_MARKER, lp->marker_start); S3_RESPONSE_HEADER(NAME_MSGKEY_MARKER_END, lp->marker_end); S3_RESPONSE_HEADER(NAME_MSGKEY_TRUNCATED, truncated ? "true" : "false"); S3_RESPONSE_HEADER(NAME_MSGKEY_NEXTMARKER, next_marker);