All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.xnio.XnioIoFactory Maven / Gradle / Ivy

Go to download

This artifact provides a single jar that contains all classes required to use remote EJB and JMS, including all dependencies. It is intended for use by those not using maven, maven users should just import the EJB and JMS BOM's instead (shaded JAR's cause lots of problems with maven, as it is very easy to inadvertently end up with different versions on classes on the class path).

There is a newer version: 33.0.2.Final
Show newest version
package org.xnio;

import java.io.IOException;
import java.net.SocketAddress;
import org.xnio.channels.BoundChannel;
import org.xnio.channels.StreamChannel;
import org.xnio.channels.StreamSinkChannel;
import org.xnio.channels.StreamSourceChannel;

/**
 * An XNIO I/O factory which can be used to create channels.
 *
 * @author David M. Lloyd
 */
public interface XnioIoFactory {

    /**
     * Connect to a remote stream server.  The protocol family is determined by the type of the socket address given.
     * If an open listener is used, the channel should not be accessed via the returned
     * {@code IoFuture}, and vice-versa.
     *
     * @param destination the destination address
     * @param openListener the listener which will be notified when the channel is open, or {@code null} for none
     * @param optionMap the option map
     * @return the future result of this operation
     */
    IoFuture openStreamConnection(SocketAddress destination, ChannelListener openListener, OptionMap optionMap);

    /**
     * Connect to a remote stream server.  The protocol family is determined by the type of the socket address given.
     * If an open listener is used, the channel should not be accessed via the returned
     * {@code IoFuture}, and vice-versa.
     *
     * @param destination the destination address
     * @param openListener the listener which will be notified when the channel is open, or {@code null} for none
     * @param bindListener the listener which will be notified when the channel is bound, or {@code null} for none
     * @param optionMap the option map
     * @return the future result of this operation
     */
    IoFuture openStreamConnection(SocketAddress destination, ChannelListener openListener, ChannelListener bindListener, OptionMap optionMap);

    /**
     * Connect to a remote stream server.  The protocol family is determined by the type of the socket addresses given
     * (which must match).  If an open listener is used, the channel should not be accessed via the returned
     * {@code IoFuture}, and vice-versa.
     *
     * @param bindAddress the local address to bind to
     * @param destination the destination address
     * @param openListener the listener which will be notified when the channel is open, or {@code null} for none
     * @param bindListener the listener which will be notified when the channel is bound, or {@code null} for none
     * @param optionMap the option map
     * @return the future result of this operation
     */
    IoFuture openStreamConnection(SocketAddress bindAddress, SocketAddress destination, ChannelListener openListener, ChannelListener bindListener, OptionMap optionMap);

    /**
     * Accept a stream connection at a destination address.  If a wildcard address is specified, then a destination address
     * is chosen in a manner specific to the OS and/or channel type.
     *
     * @param destination the destination (bind) address
     * @param openListener the listener which will be notified when the channel is open, or {@code null} for none
     * @param bindListener the listener which will be notified when the acceptor is bound, or {@code null} for none
     * @param optionMap the option map
     * @return the future connection
     */
    IoFuture acceptStreamConnection(SocketAddress destination, ChannelListener openListener, ChannelListener bindListener, OptionMap optionMap);

    /**
     * Connect to a remote message server.  The protocol family is determined by the type of the socket address given.
     * If an open listener is used, the channel should not be accessed via the returned
     * {@code IoFuture}, and vice-versa.
     *
     * @param destination the destination address
     * @param openListener the listener which will be notified when the channel is open, or {@code null} for none
     * @param optionMap the option map
     * @return the future result of this operation
     */
    IoFuture openMessageConnection(SocketAddress destination, ChannelListener openListener, OptionMap optionMap);

    /**
     * Accept a message connection at a destination address.  If a wildcard address is specified, then a destination address
     * is chosen in a manner specific to the OS and/or channel type.  If an open listener is used, the channel should
     * not be accessed via the returned {@code IoFuture}, and vice-versa.
     *
     * @param destination the destination (bind) address
     * @param openListener the listener which will be notified when the channel is open, or {@code null} for none
     * @param bindListener the listener which will be notified when the acceptor is bound, or {@code null} for none
     * @param optionMap the option map
     * @return the future connection
     */
    IoFuture acceptMessageConnection(SocketAddress destination, ChannelListener openListener, ChannelListener bindListener, OptionMap optionMap);

    /**
     * Create a two-way stream pipe.
     *
     * @return the created pipe
     * @throws java.io.IOException if the pipe could not be created
     */
    ChannelPipe createFullDuplexPipe() throws IOException;

    /**
     * Create a two-way stream pipe.
     *
     * @return the created pipe
     * @throws java.io.IOException if the pipe could not be created
     */
    ChannelPipe createFullDuplexPipeConnection() throws IOException;

    /**
     * Create a one-way stream pipe.
     *
     * @return the created pipe
     * @throws java.io.IOException if the pipe could not be created
     */
    ChannelPipe createHalfDuplexPipe() throws IOException;

    /**
     * Create a two-way stream pipe.  The left side will be associated with this factory, and the right
     * side will be associated with the given peer.
     *
     * @param peer the peer to use for controlling the remote (right) side
     * @return the created pipe
     * @throws java.io.IOException if the pipe could not be created
     */
    ChannelPipe createFullDuplexPipeConnection(XnioIoFactory peer) throws IOException;

    /**
     * Create a one-way stream pipe.  The left (source) side will be associated with this factory, and the right
     * (sink) side will be associated with the given peer.
     *
     * @param peer the peer to use for the sink (right) side
     * @return the created pipe
     * @throws java.io.IOException if the pipe could not be created
     */
    ChannelPipe createHalfDuplexPipe(XnioIoFactory peer) throws IOException;
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy