View Javadoc
1   //******************************************************************************
2   //
3   // File:    JobSchedulerProxy.java
4   // Package: edu.rit.pj.cluster
5   // Unit:    Class edu.rit.pj.cluster.JobSchedulerProxy
6   //
7   // This Java source file is copyright (C) 2012 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.IOException;
43  
44  import edu.rit.mp.Channel;
45  import edu.rit.mp.ChannelGroup;
46  
47  /**
48   * Class JobSchedulerProxy provides a proxy object for sending messages to a PJ
49   * job scheduler process.
50   *
51   * @author Alan Kaminsky
52   * @version 24-Jan-2012
53   */
54  public class JobSchedulerProxy
55          extends Proxy
56          implements JobSchedulerRef {
57  
58  // Exported constructors.
59      /**
60       * Construct a new job scheduler proxy. The proxy will use the given channel
61       * in the given channel group to send messages to the job scheduler process.
62       *
63       * @param theChannelGroup Channel group.
64       * @param theChannel Channel.
65       */
66      public JobSchedulerProxy(ChannelGroup theChannelGroup,
67              Channel theChannel) {
68          super(theChannelGroup, theChannel);
69      }
70  
71  // Exported operations.
72      /**
73       * {@inheritDoc}
74       *
75       * Report that a backend node failed.
76       * @exception IOException Thrown if an I/O error occurred.
77       */
78      public void backendFailed(JobFrontendRef theJobFrontend,
79              String name)
80              throws IOException {
81          send(JobSchedulerMessage.backendFailed(theJobFrontend, name));
82      }
83  
84      /**
85       * {@inheritDoc}
86       *
87       * Cancel a job.
88       * @exception IOException Thrown if an I/O error occurred.
89       */
90      public void cancelJob(JobFrontendRef theJobFrontend,
91              String errmsg)
92              throws IOException {
93          send(JobSchedulerMessage.cancelJob(theJobFrontend, errmsg));
94      }
95  
96      /**
97       * {@inheritDoc}
98       *
99       * Report that a job finished.
100      * @exception IOException Thrown if an I/O error occurred.
101      */
102     public void jobFinished(JobFrontendRef theJobFrontend)
103             throws IOException {
104         send(JobSchedulerMessage.jobFinished(theJobFrontend));
105     }
106 
107     /**
108      * {@inheritDoc}
109      *
110      * Renew the lease on a job.
111      * @exception IOException Thrown if an I/O error occurred.
112      */
113     public void renewLease(JobFrontendRef theJobFrontend)
114             throws IOException {
115         send(JobSchedulerMessage.renewLease(theJobFrontend));
116     }
117 
118     /**
119      * {@inheritDoc}
120      *
121      * Report a comment for a process.
122      * @exception IOException Thrown if an I/O error occurred.
123      */
124     public void reportComment(JobFrontendRef theJobFrontend,
125             int rank,
126             String comment)
127             throws IOException {
128         send(JobSchedulerMessage.reportComment(theJobFrontend, rank, comment));
129     }
130 
131     /**
132      * {@inheritDoc}
133      *
134      * Request that a job be scheduled.
135      * @exception IOException Thrown if an I/O error occurred.
136      */
137     public void requestJob(JobFrontendRef theJobFrontend,
138             String username,
139             int Nn,
140             int Np,
141             int Nt)
142             throws IOException {
143         send(JobSchedulerMessage.requestJob(theJobFrontend, username, Nn, Np, Nt));
144     }
145 
146 }