Exemplo n.º 1
0
        public async Task GivenLineNumbersShouldBeCorrect()
        {
            var source = @"<article class=""grid-item large"">
    <div class=""grid-image""><a href=""/News/Page/298/cpp-mva-course""><img src=""/img/news/maxresdefault700x240.png"" alt=""Icon"" title=""C++ MVA Course"" /></a></div>
    <div class=""grid-title""><a href=""/News/Page/298/cpp-mva-course"">C++ MVA Course</a></div>
    <div class=""grid-abstract"">My Microsoft Virtual Academy course about modern C++ is now available.</div>
    <div class=""grid-date"">6/5/2015</div>
        <div class=""grid-admin"">        <a href=""/Page/Delete/298"">Delete</a> | <a href=""/Page/Edit/298"">Edit</a> | <a href=""/Page/Create?parentId=1"">Create New</a>
</div>
    </article>
<article class=""grid-item medium"">
    <div class=""grid-image""><a href=""/News/Page/297/dotnet-developer-conference""><img src=""/img/news/8640.pic23150x150.png"" alt=""Icon"" title="".NET Developer Conference"" /></a></div>
    <div class=""grid-title""><a href=""/News/Page/297/dotnet-developer-conference"">.NET Developer Conference</a></div>
    <div class=""grid-abstract"">The sixth edition of the DDC features many interesting talks.</div>
    <div class=""grid-date"">5/28/2015</div>
        <div class=""grid-admin"">        <a href=""/Page/Delete/297"">Delete</a> | <a href=""/Page/Edit/297"">Edit</a> | <a href=""/Page/Create?parentId=1"">Create New</a>
</div>
    </article>
<article class=""grid-item normal even"">
    <div class=""grid-image""><a href=""/News/Page/296/spider-language""><img src=""/img/news/programming-languages_2150x150.png"" alt=""Icon"" title=""Spider Language"" /></a></div>
    <div class=""grid-title""><a href=""/News/Page/296/spider-language"">Spider Language</a></div>
    <div class=""grid-abstract"">Bored of JavaScript&#39;s slow evolution? Maybe its time to try Spider.</div>
        <div class=""grid-date"">5/25/2015</div>
        <div class=""grid-admin"">        <a href=""/Page/Delete/296"">Delete</a> | <a href=""/Page/Edit/296"">Edit</a> | <a href=""/Page/Create?parentId=1"">Create New</a>
</div>
    </article>";
            var context = BrowsingContext.New();
            var parseErrors = new EventReceiver<HtmlErrorEvent>(handler => context.ParseError += handler);
            var document = await context.OpenAsync(m => m.Content(source));

            Assert.AreEqual(1, parseErrors.Received.Count);
            Assert.AreEqual((int)HtmlParseError.DoctypeMissing, parseErrors.Received[0].Code);
            Assert.AreEqual(1, parseErrors.Received[0].Position.Column);
            Assert.AreEqual(1, parseErrors.Received[0].Position.Line);
        }
        public override async Task Execute()
        {
            startLocation = Entity.Transform.Position;
            startRotation = Entity.Transform.Rotation;

            //grab a reference to the falling sphere's rigidbody
            var rigidBody = Entity.Get<RigidbodyComponent>();

            var triggerKey = TriggerEntity.Get<Trigger>().TriggerEvent;
            var receiver = new EventReceiver<bool>(triggerKey);

            while (!CancellationToken.IsCancellationRequested)
            {
                var state = await receiver.ReceiveAsync();
                if (state)
                {
                    //switch to dynamic and awake the rigid body
                    rigidBody.RigidBodyType = RigidBodyTypes.Dynamic;
                    rigidBody.Activate(true); //need to awake to object
                }
                else
                {
                    //when out revert to kinematic and old starting position
                    rigidBody.RigidBodyType = RigidBodyTypes.Kinematic;
                    //reset position
                    Entity.Transform.Position = startLocation;
                    Entity.Transform.Rotation = startRotation;
                    Entity.Transform.UpdateWorldMatrix();
                    Entity.Get<PhysicsComponent>().UpdatePhysicsTransformation();
                }
            }
        }
Exemplo n.º 3
0
        public void SameFrameReceiveAsync()
        {
            var test = new EventSystemTest();

            var frameCounter = 0;

            test.AddTask(async () =>
            {
                while (test.IsRunning)
                {
                    frameCounter++;
                    await test.NextFrame();
                }
            }, 100);

            test.AddTask(async () =>
            {
                var key = new EventKey();
                var recv = new EventReceiver(key);

                key.Broadcast();

                var currentFrame = frameCounter;

                await recv.ReceiveAsync();

                Assert.AreEqual(currentFrame, frameCounter);

                test.Exit();
            });

            test.Run();
        }
