/*
 * Copyright (c) 2011-2019 Contributors to the Eclipse Foundation
 *
 * This program and the accompanying materials are made available under the
 * terms of the Eclipse Public License 2.0 which is available at
 * http://www.eclipse.org/legal/epl-2.0, or the Apache License, Version 2.0
 * which is available at https://www.apache.org/licenses/LICENSE-2.0.
 *
 * SPDX-License-Identifier: EPL-2.0 OR Apache-2.0
 */
package io.vertx.core.http;

import io.vertx.codegen.annotations.DataObject;
import io.vertx.codegen.annotations.GenIgnore;
import io.vertx.core.MultiMap;
import io.vertx.core.json.JsonObject;

import java.util.ArrayList;
import java.util.List;

Options describing how an HttpClient connect a WebSocket.
Author:Julien Viet
/** * Options describing how an {@link HttpClient} connect a {@link WebSocket}. * * @author <a href="mailto:julien@julienviet.com">Julien Viet</a> */
@DataObject(generateConverter = true) public class WebSocketConnectOptions extends RequestOptions {
The default WebSocket version = WebsocketVersion.V13
/** * The default WebSocket version = {@link WebsocketVersion#V13} */
public static final WebsocketVersion DEFAULT_VERSION = WebsocketVersion.V13;
The default WebSocket sub protocols = null
/** * The default WebSocket sub protocols = {@code null} */
public static final List<String> DEFAULT_SUB_PROTOCOLS = null; private WebsocketVersion version; private List<String> subProtocols; public WebSocketConnectOptions() { version = DEFAULT_VERSION; subProtocols = DEFAULT_SUB_PROTOCOLS; } public WebSocketConnectOptions(WebSocketConnectOptions other) { super(other); this.version = other.version; this.subProtocols = other.subProtocols; } public WebSocketConnectOptions(JsonObject json) { super(json); WebSocketConnectOptionsConverter.fromJson(json, this); }
Returns:the WebSocket version
/** * @return the WebSocket version */
public WebsocketVersion getVersion() { return version; }
Set the WebSocket version.
Returns:a reference to this, so the API can be used fluently
/** * Set the WebSocket version. * * @return a reference to this, so the API can be used fluently */
public WebSocketConnectOptions setVersion(WebsocketVersion version) { this.version = version; return this; }
Returns:the list of WebSocket sub protocols or null if there are none
/** * @return the list of WebSocket sub protocols or {@code null} if there are none */
public List<String> getSubProtocols() { return subProtocols; }
Set the WebSocket sub protocols to use.
Returns:a reference to this, so the API can be used fluently
/** * Set the WebSocket sub protocols to use. * * @return a reference to this, so the API can be used fluently */
public WebSocketConnectOptions setSubProtocols(List<String> subProtocols) { this.subProtocols = subProtocols; return this; }
Add a WebSocket sub protocol to use.
Returns:a reference to this, so the API can be used fluently
/** * Add a WebSocket sub protocol to use. * * @return a reference to this, so the API can be used fluently */
public WebSocketConnectOptions addSubProtocol(String subprotocol) { if (subProtocols == null) { subProtocols = new ArrayList<>(); } subProtocols.add(subprotocol); return this; } @Override public WebSocketConnectOptions setHost(String host) { return (WebSocketConnectOptions) super.setHost(host); } @Override public WebSocketConnectOptions setPort(Integer port) { return (WebSocketConnectOptions) super.setPort(port); } @Override public WebSocketConnectOptions setSsl(Boolean ssl) { return (WebSocketConnectOptions) super.setSsl(ssl); } @Override public WebSocketConnectOptions setURI(String uri) { return (WebSocketConnectOptions) super.setURI(uri); } @Override public WebSocketConnectOptions addHeader(String key, String value) { return (WebSocketConnectOptions) super.addHeader(key, value); } @GenIgnore @Override public WebSocketConnectOptions setHeaders(MultiMap headers) { return (WebSocketConnectOptions) super.setHeaders(headers); } @Override public JsonObject toJson() { JsonObject json = super.toJson(); WebSocketConnectOptionsConverter.toJson(this, json); return json; } }