184 Commits

Author SHA1 Message Date
guoling 0d85678165 Load expiration state before encoding the first value write
A first set after reopening can encode without the expiration suffix and still report success, leaving an unreadable value. Move the existing write locks and load check ahead of expiry-dependent encoding in each setter path, without adding lock acquisitions or scalar buffers. Route encoded vectors through the existing expiration helper so public templates do not need lock internals.

Keep a minimal set-succeeds/read-fails regression separate from the setter-overload coverage. Both explicitly avoid warming the lazy instance before set.
2026-09-07 16:27:58 +08:00
guoling 023914a0c4 Honor expiration when reading and enumerating read-only stores
Read the expiration flag before the read-only metadata return. Filter expired entries in memory for count/allKeys instead of using fullWriteback, which refuses read-only stores. Test each API as the first operation on a fresh instance, for plain and encrypted stores, and verify filtering leaves stored entries intact.
2026-09-07 16:25:11 +08:00
guoling 6bd8a3e272 Refresh lazy mappings and validate metadata before cached restore 2026-09-07 16:04:38 +08:00
guoling 998c51baca Support unsigned protobuf value lengths 2026-09-04 16:56:43 +08:00
guoling baf36b8695 Refine v2.4.2 hardening fixes 2026-08-20 21:42:19 +08:00
guoling c79b7a59d5 Harden backup and restore file handling 2026-08-05 13:39:29 +08:00
guoling 7b20c03c34 Harden encrypted write and key handling 2026-08-05 13:39:29 +08:00
guoling 4e3535f2c8 Harden MMKV close lifecycle handling #1669 2026-07-29 14:57:14 +08:00
guoling 5892e0ff3b fix expireDuration overflow bug #1665 2026-06-02 19:06:09 +08:00
guoling 6a55c88536 enhance random iv 2026-03-25 12:46:48 +08:00
guoling 9348a93f26 refactor callback system into unified MMKVHandler across all platforms
Replace 4 separate static function pointers (LogHandler, ErrorHandler,
ContentChangeHandler, ContentLoadedHandler) with a single MMKVHandler
abstract class in Core C++. Update all 6 platform wrappers (iOS, Android,
OHOS, Python, Golang, Flutter) to use adapter classes bridging to the new
unified handler. Add onMMKVContentLoadSuccessfully callback to Android,
OHOS, Flutter, Python and Golang where it was previously missing.
2026-03-18 12:40:05 +08:00
guoling b56ce1004f merge ashmem size with expectedCapacity on Android & OHOS 2026-02-11 12:39:08 +08:00
guoling ed0cade7e8 add MMKVConfig for Android 2026-02-06 20:28:19 +08:00
guoling 1915d892f1 add MMKVConfig 2026-02-05 17:21:53 +08:00
Guo Ling f6e6fbc5e0 convert log message to utf-8 by (changing src in utf-8) for win32 client 2026-01-30 18:04:08 +08:00
hossinasaadi 6acdef76d0 fix 2025-12-22 17:56:48 +03:30
hossinasaadi e8dba7762f fix public interface 2025-12-22 15:23:58 +03:30
hossinasaadi df721fa6cd add onMMKVContentLoadSuccessfully to content notify handler 2025-12-21 17:39:57 +03:30
guoling d99404baeb reduce absolutePath() call as much as possible 2025-12-16 18:32:19 +08:00
guoling 8cb70d1123 add aes256 option on mmkv creation 2025-11-27 16:02:49 +08:00
guoling 2ba8ff9bc0 support AES 256 2025-09-24 11:55:35 +08:00
guoling 299bb09a56 fix Android compile error 2025-08-20 17:23:02 +08:00
guoling 82c32013ef remove checkProcessMode() from OHOS 2025-04-23 14:24:33 +08:00
guoling 0f745c609d test checkExist() on Win32 2025-04-22 20:53:38 +08:00
guoling 0e05353b4a add checkExist(), isFileValid() and groupPath() for Flutter, fix checkContentChangedByOuterProcess() not working bug 2025-04-22 18:09:12 +08:00
guoling b069fe2fba drop deprecate armv7 logic 2025-04-21 17:43:58 +08:00
guoling 561d56ca75 adding mayfly fd on iOS 2025-04-18 17:16:26 +08:00
guoling f23e95c652 support using MMKVCore at Apple platform in pure C++ code 2025-02-14 19:43:48 +08:00
guoling f2fa428bf6 NameSpace works on Win32 2025-01-13 12:14:59 +08:00
guoling a7d70e187a NameSpace works on POSIX 2025-01-07 20:32:36 +08:00
guoling d26fa06b2e remove guardForBackgroundWriting() for we are iOS 13+ 2025-01-06 15:58:04 +08:00
guoling d069d7c56a NameSpace for Android complete 2025-01-06 15:58:03 +08:00
guoling 147f89dba7 migrate legacy mmap ID to normal ID 2025-01-06 15:58:01 +08:00
guoling fca2582343 fix tryAtomicRename() with src == dst bug 2025-01-06 15:55:51 +08:00
guoling 89b56922e8 1. NameSpace almost work on iOS
2. Upgrade to iOS 13, watchOS 6
3. Dont mkPath() on ReadOnly mode
2025-01-06 15:54:38 +08:00
guoling 0bd466efe3 support correct filename on custom root path 2024-12-24 19:29:07 +08:00
guoling e5ca354c26 fix typo in shared_unlock() #1428 2024-11-12 16:20:59 +08:00
guoling 8b8188d536 add log & error & content change callback for flutter & ArtTS 2024-09-12 18:50:33 +08:00
guoling 6688793f59 check getMMKVWithID result and throw exception #1399 2024-09-09 20:43:06 +08:00
guoling 47d3c0893a add readonly support 2024-09-06 19:44:11 +08:00
guoling 2183260881 fix set empty string/bytes value not working on auto key expire 2024-06-28 15:35:12 +08:00
guoling c7d00a8382 clang-tidy 2024-05-11 15:29:49 +08:00
guoling 9341e03e19 make C++20 optional 2024-05-07 16:43:18 +08:00
guoling 9e8c30d7cb also support std::span<> 2024-05-06 17:54:17 +08:00
guoling 8b8852479b support encoding string_view 2024-04-29 18:05:44 +08:00
guoling b990c2bd14 prepare to add vector<T> encode/decode support 2024-04-28 18:49:34 +08:00
guoling db61c3ea60 fix typo 2024-04-28 15:43:13 +08:00
guoling 03ce05705c tidy include 2024-04-10 21:38:51 +08:00
guoling 0187c37e48 tested ohos backup & restore 2024-04-10 21:21:11 +08:00
guoling 48d45c5bc4 stash for ohos backup & restore, almost done 2024-04-10 21:06:57 +08:00