public async Task ShouldResendMessageToEveryoneInTheSameGroupExceptTheSender(
        ConnectedClient sender,
        BroadcastMessage message,
        List <ConnectedClient> clientsInGroup,
        [Frozen] Mock <IConnectedClientStore> clients,
        BroadcastMessageHandler sut)
    {
        var senderId = sender.ClientId;

        Assert.NotEqual(senderId, message.SenderId);

        clients.Setup(x => x.FindInGroups(It.Is <IEnumerable <string> >(
                                              x => x.Count() == 1 && x.First() == sender.Group)))
        .Returns(clientsInGroup.Append(sender));

        await sut.HandleAsync(sender, message, Cts.Token);

        // Sync senderId to broadcasted message since it's senderId might be not set by front end.
        Assert.Equal(senderId, message.SenderId);

        Mock.Get(sender.Connection).Verify(x => x.SendAsync(It.IsAny <object>(), Cts.Token), Times.Never);

        foreach (var client in clientsInGroup)
        {
            Mock.Get(client.Connection).Verify(x => x.SendAsync(message, Cts.Token));
        }
    }
示例#2
0
 public NotificationsController(BroadcastMessageHandler notificationsMessageHandler)
 {
     _socketHandler = notificationsMessageHandler;
 }
示例#3
0
        private void GUIEditor_Load(object sender, EventArgs e)
        {
            broadcasthandler = broadcasthook;
            Singleton <Broadcaster> .INSTANCE.handlers.Add(broadcasthandler);

            CollectionEditorHook.FormClosed += CollectionEditor_FormClosed;

            Type[] Types = Assembly.GetExecutingAssembly().GetTypes();

            foreach (var Type in Types)
            {
                GUIAppearenceNameAttribute appearenceName = Type.GetCustomAttribute <GUIAppearenceNameAttribute>();
                GUIWidgetNameAttribute     widgetName     = Type.GetCustomAttribute <GUIWidgetNameAttribute>();

                if (appearenceName != null)
                {
                    GUIAppearenceDataTypeAttribute dataType = Type.GetCustomAttribute <GUIAppearenceDataTypeAttribute>();

                    ToolStripMenuItem appearenceToolStrip = new ToolStripMenuItem();

                    //var appearence = Activator.CreateInstance(Type) as Appearence;


                    appearenceToolStrip.Text = appearenceName.DisplayName;

                    appearenceToolStrip.Click += (g, o) =>
                    {
                        if (ActiveWidget != null)
                        {
                            var appData = Activator.CreateInstance(dataType.Type) as AppearenceData;
                            appData.Name = ActiveWidget.appearence.Count.ToString();
                            widgetData.appearenceData.Add(appData);
                            ActiveWidget.FromWidgetData(widgetData);

                            //propertzGrid1.SelectedObject = appData;
                            //ActiveWidget.appearence.AddAppearence(ActiveWidget.appearence.Count.ToString(), Activator.CreateInstance(Type) as Appearence);
                        }
                    };

                    addToolStripMenuItem.DropDownItems.Add(appearenceToolStrip);
                }

                if (widgetName != null)
                {
                    GUIWidgetDataType data = Type.GetCustomAttribute <GUIWidgetDataType>();

                    ToolStripMenuItem widgetToolStrip = new ToolStripMenuItem();

                    widgetToolStrip.Text = widgetName.DisplayName;

                    widgetToolStrip.Click += (g, o) =>
                    {
                        Widget widget = Activator.CreateInstance(Type) as Widget;
                        widget.SetBounds(0, 0, 100, 100);

                        ActiveWidget = widget;

                        widgetData      = Activator.CreateInstance(data.Type) as WidgetData;
                        widgetData.Size = new Vector2(100, 100);

                        ActiveWidget.data = widgetData;

                        propertzGrid1.SelectedObject = this.widgetData;

                        Singleton <GUI> .INSTANCE.widgets.Add(widget);
                    };

                    this.toolStripDropDownButton1.DropDownItems.Add(widgetToolStrip);
                }
            }
        }
示例#4
0
        private void GUIEditor_Load(object sender, EventArgs e)
        {
            broadcasthandler = broadcasthook;
            Singleton<Broadcaster>.INSTANCE.handlers.Add(broadcasthandler);
            CollectionEditorHook.FormClosed += CollectionEditor_FormClosed;

            Type[] Types = Assembly.GetExecutingAssembly().GetTypes();

            foreach (var Type in Types)
            {
                GUIAppearenceNameAttribute appearenceName = Type.GetCustomAttribute<GUIAppearenceNameAttribute>();
                GUIWidgetNameAttribute widgetName = Type.GetCustomAttribute<GUIWidgetNameAttribute>();

                if (appearenceName != null)
                {
                    GUIAppearenceDataTypeAttribute dataType = Type.GetCustomAttribute<GUIAppearenceDataTypeAttribute>();

                    ToolStripMenuItem appearenceToolStrip = new ToolStripMenuItem();

                    //var appearence = Activator.CreateInstance(Type) as Appearence;


                    appearenceToolStrip.Text = appearenceName.DisplayName;

                    appearenceToolStrip.Click += (g, o) =>
                    {
                        if (ActiveWidget != null)
                        {
                            var appData = Activator.CreateInstance(dataType.Type) as AppearenceData;
                            appData.Name = ActiveWidget.appearence.Count.ToString();
                            widgetData.appearenceData.Add(appData);
                            ActiveWidget.FromWidgetData(widgetData);

                            //propertzGrid1.SelectedObject = appData;
                            //ActiveWidget.appearence.AddAppearence(ActiveWidget.appearence.Count.ToString(), Activator.CreateInstance(Type) as Appearence);
                        }
                    };

                    addToolStripMenuItem.DropDownItems.Add(appearenceToolStrip);
                }

                if (widgetName != null)
                {
                    GUIWidgetDataType data = Type.GetCustomAttribute<GUIWidgetDataType>();

                    ToolStripMenuItem widgetToolStrip = new ToolStripMenuItem();

                    widgetToolStrip.Text = widgetName.DisplayName;

                    widgetToolStrip.Click += (g, o) =>
                    {
                        Widget widget = Activator.CreateInstance(Type) as Widget;
                        widget.SetBounds(0, 0, 100, 100);

                        ActiveWidget = widget;

                        widgetData = Activator.CreateInstance(data.Type) as WidgetData;
                        widgetData.Size = new Vector2(100, 100);

                        ActiveWidget.data = widgetData;

                        propertzGrid1.SelectedObject = this.widgetData;

                        Singleton<GUI>.INSTANCE.widgets.Add(widget);
                    };
                    
                    this.toolStripDropDownButton1.DropDownItems.Add(widgetToolStrip);
                }
            }
        }