Exemplo n.º 1
0
        public static void RunDynamicPlugin(Dictionary <string, string> context, DynamicPlugin key)
        {
            Plugin        plugin     = availablePlugins[key.Name];
            List <string> methodArgs = null;

            if (key.Argument.Any())
            {
                // FIXME: This logic does not support two methods with the same name and different arguments
                methodArgs = new List <String>();
                foreach (MethodInfo pluginMethod in plugin.Type.GetMethods())
                {
                    if (pluginMethod.Name.Equals(key.Method))
                    {
                        foreach (ParameterInfo pluginMethodParam in pluginMethod.GetParameters())
                        {
                            string argValue = null;
                            foreach (DynamicArgument arg in key.Argument)
                            {
                                if (arg.Name.Equals(pluginMethodParam.Name))
                                {
                                    argValue = GetArgumentValue(context, arg.Value);
                                    break;
                                }
                            }
                            methodArgs.Add(argValue);
                        }
                        break;
                    }
                }
            }
            plugin.Type.InvokeMember(key.Method, BindingFlags.InvokeMethod, null, plugin.Instance, methodArgs?.ToArray());
        }
Exemplo n.º 2
0
        public MaskOfTruth(string server, int port, string config) : base(server, port, "", "")
        {
            cfg  = new DataTypes.Config(config);
            cred = new DataTypes.Credentials(cfg.cfgFile.twitch.username, cfg.cfgFile.twitch.password);

            pluginDispatch = new DynamicPlugin(this);

            Startup  += login;
            Startup  += () => SuperUsers.ForEach((S) => S.ToLower());
            Shutdown += logout;
            Shutdown += () => SockStream.Dispose();
            Shutdown += () => SockConn.Close();

            OnSend += (string M) => Console.WriteLine(">> " + M);

            OnReceive += (string M) =>
            {
                var incomingMessage = DataTypes.Message.ParseMessageString(this, M);

                if (incomingMessage.isValid)
                {
                    OnMessage(incomingMessage);
                }
            };

            OnMessage += (DataTypes.Message M) => pluginDispatch.Invoke(M);
        }
Exemplo n.º 3
0
        public void SetUp()
        {
            DynamicPlugin.ClearSiblings(FFMpeg.FFMpeg.Type);
            mockFFMPegService.Setup(m => m.GetNumberOfSupportedPlugins()).Returns(1);
            mockPresetProvider.Setup(m => m.AsList()).Returns(new List <FFMpegConfiguration>
            {
                new FFMpegConfiguration
                {
                    Format = StateFormat.audio_od_standard,
                    AudioDestinationsList = new ObservableCollection <AudioDestinationFormat>
                    {
                        new AudioDestinationFormat
                        {
                            AudioCodec = AudioDestinationFormatAudioCodec.MP3,
                            Format     = AudioDestinationFormatFormat.MP3,
                            Bitrate    = 64,
                            Channels   = AudioDestinationFormatChannels.Mono
                        }
                    }
                }
            });
            Plugin = sut = new FFMpeg.FFMpeg(_pluginUrn, MockTimeProvider.Object, Logging, mockFFMPegService.Object, mockPresetProvider.Object);

            Task = new ExecutionTask
            {
                From = new Essence()
                {
                    Flags       = StateFlags.None,
                    Path        = @"\\sdfsd\sdfsdf\sdfsfsd",
                    Format      = StateFormat.dv5p,
                    AspectRatio = AspectRatio.ratio_16x9,
                    Files       = new List <EssenceFile> {
                        "sdfsdfsdf.mov"
                    },
                    Duration    = 234234234,
                    Attachments = new List <Attachment>()
                    {
                        new Attachment()
                        {
                            Type = AttachmentType.Audio, Path = @"\\sdfsd\sdfsdf\sdfsfsd.wav"
                        }
                    }
                },
                To = new Essence()
                {
                    Flags       = StateFlags.AlternativeAudio,
                    Path        = @"\\sdfsdfsdf\sdgsdgsdg",
                    Format      = StateFormat.dv5p,
                    AspectRatio = AspectRatio.ratio_16x9,
                    Files       = new List <EssenceFile>()
                },
                PluginUrn = _pluginUrn
            };
        }
