public unsafe QueryFunctions(LibraryHandle handle) { Create = handle.GetUnmanagedDelegate <CreateQueryDelegate>(); Delete = handle.GetUnmanagedDelegate <DeleteQueryDelegate>(); Execute = handle.GetUnmanagedDelegate <ExecuteQueryDelegate>(); DeleteCursor = handle.GetUnmanagedDelegate <DeleteCursorDelegate>(); SetHints = handle.GetUnmanagedDelegate <SetHintsDelegate>(); AddOr = handle.GetUnmanagedDelegate <AddOrDelegate>(); CursorResult = handle.GetUnmanagedDelegate <CursorResultDelegate>(); NewBuffer = handle.GetUnmanagedDelegate <QueryFunctions.NewBufferDelegate>(); DeleteBuffer = handle.GetUnmanagedDelegate <QueryFunctions.DeleteBufferDelegate>(); BufferSize = handle.GetUnmanagedDelegate <GetSizeDelegate>(); BufferToString = handle.GetUnmanagedDelegate <ToStringDelegate>(); }
public QueryHandle(Collection collection, byte[] queryAsBson) : base(true) { Collection = collection; var database = collection.Database; var libraryHandle = database.Library.LibraryHandle; var createQuery = libraryHandle.GetUnmanagedDelegate<CreateQueryDelegate>(); handle = createQuery(database.DatabaseHandle, queryAsBson); if (IsInvalid) { EjdbException.FromDatabase(database, "Failed to create query"); } _delete = libraryHandle.GetUnmanagedDelegate<DeleteQueryDelegate>(); _execute = libraryHandle.GetUnmanagedDelegate<ExecuteQueryDelegate>(); _deleteCursor = libraryHandle.GetUnmanagedDelegate<DeleteCursorDelegate>(); _setHints = libraryHandle.GetUnmanagedDelegate<SetHintsDelegate>(); _addOr = libraryHandle.GetUnmanagedDelegate<AddOrDelegate>(); }
protected override bool ReleaseHandle() { _delete(handle); _execute = null; _setHints = null; _deleteCursor = null; _addOr = null; return true; }