类android.support.annotation.GuardedBy源码实例Demo

下面列出了怎么用android.support.annotation.GuardedBy的API类实例代码及写法,或者点击链接到github查看源代码。

源代码1 项目: couchbase-lite-java   文件: AbstractReplicator.java
/**
 * Create and return a c4Replicator targeting the passed Database
 *
 * @param otherDb a local database for the replication target
 * @return the c4Replicator
 * @throws LiteCoreException on failure to create the replicator
 */
@GuardedBy("lock")
@NonNull
protected final C4Replicator getLocalC4ReplicatorLocked(@NonNull Database otherDb) throws LiteCoreException {
    setupFilters();

    final boolean continuous = config.isContinuous();

    c4ReplListener = new ReplicatorListener();

    return config.getDatabase().createLocalReplicator(
        (Replicator) this,
        otherDb.getC4Database(),
        mkmode(isPush(config.getReplicatorType()), continuous),
        mkmode(isPull(config.getReplicatorType()), continuous),
        getFleeceOptions(),
        c4ReplListener,
        c4ReplPushFilter,
        c4ReplPullFilter);
}
 
源代码2 项目: couchbase-lite-java   文件: AbstractDatabase.java
@GuardedBy("lock")
private void verifyQuiescent() throws CouchbaseLiteException {
    if (hasActiveReplicators()) {
        throw new CouchbaseLiteException(
            "DeleteDBFailedReplications",
            CBLError.Domain.CBLITE,
            CBLError.Code.BUSY);
    }

    if (!activeLiveQueries.isEmpty()) {
        throw new CouchbaseLiteException(
            "DeleteDBFailedQueryListeners",
            CBLError.Domain.CBLITE,
            CBLError.Code.BUSY);
    }
}
 
源代码3 项目: couchbase-lite-java   文件: AbstractDatabase.java
@GuardedBy("lock")
private void shutdown() {
    // cancel purge
    if (purgeStrategy != null) { purgeStrategy.cancelPurges(); }

    // release instances
    freeC4Observers(true);

    if ((!shellMode) && (c4db != null)) {
        path = c4db.getPath();
        c4db = null;
    }

    // shutdown executor service
    shutdownExecutors(postExecutor, queryExecutor, SHUTDOWN_DELAY_SECS);
}
 
源代码4 项目: couchbase-lite-java   文件: Document.java
@GuardedBy("lock")
private void updateC4DocumentLocked(@Nullable C4Document c4Doc) {
    if (c4Document == c4Doc) { return; }

    if (c4Doc != null) { revId = null; }

    c4Document = c4Doc;
}
 
源代码5 项目: couchbase-lite-java   文件: Document.java
@GuardedBy("lock")
private void updateDictionaryLocked(boolean mutable) {
    if (data == null) {
        root = null;
        internalDict = mutable ? new MutableDictionary() : new Dictionary();
        return;
    }

    final Database db = getDatabase();
    if (db == null) { throw new IllegalStateException(""); }

    final MRoot newRoot = new MRoot(new DocContext(db, c4Document), data.toFLValue(), mutable);
    root = newRoot;
    synchronized (db.getLock()) { internalDict = (Dictionary) newRoot.asNative(); }
}
 
源代码6 项目: couchbase-lite-java   文件: AbstractReplicator.java
/**
 * Create and return a c4Replicator targeting the passed URI
 *
 * @param remoteUri a URI for the replication target
 * @return the c4Replicator
 * @throws LiteCoreException on failure to create the replicator
 */
@GuardedBy("lock")
@NonNull
protected final C4Replicator getRemoteC4ReplicatorLocked(@NonNull URI remoteUri) throws LiteCoreException {
    // Set up the port: core uses 0 for not set
    final int p = remoteUri.getPort();
    final int port = (p <= 0) ? 0 : p;

    // get db name and path
    final Deque<String> splitPath = splitPath(remoteUri.getPath());
    final String dbName = (splitPath.size() <= 0) ? "" : splitPath.removeLast();
    final String path = "/" + StringUtils.join("/", splitPath);

    setupFilters();

    final boolean continuous = config.isContinuous();

    c4ReplListener = new ReplicatorListener();

    return config.getDatabase().createRemoteReplicator(
        (Replicator) this,
        remoteUri.getScheme(),
        remoteUri.getHost(),
        port,
        path,
        dbName,
        mkmode(isPush(config.getReplicatorType()), continuous),
        mkmode(isPull(config.getReplicatorType()), continuous),
        getFleeceOptions(),
        c4ReplListener,
        c4ReplPushFilter,
        c4ReplPullFilter,
        socketFactory,
        C4Socket.NO_FRAMING);
}
 
