/*
*
* Copyright (c) 2000 Scott Oaks and Henry Wong. All Rights Reserved.
*
* Permission to use, copy, modify, and distribute this software
* and its documentation for NON-COMMERCIAL purposes and
* without fee is hereby granted.
*
* This sample source code is provided for example only,
* on an unsupported, as-is basis.
*
* AUTHOR MAKES NO REPRESENTATIONS OR WARRANTIES ABOUT THE SUITABILITY OF
* THE SOFTWARE, EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
* TO THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
* PARTICULAR PURPOSE, OR NON-INFRINGEMENT. AUTHOR SHALL NOT BE LIABLE FOR
* ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR
* DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES.
*
* THIS SOFTWARE IS NOT DESIGNED OR INTENDED FOR USE OR RESALE AS ON-LINE
* CONTROL EQUIPMENT IN HAZARDOUS ENVIRONMENTS REQUIRING FAIL-SAFE
* PERFORMANCE, SUCH AS IN THE OPERATION OF NUCLEAR FACILITIES, AIRCRAFT
* NAVIGATION OR COMMUNICATION SYSTEMS, AIR TRAFFIC CONTROL, DIRECT LIFE
* SUPPORT MACHINES, OR WEAPONS SYSTEMS, IN WHICH THE FAILURE OF THE
* SOFTWARE COULD LEAD DIRECTLY TO DEATH, PERSONAL INJURY, OR SEVERE
* PHYSICAL OR ENVIRONMENTAL DAMAGE ("HIGH RISK ACTIVITIES"). AUTHOR
* SPECIFICALLY DISCLAIMS ANY EXPRESS OR IMPLIED WARRANTY OF FITNESS FOR
* HIGH RISK ACTIVITIES.
*/
import java.io.*;
import java.rmi.*;
import net.jini.core.lease.*;
import net.jini.space.*;
public class ConvertServiceRegistrationImpl implements ConvertServiceRegistration, Serializable {
private JavaSpace js;
private Lease lease;
public ConvertServiceRegistrationImpl(JavaSpace js, Lease l) {
this.js = js;
this.lease = l;
}
// Code to convert. This code runs on the client and puts the request
// into the JavaSpace and then reads out the result. A previous result
// will be cached and we'll get that too.
public String convert(int i) throws RemoteException {
try {
// See if there's a cached result (done == true) already
Conversion request = new Conversion(5, true);
Conversion result = (Conversion) js.read(request, null, JavaSpace.NO_WAIT);
if (result == null) {
// There was no cached result. Make a new request and retrieve
// that answer
request.done = new Boolean(false);
js.write(request, null, Lease.FOREVER);
request.done = new Boolean(true);
result = (Conversion) js.read(request, null, Long.MAX_VALUE);
}
// else just use the cached value
return result.result;
} catch (Exception e) {
throw new RemoteException("convert", e);
}
}
public Lease getLease() {
return lease;
}
}
|