예제 #1
0
        /// <summary>
        /// Processes a sync event.
        /// </summary>
        /// <param name="sender">The object that raised the event.</param>
        /// <param name="eventArgs">Event arguments.</param>
        private void HandleSyncAsync(object sender, SyncEventArgs eventArgs)
        {
            Log.LogTrace("Handling sync event");
            var response = eventArgs.Response;

            HandleRoomEvents(response.Rooms);
        }
예제 #2
0
        private void OnSyncEvent(object sender, SyncEventArgs e)
        {
            if (_logger.IsTrace)
            {
                _logger.Trace($"|NetworkTrace| sync event {e.SyncStatus.ToString()} on {e.Peer.Node:s}");
            }

            if (!_sessions.TryGetValue(e.Peer.SessionId, out ISession session))
            {
                if (_logger.IsTrace)
                {
                    _logger.Trace($"Sync failed for an unknown session {e.Peer.Node:s} {e.Peer.SessionId}");
                }
                return;
            }

            var nodeStatsEvent = GetSyncEventType(e.SyncStatus);

            _stats.ReportSyncEvent(session.Node, nodeStatsEvent, new SyncNodeDetails
            {
                NodeBestBlockNumber = e.NodeBestBlockNumber,
                OurBestBlockNumber  = e.OurBestBlockNumber
            });

            if (new[] { SyncStatus.InitFailed, SyncStatus.InitCancelled, SyncStatus.Failed, SyncStatus.Cancelled }.Contains(e.SyncStatus))
            {
                if (_logger.IsDebug)
                {
                    _logger.Debug($"Initializing disconnect {session} on sync {e.SyncStatus.ToString()} with {e.Peer.Node:s}");
                }
                session.InitiateDisconnect(DisconnectReason.Other, $"sync failed {e.SyncStatus}");
            }
        }
예제 #3
0
        void FRowSynchronizer_Synced(object sender, SyncEventArgs <object, object> args)
        {
            switch (args.Action)
            {
            case CollectionAction.Added:
                break;

            case CollectionAction.Removed:
                break;

            case CollectionAction.Cleared:
                break;

            case CollectionAction.OrderChanged:
                break;

            case CollectionAction.Updating:
                ((ISupportInitialize)FDataGridView).BeginInit();
                break;

            case CollectionAction.Updated:
                ((ISupportInitialize)FDataGridView).EndInit();
                break;

            default:
                break;
            }
        }
예제 #4
0
파일: DB.cs 프로젝트: Fedorm/core-master
        void SyncComplete(object sender, SyncEventArgs e)
        {
            ActionHandler.Busy   = false;
            ActionHandlerEx.Busy = false;

            CommonData common = (CommonData)_context.ValueStack.Values["common"];

            common.SyncIsOK = e.OK;

            DbEngine.Database.Current.SyncComplete(e.OK);

            if (_handler != null)
            {
                _context.InvokeOnMainThread(() =>
                {
                    _handler.ExecuteStandalone(_scriptEngine.Visitor, new object[] { _state });
                    _state   = null;
                    _handler = null;
                });
            }

            if (!e.OK)
            {
                LastError = e.Exception.Message;
                _context.HandleException(e.Exception);
            }
        }
예제 #5
0
        void synchronizer_Synced(object sender, SyncEventArgs <object, object> args)
        {
            var node = args.TargetItem as MapperTreeNode;

            switch (args.Action)
            {
            case CollectionAction.Added:
                if (Added != null)
                {
                    Added(this, node);
                }
                break;

            case CollectionAction.Removed:
                if (Removed != null)
                {
                    Removed(this, node);
                }
                break;

            case CollectionAction.OrderChanged:
                if (OrderChanged != null)
                {
                    OrderChanged(this);
                }
                break;

            default:
                // Ignore
                break;
            }
        }
예제 #6
0
 void LoadComplete(object sender, SyncEventArgs e)
 {
     _baseActivity.RunOnUiThread(() =>
     {
         if (!_disposed)
         {
             if (e.OK)
             {
                 StartApplication();
             }
             else
             {
                 var ce = e.Exception as ConnectionException;
                 if (ce != null)
                 {
                     ReturnToStartMenu(ce.FriendlyMessage, ce.Report);
                 }
                 else
                 {
                     HandleException(e.Exception);
                     var ex = e.Exception as CustomException;
                     if (ex != null)
                     {
                         ReturnToStartMenu(ex.FriendlyMessage, ex.Report);
                     }
                 }
             }
         }
     });
 }
예제 #7
0
        void synchronizer_Synced(object sender, SyncEventArgs <MapperHierarchyNode, object> args)
        {
            switch (args.Action)
            {
            case CollectionAction.Added:
                FViewer.UpdateView();
                break;

            case CollectionAction.Removed:
                FViewer.UpdateView();
                break;

            case CollectionAction.Cleared:
                FViewer.UpdateView();
                break;

            case CollectionAction.OrderChanged:
                FViewer.UpdateView();
                break;

            case CollectionAction.Updating:
                FViewer.BeginUpdate();
                break;

            case CollectionAction.Updated:
                FViewer.EndUpdate();
                break;
            }
        }
