All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.couchbase.lite.internal.core.C4BlobKey Maven / Gradle / Ivy

//
// Copyright (c) 2020, 2017 Couchbase, Inc All rights reserved.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
//
package com.couchbase.lite.internal.core;

 import android.support.annotation.NonNull;
 import android.support.annotation.Nullable;

import com.couchbase.lite.LiteCoreException;


/**
 * Blob Key
 * 

* A raw SHA-1 digest used as the unique identifier of a blob. */ public class C4BlobKey extends C4NativePeer { //------------------------------------------------------------------------- // Constructors //------------------------------------------------------------------------- /** * Decodes a string of the form "sha1-"+base64 into a raw key. */ public C4BlobKey(@Nullable String str) throws LiteCoreException { this(fromString(str)); } C4BlobKey(long handle) { super(handle); } //------------------------------------------------------------------------- // public methods //------------------------------------------------------------------------- /** * Encodes a blob key to a string of the form "sha1-"+base64. */ @NonNull @Override public String toString() { final String str = toString(getPeer()); return (str != null) ? str : "unknown!!"; } public void free() { final long handle = getPeerAndClear(); if (handle == 0L) { return; } free(handle); } //------------------------------------------------------------------------- // protected methods //------------------------------------------------------------------------- @SuppressWarnings("NoFinalizer") @Override protected void finalize() throws Throwable { try { free(); } finally { super.finalize(); } } //------------------------------------------------------------------------- // package methods //------------------------------------------------------------------------- // !!! Exposes the peer handle long getHandle() { return getPeer(); } //------------------------------------------------------------------------- // native methods //------------------------------------------------------------------------- /** * Decode a string of the form "sha1-"+base64 into a raw key */ private static native long fromString(@Nullable String str) throws LiteCoreException; /** * Encodes a blob key to a string of the form "sha1-"+base64. */ @Nullable private static native String toString(long blobKey); /** * Release C4BlobKey */ private static native void free(long blobKey); }





© 2015 - 2025 Weber Informatics LLC | Privacy Policy