cindy自己写了个buffer接口,功能更多更丰富。具体可以看看,真的很多 呵呵
而且有些实现类。
ByteArrayBuffer其实是对byte[]的封装,ByteBufferBuffer是对原始ByteBuffer的封装。LinkedBuffer是对buffer数组的封装,他们都有个wrap方法。Delegate开头的都是这些buffer代理类,
如果使用的ByteArrayEncoder,ByteBufferEncoder,BufferEncoder这些来编码的话, 选择具体哪个buffer是在BufferFactory类确定的,如
public static Buffer wrap(byte[] array) {
return ByteArrayBuffer.wrap(array);
}
如果使用的是SerialEncoder来编码的话,buffer的构建是由BufferBuilder。
public BufferBuilder(int capacity) {
if (capacity <= 0)
capacity = 512;
buffer = BufferFactory.allocate(capacity);
}
BufferPool的实现类有DefaultBufferPool和NullBufferPool
DefaultBufferPool:
public static Buffer allocate(int capacity, boolean direct) {
if (capacity < 0)
throw new IllegalArgumentException();
return pool.allocate(capacity, direct);
}
public Buffer allocate(int capacity, boolean direct) {
getCount.incrementAndGet();
int index = indexFor(capacity);
if (index >= 0) {
Integer key = new Integer(capacity);
Object obj = get(direct, index, key);
if (obj == null && ++index != POSITIVE_INTEGER_SIZE)
obj = get(direct, index, key);
if (obj != null) {
hitCount.incrementAndGet();
if (direct) {
ByteBuffer content = (ByteBuffer) obj;
content.clear();
return new DirectBuffer(content, capacity);
} else {
return new HeapBuffer((byte[]) obj, capacity);
}
可以看到DefaultBufferPool最后得到的要么是DirectBuffer,要么是HeapBuffer。
BufferFactory:
private static final boolean useDirectBuffer = Configuration
.isUseDirectBuffer();
除非配置文件写了使用DirectBuffer,否则使用的是HeapBuffer
NullBufferPool :
public class NullBufferPool implements BufferPool {
public Buffer allocate(int capacity, boolean direct) {
return direct ? (Buffer) ByteBufferBuffer.allocate(capacity, true)
: ByteArrayBuffer.allocate(capacity);
}
}
NullBufferPool 得到是ByteBufferBuffer。
当buffer的资源释放异常的时候会 抛出ReleasedBufferException这个异常。
总的来说buffer的结构还是比较清晰的,就是看起来好像类很多。
- 大小: 11.7 KB
分享到:
相关推荐
开源nio框架cindy,cindy-3.0b1-src
cindy最新源码和库 eclipse工程
cindy.jar 源码工具包
基于java的开发源码-异步IO框架 Cindy.zip 基于java的开发源码-异步IO框架 Cindy.zip 基于java的开发源码-异步IO框架 Cindy.zip 基于java的开发源码-异步IO框架 Cindy.zip 基于java的开发源码-异步IO框架 Cindy.zip ...
异步IO框架 Cindy源码
java源码:异步IO框架 Cindy.rar
Netty、Mina、Cindy都是不错的NIO开源框架,后两者都是在Netty的基础上演化出来的。所以要学习好Java的异步通信框架,这三个都是不可多得的好材料。 本资源仅供学习和参考使用,若要进行开发,请下载相应的Jar包
基于Java的实例源码-异步IO框架 Cindy.zip
异步IO框架 Cindy
Java 源码包 Applet钢琴模拟程序java源码 2个目标文件,提供基本的音乐编辑功能。编辑音乐软件的朋友,这款实例会对你有所帮助。 Calendar万年历 1个目标文件 EJB 模拟银行ATM流程及操作源代码 6个目标文件,EJB来...
免责声明:资料部分来源于合法的互联网渠道收集和整理,部分自己学习积累成果,供大家学习参考与交流。收取的费用仅用于收集和整理资料耗费时间的酬劳。 本人尊重原创作者或出版方,资料版权归原作者或出版方所有,...
笔者当初为了学习JAVA,收集了很多经典源码,源码难易程度分为初级、中级、高级等,详情看源码列表,需要的可以直接下载! 这些源码反映了那时那景笔者对未来的盲目,对代码的热情、执着,对IT的憧憬、向往!此时此...
Packages with 71 components for all delphi versions (since D7) to build Windows 32/64 bit applications: VCL controls (labels, buttons, panels, Edits, TabControls, StaticText) with features like ...
Packages with 76 components for all delphi versions (since D7) to build Windows 32/64 bit applications: VCL controls (labels, buttons, panels, Edits, TabControls, StaticText) with features like ...
delphi 控件,优秀的界面设计工具 TcyBevel: multi colored bevels. - TcyPanel: runtime resize feature, multi colored bevels, gradient and shadow feature. - TcyAdvPanel: like TcyPanel plus wallpaper ...
运用了Cindy723/PyRPA: 基于Pyautogui的自动化工具 的脚本 unity和win混合 【使用方法】 Releases里下载双击运行Mion_pet.exe即可; 【备注】 主要针对计算机相关专业的正在做毕设的学生和需要项目实战的C#学习者。 ...
Netty、Mina、Cindy都是不错的NIO开源框架,后两者都是在Netty的基础上演化出来的。所以要学习好Java的异步通信框架,这三个都是不可多得的好材料。 本资源仅供学习和参考使用,若要进行开发,请下载相应的Jar包。
Cindy components v4.43 + Demo.zip
基于Java的异步IO框架 Cindy.zip