コード例 #1
0
        public ServerHandler(string url, string SessionID, IRegistryCore registry) :
            base("POST", url)
        {
            m_SessionID = SessionID;
            m_registry  = registry;
            m_methods   = new Dictionary <string, List <MethodImplementation> >();
            List <string> alreadyRunPlugins = new List <string>();

            foreach (IAuroraDataPlugin plugin in Aurora.DataManager.DataManager.GetPlugins())
            {
                if (alreadyRunPlugins.Contains(plugin.Name))
                {
                    continue;
                }
                alreadyRunPlugins.Add(plugin.Name);
                foreach (MethodInfo method in plugin.GetType().GetMethods())
                {
                    if (Attribute.GetCustomAttribute(method, typeof(CanBeReflected)) != null)
                    {
                        List <MethodImplementation> methods = new List <MethodImplementation>();
                        MethodImplementation        imp     = new MethodImplementation()
                        {
                            Method = method, Reference = plugin
                        };
                        if (!m_methods.TryGetValue(method.Name, out methods))
                        {
                            m_methods.Add(method.Name, (methods = new List <MethodImplementation>()));
                        }

                        methods.Add(imp);
                    }
                }
            }
        }
コード例 #2
0
        public ServerHandler(string url, string SessionID, IRegistryCore registry) :
            base("POST", url)
        {
            m_SessionID = SessionID;
            m_registry  = registry;
            if (m_methods == null)
            {
                m_methods = new Dictionary <string, List <MethodImplementation> >();
                List <string> alreadyRunPlugins = new List <string>();
                foreach (ConnectorBase plugin in ConnectorRegistry.Connectors)
                {
                    if (alreadyRunPlugins.Contains(plugin.PluginName))
                    {
                        continue;
                    }
                    alreadyRunPlugins.Add(plugin.PluginName);
                    foreach (MethodInfo method in plugin.GetType().GetMethods())
                    {
                        CanBeReflected reflection = (CanBeReflected)Attribute.GetCustomAttribute(method, typeof(CanBeReflected));
                        if (reflection != null)
                        {
                            string methodName = reflection.RenamedMethod == "" ? method.Name : reflection.RenamedMethod;
                            List <MethodImplementation> methods = new List <MethodImplementation>();
                            MethodImplementation        imp     = new MethodImplementation()
                            {
                                Method = method, Reference = plugin, Attribute = reflection
                            };
                            if (!m_methods.TryGetValue(methodName, out methods))
                            {
                                m_methods.Add(methodName, (methods = new List <MethodImplementation>()));
                            }

                            methods.Add(imp);
                        }
                    }
                }
            }
        }
コード例 #3
0
        private bool GetMethodInfo(string method, int parameters, out MethodImplementation methodInfo)
        {
            List <MethodImplementation> methods = new List <MethodImplementation>();

            if (m_methods.TryGetValue(method, out methods))
            {
                if (methods.Count == 1)
                {
                    methodInfo = methods[0];
                    return(true);
                }
                foreach (MethodImplementation m in methods)
                {
                    if (m.Method.GetParameters().Length == parameters)
                    {
                        methodInfo = m;
                        return(true);
                    }
                }
            }
            methodInfo = null;
            return(false);
        }
コード例 #4
0
        private bool GetMethodInfo(string method, int parameters, out MethodImplementation methodInfo)
        {
            List <MethodImplementation> methods = new List <MethodImplementation>();

            if (m_methods.TryGetValue(method, out methods))
            {
                if (methods.Count == 1)
                {
                    methodInfo = methods[0];
                    return(true);
                }
                foreach (MethodImplementation m in methods)
                {
                    if (m.Method.GetParameters().Length == parameters)
                    {
                        methodInfo = m;
                        return(true);
                    }
                }
            }
            MainConsole.Instance.Warn("COULD NOT FIND METHOD: " + method);
            methodInfo = null;
            return(false);
        }