<!--

    Copyright (C) 2003-2014 eXo Platform SAS.

    This is free software; you can redistribute it and/or modify it
    under the terms of the GNU Lesser General Public License as
    published by the Free Software Foundation; either version 3 of
    the License, or (at your option) any later version.

    This software is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
    Lesser General Public License for more details.

    You should have received a copy of the GNU Lesser General Public
    License along with this software; if not, write to the Free
    Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
    02110-1301 USA, or see the FSF site: http://www.fsf.org.

-->
<config xmlns="urn:org:jgroups"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="urn:org:jgroups http://www.jgroups.org/schema/JGroups-3.6.xsd">
  <!-- jgroups.tcp.start_port defines the start of the range of TCP ports the server should bind to.
    The server socket is bound to the first available port from start_port.
    If no available port is found (e.g., because of a firewall) before the end_port, the server throws an exception.
    If no end_port is provided or end_port < start_port then there is no upper limit on the port range.
    If start_port == end_port, then we force JGroups to use the given port (start fails if port is not available).
    The default is 7800. If set to 0, then the operating system will pick a port.
    Please, bear in mind that setting it to 0 will work only if we use MPING or TCPGOSSIP as discovery protocol
    because TCCPING requires listing the nodes and their corresponding ports. -->
  <!--
      According to the JGroups XSD3.0.x, the property start_port is no longer supported, it's deprecated by bind_port
  -->
  <TCP
      singleton_name="${exo.jcr.cluster.jgroups.tcp.singleton_name:jcr-transport-tcp}"
      bind_port="${exo.jcr.cluster.jgroups.tcp.bind_port:7800}"
      bind_addr="${exo.jcr.cluster.jgroups.tcp.bind_addr:127.0.0.1}"
      recv_buf_size="${exo.jcr.cluster.jgroups.tcp.recv_buf_size:20M}"
      send_buf_size="${exo.jcr.cluster.jgroups.tcp.send_buf_size:640K}"
      max_bundle_size="${exo.jcr.cluster.jgroups.tcp.max_bundle_size:64K}"
      max_bundle_timeout="${exo.jcr.cluster.jgroups.tcp.max_bundle_timeout:30}"
      enable_diagnostics="${exo.jcr.cluster.jgroups.tcp.enable_diagnostics:false}"
      bundler_type="${exo.jcr.cluster.jgroups.tcp.bundler_type:sender-sends-with-timer}"
      sock_conn_timeout="${exo.jcr.cluster.jgroups.tcp.sock_conn_timeout:300}"
      timer_type="${exo.jcr.cluster.jgroups.tcp.timer_type:new}"
      timer.min_threads="${exo.jcr.cluster.jgroups.tcp.timer.min_threads:5}"
      timer.max_threads="${exo.jcr.cluster.jgroups.tcp.timer.max_threads:50}"
      timer.keep_alive_time="${exo.jcr.cluster.jgroups.tcp.timer.keep_alive_time:3000}"
      timer.queue_max_size="${exo.jcr.cluster.jgroups.tcp.timer.queue_max_size:500}"
      thread_pool.enabled="${exo.jcr.cluster.jgroups.tcp.thread_pool.enabled:true}"
      thread_pool.min_threads="${exo.jcr.cluster.jgroups.tcp.thread_pool.min_threads:10}"
      thread_pool.max_threads="${exo.jcr.cluster.jgroups.tcp.thread_pool.max_threads:100}"
      thread_pool.keep_alive_time="${exo.jcr.cluster.jgroups.tcp.thread_pool.keep_alive_time:60000}"
      thread_pool.queue_enabled="${exo.jcr.cluster.jgroups.tcp.thread_pool.queue_enabled:true}"
      thread_pool.queue_max_size="${exo.jcr.cluster.jgroups.tcp.thread_pool.queue_max_size:1000}"
      thread_pool.rejection_policy="${exo.jcr.cluster.jgroups.tcp.thread_pool.rejection_policy:Discard}"
      oob_thread_pool.enabled="${exo.jcr.cluster.jgroups.tcp.oob_thread_pool.enabled:true}"
      oob_thread_pool.min_threads="${exo.jcr.cluster.jgroups.tcp.oob_thread_pool.min_threads:10}"
      oob_thread_pool.max_threads="${exo.jcr.cluster.jgroups.tcp.oob_thread_pool.max_threads:100}"
      oob_thread_pool.keep_alive_time="${exo.jcr.cluster.jgroups.tcp.oob_thread_pool.keep_alive_time:60000}"
      oob_thread_pool.queue_enabled="${exo.jcr.cluster.jgroups.tcp.oob_thread_pool.queue_enabled:false}"
      oob_thread_pool.queue_max_size="${exo.jcr.cluster.jgroups.tcp.oob_thread_pool.queue_max_size:1000}"
      oob_thread_pool.rejection_policy="${exo.jcr.cluster.jgroups.tcp.oob_thread_pool.rejection_policy:Discard}" />
  <TCPPING
      initial_hosts="${exo.jcr.cluster.jgroups.tcpping.initial_hosts:localhost[7800]}"
      port_range="${exo.jcr.cluster.jgroups.tcpping.port_range:0}"
      ergonomics="${exo.jcr.cluster.jgroups.tcpping.ergonomics:false}" />
  <MERGE2
      max_interval="${exo.jcr.cluster.jgroups.merge2.max_interval:100000}"
      min_interval="${exo.jcr.cluster.jgroups.merge2.min_interval:20000}" />
  <FD_SOCK />
  <FD
      timeout="${exo.jcr.cluster.jgroups.fd.timeout:10000}"
      max_tries="${exo.jcr.cluster.jgroups.fd.max_tries:5}" />
  <VERIFY_SUSPECT
      timeout="${exo.jcr.cluster.jgroups.verify_suspect.timeout:1500}" />
  <BARRIER />
  <pbcast.NAKACK
      use_mcast_xmit="${exo.jcr.cluster.jgroups.pbcast.nakack.use_mcast_xmit:false}"
      retransmit_timeout="${exo.jcr.cluster.jgroups.pbcast.nakack.retransmit_timeout:300,600,1200,2400,4800}"
      discard_delivered_msgs="${exo.jcr.cluster.jgroups.pbcast.nakack.discard_delivered_msgs:true}" />
  <UNICAST2
      stable_interval="${exo.jcr.cluster.jgroups.unicast2.stable_interval:5000}"
      max_bytes="${exo.jcr.cluster.jgroups.unicast2.max_bytes:1m}" />
  <pbcast.STABLE
      stability_delay="${exo.jcr.cluster.jgroups.pbcast.stable.stability_delay:1000}"
      desired_avg_gossip="${exo.jcr.cluster.jgroups.pbcast.stable.desired_avg_gossip:50000}"
      max_bytes="${exo.jcr.cluster.jgroups.pbcast.stable.max_bytes:1m}" />
  <pbcast.GMS
      print_local_addr="${exo.jcr.cluster.jgroups.pbcast.gms.print_local_addr:true}"
      join_timeout="${exo.jcr.cluster.jgroups.pbcast.gms.join_timeout:3000}"
      view_bundling="${exo.jcr.cluster.jgroups.pbcast.gms.view_bundling:true}" />
  <UFC
      max_credits="${exo.jcr.cluster.jgroups.ufc.max_credits:2M}"
      min_threshold="${exo.jcr.cluster.jgroups.ufc.min_threshold:0.40}" />
  <MFC
      max_credits="${exo.jcr.cluster.jgroups.mfc.max_credits:2M}"
      min_threshold="${exo.jcr.cluster.jgroups.mfc.min_threshold:0.40}" />
  <FRAG2
      frag_size="${exo.jcr.cluster.jgroups.frag2.frag_size:60K}" />
  <RSVP
      timeout="${exo.jcr.cluster.jgroups.rsvp.timeout:60000}"
      resend_interval="${exo.jcr.cluster.jgroups.rsvp.resend_interval:500}"
      ack_on_delivery="${exo.jcr.cluster.jgroups.rsvp.ack_on_delivery:false}" />
</config>