Exemplo n.º 4
0
 public async Task ClosingSpanTagShouldNotResultInAnError()
 {
     var context = BrowsingContext.New();
     var events = new EventReceiver<HtmlErrorEvent>(callback => context.ParseError += callback);
     var source = @"<!DOCTYPE html><html><head></head><body><span>test</span></body></html>";
     var document = await context.OpenAsync(res => res.Content(source));
     Assert.AreEqual(0, events.Received.Count);
 }
Exemplo n.º 5
0
        public override void Start()
        {
            base.Start();

            triggeredEvent = (Trigger != null) ? new EventReceiver<bool>(Trigger.TriggerEvent) : null;

            sfxInstance = SoundEffect?.CreateInstance();
            sfxInstance?.Stop();
        }
Exemplo n.º 6
0
        public void ClosingSpanTagShouldNotResultInAnError()
        {
            var events = new EventReceiver<HtmlParseErrorEvent>();
            var config = new Configuration(events: events);
            var source = @"<!DOCTYPE html><html><head></head><body><span>test</span></body></html>";
            var document = source.ToHtmlDocument(config);
            Assert.AreEqual(0, events.Received.Count);

        }
Exemplo n.º 7
0
 public void UnsubscribeToEvent(string eventType, EventReceiver listener)
 {
     if (events != null)
     {
         if (events.ContainsKey(eventType))
         {
             events[eventType] -= listener;
         }
     }
 }
Exemplo n.º 8
0
 /// <summary>
 /// Llamamos a este método para desuscribirnos de eventos
 /// </summary>
 /// <param name="eventType"></param>
 /// <param name="listener"></param>
 public static void UnsubscribeToEvent(EventType eventType, EventReceiver listener)
 {
     if (_events != null)                    //Si el diccionario existe
     {
         if (_events.ContainsKey(eventType)) //Si contiene la key que me pasaron
         {
             _events[eventType] -= listener; //Remuevo la función de esa key
         }
     }
 }
Exemplo n.º 9
0
        public void SameFrameReceive()
        {
            var key = new EventKey();
            var recv = new EventReceiver(key);

            key.Broadcast();
            Assert.True(recv.TryReceive());

            Assert.False(recv.TryReceive());
        }
Exemplo n.º 10
0
        public void SameFrameReceive()
        {
            var key  = new EventKey();
            var recv = new EventReceiver(key);

            key.Broadcast();
            Assert.True(recv.TryReceive());

            Assert.False(recv.TryReceive());
        }
Exemplo n.º 11
0
 /// <summary>
 /// Llamamos a este método para desuscribirnos de eventos
 /// </summary>
 /// <param name="eventType"></param>
 /// <param name="listener"></param>
 public static void UnsubscribeToEvent(TypeOfEvent eventType, EventReceiver listener)
 {
     if (_events != null)
     {
         if (_events.ContainsKey(eventType))
         {
             _events[eventType] -= listener;
         }
     }
 }
Exemplo n.º 12
0
        public override async Task Execute()
        {
            var brickHit = new EventReceiver <Shock>(BrickShock.BrickHit);

            while (Game.IsRunning)
            {
                var result = await brickHit.ReceiveAsync();

                TreatShock(result);
            }
        }
        public IActionResult Create([FromBody] EventReceiver eventReceiver)
        {
            if (eventReceiver == null)
            {
                return(BadRequest("Evento não informado"));
            }

            _eventReceiverService.Create(eventReceiver);

            return(Ok(eventReceiver));
        }
Exemplo n.º 14
0
    /* 파라미터 : 해당 액션이 작용할 actor*/
    public override void Action(Actor actor)
    {
        if (receiver == null)
        {
            receiver = actor.GetComponent <EventReceiver>();
        }

        receiver.lv_0Flag = true;
        UIManager.instance.GetMedicine();
        gameObject.SetActive(false);
    }
Exemplo n.º 15
0
        public override void Start()
        {
            hoverEntity = OutlinePrefab.InstantiateSingle();
            hoverEntity.Get <OutlineEntity>().Material = HoverMaterial;

            selectEntity = OutlinePrefab.InstantiateSingle();
            selectEntity.Get <OutlineEntity>().Material = SelectMaterial;

            entitySelected = new EventReceiver <Entity>(CameraExtensionsDemo.EntitySelected);
            entityHover    = new EventReceiver <Entity>(CameraExtensionsDemo.EntityHover);
        }
