1 /**
2 * Licensed to the Apache Software Foundation (ASF) under one
3 * or more contributor license agreements. See the NOTICE file
4 * distributed with this work for additional information
5 * regarding copyright ownership. The ASF licenses this file
6 * to you under the Apache License, Version 2.0 (the
7 * "License"); you may not use this file except in compliance
8 * with the License. You may obtain a copy of the License at
9 *
10 * http://www.apache.org/licenses/LICENSE-2.0
11 *
12 * Unless required by applicable law or agreed to in writing,
13 * software distributed under the License is distributed on an
14 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15 * KIND, either express or implied. See the License for the
16 * specific language governing permissions and limitations
17 * under the License.
18 */
19 package org.apache.mina.transport.tcp;
20
21 import javax.net.ssl.SSLContext;
22
23 import org.apache.mina.session.AbstractIoSessionConfig;
24
25 /**
26 * Implementation for the socket session configuration.
27 *
28 * Will hold the values for the service in change of configuring this session (before the session opening).
29 *
30 * @author <a href="http://mina.apache.org">Apache MINA Project</a>
31 */
32 public class DefaultTcpSessionConfig extends AbstractIoSessionConfig implements TcpSessionConfig {
33 /** The SSLContext instance */
34 private SSLContext sslContext;
35
36 //=====================
37 // socket options
38 //=====================
39 /** The TCP_NODELAY socket option */
40 private Boolean tcpNoDelay = null;
41
42 /** The OOBINLINE socket option */
43 private Boolean oobInline = null;
44
45 /** The SO_KEEPALIVE socket option */
46 private Boolean keepAlive = null;
47
48 /** The SO_LINGER socket option */
49 private Integer soLinger;
50
51 /**
52 * {@inheritDoc}
53 */
54 @Override
55 public Boolean isTcpNoDelay() {
56 return tcpNoDelay;
57 }
58
59 /**
60 * {@inheritDoc}
61 */
62 @Override
63 public void setTcpNoDelay(boolean tcpNoDelay) {
64 this.tcpNoDelay = tcpNoDelay;
65 }
66
67 /**
68 * {@inheritDoc}
69 */
70 @Override
71 public Boolean isKeepAlive() {
72 return keepAlive;
73 }
74
75 /**
76 * {@inheritDoc}
77 */
78 @Override
79 public void setKeepAlive(boolean keepAlive) {
80 this.keepAlive = keepAlive;
81 }
82
83 /**
84 * {@inheritDoc}
85 */
86 @Override
87 public Boolean isOobInline() {
88 return oobInline;
89 }
90
91 /**
92 * {@inheritDoc}
93 */
94 @Override
95 public void setOobInline(boolean oobInline) {
96 this.oobInline = oobInline;
97
98 }
99
100 /**
101 * {@inheritDoc}
102 */
103 @Override
104 public Integer getSoLinger() {
105 return soLinger;
106 }
107
108 /**
109 * {@inheritDoc}
110 */
111 @Override
112 public void setSoLinger(int soLinger) {
113 this.soLinger = soLinger;
114 }
115
116 /**
117 * Inject a {@link SSLContex} valid for the session. This {@link SSLContex} will be used
118 * by the SSLEngine to handle secured connections.<br/>
119 * The {@link SSLContex} must have been created and initialized before being injected in
120 * the configuration.<br/>
121 * By setting a {@link SSLContext}, the session switch to secured.
122 * @param sslContext The configured {@link SSLContex}.
123 */
124 public void setSslContext(SSLContext sslContext) {
125 this.sslContext = sslContext;
126 }
127
128 /**
129 * {@inheritDoc}
130 */
131 public SSLContext getSslContext() {
132 return sslContext;
133 }
134
135 /**
136 * {@inheritDoc}
137 */
138 @Override
139 public boolean isSecured() {
140 return sslContext != null;
141 }
142 }