Example #1
0
 /// <summary>
 /// Called when the KCD connection status has changed. The default
 /// behavior is to fail on disconnection.
 /// </summary>
 public virtual void HandleKcdConn(KcdConnStatus status, Exception ex)
 {
     if (status == KcdConnStatus.Disconnecting || status == KcdConnStatus.Disconnected)
     {
         if (ex == null) ex = new EAnpExInterrupted();
         HandleFailure(ex);
     }
 }
Example #2
0
 /// <summary>
 /// Called when the workspace login status has changed. The default
 /// behavior is to fail on log out.
 /// </summary>
 public virtual void HandleKwsLogin(KwsLoginStatus status, Exception ex)
 {
     if (status == KwsLoginStatus.LoggingOut || status == KwsLoginStatus.LoggedOut)
     {
         if (ex == null) ex = new EAnpExInterrupted();
         HandleFailure(ex);
     }
 }
Example #3
0
 /// <summary>
 /// Called when the current workspace task is switching. The default
 /// behavior is to fail if an exception occurred or if the new task
 /// is not Spawn or WorkOnline.
 /// </summary>
 public virtual void HandleTaskSwitch(KwsTask task, Exception ex)
 {
     if (ex != null ||
         (task != KwsTask.Spawn && task != KwsTask.WorkOnline))
     {
         if (ex == null) ex = new EAnpExInterrupted();
         HandleFailure(ex);
     }
 }
Example #4
0
File: Vnc.cs Project: tmbx/kwm-ng
        /// <summary>
        /// This method should be called when an error occurs in the session.
        /// This is a no-op if the session has completed. 'ex' can be null if
        /// the session ended normally.
        /// </summary>
        public void HandleSessionTrouble(Exception ex)
        {
            if (Status == VncSessionStatus.Completed) return;

            // Determine whether we were starting the session.
            bool startFlag = (Status != VncSessionStatus.Started);

            // Convert the exception to an EAnp exception as needed. If we
            // failed to start, we always need an exception.
            EAnpException castedEx = null;
            if (ex != null) castedEx = EAnpException.FromException(ex);
            if (castedEx == null && startFlag) castedEx = new EAnpExInterrupted();

            // Terminate this session.
            Terminate();

            // Notify listeners. There are three cases:
            // - The session failed to start.
            // - The session ended normally.
            // - The session eneded abnormally.
            PostLocalVncSessionEvent(startFlag, castedEx);

            Kws.OnStateChange(WmStateChange.Transient);
        }