summaryrefslogtreecommitdiffhomepage
path: root/src/java/javax/websocket/WebSocketContainer.java
blob: f2da3e432712a04430b339df9ae2d6fba696e08d (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
/*
 * Licensed to the Apache Software Foundation (ASF) under one or more
 * contributor license agreements.  See the NOTICE file distributed with
 * this work for additional information regarding copyright ownership.
 * The ASF licenses this file to You 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 javax.websocket;

import java.io.IOException;
import java.net.URI;
import java.util.Set;

public interface WebSocketContainer {

    /**
     * Get the default timeout for sending a message asynchronously.
     * @return The current default timeout in milliseconds. A non-positive value
     *         means an infinite timeout.
     */
    long getDefaultAsyncSendTimeout();

    /**
     * Set the default timeout for sending a message asynchronously.
     * @param timeout The new default timeout in milliseconds. A non-positive
     *                value means an infinite timeout.
     */
    void setAsyncSendTimeout(long timeout);

    Session connectToServer(Object endpoint, URI path)
            throws DeploymentException, IOException;

    Session connectToServer(Class<?> annotatedEndpointClass, URI path)
            throws DeploymentException, IOException;

    /**
     * Creates a new connection to the WebSocket.
     *
     * @param endpoint
     *            The endpoint instance that will handle responses from the
     *            server
     * @param clientEndpointConfiguration
     *            Used to configure the new connection
     * @param path
     *            The full URL of the WebSocket endpoint to connect to
     *
     * @return The WebSocket session for the connection
     *
     * @throws DeploymentException  If the connection cannot be established
     * @throws IOException If an I/O occurred while trying to establish the
     *                     connection
     */
    Session connectToServer(Endpoint endpoint,
            ClientEndpointConfig clientEndpointConfiguration, URI path)
            throws DeploymentException, IOException;

    /**
     * Creates a new connection to the WebSocket.
     *
     * @param endpoint
     *            An instance of this class will be created to handle responses
     *            from the server
     * @param clientEndpointConfiguration
     *            Used to configure the new connection
     * @param path
     *            The full URL of the WebSocket endpoint to connect to
     *
     * @return The WebSocket session for the connection
     *
     * @throws DeploymentException  If the connection cannot be established
     * @throws IOException If an I/O occurred while trying to establish the
     *                     connection
     */
    Session connectToServer(Class<? extends Endpoint> endpoint,
            ClientEndpointConfig clientEndpointConfiguration, URI path)
            throws DeploymentException, IOException;

    /**
     * Get the current default session idle timeout.
     * @return The current default session idle timeout in milliseconds. Zero or
     *         negative values indicate an infinite timeout.
     */
    long getDefaultMaxSessionIdleTimeout();

    /**
     * Set the default session idle timeout.
     * @param timeout The new default session idle timeout in milliseconds. Zero
     *                or negative values indicate an infinite timeout.
     */
    void setDefaultMaxSessionIdleTimeout(long timeout);

    /**
     * Get the default maximum buffer size for binary messages.
     * @return The current default maximum buffer size in bytes
     */
    int getDefaultMaxBinaryMessageBufferSize();

    /**
     * Set the default maximum buffer size for binary messages.
     * @param max The new default maximum buffer size in bytes
     */
    void setDefaultMaxBinaryMessageBufferSize(int max);

    /**
     * Get the default maximum buffer size for text messages.
     * @return The current default maximum buffer size in characters
     */
    int getDefaultMaxTextMessageBufferSize();

    /**
     * Set the default maximum buffer size for text messages.
     * @param max The new default maximum buffer size in characters
     */
    void setDefaultMaxTextMessageBufferSize(int max);

    /**
     * Get the installed extensions.
     * @return The set of extensions that are supported by this WebSocket
     *         implementation.
     */
    Set<Extension> getInstalledExtensions();
}