private object GetLocalService( string sAppName, string sServiceName, string sServiceInstanceName) { // Validate sAppName if (!StringUtil.IsStringInitialized(sAppName)) { ExceptionUtil.RaiseArgumentNullException( "sAppName", "sAppName parameter must be initialized", MethodInfo.GetCurrentMethod()); } // Validate sServiceName if (!StringUtil.IsStringInitialized(sServiceName)) { ExceptionUtil.RaiseArgumentNullException( "sServiceName", "sServiceName parameter must be initialized", MethodInfo.GetCurrentMethod()); } // Validate sServiceInstanceName if (!StringUtil.IsStringInitialized(sServiceInstanceName)) { ExceptionUtil.RaiseArgumentNullException( "sServiceInstanceName", "sServiceInstanceName parameter must be initialized", MethodInfo.GetCurrentMethod()); } ITisServiceProvider oServiceProvider = null; // Get service provider for the application oServiceProvider = m_oServiceProvidersCache.GetServiceProvider(sAppName); ITisServiceInfo oServiceInfo = CheckedGetServiceInfo(sAppName, sServiceName); // Create service key TisServiceKey oKey = new TisServiceKey( sServiceName, sServiceInstanceName, oServiceInfo); object oService = oServiceProvider.GetService( oKey); return(oService); }
public void ReleaseService( string applicationName, string serviceName, string serviceInstanceName = TisServicesConst.UNNAMED_INSTANCE) { ITisServiceProvider serviceProvider = m_oServiceProvidersCache.GetServiceProvider(applicationName); ITisServiceInfo serviceInfo = CheckedGetServiceInfo(applicationName, serviceName); TisServiceKey serviceKey = new TisServiceKey( serviceName, serviceInstanceName); serviceProvider.ReleaseService(serviceKey, serviceInfo); }
public TisServiceCache( ITisServiceProvider oServicesActivator, string sAppName) { m_sAppName = sAppName; // Keep the service provider m_oServicesActivator = oServicesActivator; // Create services cache m_oServicesCache = new MRUCache( false // DisposeOnRevoke ); // Subscribe to the cache "OnCacheMiss" event m_oServicesCache.OnCacheMiss += new CacheMissEvent(ServicesCache_OnCacheMiss); }
// // 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); }
private void OnCacheRevokeHandler(object oSender, CacheRevokeEventArgs oArgs) { if (oArgs.EventTiming != CacheRevokeEventArgs.Timing.Post) { return; } string sAppName = (string)oArgs.Key; ITisServiceProvider oServiceProvider = (ITisServiceProvider)oArgs.Value; if (oServiceProvider is ITisServiceLifetimeManager) { FireOnLifetimeManagerDeactivate( sAppName, (ITisServiceLifetimeManager)oServiceProvider); } }