Commit a2378ae4fee55c95eb9a1f6b44f5a837d39fa724

Vicent Marti 2013-04-23T20:42:29

opts: Add getter for cached memory

diff --git a/include/git2/common.h b/include/git2/common.h
index ccd252f..6101e13 100644
--- a/include/git2/common.h
+++ b/include/git2/common.h
@@ -133,7 +133,8 @@ enum {
 	GIT_OPT_SET_SEARCH_PATH,
 	GIT_OPT_SET_CACHE_OBJECT_LIMIT,
 	GIT_OPT_SET_CACHE_MAX_SIZE,
-	GIT_OPT_ENABLE_CACHING
+	GIT_OPT_ENABLE_CACHING,
+	GIT_OPT_GET_CACHED_MEMORY
 };
 
 /**
diff --git a/src/cache.c b/src/cache.c
index b462af4..88f643b 100644
--- a/src/cache.c
+++ b/src/cache.c
@@ -19,8 +19,7 @@ GIT__USE_OIDMAP
 
 bool git_cache__enabled = true;
 int64_t git_cache__max_storage = (256 * 1024 * 1024);
-
-static git_atomic64 git_cache__current_storage = {0};
+git_atomic64 git_cache__current_storage = {0};
 
 static size_t git_cache__max_object_size[8] = {
 	0,     /* GIT_OBJ__EXT1 */
diff --git a/src/cache.h b/src/cache.h
index f74fddf..1fb87dc 100644
--- a/src/cache.h
+++ b/src/cache.h
@@ -36,6 +36,7 @@ typedef struct {
 
 extern bool git_cache__enabled;
 extern int64_t git_cache__max_storage;
+extern git_atomic64 git_cache__current_storage;
 
 int git_cache_set_max_object_size(git_otype type, size_t size);
 
diff --git a/src/util.c b/src/util.c
index 2dec49f..ce67c7e 100644
--- a/src/util.c
+++ b/src/util.c
@@ -109,6 +109,11 @@ int git_libgit2_opts(int key, ...)
 	case GIT_OPT_ENABLE_CACHING:
 		git_cache__enabled = (va_arg(ap, int) != 0);
 		break;
+
+	case GIT_OPT_GET_CACHED_MEMORY:
+		*(va_arg(ap, int64_t *)) = git_cache__current_storage.val;
+		*(va_arg(ap, int64_t *)) = git_cache__max_storage;
+		break;
 	}
 
 	va_end(ap);