public void stop()

in provider/fastbin/src/main/java/org/apache/aries/rsa/provider/fastbin/tcp/TransportPool.java [135:166]


    public void stop(final Runnable onComplete) {
        if (running.compareAndSet(true, false)) {
            queue.execute(new Runnable() {
                public void run() {
                    final AtomicInteger latch = new AtomicInteger(transports.size());
                    final Runnable countDown = new Runnable() {
                        public void run() {
                            if (latch.decrementAndGet() == 0) {
                                while (!pending.isEmpty()) {
                                    Pair p = pending.removeFirst();
                                    onFailure(p.id, new IOException("Transport stopped"));
                                }
                                onComplete.run();
                            }
                        }
                    };
                    while (!transports.isEmpty()) {
                        Transport transport = transports.keySet().iterator().next();
                        TransportState state = transports.remove(transport);
                        if (state != null) {
                            for (Object id : state.inflight) {
                                onFailure(id, new IOException("Transport stopped"));
                            }
                        }
                        transport.stop(countDown);
                    }
                }
            });
        } else {
            onComplete.run();
        }
    }