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.IoConnectorConfig;
    24  import org.apache.mina.common.IoSessionRecycler;
    25  import org.apache.mina.common.RuntimeIOException;
    26  import org.apache.mina.common.support.BaseIoConnectorConfig;
    27  import org.apache.mina.transport.socket.nio.support.DatagramSessionConfigImpl;
    28
    29  /**
    30   * An {@link IoConnectorConfig} for {@link DatagramConnector}.
    31   *
    32   * @author The Apache Directory Project (mina-dev@directory.apache.org)
    33   * @version $Rev: 587373 $, $Date: 2007-10-23 11:54:05 +0900 (Tue, 23 Oct 2007) $
    34   */
    35  public class DatagramConnectorConfig extends BaseIoConnectorConfig 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 DatagramConnectorConfig() {
    52          super();
    53      }
    54
    55      public DatagramSessionConfig getSessionConfig() {
    56          return sessionConfig;
    57      }
    58
    59      public IoSessionRecycler getSessionRecycler() {
    60          return sessionRecycler;
    61      }
    62
    63      // FIXME There can be a problem if a user changes the recycler after the service is activated.
    64      public void setSessionRecycler(IoSessionRecycler sessionRecycler) {
    65          if (sessionRecycler == null) {
    66              sessionRecycler = DEFAULT_RECYCLER;
    67          }
    68          this.sessionRecycler = sessionRecycler;
    69      }
    70
    71      public Object clone() {
    72          DatagramConnectorConfig ret = (DatagramConnectorConfig) super.clone();
    73          ret.sessionConfig = (DatagramSessionConfig) this.sessionConfig.clone();
    74          return ret;
    75      }
    76  }