1 /* 2 * Copyright 2009 Red Hat, Inc. 3 * 4 * Red Hat licenses this file to you under the Apache License, version 2.0 5 * (the "License"); you may not use this file except in compliance with the 6 * License. You may obtain a copy of the License at: 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 12 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 13 * License for the specific language governing permissions and limitations 14 * under the License. 15 */ 16 package org.jboss.netty.channel; 17 18 import java.net.SocketAddress; 19 20 /** 21 * A skeletal server-side {@link Channel} implementation. A server-side 22 * {@link Channel} does not allow the following operations: 23 * <ul> 24 * <li>{@link #connect(SocketAddress)}</li> 25 * <li>{@link #disconnect()}</li> 26 * <li>{@link #getInterestOps()}</li> 27 * <li>{@link #setInterestOps(int)}</li> 28 * <li>{@link #write(Object)}</li> 29 * <li>{@link #write(Object, SocketAddress)}</li> 30 * <li>and the shortcut methods which calls the methods mentioned above 31 * </ul> 32 * 33 * @author <a href="http://www.jboss.org/netty/">The Netty Project</a> 34 * @author <a href="http://gleamynode.net/">Trustin Lee</a> 35 * 36 * @version $Rev: 2080 $, $Date: 2010-01-26 18:04:19 +0900 (Tue, 26 Jan 2010) $ 37 * 38 */ 39 public abstract class AbstractServerChannel extends AbstractChannel implements ServerChannel { 40 41 /** 42 * Creates a new instance. 43 * 44 * @param factory 45 * the factory which created this channel 46 * @param pipeline 47 * the pipeline which is going to be attached to this channel 48 * @param sink 49 * the sink which will receive downstream events from the pipeline 50 * and send upstream events to the pipeline 51 */ 52 protected AbstractServerChannel( 53 ChannelFactory factory, 54 ChannelPipeline pipeline, 55 ChannelSink sink) { 56 super(null, factory, pipeline, sink); 57 } 58 59 @Override 60 public ChannelFuture connect(SocketAddress remoteAddress) { 61 return getUnsupportedOperationFuture(); 62 } 63 64 @Override 65 public ChannelFuture disconnect() { 66 return getUnsupportedOperationFuture(); 67 } 68 69 @Override 70 public int getInterestOps() { 71 return OP_NONE; 72 } 73 74 @Override 75 public ChannelFuture setInterestOps(int interestOps) { 76 return getUnsupportedOperationFuture(); 77 } 78 79 @Override 80 protected void setInterestOpsNow(int interestOps) { 81 // Ignore. 82 } 83 84 @Override 85 public ChannelFuture write(Object message) { 86 return getUnsupportedOperationFuture(); 87 } 88 89 @Override 90 public ChannelFuture write(Object message, SocketAddress remoteAddress) { 91 return getUnsupportedOperationFuture(); 92 } 93 94 public boolean isConnected() { 95 return false; 96 } 97 }