1/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- 2 * vim: sw=2 ts=2 sts=2 expandtab 3 * This Source Code Form is subject to the terms of the Mozilla Public 4 * License, v. 2.0. If a copy of the MPL was not distributed with this 5 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ 6 7#include "mozIStorageBaseStatement.idl" 8 9/** 10 * An asynchronous SQL statement. This differs from mozIStorageStatement by 11 * only being usable for asynchronous execution. (mozIStorageStatement can 12 * be used for both synchronous and asynchronous purposes.) This specialization 13 * for asynchronous operation allows us to avoid needing to acquire 14 * synchronization primitives also used by the asynchronous execution thread. 15 * In contrast, mozIStorageStatement may need to acquire the primitives and 16 * consequently can cause the main thread to lock for extended intervals while 17 * the asynchronous thread performs some long-running operation. 18 */ 19[scriptable, uuid(52e49370-3b2e-4a27-a3fc-79e20ad4056b)] 20interface mozIStorageAsyncStatement : mozIStorageBaseStatement { 21 /* 22 * 'params' provides a magic JS helper that lets you assign parameters by 23 * name. Unlike the helper on mozIStorageStatement, you cannot enumerate 24 * in order to find out what parameters are legal. 25 * 26 * This does not work for BLOBs. You must use an explicit binding API for 27 * that. 28 * 29 * example: 30 * stmt.params.foo = 1; 31 * stmt.params["bar"] = 2; 32 * let argName = "baz"; 33 * stmt.params[argName] = 3; 34 * 35 * readonly attribute nsIMagic params; 36 */ 37}; 38