示例#1
0
        public static ResourceFactoryRegistry <T> GetResourceFactoryRegistry <T>(this IGrainContext context, bool createIfNotExists = false)
        {
            ResourceFactoryRegistry <T> result = context.GetComponent <ResourceFactoryRegistry <T> >();

            if (createIfNotExists && result == null)
            {
                result = new ResourceFactoryRegistry <T>();
                context.SetComponent(result);
            }

            return(result);
        }
        public static ResourceFactoryRegistry <T> GetResourceFactoryRegistry <T>(this IGrainActivationContext context, bool createIfNotExists = false)
        {
            string resourceFactoryRegistryName = ResourceFactoryRegistryName <T>();
            ResourceFactoryRegistry <T> result = (context.Items.TryGetValue(resourceFactoryRegistryName, out object resourceFactoryRegistryObj))
                ? (ResourceFactoryRegistry <T>)resourceFactoryRegistryObj
                : default(ResourceFactoryRegistry <T>);

            if (createIfNotExists && result == null)
            {
                context.Items[resourceFactoryRegistryName] = result ?? (result = new ResourceFactoryRegistry <T>());
            }
            return(result);
        }
 public TransactionManagerExtension(IGrainActivationContext context)
 {
     this.factories = context.GetResourceFactoryRegistry <ITransactionManager>();
     this.managers  = new Dictionary <string, ITransactionManager>();
 }
        public static void RegisterResourceFactory <T>(this IGrainActivationContext context, string name, Func <T> factory)
        {
            ResourceFactoryRegistry <T> registry = context.GetResourceFactoryRegistry <T>(true);

            registry[name] = factory;
        }
 public TransactionalResourceExtension(IGrainContextAccessor contextAccessor)
 {
     this.factories = contextAccessor.GrainContext.GetResourceFactoryRegistry <ITransactionalResource>();
     this.resources = new Dictionary <string, ITransactionalResource>();
 }