package com.palantir.atlasdb.rocksdb;

import java.io.File;
import java.io.IOException;
import java.util.concurrent.atomic.AtomicReference;

import org.rocksdb.NativeLibraryLoader;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import com.google.common.base.Throwables;

public class RocksDbNativeLibraryLoader {
    private static final Logger log = LoggerFactory.getLogger(RocksDbNativeLibraryLoader.class);
    private static AtomicReference<String> staticTmpDir = new AtomicReference<>();

    public static void load(File tmpDir) {
        String path = tmpDir.getAbsolutePath();
        if (staticTmpDir.compareAndSet(null, path)) {
            try {
                NativeLibraryLoader.getInstance().loadLibrary(tmpDir.getAbsolutePath());
            } catch (IOException e) {
                throw Throwables.propagate(e);
            }
        } else if (!staticTmpDir.get().equals(path)) {
            log.error("Cannot load native rocksdb libraries to {}, " +
                    "native libraries were already loaded to {}", path, staticTmpDir.get());
        }
    }
}

@@ -1,8 +1,597 @@
+/**%0A * Copyright 2015 Palantir Technologies%0A *%0A * Licensed under the BSD-3 License (the %22License%22);%0A * you may not use this file except in compliance with the License.%0A * You may obtain a copy of the License at%0A *%0A * http://opensource.org/licenses/BSD-3-Clause%0A *%0A * Unless required by applicable law or agreed to in writing, software%0A * distributed under the License is distributed on an %22AS IS%22 BASIS,%0A * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.%0A * See the License for the specific language governing permissions and%0A * limitations under the License.%0A */%0A
 package 

add license