Search in sources :

Example 1 with FastCast

use of org.nustaq.fastcast.api.FastCast in project fast-cast by RuedigerMoeller.

the class FCPing method runPingClientSync.

// CO !
public void runPingClientSync() throws InterruptedException {
    final FastCast fc = initFC("pclie", "pingponglat.kson");
    final FCPublisher pingserver = fc.onTransport("ping").publish(fc.getPublisherConf("pingtopic"));
    final Executor ex = Executors.newSingleThreadExecutor();
    final AtomicInteger await = new AtomicInteger(0);
    fc.onTransport(PING_BACK_ON_SAME_TOPIC ? "ping" : "pong").subscribe(fc.getSubscriberConf("pongtopic"), new FCSubscriber() {

        String pongName;

        @Override
        public void messageReceived(String sender, long sequence, Bytez b, long off, int len) {
            await.decrementAndGet();
        }

        @Override
        public boolean dropped() {
            // reset
            await.set(0);
            System.out.println("Drop and Reset counter !");
            return true;
        }

        @Override
        public void senderTerminated(String senderNodeId) {
            System.out.println(senderNodeId + " terminated");
        }

        @Override
        public void senderBootstrapped(String receivesFrom, long seqNo) {
            System.out.println("bootstrap " + receivesFrom);
            pongName = receivesFrom;
        }
    });
    // just create a byte[] for each struct (*)
    FSTStructAllocator alloc = new FSTStructAllocator(0);
    PingRequest pr = alloc.newStruct(new PingRequest());
    Histogram histo = new Histogram(TimeUnit.SECONDS.toNanos(10), 3);
    // wait for at least one heartbeat
    Thread.sleep(1000);
    System.out.println("starting ping pong " + randomId);
    System.gc();
    pr.setNanoSendTime(randomId);
    Sleeper sl = new Sleeper();
    while (true) {
        await.set(0);
        for (int i = 0; i < NUM_MSG; i++) {
            //                sl.sleepMicros(100);
            pingAndAwaitPong(pingserver, await, pr, histo, i);
        }
        histo.outputPercentileDistribution(System.out, 1000.0);
        histo.reset();
        System.gc();
    }
}
Also used : Histogram(org.HdrHistogram.Histogram) FCPublisher(org.nustaq.fastcast.api.FCPublisher) Bytez(org.nustaq.offheap.bytez.Bytez) Sleeper(org.nustaq.fastcast.util.Sleeper) FSTStructAllocator(org.nustaq.offheap.structs.FSTStructAllocator) FCSubscriber(org.nustaq.fastcast.api.FCSubscriber) Executor(java.util.concurrent.Executor) FastCast(org.nustaq.fastcast.api.FastCast) AtomicInteger(java.util.concurrent.atomic.AtomicInteger)

Example 2 with FastCast

use of org.nustaq.fastcast.api.FastCast in project fast-cast by RuedigerMoeller.

the class FCPing method initFC.

protected FastCast initFC(String nodeId, String config) {
    System.setProperty("java.net.preferIPv4Stack", "true");
    FSTStructFactory.getInstance().registerClz(PingRequest.class);
    try {
        FastCast fc = FastCast.getFastCast();
        fc.setNodeId(nodeId);
        fc.loadConfig("./src/main/java/org/nustaq/fastcast/examples/latency/" + config);
        //            fc.loadConfig("C:\\work\\GitHub\\fast-cast\\src\\test\\java\\bench\\"+config);
        return fc;
    } catch (Exception e) {
        e.printStackTrace();
    }
    return null;
}
Also used : FastCast(org.nustaq.fastcast.api.FastCast)

Example 3 with FastCast

use of org.nustaq.fastcast.api.FastCast in project fast-cast by RuedigerMoeller.

the class FCPing method runPingClientASync.

