View Javadoc

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 }