com.sun.jini.outrigger
Class StorableAvailabilityWatcher

java.lang.Object
  extended by com.sun.jini.outrigger.TransitionWatcher
      extended by com.sun.jini.outrigger.AvailabilityRegistrationWatcher
          extended by com.sun.jini.outrigger.StorableAvailabilityWatcher
All Implemented Interfaces:
LeasedResource, EventRegistrationRecord, StorableObject, StorableResource, Comparable

 class StorableAvailabilityWatcher
extends AvailabilityRegistrationWatcher
implements StorableResource

Subclass of AvailabilityRegistrationWatcher for non-transactional persistent availability/visibility event registrations.


Field Summary
private  StorableReference listener
          The listener that should be notified of matches
 
Fields inherited from class com.sun.jini.outrigger.AvailabilityRegistrationWatcher
cookie, eventID, expiration, handback, visibilityOnly
 
Fields inherited from class com.sun.jini.outrigger.TransitionWatcher
startOrdinal
 
Constructor Summary
StorableAvailabilityWatcher(long timestamp, long startOrdinal, long currentSeqNum)
          Used during log recovery to create a mostly empty StorableAvailabilityWatcher.
StorableAvailabilityWatcher(long timestamp, long startOrdinal, Uuid cookie, boolean visibilityOnly, MarshalledObject handback, long eventID, RemoteEventListener listener)
          Create a new StorableAvailabilityWatcher.
 
Method Summary
(package private)  void cleanup(OutriggerServerImpl server, boolean expired)
          Overridden by subclasses if there is any cleanup work they need to do as part of cancel or removeIfExpired.
(package private)  RemoteEventListener getListener(ProxyPreparer preparer)
          Return the remote listener associated with this EventRegistrationWatcher.
(package private)  boolean isInterested(EntryTransition transition, long ordinal)
          Return true if this watcher cares about a given visibility transition.
 void restore(ObjectInputStream in)
          Restore the persistent fields
 void store(ObjectOutputStream out)
          Store the persistent fields
 
Methods inherited from class com.sun.jini.outrigger.AvailabilityRegistrationWatcher
addTemplateHandle, cancel, getCookie, getExpiration, process, removeIfExpired, setExpiration
 
Methods inherited from class com.sun.jini.outrigger.TransitionWatcher
compareTo
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 
Methods inherited from interface com.sun.jini.landlord.LeasedResource
getCookie, getExpiration, setExpiration
 

Field Detail

listener

private StorableReference listener
The listener that should be notified of matches

Constructor Detail

StorableAvailabilityWatcher

StorableAvailabilityWatcher(long timestamp,
                            long startOrdinal,
                            long currentSeqNum)
Used during log recovery to create a mostly empty StorableAvailabilityWatcher.

Note, we set the time stamp and tie-breaker here instead of getting them from the log. This means they will be inconstant with their value from the last VM we were in, but since they never leak out and events are read-only anyway this should not be a problem (this also allows us to keep the tie-breaker and time stamp in final fields).

Parameters:
timestamp - the value that is used to sort TransitionWatchers.
startOrdinal - the highest ordinal associated with operations that are considered to have occurred before the operation associated with this watcher.
currentSeqNum - Sequence number to start with.
Throws:
NullPointerException - if the notifier argument is null.

StorableAvailabilityWatcher

StorableAvailabilityWatcher(long timestamp,
                            long startOrdinal,
                            Uuid cookie,
                            boolean visibilityOnly,
                            MarshalledObject handback,
                            long eventID,
                            RemoteEventListener listener)
Create a new StorableAvailabilityWatcher.

Parameters:
timestamp - the value that is used to sort TransitionWatchers.
startOrdinal - the highest ordinal associated with operations that are considered to have occurred before the operation associated with this watcher.
cookie - The unique identifier associated with this watcher. Must not be null.
visibilityOnly - pass true if client only wants visibility events
handback - The handback object that should be sent along with event notifications to the the listener.
eventID - The event ID for event type represented by this object.
listener - The object to notify of matches.
Throws:
NullPointerException - if the cookie, or listener arguments are null.
Method Detail

isInterested

boolean isInterested(EntryTransition transition,
                     long ordinal)
Description copied from class: TransitionWatcher
Return true if this watcher cares about a given visibility transition. Assumes the transitioning entry matches the template in the TemplateHandle associated with this watcher. This method should return a value even if the expiration time has been reached or remove has been called. This call should not obtain any locks.

Specified by:
isInterested in class TransitionWatcher
Parameters:
transition - A EntryTransition that describes the transition and what entry is transitioning. This method will assume that transition.getHandle returns a non-null value.
ordinal - The ordinal associated with transition.
Returns:
true if this watcher is interested in the indicated transition and false otherwise.

getListener

RemoteEventListener getListener(ProxyPreparer preparer)
                          throws ClassNotFoundException,
                                 IOException
Description copied from class: AvailabilityRegistrationWatcher
Return the remote listener associated with this EventRegistrationWatcher. Optionally prepare the listener if it has been recovered from the store and not yet re-prepared.

Specified by:
getListener in class AvailabilityRegistrationWatcher
Returns:
the remote listener associated with this EventRegistrationWatcher
Throws:
ClassNotFoundException - if the listener needs to be unmarshalled and a necessary class can not be found
IOException - if the listener can not be unmarshalled. May throw RemoteException if the call to the preparer does

cleanup

void cleanup(OutriggerServerImpl server,
             boolean expired)
Overridden by subclasses if there is any cleanup work they need to do as part of cancel or removeIfExpired. Called after releasing the lock on this. Will be called at most once.

Overrides:
cleanup in class AvailabilityRegistrationWatcher
Parameters:
server - A reference to the owner.
expired - true if being called from removeIfExpired and false otherwise.

store

public void store(ObjectOutputStream out)
           throws IOException
Store the persistent fields

Specified by:
store in interface StorableObject
Throws:
IOException

restore

public void restore(ObjectInputStream in)
             throws IOException,
                    ClassNotFoundException
Restore the persistent fields

Specified by:
restore in interface StorableObject
Throws:
IOException
ClassNotFoundException


Copyright 2007-2010, multiple authors.
Licensed under the Apache License, Version 2.0, see the NOTICE file for attributions.