diff options
Diffstat (limited to 'lib/VNLib.Data.Caching.Extensions/src')
-rw-r--r-- | lib/VNLib.Data.Caching.Extensions/src/FBMDataCacheExtensions.cs | 20 |
1 files changed, 17 insertions, 3 deletions
diff --git a/lib/VNLib.Data.Caching.Extensions/src/FBMDataCacheExtensions.cs b/lib/VNLib.Data.Caching.Extensions/src/FBMDataCacheExtensions.cs index ebdfd5b..222240a 100644 --- a/lib/VNLib.Data.Caching.Extensions/src/FBMDataCacheExtensions.cs +++ b/lib/VNLib.Data.Caching.Extensions/src/FBMDataCacheExtensions.cs @@ -81,14 +81,28 @@ namespace VNLib.Data.Caching.Extensions /// <returns>A preconfigured <see cref="FBMClientConfig"/> for object caching</returns> public static FBMClientConfig GetDefaultConfig(IUnmangedHeap heap, int maxMessageSize, ILogProvider? debugLog = null) { + /* + * Max message size (for server) should account for max data + the additional header buffer + */ + int maxExtra = (int)Helpers.ToNearestKb((int)(maxMessageSize * 1.2) + MAX_FBM_MESSAGE_HEADER_SIZE); + return new() { BufferHeap = heap, - MaxMessageSize = maxMessageSize * 2, - RecvBufferSize = maxMessageSize, - MessageBufferSize = maxMessageSize, + + //Max message size is referrences + MaxMessageSize = maxExtra, + + //The size of the buffer used for buffering incoming messages + RecvBufferSize = maxExtra, + //Message buffer should be max message + headers + MessageBufferSize = (int)Helpers.ToNearestKb(maxMessageSize + MAX_FBM_MESSAGE_HEADER_SIZE), + + //Caching only requires a fixed number of request headers, so we can used a fixed buffer size MaxHeaderBufferSize = MAX_FBM_MESSAGE_HEADER_SIZE, + + //Set the optional cache sub-protocol SubProtocol = CACHE_WS_SUB_PROCOL, HeaderEncoding = Helpers.DefaultEncoding, |