Exemplo n.º 16
0
 /// <summary>
 /// Llamamos a este método para desuscribirnos de eventos
 /// </summary>
 /// <param name="eventName"></param>
 /// <param name="listener"></param>
 public static void UnsubscribeToEvent(string eventName, EventReceiver listener)
 {
     //Busca en el diccionario de eventos el método. Si lo encuentra lo elimina.
     if (_events != null)
     {
         if (_events.ContainsKey(eventName))
         {
             _events[eventName] -= listener;
         }
     }
 }
Exemplo n.º 17
0
        private void Init()
        {
            ballLostListener    = new EventReceiver(ball.BallLostEK);
            brickErasedListener = new EventReceiver(HitReaction.ShockTreatedEK);
            deathOrigPos        = deathEntity.Transform.Position;
            var restartUi = SceneSystem.SceneInstance.RootScene.Entities.First(e => e.Name == "restart ui").Components.Get <UIComponent>();
            var btn       = (Button)restartUi.Page.RootElement.VisualChildren.First();

            btn.Click += BtnOnClick;
            ExecuteReset();
        }
Exemplo n.º 18
0
 public static void DebugEvents(object o, string formatString, string eventsRegex)
 {
     // Find all the events on the object.
     foreach (EventInfo info in o.GetType().GetEvents(BindingFlags.FlattenHierarchy | BindingFlags.Instance | BindingFlags.Public))
     {
         if (eventsRegex == null || Regex.IsMatch(info.Name, eventsRegex))
         {
             EventReceiver receiver = new EventReceiver(o, info, formatString);
         }
     }
 }
Exemplo n.º 19
0
 public QueueContainer(EventReceiver eventReceiver, ILogger <QueueContainer> logger, StoreError storeError, int maxQueueSize = 0)
 {
     _logger        = logger;
     _eventReceiver = eventReceiver;
     _queueWriters  = new QueueWriter[_count];
     for (int i = 0; i < _count; i++)
     {
         _queueWriters[i] = new QueueWriter(eventReceiver, logger, storeError, maxQueueSize);
     }
     _ = _eventReceiver.LogCount();
     _ = LogQueueLength();
 }
Exemplo n.º 20
0
 /// <summary>
 /// Llamamos a este método para suscribirnos a eventos
 /// </summary>
 /// <param name="eventType"></param>
 /// <param name="listener"></param>
 public static void SubscribeToEvent(EventType eventType, EventReceiver listener)
 {
     if (_events == null)                                       //Si el diccionario aún no existe
     {
         _events = new Dictionary <EventType, EventReceiver>(); //Lo creo
     }
     if (!_events.ContainsKey(eventType))                       //Si el diccionario no contiene la key
     {
         _events.Add(eventType, null);                          //Agrego la key
     }
     _events[eventType] += listener;                            //Agrego la función a esa key
 }
Exemplo n.º 21
0
 public static void SubscribeToEvent(string e, EventReceiver listener)
 {
     if (_events == null)
     {
         _events = new Dictionary <string, EventReceiver>();
     }
     if (!_events.ContainsKey(e))
     {
         _events.Add(e, null);
     }
     _events[e] += listener;
 }
Exemplo n.º 22
0
        public void ConstructorSetsTheConsumerGroup()
        {
            var options = new EventReceiverOptions
            {
                ConsumerGroup = "SomeGroup"
            };

            var transportReceiver = new ObservableTransportReceiverMock();
            var receiver          = new EventReceiver(transportReceiver, "dummy", "0", options);

            Assert.That(receiver.ConsumerGroup, Is.EqualTo(options.ConsumerGroup));
        }
Exemplo n.º 23
0
        public void OnInvisibilityChanged(bool invisibleValue)
        {
            log.InfoFormat("MmoMessageComponent: invisibility changed {0}:{1}:{2} yellow",
                           (ItemType)nebulaObject.Type, nebulaObject.Id, invisibleValue);
            EventReceiver receiver = EventReceiver.ItemSubscriber;

            if (nebulaObject.IsPlayer())
            {
                receiver = EventReceiver.OwnerAndSubscriber;
            }
            SendInvisibilityChanged(receiver, invisibleValue);
        }
Exemplo n.º 24
0
        public void ConstructorSetsThePriority(long?priority)
        {
            var options = new EventReceiverOptions
            {
                ExclusiveReceiverPriority = priority
            };

            var transportReceiver = new ObservableTransportReceiverMock();
            var receiver          = new EventReceiver(transportReceiver, "dummy", "0", options);

            Assert.That(receiver.ExclusiveReceiverPriority, Is.EqualTo(priority));
        }
Exemplo n.º 25
0
 public static void SubscribeToEvent(EventsType eventType, EventReceiver listener)
 {
     if (_events == null)
     {
         _events = new Dictionary <EventsType, EventReceiver>();
     }
     if (!_events.ContainsKey(eventType))
     {
         _events.Add(eventType, null);
     }
     _events[eventType] += listener;
 }
