int meta2_filter_action_deduplicate_container(struct gridd_filter_ctx_s *ctx, struct gridd_reply_ctx_s *reply) { GSList* result = NULL; // list of list GSList* common_prefixes = NULL; SRVSTUB_PRINTF("packet received...DEDUP"); void send_result() { GSList *list_of_lists = NULL; list_of_lists = gslist_split(result, 32); for (GSList *cursor = list_of_lists; cursor; cursor = cursor->next) { reply->add_body(bean_sequence_marshall(cursor->data)); reply->send_reply(206, "Partial content"); } if (NULL != common_prefixes) { char **array = (char **)metautils_list_to_array(common_prefixes); reply->add_header("COMMON_PREFIXES", metautils_encode_lines(array)); g_strfreev(array); } /* TODO : max-keys, truncated */ reply->send_reply(200, "OK"); gslist_chunks_destroy(list_of_lists, NULL); }
static GByteArray * marshall_stringv(gchar **v) { GByteArray *result = metautils_encode_lines(v); g_strfreev(v); return result; }
static GByteArray * marshall_stringv_and_clean(gchar ***pv) { GByteArray *result = metautils_encode_lines(*pv); g_strfreev(*pv); *pv = NULL; return result; }
void send_result() { if (NULL != common_prefixes) { char **array = (char **)metautils_list_to_array(common_prefixes); reply->add_header("COMMON_PREFIXES", metautils_encode_lines(array)); g_strfreev(array); } 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); }