예제 #8
0
 protected virtual void Sync(SyncEventArgs<UserWithSessionVars> e)
 {
     var handler = OnChange;
     if (handler != null)
     {
         handler(this, e);
     }
 }
예제 #9
0
        protected virtual void Sync(SyncEventArgs <UserWithSessionVars> e)
        {
            var handler = OnChange;

            if (handler != null)
            {
                handler(this, e);
            }
        }
예제 #10
0
        protected virtual void Sync(SyncEventArgs <IEntity> e)
        {
            var handler = OnChange;

            if (handler != null)
            {
                handler(this, e);
            }
        }
예제 #11
0
 public void OnChange(object sender, SyncEventArgs<IEntity> e)
 {
     //No need for keeping track of the following, signalr solves it using buffering
     //Might need it for clients that are disconnected for a long time
     //Check which users are currently connected (needs a list of users that should be here?)
     //save operations for users that are not connected and send at reconnect?
     GlobalHost.ConnectionManager.GetHubContext<ProjectHub>()
         .Clients.Group(_user.ActiveProject.ToString())
         .onChange(e.Operation, e.Type, e.Item);
 }
예제 #12
0
        private async Task <bool> SyncCallback(SyncEventArgs e)
        {
            var task = await MessageService.ShowConfirmMessage(e.Message);

            if (task != MessageDialogResult.Affirmative)
            {
                return(false);
            }
            return(true);
        }
예제 #13
0
 public void OnChange(object sender, SyncEventArgs <IEntity> e)
 {
     //No need for keeping track of the following, signalr solves it using buffering
     //Might need it for clients that are disconnected for a long time
     //Check which users are currently connected (needs a list of users that should be here?)
     //save operations for users that are not connected and send at reconnect?
     GlobalHost.ConnectionManager.GetHubContext <ProjectHub>()
     .Clients.Group(_user.ActiveProject.ToString())
     .onChange(e.Operation, e.Type, e.Item);
 }
예제 #14
0
 private void Sync_OnComplete(object sender, SyncEventArgs e)
 {
     Write(e.Message);
     if (ContinuousMode == true)
     {
         Write(string.Format("Continuous mode: next sync at: {0}", DateTime.Now.AddMilliseconds(SyncTimer.Interval).ToString("HH:mm:ss")));
         StartTimer();
     }
     SyncRunning = false;
     SaveLastSyncTime();
 }
예제 #15
0
 void orderSync_Syncing(object sender, SyncEventArgs e)
 {
     this.Dispatcher.BeginInvoke(new Action(() =>
     {
         if (this.tbMessage.LineCount > 10000)
         {
             this.tbMessage.Text = "";
         }
         this.tbMessage.AppendText(DateTime.Now + ":" + e.Message + Environment.NewLine);
         this.tbMessage.ScrollToEnd();
     }));
 }
예제 #16
0
 private async Task OnSyncFailed(object sender, SyncEventArgs e)
 {
     if (_activePeers.TryGetValue(e.Peer.NodeId, out var activePeer) && activePeer.Session != null)
     {
         if (_logger.IsInfoEnabled)
         {
             _logger.Info($"Initializing disconnect on sync failed with node: {e.Peer.NodeId}");
         }
         await activePeer.Session.InitiateDisconnectAsync(DisconnectReason.BreachOfProtocol);
     }
     else
     {
         if (_logger.IsInfoEnabled)
         {
             _logger.Info($"Sync failed, peer not in active collection: {e.Peer.NodeId}");
         }
     }
 }
예제 #17
0
 void LoadComplete(object sender, SyncEventArgs args)
 {
     if (args.OK)
     {
         _controller.BeginInvokeOnMainThread(() => {
             OpenStartScreen(true);
             UIApplication.SharedApplication.EndBackgroundTask(_backgroundTaskId);
         });
     }
     else
     {
         CustomException ce = args.Exception as CustomException;
         if (ce != null)
         {
             string msg = ce.FriendlyMessage;
             Logon(Settings.ClearCacheOnStart, msg);
         }
         else
         {
             HandleException(args.Exception);
         }
         UIApplication.SharedApplication.EndBackgroundTask(_backgroundTaskId);
     }
 }
예제 #18
0
 private void teamRepository_OnChange(object sender, SyncEventArgs <IEntity> e)
 {
     Sync(new SyncEventArgs <IEntity>(e.Operation, e.Item));
 }
예제 #19
0
 private void Sync_OnProgress(object sender, SyncEventArgs e)
 {
     Write(e.Message);
 }
예제 #20
0
 protected virtual void repository_OnChange(object sender, SyncEventArgs <IEntity> e)
 {
     SyncManager.OnChange(sender, e);
 }
예제 #21
0
 private void Sync_OnCancelled(object sender, SyncEventArgs e)
 {
     Write(e.Message);
     SyncRunning = false;
 }
