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   */
    20  package org.apache.mina.transport.socket.nio;
    21
    22  import org.apache.mina.common.ExpiringSessionRecycler;
    23  import org.apache.mina.common.IoAcceptorConfig;
    24  import org.apache.mina.common.IoSessionRecycler;
    25  import org.apache.mina.common.RuntimeIOException;
    26  import org.apache.mina.common.support.BaseIoAcceptorConfig;
    27  import org.apache.mina.transport.socket.nio.support.DatagramSessionConfigImpl;
    28
    29  /**
    30   * An {@link IoAcceptorConfig} for {@link DatagramAcceptor}.
    31   *
    32   * @author The Apache Directory Project (mina-dev@directory.apache.org)
    33   * @version $Rev: 587373 $, $Date: 2007-10-23 04:54:05 +0200 (Tue, 23 Oct 2007) $
    34   */
    35  public class DatagramAcceptorConfig extends BaseIoAcceptorConfig implements
    36          DatagramServiceConfig {
    37      private static final IoSessionRecycler DEFAULT_RECYCLER = new ExpiringSessionRecycler();
    38
    39      /**
    40       * Current session recycler
    41       */
    42      private IoSessionRecycler sessionRecycler = DEFAULT_RECYCLER;
    43
    44      private DatagramSessionConfig sessionConfig = new DatagramSessionConfigImpl();
    45
    46      /**
    47       * Creates a new instance.
    48       *
    49       * @throws RuntimeIOException if failed to get the default configuration
    50       */
    51      public DatagramAcceptorConfig() {
    52          super();
    53          sessionConfig.setReuseAddress(true);
    54      }
    55
    56      public DatagramSessionConfig getSessionConfig() {
    57          return sessionConfig;
    58      }
    59
    60      public IoSessionRecycler getSessionRecycler() {
    61          return sessionRecycler;
    62      }
    63
    64      // FIXME There can be a problem if a user changes the recycler after the service is activated.
    65      public void setSessionRecycler(IoSessionRecycler sessionRecycler) {
    66          if (sessionRecycler == null) {
    67              sessionRecycler = DEFAULT_RECYCLER;
    68          }
    69          this.sessionRecycler = sessionRecycler;
    70      }
    71
    72      public Object clone() {
    73          DatagramAcceptorConfig ret = (DatagramAcceptorConfig) super.clone();
    74          ret.sessionConfig = (DatagramSessionConfig) this.sessionConfig.clone();
    75          return ret;
    76      }
    77  }