summaryrefslogtreecommitdiff
path: root/src/storage
diff options
context:
space:
mode:
Diffstat (limited to 'src/storage')
-rw-r--r--src/storage/store.c23
-rw-r--r--src/storage/store.h3
2 files changed, 26 insertions, 0 deletions
diff --git a/src/storage/store.c b/src/storage/store.c
index 060c6f6..e7ade28 100644
--- a/src/storage/store.c
+++ b/src/storage/store.c
@@ -1963,6 +1963,29 @@ tiny_store_health(const tiny_store_t *store, tiny_store_health_t *health)
}
for (index = 0; index < store->entry_count; ++index)
{
+ const tiny_message_t *message = &store->entries[index].message;
+ size_t item;
+ health->memory_entry_bytes += sizeof(store->entries[index]);
+ health->memory_body_bytes += message->session_id ? strlen(message->session_id) + 1U : 0;
+ health->memory_body_bytes += message->content ? strlen(message->content) + 1U : 0;
+ health->memory_metadata_bytes
+ += message->metadata.tool_call_id ? strlen(message->metadata.tool_call_id) + 1U : 0;
+ health->memory_metadata_bytes
+ += message->metadata.summary ? strlen(message->metadata.summary) + 1U : 0;
+ health->memory_metadata_bytes
+ += message->metadata.relation_count * sizeof(*message->metadata.relations);
+ for (item = 0; item < message->metadata.tag_count; ++item)
+ {
+ health->memory_metadata_bytes += strlen(message->metadata.tags[item]) + 1U;
+ }
+ health->memory_metadata_bytes
+ += message->metadata.tag_count * sizeof(*message->metadata.tags);
+ health->memory_metadata_bytes
+ += message->metadata.source_count * sizeof(*message->metadata.source_message_ids);
+ for (item = 0; item < message->metadata.source_count; ++item)
+ {
+ health->memory_metadata_bytes += strlen(message->metadata.source_message_ids[item]) + 1U;
+ }
if (store->entries[index].deleted)
{
health->deleted_messages++;
diff --git a/src/storage/store.h b/src/storage/store.h
index adeae35..9efb02a 100644
--- a/src/storage/store.h
+++ b/src/storage/store.h
@@ -45,6 +45,9 @@ typedef struct tiny_store_health
uint64_t last_sequence;
uint64_t update_records;
uint64_t dead_bytes;
+ uint64_t memory_entry_bytes;
+ uint64_t memory_body_bytes;
+ uint64_t memory_metadata_bytes;
uint64_t write_bytes;
uint64_t write_calls;
uint64_t flush_calls;