//private readonly IRepositoryBulkReader BulkReader;
		//private readonly Lazy<World>[] LazyWorlds = new Lazy<World>[512];

		public Context(IObjectFactory factory, IDatabaseQueryManager manager)
		{
			var scope = factory.CreateScope(null);
			scope.RegisterInterfaces(manager.StartQuery(false));
			WorldRepository = scope.Resolve<IPersistableRepository<World>>();
			FortuneRepository = scope.Resolve<IQueryableRepository<Fortune>>();
			//BulkReader = scope.BulkRead(ChunkedMemoryStream.Static());
		}
示例#2
0
 public ScopePool(
     IObjectFactory factory,
     IDatabaseQueryManager queries,
     IExtensibilityProvider extensibilityProvider)
 {
     this.Factory = factory;
     this.Queries = queries;
     if (!int.TryParse(ConfigurationManager.AppSettings["Processing.PoolSize"], out Size))
         Size = 20;
     if (!Enum.TryParse<PoolMode>(ConfigurationManager.AppSettings["Processing.PoolMode"], out Mode))
     {
         //TODO: Mono has issues with BlockingCollection. use None as default
         int p = (int)Environment.OSVersion.Platform;
         if (p == 4 || p == 6 || p == 128)
             Mode = PoolMode.None;
         else
             Mode = PoolMode.IfAvailable;
     }
     var commandTypes = extensibilityProvider.FindPlugins<IServerCommand>();
     Factory.RegisterTypes(commandTypes, InstanceScope.Context);
     if (Mode != PoolMode.None)
     {
         if (Size < 1) Size = 1;
         for (int i = 0; i < Size; i++)
             Scopes.Add(SetupReadonlyScope());
     }
 }
示例#3
0
 public EmployeeController([FromServices] ProTickDatabaseContext db, [FromServices] IResourceDTOConverter converter, [FromServices] IDatabaseQueryManager dbm, [FromServices] IHasher hasher)
 {
     this.db        = db;
     this.converter = converter;
     this.dbm       = dbm;
     this.hasher    = hasher;
 }
示例#4
0
 public UnitOfWork(IObjectFactory factory)
 {
     Scope         = factory.CreateInnerFactory();
     Manager       = factory.Resolve <IDatabaseQueryManager>();
     DatabaseQuery = Manager.BeginTransaction();
     Scope.RegisterInstance(DatabaseQuery);
     Context = Scope.Resolve <IDataContext>();
 }
示例#5
0
 public AddressController([FromServices] ProTickDatabaseContext db,
                          [FromServices] IResourceDTOConverter converter,
                          [FromServices] IDatabaseQueryManager dbm)
 {
     this.db        = db;
     this.converter = converter;
     this.dbm       = dbm;
 }
示例#6
0
        //private readonly IRepositoryBulkReader BulkReader;
        //private readonly Lazy<World>[] LazyWorlds = new Lazy<World>[512];

        public Context(IObjectFactory factory, IDatabaseQueryManager manager)
        {
            var scope = factory.CreateScope(null);

            scope.RegisterInterfaces(manager.StartQuery(false));
            WorldRepository   = scope.Resolve <IPersistableRepository <World> >();
            FortuneRepository = scope.Resolve <IQueryableRepository <Fortune> >();
            //BulkReader = scope.BulkRead(ChunkedMemoryStream.Static());
        }
示例#7
0
        /// <summary>
        /// Rollback started transaction.
        /// </summary>
        /// <param name="manager">query manager</param>
        /// <param name="query">ADO.NET driver</param>
        public static void Rollback(this IDatabaseQueryManager manager, IDatabaseQuery query)
        {
            Contract.Requires(manager != null);
            Contract.Requires(query != null);

            if (!query.InTransaction)
            {
                throw new ArgumentException("Only queries in transaction can be rollbacked");
            }
            manager.EndQuery(query, false);
        }
 public AuthenticationController(IConfiguration conf,
                                 [FromServices] ProTickDatabaseContext db,
                                 [FromServices] IResourceDTOConverter converter,
                                 [FromServices] IDatabaseQueryManager dbm,
                                 [FromServices] IHasher hasher)
 {
     this.configuration = conf;
     this.db            = db;
     this.converter     = converter;
     this.dbm           = dbm;
     this.hasher        = hasher;
 }
