Search in sources :

Example 11 with Thread_

use of suite.util.Thread_ in project suite by stupidsing.

the class IntFunUtil method suck.

/**
 * Sucks data from a sink and produce into a source.
 */
public static IntSource suck(Sink<IntSink> fun) {
    NullableSyncQueue<Integer> queue = new NullableSyncQueue<>();
    IntSink enqueue = c -> enqueue(queue, c);
    Thread thread = Thread_.startThread(() -> {
        try {
            fun.sink(enqueue);
        } finally {
            enqueue(queue, EMPTYVALUE);
        }
    });
    return () -> {
        try {
            return queue.take();
        } catch (InterruptedException ex) {
            thread.interrupt();
            return Fail.t(ex);
        }
    };
}
Also used : Iterator(java.util.Iterator) LogUtil(suite.os.LogUtil) Source2(suite.util.FunUtil2.Source2) Source(suite.util.FunUtil.Source) NullableSyncQueue(suite.util.NullableSyncQueue) Thread_(suite.util.Thread_) IntObjSource(suite.primitive.IntPrimitives.IntObjSource) Fun(suite.util.FunUtil.Fun) IntSource(suite.primitive.IntPrimitives.IntSource) IntTest(suite.primitive.IntPrimitives.IntTest) Int_Obj(suite.primitive.IntPrimitives.Int_Obj) IntSink(suite.primitive.IntPrimitives.IntSink) IntObjPair(suite.primitive.adt.pair.IntObjPair) Sink(suite.util.FunUtil.Sink) Collections(java.util.Collections) Fail(suite.util.Fail) NullableSyncQueue(suite.util.NullableSyncQueue) IntSink(suite.primitive.IntPrimitives.IntSink)

Example 12 with Thread_

use of suite.util.Thread_ in project suite by stupidsing.

the class LngFunUtil method suck.

/**
 * Sucks data from a sink and produce into a source.
 */
public static LngSource suck(Sink<LngSink> fun) {
    NullableSyncQueue<Long> queue = new NullableSyncQueue<>();
    LngSink enqueue = c -> enqueue(queue, c);
    Thread thread = Thread_.startThread(() -> {
        try {
            fun.sink(enqueue);
        } finally {
            enqueue(queue, EMPTYVALUE);
        }
    });
    return () -> {
        try {
            return queue.take();
        } catch (InterruptedException ex) {
            thread.interrupt();
            return Fail.t(ex);
        }
    };
}
Also used : Iterator(java.util.Iterator) LogUtil(suite.os.LogUtil) LngSource(suite.primitive.LngPrimitives.LngSource) Source2(suite.util.FunUtil2.Source2) Lng_Obj(suite.primitive.LngPrimitives.Lng_Obj) Source(suite.util.FunUtil.Source) NullableSyncQueue(suite.util.NullableSyncQueue) Thread_(suite.util.Thread_) LngObjSource(suite.primitive.LngPrimitives.LngObjSource) Fun(suite.util.FunUtil.Fun) Sink(suite.util.FunUtil.Sink) LngObjPair(suite.primitive.adt.pair.LngObjPair) LngTest(suite.primitive.LngPrimitives.LngTest) Collections(java.util.Collections) Fail(suite.util.Fail) LngSink(suite.primitive.LngPrimitives.LngSink) NullableSyncQueue(suite.util.NullableSyncQueue) LngSink(suite.primitive.LngPrimitives.LngSink)

Aggregations

Thread_ (suite.util.Thread_)12 LogUtil (suite.os.LogUtil)7 Source (suite.util.FunUtil.Source)6 Collections (java.util.Collections)5 Iterator (java.util.Iterator)5 List (java.util.List)5 Fail (suite.util.Fail)5 Fun (suite.util.FunUtil.Fun)5 Sink (suite.util.FunUtil.Sink)5 Source2 (suite.util.FunUtil2.Source2)5 NullableSyncQueue (suite.util.NullableSyncQueue)5 IOException (java.io.IOException)3 Test (org.junit.Test)3 InputStream (java.io.InputStream)2 OutputStream (java.io.OutputStream)2 Socket (java.net.Socket)2 ArrayList (java.util.ArrayList)2 AtomicInteger (java.util.concurrent.atomic.AtomicInteger)2 Constants (suite.Constants)2 Copy (suite.util.Copy)2