/*
 * JBoss, Home of Professional Open Source
 *
 * Copyright 2013 Red Hat, Inc. and/or its affiliates.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package org.xnio;

import org.xnio.channels.CloseListenerSettable;
import org.xnio.conduits.ConduitStreamSinkChannel;
import org.xnio.conduits.ConduitStreamSourceChannel;
import org.xnio.conduits.StreamSinkConduit;
import org.xnio.conduits.StreamSourceConduit;

import static org.xnio._private.Messages.msg;

A connection between peers.
Author:David M. Lloyd
/** * A connection between peers. * * @author <a href="mailto:david.lloyd@redhat.com">David M. Lloyd</a> */
public abstract class StreamConnection extends Connection implements CloseListenerSettable<StreamConnection> { private ConduitStreamSourceChannel sourceChannel; private ConduitStreamSinkChannel sinkChannel; private ChannelListener<? super StreamConnection> closeListener;
Construct a new instance.
Params:
  • thread – the I/O thread
/** * Construct a new instance. * * @param thread the I/O thread */
protected StreamConnection(final XnioIoThread thread) { super(thread); } public void setCloseListener(final ChannelListener<? super StreamConnection> listener) { this.closeListener = listener; } public ChannelListener<? super StreamConnection> getCloseListener() { return closeListener; } public ChannelListener.Setter<? extends StreamConnection> getCloseSetter() { return new Setter<StreamConnection>(this); }
Set the source conduit for this channel. The source channel will automatically be updated.
Params:
  • conduit – the source conduit for this channel
/** * Set the source conduit for this channel. The source channel will automatically be updated. * * @param conduit the source conduit for this channel */
protected void setSourceConduit(StreamSourceConduit conduit) { this.sourceChannel = conduit == null ? null : new ConduitStreamSourceChannel(this, conduit); }
Set the sink conduit for this channel. The sink channel will automatically be updated.
Params:
  • conduit – the sink conduit for this channel
/** * Set the sink conduit for this channel. The sink channel will automatically be updated. * * @param conduit the sink conduit for this channel */
protected void setSinkConduit(StreamSinkConduit conduit) { this.sinkChannel = conduit == null ? null : new ConduitStreamSinkChannel(this, conduit); } void invokeCloseListener() { ChannelListeners.invokeChannelListener(this, closeListener); } private static <T> T notNull(T orig) throws IllegalStateException { if (orig == null) { throw msg.channelNotAvailable(); } return orig; }
Get the source channel.
Returns:the source channel
/** * Get the source channel. * * @return the source channel */
public ConduitStreamSourceChannel getSourceChannel() { return notNull(sourceChannel); }
Get the sink channel.
Returns:the sink channel
/** * Get the sink channel. * * @return the sink channel */
public ConduitStreamSinkChannel getSinkChannel() { return notNull(sinkChannel); } }