LocalStoreSettings GetLocalStoreSettings()
        {
            var localStoreSettings       = userDefinedLocalStoreSettings;
            var packageActivationContext = initParams.CodePackageActivationContext;

            if (localStoreSettings == null)
            {
                const string configSectionName = "LocalStoreConfig";
                if (packageActivationContext.GetConfigurationPackageObject("Config")
                    .Settings.Sections.Contains(configSectionName))
                {
                    localStoreSettings = LocalEseStoreSettings.LoadFrom(packageActivationContext,
                                                                        "Config",
                                                                        configSectionName);
                }
            }

            if (localStoreSettings == null)
            {
                localStoreSettings = new LocalEseStoreSettings
                {
                    MaxAsyncCommitDelay     = TimeSpan.FromMilliseconds(100.0),
                    MaxVerPages             = 32768,
                    EnableIncrementalBackup = userDefinedEnableIncrementalBackup
                }
            }
            ;
            var eseStoreSettings = localStoreSettings as LocalEseStoreSettings;

            if (eseStoreSettings != null && string.IsNullOrEmpty(eseStoreSettings.DbFolderPath))
            {
                eseStoreSettings.DbFolderPath = packageActivationContext.WorkDirectory;
            }
            return(localStoreSettings);
        }

        KeyValueStoreReplicaSettings GetKvsReplicaSettings()
        {
            var storeReplicaSettings = new KeyValueStoreReplicaSettings
            {
                SecondaryNotificationMode = KeyValueStoreReplica.SecondaryNotificationMode.NonBlockingQuorumAcked
            };

            if (userDefinedLogTruncationInterval.HasValue)
            {
                storeReplicaSettings.LogTruncationIntervalInMinutes = userDefinedLogTruncationInterval.Value;
            }
            return(storeReplicaSettings);
        }

        KeyValueStoreWrapper CreateStoreReplica()
        {
            return(new KeyValueStoreWrapper("KeyValueStateProvider", GetLocalStoreSettings(), GetReplicatorSettings(),
                                            GetKvsReplicaSettings(), OnCopyComplete, OnReplicationOperation, onDataLossAsyncFunction));
        }
 public KeyValueStoreWrapper(string storeName, LocalStoreSettings storeSettings,
                             ReplicatorSettings replicatorSettings, KeyValueStoreReplicaSettings kvsReplicaSettings,
                             Action <KeyValueStoreEnumerator> copyHandler,
                             Action <IEnumerator <KeyValueStoreNotification> > replicationHandler,
                             Func <CancellationToken, Task <bool> > onDataLossCallback)
     : base(storeName, storeSettings, replicatorSettings, kvsReplicaSettings)
 {
     this.copyHandler        = copyHandler;
     this.replicationHandler = replicationHandler;
     this.onDataLossCallback = onDataLossCallback;
 }