summaryrefslogtreecommitdiff
path: root/src/mcp/tools/common
diff options
context:
space:
mode:
authortanaka takashi <isazaka@gmail.com>2026-07-04 18:44:17 +0900
committertanaka takashi <isazaka@gmail.com>2026-07-04 18:44:17 +0900
commit751999a82b8854ef5231e0ded5fe022b1ea5d8ff (patch)
treed09653d2955f0f5354e9ef76f9bc550fb8f0732a /src/mcp/tools/common
parent21dda921887da2515d1eba0d3d26e2036bf9f7f7 (diff)
Harden backup import and restore coverage
Diffstat (limited to 'src/mcp/tools/common')
-rw-r--r--src/mcp/tools/common/history.c19
-rw-r--r--src/mcp/tools/common/history.h1
-rw-r--r--src/mcp/tools/common/memory_index.c19
-rw-r--r--src/mcp/tools/common/memory_index.h1
4 files changed, 40 insertions, 0 deletions
diff --git a/src/mcp/tools/common/history.c b/src/mcp/tools/common/history.c
index 9f08e84..0e600d4 100644
--- a/src/mcp/tools/common/history.c
+++ b/src/mcp/tools/common/history.c
@@ -245,6 +245,25 @@ tiny_history_index_build(const tiny_store_t *store)
return index;
}
+uint64_t
+tiny_history_index_memory_estimate(const tiny_history_index_t *index)
+{
+ uint64_t total;
+ size_t position;
+ if (!index)
+ {
+ return 0;
+ }
+ total = sizeof(*index) + index->capacity * sizeof(*index->buckets)
+ + index->slot_capacity * sizeof(*index->slots);
+ for (position = 0; position < index->count; ++position)
+ {
+ total += strlen(index->buckets[position].session_id) + 1;
+ total += index->buckets[position].capacity * sizeof(*index->buckets[position].entries);
+ }
+ return total;
+}
+
void
tiny_history_index_free(tiny_history_index_t *index)
{
diff --git a/src/mcp/tools/common/history.h b/src/mcp/tools/common/history.h
index 3b23027..ed7d11a 100644
--- a/src/mcp/tools/common/history.h
+++ b/src/mcp/tools/common/history.h
@@ -20,6 +20,7 @@ bool tiny_history_index_session(const tiny_history_index_t *index,
const size_t **entries,
size_t *count);
size_t tiny_history_index_session_count(const tiny_history_index_t *index);
+uint64_t tiny_history_index_memory_estimate(const tiny_history_index_t *index);
bool tiny_history_index_session_at(const tiny_history_index_t *index,
size_t position,
const char **session_id,
diff --git a/src/mcp/tools/common/memory_index.c b/src/mcp/tools/common/memory_index.c
index e3841e2..32a97d1 100644
--- a/src/mcp/tools/common/memory_index.c
+++ b/src/mcp/tools/common/memory_index.c
@@ -165,6 +165,25 @@ tiny_memory_index_build(const tiny_store_t *store)
return index;
}
+uint64_t
+tiny_memory_index_memory_estimate(const tiny_memory_index_t *index)
+{
+ uint64_t total;
+ size_t position;
+ if (!index)
+ {
+ return 0;
+ }
+ total = sizeof(*index) + index->count * sizeof(*index->buckets)
+ + index->slot_capacity * sizeof(*index->slots);
+ for (position = 0; position < index->count; ++position)
+ {
+ total += index->buckets[position].incoming_capacity
+ * sizeof(*index->buckets[position].incoming);
+ }
+ return total;
+}
+
void
tiny_memory_index_free(tiny_memory_index_t *index)
{
diff --git a/src/mcp/tools/common/memory_index.h b/src/mcp/tools/common/memory_index.h
index fbe43a7..71e450d 100644
--- a/src/mcp/tools/common/memory_index.h
+++ b/src/mcp/tools/common/memory_index.h
@@ -20,5 +20,6 @@ bool tiny_memory_index_incoming(const tiny_memory_index_t *index,
const char *message_id,
const tiny_relation_reference_t **references,
size_t *count);
+uint64_t tiny_memory_index_memory_estimate(const tiny_memory_index_t *index);
#endif