예제 #1
0
        public TitanicMMFArray(ITitanicArrayConfig <T> config)
        {
            this.config = config;
            TSize       = GetSizeInBytes(config.DataSerializer);
            Length      = config.Capacity;
            var stream = File.Open(
                config.BackingStoreFileName,
                FileMode.Create,
                FileAccess.ReadWrite,
                FileShare.Read
                );

                        #if MONO
            //TODO try stream.SetLength(config.Capacity * TSize);
            for (long b = 0; b < config.Capacity * TSize; b++)
            {
                stream.WriteByte(0);
            }
            stream.Seek(0, SeekOrigin.Begin);
                        #endif

            mmf = MemoryMappedFile.CreateFromFile(
                stream,
                null,
                config.Capacity * TSize,
                MemoryMappedFileAccess.ReadWrite,
                HandleInheritability.None,
                false
                );
            mmva = mmf.CreateViewAccessor();
        }
예제 #2
0
 public override ITitanicArray <byte> CreateArray(ITitanicArrayConfig <byte> c = null)
 {
     return(c == null
                         ? new TitanicMMFArray <byte>()
                         : new TitanicMMFArray <byte>(c)
            );
 }
예제 #3
0
 public override ITitanicArray <double> CreateArray(ITitanicArrayConfig <double> c = null)
 {
     return(c == null
                         ? new TitanicFileArray <double>()
                         : new TitanicFileArray <double>(c)
            );
 }
예제 #4
0
        public TitanicSQLiteArray(ITitanicArrayConfig <T> config, int cacheSizeKB = 2000)
        {
            this.config = config;
            TSize       = GetSizeInBytes(config.DataSerializer);

            SQLiteConnection.CreateFile(config.BackingStoreFileName);
            sqConnection = new SQLiteConnection(
                "Data Source=" + config.BackingStoreFileName
                + ";Version=3"
                + ";Synchronous=OFF"
                + ";Journal Mode=OFF"
                + ";Cache Size=-" + cacheSizeKB
                );
            sqConnection.Open();

            string sql = "CREATE TABLE IF NOT EXISTS array ("
                         + "i INTEGER PRIMARY KEY ASC,"
                         + "v BLOB"
                         + ");"
            ;

            using (SQLiteCommand command = new SQLiteCommand(sql, sqConnection))
            {
                command.ExecuteNonQuery();
            }
        }
예제 #5
0
 public TitanicFileArray(ITitanicArrayConfig <T> config, int cacheSize = 2000)
 {
     this.config = config;
     store       = File.Open(config.BackingStoreFileName, FileMode.Create, FileAccess.ReadWrite, FileShare.Read);
     itemSize    = GetSizeInBytes(config.DataSerializer);
     buffer      = new byte[itemSize];
     InitializeFile();
     cache = new LRUCache <long, T>(cacheSize);
 }
예제 #6
0
        public TitanicLiteDBArray(ITitanicArrayConfig <T> config, int cacheSizePages = 5000)
        {
            this.config = config;
            TSize       = GetSizeInBytes(config.DataSerializer);

            db = new LiteDatabase(
                "Filename=" + config.BackingStoreFileName
                + ";Journal=false"
                + ";Cache Size=" + cacheSizePages
                );
            collection = db.GetCollection("array");
        }
예제 #7
0
        public TitanicIMArray(ITitanicArrayConfig <T> config)
        {
            this.config   = config;
            TSize         = GetSizeInBytes(config.DataSerializer);
            pixelsPerItem = IntCeil(TSize, bytesPerPixel);
            long maxPixels = config.Capacity * pixelsPerItem;

            FindDimensions(maxPixels, out Width, out Height);

            MagickNET.SetTempDirectory(Path.GetDirectoryName(config.BackingStoreFileName));
            im     = new MagickImage(MagickColor.FromRgba(0, 0, 0, 0), Width, Height);
            pixels = im.GetPixels();
        }
예제 #8
0
 void CreateArray(ITitanicArrayConfig <long> config)
 {
     //return new TitanicFileArray<long>(config);
     data = new TitanicMMFArray <long>(config);
 }
예제 #9
0
 public abstract ITitanicArray <T> CreateArray(ITitanicArrayConfig <T> c = null);
 public TitanicRaptorDBArray(ITitanicArrayConfig <T> config)
 {
     this.config = config;
     TSize       = GetSizeInBytes(config.DataSerializer);
     rdb         = RaptorDB <long> .Open(config.BackingStoreFileName, false);
 }