Beispiel #1
0
        public void Read(IByteStream stream, IContext context, bool isssl)
        {
            List <FrameRequest> list = new List <FrameRequest>();

            while (true)
            {
                try
                {
                    FrameRequest request = FrameRequest.Parse(stream);
                    if (request == null)
                    {
                        break;
                    }
                    list.Add(request);
                    if (request.Fin)
                    {
                        break;
                    }
                }
                catch (NotSupportedException ex)
                {
                    Common.AgentLogger.Instance.Err(string.Format("WebSocketState错误:{0}", ex.Message));
                    break;
                }
            }
            foreach (FrameRequest request in list)
            {
                context.FireNextRead(request);
            }
        }
Beispiel #2
0
        /// <summary>
        /// 收到服务端的数据
        /// </summary>
        /// <param name="frame"></param>
        protected override async void OnText(FrameRequest frame)
        {
            var json   = Encoding.UTF8.GetString(frame.Content);
            var notify = JsonConvert.DeserializeObject <WsNotifyData <WsGameAnswer> >(json);

            if (notify.Cmd == WsCmd.GameAnser)
            {
                var gameAnswer = notify.Data;
                Console.WriteLine(gameAnswer);

                if (gameAnswer.Index >= 0)
                {
                    var delay = TimeSpan.FromMilliseconds(gameAnswer.DelayMilliseconds);
                    var next  = TimeSpan.FromSeconds(0.3d);
                    await this.AutotapOptionsAsync(gameAnswer.Index, delay, next, next, next, next, next, next);
                }
                else
                {
                    var index = new Random().Next(0, 3);
                    var delay = TimeSpan.FromMilliseconds(gameAnswer.DelayMilliseconds).Add(TimeSpan.FromSeconds(4d));
                    await this.AutotapOptionsAsync(index, delay);
                }
                Console.WriteLine();
            }
            else if (notify.Cmd == WsCmd.GameOver && this.autoContinue == true)
            {
                await this.AutotapOptionsAsync(2, TimeSpan.FromSeconds(10d));

                await this.AutotapOptionsAsync(4, TimeSpan.FromSeconds(4d));
            }
        }
Beispiel #3
0
        /// <summary>
        /// 收到服务端的数据
        /// </summary>
        /// <param name="frame"></param>
        protected override async void OnText(FrameRequest frame)
        {
            var json   = Encoding.UTF8.GetString(frame.Content);
            var notify = JsonConvert.DeserializeObject <WsNotifyData <WsGameAnswer> >(json);

            if (notify.Cmd == WsCmd.GameAnser)
            {
                var searchResult = notify.Data.SearchResult;
                Console.WriteLine(searchResult);

                if (searchResult.Best != null)
                {
                    var index = searchResult.Best.Index;
                    var delay = TimeSpan.FromMilliseconds(notify.Data.GameDelayMSeconds);
                    await this.AutotapOptionsAsync(index, delay, TimeSpan.FromSeconds(0.5d));
                }
                else
                {
                    var index = new Random().Next(0, 3);
                    var delay = TimeSpan.FromMilliseconds(notify.Data.GameDelayMSeconds + 4000);
                    await this.AutotapOptionsAsync(index, delay);
                }
                Console.WriteLine();
            }
            else if (notify.Cmd == WsCmd.GameOver && this.autoContinue == true)
            {
                await this.AutotapOptionsAsync(2, TimeSpan.FromSeconds(6d));

                await this.AutotapOptionsAsync(4, TimeSpan.FromSeconds(4d));
            }
        }
Beispiel #4
0
        public void ExecuteMethodCorrectlyExecutesFrameRequest(string testMessage, string testActionDataPayload)
        {
            //Arrange
            KarassDependenciesSpy dependenciesSpy = new KarassDependenciesSpy();
            FrameStructDummy      frameActionData = new FrameStructDummy
            {
                Test = testActionDataPayload
            };

            FrameRequest frameRequest = new FrameRequest(frameActionData);
            KarassFrameSpy <FrameStructDummy> frameAction = new KarassFrameSpy <FrameStructDummy>(dependenciesSpy);

            dependenciesSpy.Register <IKarassFrame <FrameStructDummy> >(() => frameAction);
            FrameFactory frameFactory = new FrameFactory(dependenciesSpy);

            frameFactory.RegisterRoute <FrameStructDummy, IKarassFrame <FrameStructDummy> >();

            //Act
            frameFactory.Execute(frameRequest, testMessage);

            //Assert
            Assert.True(dependenciesSpy.RegisterCallCount == 1);
            Assert.True(dependenciesSpy.GetCallCount == 1);
            Assert.True(frameAction.ExecuteCallCount == 1);
            Assert.True(frameAction.RequestData.Test == testActionDataPayload);
            Assert.True(frameAction.Message == testMessage);
            Assert.True(frameAction.Dependencies == dependenciesSpy);
        }
 public async void Put([FromBody] FrameRequest request)
 {
     using (Stream stream = request.Frame.OpenReadStream())
     {
         await _emotion.ProcessFrame(stream, request.CamID, request.Timestamp);
     }
 }
