Ejemplo n.º 1
0
        /// <summary>
        /// Activated plugin and register.
        /// If you add plug-in type is not registered in ULIB - you need to add plug-in processor (RegisterPluginHandler) before adding the plug-in.
        /// Registered in ULIB type of plugin is:
        /// - "UPlugin"
        /// - "USerialize"
        /// - "ULanguage";
        ///
        /// </summary>
        /// <param name="plugin"></param>
        /// <exception cref="PluginManagerException"></exception>
        public static void AddPlugin(IUlibPlugin plugin)
        {
            plugin.Activate();
            switch (plugin.PluginType)
            {
            case UPluginType.Plugin:
            {
                break;
            }

            case UPluginType.Serialize:
            {
                Serializer.PluginHandler(plugin);
                break;
            }

            case UPluginType.Language:
            {
                LanguageManager.PluginHandler(plugin);
                break;
            }

            case UPluginType.Gateway:
            {
                Gateway.PluginHandler(plugin);
                break;
            }

            case UPluginType.File:
            {
                FileManager.PluginHandler(plugin);
                break;
            }

            case UPluginType.Quality:
            {
                QualityManager.PluginHandler(plugin);
                break;
            }

            default:
            {
                if (Handlers.ContainsKey(plugin.PluginType))
                {
                    Handlers[plugin.PluginType](plugin);
                }
                else
                {
                    throw new PluginManagerException(string.Format("Not find PluginHandler for type '{0}'. \nPlease use PluginManager.RegisterPluginHandler before. ", plugin.PluginType));
                }
                break;
            }
            }

            if (!Plugins.Contains(plugin))
            {
                Plugins.Add(plugin);
            }
            plugin.Added();
        }
Ejemplo n.º 2
0
        /*/// <summary>
         * ///
         * /// </summary>
         * /// <param name="targetName"></param>
         * /// <param name="newTarget"></param>
         * public static void AddTarget(string targetName, object newTarget)
         * {
         *      if (!Targets.ContainsKey(targetName))
         *              Targets.Add(targetName, newTarget);
         *      else
         *      {
         *              RemoveMembers(targetName);
         *              Targets[targetName] = newTarget;
         *      }
         *      FillMembers(targetName, newTarget);
         * }
         *
         * /// <summary>
         * ///
         * /// </summary>
         * /// <param name="targetName"></param>
         * public static void RemoveTarget(string targetName)
         * {
         *      if (Targets.ContainsKey(targetName))
         *      {
         *              RemoveMembers(targetName);
         *              Targets.Remove(targetName);
         *      }
         *
         * }*/

        /*private static void FillMembers(string targetName, object target)
         * {
         *      var tp = target.GetType();
         *      var members = tp.GetMembers(BindingFlags.DeclaredOnly|BindingFlags.GetField|BindingFlags.GetProperty);
         *      /*foreach (var member in members.Where(
         *                              member =>member is FieldInfo || (member is PropertyInfo && ((PropertyInfo) member).CanWrite && ((PropertyInfo) member).CanRead)))
         *              Members.Add(targetName + "." + member.Name, member);*/
        /*foreach (var member in members)
         *  if(member is FieldInfo || (member is PropertyInfo && ((PropertyInfo)member).CanWrite && ((PropertyInfo)member).CanRead))
         * Members.Add(targetName+"."+member.Name,member);
         * }
         *
         * private static void RemoveMembers(string targetName)
         * {
         *  var removedMembers = (from member in Members
         *                                            where member.Key == targetName + "." + member.Value.Name
         *                                            select targetName + "." + member.Value.Name).ToList();
         *  lock (Members)
         *          foreach (var removedMember in removedMembers)
         *                  Members.Remove(removedMember);
         * }*/

        #endregion

        #region Plugins

        /// <summary>
        ///
        /// </summary>
        /// <param name="iPlugin"></param>
        /// <returns></returns>
        internal static bool PluginHandler(IUlibPlugin iPlugin)
        {
            //ULog.Log("PluginHandler");
            if (iPlugin != null)
            {
                var ioface = (IQualityPlugin)iPlugin;


                /*var gatewayKey = ioface.Key;
                 * var gatewayObject = ioface.Gateway;
                 * if (gatewayObject != null)
                 * {
                 *  gatewayObject.Host = Host;
                 *  gatewayObject.Path = Path;
                 *  gatewayObject.File = File;
                 *  //ULog.Log("PluginHandler " + gatewayKey);
                 *  if (!_gateways.ContainsKey(gatewayKey))
                 *      _gateways.Add(gatewayKey, gatewayObject);
                 *  else
                 *      throw new GatewayException(string.Format("A duplicate key : {0}.", gatewayKey));
                 * }
                 * else
                 *  throw new GatewayException(string.Format("Gateway is null in plugin."));*/
            }
            return(true);
        }
Ejemplo n.º 3
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="iPlugin"></param>
        /// <returns></returns>
        internal static bool PluginHandler(IUlibPlugin iPlugin)
        {
            //ULog.Log("PluginHandler");
            if (iPlugin != null)
            {
                var ioface = (IGatewayPlugin)iPlugin;

                var gatewayKey    = ioface.Key;
                var gatewayObject = ioface.Gateway;
                if (gatewayObject != null)
                {
                    gatewayObject.Host = Host + Path;
                    gatewayObject.File = File;
                    //ULog.Log("PluginHandler " + gatewayKey);
                    if (!Gateways.ContainsKey(gatewayKey))
                    {
                        Gateways.Add(gatewayKey, gatewayObject);
                    }
                    else
                    {
                        throw new GatewayException(string.Format("A duplicate key : {0}.", gatewayKey));
                    }
                }
                else
                {
                    throw new GatewayException(string.Format("Gateway is null in plugin."));
                }
            }
            return(true);
        }
