/*
* 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.DataObject;
import io.vertx.core.buffer.Buffer;
import io.vertx.core.http.ClientAuth;
import io.vertx.core.impl.Arguments;
import io.vertx.core.json.JsonObject;
import io.vertx.core.net.JksOptions;
import io.vertx.core.net.KeyCertOptions;
import io.vertx.core.net.NetServerOptions;
import io.vertx.core.net.PemKeyCertOptions;
import io.vertx.core.net.PemTrustOptions;
import io.vertx.core.net.PfxOptions;
import io.vertx.core.net.TrustOptions;
Represents options used by the MQTT server
/**
* Represents options used by the MQTT server
*/
@DataObject
public class MqttServerOptions extends NetServerOptions {
public static final int DEFAULT_PORT = 1883; // Default port is 1883 for MQTT
public static final int DEFAULT_TLS_PORT = 8883; // Default TLS port is 8883 for MQTT
public static final int DEFAULT_MAX_MESSAGE_SIZE = -1;
public static final int DEFAULT_TIMEOUT_ON_CONNECT = 90;
// max message size (variable header + payload) in bytes
private int maxMessageSize;
// if clientid should be autogenerated (if "zero-bytes")
private boolean isAutoClientId;
// timeout on CONNECT packet
private int timeoutOnConnect;
Default constructor
/**
* Default constructor
*/
public MqttServerOptions() {
super();
// override the default port
this.setPort(DEFAULT_PORT);
this.maxMessageSize = DEFAULT_MAX_MESSAGE_SIZE;
this.isAutoClientId = true;
this.timeoutOnConnect = DEFAULT_TIMEOUT_ON_CONNECT;
}
Create an options from JSON
Params: - json – the JSON
/**
* Create an options from JSON
*
* @param json the JSON
*/
public MqttServerOptions(JsonObject json) {
super(json);
// override the default port
this.setPort(json.getInteger("port", DEFAULT_PORT));
this.maxMessageSize = json.getInteger("maxMessageSize", DEFAULT_MAX_MESSAGE_SIZE);
this.isAutoClientId = json.getBoolean("isAutoClientId", true);
this.timeoutOnConnect = json.getInteger("timeoutOnConnect", DEFAULT_TIMEOUT_ON_CONNECT);
if ((this.maxMessageSize > 0) && (this.getReceiveBufferSize() > 0)) {
Arguments.require(this.getReceiveBufferSize() >= this.maxMessageSize,
"Receiver buffer size can't be lower than max message size");
}
}
Copy constructor
Params: - other – the options to copy
/**
* Copy constructor
*
* @param other the options to copy
*/
public MqttServerOptions(MqttServerOptions other) {
super(other);
}
@Override
public MqttServerOptions setPort(int port) {
super.setPort(port);
return this;
}
@Override
public MqttServerOptions setHost(String host) {
super.setHost(host);
return this;
}
@Override
public MqttServerOptions setClientAuth(ClientAuth clientAuth) {
super.setClientAuth(clientAuth);
return this;
}
@Override
public MqttServerOptions setSsl(boolean ssl) {
super.setSsl(ssl);
return this;
}
@Override
public MqttServerOptions setKeyCertOptions(KeyCertOptions options) {
super.setKeyCertOptions(options);
return this;
}
@Override
public MqttServerOptions setKeyStoreOptions(JksOptions options) {
super.setKeyStoreOptions(options);
return this;
}
@Override
public MqttServerOptions setPfxKeyCertOptions(PfxOptions options) {
super.setPfxKeyCertOptions(options);
return this;
}
@Override
public MqttServerOptions setPemKeyCertOptions(PemKeyCertOptions options) {
super.setPemKeyCertOptions(options);
return this;
}
@Override
public MqttServerOptions setTrustOptions(TrustOptions options) {
super.setTrustOptions(options);
return this;
}
@Override
public MqttServerOptions setTrustStoreOptions(JksOptions options) {
super.setTrustStoreOptions(options);
return this;
}
@Override
public MqttServerOptions setPemTrustOptions(PemTrustOptions options) {
super.setPemTrustOptions(options);
return this;
}
@Override
public MqttServerOptions setPfxTrustOptions(PfxOptions options) {
super.setPfxTrustOptions(options);
return this;
}
@Override
public MqttServerOptions addEnabledCipherSuite(String suite) {
super.addEnabledCipherSuite(suite);
return this;
}
@Override
public MqttServerOptions addEnabledSecureTransportProtocol(final String protocol) {
super.addEnabledSecureTransportProtocol(protocol);
return this;
}
@Override
public MqttServerOptions addCrlPath(String crlPath) throws NullPointerException {
super.addCrlPath(crlPath);
return this;
}
@Override
public MqttServerOptions addCrlValue(Buffer crlValue) throws NullPointerException {
super.addCrlValue(crlValue);
return this;
}
@Override
public MqttServerOptions setReceiveBufferSize(int receiveBufferSize) {
if ((this.maxMessageSize > 0) && (receiveBufferSize > 0)) {
Arguments.require(receiveBufferSize >= this.maxMessageSize,
"Receiver buffer size can't be lower than max message size");
}
super.setReceiveBufferSize(receiveBufferSize);
return this;
}
@Override
public MqttServerOptions setSni(boolean sni) {
super.setSni(sni);
return this;
}
Set max MQTT message size
Params: - maxMessageSize – max MQTT message size (variable header + payload)
Returns: MQTT server options instance
/**
* Set max MQTT message size
*
* @param maxMessageSize max MQTT message size (variable header + payload)
* @return MQTT server options instance
*/
public MqttServerOptions setMaxMessageSize(int maxMessageSize) {
Arguments.require(maxMessageSize > 0 || maxMessageSize == DEFAULT_MAX_MESSAGE_SIZE, "maxMessageSize must be > 0");
if ((maxMessageSize > 0) && (this.getReceiveBufferSize() > 0)) {
Arguments.require(this.getReceiveBufferSize() >= maxMessageSize,
"Receiver buffer size can't be lower than max message size");
}
this.maxMessageSize = maxMessageSize;
return this;
}
Returns: max MQTT message size (variable header + payload)
/**
* @return max MQTT message size (variable header + payload)
*/
public int getMaxMessageSize() {
return this.maxMessageSize;
}
Set if clientid should be auto-generated when it's "zero-bytes"
Params: - isAutoClientId –
Returns: MQTT server options instance
/**
* Set if clientid should be auto-generated when it's "zero-bytes"
*
* @param isAutoClientId
* @return MQTT server options instance
*/
public MqttServerOptions setAutoClientId(boolean isAutoClientId) {
this.isAutoClientId = isAutoClientId;
return this;
}
Returns: if clientid should be auto-generated when it's "zero-bytes" (default is true)
/**
* @return if clientid should be auto-generated when it's "zero-bytes" (default is true)
*/
public boolean isAutoClientId() {
return this.isAutoClientId;
}
Set the timeout on CONNECT packet
Params: - timeoutOnConnect – timeout on CONNECT before closing connection
Returns: MQTT server options instance
/**
* Set the timeout on CONNECT packet
*
* @param timeoutOnConnect timeout on CONNECT before closing connection
* @return MQTT server options instance
*/
public MqttServerOptions setTimeoutOnConnect(int timeoutOnConnect) {
this.timeoutOnConnect = timeoutOnConnect;
return this;
}
Returns: timeout on CONNECT before closing connection
/**
* @return timeout on CONNECT before closing connection
*/
public int timeoutOnConnect() {
return this.timeoutOnConnect;
}
}