コード例 #1
0
ファイル: EcConnectedState.cs プロジェクト: ldw880212/RsspII
        protected override void HandleEcAppFrame(SaiEcFrameApplication frame)
        {
            var timeDelay = this.DefenseStrategy.CalcTimeDelay(frame);
            var remoteID  = this.Context.RsspEP.RemoteID;

            this.Context.Observer.OnSaiUserDataArrival(remoteID, frame.UserData, timeDelay, MessageDelayDefenseTech.EC);
        }
コード例 #2
0
ファイル: EcConnectedState.cs プロジェクト: ldw880212/RsspII
        public override void SendUserData(OutgoingPackage package)
        {
            var ecValue = this.DefenseStrategy.GetLocalEcValue();
            var seqNo   = (ushort)this.Context.SeqNoManager.GetAndUpdateSendSeq();
            var frame   = new SaiEcFrameApplication(seqNo, ecValue, package.UserData);

            var bytes = frame.GetBytes();

            this.Context.NextLayer.SendUserData(bytes);
        }
コード例 #3
0
ファイル: SaiFrame.cs プロジェクト: ldw880212/RsspII
        public static SaiFrame Parse(byte[] bytes)
        {
            SaiFrame theFrame = null;

            var theFrameType = (SaiFrameType)bytes[0];

            if (theFrameType == SaiFrameType.TTS_OffsetStart)
            {
                theFrame = new SaiTtsFrameOffsetStart();
            }
            else if (theFrameType == SaiFrameType.TTS_OffsetAnswer1)
            {
                theFrame = new SaiTtsFrameOffsetAnswer1();
            }
            else if (theFrameType == SaiFrameType.TTS_OffsetAnswer2)
            {
                theFrame = new SaiTtsFrameOffsetAnswer2();
            }
            else if (theFrameType == SaiFrameType.TTS_OffsetEstimate)
            {
                theFrame = new SaiTtsFrameEstimate();
            }
            else if (theFrameType == SaiFrameType.TTS_OffsetEnd)
            {
                theFrame = new SaiTtsFrameOffsetEnd();
            }
            else if (theFrameType == SaiFrameType.TTS_AppData)
            {
                theFrame = new SaiTtsFrameAppData();
            }
            else if (theFrameType == SaiFrameType.EC_Start)
            {
                theFrame = new SaiEcFrameStart();
            }
            else if (theFrameType == SaiFrameType.EC_AppData)
            {
                theFrame = new SaiEcFrameApplication();
            }
            else if (theFrameType == SaiFrameType.EC_AppDataAskForAck)
            {
                theFrame = new SaiEcFrameAskForAck();
            }
            else if (theFrameType == SaiFrameType.EC_AppDataAcknowlegment)
            {
                theFrame = new SaiEcFrameAcknowlegment();
            }
            else
            {
                throw new InvalidOperationException(string.Format("无法解析指定的Sai帧,不可识别的类型{0}。", theFrameType));
            }

            theFrame.ParseBytes(bytes);

            return(theFrame);
        }
コード例 #4
0
        public void Test1()
        {
            var frame1 = new SaiEcFrameApplication();

            frame1.SequenceNo = 200;
            frame1.EcValue    = 100;
            frame1.UserData   = new byte[] { 1 };

            var bytes = frame1.GetBytes();

            var frame2 = SaiFrame.Parse(bytes) as SaiEcFrameApplication;

            Assert.AreEqual(SaiFrameType.EC_AppData, frame2.FrameType);
            Assert.AreEqual(frame2.SequenceNo, frame1.SequenceNo);
            Assert.AreEqual(frame2.EcValue, frame1.EcValue);
            Assert.AreEqual(frame2.UserData[0], frame1.UserData[0]);
        }
コード例 #5
0
ファイル: EcState.cs プロジェクト: ldw880212/RsspII
 protected virtual void HandleEcAppFrame(SaiEcFrameApplication ecAppFrame)
 {
     LogUtility.Error(string.Format("{0}: {1}.{2} not implement!",
                                    this.Context.RsspEP.ID, this.GetType().Name,
                                    new StackFrame(0).GetMethod().Name.Split('.').Last()));
 }
コード例 #6
0
        public void Test2()
        {
            var frame1 = new SaiEcFrameApplication();

            Assert.AreEqual(0, frame1.UserDataLength);
        }