Beispiel #6
0
        /// <summary>
        /// 把收到的内容当作ip,并绑定到ws会话
        /// </summary>
        /// <param name="context">上下文</param>
        /// <param name="frame">数据</param>
        protected override void OnText(IContenxt context, FrameRequest frame)
        {
            var ipAddress = Encoding.UTF8.GetString(frame.Content);

            Console.WriteLine($"websocket客户端将ip绑定到{ipAddress}");
            context.Session.Tag.Set("ip", ipAddress);
        }
            public void ThenOnlyContainsFirstFrame()
            {
                FrameRequest frameOne   = _mockFramesFactory.GetInvalidFrameRequest();
                FrameRequest frameTwo   = _mockFramesFactory.GetInvalidFrameRequest();
                FrameRequest frameThree = _mockFramesFactory.GetInvalidFrameRequest();
                FrameRequest frameFour  = _mockFramesFactory.GetInvalidFrameRequest();
                Karass       karass     = KarassFactory.Get(
                    new List <List <Action> >(),
                    new List <List <Action> >(),
                    new List <FrameRequest[]>
                {
                    new[]
                    {
                        frameOne,
                        frameTwo,
                        frameThree,
                        frameFour
                    }
                });
                KanKan kanKan = new KanKan(karass, new FrameFactoryDummy());

                Assert.True(kanKan.CurrentState.NextFrames.Contains(frameOne));
                Assert.False(kanKan.CurrentState.NextFrames.Contains(frameTwo));
                Assert.False(kanKan.CurrentState.NextFrames.Contains(frameThree));
                Assert.False(kanKan.CurrentState.NextFrames.Contains(frameFour));
            }
Beispiel #8
0
                public void TeardownActionsAreCalled()
                {
                    bool teardownCalled = false;
                    bool frameCalled    = false;

                    bool FrameSpy(string message)
                    {
                        frameCalled = true;
                        return(true);
                    }

                    void TeardownSpy()
                    {
                        teardownCalled = true;
                    }

                    FrameRequest frameRequest = _mockFramesFactory.GetValidFrameRequest(FrameSpy);
                    Karass       karass       = _karassFactory.Get(
                        new List <List <Action> >(),
                        CreateActionListWith(TeardownSpy),
                        new List <FrameRequest[]>
                    {
                        new[]
                        {
                            frameRequest
                        }
                    });
                    KanKan kankan = new KanKan(karass, _frameFactory);

                    kankan.MoveNext();
                    Assert.True(frameCalled);
                    kankan.MoveNext();
                    Assert.True(teardownCalled);
                }
Beispiel #9
0
        protected sealed override void OnBinary(IContenxt context, FrameRequest frame)
        {
            var text = Encoding.UTF8.GetString(frame.Content);
            //var ip = ((System.Net.IPEndPoint)context.Session.RemoteEndPoint).Address.ToString();
            var ip = context.Session.RemoteEndPoint.ToString();

            //Debug.Log(text);
            try {
                var jsonResult = (Newtonsoft.Json.Linq.JObject)Newtonsoft.Json.JsonConvert.DeserializeObject(text);
                var uuid       = jsonResult["uuid"].ToString();
                if (Globle.WSClients.ContainsKey(uuid))
                {
                    Globle.WSClients[uuid].message     = text;
                    Globle.WSClients[uuid].result      = jsonResult;
                    Globle.WSClients[uuid].lastUpdated = DateTime.Now.Date;
                }
                else
                {
                    var WSC = new WSClientClass();
                    WSC.ip          = ip;
                    WSC.message     = text;
                    WSC.uuid        = jsonResult["uuid"].ToString();
                    WSC.result      = jsonResult;
                    WSC.lastUpdated = DateTime.Now.Date;
                    WSC.isRemote    = false;
                    Globle.WSClients.Add(uuid, WSC);
                    Globle.WSClientsChanged = true;
                }
            }
            catch { }
        }
 public void Setup()
 {
     _dependencies       = new KarassDependencies();
     _frameFactory       = new FrameFactory(_dependencies);
     _mockFramesFactory  = new MockFramesFactory(_frameFactory);
     _firstFrameRequest  = _mockFramesFactory.GetValidFrameRequest(FirstFrameSpy);
     _secondFrameRequest = _mockFramesFactory.GetValidFrameRequest(SecondFrameSpy);
 }
        public void MessageSendToMultipleKanKan(string message)
        {
            IKarassMessage karassMessage         = new KarassMessage();
            string         karassOneFrameMessage = string.Empty;

            bool KarassOneFrameSpy(string m)
            {
                karassOneFrameMessage = m;
                return(true);
            }

            FrameRequest karassOneFrameRequest = _mockFramesFactory.GetValidFrameRequest(KarassOneFrameSpy);

            string karassTwoFrameMessage = string.Empty;

            bool KarassTwoFrameSpy(string m)
            {
                karassTwoFrameMessage = m;
                return(true);
            }

            FrameRequest karassTwoFrameRequest = _mockFramesFactory.GetValidFrameRequest(KarassTwoFrameSpy);


            string karassThreeFrameMessage = string.Empty;

            bool KarassThreeFrameSpy(string m)
            {
                karassThreeFrameMessage = m;
                return(true);
            }

            FrameRequest karassThreeFrameRequest = _mockFramesFactory.GetValidFrameRequest(KarassThreeFrameSpy);


            KarassFactory karassFactory = new KarassFactory();

            Karass karassOne   = karassFactory.Get(new List <Action>(), new List <Action>(), new [] { karassOneFrameRequest });
            Karass karassTwo   = karassFactory.Get(new List <Action>(), new List <Action>(), new [] { karassTwoFrameRequest });
            Karass karassThree = karassFactory.Get(new List <Action>(), new List <Action>(), new [] { karassThreeFrameRequest });

            KanKanCore.KanKan kanKanOne   = new KanKanCore.KanKan(karassOne, _frameFactory, karassMessage);
            KanKanCore.KanKan kanKanTwo   = new KanKanCore.KanKan(karassTwo, _frameFactory, karassMessage);
            KanKanCore.KanKan kanKanThree = new KanKanCore.KanKan(karassThree, _frameFactory, karassMessage);

            karassMessage.SetMessage(message);

            kanKanOne.MoveNext();
            kanKanTwo.MoveNext();
            kanKanThree.MoveNext();

            Assert.True(karassOneFrameMessage == message);
            Assert.True(karassTwoFrameMessage == message);
            Assert.True(karassThreeFrameMessage == message);
        }