Ejemplo n.º 4
0
 /// <summary>
 ///
 /// </summary>
 /// <param name="plugin"></param>
 /// <returns></returns>
 public static bool PluginExists(IUlibPlugin plugin)
 {
     if (Plugins.Contains(plugin))
     {
         return(true);
     }
     foreach (var ulibPlugin in Plugins)
     {
         ULog.Log(ulibPlugin.PluginType);
     }
     return(false);
 }
Ejemplo n.º 5
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="plugin"></param>
        /// <returns></returns>
        internal static bool PluginRemove(IUlibPlugin plugin)
        {
            var tp     = plugin.GetType();
            var ioface = tp.GetInterface("IQualityPlugin");

            if (ioface != null)
            {
                /*var gatewayKey = tp.GetProperty("Key");
                 * if (_gateways.ContainsKey(gatewayKey.ToString()))
                 *  _gateways.Remove(gatewayKey.ToString());*/
            }
            return(true);
        }
Ejemplo n.º 6
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="plugin"></param>
        /// <returns></returns>
        internal static bool PluginHandler(IUlibPlugin plugin)
        {
            var iPlugin = (ISerializePlugin)plugin;
            var tp      = iPlugin.GetType();
            var ioface  = tp.GetInterface("IObjectSerializer");

            if (ioface != null)
            {
                var externalPlugin = (IObjectSerializer)iPlugin;

                var encodeInfo     = tp.GetMethod("ObjectEncode");
                var encodeDelegate =
                    (ObjectEncoder)
                    Delegate.CreateDelegate(typeof(ObjectEncoder), iPlugin, encodeInfo);

                TypeEncoders.Add(externalPlugin.ObjectType, encodeDelegate);

                var decodeInfo     = tp.GetMethod("ObjectDecode");
                var decodeDelegate =
                    (ObjectDecoder)
                    Delegate.CreateDelegate(typeof(ObjectDecoder), iPlugin, decodeInfo);

                TypeDecoders.Add(externalPlugin.ObjectCode, decodeDelegate);
            }
            var icface = tp.GetInterface("IComponentSerializer");

            if (icface != null)
            {
                var externalPlugin = (IComponentSerializer)iPlugin;


                var encodeInfo     = tp.GetMethod("ComponentEncode");
                var encodeDelegate =
                    (ComponentEncoder)
                    Delegate.CreateDelegate(typeof(ComponentEncoder), iPlugin, encodeInfo);

                ComponentEncoders.Add(externalPlugin.ClassName, encodeDelegate);

                var decodeInfo     = tp.GetMethod("ComponentDecode");
                var decodeDelegate =
                    (ComponentDecoder)
                    Delegate.CreateDelegate(typeof(ComponentDecoder), iPlugin, decodeInfo);

                ComponentDecoders.Add(externalPlugin.ClassName, decodeDelegate);
            }
            return(true);
        }
Ejemplo n.º 7
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="plugin"></param>
        /// <exception cref="PluginManagerException"></exception>
        public static void RemovePlugin(IUlibPlugin plugin)
        {
            if (Plugins.Contains(plugin))
            {
                plugin.Remove();
                switch (plugin.PluginType)
                {
                case UPluginType.Plugin:
                {
                    break;
                }

                case UPluginType.Serialize:
                {
                    Serializer.PluginRemove(plugin);
                    break;
                }

                case UPluginType.Language:
                {
                    LanguageManager.PluginRemove(plugin);
                    break;
                }

                case UPluginType.Gateway:
                {
                    Gateway.PluginRemove(plugin);
                    break;
                }

                default:
                {
                    if (Removers.ContainsKey(plugin.PluginType))
                    {
                        Removers[plugin.PluginType](plugin);
                    }
                    else
                    {
                        throw new PluginManagerException(string.Format("Not find Removers for type .{0}. \nPlease use PluginManager.RegisterPluginHandler before. ", plugin.PluginType));
                    }
                    break;
                }
                }
            }
        }
Ejemplo n.º 8
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="plugin"></param>
        /// <returns></returns>
        internal static bool PluginRemove(IUlibPlugin plugin)
        {
            var tp     = plugin.GetType();
            var ioface = tp.GetInterface("IObjectSerializer");

            if (ioface != null)
            {
                var externalPlugin = (IObjectSerializer)plugin;

                if (TypeEncoders.ContainsKey(externalPlugin.ObjectType))
                {
                    lock (TypeEncoders)
                        TypeEncoders.Remove(externalPlugin.ObjectType);
                }

                if (TypeDecoders.ContainsKey(externalPlugin.ObjectCode))
                {
                    lock (TypeDecoders)
                        TypeDecoders.Remove(externalPlugin.ObjectCode);
                }
            }
            var icface = tp.GetInterface("IComponentSerializer");

            if (icface != null)
            {
                var externalPlugin = (IComponentSerializer)plugin;

                if (ComponentEncoders.ContainsKey(externalPlugin.ClassName))
                {
                    lock (ComponentEncoders)
                        ComponentEncoders.Remove(externalPlugin.ClassName);
                }

                if (ComponentDecoders.ContainsKey(externalPlugin.ClassName))
                {
                    lock (ComponentDecoders)
                        ComponentDecoders.Remove(externalPlugin.ClassName);
                }
            }
            return(true);
        }
Ejemplo n.º 9
0
 internal static bool PluginRemove(IUlibPlugin iPlugin)
 {
     return(true);
 }
Ejemplo n.º 10
0
 /// <summary>
 ///
 /// </summary>
 /// <param name="iPlugin"></param>
 /// <returns></returns>
 internal static bool PluginHandler(IUlibPlugin iPlugin)
 {
     return(true);
 }