/*
 * Copyright 2016 Red Hat Inc.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package io.vertx.mqtt;

import io.vertx.codegen.annotations.Fluent;
import io.vertx.codegen.annotations.VertxGen;
import io.vertx.core.AsyncResult;
import io.vertx.core.Handler;
import io.vertx.core.Vertx;
import io.vertx.mqtt.impl.MqttServerImpl;

An MQTT server

You can accept incoming MQTT connection requests providing a endpointHandler(Handler<MqttEndpoint>). As the requests arrive, the handler will be called with an instance of MqttEndpoint in order to manage the communication with the remote MQTT client.

/** * An MQTT server * <p> * You can accept incoming MQTT connection requests providing a {@link MqttServer#endpointHandler(Handler)}. As the * requests arrive, the handler will be called with an instance of {@link MqttEndpoint} in order to manage the * communication with the remote MQTT client. * </p> */
@VertxGen public interface MqttServer {
Return an MQTT server instance
Params:
  • vertx – Vert.x instance
  • options – MQTT server options
Returns:MQTT server instance
/** * Return an MQTT server instance * * @param vertx Vert.x instance * @param options MQTT server options * @return MQTT server instance */
static MqttServer create(Vertx vertx, MqttServerOptions options) { return new MqttServerImpl(vertx, options); }
Return an MQTT server instance using default options
Params:
  • vertx – Vert.x instance
Returns:MQTT server instance
/** * Return an MQTT server instance using default options * * @param vertx Vert.x instance * @return MQTT server instance */
static MqttServer create(Vertx vertx) { return new MqttServerImpl(vertx, new MqttServerOptions()); }
Start the server listening for incoming connections using the specified options through the constructor
Returns:a reference to this, so the API can be used fluently
/** * Start the server listening for incoming connections using the specified options * through the constructor * * @return a reference to this, so the API can be used fluently */
@Fluent MqttServer listen();
Start the server listening for incoming connections on the port and host specified
Params:
  • port – the port to listen on
  • host – the host to listen on
Returns:a reference to this, so the API can be used fluently
/** * Start the server listening for incoming connections on the port and host specified * * @param port the port to listen on * @param host the host to listen on * @return a reference to this, so the API can be used fluently */
@Fluent MqttServer listen(int port, String host);
Start the server listening for incoming connections on the port and host specified It ignores any options specified through the constructor
Params:
  • port – the port to listen on
  • host – the host to listen on
  • listenHandler – handler called when the asynchronous listen call ends
Returns:a reference to this, so the API can be used fluently
/** * Start the server listening for incoming connections on the port and host specified * It ignores any options specified through the constructor * * @param port the port to listen on * @param host the host to listen on * @param listenHandler handler called when the asynchronous listen call ends * @return a reference to this, so the API can be used fluently */
@Fluent MqttServer listen(int port, String host, Handler<AsyncResult<MqttServer>> listenHandler);
Start the server listening for incoming connections on the port specified but on "0.0.0.0" as host. It ignores any options specified through the constructor
Params:
  • port – the port to listen on
Returns:a reference to this, so the API can be used fluently
/** * Start the server listening for incoming connections on the port specified but on * "0.0.0.0" as host. It ignores any options specified through the constructor * * @param port the port to listen on * @return a reference to this, so the API can be used fluently */
@Fluent MqttServer listen(int port);
Start the server listening for incoming connections on the port specified but on "0.0.0.0" as host. It ignores any options specified through the constructor
Params:
  • port – the port to listen on
  • listenHandler – handler called when the asynchronous listen call ends
Returns:a reference to this, so the API can be used fluently
/** * Start the server listening for incoming connections on the port specified but on * "0.0.0.0" as host. It ignores any options specified through the constructor * * @param port the port to listen on * @param listenHandler handler called when the asynchronous listen call ends * @return a reference to this, so the API can be used fluently */
@Fluent MqttServer listen(int port, Handler<AsyncResult<MqttServer>> listenHandler);
Start the server listening for incoming connections using the specified options through the constructor
Params:
  • listenHandler – handler called when the asynchronous listen call ends
Returns:a reference to this, so the API can be used fluently
/** * Start the server listening for incoming connections using the specified options * through the constructor * * @param listenHandler handler called when the asynchronous listen call ends * @return a reference to this, so the API can be used fluently */
@Fluent MqttServer listen(Handler<AsyncResult<MqttServer>> listenHandler);
Set the endpoint handler for the server. If an MQTT client connect to the server a new MqttEndpoint instance will be created and passed to the handler
Params:
  • handler – the endpoint handler
Returns:a reference to this, so the API can be used fluently
/** * Set the endpoint handler for the server. If an MQTT client connect to the server a * new MqttEndpoint instance will be created and passed to the handler * * @param handler the endpoint handler * @return a reference to this, so the API can be used fluently */
@Fluent MqttServer endpointHandler(Handler<MqttEndpoint> handler);
Set an exception handler for the server, that will be called when an error happens independantly of an accepted MqttEndpoint, like a rejected connection
Params:
  • handler – the exception handler
Returns:a reference to this, so the API can be used fluently
/** * Set an exception handler for the server, that will be called when an error happens independantly of an * accepted {@link MqttEndpoint}, like a rejected connection * * @param handler the exception handler * @return a reference to this, so the API can be used fluently */
@Fluent MqttServer exceptionHandler(Handler<Throwable> handler);
The actual port the server is listening on. This is useful if you bound the server specifying 0 as port number signifying an ephemeral port
Returns:the actual port the server is listening on.
/** * The actual port the server is listening on. This is useful if you bound the server specifying 0 as port number * signifying an ephemeral port * * @return the actual port the server is listening on. */
int actualPort();
Close the server.

The close happens asynchronously and the server may not be closed until some time after the call has returned.

/** * Close the server. * <p> * The close happens asynchronously and the server may not be closed until some time after the call has returned. */
void close();
Close the server supplying an handler that will be called when the server is actually closed (or has failed).
Params:
  • completionHandler – the handler called on completion
/** * Close the server supplying an handler that will be called when the server is actually closed (or has failed). * * @param completionHandler the handler called on completion */
void close(Handler<AsyncResult<Void>> completionHandler); }