// no coordinated ommission, async
public void runPingClientASync() throws InterruptedException {
    final FastCast fc = initFC("pclie", "pingponglat.kson");
    final FCPublisher pingserver = fc.onTransport("ping").publish(fc.getPublisherConf("pingtopic"));
    final Executor ex = Executors.newSingleThreadExecutor();
    final Histogram histo = new Histogram(TimeUnit.SECONDS.toNanos(10), 3);
    fc.onTransport(PING_BACK_ON_SAME_TOPIC ? "ping" : "pong").subscribe(fc.getSubscriberConf("pongtopic"), new FCSubscriber() {

        int msgCount;

        @Override
        public void messageReceived(String sender, long sequence, Bytez b, long off, int len) {
            // decode bounced back ping request
            PingRequest received = FSTStructFactory.getInstance().getStructPointer(b, off).cast();
            if (// filter out pressure of printing histogram
            msgCount > 10_000)
                histo.recordValue(System.nanoTime() - received.getNanoSendTime());
            msgCount++;
            if (msgCount > NUM_MSG + 10_000) {
                histo.outputPercentileDistribution(System.out, 1000.0);
                histo.reset();
                msgCount = 0;
            }
        }

        @Override
        public boolean dropped() {
            return true;
        }

        @Override
        public void senderTerminated(String senderNodeId) {
            System.out.println(senderNodeId + " terminated");
        }

        @Override
        public void senderBootstrapped(String receivesFrom, long seqNo) {
            System.out.println("bootstrap " + receivesFrom);
        }
    });
    // just create a byte[] for each struct (*)
    FSTStructAllocator alloc = new FSTStructAllocator(0);
    PingRequest pr = alloc.newStruct(new PingRequest());
    Sleeper sl = new Sleeper();
    while (true) {
        // need rate limiting cause of async
        sl.spinMicros(200);
        pr.setNanoSendTime(System.nanoTime());
        // can be sure off is 0, see (*)
        pingserver.offer(null, pr.getBase(), true);
    }
}
Also used : Histogram(org.HdrHistogram.Histogram) FCPublisher(org.nustaq.fastcast.api.FCPublisher) Bytez(org.nustaq.offheap.bytez.Bytez) Sleeper(org.nustaq.fastcast.util.Sleeper) FSTStructAllocator(org.nustaq.offheap.structs.FSTStructAllocator) FCSubscriber(org.nustaq.fastcast.api.FCSubscriber) Executor(java.util.concurrent.Executor) FastCast(org.nustaq.fastcast.api.FastCast)

Example 4 with FastCast

use of org.nustaq.fastcast.api.FastCast in project fast-cast by RuedigerMoeller.

the class FCPing method runPongServer.

public void runPongServer() throws InterruptedException {
    FastCast fc = initFC("pserv", "pingponglat.kson");
    final FCPublisher echoresp = fc.onTransport(PING_BACK_ON_SAME_TOPIC ? "ping" : "pong").publish(fc.getPublisherConf("pongtopic"));
    fc.onTransport("ping").subscribe(fc.getSubscriberConf("pingtopic"), new FCSubscriber() {

        @Override
        public void messageReceived(String sender, long sequence, Bytez b, long off, int len) {
            //                System.out.println("snd:"+sender);
            while (!echoresp.offer(sender, b, off, len, true)) {
                // ensure retrans processing etc.
                echoresp.flush();
            }
        }

        @Override
        public boolean dropped() {
            return true;
        }

        @Override
        public void senderTerminated(String senderNodeId) {
            System.out.println(senderNodeId + " terminated");
        }

        @Override
        public void senderBootstrapped(String receivesFrom, long seqNo) {
            System.out.println("bootstrap " + receivesFrom);
        }
    });
    while (true) {
        Thread.sleep(100000);
    }
}
Also used : FastCast(org.nustaq.fastcast.api.FastCast) FCPublisher(org.nustaq.fastcast.api.FCPublisher) Bytez(org.nustaq.offheap.bytez.Bytez) FCSubscriber(org.nustaq.fastcast.api.FCSubscriber)

Example 5 with FastCast

use of org.nustaq.fastcast.api.FastCast in project fast-cast by RuedigerMoeller.

the class UnreliableReceiver method main.

public static void main(String[] arg) throws IOException {
    FastCast fc = new FastCast();
    fc.joinCluster("test/unreliablereceiver.yaml", "Bench", null);
}
Also used : FastCast(org.nustaq.fastcast.api.FastCast)

Aggregations

FastCast (org.nustaq.fastcast.api.FastCast)12 FCPublisher (org.nustaq.fastcast.api.FCPublisher)4 FCSubscriber (org.nustaq.fastcast.api.FCSubscriber)3 PhysicalTransportConf (org.nustaq.fastcast.config.PhysicalTransportConf)3 Bytez (org.nustaq.offheap.bytez.Bytez)3 Executor (java.util.concurrent.Executor)2 Histogram (org.HdrHistogram.Histogram)2 Sleeper (org.nustaq.fastcast.util.Sleeper)2 FSTStructAllocator (org.nustaq.offheap.structs.FSTStructAllocator)2 File (java.io.File)1 AtomicInteger (java.util.concurrent.atomic.AtomicInteger)1 ObjectPublisher (org.nustaq.fastcast.api.util.ObjectPublisher)1 RateMeasure (org.nustaq.fastcast.util.RateMeasure)1