/*
* Copyright (c) 2018-2019 The original author or authors
*
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* and Apache License v2.0 which accompanies this distribution.
*
* The Eclipse Public License is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* The Apache License v2.0 is available at
* http://www.opensource.org/licenses/apache2.0.php
*
* You may elect to redistribute this code under either of these licenses.
*/
package io.vertx.amqp;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
import io.vertx.codegen.annotations.DataObject;
import io.vertx.core.json.JsonObject;
Configures the AMQP Sender.
/**
* Configures the AMQP Sender.
*/
@DataObject(generateConverter = true)
public class AmqpSenderOptions {
private String linkName;
private boolean dynamic;
private boolean autoDrained = true;
private List<String> capabilities = new ArrayList<>();
public AmqpSenderOptions() {
}
public AmqpSenderOptions(AmqpSenderOptions other) {
this();
setDynamic(other.isDynamic());
setLinkName(other.getLinkName());
setAutoDrained(other.isAutoDrained());
}
public AmqpSenderOptions(JsonObject json) {
super();
AmqpSenderOptionsConverter.fromJson(json, this);
}
public JsonObject toJson() {
JsonObject json = new JsonObject();
AmqpSenderOptionsConverter.toJson(this, json);
return json;
}
public String getLinkName() {
return linkName;
}
public AmqpSenderOptions setLinkName(String linkName) {
this.linkName = linkName;
return this;
}
Returns: whether the sender is using a dynamic address.
/**
* @return whether the sender is using a dynamic address.
*/
public boolean isDynamic() {
return dynamic;
}
Sets whether the Target terminus to be used should specify it is 'dynamic',
requesting the peer creates a node and names it with a generated address.
The address provided by the peer can then be inspected using the AmqpSender.address()
method on the AmqpSender
received once opened.
Params: - dynamic – true if the sender should request dynamic creation of a node and address to send to
Returns: the options
/**
* Sets whether the Target terminus to be used should specify it is 'dynamic',
* requesting the peer creates a node and names it with a generated address.
* <p>
* The address provided by the peer can then be inspected using the
* {@link AmqpSender#address()} method on the {@link AmqpSender} received once opened.
*
* @param dynamic true if the sender should request dynamic creation of a node and address to send to
* @return the options
*/
public AmqpSenderOptions setDynamic(boolean dynamic) {
this.dynamic = dynamic;
return this;
}
Get whether the link will automatically be marked drained after the send queue drain handler fires in drain mode.
See Also: Returns: whether the link will automatically be drained after the send queue drain handler fires in drain mode
/**
* Get whether the link will automatically be marked drained after the send queue drain handler fires in drain mode.
*
* @return whether the link will automatically be drained after the send queue drain handler fires in drain mode
* @see #setAutoDrained(boolean)
*/
public boolean isAutoDrained() {
return autoDrained;
}
Sets whether the link is automatically marked drained after the send queue drain handler callback
returns if the receiving peer requested that credit be drained.
true
by default.
Params: - autoDrained – whether the link will automatically be drained after the send queue drain handler fires in drain mode
Returns: the options
/**
* Sets whether the link is automatically marked drained after the send queue drain handler callback
* returns if the receiving peer requested that credit be drained.
* <p>
* {@code true} by default.
*
* @param autoDrained whether the link will automatically be drained after the send queue drain handler fires in drain mode
* @return the options
*/
public AmqpSenderOptions setAutoDrained(boolean autoDrained) {
this.autoDrained = autoDrained;
return this;
}
Gets the list of capabilities to be set on the sender target terminus.
Returns: the list of capabilities, empty if none.
/**
* Gets the list of capabilities to be set on the sender target terminus.
*
* @return the list of capabilities, empty if none.
*/
public List<String> getCapabilities() {
if (capabilities == null) {
return new ArrayList<>();
}
return capabilities;
}
Sets the list of capabilities to be set on the sender target terminus.
Params: - capabilities – the set of target capabilities.
Returns: the options
/**
* Sets the list of capabilities to be set on the sender target terminus.
*
* @param capabilities the set of target capabilities.
* @return the options
*/
public AmqpSenderOptions setCapabilities(List<String> capabilities) {
this.capabilities = capabilities;
return this;
}
Adds a capability to be set on the sender target terminus.
Params: - capability – the target capability to add, must not be
null
Returns: the options
/**
* Adds a capability to be set on the sender target terminus.
*
* @param capability the target capability to add, must not be {@code null}
* @return the options
*/
public AmqpSenderOptions addCapability(String capability) {
Objects.requireNonNull(capability, "The capability must not be null");
if (this.capabilities == null) {
this.capabilities = new ArrayList<>();
}
this.capabilities.add(capability);
return this;
}
}