storage/public/mozIStorageAsyncStatement.idl
author Ehsan Akhgari <ehsan@mozilla.com>
Wed, 12 Dec 2012 00:05:49 -0500
changeset 115629 553a3bcf1fe771c09cdfd1640e8059c312622b4a
parent 94475 f4157e8c410708d76703f19e4dfb61859bfe32d8
child 172361 8799ec066a38422333507f0be2ab6c6595593f99
permissions -rw-r--r--
Backed out 7 changesets (bug 769288) because of leaks Backed out changeset b2fb475b6e4e (bug 769288) Backed out changeset 912331d0c2fd (bug 769288) Backed out changeset 6d8d78bd56a9 (bug 769288) Backed out changeset e75cd1e1fca3 (bug 769288) Backed out changeset e10c24f10bd2 (bug 769288) Backed out changeset 7b0fdedb4fa9 (bug 769288) Backed out changeset 42b468942a84 (bug 769288)

/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
 * vim: sw=2 ts=2 sts=2 expandtab
 * This Source Code Form is subject to the terms of the Mozilla Public
 * License, v. 2.0. If a copy of the MPL was not distributed with this
 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */

#include "mozIStorageBaseStatement.idl"

/**
 * An asynchronous SQL statement.  This differs from mozIStorageStatement by
 * only being usable for asynchronous execution.  (mozIStorageStatement can
 * be used for both synchronous and asynchronous purposes.)  This specialization
 * for asynchronous operation allows us to avoid needing to acquire
 * synchronization primitives also used by the asynchronous execution thread.
 * In contrast, mozIStorageStatement may need to acquire the primitives and
 * consequently can cause the main thread to lock for extended intervals while
 * the asynchronous thread performs some long-running operation.
 */
[scriptable, uuid(2400f64d-2cb3-49a9-b01e-f03cacb8aa6e)]
interface mozIStorageAsyncStatement : mozIStorageBaseStatement {
  /*
   * 'params' provides a magic JS helper that lets you assign parameters by
   * name.  Unlike the helper on mozIStorageStatement, you cannot enumerate
   * in order to find out what parameters are legal.
   *
   * This does not work for BLOBs.  You must use an explicit binding API for
   * that.
   *
   * example:
   *  stmt.params.foo = 1;
   *  stmt.params["bar"] = 2;
   *  let argName = "baz";
   *  stmt.params[argName] = 3;
   *
   * readonly attribute nsIMagic params;
   */
};