源代码7 项目: couchbase-lite-java   文件: AbstractReplicator.java
/**
 * Create and return a c4Replicator.
 * The socket factory is responsible for setting up the target
 *
 * @param framing the framing mode (C4Socket.XXX_FRAMING)
 * @return the c4Replicator
 * @throws LiteCoreException on failure to create the replicator
 */
@GuardedBy("lock")
@NonNull
protected final C4Replicator getMessageC4ReplicatorLocked(int framing)
    throws LiteCoreException {
    setupFilters();

    final boolean continuous = config.isContinuous();

    c4ReplListener = new ReplicatorListener();

    return config.getDatabase().createRemoteReplicator(
        (Replicator) this,
        C4Socket.MESSAGE_SCHEME,
        null,
        0,
        null,
        null,
        mkmode(isPush(config.getReplicatorType()), continuous),
        mkmode(isPull(config.getReplicatorType()), continuous),
        getFleeceOptions(),
        c4ReplListener,
        c4ReplPushFilter,
        c4ReplPullFilter,
        socketFactory,
        framing);
}
 
源代码8 项目: couchbase-lite-java   文件: AbstractDatabase.java
@GuardedBy("lock")
@NonNull
private ListenerToken addDatabaseChangeListenerLocked(
    @Nullable Executor executor,
    @NonNull DatabaseChangeListener listener) {
    if (dbChangeNotifier == null) {
        dbChangeNotifier = new ChangeNotifier<>();
        registerC4DBObserver();
    }
    return dbChangeNotifier.addChangeListener(executor, listener);
}
 
源代码9 项目: couchbase-lite-java   文件: AbstractDatabase.java
@GuardedBy("lock")
private void removeDatabaseChangeListenerLocked(@NonNull ListenerToken token) {
    if (dbChangeNotifier.removeChangeListener(token) == 0) {
        freeC4DBObserver();
        dbChangeNotifier = null;
    }
}
 
源代码10 项目: couchbase-lite-java   文件: AbstractDatabase.java
@GuardedBy("lock")
@NonNull
private ListenerToken addDocumentChangeListenerLocked(
    @NonNull String docID,
    @Nullable Executor executor,
    @NonNull DocumentChangeListener listener) {
    DocumentChangeNotifier docNotifier = docChangeNotifiers.get(docID);
    if (docNotifier == null) {
        docNotifier = new DocumentChangeNotifier((Database) this, docID);
        docChangeNotifiers.put(docID, docNotifier);
    }
    final ChangeListenerToken token = docNotifier.addChangeListener(executor, listener);
    token.setKey(docID);
    return token;
}
 
源代码11 项目: couchbase-lite-java   文件: AbstractDatabase.java
@GuardedBy("lock")
private void removeDocumentChangeListenerLocked(@NonNull ChangeListenerToken token) {
    final String docID = (String) token.getKey();
    if (docChangeNotifiers.containsKey(docID)) {
        final DocumentChangeNotifier notifier = docChangeNotifiers.get(docID);
        if (notifier != null && notifier.removeChangeListener(token) == 0) {
            notifier.stop();
            docChangeNotifiers.remove(docID);
        }
    }
}
 
源代码12 项目: couchbase-lite-java   文件: AbstractDatabase.java
@GuardedBy("lock")
private void freeC4DBObserver() {
    final C4DatabaseObserver observer = c4DbObserver;
    c4DbObserver = null;

    if (observer == null) { return; }
    observer.free();
}
 