Exemplo n.º 26
0
        public void ConstructorSetsTheStartingPosition()
        {
            var options = new EventReceiverOptions
            {
                BeginReceivingAt = EventPosition.FromSequenceNumber(12345, true)
            };

            var transportReceiver = new ObservableTransportReceiverMock();
            var receiver          = new EventReceiver(transportReceiver, "dummy", "0", options);

            Assert.That(receiver.StartingPosition, Is.EqualTo(options.BeginReceivingAt));
        }
Exemplo n.º 27
0
        public override void Start()
        {
            base.Start();

            if (Trigger == null)
            {
                throw new ArgumentException($"{nameof(Trigger)} is not set");
            }

            triggerEventReceiver = new EventReceiver <bool>(Trigger.Changed, EventReceiverOptions.Buffered);

            UpdateVisuals();
        }
Exemplo n.º 28
0
        public void SubscribeToEvent(string eventType, EventReceiver listener)
        {
            if (events == null)
            {
                events = new Dictionary <string, EventReceiver>();
            }

            if (!events.ContainsKey(eventType))
            {
                events.Add(eventType, null);
            }

            events[eventType] += listener;
        }
Exemplo n.º 29
0
        static void Main(string[] args)
        {
            // 7. 在主程序中创建事件发送者实例,创建一个"网络管理器"
            NetworkManager network = new NetworkManager();

            // 8. 创建一个接收者实例"消息接收器",处理来自发送者"网络管理器"发来的消息
            EventReceiver eventReceiver = new EventReceiver(network);

            // "网络管理器"触发下载完成消息
            network.DownloadContent();

            // 输入任意键退出
            Console.ReadKey();
        }
Exemplo n.º 30
0
        public override void Start()
        {
            var menuControl = ControlsLibrary.InstantiateElement <Grid>("FantasyGrid");
            var modal       = new ModalElement {
                Content = menuControl
            };

            UI.Page = new UIPage {
                RootElement = modal
            };
            modal.OutsideClick += (sender, e) => Hide();
            playerClick         = new EventReceiver <Raycaster.ClickResult>(PlayerInput.OnClickable);
            Hide();
        }
Exemplo n.º 31
0
        static void Main(string[] args)
        {
            // 7. 在主程序中创建事件发送者实例,创建一个"网络管理器"
            NetworkManager network = new NetworkManager();

            // 8. 创建一个接收者实例"消息接收器",处理来自发送者"网络管理器"发来的消息
            EventReceiver eventReceiver = new EventReceiver(network);

            // "网络管理器"触发下载完成消息
            network.DownloadContent();

            // 输入任意键退出
            Console.ReadKey();
        }
Exemplo n.º 32
0
        private async Task VisitIntermediateCatchMessageEvent(
            TIntermediateCatchEvent intermediateCatchEvent,
            TMessageEventDefinition messageEventDefinition)
        {
            var messageRef = messageEventDefinition.MessageRef.ToString();

            _logger.LogWarning("Waiting for message {message}", messageRef);

            var result = await EventReceiver.WaitForEventAsync <JObject>(messageRef, _terminateCancellationTokenSource.Token);

            _logger.LogWarning("Received message {message}", messageRef);

            await VisitFlowNodes(GetParallelOutgoingNodes(intermediateCatchEvent));
        }
Exemplo n.º 33
0
        public void RunInitialize()
        {
            mongoDatabase = mongoClient.GetDatabase(Guid.NewGuid().ToString());

            var log = new SemanticLog(new ILogChannel[0], new ILogAppender[0], () => new JsonLogWriter(Formatting.Indented, true));

            eventConsumerInfos = new MongoEventConsumerInfoRepository(mongoDatabase);
            eventNotifier      = new DefaultEventNotifier(new InMemoryPubSub());
            eventStore         = new MongoEventStore(mongoDatabase, eventNotifier);
            eventConsumer      = new MyEventConsumer(NumEvents);

            eventReceiver = new EventReceiver(formatter, eventStore, eventNotifier, eventConsumerInfos, log);
            eventReceiver.Subscribe(eventConsumer);
        }
