我是靠谱客的博主 狂野汽车,最近开发中收集的这篇文章主要介绍Netty学习笔记15 Netty Attribute使用,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

Attribute<?> 用来在channel上记录数据。

操作

写示例

AttributeKey<byte[]> srcdataAttrKey = AttributeKey.valueOf("srcdata");
byte[] mydata=new byte[msg.readableBytes()];
Attribute<byte[]> srcdataAttr = ctx.channel().attr(CloudConstants.srcdataAttrKey);
srcdataAttr.set(mydata);

读示例

AttributeKey<String> nameAttrKey = AttributeKey.valueOf("nameattr");

Attribute<String> attr = ctx.channel().attr(nameAttrKey);
String name= attr.get();

通过attr查找channel

import io.netty.channel.Channel;
import io.netty.channel.group.ChannelMatcher;
import io.netty.util.Attribute;

public class MatcherByName  implements ChannelMatcher{
    private String name;

    public MatcherByName(String name){
        this.name = name;
    }
    /**
     * 查找某个channel,找自己所在channel,不是找peer
     * 
     * */
    @Override
    public boolean matches(Channel ch) {

        Attribute<String> nameAttr= ch.attr(ChannelConstants.ChannelAttribute);
        String name = nameAttr.get();
        if(name==null)return false;

        if(this.name.equals(name))
            return true;
        else
            return false;

    }

}
    /**
     * 通过matcher找channel list
     * @param matcher
     * @return
     */
    public static List<Channel> getChannelsFromMatcher(ChannelMatcher matcher){
        Object[] channels =NettyService.allChannels.toArray();
        List<Channel> list = new ArrayList<Channel>();
        Channel channel = null;
        for(Object ch : channels) {
            if(matcher.matches((Channel)ch)) {
                channel = (Channel)ch;
                list.add(channel);
            }
        }
        return list;
    }

    public static Channel getChannelByName(String name){
         MatcherByName matcher=new MatcherByName(name);
         List<Channel> list= getChannelsFromMatcher(matcher);
        if(list!=null && list.size()>0)
            return list.get(0);
        else
            return null;
    }

最后

以上就是狂野汽车为你收集整理的Netty学习笔记15 Netty Attribute使用的全部内容,希望文章能够帮你解决Netty学习笔记15 Netty Attribute使用所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(50)

评论列表共有 0 条评论

立即
投稿
返回
顶部