Beispiel #12
0
        protected sealed override void OnBinary(IContenxt context, FrameRequest frame)
        {
            try
            {
                var text       = Encoding.UTF8.GetString(frame.Content);
                var jsonResult = (Newtonsoft.Json.Linq.JObject)Newtonsoft.Json.JsonConvert.DeserializeObject(text);
                var ipMessage  = jsonResult["ipMessage"];
                //var uip = ((System.Net.IPEndPoint)context.Session.RemoteEndPoint).Address.ToString();
                var uuip     = context.Session.RemoteEndPoint.ToString();
                var hostname = ((System.Net.IPEndPoint)context.Session.RemoteEndPoint).Address.ToString();
                if (jsonResult["hostName"] != null)
                {
                    hostname = jsonResult["hostName"].ToString();
                }
                //预处理IP
                var IPMessage = new Dictionary <string, string>();
                foreach (JProperty jp in ipMessage)
                {
                    var ip      = hostname + " : " + jp.Name;
                    var request = jp.Value.ToString();
                    if (IPMessage.ContainsKey(ip))
                    {
                        IPMessage[ip] = request;
                    }
                    else
                    {
                        IPMessage.Add(ip, request);
                    }
                }
                //Console.WriteLine(uip);
                //处理IP主机
                if (Globle.ServeIPMessage.ContainsKey(uuip))
                {
                    Globle.ServeIPMessage[uuip] = IPMessage;
                }
                else
                {
                    Globle.ServeIPMessage.Add(uuip, IPMessage);
                }


                //var session = (WebSocketSession)context.Session.Wrapper;
                //session.SendBinary(byteArray);
                //item.SendBinary(byteArray);
            }
            catch (Exception ex)
            {
                var log = "[WSS]服务端发生错误 " + ex.Message + ":" + ex.StackTrace;
                Console.WriteLine(log);
                //Globle.AddDataLog(log);
            }
        }
        public static void RequestArgb32VideoFrameFromExternalSourceCallback(IntPtr userData,
                                                                             /*ExternalVideoTrackSourceHandle*/ IntPtr sourceHandle, uint requestId, long timestampMs)
        {
            var args    = Utils.ToWrapper <Argb32VideoFrameRequestCallbackArgs>(userData);
            var request = new FrameRequest
            {
                Source      = args.Source,
                RequestId   = requestId,
                TimestampMs = timestampMs
            };

            args.FrameRequestCallback.Invoke(in request);
        }
Beispiel #14
0
            public void WhenAddedThenFrameSetsContainFrames()
            {
                FrameRequest frameSetOneFrameOne = MockFramesFactory.GetInvalidFrameRequest();
                FrameRequest frameSetOneFrameTwo = MockFramesFactory.GetInvalidFrameRequest();

                FrameRequest[] frameSetArrayOne =
                {
                    frameSetOneFrameOne,
                    frameSetOneFrameTwo
                };

                List <FrameRequest[]> frameSetOne = new List <FrameRequest[]>
                {
                    frameSetArrayOne
                };

                FrameRequest frameSetTwoFrameOne = MockFramesFactory.GetInvalidFrameRequest();
                FrameRequest frameSetTwoFrameTwo = MockFramesFactory.GetInvalidFrameRequest();

                FrameRequest[] frameSetArrayTwo =
                {
                    frameSetTwoFrameOne,
                    frameSetTwoFrameTwo
                };

                List <FrameRequest[]> frameSetTwo = new List <FrameRequest[]>
                {
                    frameSetArrayTwo
                };

                Karass karassOne = KarassFactory.Get(
                    new List <List <Action> >(),
                    new List <List <Action> >(),
                    frameSetOne);

                Karass karassTwo = KarassFactory.Get(
                    new List <List <Action> >(),
                    new List <List <Action> >(),
                    frameSetTwo);

                Karass combinedKarass = karassOne + karassTwo;

                Assert.True(combinedKarass.FramesCollection.Count == 2);
                Assert.True(combinedKarass.FramesCollection.Contains(frameSetArrayOne));
                Assert.True(combinedKarass.FramesCollection.Contains(frameSetArrayTwo));

                Assert.True(combinedKarass.FramesCollection.Any(_ => _.Contains(frameSetOneFrameOne)));
                Assert.True(combinedKarass.FramesCollection.Any(_ => _.Contains(frameSetOneFrameTwo)));
                Assert.True(combinedKarass.FramesCollection.Any(_ => _.Contains(frameSetTwoFrameOne)));
                Assert.True(combinedKarass.FramesCollection.Any(_ => _.Contains(frameSetTwoFrameTwo)));
            }
Beispiel #15
0
        private static List <FrameRequest[]> GetFakeFrames(int frameCount)
        {
            MockFramesFactory mockFramesFactory = new MockFramesFactory(new FrameFactoryDummy());

            FrameRequest[] frames = new FrameRequest[frameCount];
            for (int i = 0; i < frameCount; i++)
            {
                frames[i] = mockFramesFactory.GetInvalidFrameRequest();
            }
            return(new List <FrameRequest[]>()
            {
                frames
            });
        }
        public override void ChildRead(IContext context, object msg)
        {
            ChannelBase  channel = context.Channel;
            FrameRequest request = msg as FrameRequest;

            if (request != null)
            {
                switch (request.Frame)
                {
                case FrameCodes.Connected:
                    context.FireNextRead(msg);
                    channel.AddListener(CHANNEL_READ_IDLE, (EventArgs e) =>
                    {
                        string id          = Guid.NewGuid().ToString();
                        byte[] content     = Encoding.UTF8.GetBytes(id);
                        FrameResponse ping = new FrameResponse(FrameCodes.Ping, content);
                        channel.SendAsync(ping);
                        ITriggerRunnable run = new TimeOut <object>(it =>
                        {
                            context.Channel.Dispose();
                        }, null, 2000);
                        _timeout.Enqueue(run);
                        context.Loop.Execute(run);
                    });
                    break;

                case FrameCodes.Close:
                    context.FireNextRead(msg);
                    channel.Dispose();
                    break;

                case FrameCodes.Ping:
                    FrameResponse pong = new FrameResponse(FrameCodes.Pong, request.Content);
                    channel.SendAsync(pong);
                    break;

                case FrameCodes.Pong:
                    ClearTimeout(context);
                    break;

                default:
                    context.FireNextRead(msg);
                    break;
                }
            }
            else
            {
                context.FireNextRead(msg);
            }
        }
