예제 #1
0
        /// <summary>
        /// Initializes the storage provider.
        /// </summary>
        /// <param name="name">The name of this provider instance.</param>
        /// <param name="providerRuntime">A Orleans runtime object managing all storage providers.</param>
        /// <param name="config">Configuration info for this provider instance.</param>
        /// <returns>Completion promise for this operation.</returns>
        public virtual Task Init(string name, IProviderRuntime providerRuntime, IProviderConfiguration config)
        {
            // ASSERT Log != null
            Log = providerRuntime.GetLogger(this.GetType().FullName);

            Log.Info("Init {0}", name);

            Name             = name;
            ConnectionString = config.GetProperty("ConnectionString");
            string mapName          = config.GetProperty("MapName");
            string shardCredentials = config.GetProperty("ShardCredentials");
            string factoryTypeName  = config.GetProperty("StateMapFactoryType");

            _ignore = config.GetPropertyBool("Ignore", false);

            if (_ignore)
            {
                Log.Info("!!!Actual SQL persistance will be ignored!!!");
            }

            // Look for a specified StateMapFactoryType or the first type implementing IGrainStateMapFactory
            Type factoryType = null;

            foreach (var asm in AppDomain.CurrentDomain.GetAssemblies())
            {
                foreach (var type in asm.GetTypes())
                {
                    if (type != null &&
                        (!string.IsNullOrEmpty(factoryTypeName) && type.FullName == factoryTypeName ||
                         string.IsNullOrEmpty(factoryTypeName) &&
                         null != type.GetInterface(typeof(IGrainStateMapFactory).FullName)))
                    {
                        factoryType = type;
                        break;
                    }
                }
            }
            if (null == factoryType)
            {
                throw new ArgumentException(string.Format("Could not locate a state map factory type {0}", factoryTypeName));
            }

            var factory       = (IGrainStateMapFactory)Activator.CreateInstance(factoryType);
            var grainStateMap = factory.CreateGrainStateMap();

            _dataManager = new SqlDataManager(providerRuntime.GetLogger("SqlDataManager"), grainStateMap, ConnectionString, shardCredentials, mapName);
            return(TaskDone.Done);
        }
예제 #2
0
        /// <summary>
        /// Initializes the storage provider.
        /// </summary>
        /// <param name="name">The name of this provider instance.</param>
        /// <param name="providerRuntime">A Orleans runtime object managing all storage providers.</param>
        /// <param name="config">Configuration info for this provider instance.</param>
        /// <returns>Completion promise for this operation.</returns>
        public virtual Task Init(string name, IProviderRuntime providerRuntime, IProviderConfiguration config)
        {
            // ASSERT Log != null
            Log = providerRuntime.GetLogger(this.GetType().FullName);
            
            Log.Info("Init {0}", name);

            Name = name;
            ConnectionString = config.GetProperty("ConnectionString"); 
            string mapName = config.GetProperty("MapName");
            string shardCredentials = config.GetProperty("ShardCredentials");
            string factoryTypeName = config.GetProperty("StateMapFactoryType");
            _ignore = config.GetPropertyBool("Ignore", false);

            if (_ignore)
                Log.Info("!!!Actual SQL persistance will be ignored!!!");

            // Look for a specified StateMapFactoryType or the first type implementing IGrainStateMapFactory
            Type factoryType = null;
            foreach (var asm in AppDomain.CurrentDomain.GetAssemblies())
            {
                foreach (var type in asm.GetTypes())
                {
                    if (type != null &&
                        (!string.IsNullOrEmpty(factoryTypeName) && type.FullName == factoryTypeName ||
                         string.IsNullOrEmpty(factoryTypeName) &&
                         null != type.GetInterface(typeof (IGrainStateMapFactory).FullName)))
                    {
                        factoryType = type;
                        break;
                    }
                }
            }
            if (null == factoryType)
                throw new ArgumentException(string.Format("Could not locate a state map factory type {0}", factoryTypeName));

            var factory = (IGrainStateMapFactory)Activator.CreateInstance(factoryType);
            var grainStateMap = factory.CreateGrainStateMap();
            _dataManager = new SqlDataManager(providerRuntime.GetLogger("SqlDataManager"), grainStateMap, ConnectionString, shardCredentials, mapName);
            return TaskDone.Done;
        }