public LightningEnvironment(string directory, EnvironmentOpenFlags openFlags, UnixAccessMode accessMode = UnixAccessMode.Default) { if (String.IsNullOrWhiteSpace(directory)) throw new ArgumentException("Invalid directory name"); IntPtr handle = default(IntPtr); Native.Execute(lib => lib.mdb_env_create(out handle)); _shouldDispose = true; _handle = handle; _accessMode = accessMode; this.Directory = directory; _openFlags = openFlags; _mapSize = DefaultMapSize; _maxDbs = DefaultMaxDatabases; _openedDatabases = new ConcurrentDictionary<string, LightningDatabase>(); _databasesForReuse = new HashSet<uint>(); ConverterStore = new ConverterStore(); var defaultConverters = new DefaultConverters(); defaultConverters.RegisterDefault(this); }
public LightningEnvironment(string directory, EnvironmentOpenFlags openFlags) { if (String.IsNullOrWhiteSpace(directory)) throw new ArgumentException("Invalid directory name"); IntPtr handle = default(IntPtr); Native.Execute(() => Native.mdb_env_create(out handle)); _shouldDispose = true; _handle = handle; this.Directory = directory; _openFlags = openFlags; _mapSize = DefaultMapSize; _maxDbs = DefaultMaxDatabases; _openedDatabases = new ConcurrentDictionary<string, LightningDatabase>(); _databasesForReuse = new HashSet<uint>(); ConverterStore = new ConverterStore(); var defaultConverters = new DefaultConverters(); defaultConverters.RegisterDefault(this); }
/// <summary> /// Creates a new instance of LightningEnvironment. /// </summary> /// <param name="directory">Directory for storing database files.</param> /// <param name="openFlags">Database open options.</param> /// <param name="accessMode">Unix file access privelegies (optional). Only makes sense on unix operationg systems.</param> public LightningEnvironment(string directory, EnvironmentOpenFlags openFlags = EnvironmentOpenFlags.None, UnixAccessMode accessMode = UnixAccessMode.Default) { if (String.IsNullOrWhiteSpace(directory)) throw new ArgumentException("Invalid directory name"); IntPtr handle = default(IntPtr); NativeMethods.Execute(lib => lib.mdb_env_create(out handle)); _shouldDispose = true; _handle = handle; _accessMode = accessMode; this.Directory = directory; _openFlags = openFlags; if (LightningConfig.Environment.DefaultMapSize != LightningConfig.Environment.LibDefaultMapSize) this.MapSize = LightningConfig.Environment.DefaultMapSize; else _mapSize = LightningConfig.Environment.LibDefaultMapSize; if (LightningConfig.Environment.DefaultMaxDatabases != LightningConfig.Environment.LibDefaultMaxDatabases) this.MaxDatabases = LightningConfig.Environment.DefaultMaxDatabases; else _maxDbs = LightningConfig.Environment.LibDefaultMaxDatabases; _openedDatabases = new ConcurrentDictionary<string, LightningDatabase>(); _databasesForReuse = new HashSet<uint>(); ConverterStore = new ConverterStore(); var defaultConverters = new DefaultConverters(); defaultConverters.RegisterDefault(this); }