Beispiel #17
0
        public bool Execute(FrameRequest frameRequest, string message)
        {
            object karassFrameObject =
                Dependencies.GetType().GetMethod("Get")
                .MakeGenericMethod(_routing[frameRequest.RequestType])
                .Invoke(Dependencies, Array.Empty <object>());

            object returnValue = karassFrameObject.GetType().GetMethod("Execute")
                                 .Invoke(karassFrameObject, new[] {
                message,
                frameRequest.RequestObject
            });

            return((bool)returnValue);
        }
            public void ThenTheFrameIsInCurrentFrames()
            {
                FrameRequest frame = _mockFramesFactory.GetInvalidFrameRequest();

                Karass karass = KarassFactory.Get(
                    new List <List <Action> >(),
                    new List <List <Action> >(),
                    new List <FrameRequest[]>
                {
                    new[]
                    {
                        frame
                    }
                });
                KanKan kanKan = new KanKan(karass, new FrameFactoryDummy());

                Assert.True(kanKan.CurrentState.NextFrames.Contains(frame));
            }
Beispiel #19
0
            public void ThenOnlyTheFirstFramesAreInCurrentFrames()
            {
                FrameRequest setOneFrameOne   = _mockFramesFactory.GetInvalidFrameRequest();
                FrameRequest setOneFrameTwo   = _mockFramesFactory.GetInvalidFrameRequest();
                FrameRequest setOneFrameThree = _mockFramesFactory.GetInvalidFrameRequest();


                FrameRequest setTwoFrameOne   = _mockFramesFactory.GetInvalidFrameRequest();
                FrameRequest setTwoFrameTwo   = _mockFramesFactory.GetInvalidFrameRequest();
                FrameRequest setTwoFrameThree = _mockFramesFactory.GetInvalidFrameRequest();
                Karass       karass           = KarassFactory.Get(
                    new List <List <Action> >(),
                    new List <List <Action> >(),
                    new List <FrameRequest[]>
                {
                    new[]
                    {
                        setOneFrameOne,
                        setOneFrameTwo,
                        setOneFrameThree
                    },
                    new[]
                    {
                        setTwoFrameOne,
                        setTwoFrameTwo,
                        setTwoFrameThree
                    }
                });
                KanKan kanKan = new KanKan(karass, new FrameFactoryDummy());

                Assert.True(kanKan.CurrentState.NextFrames.Contains(setOneFrameOne));
                Assert.True(kanKan.CurrentState.NextFrames.Contains(setTwoFrameOne));

                Assert.False(kanKan.CurrentState.NextFrames.Contains(setOneFrameTwo));
                Assert.False(kanKan.CurrentState.NextFrames.Contains(setTwoFrameTwo));

                Assert.False(kanKan.CurrentState.NextFrames.Contains(setOneFrameTwo));
                Assert.False(kanKan.CurrentState.NextFrames.Contains(setTwoFrameTwo));
            }
 protected override void OnText(FrameRequest frame)
 {
     try
     {
         var text = Encoding.UTF8.GetString(frame.Content);
         Debug.Log(text);
         //var ip = ((System.Net.IPEndPoint)context.Session.RemoteEndPoint).Address.ToString();
         //var ip = context.Session.RemoteEndPoint.ToString();
         try
         {
             /*var jsonResult = (Newtonsoft.Json.Linq.JObject)Newtonsoft.Json.JsonConvert.DeserializeObject(text);
              * var uuid = "USB: " + jsonResult["uuid"].ToString();
              * if (Globle.WSClients.ContainsKey(uuid))
              * {
              *  Globle.WSClients[uuid].message = text;
              *  Globle.WSClients[uuid].result = jsonResult;
              *  Globle.WSClients[uuid].lastUpdated = DateTime.Now.Date;
              * }
              * else
              * {
              *  var WSC = new WSClientClass();
              *  WSC.ip = "USB";
              *  WSC.message = text;
              *  WSC.uuid = jsonResult["uuid"].ToString();
              *  WSC.result = jsonResult;
              *  WSC.lastUpdated = DateTime.Now.Date;
              *  WSC.isRemote = false;
              *  WSC.isUSB = true;
              *  Globle.WSClients.Add(uuid, WSC);
              *  Globle.WSClientsChanged = true;
              * }*/
         }
         catch { }
     }
     catch (Exception ex)
     {
         Globle.AddDataLog("USB", Globle.LangController.GetLang("LOG.DanmakuClientException", ex.Message, ex.StackTrace));
     }
 }
