phpnow集成php5.6,phpnow升级php5.6版本netty 抽象通道初始化

netty 管道线定义-ChannelPipeline:http://donald-draper.iteye.com/blog/2388453

netty 默认Channel管道线初始化:http://donald-draper.iteye.com/blog/2388613

netty 默认Channel管道线-添加通道处理器:http://donald-draper.iteye.com/blog/2388726

netty 默认Channel管道线-通道处理器移除与替换:http://donald-draper.iteye.com/blog/2388793

netty 默认Channel管道线-Inbound和Outbound事件处理:http://donald-draper.iteye.com/blog/2389148

netty 通道接口定义:http://donald-draper.iteye.com/blog/2392740

引言:

前一篇文章,我们看了通道接口的定义,先来回顾一下:

通道Channel,关联一个事件循环,即通道注册的事件循环EventLoop,一个Channel管道ChannelPipeline,用于存放通道处理器;一个字节buf分配器ByteBufAllocator,用于分配字节buf,还有一些获取通道状态的方式,是否注册到事件循环,通道是否打开,是否可写;另外还要获取通道配置ChannelConfig,通道元数据ChannelMetadata的方法;最重要的是,关联一个Unsafe,用于通道的地址绑定,连接操作以及断开,通道的读写,注册到事件循环以及反注册。

今天我们来看一下通道接口的抽象实现AbstractChannel :package io.netty.channel;

import io.netty.buffer.ByteBufAllocator;

import io.netty.util.DefaultAttributeMap;

import io.netty.util.ReferenceCountUtil;

import io.netty.util.internal.PlatformDependent;

import io.netty.util.internal.ThrowableUtil;

import io.netty.util.internal.logging.InternalLogger;

import io.netty.util.internal.logging.InternalLoggerFactory;

import java.io.IOException;

import java.net.ConnectException;

import java.net.InetSocketAddress;

import java.net.NoRouteToHostException;

import java.net.SocketAddress;

import java.net.SocketException;

import java.nio.channels.ClosedChannelException;

import java.nio.channels.NotYetConnectedException;

import java.util.concurrent.Executor;

import java.util.concurrent.RejectedExecutionException;

/**

* A skeletal {@link Channel} implementation.

*/

public abstract class AbstractChannel extends DefaultAttributeMap implements Channel {

private static final InternalLogger logger = InternalLoggerFactory.getInstance(AbstractChannel.class);

private static final ClosedChannelException FLUSH0_CLOSED_CHANNEL_EXCEPTION = ThrowableUtil.unknownStackTrace(

new ClosedChannelException(), AbstractUnsafe.class, "flush0()");//flush0方法调用时,通道关闭异常

private static final ClosedChannelException ENSURE_OPEN_CLOSED_CHANNEL_EXCEPTION = ThrowableUtil.unknownStackTrace(

new ClosedChannelException(), AbstractUnsafe.class, "ensureOpen(...)");//确保通道打开方法调用时,通道关闭异常

private static final ClosedChannelException CLOSE_CLOSED_CHANNEL_EXCEPTION = ThrowableUtil.unknownStackTrace(

new ClosedChannelException(), AbstractUnsafe.class, "close(...)");//close方法调用时,通道关闭异常

private static final ClosedChannelException WRITE_CLOSED_CHANNEL_EXCEPTION = ThrowableUtil.unknownStackTrace(

new ClosedChannelException(), AbstractUnsafe.class, "write(...)");//write方法调用时,通道关闭异常

private static final NotYetConnectedException FLUSH0_NOT_YET_CONNECTED_EXCEPTION = ThrowableUtil.unknownStackTrace(

new NotYetConnectedException(), AbstractUnsafe.class, "flush0()");//flush0方法调用时,通道还未连接异常

private final Channel parent;//所属通道

private final ChannelId id;//通道id

private final Unsafe unsafe;//硬件底层操作类

private final DefaultChannelPipeline pipeline;//Channel管道

private final VoidChannelPromise unsafeVoidPromise = new VoidChannelPromise(this, false);//空异步任务

private final CloseFuture closeFuture = new CloseFuture(this);//异步关闭任务

private volatile SocketAddress localAddress;//本地socket地址

private volatile SocketAddress remoteAddress;//远端socket地址

private volatile EventLoop eventLoop;//通道注册的事件循环

private volatile boolean registered;//是否注册

/** Cache for the string representation of this channel */

private boolean strValActive;

private String strVal;

...

}

从上面可以看出,抽象通道内部关联一个硬件底层操作类Unsafe,个事件循环,即通道注册的事件循环EventLoop,一个Channel管道ChannelPipeline,用于存放通道处理器,默认为DefaultChannelPipeline。

我们来简单看一下几个通道关闭异常定义:

private static final ClosedChannelException FLUSH0_CLOSED_CHANNEL_EXCEPTION = ThrowableUtil.unknownStackTrace(

new ClosedChannelException(), AbstractUnsafe.class, "flush0()");//flush0方法调用时,通道关闭异常

更多:phpnow升级php5.6版本netty 抽象通道初始化

https://www.002pc.comhttps://www.002pc.com/phpbiancheng/3275.html

你可能感兴趣的netty,初始化,抽象,通道No alive nodes found in your cluster

0踩

0 赞

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值