@@ -346,4 +346,66 @@ public IMaintainer CreateMaintainer()
346
346
{
347
347
return new ZoneTreeMaintainer < TKey , TValue > ( this ) ;
348
348
}
349
+
350
+ public ZoneTreeOptions < TKey , TValue > CloneOptions ( )
351
+ {
352
+ var options = Options ;
353
+ var wal = Options . WriteAheadLogOptions ;
354
+ var dsk = Options . DiskSegmentOptions ;
355
+
356
+ var clonedWal = new WriteAheadLogOptions ( )
357
+ {
358
+ AsyncCompressedModeOptions = new ( )
359
+ {
360
+ EmptyQueuePollInterval = wal . AsyncCompressedModeOptions . EmptyQueuePollInterval ,
361
+ } ,
362
+ CompressionBlockSize = wal . CompressionBlockSize ,
363
+ CompressionLevel = wal . CompressionLevel ,
364
+ CompressionMethod = wal . CompressionMethod ,
365
+ CustomOptions = wal . CustomOptions ,
366
+ EnableIncrementalBackup = wal . EnableIncrementalBackup ,
367
+ SyncCompressedModeOptions = new ( )
368
+ {
369
+ EnableTailWriterJob = wal . SyncCompressedModeOptions . EnableTailWriterJob ,
370
+ TailWriterJobInterval = wal . SyncCompressedModeOptions . TailWriterJobInterval
371
+ } ,
372
+ WriteAheadLogMode = wal . WriteAheadLogMode ,
373
+ } ;
374
+
375
+ var clonesDiskSegmentOptions = new DiskSegmentOptions ( )
376
+ {
377
+ CompressionBlockSize = dsk . CompressionBlockSize ,
378
+ CompressionLevel = dsk . CompressionLevel ,
379
+ CompressionMethod = dsk . CompressionMethod ,
380
+ DefaultSparseArrayStepSize = dsk . DefaultSparseArrayStepSize ,
381
+ DiskSegmentMode = dsk . DiskSegmentMode ,
382
+ KeyCacheRecordLifeTimeInMillisecond = dsk . KeyCacheRecordLifeTimeInMillisecond ,
383
+ KeyCacheSize = dsk . KeyCacheSize ,
384
+ MaximumRecordCount = dsk . MaximumRecordCount ,
385
+ MinimumRecordCount = dsk . MinimumRecordCount ,
386
+ ValueCacheRecordLifeTimeInMillisecond = dsk . ValueCacheRecordLifeTimeInMillisecond ,
387
+ ValueCacheSize = dsk . ValueCacheSize ,
388
+ } ;
389
+
390
+ var clone = new ZoneTreeOptions < TKey , TValue > ( )
391
+ {
392
+ BTreeLeafSize = options . BTreeLeafSize ,
393
+ BTreeLockMode = options . BTreeLockMode ,
394
+ BTreeNodeSize = options . BTreeNodeSize ,
395
+ Comparer = options . Comparer ,
396
+ DiskSegmentMaxItemCount = options . DiskSegmentMaxItemCount ,
397
+ DiskSegmentOptions = dsk ,
398
+ EnableSingleSegmentGarbageCollection = options . EnableSingleSegmentGarbageCollection ,
399
+ IsDeleted = options . IsDeleted ,
400
+ KeySerializer = options . KeySerializer ,
401
+ Logger = options . Logger ,
402
+ MarkValueDeleted = options . MarkValueDeleted ,
403
+ MutableSegmentMaxItemCount = options . MutableSegmentMaxItemCount ,
404
+ RandomAccessDeviceManager = options . RandomAccessDeviceManager ,
405
+ ValueSerializer = options . ValueSerializer ,
406
+ WriteAheadLogOptions = clonedWal ,
407
+ WriteAheadLogProvider = options . WriteAheadLogProvider ,
408
+ } ;
409
+ return clone ;
410
+ }
349
411
}
0 commit comments