Example #1
0
        protected override SaiState GetInitialState(DefenseStrategy strategy)
        {
            if (this.RsspEP.DefenseTech == MessageDelayDefenseTech.EC)
            {
                var ecStrategy = strategy as EcDefenseStrategy;
                if (ecStrategy == null)
                {
                    throw new InvalidCastException("指定的策略无法转换为EcDefenseStrategy。");
                }

                return(new EcDisconnectedState(this, ecStrategy));
            }
            else if (this.RsspEP.DefenseTech == MessageDelayDefenseTech.TTS)
            {
                var ttsStrategy = strategy as TtsDefenseStrategy;
                if (ttsStrategy == null)
                {
                    throw new InvalidCastException("指定的策略无法转换为TtsDefenseStrategy。");
                }

                return(new TtsDisconnectedState(this, ttsStrategy));
            }
            else
            {
                throw new InvalidOperationException("主动方必须指定一个有效的消息延迟防御技术。");
            }
        }
Example #2
0
        protected virtual void Dispose(bool disposing)
        {
            if (!_disposed)
            {
                _disposed = true;

                this.Connected = false;

                if (disposing)
                {
                    if (_handshakeTimeoutMgr != null)
                    {
                        _handshakeTimeoutMgr.Dispose();
                        _handshakeTimeoutMgr = null;
                    }

                    if (_maslConnection != null)
                    {
                        _maslConnection.Dispose();
                        _maslConnection = null;
                    }

                    if (_defenseStrategy != null)
                    {
                        _defenseStrategy.Dispose();
                        _defenseStrategy = null;
                    }
                }
            }
        }
Example #3
0
        /// <summary>
        /// 初始化防御技术与状态。
        /// </summary>
        private void Initialize()
        {
            if (_defenseStrategy != null)
            {
                _defenseStrategy.Dispose();
            }

            _defenseStrategy = this.GetDefenseStrategy();

            _currentState = this.GetInitialState(_defenseStrategy);

            _seqNoManager.Initlialize();
        }
Example #4
0
 protected override SaiState GetInitialState(DefenseStrategy strategy)
 {
     return(new SaiInvalidState(this));
 }
Example #5
0
 protected abstract SaiState GetInitialState(DefenseStrategy strategy);