/** * create a buffer containing the encoding of this batch */ @Override public void write(ByteBuf dest) { for (TaskMessage msg : msgs) { writeTaskMessage(dest, msg); } //add a END_OF_BATCH indicator ControlMessage.EOB_MESSAGE.write(dest); }
@Override public Status status() { if (closing) { return Status.Closed; } else if (!connectionEstablished(allChannels)) { return Status.Connecting; } else { return Status.Ready; } }
public synchronized MessageBatch add(TaskMessage msg) { currentBatch.add(msg); if (currentBatch.isFull()) { MessageBatch ret = currentBatch; currentBatch = new MessageBatch(mesageBatchSize); return ret; } else { return null; } }
public synchronized MessageBatch drain() { if (!currentBatch.isEmpty()) { MessageBatch ret = currentBatch; currentBatch = new MessageBatch(mesageBatchSize); return ret; } else { return null; } } }
/** * Set private members using topology token. */ public SaslClientCallbackHandler(String topologyToken, byte[] token) { this.userName = SaslUtils .encodeIdentifier(topologyToken.getBytes()); this.userPassword = SaslUtils.encodePassword(token); }
SaslNettyServer(String topologyName, byte[] token) throws IOException { LOG.debug("SaslNettyServer: Topology token is: {} with authmethod {}", topologyName, SaslUtils.AUTH_DIGEST_MD5); try { SaslDigestCallbackHandler ch = new SaslNettyServer.SaslDigestCallbackHandler( topologyName, token); saslServer = Sasl.createSaslServer(SaslUtils.AUTH_DIGEST_MD5, null, SaslUtils.DEFAULT_REALM, SaslUtils.getSaslProps(), ch); } catch (SaslException e) { LOG.error("SaslNettyServer: Could not create SaslServer: ", e); } }
@Override public String secretKey() { return SaslUtils.getSecretKey(topoConf); }
/** * establish a connection to a remote server */ @Override public IConnection connect(String storm_id, String host, int port, AtomicBoolean[] remoteBpStatus) { return new Client(topoConf, remoteBpStatus, workerEventLoopGroup, clientScheduleService, host, port); }
/** * @param encoded status code * @return a control message per an encoded status code */ public static ControlMessage mkMessage(short encoded) { for (ControlMessage cm : ControlMessage.values()) { if (encoded == cm.code) { return cm; } } return null; }
@Override public void received(Object message, String remote, Channel channel) throws InterruptedException { List<TaskMessage> msgs = (List<TaskMessage>) message; enqueue(msgs, remote); }
public SaslStormServerHandler(ISaslServer server) throws IOException { this.server = server; getSASLCredentials(); }
public MessageBuffer(int mesageBatchSize) { this.mesageBatchSize = mesageBatchSize; this.currentBatch = new MessageBatch(mesageBatchSize); }
public synchronized boolean isEmpty() { return currentBatch.isEmpty(); }
@Override public void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) { if (!(cause instanceof ConnectException)) { LOG.info("Connection to " + client.getDstAddress() + " failed:", cause); } } }
MessageBatch(int buffer_size) { this.buffer_size = buffer_size; msgs = new ArrayList<>(); encoded_length = ControlMessage.EOB_MESSAGE.encodeLength(); }
/** * establish a server with a binding port */ @Override public synchronized IConnection bind(String storm_id, int port) { Server server = new Server(topoConf, port); serverConnections.add(server); return server; }
/** * Enqueue a task message to be sent to server. */ private void scheduleConnect(long delayMs) { scheduler.newTimeout(new Connect(dstAddress), delayMs, TimeUnit.MILLISECONDS); }
@Override protected void encode(ChannelHandlerContext ctx, INettySerializable msg, ByteBuf out) throws Exception { msg.write(out); }
private boolean connectionEstablished(ChannelGroup allChannels) { boolean allEstablished = true; for (Channel channel : allChannels) { if (!(connectionEstablished(channel))) { allEstablished = false; break; } } return allEstablished; }
@Override public String secretKey() { return SaslUtils.getSecretKey(topoConf); }