Exemplo n.º 34
0
        public void SendSubZoneUpdate(EventReceiver receiver, int subZone)
        {
            var eventInstance = new ItemGeneric {
                ItemId          = nebulaObject.Id,
                ItemType        = nebulaObject.Type,
                CustomEventCode = (byte)CustomEventCode.UpdateSubZone,
                EventData       = subZone
            };
            SendParameters sendParameters = new SendParameters {
                ChannelId = Settings.ItemEventChannel, Unreliable = false
            };
            var eventData = new EventData((byte)EventCode.ItemGeneric, eventInstance);

            SendEventData(receiver, eventData, sendParameters);
        }
 // Token: 0x06000704 RID: 1796 RVA: 0x0002E484 File Offset: 0x0002C884
 private void DrawExample6()
 {
     GUI.Label(new Rect(10f, 130f, 20f, 20f), "6:");
     if (!this.example6.done && GUI.Button(new Rect(30f, 130f, 100f, 20f), "Add Event"))
     {
         EventReceiver receiver   = this.example6.moveRef.GetComponent <EventReceiver>();
         UnityEvent    unityEvent = this.example6.moveRef.events[1];
         unityEvent.RemoveAllListeners();
         unityEvent.AddListener(delegate()
         {
             receiver.ActivateForTime(this.example6.target);
         });
         this.example6.done = true;
     }
 }
Exemplo n.º 36
0
        public void SendKilled(EventReceiver receiver)
        {
            var eventInstance = new ItemGeneric {
                ItemId          = nebulaObject.Id,
                ItemType        = nebulaObject.Type,
                CustomEventCode = (byte)CustomEventCode.WasKilled,
                EventData       = new Hashtable()
            };
            SendParameters sendParameters = new SendParameters {
                ChannelId = Settings.ItemEventChannel, Unreliable = false
            };
            var eventData = new EventData((byte)EventCode.ItemGeneric, eventInstance);

            SendEventData(receiver, eventData, sendParameters);
        }
Exemplo n.º 37
0
        public void WeakHandlerTest()
        {
#if DEBUG
            Assert.Warn("This test case should run on release build.");
            return;
#endif
            using (var dispatcher = new TestDispatcherContext())
            {
                int eventReceivedCount = 0;

                DispatcherHelper.UIDispatcher = dispatcher.Dispatcher;

                var handlerResultList = new List <string>();

                var command = new ViewModelCommand(() => { }, () => true);

                var realReceiver1 = new EventReceiver(command, () => eventReceivedCount++);
                var realReceiver2 = new EventReceiver(command, () => eventReceivedCount++);

                var receiver1 = new WeakReference(realReceiver1);
                var receiver2 = new WeakReference(realReceiver2);
                var receiver3 = new EventReceiver(command, () => eventReceivedCount++);

                var semaphore       = new Semaphore(0, 1);
                var releaseReceiver = new EventReceiver(command, () => semaphore.Release());

                command.RaiseCanExecuteChanged();
                semaphore.WaitOne(1000).Is(true);

                eventReceivedCount.Is(3);

                realReceiver1 = null;
                realReceiver2 = null;

                GC.Collect();
                GC.WaitForPendingFinalizers();
                GC.Collect();

                receiver1.IsAlive.Is(false);
                receiver2.IsAlive.Is(false);
                receiver3.IsNot(null);       // do not remove this line. this line is for no released receiver3 by GC.
                releaseReceiver.IsNot(null); // do not remove this line. this line is for no released releaseReceiver by GC.

                command.RaiseCanExecuteChanged();
                semaphore.WaitOne(1000).Is(true);
                eventReceivedCount.Is(4);
            }
        }
Exemplo n.º 38
0
        public void ReceiveFirstCheck()
        {
            var game = new EventSystemTest();

            var frameCount = 0;

            var evt1 = new EventKey();
            var evt2 = new EventKey();

            game.AddTask(async() =>
            {
                var rcv1 = new EventReceiver(evt1);
                var rcv2 = new EventReceiver(evt2);

                for (;;)
                {
                    var rcv = await EventReceiver.ReceiveOne(rcv1, rcv2);

                    if (rcv.Receiver == rcv1)
                    {
                        evt2.Broadcast(); //this is the point of this test.. see if t2 will get populated next loop
                        await game.NextFrame();
                    }
                    else if (rcv.Receiver == rcv2)
                    {
                        await game.NextFrame();
                        game.Exit();
                    }
                }
            });

            game.AddTask(async() =>
            {
                while (frameCount < 30 && game.IsRunning)
                {
                    frameCount++;

                    if (frameCount == 20)
                    {
                        evt1.Broadcast();
                    }

                    await game.NextFrame();
                }

                Assert.True(false, "t2 should be completed");
            });
        }
Exemplo n.º 39
0
        public async Task LoadContextFromStreamChunked()
        {
            if (Helper.IsNetworkAvailable())
            {
                var address = "http://anglesharp.azurewebsites.net/Chunked";
                var events  = new EventReceiver <HtmlParseStartEvent>();
                var config  = new Configuration(events: events).WithDefaultLoader();
                var context = BrowsingContext.New(config);
                var start   = DateTime.Now;
                events.OnReceived = rec => start = DateTime.Now;
                var document = await context.OpenAsync(address);

                var end = DateTime.Now;
                Assert.Greater(end - start, TimeSpan.FromSeconds(1));
            }
        }