源代码13 项目: couchbase-lite-java   文件: AbstractQuery.java
@GuardedBy("lock")
private C4Query prepQueryLocked() throws CouchbaseLiteException {
    database = (Database) from.getSource();

    final String json = encodeAsJson();
    Log.v(DOMAIN, "Encoded query: %s", json);
    if (json == null) { throw new CouchbaseLiteException("Failed to generate JSON query."); }

    if (columnNames == null) { columnNames = getColumnNames(); }

    try { return database.getC4Database().createQuery(json); }
    catch (LiteCoreException e) { throw CBLStatus.convertException(e); }
}
 
@GuardedBy("this")
private void executeTask(@NonNull InstrumentedTask newTask) {
    try {
        executor.execute(newTask);
        running++;
    }
    catch (RejectedExecutionException e) {
        dumpExecutorState(newTask, e);
        throw e;
    }
}
 
@GuardedBy("this")
private void executeTask(@Nullable InstrumentedTask prevTask) {
    final InstrumentedTask nextTask = pendingTasks.peek();
    if (nextTask == null) { return; }
    try {
        executor.execute(nextTask);
        needsRestart = false;
    }
    catch (RejectedExecutionException e) {
        needsRestart = true;
        dumpExecutorState(e, prevTask);
    }
}
 
源代码16 项目: couchbase-lite-java   文件: AbstractDatabase.java
@GuardedBy("lock")
@SuppressWarnings("PMD.NPathComplexity")
private void saveResolvedDocument(
    @Nullable Document resolvedDoc,
    @NonNull Document localDoc,
    @NonNull Document remoteDoc)
    throws CouchbaseLiteException {
    FLSliceResult mergedBody = null;
    int mergedFlags = 0x00;

    if (resolvedDoc == null) {
        if (remoteDoc.isDeleted()) { resolvedDoc = remoteDoc; }
        else if (localDoc.isDeleted()) { resolvedDoc = localDoc; }
    }

    if (resolvedDoc != null) {
        if (resolvedDoc != localDoc) { resolvedDoc.setDatabase((Database) this); }

        final C4Document c4Doc = resolvedDoc.getC4doc();
        if (c4Doc != null) { mergedFlags = c4Doc.getSelectedFlags(); }
    }

    try {
        // Unless the remote revision is being used as-is, we need a new revision:
        if (resolvedDoc != remoteDoc) {
            if ((resolvedDoc != null) && !resolvedDoc.isDeleted()) { mergedBody = resolvedDoc.encode(); }
            else {
                mergedFlags |= C4Constants.RevisionFlags.DELETED;
                final FLEncoder enc = getC4Database().getSharedFleeceEncoder();
                try {
                    enc.writeValue(new HashMap<>()); // Need an empty dictionary body
                    mergedBody = enc.finish2();
                }
                finally { enc.reset(); }
            }
        }

        // Merged body:
        final byte[] mergedBodyBytes = mergedBody == null ? null : mergedBody.getBuf();

        // Ask LiteCore to do the resolution:
        final C4Document rawDoc = Preconditions.assertNotNull(localDoc.getC4doc(), "raw doc is null");
        // The remote branch has to win so that the doc revision history matches the server's.
        rawDoc.resolveConflict(remoteDoc.getRevisionID(), localDoc.getRevisionID(), mergedBodyBytes, mergedFlags);
        rawDoc.save(0);

        Log.i(DOMAIN, "Conflict resolved as doc '%s' rev %s", rawDoc.getDocID(), rawDoc.getRevID());
    }
    catch (LiteCoreException e) {
        throw CBLStatus.convertException(e);
    }
    finally {
        if (mergedBody != null) { mergedBody.free(); }
    }
}
 
源代码17 项目: couchbase-lite-java   文件: AbstractDatabase.java
@GuardedBy("lock")
private void freeC4Observers(boolean cleanup) {
    final Map<String, DocumentChangeNotifier> notifiers = docChangeNotifiers;

    freeC4DBObserver();

    if (notifiers == null) { return; }

    for (DocumentChangeNotifier notifier : notifiers.values()) { notifier.stop(); }

    if (cleanup) { notifiers.clear(); }
}
 
 类方法
 同包方法