protected override bool ReleaseHandle() { _deleteInstance(this.handle); //makes GC live easier _newInstance = null; _deleteInstance = null; return true; }
public DatabaseHandle(LibraryHandle libraryHandle) : base(true) { LibraryHandle = libraryHandle; _newInstance = libraryHandle.GetUnmanagedDelegate<NewInstanceDelegate>(); _deleteInstance = libraryHandle.GetUnmanagedDelegate<DeleteInstanceDelegate>(); this.handle = _newInstance(LibraryHandle); if (IsInvalid) { throw new EjdbException("Unable to create ejdb instance"); } }
//Creates new instance of ejdb. Don't know what' is it, but it looks it should be done before opening database public unsafe DatabaseFunctions(LibraryHandle handle) { NewInstance = handle.GetUnmanagedDelegate <NewInstanceDelegate>(); DeleteInstance = handle.GetUnmanagedDelegate <DeleteInstanceDelegate>(); OpenDatabase = handle.GetUnmanagedDelegate <OpenDatabaseDelegate>(); CloseDatabase = handle.GetUnmanagedDelegate <CloseDatabaseDelegate>(); IsOpen = handle.GetUnmanagedDelegate <IsOpenDelegate>(); GetErrorCode = handle.GetUnmanagedDelegate <GetErrorCodeDelegate>(); GetMetadata = handle.GetUnmanagedDelegate <GetMetaDelegate>(); Command = handle.GetUnmanagedDelegate <CommandDelegate>(); Sync = handle.GetUnmanagedDelegate <SyncDelegate>(); }