static void toJson(ProtonTransportOptions obj, java.util.Map<String, Object> json) { json.put("heartbeat", obj.getHeartbeat()); json.put("maxFrameSize", obj.getMaxFrameSize()); } }
static void fromJson(Iterable<java.util.Map.Entry<String, Object>> json, ProtonTransportOptions obj) { for (java.util.Map.Entry<String, Object> member : json) { switch (member.getKey()) { case "heartbeat": if (member.getValue() instanceof Number) { obj.setHeartbeat(((Number)member.getValue()).intValue()); } break; case "maxFrameSize": if (member.getValue() instanceof Number) { obj.setMaxFrameSize(((Number)member.getValue()).intValue()); } break; } } }
ProtonTransportOptions transportOptions = new ProtonTransportOptions(); transportOptions.setHeartbeat(this.options.getHeartbeat()); transportOptions.setMaxFrameSize(this.options.getMaxFrameSize());
private void connectNetClient(NetClient netClient, String host, int port, String username, String password, ConnectCompletionHandler connectHandler, ProtonClientOptions options) { String serverName = options.getSniServerName() != null ? options.getSniServerName() : (options.getVirtualHost() != null ? options.getVirtualHost() : null); netClient.connect(port, host, serverName, res -> { if (res.succeeded()) { String virtualHost = options.getVirtualHost() != null ? options.getVirtualHost() : host; ProtonConnectionImpl conn = new ProtonConnectionImpl(vertx, virtualHost, (ContextInternal) Vertx.currentContext()); conn.disconnectHandler(h -> { LOG.trace("Connection disconnected"); if(!connectHandler.isComplete()) { connectHandler.handle(Future.failedFuture(new VertxException("Disconnected"))); } }); ProtonSaslClientAuthenticatorImpl authenticator = new ProtonSaslClientAuthenticatorImpl(username, password, options.getEnabledSaslMechanisms(), connectHandler); ProtonTransportOptions transportOptions = new ProtonTransportOptions(); transportOptions.setHeartbeat(options.getHeartbeat()); transportOptions.setMaxFrameSize(options.getMaxFrameSize()); conn.bindClient(netClient, res.result(), authenticator, transportOptions); // Need to flush here to get the SASL process going, or it will wait until calls on the connection are processed // later (e.g open()). conn.flush(); } else { connectHandler.handle(Future.failedFuture(res.cause())); } }); }
ProtonTransport(Connection connection, Vertx vertx, NetClient netClient, NetSocket socket, ProtonSaslAuthenticator authenticator, ProtonTransportOptions options) { this.connection = connection; this.vertx = vertx; this.netClient = netClient; this.socket = socket; int maxFrameSize = options.getMaxFrameSize() == 0 ? DEFAULT_MAX_FRAME_SIZE : options.getMaxFrameSize(); transport.setMaxFrameSize(maxFrameSize); transport.setOutboundFrameSizeLimit(maxFrameSize); transport.setEmitFlowEventOnSend(false); // TODO: make configurable transport.setIdleTimeout(2 * options.getHeartbeat()); ((TransportInternal) transport).setUseReadOnlyOutputBuffer(false); if (authenticator != null) { authenticator.init(this.socket, (ProtonConnection) this.connection.getContext(), transport); } this.authenticator = authenticator; transport.bind(connection); connection.collect(collector); socket.endHandler(this::handleSocketEnd); socket.handler(this::handleSocketBuffer); }