示例#1
0
 protected void SetFlag(PipeReaderState p_flag, bool p_value)
 {
     if (p_value)
     {
         State = m_state | p_flag;
     }
     else
     {
         State = m_state & ~p_flag;
     }
 }
示例#2
0
        public void UpdateStatus()
        {
            if (InvokeRequired)
            {
                BeginInvoke(new Action(UpdateStatus));
                return;
            }

            var currentReaderState = m_pipeReader.State;

            var clearedFlags = m_previousPipeReaderState & ~currentReaderState;
            var newFlags     = currentReaderState & ~m_previousPipeReaderState;

            /*
             *
             *          Debug.Print(Environment.NewLine);
             *          Debug.Print("=====================================================================");
             *          Debug.Print("Invoked state: {0}", currentReaderState);
             *
             *          if (newFlags != PipeReaderState.None)
             *              Debug.Print("New flags: {0}", newFlags);
             *          if (clearedFlags != PipeReaderState.None)
             *              Debug.Print("Cleared flags: {0}", clearedFlags);
             *
             */

            if (clearedFlags == PipeReaderState.ConnectionAccepted)
            {
                m_pipeReader.EnabledWritingFile = chkStartWritingImmediately.Checked;
            }

            m_flushFileTimer.Enabled = m_pipeReader.IsFileOpened;

            if (currentReaderState != PipeReaderState.None && (false == m_previousStateIsError))
            {
                lblEroor.Visible  = lblErrorInfo.Visible = m_pipeReader.IsError;
                lblErrorInfo.Text = m_pipeReader.IsError ? m_pipeReader.LastException.Message : string.Empty;
            }

            m_previousStateIsError = m_pipeReader.IsError;

            if (m_pipeReader.IsConnectionAccepted)
            {
                if (m_pipeReader.EnabledWritingFile)
                {
                    if (chkStopOnTimer.Checked)
                    {
                        var timePickerValue = timePicker.Value;

                        var hours   = timePickerValue.Hour;
                        var minutes = timePickerValue.Minute;
                        var seconds = timePickerValue.Second;
                        m_remainedTimeSpan = new TimeSpan(hours, minutes, seconds);

                        m_stopWritingTimer.Interval = m_remainedTimeSpan.TotalMilliseconds;
                        m_stopWritingTimer.Start();

                        chkStopOnTimer.Enabled = false;
                        timePicker.Enabled     = false;
                        lblRemained.Visible    = true;
                        lblRemained.Text       = "remainded: " + m_remainedTimeSpan.ToString("c");
                    }
                }
            }

            if ((false == chkStopOnTimer.Enabled) && (false == m_pipeReader.IsFileOpened))
            {
                chkStopOnTimer.Enabled = true;
                timePicker.Enabled     = true;
                lblRemained.Visible    = false;
            }


            lblConnected.Visible = lblConnectionInfo.Visible = m_pipeReader.IsPipeCreated;
            if (m_pipeReader.IsPipeCreated)
            {
                if (false == m_pipeReader.IsConnectionAccepted)
                {
                    lblConnected.Text      = "Accepting connections\n\rto pipe:";
                    lblConnectionInfo.Text = m_pipeReader.PipeFullName;
                }
                else
                {
                    lblConnected.Text      = "Connected";
                    lblConnectionInfo.Text = m_pipeReader.PipeFullName + " <-- " + m_pipeReader.ProcessName + "  (pID:" + m_pipeReader.ClientProcessId + ")";
                }
            }

            lblFIleName.Visible = lblWritingFile.Visible = m_pipeReader.IsFileOpened;
            if (m_pipeReader.IsFileOpened)
            {
                lblFIleName.Text = m_pipeReader.OpenedFileName;
                if (false == m_pipeReader.EnabledWritingFile)
                {
                    lblWritingFile.Text      = "Opened file:";
                    lblWritingFile.ForeColor = Color.LimeGreen;
                }
                else
                {
                    lblWritingFile.Text      = "Writing file:";
                    lblWritingFile.ForeColor = Color.OrangeRed;
                }
            }

            chkFrapsFormat.Enabled          =
                txtFolder.Enabled           =
                    btnSelectFolder.Enabled = (false == m_pipeReader.IsFileOpened);


            btnStopStart.Enabled = true;

            txtPipeName.Enabled = (false == m_pipeReader.IsStarted);

            if (m_pipeReader.IsStarted)
            {
                if (m_pipeReader.IsConnectionAccepted)
                {
                    btnStopStart.Text = "Close connection";
                }
                else if (m_pipeReader.IsPipeCreated)
                {
                    btnStopStart.Text = "Stop listening";
                }
                else
                {
                    //Debugger.Break();
                    btnStopStart.Text = "...";
                }
            }
            else
            {
                btnStopStart.Text = "Start listening";
            }

            m_previousPipeReaderState = currentReaderState;
        }
示例#3
0
 public bool ReadFlag(PipeReaderState p_flag)
 {
     return((m_state & p_flag) != 0);
 }