Package co.paralleluniverse.fibers

Examples of co.paralleluniverse.fibers.Fiber


    @Test
    public void testChannelCloseException() throws Exception {
        final Channel<Integer> ch = newChannel();

        Fiber fib = new Fiber(scheduler, new SuspendableRunnable() {
            @Override
            public void run() throws SuspendExecution, InterruptedException {
                for (int i = 1; i <= 5; i++) {
                    Integer m = ch.receive();

                    assertThat(m, equalTo(i));
                }

                try {
                    ch.receive();
                    fail();
                } catch (ProducerException e) {
                    assertThat(e.getCause().getMessage(), equalTo("foo"));
                }
                assertTrue(ch.isClosed());
            }
        }).start();

        Thread.sleep(50);
        ch.send(1);
        ch.send(2);
        ch.send(3);
        ch.send(4);
        ch.send(5);

        ch.close(new Exception("foo"));

        ch.send(6);
        ch.send(7);

        fib.join();
    }
View Full Code Here


    @Test
    public void testChannelCloseWithSleep() throws Exception {
        final Channel<Integer> ch = newChannel();

        Fiber fib = new Fiber("fiber", scheduler, new SuspendableRunnable() {
            @Override
            public void run() throws SuspendExecution, InterruptedException {
                for (int i = 1; i <= 5; i++) {
                    Integer m = ch.receive();

                    assertThat(m, equalTo(i));
                }

                Integer m = ch.receive();

                assertThat(m, nullValue());
                assertTrue(ch.isClosed());
            }
        }).start();

        Thread.sleep(50);
        ch.send(1);
        ch.send(2);
        ch.send(3);
        ch.send(4);
        ch.send(5);

        Thread.sleep(50);
        ch.close();

        ch.send(6);
        ch.send(7);

        fib.join();
    }
View Full Code Here

    @Test
    public void testChannelCloseExceptionWithSleep() throws Exception {
        final Channel<Integer> ch = newChannel();

        Fiber fib = new Fiber("fiber", scheduler, new SuspendableRunnable() {
            @Override
            public void run() throws SuspendExecution, InterruptedException {
                for (int i = 1; i <= 5; i++) {
                    Integer m = ch.receive();

                    assertThat(m, equalTo(i));
                }

                try {
                    Integer m = ch.receive();
                    fail("m = " + m);
                } catch (ProducerException e) {
                    assertThat(e.getCause().getMessage(), equalTo("foo"));
                }
                assertTrue(ch.isClosed());
            }
        }).start();

        Thread.sleep(50);
        ch.send(1);
        ch.send(2);
        ch.send(3);
        ch.send(4);
        ch.send(5);

        Thread.sleep(50);
        ch.close(new Exception("foo"));

        ch.send(6);
        ch.send(7);

        fib.join();
    }
View Full Code Here

                for (int i = 1; i <= 100; i++) {
                    ch.send(i);
                }
            }
        };
        Fiber fib1 = new Fiber("fiber", scheduler, r).start();
        Fiber fib2 = new Fiber("fiber", scheduler, r).start();

        Thread.sleep(500);

        ch.close();
        fib1.join();
        fib2.join();
    }
View Full Code Here

                for (int i = 1; i <= 100; i++) {
                    ch.send(i);
                }
            }
        };
        Fiber fib1 = new Fiber("fiber", scheduler, r).start();
        Fiber fib2 = new Fiber("fiber", scheduler, r).start();

        Thread.sleep(500);

        ch.close(new Exception("foo"));
        fib1.join();
        fib2.join();
    }
View Full Code Here

     * @param scheduler The new fiber's scheduler.
     * @return This actors' ActorRef
     */
    public ActorRef<Message> spawn(FiberScheduler scheduler) {
        checkReplacement();
        new Fiber(getName(), scheduler, runner).start();
        return ref();
    }
View Full Code Here

     *
     * @return This actors' ActorRef
     */
    public ActorRef<Message> spawn() {
        checkReplacement();
        new Fiber(getName(), runner).start();
        return ref();
    }
View Full Code Here

    /**
     * Returns the actor currently running in the current strand.
     */
    public static <M, V> Actor<M, V> currentActor() {
        final Fiber currentFiber = Fiber.currentFiber();
        if (currentFiber == null)
            return currentActor.get();
        final SuspendableCallable target = currentFiber.getTarget();
        if (target == null)
            return null;
        if (target instanceof Actor)
            return (Actor<M, V>) target;
        if (target instanceof ActorRunner)
View Full Code Here

    public void testPrimitiveChannelClose() throws Exception {
        assumeThat(mailboxSize, not(equalTo(0)));

        final IntChannel ch = Channels.newIntChannel(mailboxSize, policy);

        Fiber fib = new Fiber("fiber", scheduler, new SuspendableRunnable() {
            @Override
            public void run() throws SuspendExecution, InterruptedException {
                try {
                    for (int i = 1; i <= 5; i++) {
                        int m = ch.receiveInt();

                        assertThat(m, is(i));
                    }
                } catch (QueueChannel.EOFException e) {
                    fail();
                }

                try {
                    int m = ch.receiveInt();
                    fail("m = " + m);
                } catch (QueueChannel.EOFException e) {
                }

                assertTrue(ch.isClosed());
            }
        }).start();

        Thread.sleep(50);
        ch.send(1);
        ch.send(2);
        ch.send(3);
        ch.send(4);
        ch.send(5);

        ch.close();

        ch.send(6);
        ch.send(7);

        fib.join();
    }
View Full Code Here

    public void testPrimitiveChannelCloseException() throws Exception {
        assumeThat(mailboxSize, not(equalTo(0)));

        final IntChannel ch = Channels.newIntChannel(mailboxSize, policy);

        Fiber fib = new Fiber("fiber", scheduler, new SuspendableRunnable() {
            @Override
            public void run() throws SuspendExecution, InterruptedException {
                try {
                    for (int i = 1; i <= 5; i++) {
                        int m = ch.receiveInt();

                        assertThat(m, is(i));
                    }
                } catch (QueueChannel.EOFException e) {
                    fail();
                }

                try {
                    int m = ch.receiveInt();
                    fail("m = " + m);
                } catch (ProducerException e) {
                    assertThat(e.getCause().getMessage(), equalTo("foo"));
                } catch(ReceivePort.EOFException e) {
                    fail();
                }

                assertTrue(ch.isClosed());
            }
        }).start();

        Thread.sleep(50);
        ch.send(1);
        ch.send(2);
        ch.send(3);
        ch.send(4);
        ch.send(5);

        ch.close(new Exception("foo"));

        ch.send(6);
        ch.send(7);

        fib.join();
    }
View Full Code Here

TOP

Related Classes of co.paralleluniverse.fibers.Fiber

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.