예제 #22
0
 private void Sync_OnError(object sender, SyncEventArgs e)
 {
     Write(e.Message);
 }
예제 #23
0
 private void SynchronizerOnSyncEvent(object sender, SyncEventArgs e)
 {
     TestContext.WriteLine(e.SyncEvent);
 }
예제 #24
0
파일: Program.cs 프로젝트: ssickles/archive
 static void _syncManager_SyncBegin(object sender, SyncEventArgs SyncArgs)
 {
     Console.WriteLine(string.Format("Sync Begin: {0}", SyncArgs.Sync.Name));
 }
예제 #25
0
 protected virtual void repository_OnChange(object sender, SyncEventArgs<IEntity> e)
 {
     SyncManager.OnChange(sender, e);
 }
예제 #26
0
        /// <summary>
        ///     Delete appointments in destination
        /// </summary>
        /// <param name="syncProfile"></param>
        /// <param name="syncMetric"></param>
        /// <param name="destinationCalendarSpecificData"></param>
        /// <param name="syncCallback"></param>
        /// <returns>
        /// </returns>
        private bool DeleteDestinationAppointments(CalendarSyncProfile syncProfile, SyncMetric syncMetric,
                                                   IDictionary <string, object> destinationCalendarSpecificData, SyncCallback syncCallback)
        {
            //Updating entry isDeleteOperation status
            CalendarSyncStatus = StatusHelper.GetMessage(SyncStateEnum.Line);
            CalendarSyncStatus = StatusHelper.GetMessage(SyncStateEnum.ReadingEntriesToDelete,
                                                         DestinationCalendarService.CalendarServiceName);
            //Getting appointments to isDeleteOperation
            CalendarSyncEngine.GetDestEntriesToDelete(syncProfile,
                                                      SourceAppointments, DestinationAppointments);
            var appointmentsToDelete = CalendarSyncEngine.DestAppointmentsToDelete;

            if (syncProfile.SyncMode == SyncModeEnum.OneWay && CalendarSyncEngine.DestOrphanEntries.Any())
            {
                if (syncProfile.SyncSettings.ConfirmOnDelete && syncCallback != null)
                {
                    var orphanEntries = Environment.NewLine +
                                        string.Join(Environment.NewLine, CalendarSyncEngine.DestOrphanEntries);
                    //Log Orphan Entries
                    Logger.Warn("Orphan entries to delete: " + orphanEntries);

                    var message =
                        $"Are you sure you want to delete {appointmentsToDelete.Count} orphan entries from {DestinationCalendarService.CalendarServiceName}?{orphanEntries}";
                    var e = new SyncEventArgs(message, UserActionEnum.ConfirmDelete);

                    var task = syncCallback(e);
                    if (task.Result)
                    {
                        appointmentsToDelete.AddRange(CalendarSyncEngine.DestOrphanEntries);
                    }
                }
                else
                {
                    if (!syncProfile.SyncSettings.DisableDelete)
                    {
                        appointmentsToDelete.AddRange(CalendarSyncEngine.DestOrphanEntries);
                    }
                    else
                    {
                        CalendarSyncStatus = StatusHelper.GetMessage(SyncStateEnum.SkipDelete);
                    }
                }
            }

            //Updating Get entry isDeleteOperation status
            CalendarSyncStatus = StatusHelper.GetMessage(SyncStateEnum.EntriesToDelete, appointmentsToDelete.Count);

            if (appointmentsToDelete.Count == 0)
            {
                CalendarSyncStatus = StatusHelper.GetMessage(SyncStateEnum.Line);
                return(true);
            }

            //Updating isDeleteOperation status
            CalendarSyncStatus = StatusHelper.GetMessage(SyncStateEnum.DeletingEntries,
                                                         DestinationCalendarService.CalendarServiceName);

            //Deleting entries

            var deletedAppointments =
                DestinationCalendarService.DeleteCalendarEvents(appointmentsToDelete, destinationCalendarSpecificData)
                .Result;
            var isSuccess = deletedAppointments.IsSuccess;

            //Update status if entries were successfully deleted
            CalendarSyncStatus =
                StatusHelper.GetMessage(isSuccess
                    ? SyncStateEnum.DeletingEntriesComplete
                    : SyncStateEnum.DeletingEntriesFailed);
            CalendarSyncStatus = StatusHelper.GetMessage(SyncStateEnum.Line);
            if (isSuccess)
            {
                syncMetric.DestMetric.DeleteCount       = appointmentsToDelete.Count;
                syncMetric.DestMetric.DeleteFailedCount = appointmentsToDelete.Count - deletedAppointments.Count;
                for (var index = 0; index < appointmentsToDelete.Count; index++)
                {
                    DestinationAppointments.Remove(appointmentsToDelete[index]);
                }
            }

            return(isSuccess);
        }
예제 #27
0
        private async Task <bool> SyncCallback(SyncEventArgs e)
        {
            var messageDialogResult = await MessageService.ShowConfirmMessage(e.Message);

            return(messageDialogResult == MessageDialogResult.Affirmative);
        }