/**
* Copyright (c) 2015-present, Facebook, Inc.
* All rights reserved.
*
* This source code is licensed under the BSD-style license found in the
* LICENSE file in the root directory of this source tree. An additional grant
* of patent rights can be found in the PATENTS file in the same directory.
*/
package com.facebook.soloader;
import java.io.File;
import java.io.IOException;
abstract public class SoSource {
/**
* This SoSource doesn't know how to provide the given library.
*/
public static final int LOAD_RESULT_NOT_FOUND = 0;
/**
* This SoSource loaded the given library.
*/
public static final int LOAD_RESULT_LOADED = 1;
/**
* This SoSource did not load the library, but verified that the system loader will load it if
* some other library depends on it. Returned only if LOAD_FLAG_ALLOW_IMPLICIT_PROVISION is
* provided to loadLibrary.
*/
public static final int LOAD_RESULT_IMPLICITLY_PROVIDED = 2;
/**
* Allow loadLibrary to implicitly provide the library instead of actually loading it.
*/
public static final int LOAD_FLAG_ALLOW_IMPLICIT_PROVISION = 1;
/**
* Load a shared library library into this process. This routine is independent of
* {@link #loadLibrary}.
*
* @param soName Name of library to load
* @param loadFlags Zero or more of the LOAD_FLAG_XXX constants.
* @return One of the LOAD_RESULT_XXX constants.
*/
abstract public int loadLibrary(String soName, int LoadFlags) throws IOException;
/**
* Ensure that a shared library exists on disk somewhere. This routine is independent of
* {@link #loadLibrary}.
*
* @param soName Name of library to load
* @return File if library found; {@code null} if not.
*/
abstract public File unpackLibrary(String soName) throws IOException;
}