internal override void BeginReplicating() { Log.D(TAG, string.Format("Using MaxOpenHttpConnections({0}), MaxRevsToGetInBulk({1})", ManagerOptions.Default.MaxOpenHttpConnections, ManagerOptions.Default.MaxRevsToGetInBulk)); if (_downloadsToInsert == null) { const int capacity = INBOX_CAPACITY * 2; const int delay = 1000; _downloadsToInsert = new Batcher <RevisionInternal>(WorkExecutor, capacity, delay, InsertDownloads); } if (_pendingSequences == null) { _pendingSequences = new SequenceMap(); if (LastSequence != null) { // Prime _pendingSequences so its checkpointedValue will reflect the last known seq: var seq = _pendingSequences.AddValue(LastSequence); _pendingSequences.RemoveSequence(seq); Debug.Assert((_pendingSequences.GetCheckpointedValue().Equals(LastSequence))); } } StartChangeTracker(); }
internal override void BeginReplicating() { Log.To.Sync.I(TAG, "{2} will use MaxOpenHttpConnections({0}), MaxRevsToGetInBulk({1})", ReplicationOptions.MaxOpenHttpConnections, ReplicationOptions.MaxRevsToGetInBulk, this); if (_downloadsToInsert == null) { const int capacity = INBOX_CAPACITY * 2; TimeSpan delay = TimeSpan.FromSeconds(1); _downloadsToInsert = new Batcher <RevisionInternal>(WorkExecutor, capacity, delay, InsertDownloads); } if (_pendingSequences == null) { _pendingSequences = new SequenceMap(); if (LastSequence != null) { // Prime _pendingSequences so its checkpointedValue will reflect the last known seq: var seq = _pendingSequences.AddValue(LastSequence); _pendingSequences.RemoveSequence(seq); Debug.Assert((_pendingSequences.GetCheckpointedValue().Equals(LastSequence))); } } _caughtUp = false; StartChangeTracker(); }
internal override void BeginReplicating() { if (downloadsToInsert == null) { const int capacity = 200; const int delay = 1000; downloadsToInsert = new Batcher <IList <Object> > (WorkExecutor, capacity, delay, InsertRevisions); } pendingSequences = new SequenceMap(); Log.W(Tag, this + ": starting ChangeTracker with since=" + LastSequence); var mode = Continuous ? ChangeTracker.ChangeTrackerMode.LongPoll : ChangeTracker.ChangeTrackerMode.OneShot; changeTracker = new ChangeTracker(RemoteUrl, mode, LastSequence, true, this); Log.W(Tag, this + ": started ChangeTracker " + changeTracker); if (Filter != null) { changeTracker.SetFilterName(Filter); if (FilterParams != null) { changeTracker.SetFilterParams(FilterParams.ToDictionary(kvp => kvp.Key, kvp => (Object)kvp.Value)); } } if (!continuous) { AsyncTaskStarted(); } changeTracker.Start(); }
public void TestSequenceMap() { var map = new SequenceMap(); Assert.AreEqual(0, map.GetCheckpointedSequence()); Assert.AreEqual(null, map.GetCheckpointedValue()); Assert.IsTrue(map.IsEmpty()); Assert.AreEqual(1, map.AddValue("one")); Assert.AreEqual(0, map.GetCheckpointedSequence()); Assert.AreEqual(null, map.GetCheckpointedValue()); Assert.IsTrue(!map.IsEmpty()); Assert.AreEqual(2, map.AddValue("two")); Assert.AreEqual(0, map.GetCheckpointedSequence()); Assert.AreEqual(null, map.GetCheckpointedValue()); Assert.AreEqual(3, map.AddValue("three")); Assert.AreEqual(0, map.GetCheckpointedSequence()); Assert.AreEqual(null, map.GetCheckpointedValue()); map.RemoveSequence(2); Assert.AreEqual(0, map.GetCheckpointedSequence()); Assert.AreEqual(null, map.GetCheckpointedValue()); map.RemoveSequence(1); Assert.AreEqual(2, map.GetCheckpointedSequence()); Assert.AreEqual("two", map.GetCheckpointedValue()); Assert.AreEqual(4, map.AddValue("four")); Assert.AreEqual(2, map.GetCheckpointedSequence()); Assert.AreEqual("two", map.GetCheckpointedValue()); map.RemoveSequence(3); Assert.AreEqual(3, map.GetCheckpointedSequence()); Assert.AreEqual("three", map.GetCheckpointedValue()); map.RemoveSequence(4); Assert.AreEqual(4, map.GetCheckpointedSequence()); Assert.AreEqual("four", map.GetCheckpointedValue()); Assert.IsTrue(map.IsEmpty()); }
public int GetSequenceValue(string sysSettingName) { var sequenceMap = new SequenceMap(UserConnection); var sequence = sequenceMap.GetByNameOrDefault(sysSettingName); return(sequence.GetCurrentValue()); }
public override void BeginReplicating() { if (downloadsToInsert == null) { int capacity = 200; int delay = 1000; downloadsToInsert = new Batcher <IList <object> >(workExecutor, capacity, delay, new _BatchProcessor_117(this)); } pendingSequences = new SequenceMap(); Log.W(Database.Tag, this + ": starting ChangeTracker with since=" + lastSequence); changeTracker = new ChangeTracker(remote, continuous ? ChangeTracker.ChangeTrackerMode .LongPoll : ChangeTracker.ChangeTrackerMode.OneShot, true, lastSequence, this); Log.W(Database.Tag, this + ": started ChangeTracker " + changeTracker); if (filterName != null) { changeTracker.SetFilterName(filterName); if (filterParams != null) { changeTracker.SetFilterParams(filterParams); } } changeTracker.SetDocIDs(documentIDs); changeTracker.SetRequestHeaders(requestHeaders); if (!continuous) { Log.D(Database.Tag, this + "|" + Sharpen.Thread.CurrentThread() + ": beginReplicating() calling asyncTaskStarted()" ); AsyncTaskStarted(); } changeTracker.Start(); }
internal override void BeginReplicating() { Log.D(Tag, string.Format("Using MaxOpenHttpConnections({0}), MaxRevsToGetInBulk({1})", ManagerOptions.Default.MaxOpenHttpConnections, ManagerOptions.Default.MaxRevsToGetInBulk)); if (downloadsToInsert == null) { const int capacity = 200; const int delay = 1000; downloadsToInsert = new Batcher <RevisionInternal> (WorkExecutor, capacity, delay, InsertDownloads); } if (pendingSequences == null) { pendingSequences = new SequenceMap(); if (LastSequence != null) { // Prime _pendingSequences so its checkpointedValue will reflect the last known seq: var seq = pendingSequences.AddValue(LastSequence); pendingSequences.RemoveSequence(seq); Debug.Assert((pendingSequences.GetCheckpointedValue().Equals(LastSequence))); } } Log.D(Tag, "starting ChangeTracker with since = " + LastSequence); var mode = Continuous ? ChangeTrackerMode.LongPoll : ChangeTrackerMode.OneShot; changeTracker = new ChangeTracker(RemoteUrl, mode, LastSequence, true, this, WorkExecutor); changeTracker.Authenticator = Authenticator; if (Filter != null) { changeTracker.SetFilterName(Filter); if (FilterParams != null) { changeTracker.SetFilterParams(FilterParams.ToDictionary(kvp => kvp.Key, kvp => (Object)kvp.Value)); } } if (!continuous) { Log.D(Tag, "BeginReplicating() calling asyncTaskStarted()"); AsyncTaskStarted(); } changeTracker.UsePost = CheckServerCompatVersion("0.93"); changeTracker.Start(); }
public override void BeginReplicating() { if (downloadsToInsert == null) { int capacity = 200; int delay = 1000; downloadsToInsert = new Batcher <RevisionInternal>(workExecutor, capacity, delay, new _BatchProcessor_131(this)); } if (pendingSequences == null) { pendingSequences = new SequenceMap(); if (GetLastSequence() != null) { // Prime _pendingSequences so its checkpointedValue will reflect the last known seq: long seq = pendingSequences.AddValue(GetLastSequence()); pendingSequences.RemoveSequence(seq); System.Diagnostics.Debug.Assert((pendingSequences.GetCheckpointedValue().Equals(GetLastSequence ()))); } } Log.W(Log.TagSync, "%s: starting ChangeTracker with since=%s", this, lastSequence ); changeTracker = new ChangeTracker(remote, continuous ? ChangeTracker.ChangeTrackerMode .LongPoll : ChangeTracker.ChangeTrackerMode.OneShot, true, lastSequence, this); changeTracker.SetAuthenticator(GetAuthenticator()); Log.W(Log.TagSync, "%s: started ChangeTracker %s", this, changeTracker); if (filterName != null) { changeTracker.SetFilterName(filterName); if (filterParams != null) { changeTracker.SetFilterParams(filterParams); } } changeTracker.SetDocIDs(documentIDs); changeTracker.SetRequestHeaders(requestHeaders); if (!continuous) { Log.V(Log.TagSync, "%s | %s: beginReplicating() calling asyncTaskStarted()", this , Sharpen.Thread.CurrentThread()); AsyncTaskStarted(); } changeTracker.SetUsePOST(ServerIsSyncGatewayVersion("0.93")); changeTracker.Start(); }
public string GetIncrementValueVsMask(string sysSettingName, string sysSettingMaskName) { string sysSettingsCodeMask = (string)CoreSysSettings.GetValue(UserConnection, sysSettingMaskName); string result = string.Empty; if (GlobalAppSettings.UseDBSequence) { var sequenceMap = new SequenceMap(UserConnection); var sequence = sequenceMap.GetByNameOrDefault(sysSettingName); result = string.Format(sysSettingsCodeMask, sequence.GetNextValue()); return(result); } var coreSysSettings = new CoreSysSettings(UserConnection); if (coreSysSettings.FetchFromDB("Code", sysSettingName)) { int sysSettingsLastNumber = Convert.ToInt32(CoreSysSettings.GetDefValue(UserConnection, sysSettingName)); ++sysSettingsLastNumber; CoreSysSettings.SetDefValue(UserConnection, sysSettingName, sysSettingsLastNumber); result = string.Format(sysSettingsCodeMask, sysSettingsLastNumber); } return(result); }
/// <summary> /// Returns sequence number. /// </summary> /// <param name="entitySchema">Entity schema.</param> /// <param name="connection">User connection.</param> /// <returns>String that represents a generated sequence number.</returns> public virtual string GenerateSequenseNumber(EntitySchema entitySchema, UserConnection connection) { string entitySchemaName = entitySchema.Name; string codeMaskSettingName = entitySchemaName + "CodeMask"; string lastNumberSettingName = entitySchemaName + "LastNumber"; string sysSettingsCodeMask = string.Empty; var sysSettingsMaskItem = new CoreSysSettings(connection) { UseAdminRights = false, Code = codeMaskSettingName }; if (!sysSettingsMaskItem.FetchFromDB("Code", codeMaskSettingName)) { throw new ItemNotFoundException(codeMaskSettingName); } if (sysSettingsMaskItem.IsPersonal) { sysSettingsCodeMask = (string)CoreSysSettings.GetValue(connection, codeMaskSettingName); } else { sysSettingsCodeMask = (string)CoreSysSettings.GetDefValue(connection, codeMaskSettingName); } if (GlobalAppSettings.UseDBSequence) { var sequenceMap = new SequenceMap(connection); var sequence = sequenceMap.GetByNameOrDefault(lastNumberSettingName); return(string.Format(sysSettingsCodeMask, sequence.GetNextValue())); } int sysSettingsLastNumber = Convert.ToInt32(CoreSysSettings.GetDefValue(connection, lastNumberSettingName)); ++sysSettingsLastNumber; CoreSysSettings.SetDefValue(connection, lastNumberSettingName, sysSettingsLastNumber); return(string.Format(sysSettingsCodeMask, sysSettingsLastNumber)); }
public void SetSequenceValue(string sysSettingName, int startValue) { var sequenceMap = new SequenceMap(UserConnection); sequenceMap.CreateOrAlterSequence(sysSettingName, startValue); }