@@ -122,6 +122,166 @@ public boolean equals(Object o){
122
122
}
123
123
}
124
124
125
+ public static class ConnectConfig {
126
+ private String hostName ;
127
+ private int port ;
128
+ private int connectTimeout = 0 ;
129
+ private int readTimeout = 0 ;
130
+ private String userId = "" ;
131
+ private String password = "" ;
132
+ private String initialScript = null ;
133
+ private boolean enableHighAvailability ;
134
+ private String [] highAvailabilitySites = null ;
135
+ private boolean reconnect ;
136
+ private boolean enableLoadBalance ;
137
+ private int tryReconnectNums = -1 ;
138
+
139
+ // flag:
140
+ private boolean ifUserSetEnableLoadBalance ;
141
+
142
+ private ConnectConfig () {}
143
+
144
+ public static Builder builder () {
145
+ return new Builder ();
146
+ }
147
+
148
+ public static class Builder {
149
+ private final ConnectConfig config ;
150
+
151
+ private Builder () {
152
+ config = new ConnectConfig ();
153
+ }
154
+
155
+ public Builder hostName (String hostName ) {
156
+ config .hostName = hostName ;
157
+ return this ;
158
+ }
159
+
160
+ public Builder port (int port ) {
161
+ config .port = port ;
162
+ return this ;
163
+ }
164
+
165
+ public Builder connectTimeout (int connectTimeout ) {
166
+ config .connectTimeout = connectTimeout ;
167
+ return this ;
168
+ }
169
+
170
+ public Builder readTimeout (int readTimeout ) {
171
+ config .readTimeout = readTimeout ;
172
+ return this ;
173
+ }
174
+
175
+ public Builder userId (String userId ) {
176
+ config .userId = userId ;
177
+ return this ;
178
+ }
179
+
180
+ public Builder password (String password ) {
181
+ config .password = password ;
182
+ return this ;
183
+ }
184
+
185
+ public Builder initialScript (String initialScript ) {
186
+ config .initialScript = initialScript ;
187
+ return this ;
188
+ }
189
+
190
+ public Builder enableHighAvailability (boolean enableHighAvailability ) {
191
+ config .enableHighAvailability = enableHighAvailability ;
192
+ return this ;
193
+ }
194
+
195
+ public Builder highAvailabilitySites (String [] highAvailabilitySites ) {
196
+ config .highAvailabilitySites = highAvailabilitySites ;
197
+ return this ;
198
+ }
199
+
200
+ public Builder reconnect (boolean reconnect ) {
201
+ config .reconnect = reconnect ;
202
+ return this ;
203
+ }
204
+
205
+ public Builder enableLoadBalance (boolean enableLoadBalance ) {
206
+ config .enableLoadBalance = enableLoadBalance ;
207
+ config .ifUserSetEnableLoadBalance = true ;
208
+ return this ;
209
+ }
210
+
211
+ public Builder tryReconnectNums (int tryReconnectNums ) {
212
+ config .tryReconnectNums = tryReconnectNums ;
213
+ return this ;
214
+ }
215
+
216
+ public ConnectConfig build () {
217
+ validateConfig ();
218
+ return config ;
219
+ }
220
+
221
+ private void validateConfig () {
222
+ if (Utils .isEmpty (config .hostName ))
223
+ throw new IllegalArgumentException ("The param 'hostName' cannot be null or empty." );
224
+
225
+ if (config .port <= 0 || config .port > 65535 )
226
+ throw new IllegalArgumentException ("The param 'port' cannot less than or equanl to 0, and also cannot rather than 65535." );
227
+
228
+ if (config .connectTimeout < 0 || config .readTimeout < 0 )
229
+ throw new IllegalArgumentException ("The param connectTimeout or readTimeout cannot less than zero." );
230
+
231
+ if (config .enableHighAvailability && !config .ifUserSetEnableLoadBalance )
232
+ config .enableLoadBalance = true ;
233
+ }
234
+ }
235
+
236
+ public String getHostName () {
237
+ return hostName ;
238
+ }
239
+
240
+ public int getPort () {
241
+ return port ;
242
+ }
243
+
244
+ public int getConnectTimeout () {
245
+ return connectTimeout ;
246
+ }
247
+
248
+ public int getReadTimeout () {
249
+ return readTimeout ;
250
+ }
251
+
252
+ public String getUserId () {
253
+ return userId ;
254
+ }
255
+
256
+ public String getPassword () {
257
+ return password ;
258
+ }
259
+
260
+ public String getInitialScript () {
261
+ return initialScript ;
262
+ }
263
+
264
+ public boolean getEnableHighAvailability () {
265
+ return enableHighAvailability ;
266
+ }
267
+
268
+ public String [] getHighAvailabilitySites () {
269
+ return highAvailabilitySites ;
270
+ }
271
+
272
+ public boolean getReconnect () {
273
+ return reconnect ;
274
+ }
275
+
276
+ public boolean getEnableLoadBalance () {
277
+ return enableLoadBalance ;
278
+ }
279
+
280
+ public int getTryReconnectNums () {
281
+ return tryReconnectNums ;
282
+ }
283
+ }
284
+
125
285
enum Property {
126
286
flag ,//1
127
287
cancel ,//2
@@ -794,6 +954,12 @@ public boolean connect(String hostName, int port, String userId, String password
794
954
return connect (hostName , port , userId , password , initialScript , enableHighAvailability , highAvailabilitySites , reconnect , enableLoadBalance , -1 );
795
955
}
796
956
957
+ public boolean connect (ConnectConfig connectConfig ) throws IOException {
958
+ this .connectTimeout_ = connectConfig .getConnectTimeout ();
959
+ this .readTimeout_ = connectConfig .getReadTimeout ();
960
+ return connect (connectConfig .getHostName (), connectConfig .getPort (), connectConfig .getUserId (), connectConfig .getPassword (), connectConfig .getInitialScript (), connectConfig .getEnableHighAvailability (), connectConfig .getHighAvailabilitySites (), connectConfig .getReconnect (), connectConfig .getEnableLoadBalance (), connectConfig .getTryReconnectNums ());
961
+ }
962
+
797
963
public boolean connect (String hostName , int port , String userId , String password , String initialScript , boolean enableHighAvailability , String [] highAvailabilitySites , boolean reconnect , boolean enableLoadBalance , int tryReconnectNums ) throws IOException {
798
964
mutex_ .lock ();
799
965
try {
0 commit comments