コード例 #1
0
 private void Cache_OnCacheMiss(object sender, CacheMissEventArgs e)
 {
     // let the client log these if necessary
     Log?.Invoke(this, new WarningLogEventArgs()
     {
         Message = "Cache Miss",
         Data    = e
     });
 }
コード例 #2
0
        //
        //	Private methods
        //

        private object OnCacheMissHandler(object oSender, CacheMissEventArgs oArgs)
        {
            // Obtain application
            string sAppName = (string)oArgs.Key;

            // Use factory to return the new object
            ITisServiceProvider oServiceProvider =
                m_oFactory.CreateServiceProvider(sAppName);

            if (oServiceProvider is ITisServiceLifetimeManager)
            {
                FireOnLifetimeManagerActivate(
                    sAppName,
                    (ITisServiceLifetimeManager)oServiceProvider);
            }

            return(oServiceProvider);
        }
コード例 #3
0
        private object CreatorsCache_OnCacheMiss(
            object oSender,
            CacheMissEventArgs oArgs)
        {
            TisServiceKey oServiceKey = (TisServiceKey)oArgs.Key;

            // Obtain service info
            ITisServiceInfo oServiceInfo =
                m_oServicesHost.CheckedGetServiceInfo(m_sAppName, oServiceKey.ServiceName);

            // Validate we can host the service
            ValidateCanHostService(oServiceInfo);

            // Obtain service creator
            ITisServiceCreator oCreator =
                InstanciateCreator(oServiceInfo);

            // Set creator context
            SetCreatorContext(oCreator, oServiceKey);

            return(oCreator);
        }
コード例 #4
0
        internal override object OnCacheMissHandler(object oSender, CacheMissEventArgs oArgs)
        {
            string[] InstanceArgs = (string[])ParsePersistKey((string)oArgs.Key);

            string sAssemblyName  = InstanceArgs [0];
            string sClassImplName = InstanceArgs [1];

            ObjectHandle oWrappedObject;

            try
            {
                oWrappedObject =
                    AppDomain.CurrentDomain.CreateInstance(sAssemblyName, sClassImplName);
            }
            catch (Exception oExc)
            {
                throw new TisException(
                          oExc.InnerException,
                          "Failed to create an instance of {0} [Assembly : {1}]",
                          sClassImplName, sAssemblyName);
            }

            return(oWrappedObject.Unwrap());
        }
コード例 #5
0
        //
        //	Protected
        //

        protected object ServicesCache_OnCacheMiss(
            object oSender,
            CacheMissEventArgs oArgs)
        {
            TisServiceKey oServiceKey = (TisServiceKey)oArgs.Key;

            //Log.Write(
            //    Log.Severity.DETAILED_DEBUG,
            //    System.Reflection.MethodInfo.GetCurrentMethod(),
            //    "Activating service [{0}] in App [{1}], ServiceCache: {2}",
            //    oServiceKey,
            //    m_sAppName,
            //    GetHashCode());

            // Return the service object from real service provider
            object oObj = m_oServicesActivator.GetService(oServiceKey);

            if (m_oServicesCache.GetCached(oServiceKey) != null)
            {
                return(null);
            }

            // Fire pre-activate event
            FirePreServiceActivate(oServiceKey);

            if (!m_bDisposing)
            {
                // Keep load order
                UpdateLoadOrder(oServiceKey);
            }

            // Fire post-activate event
            FirePostServiceActivate(oServiceKey, oObj);

            return(oObj);
        }
コード例 #6
0
        internal override object OnCacheMissHandler(object oSender, CacheMissEventArgs oArgs)
        {
            string[] MethodArgs = ParsePersistKey((string)oArgs.Key);

            string sAssemblyName  = MethodArgs [0];
            string sClassImplName = MethodArgs [1];
            string sMethodName    = MethodArgs [2];

            Assembly oAssembly;

            try
            {
                oAssembly = AppDomain.CurrentDomain.Load(sAssemblyName);
            }
            catch (Exception oExc)
            {
                throw new TisException(
                          oExc.InnerException,
                          "Failed to load assembly {0}",
                          sAssemblyName);
            }

            Type oType;

            try
            {
                oType = oAssembly.GetType(sClassImplName);

                if (oType == null)
                {
                    Type [] AssemblyTypes = oAssembly.GetTypes();

                    foreach (Type oAssemblyType in AssemblyTypes)
                    {
                        if (StringUtil.CompareIgnoreCase(oAssemblyType.Name, sClassImplName))
                        {
                            oType = oAssemblyType;
                            break;
                        }
                    }
                }

                if (oType == null)
                {
                    throw new Exception("Type is not found");
                }
            }
            catch (Exception oExc)
            {
                throw new TisException(
                          oExc.InnerException,
                          "Failed to obtain type of {0}",
                          sClassImplName);
            }

            MethodInfo oMethod = oType.GetMethod(sMethodName);

            if (oMethod == null)
            {
                throw new TisException(
                          "Failed to obtain method {0}",
                          sMethodName);
            }

            return(oMethod);
        }
コード例 #7
0
 internal virtual object OnCacheMissHandler(object oSender, CacheMissEventArgs oArgs)
 {
     return(null);
 }