|
Java example source code file (OioSctpServerChannel.java)
The OioSctpServerChannel.java Java example source code/* * Copyright 2012 The Netty Project * * The Netty Project licenses this file to you 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 io.netty.channel.sctp.oio; import com.sun.nio.sctp.SctpChannel; import com.sun.nio.sctp.SctpServerChannel; import io.netty.channel.ChannelException; import io.netty.channel.ChannelFuture; import io.netty.channel.ChannelMetadata; import io.netty.channel.ChannelOutboundBuffer; import io.netty.channel.ChannelPromise; import io.netty.channel.oio.AbstractOioMessageChannel; import io.netty.channel.sctp.DefaultSctpServerChannelConfig; import io.netty.channel.sctp.SctpServerChannelConfig; import io.netty.util.internal.logging.InternalLogger; import io.netty.util.internal.logging.InternalLoggerFactory; import java.io.IOException; import java.net.InetAddress; import java.net.InetSocketAddress; import java.net.SocketAddress; import java.nio.channels.SelectionKey; import java.nio.channels.Selector; import java.util.Collections; import java.util.Iterator; import java.util.LinkedHashSet; import java.util.List; import java.util.Set; /** * {@link io.netty.channel.sctp.SctpServerChannel} implementation which use blocking mode to accept new * connections and create the {@link OioSctpChannel} for them. * * Be aware that not all operations systems support SCTP. Please refer to the documentation of your operation system, * to understand what you need to do to use it. Also this feature is only supported on Java 7+. */ public class OioSctpServerChannel extends AbstractOioMessageChannel implements io.netty.channel.sctp.SctpServerChannel { private static final InternalLogger logger = InternalLoggerFactory.getInstance(OioSctpServerChannel.class); private static final ChannelMetadata METADATA = new ChannelMetadata(false, 1); private static SctpServerChannel newServerSocket() { try { return SctpServerChannel.open(); } catch (IOException e) { throw new ChannelException("failed to create a sctp server channel", e); } } private final SctpServerChannel sch; private final SctpServerChannelConfig config; private final Selector selector; /** * Create a new instance with an new {@link SctpServerChannel} */ public OioSctpServerChannel() { this(newServerSocket()); } /** * Create a new instance from the given {@link SctpServerChannel} * * @param sch the {@link SctpServerChannel} which is used by this instance */ public OioSctpServerChannel(SctpServerChannel sch) { super(null); if (sch == null) { throw new NullPointerException("sctp server channel"); } this.sch = sch; boolean success = false; try { sch.configureBlocking(false); selector = Selector.open(); sch.register(selector, SelectionKey.OP_ACCEPT); config = new OioSctpServerChannelConfig(this, sch); success = true; } catch (Exception e) { throw new ChannelException("failed to initialize a sctp server channel", e); } finally { if (!success) { try { sch.close(); } catch (IOException e) { logger.warn("Failed to close a sctp server channel.", e); } } } } @Override public ChannelMetadata metadata() { return METADATA; } @Override public SctpServerChannelConfig config() { return config; } @Override public InetSocketAddress remoteAddress() { return null; } @Override public InetSocketAddress localAddress() { return (InetSocketAddress) super.localAddress(); } @Override public boolean isOpen() { return sch.isOpen(); } @Override protected SocketAddress localAddress0() { try { Iterator<SocketAddress> i = sch.getAllLocalAddresses().iterator(); if (i.hasNext()) { return i.next(); } } catch (IOException e) { // ignore } return null; } @Override public Set<InetSocketAddress> allLocalAddresses() { try { final Set<SocketAddress> allLocalAddresses = sch.getAllLocalAddresses(); final Set<InetSocketAddress> addresses = new LinkedHashSet Other Java examples (source code examples)Here is a short list of links related to this Java OioSctpServerChannel.java source code file: |
... this post is sponsored by my books ... | |
#1 New Release! |
FP Best Seller |
Copyright 1998-2021 Alvin Alexander, alvinalexander.com
All Rights Reserved.
A percentage of advertising revenue from
pages under the /java/jwarehouse
URI on this website is
paid back to open source projects.