View Javadoc

1   /*
2    * Copyright (c) 1998-2002 The Jgroup Team.
3    *
4    * This program is free software; you can redistribute it and/or modify
5    * it under the terms of the GNU Lesser General Public License version 2 as
6    * published by the Free Software Foundation.
7    *
8    * This program is distributed in the hope that it will be useful,
9    * but WITHOUT ANY WARRANTY; without even the implied warranty of
10   * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
11   * GNU Lesser General Public License for more details.
12   *
13   * You should have received a copy of the GNU Lesser General Public License
14   * along with this program; if not, write to the Free Software
15   * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
16   *
17   */
18  
19  package jgroup.relacs.mss;
20  
21  /**
22   *  The <code>MssConstants</code> interface declares a number of
23   *  constants mainly relevant for the <i>mss</i> level.
24   *
25   *  @author Hein Meling
26   *  @author Alberto Montresor
27   *  @author Salvatore Cammarata
28   *  @since Jgroup 1.2
29   */
30  public interface MssConstants
31  {
32  
33    /**
34     *  Enabling (setting it to <code>true</code>) NACK suppression sends
35     *  only a single NACK for each cluster.  Otherwise
36     *  <i>cluster.size</i> messages will be sent for each missing
37     *  message, for each of the clusters that are missing the message.
38     */
39    public static final boolean NACKSUPPRESSION = false;
40  
41  
42    /**
43     *  Setting this to true enables routing of messages through
44     *  intermediate clusters, if a node (or cluster) is not directly
45     *  connected to the destination cluster.
46     *
47     *  FIXME NOTE: There is currently a problem with the routing
48     *  mechanism, so don't turn it on.
49     */
50    public static final boolean ROUTING_ENABLED = false;
51  
52  
53    ////////////////////////////////////////////////////////////////////////////////////////////
54    // Thread priorities
55    ////////////////////////////////////////////////////////////////////////////////////////////
56  
57    public static final int MSSUSER_PRIORITY    = Thread.NORM_PRIORITY;
58  
59    public static final int EHANDLER_PRIORITY   = MSSUSER_PRIORITY;
60  
61    public static final int NI_PRIORITY         = EHANDLER_PRIORITY;
62  
63  
64    ////////////////////////////////////////////////////////////////////////////////////////////
65    // Reachability and message constants
66    ////////////////////////////////////////////////////////////////////////////////////////////
67  
68    /**
69     *  If the alive counter of a host is equal to this value, the host is
70     *  considered to be unreachable.
71     */
72    public static final int UNREACHABLE         = 0;
73  
74    /**
75     *  If the alive counter of a host is greater or equal to this value,
76     *  the host is considered to be alive.
77     */
78    public static final int MINIMUM_ALIVE_VALUE = 1;
79  
80    /**
81     *  Constant used to indicate that <i>all</i> members of a cluster
82     *  should receive a message.
83     */
84    public static final int ALL                 = 0;
85  
86  
87    ////////////////////////////////////////////////////////////////////////////////////////////
88    // General constants
89    ////////////////////////////////////////////////////////////////////////////////////////////
90  
91    /**
92     *  Used to indicate that an <code>int</code> value is undefined.
93     */
94    public static final int UNDEF               = -1;
95  
96  
97    ////////////////////////////////////////////////////////////////////////////////////////////
98    // Message and Packet constants
99    ////////////////////////////////////////////////////////////////////////////////////////////
100 
101   /**
102    *  Header size for <i>mss</i> level Jgroup (<code>MsgJG</code>)
103    *  messages.  Mss messages contains a static header and a dynamic
104    *  trailer of unspecified size, whose size is determined at runtime.
105    *  The content of the header includes a message tag, message
106    *  identifer, pointer to the trailer's position in the message stream
107    *  etc.  The content of the trailer cannot be accessed until all
108    *  message fragments (packets) have been received.
109    */
110   public static final int MSS_HEADER_SIZE = 15;
111 
112   /**
113    *  Header size for <i>network</i> level packets (fragments).
114    *  Messages sent from the <i>mss</i> level may be split into several
115    *  smaller fragments (or packets).  Each of these fragments will be
116    *  attached a header of the size given below.  This fragment header
117    *  comes in addition to the payload limit specified in the
118    *  <code>config.xml</code> file.  The header contains information
119    *  about the message type, broadcast, fragment identifier (fid),
120    *  sender and incarnation identifier.
121    */
122   public static final int HEADER_SIZE   = 16;
123 
124   /**
125    *  There is currently no trailer added for each of the
126    *  <code>mss</code> level packets.
127    */
128   public static final int TRAILER_SIZE  = 0;
129 
130   /**
131    *  The overall overhead for each packet sent to the network.
132    */
133   public static final int OVERHEAD_SIZE = HEADER_SIZE + TRAILER_SIZE;
134 
135 }