コード例 #1
0
        /// <summary>
        /// Logs the given event.
        /// </summary>
        /// <param name="eventRecord">The event record.</param>
        public void LogEvent(EventRecord eventRecord)
        {
            foreach (IEventLogAware observer in this.eventObservers)
            {
                eventRecord = observer.Observe(eventRecord);
            }

            this.loggedEvents.Add(eventRecord);
        }
コード例 #2
0
        /// <summary>
        /// Occurs when the timeOutTimer has fired (after 5 minutes of inactivity).
        /// </summary>
        /// <param name="sender">The sender.</param>
        /// <param name="args">The <see cref="System.EventArgs"/> instance containing the event data.</param>
        private void TimeOutTimerTick(object sender, EventArgs args)
        {
            EventRecord timeoutRecord = new EventRecord
            {
                EventName = "SessionTimedOut",
                EventTime = DateTime.Now
            };

            this.LogSessionEvent(timeoutRecord);
            this.session.EndTime = timeoutRecord.EventTime;
            this.timeOutTimer.Stop();
            this.eventLogger.ResetLog();
            this.OnSessionTimedOut();
        }
コード例 #3
0
        /// <summary>
        /// Starts a new session.
        /// </summary>
        public void StartSession()
        {
            EventRecord startRecord = new EventRecord
            {
                EventName = "SessionStarted",
                EventTime = DateTime.Now
            };

            this.LogSessionEvent(startRecord);
            this.session = new Session { StartTime = DateTime.Now };
            this.timeOutTimer.Start();
            this.OnSessionStarted();

            this.currentState = new ApplicationState { Name = "StartState" };
        }
コード例 #4
0
 /// <summary>
 /// Logs an event in the current session.
 /// </summary>
 /// <param name="eventRecord">The event record.</param>
 public void LogSessionEvent(EventRecord eventRecord)
 {
     this.timeOutTimer.Stop();
     this.timeOutTimer.Start();
     this.eventLogger.LogEvent(eventRecord);
 }
コード例 #5
0
        /// <summary>
        /// Goes to specified state in the current session.
        /// </summary>
        /// <param name="targetState">The state to go to.</param>
        public void GoToState(ApplicationState targetState)
        {
            EventRecord stateChangeRecord = new EventRecord
            {
                EventName = "StateChanged",
                EventTime = DateTime.Now,
                Metadata = new Dictionary<string, object>
                {
                    { "PreviousState", this.currentState.Name },
                    { "CurrentState", targetState.Name }
                }
            };

            this.LogSessionEvent(stateChangeRecord);
            this.previousState = this.currentState;
            this.currentState = targetState;

            this.OnStateChanged();
        }
コード例 #6
0
        /// <summary>
        /// Ends the current session.
        /// </summary>
        public void EndSession()
        {
            EventRecord endRecord = new EventRecord
            {
                EventName = "SessionEnded",
                EventTime = DateTime.Now
            };

            this.LogSessionEvent(endRecord);
            this.session.EndTime = endRecord.EventTime;
            this.timeOutTimer.Stop();
            this.eventLogger.ResetLog();
            this.OnSessionEnded();
        }