Exemplo n.º 40
0
        public void WeakHandlerTest()
        {
            using (var dispatcher = new TestDispatcherContext())
            {
                int eventReceivedCount = 0;

                DispatcherHelper.UIDispatcher = dispatcher.Dispatcher;

                var handlerResultList = new List<string>();

                var command = new ViewModelCommand(() => { }, () => true);

                var realReceiver1 = new EventReceiver(command,() => eventReceivedCount++);
                var realReceiver2 = new EventReceiver(command, () => eventReceivedCount++);

                var receiver1 = new WeakReference(realReceiver1);
                var receiver2 = new WeakReference(realReceiver2);
                var receiver3 = new EventReceiver(command, () => eventReceivedCount++);

                command.RaiseCanExecuteChanged();
                System.Threading.Thread.Sleep(1000);

                eventReceivedCount.Is(3);

                realReceiver1 = null;
                realReceiver2 = null;

                GC.Collect();
                GC.WaitForPendingFinalizers();
                GC.Collect();

                receiver1.IsAlive.Is(false);
                receiver2.IsAlive.Is(false);
                receiver3.IsNot(null);

                command.RaiseCanExecuteChanged();
                System.Threading.Thread.Sleep(1000);
                eventReceivedCount.Is(4);
            }
        }
Exemplo n.º 41
0
 public async Task LoadContextFromStreamChunked()
 {
     if (Helper.IsNetworkAvailable())
     {
         var address = "http://anglesharp.azurewebsites.net/Chunked";
         var events = new EventReceiver<HtmlParseStartEvent>();
         var config = new Configuration(events: events).WithDefaultLoader();
         var context = BrowsingContext.New(config);
         var start = DateTime.Now;
         events.OnReceived = rec => start = DateTime.Now;
         var document = await context.OpenAsync(address);
         var end = DateTime.Now;
         Assert.Greater(end - start, TimeSpan.FromSeconds(1));
     }
 }
Exemplo n.º 42
0
        /// <summary>
        /// The raise generic event.
        /// </summary>
        /// <param name="itemId">
        /// The item id.
        /// </param>
        /// <param name="itemType">
        /// The item type.
        /// </param>
        /// <param name="customEventCode">
        /// The custom event code.
        /// </param>
        /// <param name="eventData">
        /// The event data.
        /// </param>
        /// <param name="eventReliability">
        /// The event reliability.
        /// </param>
        /// <param name="eventReceiver">
        /// The event receiver.
        /// </param>
        /// <returns>
        /// the OperationRequest
        /// </returns>
        public static OperationRequest RaiseGenericEvent(
            string itemId, byte? itemType, byte customEventCode, object eventData, Reliability eventReliability, EventReceiver eventReceiver)
        {
            var request = new OperationRequest { OperationCode = (byte)OperationCode.RaiseGenericEvent, Parameters = new Dictionary<byte, object>() };
            request.Parameters.Add((byte)ParameterCode.CustomEventCode, customEventCode);
            if (eventData != null)
            {
                request.Parameters.Add((byte)ParameterCode.EventData, eventData);
            }

            request.Parameters.Add((byte)ParameterCode.EventReliability, (byte)eventReliability);
            request.Parameters.Add((byte)ParameterCode.EventReceiver, (byte)eventReceiver);
            if (itemId != null)
            {
                request.Parameters.Add((byte)ParameterCode.ItemId, itemId);
            }

            if (itemType.HasValue)
            {
                request.Parameters.Add((byte)ParameterCode.ItemType, itemType.Value);
            }

            return request;
        }
Exemplo n.º 43
0
        /// <summary>
        /// The raise generic event.
        /// </summary>
        /// <param name="game">
        /// The mmo game.
        /// </param>
        /// <param name="itemId">
        /// The item id.
        /// </param>
        /// <param name="itemType">
        /// The item type.
        /// </param>
        /// <param name="customEventCode">
        /// The custom event code.
        /// </param>
        /// <param name="eventData">
        /// The event data.
        /// </param>
        /// <param name="eventReliability">
        /// The event reliability.
        /// </param>
        /// <param name="eventReceiver">
        /// The event receiver.
        /// </param>
        public static void RaiseGenericEvent(
            Game game, string itemId, byte? itemType, byte customEventCode, object eventData, byte eventReliability, EventReceiver eventReceiver)
        {
            var data = new Dictionary<byte, object>
                {
                    { (byte)ParameterCode.CustomEventCode, customEventCode }, 
                    { (byte)ParameterCode.EventReliability, eventReliability }, 
                    { (byte)ParameterCode.EventReceiver, (byte)eventReceiver }
                };

            if (eventData != null)
            {
                data.Add((byte)ParameterCode.EventData, eventData);
            }

            if (itemId != null)
            {
                data.Add((byte)ParameterCode.ItemId, itemId);
            }

            if (itemType.HasValue)
            {
                data.Add((byte)ParameterCode.ItemType, itemType.Value);
            }

            game.SendOperation(OperationCode.RaiseGenericEvent, data, true, Settings.ItemChannel);
        }
