public ChannelFuture find(Channel channel) { return futures.get(channel.getId()); }
@Override public String toString() { String channelId = "TCP channel with Id: "; if (null != channel) { channelId += channel.getId().toString(); } else { channelId += "0"; } String sender = "Netty " + channelId; return sender; } }
@Override public String toString() { String channelId = "TCP channel with Id: "; if (null != channel) { channelId += channel.getId().toString(); } else { channelId += "0"; } String sender = "Netty " + channelId; return sender; } }
@Override public boolean contains(Object o) { if (o instanceof Integer) { return nonServerChannels.containsKey(o) || serverChannels.containsKey(o); } else if (o instanceof Channel) { Channel c = (Channel) o; if (o instanceof ServerChannel) { return serverChannels.containsKey(c.getId()); } else { return nonServerChannels.containsKey(c.getId()); } } else { return false; } }
/** * Compares the {@linkplain #getId() ID} of the two channels. */ public final int compareTo(Channel o) { return getId().compareTo(o.getId()); }
public ChannelGroupFuture write(Object message, SocketAddress remoteAddress) { Map<Integer, ChannelFuture> futures = new LinkedHashMap<Integer, ChannelFuture>(size()); if (message instanceof ChannelBuffer) { ChannelBuffer buf = (ChannelBuffer) message; for (Channel c: nonServerChannels.values()) { futures.put(c.getId(), c.write(buf.duplicate(), remoteAddress)); } } else { for (Channel c: nonServerChannels.values()) { futures.put(c.getId(), c.write(message, remoteAddress)); } } return new DefaultChannelGroupFuture(this, futures); }
public ChannelGroupFuture write(Object message) { Map<Integer, ChannelFuture> futures = new LinkedHashMap<Integer, ChannelFuture>(size()); if (message instanceof ChannelBuffer) { ChannelBuffer buf = (ChannelBuffer) message; for (Channel c: nonServerChannels.values()) { futures.put(c.getId(), c.write(buf.duplicate())); } } else { for (Channel c: nonServerChannels.values()) { futures.put(c.getId(), c.write(message)); } } return new DefaultChannelGroupFuture(this, futures); }
@Override public boolean remove(Object o) { Channel c = null; if (o instanceof Integer) { c = nonServerChannels.remove(o); if (c == null) { c = serverChannels.remove(o); } } else if (o instanceof Channel) { c = (Channel) o; if (c instanceof ServerChannel) { c = serverChannels.remove(c.getId()); } else { c = nonServerChannels.remove(c.getId()); } } if (c == null) { return false; } c.getCloseFuture().removeListener(remover); return true; }
@Override public boolean add(Channel channel) { ConcurrentMap<Integer, Channel> map = channel instanceof ServerChannel? serverChannels : nonServerChannels; boolean added = map.putIfAbsent(channel.getId(), channel) == null; if (added) { channel.getCloseFuture().addListener(remover); } return added; }
public ChannelGroupFuture disconnect() { Map<Integer, ChannelFuture> futures = new LinkedHashMap<Integer, ChannelFuture>(size()); for (Channel c: serverChannels.values()) { futures.put(c.getId(), c.disconnect().awaitUninterruptibly()); } for (Channel c: nonServerChannels.values()) { futures.put(c.getId(), c.disconnect()); } return new DefaultChannelGroupFuture(this, futures); }
public ChannelGroupFuture setReadable(boolean readable) { Map<Integer, ChannelFuture> futures = new LinkedHashMap<Integer, ChannelFuture>(size()); for (Channel c: serverChannels.values()) { futures.put(c.getId(), c.setReadable(readable).awaitUninterruptibly()); } for (Channel c: nonServerChannels.values()) { futures.put(c.getId(), c.setReadable(readable)); } return new DefaultChannelGroupFuture(this, futures); }
@Override public String toString() { String channelString = getChannel().toString(); StringBuilder buf = new StringBuilder(channelString.length() + 32); buf.append(channelString); buf.append(getChildChannel().isOpen()? " CHILD_OPEN: " : " CHILD_CLOSED: "); buf.append(getChildChannel().getId()); return buf.toString(); } }
public ChannelGroupFuture close() { Map<Integer, ChannelFuture> futures = new LinkedHashMap<Integer, ChannelFuture>(size()); for (Channel c: serverChannels.values()) { futures.put(c.getId(), c.close().awaitUninterruptibly()); } for (Channel c: nonServerChannels.values()) { futures.put(c.getId(), c.close()); } return new DefaultChannelGroupFuture(this, futures); }
public ChannelGroupFuture setInterestOps(int interestOps) { Map<Integer, ChannelFuture> futures = new LinkedHashMap<Integer, ChannelFuture>(size()); for (Channel c: serverChannels.values()) { futures.put(c.getId(), c.setInterestOps(interestOps).awaitUninterruptibly()); } for (Channel c: nonServerChannels.values()) { futures.put(c.getId(), c.setInterestOps(interestOps)); } return new DefaultChannelGroupFuture(this, futures); }
public ChannelGroupFuture unbind() { Map<Integer, ChannelFuture> futures = new LinkedHashMap<Integer, ChannelFuture>(size()); for (Channel c: serverChannels.values()) { futures.put(c.getId(), c.unbind().awaitUninterruptibly()); } for (Channel c: nonServerChannels.values()) { futures.put(c.getId(), c.unbind()); } return new DefaultChannelGroupFuture(this, futures); }
@Override public void channelOpen(ChannelHandlerContext ctx, ChannelStateEvent e) throws Exception { AbstractNettyServer.ALL_CHANNELS.add(e.getChannel()); LOG.debug("Added Channel with id: {} as the {}th open channel", e .getChannel().getId(), CHANNEL_COUNTER.incrementAndGet()); }
/** * Creates a new instance. */ public DefaultChannelGroupFuture(ChannelGroup group, Collection<ChannelFuture> futures) { if (group == null) { throw new NullPointerException("group"); } if (futures == null) { throw new NullPointerException("futures"); } this.group = group; Map<Integer, ChannelFuture> futureMap = new LinkedHashMap<Integer, ChannelFuture>(); for (ChannelFuture f: futures) { futureMap.put(f.getChannel().getId(), f); } this.futures = Collections.unmodifiableMap(futureMap); for (ChannelFuture f: this.futures.values()) { f.addListener(childListener); } // Done on arrival? if (this.futures.isEmpty()) { setDone(); } }
public synchronized void close() { if (isClosed) return; ChannelFuture closeFuture = channel.close(); closeFuture.awaitUninterruptibly(); if (!closeFuture.isSuccess()) { System.err.println("TCP channel " + channel.getId() + " did not close successfully"); } isClosed = true; }
@Override public void channelClosed(ChannelHandlerContext ctx, ChannelStateEvent e) throws Exception { LOG.debug("Netty Channel {} is closed.", e.getChannel().getId()); if (!playerSession.isShuttingDown()) { // Should not send close to session, since reconnection/other // business logic might be in place. Event event = Events.event(e, Events.DISCONNECT); playerSession.onEvent(event); } }
@Override public void channelConnected(ChannelHandlerContext ctx, ChannelStateEvent e) throws Exception { this.ctx = ctx; // readSuspended = true; ReadWriteStatus rws = checkAttachment(ctx); rws.readSuspend = true; ctx.getChannel().setReadable(false); if (trafficCounter == null) { // create a new counter now if (timer != null) { trafficCounter = new TrafficCounter(this, timer, "ChannelTC" + ctx.getChannel().getId(), checkInterval); } } if (trafficCounter != null) { trafficCounter.start(); } rws.readSuspend = false; ctx.getChannel().setReadable(true); super.channelConnected(ctx, e); }