java close 方法_Java IoSession.close方法代码示例

import org.apache.mina.core.session.IoSession; //导入方法依赖的package包/类

@Override

public void messageReceived ( final NextFilter nextFilter, final IoSession session, final Object message ) throws Exception

{

logger.debug ( "messageReceived - message: {}, session: {}", message, session ); //$NON-NLS-1$

final boolean opened = isOpened ( session );

if ( message instanceof HelloMessage && !opened && !this.clientMode )

{

// received hello when we need it

final Object reply = createSession ( session, nextFilter, (HelloMessage)message );

logger.info ( "Reply to session creation: {}", reply ); //$NON-NLS-1$

if ( reply instanceof AcceptMessage )

{

this.acceptedProperties = Collections.unmodifiableMap ( ( (AcceptMessage)reply ).getProperties () );

// configure the session, enable filters

configureSession ( session, nextFilter, this.acceptedProperties );

/*

* send reply - this must be the first message after the configureSession call

* so that filter can reset their initial flag. The first message must still be

* un-filtered since the other side needs to adapt its filter chain first. However

* this must be an atomic operation since sending and changing the filter in two

* separate steps could mean that we already receive the reply to our ACCEPT

* before we had a chance to change our filter chain.

*/

nextFilter.filterWrite ( session, new DefaultWriteRequest ( reply ) );

// post configure the session

postConfigureSession ( session, nextFilter, this.acceptedProperties );

if ( isOpened ( session ) )

{

// if the session is marked "open" by the StartSessionHandshake, then notify the open state immediately

startSession ( session, nextFilter );

}

}

else

{

// send reply

nextFilter.filterWrite ( session, new DefaultWriteRequest ( reply ) );

// close - after message was sent

session.close ( false );

}

dumpFilterChain ( session );

logger.debug ( "Done handling HelloMessage" );

}

else if ( message instanceof AcceptMessage && !opened && this.clientMode )

{

this.acceptedProperties = Collections.unmodifiableMap ( ( (AcceptMessage)message ).getProperties () );

configureSession ( session, nextFilter, this.acceptedProperties );

postConfigureSession ( session, nextFilter, this.acceptedProperties );

markOpened ( session );

startSession ( session, nextFilter );

dumpFilterChain ( session );

}

else if ( message instanceof CloseMessage )

{

// remote will close

session.setAttribute ( "closeReason.message", ( (CloseMessage)message ).getMessage () ); //$NON-NLS-1$

session.setAttribute ( "closeReason.code", ( (CloseMessage)message ).getCode () ); //$NON-NLS-1$

session.close ( true );

}

else if ( message instanceof DataMessage && opened )

{

nextFilter.messageReceived ( session, message );

}

else if ( message instanceof StartMessage && !opened )

{

logger.debug ( "Starting session" );

markOpened ( session );

startSession ( session, nextFilter );

dumpFilterChain ( session );

}

else

{

throw new IllegalStateException ( String.format ( "(opened: %s) Message type: %s", opened, message.getClass () ) ); //$NON-NLS-1$

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值