示例#9
0
        public ProcessingEngine(
            IObjectFactory objectFactory,
            IDatabaseQueryManager transactionManager,
            IPermissionManager permissions,
            ILogFactory logFactory,
            IExtensibilityProvider extensibilityProvider)
        {
            Contract.Requires(objectFactory != null);
            Contract.Requires(transactionManager != null);
            Contract.Requires(permissions != null);
            Contract.Requires(logFactory != null);
            Contract.Requires(extensibilityProvider != null);

            this.ObjectFactory      = objectFactory.CreateInnerFactory();
            this.TransactionManager = transactionManager;
            this.Permissions        = permissions;
            this.Logger             = logFactory.Create("Processing engine");
            var commandTypes = extensibilityProvider.FindPlugins <IServerCommand>();

            ObjectFactory.RegisterTypes(commandTypes, InstanceScope.Transient);
            foreach (var ct in commandTypes)
            {
                ActualCommands[ct] = ct;
            }
            foreach (var ct in commandTypes)
            {
                var attr = ct.GetCustomAttributes(typeof(ExportMetadataAttribute), false) as ExportMetadataAttribute[];
                if (attr != null)
                {
                    var insteadOf = attr.FirstOrDefault(it => it.Name == Metadata.InsteadOf);
                    if (insteadOf != null)
                    {
                        var type = insteadOf.Value as Type;
                        if (commandTypes.All(it => it != type))
                        {
                            throw new FrameworkException("Can't find target {0} for InsteadOf attribute declared on {1}".With(type, ct));
                        }
                        ActualCommands[type] = ct;
                    }
                }
            }
        }
示例#10
0
 public ScopePool(
     IObjectFactory factory,
     IDatabaseQueryManager queries,
     IExtensibilityProvider extensibilityProvider,
     ILogFactory logFactory)
 {
     this.Factory = factory;
     this.Queries = queries;
     if (!int.TryParse(ConfigurationManager.AppSettings["Processing.PoolSize"], out Size))
         Size = 20;
     if (!Enum.TryParse<PoolMode>(ConfigurationManager.AppSettings["Processing.PoolMode"], out Mode))
         Mode = PoolMode.IfAvailable;
     var commandTypes = extensibilityProvider.FindPlugins<IServerCommand>();
     Factory.RegisterTypes(commandTypes, InstanceScope.Context);
     if (Mode != PoolMode.None)
     {
         if (Size < 1) Size = 1;
         for (int i = 0; i < Size; i++)
             Scopes.Add(SetupReadonlyScope());
     }
     Logger = logFactory.Create("Scope pool");
 }
示例#11
0
        public ScopePool(
            IObjectFactory factory,
            IDatabaseQueryManager queries,
            IExtensibilityProvider extensibilityProvider)
        {
            this.Factory = factory;
            this.Queries = queries;
            if (!int.TryParse(ConfigurationManager.AppSettings["Processing.PoolSize"], out Size))
            {
                Size = 20;
            }
            if (!Enum.TryParse <PoolMode>(ConfigurationManager.AppSettings["Processing.PoolMode"], out Mode))
            {
                //TODO: Mono has issues with BlockingCollection. use None as default
                int p = (int)Environment.OSVersion.Platform;
                if (p == 4 || p == 6 || p == 128)
                {
                    Mode = PoolMode.None;
                }
                else
                {
                    Mode = PoolMode.IfAvailable;
                }
            }
            var commandTypes = extensibilityProvider.FindPlugins <IServerCommand>();

            Factory.RegisterTypes(commandTypes, InstanceScope.Context);
            if (Mode != PoolMode.None)
            {
                if (Size < 1)
                {
                    Size = 1;
                }
                for (int i = 0; i < Size; i++)
                {
                    Scopes.Add(SetupReadonlyScope());
                }
            }
        }
示例#12
0
        /// <summary>
        /// Start database query without a transaction.
        /// </summary>
        /// <param name="manager">query manager</param>
        /// <returns>ADO.NET driver</returns>
        public static IDatabaseQuery CreateQuery(this IDatabaseQueryManager manager)
        {
            Contract.Requires(manager != null);

            return(manager.StartQuery(false));
        }
示例#13
0
        /// <summary>
        /// Start database query with a transaction.
        /// </summary>
        /// <param name="manager">query manager</param>
        /// <returns>ADO.NET driver</returns>
        public static IDatabaseQuery BeginTransaction(this IDatabaseQueryManager manager)
        {
            Contract.Requires(manager != null);

            return(manager.StartQuery(true));
        }
 public RestService(IObjectFactory factory, IDatabaseQueryManager queryManager)
 {
     this.Context = new ThreadLocal <Context>(() => new Context(factory, queryManager));
 }
		public RestService(IObjectFactory factory, IDatabaseQueryManager queryManager)
		{
			this.Context = new ThreadLocal<Context>(() => new Context(factory, queryManager));
		}
示例#16
0
 public ResourceDTOConverter([FromServices] IDatabaseQueryManager dbm)
 {
     this.dbm = dbm;
 }