Netty3 源码分析 - ChannelStateEvent

Datetime:2016-08-23 03:46:23          Topic: Netty  Source Code Analysis           Share

public   class DownstreamChannelStateEvent   implements ChannelStateEvent {

     private   final  Channel  channel ;

     private   final  ChannelFuture  future ;

     private   final  ChannelState  state ;

     private   final  Object  value ;

     //和UpstreamChannelStateEvent不同的是,多了一个Future对象,需要合适的时候得到通知

     public  DownstreamChannelStateEvent(

            Channel channel, ChannelFuture future,

            ChannelState state, Object value) {

         if  (channel ==  null ) {

             throw   new  NullPointerException( "channel" );

        }

         if  (future ==  null ) {

             throw   new  NullPointerException( "future" );

        }

         if  (state ==  null ) {

             throw   new  NullPointerException( "state" );

        }

         this .   channel  = channel;

         this .   future  = future;

         this .   state  = state;

         this .   value  = value;

    }

     public  Channel getChannel() {

         return   channel ;

    }

     public  ChannelFuture getFuture() {

         return   future ;

    }

     public  ChannelState getState() {

         return   state ;

    }

     public  Object getValue() {

         return   value ;

    }

     @Override

     public  String toString() {

        String channelString = getChannel().toString();

        StringBuilder buf =  new  StringBuilder(channelString.length() + 64);

        buf.append(channelString);

         switch  (getState()) {

         case   OPEN :

             if  (Boolean. TRUE .equals(getValue())) {

                buf.append( " OPEN" );

            }  else  {

                buf.append( " CLOSE" );

            }

             break ;

         case   BOUND :

             if  (getValue() !=  null ) {

                buf.append( " BIND: " );

                buf.append(getValue());

            }  else  {

                buf.append( " UNBIND" );

            }

             break ;

         case   CONNECTED :

             if  (getValue() !=  null ) {

                buf.append( " CONNECT: " );

                buf.append(getValue());

            }  else  {

                buf.append( " DISCONNECT" );

            }

             break ;

         case   INTEREST_OPS :

            buf.append( " CHANGE_INTEREST: "   );

            buf.append(getValue());

             break ;

         default :

            buf.append( ' ' );

            buf.append(getState().name());

            buf.append( ": " );

            buf.append(getValue());

        }

         return  buf.toString();

    }

}





About List