Beispiel #21
0
 protected override void OnBinary(FrameRequest frame)
 {
     try
     {
         var text       = Encoding.UTF8.GetString(frame.Content);
         var jsonResult = (Newtonsoft.Json.Linq.JObject)Newtonsoft.Json.JsonConvert.DeserializeObject(text);
         var ipMessage  = jsonResult["ipMessage"];
         foreach (JProperty jp in ipMessage)
         {
             var ip                = ("P2P") + " : " + jp.Name;
             var request           = jp.Value.ToString();
             var jsonResultMessage = (Newtonsoft.Json.Linq.JObject)Newtonsoft.Json.JsonConvert.DeserializeObject(jp.Value.ToString());
             if (Globle.WSClients.ContainsKey(ip))
             {
                 Globle.WSClients[ip].message     = request;
                 Globle.WSClients[ip].result      = jsonResultMessage;
                 Globle.WSClients[ip].lastUpdated = DateTime.Now.Date;
             }
             else
             {
                 var WSC = new WSClientClass();
                 WSC.ip          = ip;
                 WSC.message     = request;
                 WSC.uuid        = jsonResultMessage["uuid"].ToString();
                 WSC.result      = jsonResultMessage;
                 WSC.lastUpdated = DateTime.Now.Date;
                 WSC.isRemote    = true;
                 Globle.WSClients.Add(ip, WSC);
                 Globle.WSClientsChanged = true;
             }
         }
     }
     catch (Exception ex)
     {
         Globle.AddDataLog("WSC", Globle.LangController.GetLang("LOG.WSCClientException", ex.Message, ex.StackTrace));
     }
 }
Beispiel #22
0
            public void ThenBothFramesAreInCurrentFrames()
            {
                FrameRequest setOneFrame = _mockFramesFactory.GetInvalidFrameRequest();
                FrameRequest setTwoFrame = _mockFramesFactory.GetInvalidFrameRequest();

                Karass karass = KarassFactory.Get(
                    new List <List <Action> >(),
                    new List <List <Action> >(),
                    new List <FrameRequest[]>
                {
                    new[]
                    {
                        setOneFrame
                    },
                    new[]
                    {
                        setTwoFrame
                    }
                });
                KanKan kanKan = new KanKan(karass, new FrameFactory(new KarassDependencies()));

                Assert.True(kanKan.CurrentState.NextFrames.Contains(setOneFrame));
                Assert.True(kanKan.CurrentState.NextFrames.Contains(setTwoFrame));
            }
