io.nats.client.api.ServerInfo Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of jnats Show documentation
Show all versions of jnats Show documentation
Client library for working with the NATS messaging system.
// Copyright 2015-2018 The NATS Authors
// 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.nats.client.api;
import io.nats.client.support.JsonParseException;
import io.nats.client.support.JsonParser;
import io.nats.client.support.JsonValue;
import io.nats.client.support.ServerVersion;
import java.util.Arrays;
import java.util.List;
import static io.nats.client.support.ApiConstants.*;
import static io.nats.client.support.JsonValueUtils.*;
public class ServerInfo {
private final String serverId;
private final String serverName;
private final String version;
private final String go;
private final String host;
private final int port;
private final boolean headersSupported;
private final boolean authRequired;
private final boolean tlsRequired;
private final boolean tlsAvailable;
private final long maxPayload;
private final List connectURLs;
private final int protocolVersion;
private final byte[] nonce;
private final boolean lameDuckMode;
private final boolean jetStream;
private final int clientId;
private final String clientIp;
private final String cluster;
public ServerInfo(String json) {
// INFO{ INFO<\t>{ or {
if (json == null || json.length() < 6 || ('{' != json.charAt(0) && '{' != json.charAt(5))) {
throw new IllegalArgumentException("Invalid Server Info");
}
JsonValue jv;
try {
jv = JsonParser.parse(json, json.indexOf("{"));
}
catch (JsonParseException e) {
throw new IllegalArgumentException("Invalid Server Info Json");
}
serverId = readString(jv, SERVER_ID);
serverName = readString(jv, SERVER_NAME);
version = readString(jv, VERSION);
go = readString(jv, GO);
host = readString(jv, HOST);
headersSupported = readBoolean(jv, HEADERS);
authRequired = readBoolean(jv, AUTH_REQUIRED);
nonce = readBytes(jv, NONCE);
tlsRequired = readBoolean(jv, TLS_REQUIRED);
tlsAvailable = readBoolean(jv, TLS_AVAILABLE);
lameDuckMode = readBoolean(jv, LAME_DUCK_MODE);
jetStream = readBoolean(jv, JETSTREAM);
port = readInteger(jv, PORT, 0);
protocolVersion = readInteger(jv, PROTO, 0);
maxPayload = readLong(jv, MAX_PAYLOAD, 0);
clientId = readInteger(jv, CLIENT_ID, 0);
clientIp = readString(jv, CLIENT_IP);
cluster = readString(jv, CLUSTER);
connectURLs = readStringListIgnoreEmpty(jv, CONNECT_URLS);
}
public boolean isLameDuckMode() {
return lameDuckMode;
}
public String getServerId() {
return this.serverId;
}
public String getServerName() {
return serverName;
}
public String getVersion() {
return this.version;
}
public String getGoVersion() {
return this.go;
}
public String getHost() {
return this.host;
}
public int getPort() {
return this.port;
}
public int getProtocolVersion() {
return this.protocolVersion;
}
public boolean isHeadersSupported() { return this.headersSupported; }
public boolean isAuthRequired() {
return this.authRequired;
}
public boolean isTLSRequired() {
return this.tlsRequired;
}
public boolean isTLSAvailable() {
return tlsAvailable;
}
public long getMaxPayload() {
return this.maxPayload;
}
public List getConnectURLs() {
return this.connectURLs;
}
public byte[] getNonce() {
return this.nonce;
}
public boolean isJetStreamAvailable() {
return this.jetStream;
}
public int getClientId() {
return clientId;
}
public String getClientIp() {
return clientIp;
}
public String getCluster() {
return cluster;
}
public boolean isNewerVersionThan(String vTarget) {
return ServerVersion.isNewer(version, vTarget);
}
public boolean isSameVersion(String vTarget) {
return ServerVersion.isSame(version, vTarget);
}
public boolean isOlderThanVersion(String vTarget) {
return ServerVersion.isOlder(version, vTarget);
}
public boolean isSameOrOlderThanVersion(String vTarget) {
return ServerVersion.isSameOrOlder(version, vTarget);
}
public boolean isSameOrNewerThanVersion(String vTarget) {
return ServerVersion.isSameOrNewer(version, vTarget);
}
@Override
public String toString() {
return "ServerInfo{" +
"serverId='" + serverId + '\'' +
", serverName='" + serverName + '\'' +
", version='" + version + '\'' +
", go='" + go + '\'' +
", host='" + host + '\'' +
", port=" + port +
", headersSupported=" + headersSupported +
", authRequired=" + authRequired +
", tlsRequired=" + tlsRequired +
", tlsAvailable=" + tlsAvailable +
", maxPayload=" + maxPayload +
", connectURLs=" + connectURLs +
", protocolVersion=" + protocolVersion +
", nonce=" + Arrays.toString(nonce) +
", lameDuckMode=" + lameDuckMode +
", jetStream=" + jetStream +
", clientId=" + clientId +
", clientIp='" + clientIp + '\'' +
", cluster='" + cluster + '\'' +
'}';
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy