001/*
002 * IzPack - Copyright 2001-2005 Julien Ponge, All Rights Reserved.
003 * 
004 * http://www.izforge.com/izpack/
005 * http://developer.berlios.de/projects/izpack/
006 * 
007 * Copyright 2002 Elmar Grom
008 * 
009 * Licensed under the Apache License, Version 2.0 (the "License");
010 * you may not use this file except in compliance with the License.
011 * You may obtain a copy of the License at
012 * 
013 *     http://www.apache.org/licenses/LICENSE-2.0
014 *     
015 * Unless required by applicable law or agreed to in writing, software
016 * distributed under the License is distributed on an "AS IS" BASIS,
017 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
018 * See the License for the specific language governing permissions and
019 * limitations under the License.
020 */
021
022package com.izforge.izpack.util;
023
024/*---------------------------------------------------------------------------*/
025/**
026 * Any class in IzPack that uses native libraries must implement this interface. See the package
027 * documentation for more details on requirements relating to the use of native libraries within
028 * IzPack.
029 * 
030 * @version 0.0.1 / 2/6/2002
031 * @author Elmar Grom
032 */
033/*---------------------------------------------------------------------------*/
034public interface NativeLibraryClient
035{
036
037    /*--------------------------------------------------------------------------*/
038    /**
039     * This method is used to free the library at the end of progam execution. After this call, any
040     * instance of this calss will not be usable any more! <b><i><u>This method is very likely NOT
041     * to return!</u></i></b> <br>
042     * <br>
043     * <b>DO NOT CALL THIS METHOD DIRECTLY!</b><br>
044     * It is used by the librarian to free a native library before physically deleting it from its
045     * temporary loaction. A call to this method is likely to irrecoverably freeze the application!
046     * <br>
047     * <br>
048     * The contract for this method implementation is that a call will bring the native library into
049     * a state where it can be deleted. This translates into an operation to free the library. Since
050     * no libraries should be left behind when the installer shuts down, it is necessary that each
051     * library provides the means to free itself. For instance in a MS-Windows environment the
052     * library must call <code>FreeLibraryAndExitThread()</code>. This will result in a native
053     * fuction call that does not return.
054     * 
055     * @param name the name of the library, without path but with extension
056     */
057    /*--------------------------------------------------------------------------*/
058    public void freeLibrary(String name);
059}
060/*---------------------------------------------------------------------------*/