|
|||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | ||||||||
java.lang.Objectjava.rmi.server.RemoteObject
java.rmi.server.RemoteServer
java.rmi.server.UnicastRemoteObject
edu.ucdavis.rj.Ops.OpImpl
public abstract class OpImpl
Basic operation abstraction.
In general, an OpImpl shouldn't be passed as a parameter.
Instead, use an OpProxy.
E.g., if f is an OpImpl, then pass new OpProxy(f))
| Nested Class Summary |
|---|
| Nested classes/interfaces inherited from interface edu.ucdavis.rj.Ops.OpRemote |
|---|
OpRemote.Helper |
| Field Summary | |
|---|---|
private boolean |
aNoop
Since have one noop per VM, need to know whether an OpImpl is a noop. |
private java.lang.String |
id
|
private static long |
seqNum
|
| Fields inherited from class java.rmi.server.RemoteObject |
|---|
ref |
| Constructor Summary | |
|---|---|
OpImpl()
Create an instance of an OpImpl. |
|
OpImpl(boolean aNoop)
Create an instance of an OpImpl. |
|
| Method Summary | |
|---|---|
Invocation |
call()
Invoke this operation synchronously. |
Invocation |
call(Invocation originalInv)
Invoke this operation synchronously. |
boolean |
equals(java.lang.Object other)
Compares this OpImpl object with the specified object,
which can be an OpRemote or an OpProxy. |
java.lang.String |
getId()
Returns unique identifier for this operation. |
int |
hashCode()
Returns a hash code for this OpImpl. |
(package private) abstract void |
internalSend(Invocation inv)
Internal asynchronous invocation. |
boolean |
isNoop()
Determines whether this operation is a noop. |
abstract int |
length()
Returns the number of Invocations pending for this operation. |
private java.lang.String |
makeId()
An OpImpl's Id is formed from VM name and seqNum so it is unique across the entire program. |
void |
send()
Invoke this operation asynchronously. |
void |
send(Invocation originalInv)
Invoke this operation asynchronously. |
void |
V()
A semaphore V (aka up) operation. |
| Methods inherited from class java.rmi.server.UnicastRemoteObject |
|---|
clone, exportObject, exportObject, exportObject, unexportObject |
| Methods inherited from class java.rmi.server.RemoteServer |
|---|
getClientHost, getLog, setLog |
| Methods inherited from class java.rmi.server.RemoteObject |
|---|
getRef, toString, toStub |
| Methods inherited from class java.lang.Object |
|---|
finalize, getClass, notify, notifyAll, wait, wait, wait |
| Methods inherited from interface edu.ucdavis.rj.Ops.Op |
|---|
canAppearInInni, deliverPendingMessages, elements, getFirstTime, getLock, isRemote, P, receive |
| Field Detail |
|---|
private static long seqNum
private java.lang.String id
private boolean aNoop
| Constructor Detail |
|---|
public OpImpl()
throws java.rmi.RemoteException
OpImpl.
java.rmi.RemoteExceptionOpImpl(boolean aNoop) throws java.rmi.RemoteException
OpImpl.
This is the more general case, but needed only internally.
java.rmi.RemoteException| Method Detail |
|---|
private java.lang.String makeId()
public java.lang.String getId()
Op
getId in interface Oppublic boolean isNoop()
Opnoop.
isNoop in interface Opnoop.public void send(Invocation originalInv)
send in interface OporiginalInv - The invocation to service.public void send()
this.send (new Invocation(...));
See Op.send(edu.ucdavis.rj.Ops.Invocation).
send in interface Oppublic void V()
OpOpInni's semaphore operations.
V in interface Opabstract void internalSend(Invocation inv)
inv - The invocation to service.
It is assumed to have already been cloned
and its replyOp set properly
(null for send; non-null for call).public Invocation call(Invocation originalInv)
call in interface Opinv - The invocation to service.
N.B., (the reference for) the returned invocation might not be the
same as inv.
For example, do NOT use, e.g.,
Invocation inv = new Invocation(...);
thefun.call(inv);
System.out.println(inv.getReturnValue());
because inv's value after the call will be the same
as its value before the call, and inv.getReturnValue() will
likely be null.
Instead, in this example, use
inv = thefun.call(inv);.
public Invocation call()
this.call (new Invocation(...));
See Op.call(edu.ucdavis.rj.Ops.Invocation).
call in interface Oppublic abstract int length()
length in interface Oppublic boolean equals(java.lang.Object other)
OpImpl object with the specified object,
which can be an OpRemote or an OpProxy.
equals in class java.rmi.server.RemoteObjectother - The other Object to compare.
true if and only if the two objects are equal.public int hashCode()
OpImpl.
The hashCode for noop is same across all VMs.
The hashCodes for non-noops are different on and across VMs.
hashCode in class java.rmi.server.RemoteObject
|
|||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | ||||||||