Interface mozIStorageServiceType

The mozIStorageService interface is intended to be implemented by a service that can create storage connections (mozIStorageConnection) to either a well-known profile database or to a specific database file.

This is the only way to open a database connection.

Note

The first reference to mozIStorageService must be made on the main thread.

Hierarchy

Methods

  • Increases the reference count for this interface. The associated instance will not be deleted unless the reference count is returned to zero.

    Returns

    The resulting reference count.

    Returns number

  • Parameters

    • aIID: object
    • Optional aInstancePtr: object

    Returns any

  • A run time mechanism for interface discovery.

    Returns

    NS_OK if the interface is supported by the associated instance, NS_NOINTERFACE if it is not.

    aInstancePtr must not be null.

    Parameters

    • aIID: object

      [in] A requested interface IID

    • aInstancePtr: object

      [out] A pointer to an interface pointer to receive the result.

    Returns void

  • Decreases the reference count for this interface. Generally, if the reference count returns to zero, the associated instance is deleted.

    Returns

    The resulting reference count.

    Returns number

  • Utilities

    Copies the specified database file to the specified parent directory with the specified file name. If the parent directory is not specified, it places the backup in the same directory as the current file. This function ensures that the file being created is unique.

    Returns

    The nsIFile representing the backup file.

    Parameters

    • aDBFile: nsIFile

      The database file that will be backed up.

    • aBackupFileName: string

      The name of the new backup file to create.

    • aBackupParentDirectory: nsIFile

    Returns nsIFile

  • Open an asynchronous connection to a database.

    This method MUST be called from the main thread. The connection object returned by this function is not threadsafe. You MUST use it only from the main thread.

    If you have more than one connection to a file, you MUST use the EXACT SAME NAME for the file each time, including case. The sqlite code uses a simple string compare to see if there is already a connection. Opening a connection to "Foo.sqlite" and "foo.sqlite" will CORRUPT YOUR DATABASE.

    Throws

    NS_ERROR_INVALID_ARG if |aDatabaseStore| is neither a file nor one of the special strings understood by this method, or if one of the options passed through |aOptions| does not have the right type.

    Throws

    NS_ERROR_NOT_SAME_THREAD if called from a thread other than the main thread.

    Parameters

    • aDatabaseStore: nsIVariant

      Either a nsIFile representing the file that contains the database or a special string to open a special database. The special string may be:

      • "memory" to open an in-memory database.
    • aOpenFlags: number
    • aConnectionFlags: number
    • aCallback: mozIStorageCompletionCallback

      A callback that will receive the result of the operation. In case of error, it may receive as status:

      • NS_ERROR_OUT_OF_MEMORY if allocating a new storage object fails.
      • NS_ERROR_FILE_CORRUPTED if the database file is corrupted. In case of success, it receives as argument the new database connection, as an instance of |mozIStorageAsyncConnection|.

    Returns void

  • Open a connection to the specified file.

    Consumers should check mozIStorageConnection::connectionReady to ensure that they can use the database. If this value is false, it is strongly recommended that the database be backed up with mozIStorageConnection::backupDB so user data is not lost.

    ========== DANGER

    If you have more than one connection to a file, you MUST use the EXACT SAME NAME for the file each time, including case. The sqlite code uses a simple string compare to see if there is already a connection. Opening a connection to "Foo.sqlite" and "foo.sqlite" will CORRUPT YOUR DATABASE.

    The connection object returned by this function is not threadsafe. You must use it only from the thread you created it from.

    Returns

    a mozIStorageConnection for the requested database file.

    Throws

    NS_ERROR_OUT_OF_MEMORY If allocating a new storage object fails.

    Throws

    NS_ERROR_FILE_CORRUPTED If the database file is corrupted.

    Parameters

    • aDatabaseFile: nsIFile

      A nsIFile that represents the database that is to be opened.

    • aConnectionFlags: number

    Returns mozIStorageConnection

  • See openDatabase(). Exactly the same only initialized with a file URL. Custom parameters can be passed to SQLite and VFS implementations through the query part of the URL.

    Parameters

    • aFileURL: nsIFileURL
    • aTelemetryFilename: string
    • aConnectionFlags: number

    Returns mozIStorageConnection

  • Get a connection to a named special database storage.

    See

    openDatabase for restrictions on how database connections may be used. For the profile database, you should only access it from the main thread since other callers may also have connections.

    Returns

    a new mozIStorageConnection for the requested storage database.

    Throws

    NS_ERROR_INVALID_ARG if aStorageKey is invalid.

    Parameters

    • aStorageKey: string

      a string key identifying the type of storage requested. Valid values include: "memory".

    • aName: string

      an optional string identifying the name of the database. If omitted, a filename of ":memory:" will be used which results in a private in-memory database specific to this connection, making it impossible to clone the in-memory database. If you want to be able to clone the connection (or otherwise connect to the in-memory database from a connection), then you must pick a name that's sufficiently unique within the process to not collide with other mozStorage users.

    • aConnectionFlags: number

    Returns mozIStorageConnection

  • Open a connection to the specified file that doesn't share a sqlite cache.

    Without a shared-cache, each connection uses its own pages cache, which may be memory inefficient with a large number of connections, in such a case so you should use openDatabase instead. On the other side, if cache contention may be an issue, for instance when concurrency is important to ensure responsiveness, using unshared connections may be a performance win.

    ========== DANGER

    If you have more than one connection to a file, you MUST use the EXACT SAME NAME for the file each time, including case. The sqlite code uses a simple string compare to see if there is already a connection. Opening a connection to "Foo.sqlite" and "foo.sqlite" will CORRUPT YOUR DATABASE.

    The connection object returned by this function is not threadsafe. You must use it only from the thread you created it from.

    Returns

    a mozIStorageConnection for the requested database file.

    Throws

    NS_ERROR_OUT_OF_MEMORY If allocating a new storage object fails.

    Throws

    NS_ERROR_FILE_CORRUPTED If the database file is corrupted.

    Parameters

    • aDatabaseFile: nsIFile

      A nsIFile that represents the database that is to be opened.

    • aConnectionFlags: number

    Returns mozIStorageConnection

Generated using TypeDoc