Package net.sf.cindy.session

Examples of net.sf.cindy.session.DefaultFuture


    private volatile boolean started = false;
    private DefaultFuture startFuture, closeFuture;

    protected Future send(final Object obj, Packet packet, final int priority) {
        if (packet == null || packet.getContent() == null || !isStarted())
            return new DefaultFuture(this, false);
        final DefaultFuture future = new DefaultFuture(this);
        getSessionFilterChain(new SessionFilterAdapter() {

            public void packetSend(SessionFilterChain filterChain, Packet packet)
                    throws Exception {
                if (packet == null || packet.getContent() == null) {
                    future.setSucceeded(false);
                    return;
                }
                Packet futurePacket = new FuturePacket(obj, packet, priority,
                        future);
                boolean firstSend = false;
                boolean sendFailed = false;

                synchronized (sendQueue) {
                    firstSend = currentSendPacket == null
                            && sendQueue.isEmpty();
                    // current session may be closed
                    if (!isStarted() || !sendQueue.offer(futurePacket))
                        sendFailed = true;
                }

                if (sendFailed)
                    future.setSucceeded(false);
                else if (firstSend)
                    reactor.interest(handler, Reactor.OP_WRITE);
            }

        }, true).packetSend(packet);
View Full Code Here


    public synchronized Future close() throws IllegalStateException {
        boolean starting = startFuture != null && !startFuture.isCompleted();
        if (closeFuture == null) {
            if (!started && !starting) {
                closeFuture = new DefaultFuture(this, true);
                doClose(); // clear resource even not start
            } else {
                closeFuture = new DefaultFuture(this);
                reactor.deregister(handler);
            }
        }
        return closeFuture;
    }
View Full Code Here

    protected void doClose() {
    }

    public synchronized Future start() {
        if (closeFuture != null && !closeFuture.isCompleted())
            return new DefaultFuture(this, false);
        closeFuture = null; // then call close will close

        if (startFuture == null) {
            try {
                doStart();
            } catch (IOException e) {
                dispatchException(e);
                return new DefaultFuture(this, false);
            }
            startFuture = new DefaultFuture(this);
            reactor.register(handler);
        }
        return startFuture;
    }
View Full Code Here

                    try {
                        checkSendPacket(currentSendPacket);
                    } catch (RuntimeException e) {
                        dispatchException(e);
                        DefaultFuture future = currentSendPacket.future;
                        currentSendPacket = null;
                        future.setSucceeded(false);
                        continue;
                    }

                    Buffer buffer = currentSendPacket.getContent();
                    if (!buffer.hasRemaining() || write(currentSendPacket)) {
View Full Code Here

TOP

Related Classes of net.sf.cindy.session.DefaultFuture

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.