コード例 #1
0
        private void PlayerRemote(IntPtr playerpointer, uint eventNameHash, ArgumentsData data)
        {
            var player    = Collections.PlayerCollection[playerpointer];
            var arguments = ArgumentConverter.ConvertToObjects(data);

            _eventManager.CallAsync(new PlayerRemoteEvent(player, eventNameHash, arguments));
        }
コード例 #2
0
        public object[] ConvertToObjects(ArgumentsData data)
        {
            var arguments = new object[data.Length];

            for (var i = 0; i < (int)data.Length; i++)
            {
                var address = data.Arguments + Marshal.SizeOf(typeof(ArgumentData)) * i;

                var argument = Marshal.PtrToStructure <ArgumentData>(address);

                arguments[i] = ConvertToObject(argument);
            }

            return(arguments);
        }
コード例 #3
0
        private void OnPlayerRemoteEvent(IntPtr playerPointer, string eventName, ArgumentsData data)
        {
            if (_subscriptions.TryGetValue(eventName, out var eventSubscriptions) == false)
            {
                _plugin.Logger.Warn($"Unregistered remote event '{eventName}'");

                return;
            }

            var player    = _plugin.PlayerPool[playerPointer];
            var arguments = _plugin.ArgumentConverter.ConvertToObjects(data);

            foreach (var subscription in eventSubscriptions)
            {
                try
                {
                    subscription(this, new PlayerRemoteEventEventArgs(player, eventName, arguments));
                }
                catch (Exception e)
                {
                    _plugin.Logger.Error($"An error occured during execution of {eventName}", e);
                }
            }
        }
コード例 #4
0
ファイル: CommandLine.cs プロジェクト: profet23/ajaxmin
        public void ToArguments()
        {
            var testData = new ArgumentsData[] {
                new ArgumentsData()
                {
                    CommandLine = null, Arguments = new string[0]
                },
                new ArgumentsData()
                {
                    CommandLine = "", Arguments = new string[0]
                },
                new ArgumentsData()
                {
                    CommandLine = "              ", Arguments = new string[0]
                },
                new ArgumentsData()
                {
                    CommandLine = "-ei:utf-8 -eo:utf-8 -warn:4 /G:jQuery -p -z", Arguments = new string[] { "-ei:utf-8", "-eo:utf-8", "-warn:4", "/G:jQuery", "-p", "-z" }
                },
                new ArgumentsData()
                {
                    CommandLine = "\"foo bar.js\" -out \"c:\\test folder\\foo bar min.js\" ", Arguments = new string[] { "foo bar.js", "-out", "c:\\test folder\\foo bar min.js" }
                },
                new ArgumentsData()
                {
                    CommandLine = "foo\"bar\"ack", Arguments = new string[] { "foobarack" }
                },
                new ArgumentsData()
                {
                    CommandLine = "foo \"\"\"\" bar", Arguments = new string[] { "foo", "\"", "bar" }
                },
                new ArgumentsData()
                {
                    CommandLine = "now \" is the time \" for", Arguments = new string[] { "now", " is the time ", "for" }
                },
                new ArgumentsData()
                {
                    CommandLine = "now \" is \"\"the\"\" time \" for", Arguments = new string[] { "now", " is \"the\" time ", "for" }
                },
                new ArgumentsData()
                {
                    CommandLine = "now \"\" \" is \"\"the\"\" time \" for", Arguments = new string[] { "now", "", " is \"the\" time ", "for" }
                },
            };

            var ndxTest = 0;

            foreach (var test in testData)
            {
                Trace.Write(string.Format("Parsing test {0}, command line: ", ++ndxTest));
                Trace.WriteLine(test.CommandLine ?? "<null pointer>");

                var argsActual   = SwitchParser.ToArguments(test.CommandLine);
                var argsExpected = test.Arguments;

                // assume succesful unless proven otherwise
                var success = true;

                Assert.IsTrue(argsActual.Length == argsExpected.Length, "Parsed arguments length {0} not equal to expected arguments length {1}", argsActual.Length, argsExpected.Length);
                Trace.WriteLine(string.Format("    {0} arguments", argsActual.Length));
                for (var ndxArg = 0; ndxArg < argsActual.Length; ++ndxArg)
                {
                    var theSame = string.CompareOrdinal(argsActual[ndxArg], argsExpected[ndxArg]) == 0;
                    Trace.WriteLine(string.Format("        {0}: {1} {3} {2}", ndxArg + 1, argsActual[ndxArg], argsExpected[ndxArg], theSame ? "==" : "!="));
                    success = theSame ? success : false;
                }

                Assert.IsTrue(success, "TEST {0} FAILED!", ndxTest);
            }
        }