List of usage examples for io.netty.channel.group ChannelMatcher ChannelMatcher
ChannelMatcher
From source file:com.github.mrstampy.gameboot.netty.NettyConnectionRegistry.java
License:Open Source License
private ChannelMatcher createMatcher(SystemIdKey... except) { if (except == null || except.length == 0) return NOOP_MATCHER; List<Channel> exceptions = new ArrayList<>(); for (SystemIdKey key : except) { Channel c = get(key);/*from w ww. j a v a2 s . co m*/ if (c != null) exceptions.add(c); } return exceptions.isEmpty() ? NOOP_MATCHER : new ChannelMatcher() { @Override public boolean matches(Channel channel) { return !exceptions.contains(channel); } }; }
From source file:de.saxsys.synchronizefx.netty.base.server.NettyBasicServer.java
License:Open Source License
@Override public void sendToAllExcept(final List<Command> commands, final Object nonReciver) { clients.writeAndFlush(commands, new ChannelMatcher() { @Override// w ww .j ava 2 s. co m public boolean matches(final Channel candidate) { return candidate != nonReciver; } }); }
From source file:org.jupiter.registry.ConfigServer.java
License:Apache License
private void handlePublish(RegisterMeta meta, Channel channel) { logger.info("Publish {} on channel{}.", meta, channel); attachPublishEventOnChannel(meta, channel); final ServiceMeta serviceMeta = meta.getServiceMeta(); ConfigWithVersion<ConcurrentMap<Address, RegisterMeta>> config = registerInfoContext .getRegisterMeta(serviceMeta); synchronized (registerInfoContext.publishLock(config)) { // putIfAbsentconfig.newVersion()???, ? if (config.getConfig().putIfAbsent(meta.getAddress(), meta) == null) { registerInfoContext.getServiceMeta(meta.getAddress()).add(serviceMeta); final Message msg = new Message(); msg.sign(PUBLISH_SERVICE);// www. j a v a 2s. c o m msg.setVersion(config.newVersion()); // ?+1 List<RegisterMeta> registerMetaList = Lists.newArrayList(config.getConfig().values()); // ????meta?? msg.data(new Pair<>(serviceMeta, registerMetaList)); subscriberChannels.writeAndFlush(msg, new ChannelMatcher() { @Override public boolean matches(Channel channel) { boolean doSend = isChannelSubscribeOnServiceMeta(serviceMeta, channel); if (doSend) { MessageNonAck msgNonAck = new MessageNonAck(serviceMeta, msg, channel); // ack??key(??handleAcknowledge), ??? messagesNonAck.put(msgNonAck.id, msgNonAck); } return doSend; } }); } } }
From source file:org.jupiter.registry.ConfigServer.java
License:Apache License
private void handlePublishCancel(RegisterMeta meta, Channel channel) { logger.info("Cancel publish {} on channel{}.", meta, channel); attachPublishCancelEventOnChannel(meta, channel); final ServiceMeta serviceMeta = meta.getServiceMeta(); ConfigWithVersion<ConcurrentMap<Address, RegisterMeta>> config = registerInfoContext .getRegisterMeta(serviceMeta); if (config.getConfig().isEmpty()) { return;//from w w w. java 2 s .c o m } synchronized (registerInfoContext.publishLock(config)) { // putIfAbsentconfig.newVersion()???, ? Address address = meta.getAddress(); RegisterMeta data = config.getConfig().remove(address); if (data != null) { registerInfoContext.getServiceMeta(address).remove(serviceMeta); final Message msg = new Message(); msg.sign(PUBLISH_SERVICE); msg.setVersion(config.newVersion()); // ?+1 List<RegisterMeta> registerMetaList = Lists.newArrayList(config.getConfig().values()); // ????meta?? msg.data(new Pair<>(serviceMeta, registerMetaList)); subscriberChannels.writeAndFlush(msg, new ChannelMatcher() { @Override public boolean matches(Channel channel) { boolean doSend = isChannelSubscribeOnServiceMeta(serviceMeta, channel); if (doSend) { MessageNonAck msgNonAck = new MessageNonAck(serviceMeta, msg, channel); // ack??key(??handleAcknowledge), ??? messagesNonAck.put(msgNonAck.id, msgNonAck); } return doSend; } }); } } }
From source file:org.jupiter.registry.DefaultRegistryServer.java
License:Apache License
private void handlePublish(RegisterMeta meta, Channel channel) { logger.info("Publish {} on channel{}.", meta, channel); attachPublishEventOnChannel(meta, channel); final RegisterMeta.ServiceMeta serviceMeta = meta.getServiceMeta(); ConfigWithVersion<ConcurrentMap<RegisterMeta.Address, RegisterMeta>> config = registerInfoContext .getRegisterMeta(serviceMeta); synchronized (registerInfoContext.publishLock(config)) { // putIfAbsentconfig.newVersion()???, ? if (config.getConfig().putIfAbsent(meta.getAddress(), meta) == null) { registerInfoContext.getServiceMeta(meta.getAddress()).add(serviceMeta); final Message msg = new Message(serializerType.value()); msg.messageCode(JProtocolHeader.PUBLISH_SERVICE); msg.version(config.newVersion()); // ?+1 msg.data(Pair.of(serviceMeta, meta)); subscriberChannels.writeAndFlush(msg, new ChannelMatcher() { @Override//from w w w .j a v a 2s .c o m public boolean matches(Channel channel) { boolean doSend = isChannelSubscribeOnServiceMeta(serviceMeta, channel); if (doSend) { MessageNonAck msgNonAck = new MessageNonAck(serviceMeta, msg, channel); // ack??key(??handleAcknowledge), ??? messagesNonAck.put(msgNonAck.id, msgNonAck); } return doSend; } }); } } }
From source file:org.jupiter.registry.DefaultRegistryServer.java
License:Apache License
private void handlePublishCancel(RegisterMeta meta, Channel channel) { logger.info("Cancel publish {} on channel{}.", meta, channel); attachPublishCancelEventOnChannel(meta, channel); final RegisterMeta.ServiceMeta serviceMeta = meta.getServiceMeta(); ConfigWithVersion<ConcurrentMap<RegisterMeta.Address, RegisterMeta>> config = registerInfoContext .getRegisterMeta(serviceMeta); if (config.getConfig().isEmpty()) { return;//from ww w .jav a 2s . c o m } synchronized (registerInfoContext.publishLock(config)) { // putIfAbsentconfig.newVersion()???, ? RegisterMeta.Address address = meta.getAddress(); RegisterMeta data = config.getConfig().remove(address); if (data != null) { registerInfoContext.getServiceMeta(address).remove(serviceMeta); final Message msg = new Message(serializerType.value()); msg.messageCode(JProtocolHeader.PUBLISH_CANCEL_SERVICE); msg.version(config.newVersion()); // ?+1 msg.data(Pair.of(serviceMeta, data)); subscriberChannels.writeAndFlush(msg, new ChannelMatcher() { @Override public boolean matches(Channel channel) { boolean doSend = isChannelSubscribeOnServiceMeta(serviceMeta, channel); if (doSend) { MessageNonAck msgNonAck = new MessageNonAck(serviceMeta, msg, channel); // ack??key(??handleAcknowledge), ??? messagesNonAck.put(msgNonAck.id, msgNonAck); } return doSend; } }); } } }