View Javadoc
1   //******************************************************************************
2   //
3   // File:    Message.java
4   // Package: edu.rit.pj.cluster
5   // Unit:    Class edu.rit.pj.cluster.Message
6   //
7   // This Java source file is copyright (C) 2006 by Alan Kaminsky. All rights
8   // reserved. For further information, contact the author, Alan Kaminsky, at
9   // ark@cs.rit.edu.
10  //
11  // This Java source file is part of the Parallel Java Library ("PJ"). PJ is free
12  // software; you can redistribute it and/or modify it under the terms of the GNU
13  // General Public License as published by the Free Software Foundation; either
14  // version 3 of the License, or (at your option) any later version.
15  //
16  // PJ is distributed in the hope that it will be useful, but WITHOUT ANY
17  // WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
18  // A PARTICULAR PURPOSE. See the GNU General Public License for more details.
19  //
20  // Linking this library statically or dynamically with other modules is making a
21  // combined work based on this library. Thus, the terms and conditions of the GNU
22  // General Public License cover the whole combination.
23  //
24  // As a special exception, the copyright holders of this library give you
25  // permission to link this library with independent modules to produce an
26  // executable, regardless of the license terms of these independent modules, and
27  // to copy and distribute the resulting executable under terms of your choice,
28  // provided that you also meet, for each linked independent module, the terms
29  // and conditions of the license of that module. An independent module is a module
30  // which is not derived from or based on this library. If you modify this library,
31  // you may extend this exception to your version of the library, but you are not
32  // obligated to do so. If you do not wish to do so, delete this exception
33  // statement from your version.
34  //
35  // A copy of the GNU General Public License is provided in the file gpl.txt. You
36  // may also obtain a copy of the GNU General Public License on the World Wide
37  // Web at http://www.gnu.org/licenses/gpl.html.
38  //
39  //******************************************************************************
40  package edu.rit.pj.cluster;
41  
42  import java.io.Externalizable;
43  
44  /**
45   * Class Message is the abstract base class for a message sent to a process in
46   * the PJ cluster middleware.
47   *
48   * @author Alan Kaminsky
49   * @version 20-Nov-2006
50   */
51  public abstract class Message
52          implements Externalizable {
53  
54  // Exported constants.
55      /**
56       * The message tag for a message from a job backend process.
57       */
58      public static final int FROM_JOB_BACKEND = 1;
59  
60      /**
61       * The message tag for a message from a job frontend process.
62       */
63      public static final int FROM_JOB_FRONTEND = 2;
64  
65      /**
66       * The message tag for a message from a job launcher process.
67       */
68      public static final int FROM_JOB_LAUNCHER = 3;
69  
70      /**
71       * The message tag for a message from a job scheduler process.
72       */
73      public static final int FROM_JOB_SCHEDULER = 4;
74  
75      /**
76       * The message tag for a message containing data to write to a file.
77       */
78      public static final int FILE_WRITE_DATA = 5;
79  
80      /**
81       * The message tag for a message containing data read from a file.
82       */
83      public static final int FILE_READ_DATA = 6;
84  
85  // Hidden data members.
86      private static final long serialVersionUID = -3891573184096499571L;
87  
88      private int myTag;
89  
90  // Exported constructors.
91      /**
92       * Construct a new message.
93       */
94      public Message() {
95      }
96  
97      /**
98       * Construct a new message with the given message tag.
99       *
100      * @param theTag Message tag to use when sending this message.
101      */
102     public Message(int theTag) {
103         myTag = theTag;
104     }
105 
106 // Exported operations.
107     /**
108      * Get the message tag to use when sending this message.
109      *
110      * @return Message tag.
111      */
112     public int getTag() {
113         return myTag;
114     }
115 
116 }