Beispiel #23
0
 public FrameRequestEventArgs(FrameRequest fr)
 {
     Source      = fr.Source;
     RequestId   = fr.RequestId;
     TimestampMs = fr.TimestampMs;
 }
            public void ThenFrameSetsAreRunIndependently()
            {
                FrameRequest frameSetOneRequestOne   = _mockFramesFactory.GetValidFrameRequest(FrameSetOneFrameOneSpy);
                FrameRequest frameSetOneRequestTwo   = _mockFramesFactory.GetValidFrameRequest(FrameSetOneFrameTwoSpy);
                FrameRequest frameSetOneRequestThree = _mockFramesFactory.GetValidFrameRequest(FrameSetOneFrameThreeSpy);


                FrameRequest frameSetTwpRequestOne = _mockFramesFactory.GetValidFrameRequest(FrameSetTwoFrameOneSpy);
                FrameRequest frameSetTwoRequestTwo = _mockFramesFactory.GetValidFrameRequest(FrameSetTwoFrameTwoSpy);

                bool setOneSetupRun = false;

                void FrameSetOneSetupSpy()
                {
                    setOneSetupRun = true;
                }

                bool setOneTeardownRun = false;

                void FrameSetOneTeardownSpy()
                {
                    setOneTeardownRun = true;
                }

                bool setOneFrameOneRun = false;

                bool FrameSetOneFrameOneSpy(string message)
                {
                    setOneFrameOneRun = true;
                    return(true);
                }

                bool setOneFrameTwoRun = false;

                bool FrameSetOneFrameTwoSpy(string message)
                {
                    setOneFrameTwoRun = true;
                    return(true);
                }

                bool setOneFrameThreeRun = false;

                bool FrameSetOneFrameThreeSpy(string message)
                {
                    setOneFrameThreeRun = true;
                    return(true);
                }

                bool setTwoSetupRun = false;

                void FrameSetTwoSetupSpy()
                {
                    setTwoSetupRun = true;
                }

                bool setTwoTeardownRun = false;

                void FrameSetTwoTeardownSpy()
                {
                    setTwoTeardownRun = true;
                }

                bool setTwoFrameOneRun = false;

                bool FrameSetTwoFrameOneSpy(string message)
                {
                    setTwoFrameOneRun = true;
                    return(true);
                }

                bool setTwoFrameTwoRun = false;

                bool FrameSetTwoFrameTwoSpy(string message)
                {
                    setTwoFrameTwoRun = true;
                    return(true);
                }

                Karass karassOne = KarassFactory.Get(CreateActionListWith(FrameSetOneSetupSpy),
                                                     CreateActionListWith(FrameSetOneTeardownSpy),
                                                     new List <FrameRequest[]>
                {
                    new[]
                    {
                        frameSetOneRequestOne,
                        frameSetOneRequestTwo,
                        frameSetOneRequestThree
                    }
                });

                Karass karassTwo = KarassFactory.Get(CreateActionListWith(FrameSetTwoSetupSpy),
                                                     CreateActionListWith(FrameSetTwoTeardownSpy),
                                                     new List <FrameRequest[]>
                {
                    new[]
                    {
                        frameSetTwpRequestOne,
                        frameSetTwoRequestTwo
                    }
                });

                KanKan kankan = new KanKan(karassOne + karassTwo, _frameFactory);


                Assert.True(kankan.CurrentState.NextFrames.Contains(frameSetOneRequestOne));
                Assert.True(kankan.CurrentState.NextFrames.Contains(frameSetTwpRequestOne));
                Assert.False(kankan.CurrentState.NextFrames.Contains(frameSetOneRequestTwo));
                Assert.False(kankan.CurrentState.NextFrames.Contains(frameSetTwoRequestTwo));
                Assert.False(kankan.CurrentState.NextFrames.Contains(frameSetOneRequestThree));


                kankan.MoveNext();

                Assert.False(kankan.CurrentState.NextFrames.Contains(frameSetOneRequestOne));
                Assert.False(kankan.CurrentState.NextFrames.Contains(frameSetTwpRequestOne));
                Assert.True(kankan.CurrentState.NextFrames.Contains(frameSetOneRequestTwo));
                Assert.True(kankan.CurrentState.NextFrames.Contains(frameSetTwoRequestTwo));
                Assert.False(kankan.CurrentState.NextFrames.Contains(frameSetOneRequestThree));

                CheckFirstFrame(setOneSetupRun, setTwoSetupRun, setOneTeardownRun, setTwoTeardownRun, setOneFrameOneRun,
                                setTwoFrameOneRun, setOneFrameTwoRun, setOneFrameThreeRun, setTwoFrameTwoRun);


                kankan.MoveNext();
                Assert.False(kankan.CurrentState.NextFrames.Contains(frameSetOneRequestOne));
                Assert.False(kankan.CurrentState.NextFrames.Contains(frameSetTwpRequestOne));
                Assert.False(kankan.CurrentState.NextFrames.Contains(frameSetOneRequestTwo));
                Assert.False(kankan.CurrentState.NextFrames.Contains(frameSetTwoRequestTwo));
                Assert.True(kankan.CurrentState.NextFrames.Contains(frameSetOneRequestThree));

                CheckSecondFrame(setOneSetupRun, setTwoSetupRun, setOneTeardownRun, setTwoTeardownRun,
                                 setOneFrameOneRun, setTwoFrameOneRun, setOneFrameTwoRun, setTwoFrameTwoRun, setOneFrameThreeRun);


                kankan.MoveNext();
                Assert.False(kankan.CurrentState.NextFrames.Any());
                CheckThirdFrame(setOneSetupRun, setTwoSetupRun, setOneTeardownRun, setTwoTeardownRun, setOneFrameOneRun,
                                setTwoFrameOneRun, setOneFrameTwoRun, setTwoFrameTwoRun, setOneFrameThreeRun);
            }
            public void ThenNextFramesCorrectlyProgressThroughFrames()
            {
                FrameRequest frameRequestOne   = _mockFramesFactory.GetValidFrameRequest(FrameOneSpy);
                FrameRequest frameRequestTwo   = _mockFramesFactory.GetValidFrameRequest(FrameTwoSpy);
                FrameRequest frameRequestThree = _mockFramesFactory.GetValidFrameRequest(FrameThreeSpy);

                bool frameOneRun = false;

                bool FrameOneSpy(string s)
                {
                    frameOneRun = true;
                    return(true);
                }

                bool frameTwoRun = false;

                bool FrameTwoSpy(string s)
                {
                    frameTwoRun = true;
                    return(true);
                }

                bool frameThreeRun = false;

                bool FrameThreeSpy(string s)
                {
                    frameThreeRun = true;
                    return(true);
                }

                bool setupRun = false;

                void SetupSpy()
                {
                    setupRun = true;
                }

                bool tearDownRun = false;

                void TeardownSpy()
                {
                    tearDownRun = true;
                }

                Karass karass = KarassFactory.Get(
                    CreateActionListWith(SetupSpy),
                    CreateActionListWith(TeardownSpy),
                    new List <FrameRequest[]>
                {
                    new[]
                    {
                        frameRequestOne,
                        frameRequestTwo,
                        frameRequestThree
                    }
                });

                KanKan kankan = new KanKan(karass, _frameFactory);

                Assert.True(kankan.CurrentState.NextFrames.Contains(frameRequestOne));
                Assert.False(kankan.CurrentState.NextFrames.Contains(frameRequestTwo));
                Assert.False(kankan.CurrentState.NextFrames.Contains(frameRequestThree));

                kankan.MoveNext();

                Assert.False(kankan.CurrentState.NextFrames.Contains(frameRequestOne));
                Assert.True(kankan.CurrentState.NextFrames.Contains(frameRequestTwo));
                Assert.False(kankan.CurrentState.NextFrames.Contains(frameRequestThree));


                CheckFirstFrame(setupRun, frameOneRun, tearDownRun, frameTwoRun, frameThreeRun);


                kankan.MoveNext();

                Assert.False(kankan.CurrentState.NextFrames.Contains(frameRequestOne));
                Assert.False(kankan.CurrentState.NextFrames.Contains(frameRequestTwo));
                Assert.True(kankan.CurrentState.NextFrames.Contains(frameRequestThree));


                CheckSecondFrame(setupRun, frameOneRun, tearDownRun, frameTwoRun, frameThreeRun);

                kankan.MoveNext();

                Assert.False(kankan.CurrentState.NextFrames.Any());

                CheckThirdFrame(setupRun, frameOneRun, tearDownRun, frameTwoRun, frameThreeRun);
            }
 public bool Execute(FrameRequest frameRequest, string message)
 {
     return(true);
 }
Beispiel #27
0
 public WebSocketState(IContext context, IStateSource source, HttpConfig config)
 {
     _source = source;
     _config = config;
     context.FireNextRead(FrameRequest.CreateConnectedRequest());
 }
Beispiel #28
0
        /// <summary>
        /// 把收到的内容当作ip,并绑定到ws会话
        /// </summary>
        /// <param name="context">上下文</param>
        /// <param name="frame">数据</param>
        protected override void OnText(IContenxt context, FrameRequest frame)
        {
            var ipAddress = Encoding.UTF8.GetString(frame.Content);

            context.Session.Tag.Set("ip", ipAddress);
        }
