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

net.java.truevfs.kernel.impl.ArchiveController Maven / Gradle / Ivy

/*
 * Copyright © 2005 - 2021 Schlichtherle IT Services.
 * All rights reserved. Use is subject to license terms.
 */
package net.java.truevfs.kernel.impl;

import bali.Cache;
import bali.Lookup;
import net.java.truecommons.cio.Entry;
import net.java.truecommons.cio.Entry.Access;
import net.java.truecommons.cio.Entry.Type;
import net.java.truecommons.cio.InputSocket;
import net.java.truecommons.cio.OutputSocket;
import net.java.truecommons.shed.BitField;
import net.java.truevfs.kernel.spec.*;

import java.io.IOException;
import java.util.Map;
import java.util.Optional;
import java.util.concurrent.locks.ReentrantReadWriteLock;

import static bali.CachingStrategy.NOT_THREAD_SAFE;

/**
 * Provides read/write access to an archive file system.
 * This is a mirror of {@link net.java.truevfs.kernel.spec.FsController} which has been customized to ease the
 * implementation.
 *
 * @author Christian Schlichtherle
 */
interface ArchiveController extends ArchiveModelAspect, ReentrantReadWriteLockAspect {

    /**
     * Returns the parent filesystem controller.
     */
    @Lookup(param = "parent")
    FsController getParent();

    @Cache(NOT_THREAD_SAFE)
    default ReentrantReadWriteLock getLock() {
        return getModel().getLock();
    }

    Optional node(BitField options, FsNodeName name) throws IOException;

    void checkAccess(BitField options, FsNodeName name, BitField types) throws IOException;

    void setReadOnly(BitField options, FsNodeName name) throws IOException;

    boolean setTime(BitField options, FsNodeName name, Map times) throws IOException;

    boolean setTime(BitField options, FsNodeName name, BitField types, long time) throws IOException;

    InputSocket input(BitField options, FsNodeName name);

    OutputSocket output(BitField options, FsNodeName name, Optional template);

    void make(BitField options, FsNodeName name, Type type, Optional template) throws IOException;

    void unlink(BitField options, FsNodeName name) throws IOException;

    void sync(BitField options) throws FsSyncException;
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy