コード例 #1
0
 //
 //  放送開始
 //
 public static void Start()
 {
     require_status = NLE_Status.NLE_NEED_START;
     mReryStartCount = RETRY_START_MAX;
 }
コード例 #2
0
 //
 //  放送停止
 //
 public static void Stop()
 {
     require_status = NLE_Status.NLE_NEED_STOP;
 }
コード例 #3
0
        //
        //  この関数を定期的に呼ぶ
        //
        public static void HandlingStatus(string id, Form mf = null)
        {
            if (inner_status == NLE_InnerStatus.NLE_STOP ||
                inner_status == NLE_InnerStatus.NLE_IDLE)
            {
                if (require_status == NLE_Status.NLE_NEED_START)
                {
                    // すでに起動していれば、起動モードに即移行
                    if (IsAlive && IsBroadCast)
                    {
                        inner_status = NLE_InnerStatus.NLE_RUN;
                        return;
                    }
                    else
                    {
                        PushStart();
                        inner_status = NLE_InnerStatus.NLE_WAIT_FOR_RUN;
                        waitUntil = DateTime.Now.AddSeconds(waitSeconds);
                        return;
                    }
                }
            }

            if (inner_status==NLE_InnerStatus.NLE_RUN) {
                //if (!IsAlive || !IsBroadcasting() || checkErrorDialog())
                if (!IsBroadCast)
                {
                    inner_status = NLE_InnerStatus.NLE_STOP;

                    // もし、通信状態からNLEをクローズした場合は、
                    // リトライは行わない
                    if (!IsAlive)
                    {
                        require_status = NLE_Status.NLE_IDLE;
                        return;
                    }
                }
                else
                {
                    if (require_status == NLE_Status.NLE_NEED_STOP)
                    {
                        PushStart();
                        inner_status = NLE_InnerStatus.NLE_WAIT_FOR_STOP;
                        waitUntil = DateTime.Now.AddSeconds(waitSeconds);
                        return;
                    }
                    else if (require_status == NLE_Status.NLE_NEED_START)
                    {
                        mReryStartCount = RETRY_START_MAX;
                    }
                }
            }

            if (inner_status==NLE_InnerStatus.NLE_WAIT_FOR_STOP) {
                if (!IsBroadCast)
                {
                    inner_status = NLE_InnerStatus.NLE_STOP;
                    return;
                }
                else if (waitUntil < DateTime.Now)
                {
                    inner_status = NLE_InnerStatus.NLE_RUN;
                    return;
                }
            }

            if (inner_status==NLE_InnerStatus.NLE_WAIT_FOR_RUN) {
                if (IsBroadCast)
                {
                    inner_status=NLE_InnerStatus.NLE_RUN;
                }
                else if (waitUntil < DateTime.Now)
                {
                    checkErrorDialog();
                    // 起動に失敗した場合、最大 RETRY_START_MAX回リトライします
                    inner_status = NLE_InnerStatus.NLE_STOP;
                    if (mReryStartCount > 0)
                    {
                        mReryStartCount--;
                    }
                    else
                    {
                        require_status = NLE_Status.NLE_IDLE;
                    }
                }
            }
        }