Exemplo n.º 44
0
 public async Task LoadContextFromStreamChunked()
 {
     // Warning: This test might fail under certain conditions, e.g.,
     // * client uses a proxy or
     // * client is connected to VPN (at least with the VPN client of Windows 10).
     if (Helper.IsNetworkAvailable())
     {
         var address = "http://anglesharp.azurewebsites.net/Chunked";
         var config = Configuration.Default.WithDefaultLoader();
         var context = BrowsingContext.New(config);
         var events = new EventReceiver<HtmlParseEvent>(handler => context.Parsing += handler);
         var start = DateTime.Now;
         events.OnReceived = rec => start = DateTime.Now;
         var document = await context.OpenAsync(address);
         var end = DateTime.Now;
         Assert.Greater(end - start, TimeSpan.FromSeconds(1));
     }
 }
Exemplo n.º 45
0
        public void DelayedReceiverCreation()
        {
            var game = new EventSystemTest();

            var frameCount = 0;

            game.AddTask(async () =>
            {
                var evt = new EventKey();
                EventReceiver rcv = null;
                while (frameCount < 25)
                {
                    if (frameCount == 5)
                    {
                        evt.Broadcast();
                    }
                    if (frameCount == 20)
                    {
                        rcv = new EventReceiver(evt);
                        Assert.False(rcv.TryReceive());
                        evt.Broadcast();
                    }
                    if (frameCount == 22)
                    {
                        Assert.NotNull(rcv);
                        Assert.True(rcv.TryReceive());

                        game.Exit();
                    }
                    await game.NextFrame();
                    frameCount++;
                }
            });

            game.Run();
        }
 public ModelChangedArgs(EventReceiver receiver, EventContext context) {
     Receiver = receiver;
     Context = context;
 }
Exemplo n.º 47
0
        public void DifferentThreadBroadcast()
        {
            var game = new EventSystemTest();

            var counter = 0;

            var broadcaster = new EventKey();

            var readyCount = 0;

            game.AddTask(async () =>
            {
                var recv = new EventReceiver(broadcaster, EventReceiverOptions.Buffered);

                Interlocked.Increment(ref readyCount);

                for (;;)
                {
                    await recv.ReceiveAsync();
                    Interlocked.Increment(ref counter);
                }
            });

            game.AddTask(async () =>
            {
                var recv = new EventReceiver(broadcaster, EventReceiverOptions.Buffered);

                Interlocked.Increment(ref readyCount);

                for (;;)
                {
                    await recv.ReceiveAsync();
                    Interlocked.Increment(ref counter);
                }
            });

            game.AddTask(async () =>
            {
                var recv = new EventReceiver(broadcaster, EventReceiverOptions.Buffered);

                Interlocked.Increment(ref readyCount);

                for (;;)
                {
                    await recv.ReceiveAsync();
                    Interlocked.Increment(ref counter);
                }
            });

            var t1W = new AutoResetEvent(false);
            var t2W = new AutoResetEvent(false);

            var waitHandles = new WaitHandle[]
            {
                t1W,
                t2W
            };

            Exception threadException = null;

            new Thread(() =>
            {
                try
                {
                    while (!game.IsRunning && readyCount < 3)
                    {
                        Thread.Sleep(200);
                    }

                    var frameCounter = 0;

                    while (true)
                    {
                        Thread.Sleep(50);
                        frameCounter++;
                        broadcaster.Broadcast();

                        if (frameCounter < 200) continue;
                        t1W.Set();
                        return;
                    }
                }
                catch (Exception e)
                {
                    threadException = e;
                }
            }).Start();

            new Thread(() =>
            {
                try
                {
                    while (!game.IsRunning && readyCount < 3)
                    {
                        Thread.Sleep(200);
                    }

                    var frameCounter = 0;

                    while (true)
                    {
                        Thread.Sleep(50);
                        frameCounter++;
                        broadcaster.Broadcast();

                        if (frameCounter < 200) continue;
                        t2W.Set();
                        return;
                    }
                }
                catch (Exception e)
                {
                    threadException = e;
                }
            }).Start();

            new Thread(() =>
            {
                try
                {
                    //wait until both threads have broadcasted 200 times each
                    if (!WaitHandle.WaitAll(waitHandles, TimeSpan.FromMinutes(2)))
                    {
                        throw new Exception("DifferentThreadBroadcast test timedout.");
                    }

                    Thread.Sleep(2000);

                    game.Exit();
                }
                catch (Exception e)
                {
                    threadException = e;
                }
            }).Start();

            game.Run();

            Assert.IsNull(threadException);

            Assert.AreEqual(1200, counter);
        }