Exemplo n.º 4
0
        protected override DynamicPlugin[] SetupMockForDynmaicSlotsTest(int numberOfWorkingMachines)
        {
            mockFFMPegService = new Mock <IFFMpegService>(MockBehavior.Strict);
            mockFFMPegService.Setup(m => m.GetNumberOfSupportedPlugins()).Returns(numberOfWorkingMachines);
            DynamicPlugin.ClearSiblings(FFMpeg.FFMpeg.Type);

            var p1 = new FFMpeg.FFMpeg(FFMpeg.FFMpeg.UrnPrefix + 1, MockTimeProvider.Object, Logging, mockFFMPegService.Object, mockPresetProvider.Object);
            var p2 = new FFMpeg.FFMpeg(FFMpeg.FFMpeg.UrnPrefix + 2, MockTimeProvider.Object, Logging, mockFFMPegService.Object, mockPresetProvider.Object);
            var p3 = new FFMpeg.FFMpeg(FFMpeg.FFMpeg.UrnPrefix + 3, MockTimeProvider.Object, Logging, mockFFMPegService.Object, mockPresetProvider.Object);

            return(new DynamicPlugin[] { p1, p2, p3 });
        }
Exemplo n.º 5
0
        protected override DynamicPlugin[] SetupMockForDynmaicSlotsTest(int numberOfWorkingMachines)
        {
            mockWfsService = new Mock <IWfsService>();
            mockWfsService.Setup(m => m.GetWorkingNodes(It.IsAny <string>())).Returns(new string[numberOfWorkingMachines]);
            DynamicPlugin.ClearSiblings(Wfs.Wfs.Type);

            var p1 = new Wfs.Wfs(Wfs.Wfs.UrnPrefix + 1, MockTimeProvider.Object, Logging, mockWfsService.Object, mockPresetProvider.Object);
            var p2 = new Wfs.Wfs(Wfs.Wfs.UrnPrefix + 2, MockTimeProvider.Object, Logging, mockWfsService.Object, mockPresetProvider.Object);
            var p3 = new Wfs.Wfs(Wfs.Wfs.UrnPrefix + 3, MockTimeProvider.Object, Logging, mockWfsService.Object, mockPresetProvider.Object);

            return(new DynamicPlugin[] { p1, p2, p3 });
        }
Exemplo n.º 6
0
        public void SetUp()
        {
            DynamicPlugin.ClearSiblings(Wfs.Wfs.Type);
            mockWfsService.Setup(m => m.GetWorkingNodes(It.IsAny <string>())).Returns(new string[1]);
            mockPresetProvider.Setup(m => m.AsList()).Returns(new List <WorkflowConfiguration>
            {
                new WorkflowConfiguration
                {
                    AspectRatio = AspectRatio.ratio_16x9,
                    BurnInLogo  = false,
                    Format      = StateFormat.h264_od_standard,
                    Workflow    = Guid.NewGuid()
                }
            });
            mockPresetProvider.SetupGet(m => m.MachineGroup).Returns("UnitTestGroup");
            Plugin = sut = new Wfs.Wfs(_pluginUrn, MockTimeProvider.Object, Logging, mockWfsService.Object, mockPresetProvider.Object);

            Task = new ExecutionTask
            {
                From = new Essence()
                {
                    Flags       = StateFlags.None,
                    Path        = @"\\sdfsd\sdfsdf\sdfsfsd",
                    Format      = StateFormat.dv5p,
                    AspectRatio = AspectRatio.ratio_16x9,
                    Files       = new List <EssenceFile> {
                        "sdfsdfsdf.mov"
                    },
                    Duration = 234234234
                },
                To = new Essence()
                {
                    Flags       = StateFlags.None,
                    Path        = @"\\sdfsdfsdf\sdgsdgsdg",
                    Format      = StateFormat.h264_od_standard,
                    AspectRatio = AspectRatio.ratio_16x9,
                    Files       = new List <EssenceFile>()
                },
                PluginUrn = _pluginUrn
            };
        }