コード例 #1
0
 private void RemoveManagedSession(ExecutingSessionInfo session)
 {
     lock (this)
     {
         _sessions.RemoveAll(x => x.Equals(session));
     }
 }
コード例 #2
0
 /// <summary>
 /// Clears the current session.
 /// </summary>
 public void ClearCurrentSession()
 {
     if (_currentDisplayedSession != null)
     {
         _currentDisplayedSession = null;
     }
 }
コード例 #3
0
 private void AddManagedSession(ExecutingSessionInfo newSession)
 {
     lock (this)
     {
         _sessions.Add(newSession);
     }
     SetCurrentSession(newSession.SessionId);
 }
コード例 #4
0
        /// <summary>
        /// Updates the session information from database asynchronously.
        /// </summary>
        /// <param name="sessionInfo">The session information.</param>
        /// <param name="includeStateData">if set to <c>true</c> [include state data].</param>
        /// <returns>Task.</returns>
        internal Task UpdateSessionInfoFromDatabaseAsynch(ExecutingSessionInfo sessionInfo, bool includeStateData = true)
        {
            Task returnValue = null;

            if (sessionInfo != null)
            {
                returnValue = Task.Factory.StartNew(() => UpdateSessionInfoFromDatabase(sessionInfo, includeStateData));
            }
            return(returnValue);
        }
コード例 #5
0
        private ExecutingSessionInfo GetSessionInfoFromDatabase(string sessionId)
        {
            ExecutingSessionInfo result = new ExecutingSessionInfo()
            {
                SessionId = sessionId
            };

            UpdateSessionInfoFromDatabase(result);
            return(result);
        }
コード例 #6
0
        public override bool Equals(object obj)
        {
            if (obj == null || GetType() != obj.GetType())
            {
                return(false);
            }

            ExecutingSessionInfo p = (ExecutingSessionInfo)obj;

            return(SessionId == p.SessionId);
        }
コード例 #7
0
 /// <summary>
 /// Sets the current session to the specified Session Id.
 /// </summary>
 /// <param name="sessionId">The session identifier.</param>
 public void SetCurrentSession(string sessionId)
 {
     if (!string.IsNullOrEmpty(sessionId))
     {
         _currentDisplayedSession = GetExecutingSessionInfo(sessionId);
         RefreshCurrentSession();
     }
     else
     {
         MessageBox.Show("No session found for {0}".FormatWith(sessionId)
                         , "Session Not Found", MessageBoxButtons.OK, MessageBoxIcon.Warning);
     }
 }
コード例 #8
0
        private bool UpdateSessionInfoFromDatabase(ExecutingSessionInfo execSessionInfo, bool includeStateData = true)
        {
            bool     result        = false;
            DateTime?actualEndTime = null;

            if (execSessionInfo != null && !string.IsNullOrEmpty(execSessionInfo.SessionId))
            {
                var sessionId = execSessionInfo.SessionId;
                using (var context = DbConnect.DataLogContext())
                {
                    var session = context.Sessions.FirstOrDefault(s => s.SessionId == sessionId);
                    if (session != null)
                    {
                        actualEndTime = session.ShutdownDateTime?.LocalDateTime;
                        if (actualEndTime.HasValue)
                        {
                            execSessionInfo.ShutDownDate = actualEndTime;
                        }

                        execSessionInfo.Dispatcher       = session.Dispatcher;
                        execSessionInfo.SessionId        = session.SessionId;
                        execSessionInfo.Name             = session.SessionName;
                        execSessionInfo.Owner            = session.Owner;
                        execSessionInfo.StartDate        = session.StartDateTime?.LocalDateTime;
                        execSessionInfo.EstimatedEndDate = session.ProjectedEndDateTime?.LocalDateTime;

                        //if (includeStateData)
                        //{
                        //    var state = Enum<SessionState>.Parse(session.Status, true);
                        //    execSessionInfo.MapElement = null;
                        //    execSessionInfo.State = state;
                        //    execSessionInfo.StartupTransition = SessionStartupTransition.None;
                        //}
                    }
                }
                result = true;
            }
            return(result);
        }
コード例 #9
0
        private ExecutingSessionInfo GetNewExecutingSessionInfo(SessionTicket ticket)
        {
            if (IsManagedSession(ticket.SessionId))
            {
                throw new Exception("Session {0} already exists".FormatWith(ticket.SessionId));
            }

            var result = new ExecutingSessionInfo()
            {
                SessionId         = ticket.SessionId,
                Name              = ticket.SessionName,
                Owner             = ticket.SessionOwner.UserName,
                MapElement        = null,
                State             = SessionState.Available,
                StartupTransition = SessionStartupTransition.None,
                Dispatcher        = Dispatcher,
            };

            AddManagedSession(result);
            SetCurrentSession(result.SessionId);
            return(result);
        }