Skip to content

Commit

Permalink
ConcurrentNativeBinaryLoader: added javadoc and license
Browse files Browse the repository at this point in the history
*	modified:   snaploader/src/main/java/com/avrsandbox/snaploader/ConcurrentNativeBinaryLoader.java
  • Loading branch information
pavly-gerges committed Jul 16, 2023
1 parent e1454f3 commit c8b5332
Showing 1 changed file with 46 additions and 0 deletions.
Original file line number Diff line number Diff line change
@@ -1,23 +1,69 @@
/*
* Copyright (c) 2023, AvrSandbox, jSnapLoader
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
* met:
*
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* * Neither the name of 'AvrSandbox' nor the names of its contributors
* may be used to endorse or promote products derived from this software
* without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
* TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
package com.avrsandbox.snaploader;

import java.io.IOException;
import java.util.concurrent.locks.ReentrantLock;

/**
* A thread-safe implementation for the NativeBinaryLoader.
*
* @author pavl_g
*/
public class ConcurrentNativeBinaryLoader extends NativeBinaryLoader {

/**
* The monitor object.
*/
protected final ReentrantLock lock = new ReentrantLock();

/**
* Instantiates a thread-safe {@link NativeBinaryLoader} object.
*
* @param libraryInfo a data structure object holding the platform independent data for the library to load
*/
public ConcurrentNativeBinaryLoader(LibraryInfo libraryInfo) {
super(libraryInfo);
}

@Override
protected void cleanExtractBinary(NativeDynamicLibrary library) throws IOException {
try {
/* CRITICAL SECTION STARTS */
lock.lock();
super.cleanExtractBinary(library);
} finally {
lock.unlock();
/* CRITICAL SECTION ENDS */
}
}
}

0 comments on commit c8b5332

Please sign in to comment.