Пример #1
0
        private void StartChangeTracker()
        {
            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 (DocIds != null)
            {
                if (ServerType != null && ServerType.Name == "CouchDB")
                {
                    _changeTracker.SetDocIDs(DocIds.ToList());
                }
                else
                {
                    Log.W(TAG, "DocIds parameter only supported on CouchDB");
                }
            }

            if (Filter != null)
            {
                _changeTracker.SetFilterName(Filter);
                if (FilterParams != null)
                {
                    _changeTracker.SetFilterParams(FilterParams.ToDictionary(kvp => kvp.Key, kvp => kvp.Value));
                }
            }

            _changeTracker.UsePost = CheckServerCompatVersion("0.93");
            _changeTracker.Start();
        }
Пример #2
0
        private void StartChangeTracker()
        {
            var mode         = ChangeTrackerMode.OneShot;
            var pollInterval = ReplicationOptions.PollInterval;

            if (Continuous && pollInterval == TimeSpan.Zero && ReplicationOptions.UseWebSocket)
            {
                mode = ChangeTrackerMode.WebSocket;
            }

            Log.To.Sync.V(TAG, "{0} starting ChangeTracker: mode={0} since={1}", this, mode, LastSequence);
            var initialSync          = LocalDatabase.IsOpen && LocalDatabase.GetDocumentCount() == 0;
            var changeTrackerOptions = new ChangeTrackerOptions {
                DatabaseUri      = RemoteUrl,
                Mode             = mode,
                IncludeConflicts = true,
                LastSequenceID   = LastSequence,
                Client           = this,
                RetryStrategy    = ReplicationOptions.RetryStrategy,
                WorkExecutor     = WorkExecutor,
            };

            _changeTracker               = ChangeTrackerFactory.Create(changeTrackerOptions);
            _changeTracker.ActiveOnly    = initialSync;
            _changeTracker.Authenticator = Authenticator;
            _changeTracker.Continuous    = Continuous;
            _changeTracker.PollInterval  = pollInterval;
            _changeTracker.Heartbeat     = ReplicationOptions.Heartbeat;
            if (DocIds != null)
            {
                if (ServerType != null && ServerType.Name == "CouchDB")
                {
                    _changeTracker.DocIDs = DocIds.ToList();
                }
                else
                {
                    Log.To.Sync.W(TAG, "DocIds parameter only supported on CouchDB");
                }
            }

            if (Filter != null)
            {
                _changeTracker.FilterName = Filter;
                if (FilterParams != null)
                {
                    _changeTracker.FilterParameters = FilterParams.ToDictionary(kvp => kvp.Key, kvp => kvp.Value);
                }
            }

            if (ServerType != null)
            {
                _changeTracker.ServerType = ServerType;
            }

            _changeTracker.Start();
        }
Пример #3
0
        private void StartChangeTracker()
        {
            var mode         = ChangeTrackerMode.OneShot;
            var pollInterval = ReplicationOptions.PollInterval;

            if (Continuous && pollInterval == TimeSpan.Zero && ReplicationOptions.UseWebSocket)
            {
                mode = ChangeTrackerMode.WebSocket;
            }

            _canBulkGet = mode == ChangeTrackerMode.WebSocket;
            Log.To.Sync.V(TAG, "{0} starting ChangeTracker: mode={0} since={1}", this, mode, LastSequence);
            var initialSync          = LocalDatabase.IsOpen && LocalDatabase.GetDocumentCount() == 0;
            var changeTrackerOptions = new ChangeTrackerOptions {
                DatabaseUri      = RemoteUrl,
                Mode             = mode,
                IncludeConflicts = true,
                LastSequenceID   = LastSequence,
                Client           = this,
                RemoteSession    = _remoteSession,
                RetryStrategy    = ReplicationOptions.RetryStrategy,
                WorkExecutor     = WorkExecutor,
                UsePost          = CheckServerCompatVersion("0.9.3")
            };

            _changeTracker              = ChangeTrackerFactory.Create(changeTrackerOptions);
            _changeTracker.ActiveOnly   = initialSync;
            _changeTracker.Continuous   = Continuous;
            _changeTracker.PollInterval = pollInterval;
            _changeTracker.Heartbeat    = ReplicationOptions.Heartbeat;
            _changeTracker.DocIDs       = DocIds?.ToList();

            if (Filter != null)
            {
                _changeTracker.FilterName = Filter;
                if (FilterParams != null)
                {
                    _changeTracker.FilterParameters = FilterParams.ToDictionary(kvp => kvp.Key, kvp => kvp.Value);
                }
            }

            _changeTracker.Start();
        }