Search in sources :

Example 56 with Bytes

use of suite.primitive.Bytes in project suite by stupidsing.

the class StoreCache method getOutlet.

public Outlet<Bytes> getOutlet(Bytes key, Source<Outlet<Bytes>> source) {
    return Rethrow.ex(() -> {
        long current = System.currentTimeMillis();
        Path path;
        int i = 0;
        while (Files.exists(path = path(key, i++, ""))) if (isUpToDate(path, current)) {
            InputStream is = Files.newInputStream(path);
            DataInputStream dis = new DataInputStream(is);
            if (isMatch(key, dis))
                return read(dis).closeAtEnd(is);
            dis.close();
            is.close();
        } else {
            Files.delete(path);
            break;
        }
        Pair<Boolean, Path> pair = match(key);
        if (pair.t0) {
            InputStream vis = Files.newInputStream(pair.t1);
            DataInputStream vdis = new DataInputStream(vis);
            return read(vdis).closeAtEnd(vis);
        } else {
            Outlet<Bytes> outlet = source.source();
            OutputStream vos = FileUtil.out(pair.t1);
            DataOutput_ vdo = DataOutput_.of(vos);
            return // 
            Outlet.of(() -> Rethrow.ex(() -> {
                Bytes value = outlet.next();
                if (value != null)
                    vdo.writeBytes(value);
                return value;
            })).closeAtEnd(// 
            vos).closeAtEnd(vdo);
        }
    });
}
Also used : Path(java.nio.file.Path) Bytes(suite.primitive.Bytes) DataInputStream(java.io.DataInputStream) InputStream(java.io.InputStream) DataOutput_(suite.util.DataOutput_) OutputStream(java.io.OutputStream) DataInputStream(java.io.DataInputStream)

Aggregations

Bytes (suite.primitive.Bytes)56 Test (org.junit.Test)18 BytesBuilder (suite.primitive.Bytes.BytesBuilder)8 IOException (java.io.IOException)5 InputStream (java.io.InputStream)4 ArrayList (java.util.ArrayList)4 List (java.util.List)4 Pair (suite.adt.pair.Pair)4 OutputStream (java.io.OutputStream)3 Path (java.nio.file.Path)3 To (suite.util.To)3 ByteArrayInputStream (java.io.ByteArrayInputStream)2 Assert.assertEquals (org.junit.Assert.assertEquals)2 Constants (suite.Constants)2 Amd64Interpret (suite.assembler.Amd64Interpret)2 Condition (suite.concurrent.Condition)2 Extent (suite.file.ExtentAllocator.Extent)2 JournalledPageFile (suite.file.JournalledPageFile)2 ImperativeCompiler (suite.ip.ImperativeCompiler)2 DataInput_ (suite.util.DataInput_)2