Skip to content

Commit 9935500

Browse files
cosmo0920edsiper
authored andcommitted
opentelemetry: Implement batch operation for splitting encoded payloads
Signed-off-by: Hiroshi Hatake <hiroshi@chronosphere.io>
1 parent 8bbe6b7 commit 9935500

4 files changed

Lines changed: 1427 additions & 6 deletions

File tree

include/cmetrics/cmt_encode_opentelemetry.h

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,36 @@ struct cmt_opentelemetry_context
4040
struct cmt *cmt;
4141
};
4242

43+
struct cmt_opentelemetry_batch {
44+
cfl_sds_t payload;
45+
size_t data_point_count;
46+
};
47+
48+
struct cmt_opentelemetry_batches {
49+
size_t count;
50+
struct cmt_opentelemetry_batch *entries;
51+
};
52+
4353
cfl_sds_t cmt_encode_opentelemetry_create(struct cmt *cmt);
4454
void cmt_encode_opentelemetry_destroy(cfl_sds_t text);
4555

56+
/*
57+
* Split an encoded OTLP ExportMetricsServiceRequest without changing metric,
58+
* resource, or scope metadata. A zero limit returns the original request as a
59+
* single batch. The returned payloads are owned by the batch collection.
60+
*/
61+
struct cmt_opentelemetry_batches *
62+
cmt_encode_opentelemetry_split_payload(const void *payload,
63+
size_t payload_size,
64+
size_t max_data_points,
65+
int *result);
66+
67+
struct cmt_opentelemetry_batches *
68+
cmt_encode_opentelemetry_create_batches(struct cmt *context,
69+
size_t max_data_points,
70+
int *result);
71+
72+
void cmt_encode_opentelemetry_destroy_batches(
73+
struct cmt_opentelemetry_batches *batches);
74+
4675
#endif

src/CMakeLists.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ set(src
2626
cmt_filter.c
2727
cmetrics.c
2828
cmt_encode_opentelemetry.c
29+
cmt_encode_opentelemetry_batch.c
2930
cmt_decode_opentelemetry.c
3031
cmt_encode_prometheus.c
3132
cmt_encode_prometheus_remote_write.c

0 commit comments

Comments
 (0)