Beispiel #29
0
            public void ThenNextFramesIsCorrectlyUpdated()
            {
                FrameRequest setOneFrameOneSpyRequest = _mockFramesFactory.GetValidFrameRequest(SetOneFrameOneSpy);
                FrameRequest setOneFrameTwoSpyRequest = _mockFramesFactory.GetValidFrameRequest(SetOneFrameTwoSpy);
                FrameRequest setTwoFrameOneSpyRequest = _mockFramesFactory.GetValidFrameRequest(SetTwoFrameOneSpy);
                FrameRequest setTwoFrameTwoSpyRequest = _mockFramesFactory.GetValidFrameRequest(SetTwoFrameTwoSpy);


                bool setOneFrameOneRun = false;

                bool SetOneFrameOneSpy(string s)
                {
                    setOneFrameOneRun = true;
                    return(true);
                }

                bool setOneFrameTwoRun = false;

                bool SetOneFrameTwoSpy(string s)
                {
                    setOneFrameTwoRun = true;
                    return(true);
                }

                bool setTwoFrameOneRun = false;

                bool SetTwoFrameOneSpy(string s)
                {
                    setTwoFrameOneRun = true;
                    return(true);
                }

                bool setTwoFrameTwoRun = false;

                bool SetTwoFrameTwoSpy(string s)
                {
                    setTwoFrameTwoRun = true;
                    return(true);
                }

                Karass karass = _karassFactory.Get(new List <List <Action> >(), new List <List <Action> >(),
                                                   new List <FrameRequest[]>
                {
                    new[]
                    {
                        setOneFrameOneSpyRequest,
                        setOneFrameTwoSpyRequest
                    },
                    new[]
                    {
                        setTwoFrameOneSpyRequest,
                        setTwoFrameTwoSpyRequest
                    }
                });

                KanKan kankan = new KanKan(karass, _frameFactory);

                Assert.True(kankan.CurrentState.NextFrames.Count == 2);
                Assert.True(kankan.CurrentState.NextFrames.Contains(setOneFrameOneSpyRequest));
                Assert.True(kankan.CurrentState.NextFrames.Contains(setTwoFrameOneSpyRequest));

                kankan.MoveNext();
                Assert.True(kankan.CurrentState.NextFrames.Count == 2);
                Assert.True(kankan.CurrentState.NextFrames.Contains(setOneFrameTwoSpyRequest));
                Assert.True(kankan.CurrentState.NextFrames.Contains(setTwoFrameTwoSpyRequest));

                Assert.True(setOneFrameOneRun);
                Assert.False(setOneFrameTwoRun);
                Assert.True(setTwoFrameOneRun);
                Assert.False(setTwoFrameTwoRun);

                kankan.MoveNext();

                Assert.False(kankan.CurrentState.NextFrames.Any());

                Assert.True(setOneFrameOneRun);
                Assert.True(setOneFrameTwoRun);
                Assert.True(setTwoFrameOneRun);
                Assert.True(setTwoFrameTwoRun);
            }
        public void ThenKarassWillRunCorrectly()
        {
            bool karassOneSetupRun = false;

            void KarassOneSetupSpy()
            {
                karassOneSetupRun = true;
            }

            bool karassOneTeardownRun = false;

            void KarassOneTeardownSpy()
            {
                karassOneTeardownRun = true;
            }

            bool karassOneFrameOneRun = false;

            bool KarassOneFrameOneSpy(string message)
            {
                karassOneFrameOneRun = true;
                return(true);
            }

            FrameRequest karassOneFrameOneSpyRequest =
                _mockFramesFactory.GetValidFrameRequest(KarassOneFrameOneSpy);

            Karass karassOne = _karassFactory.Get(KarassOneSetupSpy, KarassOneTeardownSpy,
                                                  new List <FrameRequest[]>
            {
                new[]
                {
                    karassOneFrameOneSpyRequest
                }
            });


            bool karassTwoSetupRun = false;

            void KarassTwoSetupSpy()
            {
                karassTwoSetupRun = true;
            }

            bool karassTwoTeardownRun = false;

            void KarassTwoTeardownSpy()
            {
                karassTwoTeardownRun = true;
            }

            bool karassTwoFrameOneRun   = false;
            bool karassTwoFrameTwoRun   = false;
            bool karassTwoFrameThreeRun = false;

            bool KarassTwoFrameOneSpy(string message)
            {
                karassTwoFrameOneRun = true;
                return(true);
            }

            bool KarassTwoFrameTwoSpy(string message)
            {
                karassTwoFrameTwoRun = true;
                return(true);
            }

            bool KarassTwoFrameThreeSpy(string message)
            {
                karassTwoFrameThreeRun = true;
                return(true);
            }

            FrameRequest karassTwoFrameOneSpyRequest =
                _mockFramesFactory.GetValidFrameRequest(KarassTwoFrameOneSpy);


            FrameRequest karassTwoFrameTwoSpyRequest =
                _mockFramesFactory.GetValidFrameRequest(KarassTwoFrameTwoSpy);


            FrameRequest karassTwoFrameThreeSpyRequest =
                _mockFramesFactory.GetValidFrameRequest(KarassTwoFrameThreeSpy);


            Karass karassTwo = _karassFactory.Get(KarassTwoSetupSpy, KarassTwoTeardownSpy,
                                                  new List <FrameRequest[]>
            {
                new[]
                {
                    karassTwoFrameOneSpyRequest,
                    karassTwoFrameTwoSpyRequest,
                    karassTwoFrameThreeSpyRequest,
                }
            });


            bool karassThreeSetupRun = false;

            void KarassThreeSetupSpy()
            {
                karassThreeSetupRun = true;
            }

            bool karassThreeTeardownRun = false;

            void KarassThreeTeardownSpy()
            {
                karassThreeTeardownRun = true;
            }

            bool karassThreeFrameOneRun = false;


            bool KarassThreeFrameOneSpy(string message)
            {
                karassThreeFrameOneRun = true;
                return(true);
            }

            FrameRequest karassThreeFrameOneSpyRequest =
                _mockFramesFactory.GetValidFrameRequest(KarassThreeFrameOneSpy);

            Karass karassThree = _karassFactory.Get(KarassThreeSetupSpy, KarassThreeTeardownSpy,
                                                    new List <FrameRequest[]>
            {
                new[]
                {
                    karassThreeFrameOneSpyRequest
                }
            });


            bool karassFourSetupRun = false;

            void KarassFourSetupSpy()
            {
                karassFourSetupRun = true;
            }

            bool karassFourTeardownRun = false;

            void KarassFourTeardownSpy()
            {
                karassFourTeardownRun = true;
            }

            bool karassFourFrameOneRun = false;
            bool karassFourFrameTwoRun = false;

            bool KarassFourFrameOneSpy(string message)
            {
                karassFourFrameOneRun = true;
                return(true);
            }

            bool KarassFourFrameTwoSpy(string message)
            {
                karassFourFrameTwoRun = true;
                return(true);
            }

            FrameRequest karassFourFrameOneSpyRequest =
                _mockFramesFactory.GetValidFrameRequest(KarassFourFrameOneSpy);


            FrameRequest karassFourFrameTwoSpyRequest =
                _mockFramesFactory.GetValidFrameRequest(KarassFourFrameTwoSpy);


            Karass karassFour = _karassFactory.Get(KarassFourSetupSpy, KarassFourTeardownSpy,
                                                   new List <FrameRequest[]>
            {
                new[]
                {
                    karassFourFrameOneSpyRequest,
                    karassFourFrameTwoSpyRequest
                }
            });

            KanKan kankan = new KanKan(
                new IKarass[] { karassOne, karassTwo, karassThree, karassFour },
                _frameFactory);
            bool moveNext = kankan.MoveNext();

            CheckFirstFrame(karassOneSetupRun, karassOneTeardownRun, karassOneFrameOneRun, karassTwoSetupRun,
                            karassTwoTeardownRun, karassTwoFrameOneRun, karassTwoFrameTwoRun, karassTwoFrameThreeRun, moveNext,
                            karassThreeSetupRun, karassThreeTeardownRun, karassThreeFrameOneRun, karassFourSetupRun,
                            karassFourTeardownRun, karassFourFrameOneRun, karassFourFrameTwoRun);

            moveNext = kankan.MoveNext();


            CheckSecondFrame(karassOneSetupRun, karassOneTeardownRun, karassOneFrameOneRun, karassTwoSetupRun,
                             karassTwoTeardownRun, karassTwoFrameOneRun, karassTwoFrameTwoRun, karassTwoFrameThreeRun,
                             karassThreeSetupRun, karassThreeTeardownRun, karassThreeFrameOneRun, karassFourSetupRun,
                             karassFourTeardownRun, karassFourFrameOneRun, karassFourFrameTwoRun, moveNext);


            moveNext = kankan.MoveNext();

            CheckThirdFrame(karassOneSetupRun, karassOneTeardownRun, karassOneFrameOneRun, karassTwoSetupRun,
                            karassTwoTeardownRun, karassTwoFrameOneRun, karassTwoFrameTwoRun, karassTwoFrameThreeRun,
                            karassThreeSetupRun, karassThreeTeardownRun, karassThreeFrameOneRun, karassFourSetupRun,
                            karassFourTeardownRun, karassFourFrameOneRun, karassFourFrameTwoRun, moveNext);
            moveNext = kankan.MoveNext();

            CheckFourthFrame(karassOneSetupRun, karassOneTeardownRun, karassOneFrameOneRun, karassTwoSetupRun,
                             karassTwoTeardownRun, karassTwoFrameOneRun, karassTwoFrameTwoRun, karassTwoFrameThreeRun,
                             karassThreeSetupRun, karassThreeTeardownRun, karassThreeFrameOneRun, karassFourSetupRun,
                             karassFourTeardownRun, karassFourFrameOneRun, karassFourFrameTwoRun, moveNext);

            moveNext = kankan.MoveNext();

            CheckFifthFrame(karassOneSetupRun, karassOneTeardownRun, karassOneFrameOneRun, karassTwoSetupRun,
                            karassTwoTeardownRun, karassTwoFrameOneRun, karassTwoFrameTwoRun, karassTwoFrameThreeRun,
                            karassThreeSetupRun, karassThreeTeardownRun, karassThreeFrameOneRun, karassFourSetupRun,
                            karassFourTeardownRun, karassFourFrameOneRun, karassFourFrameTwoRun, moveNext);

            moveNext = kankan.MoveNext();

            CheckSixthFrame(karassOneSetupRun, karassOneTeardownRun, karassOneFrameOneRun, karassTwoSetupRun,
                            karassTwoTeardownRun, karassTwoFrameOneRun, karassTwoFrameTwoRun, karassTwoFrameThreeRun,
                            karassThreeSetupRun, karassThreeTeardownRun, karassThreeFrameOneRun, karassFourSetupRun,
                            karassFourTeardownRun, karassFourFrameOneRun, karassFourFrameTwoRun, moveNext);

            moveNext = kankan.MoveNext();

            CheckSeventhFrame(karassOneSetupRun, karassOneTeardownRun, karassOneFrameOneRun, karassTwoSetupRun,
                              karassTwoTeardownRun, karassTwoFrameOneRun, karassTwoFrameTwoRun, karassTwoFrameThreeRun,
                              karassThreeSetupRun, karassThreeTeardownRun, karassThreeFrameOneRun, karassFourSetupRun,
                              karassFourTeardownRun, karassFourFrameOneRun, karassFourFrameTwoRun, moveNext);
        }