Beispiel #1
0
        protected void SetState(EProtoState state, EProtoResult result = EProtoResult.Ok)
        {
            _state = state;

            switch (state)
            {
            case EProtoState.Closed:
            {
                SetTask(EProtoTask.None, result);
                // TRACE_PROTO(level_INFO, "Состояние: Closed");
                RaiseEventClose();
            }
            break;

            case EProtoState.Opened:
            {
                _isTimeout = false;
                SetTask(EProtoTask.None, result);
                // TRACE_PROTO(level_INFO, "Состояние: Opened");
                RaiseEventOpen();
            }
            break;

            case EProtoState.Listen:
            {
                SetTask(EProtoTask.None, result);
                // TRACE_PROTO(level_INFO, "Состояние: Listen");
                RaiseEventListen();
            }
            break;
            } // end switch (анализ состояния)
        }
Beispiel #2
0
        public ProtoBase(ModuleTyp typ, String title, int index) : base(typ, title, index)
        {
            _state        = EProtoState.Closed;
            _task         = EProtoTask.None;
            _result       = EProtoResult.Unknow;
            _executeState = CoreExecuteState.Active;

            OnOpen   = null;
            OnClose  = null;
            OnBreak  = null;
            OnError  = null;
            OnListen = null;

            ModIndex = ++_sharedId;
        }
Beispiel #3
0
        public Boolean Close()
        {
            if (_state != EProtoState.Closed || _task == EProtoTask.Opening)
            {
                if (DoClose())
                {
                    SetState(EProtoState.Closed);
                }
                else
                {
                    SetTask(EProtoTask.Closing);
                }

                return(true);
            }
            else
            {
                _result = EProtoResult.Ok;
                // TRACE_PROTO(level_WARNING, "Ошибка закрытия: Уже закрыт");
            }

            return(false);
        }
Beispiel #4
0
        public Boolean Open()
        {
            if (_state == EProtoState.Closed)
            {
                if (DoOpen())
                {
                    SetState(EProtoState.Opened);
                }
                else
                {
                    SetTask(EProtoTask.Opening);
                }

                return(true);
            }
            else
            {
                _result = EProtoResult.Ok;
                // TRACE_PROTO(level_WARNING, "Ошибка открытия: Уже открыт");
            }

            return(false);
        }
Beispiel #5
0
        protected void SetTask(EProtoTask task, EProtoResult result = EProtoResult.Ok)
        {
            _task = task;

            if (task == EProtoTask.None)
            {
                if (result == EProtoResult.Timeout)
                {
                    _isTimeout = true;
                }
                _result = result;
            }
            else
            {
                _result = EProtoResult.Unknow;
            }

            switch (task)
            {
            case EProtoTask.Opening:
                // TRACE_PROTO(level_INFO, "Задача: Открытие");
                // CALLBACK(IoctlCode.IOCTL_PROTO_OPENING);
                break;

            case EProtoTask.Closing:
                // TRACE_PROTO(level_INFO, "Задача: Закрытие");
                // CALLBACK(IoctlCode.IOCTL_PROTO_CLOSING);
                break;

            case EProtoTask.Sending:
                // TRACE_PROTO(level_INFO, "Задача: Передача");
                // CALLBACK(IoctlCode.IOCTL_PROTO_SENDING);
                _isTimeout = false;
                break;
            }
        }
Beispiel #6
0
        private EProtoTask _task; // Текущая задача протокола

        #endregion Fields

        #region Constructors

        public ProtoBase(ModuleTyp typ, String title, int index)
            : base(typ, title, index)
        {
            _state        = EProtoState.Closed;
            _task         = EProtoTask.None;
            _result       = EProtoResult.Unknow;
            _executeState = CoreExecuteState.Active;

            OnOpen   = null;
            OnClose  = null;
            OnBreak  = null;
            OnError  = null;
            OnListen = null;

            ModIndex = ++_sharedId;
        }
Beispiel #7
0
        protected void SetTask(EProtoTask task, EProtoResult result = EProtoResult.Ok)
        {
            _task = task;

            if (task == EProtoTask.None)
            {
                if (result == EProtoResult.Timeout)
                    _isTimeout = true;
                _result = result;
            }
            else
            {
                _result = EProtoResult.Unknow;
            }

            switch (task)
            {
                case EProtoTask.Opening:
                    // TRACE_PROTO(level_INFO, "Задача: Открытие");
                    // CALLBACK(IoctlCode.IOCTL_PROTO_OPENING);
                    break;

                case EProtoTask.Closing:
                    // TRACE_PROTO(level_INFO, "Задача: Закрытие");
                    // CALLBACK(IoctlCode.IOCTL_PROTO_CLOSING);
                    break;

                case EProtoTask.Sending:
                    // TRACE_PROTO(level_INFO, "Задача: Передача");
                    // CALLBACK(IoctlCode.IOCTL_PROTO_SENDING);
                    _isTimeout = false;
                    break;
            }
        }
Beispiel #8
0
        protected void SetState(EProtoState state, EProtoResult result = EProtoResult.Ok)
        {
            _state = state;

            switch (state)
            {
                case EProtoState.Closed:
                    {
                        SetTask(EProtoTask.None, result);
                        // TRACE_PROTO(level_INFO, "Состояние: Closed");
                        RaiseEventClose();
                    }
                    break;

                case EProtoState.Opened:
                    {
                        _isTimeout = false;
                        SetTask(EProtoTask.None, result);
                        // TRACE_PROTO(level_INFO, "Состояние: Opened");
                        RaiseEventOpen();
                    }
                    break;

                case EProtoState.Listen:
                    {
                        SetTask(EProtoTask.None, result);
                        // TRACE_PROTO(level_INFO, "Состояние: Listen");
                        RaiseEventListen();
                    }
                    break;
            } // end switch (анализ состояния)
        }
Beispiel #9
0
        public Boolean Open()
        {
            if (_state == EProtoState.Closed)
            {
                if ( DoOpen() )
                    SetState(EProtoState.Opened);
                else
                    SetTask(EProtoTask.Opening);

                return true;
            }
            else
            {
                _result = EProtoResult.Ok;
                // TRACE_PROTO(level_WARNING, "Ошибка открытия: Уже открыт");
            }

            return false;
        }
Beispiel #10
0
        public Boolean Close()
        {
            if (_state != EProtoState.Closed || _task == EProtoTask.Opening)
            {
                if ( DoClose() )
                    SetState(EProtoState.Closed);
                else
                    SetTask(EProtoTask.Closing);

                return true;
            }
            else
            {
                _result = EProtoResult.Ok;
                // TRACE_PROTO(level_WARNING, "Ошибка закрытия: Уже закрыт");
            }

            return false;
        }