Ejemplo n.º 1
0
        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>();
        }
Ejemplo n.º 2
0
        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>();
        }
Ejemplo n.º 3
0
        protected override bool ReleaseHandle()
        {
            _delete(handle);

            _execute = null;
            _setHints = null;
            _deleteCursor = null;
            _addOr = null;

            return true;
        }