Exemplo n.º 48
0
        public void DifferentSyntax()
        {
            var game = new EventSystemTest();

            var frameCounter = 0;

            var broadcaster = new EventKey();

            game.AddTask(async () =>
            {
                var tests = 5;
                var recv = new EventReceiver(broadcaster);

                var threadId = Thread.CurrentThread.ManagedThreadId;

                while (tests-- > 0)
                {
                    await recv;
                    Assert.AreEqual(threadId, Thread.CurrentThread.ManagedThreadId);
                }
            });

            game.AddTask(async () =>
            {
                var tests = 5;
                var recv = new EventReceiver(broadcaster);

                var threadId = Thread.CurrentThread.ManagedThreadId;

                while (tests-- > 0)
                {
                    await recv;
                    Assert.AreEqual(threadId, Thread.CurrentThread.ManagedThreadId);
                }
            });

            game.AddTask(async () =>
            {
                var tests = 5;
                var recv = new EventReceiver(broadcaster);

                var threadId = Thread.CurrentThread.ManagedThreadId;

                while (tests-- > 0)
                {
                    await recv;
                    Assert.AreEqual(threadId, Thread.CurrentThread.ManagedThreadId);
                }
            });

            Task.Run(async () =>
            {
                while (!game.IsRunning)
                {
                    await Task.Delay(100);
                }

                while (true)
                {
                    frameCounter++;
                    broadcaster.Broadcast();
                    if (frameCounter == 20)
                    {
                        game.Exit();
                    }
                    await Task.Delay(50);
                }
            });

            game.Run();
        }
Exemplo n.º 49
0
        public void ReceiveManyCheck()
        {
            var game = new EventSystemTest();

            var frameCount = 0;

            game.AddTask(async () =>
            {
                var evt = new EventKey();
                var rcv = new EventReceiver(evt, EventReceiverOptions.Buffered);
                while (frameCount < 25)
                {
                    evt.Broadcast();

                    if (frameCount == 20)
                    {
                        var manyEvents = rcv.TryReceiveAll();
                        Assert.AreEqual(manyEvents, 21);
                        game.Exit();
                    }
                    await game.NextFrame();
                    frameCount++;
                }
            });

            game.Run();
        }
Exemplo n.º 50
0
        public void EveryFrameClear()
        {
            var game = new EventSystemTest();

            var frameCount = 0;

            var evt = new EventKey();

            game.AddTask(async () =>
            {
                while (frameCount < 25)
                {
                    evt.Broadcast();
                    evt.Broadcast();

                    await game.NextFrame();
                }
            }, 10);

            game.AddTask(async () =>
            {
                var rcv = new EventReceiver(evt, EventReceiverOptions.Buffered);
                while (frameCount < 25)
                {
                    if (frameCount == 20)
                    {
                        var manyEvents = rcv.TryReceiveAll();
                        Assert.AreEqual(2, manyEvents);
                        game.Exit();
                    }

                    rcv.Reset();

                    await game.NextFrame();

                    frameCount++;
                }
            }, -10);

            game.Run();
        }
Exemplo n.º 51
0
        public void ReceiveFirstCheck()
        {
            var game = new EventSystemTest();

            var frameCount = 0;

            var evt1 = new EventKey();
            var evt2 = new EventKey();

            game.AddTask(async () =>
            {
                var rcv1 = new EventReceiver(evt1);
                var rcv2 = new EventReceiver(evt2);

                for (;;)
                {
                    var rcv = await EventReceiver.ReceiveOne(rcv1, rcv2);

                    if (rcv.Receiver == rcv1)
                    {
                        evt2.Broadcast(); //this is the point of this test.. see if t2 will get populated next loop
                        await game.NextFrame();
                    }
                    else if (rcv.Receiver == rcv2)
                    {
                        await game.NextFrame();
                        game.Exit();
                    }
                }
            });

            game.AddTask(async () =>
            {
                while (frameCount < 30 && game.IsRunning)
                {
                    frameCount++;

                    if (frameCount == 20)
                    {
                        evt1.Broadcast();
                    }

                    await game.NextFrame();
                }

                Assert.Fail("t2 should be completed");
            });
        }