Files
narya/src/java/com/threerings/presents/dobj/DEvent.java
T
Michael Bayne 6b564ae503 sourceOid needs to default to -1.
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@1138 542714f4-19e9-0310-aa3c-eee0fc999fb1
2002-03-20 19:06:55 +00:00

110 lines
3.4 KiB
Java

//
// $Id: DEvent.java,v 1.10 2002/03/20 19:06:55 mdb Exp $
package com.threerings.presents.dobj;
/**
* A distributed object event is dispatched whenever any modification is
* made to a distributed object. It can also be dispatched purely for
* notification purposes, without making any modifications to the object
* that defines the delivery group (the object's subscribers).
*/
public abstract class DEvent
{
/**
* Returns the oid of the object that is the target of this event.
*/
public int getTargetOid ()
{
return _toid;
}
/**
* Applies the attribute modifications represented by this event to
* the specified target object. This is called by the distributed
* object manager in the course of dispatching events and should not
* be called directly.
*
* @exception ObjectAccessException thrown if there is any problem
* applying the event to the object (invalid attribute, etc.).
*
* @return true if the object manager should go on to notify the
* object's subscribers of this event, false if the event should be
* treated silently and the subscribers should not be notified.
*/
public abstract boolean applyToObject (DObject target)
throws ObjectAccessException;
/**
* Returns the object id of the client that generated this event. If
* the event was generated by the server, the value returned will be
* -1. This is not valid on the client, it will return -1 for all
* events there (it is primarily provided to allow for event-level
* access control).
*/
public int getSourceOid ()
{
return _soid;
}
/**
* Do not call this method. Sets the source oid of the client that
* generated this event. It is automatically called by the client
* management code when a client forwards an event to the server.
*/
public void setSourceOid (int sourceOid)
{
_soid = sourceOid;
}
/**
* Constructs a new distributed object event that pertains to the
* specified distributed object.
*/
protected DEvent (int targetOid)
{
_toid = targetOid;
}
/**
* Events with associated listener interfaces should implement this
* function and notify the supplied listener if it implements their
* event listening interface. For example, the {@link
* AttributeChangedEvent} will notify listeners that implement {@link
* AttributeChangeListener}.
*/
protected void notifyListener (Object listener)
{
// the default is to do nothing
}
/**
* Constructs and returns a string representation of this event.
*/
public String toString ()
{
StringBuffer buf = new StringBuffer();
buf.append("[");
toString(buf);
buf.append("]");
return buf.toString();
}
/**
* This should be overridden by derived classes (which should be sure
* to call <code>super.toString()</code>) to append the derived class
* specific event information to the string buffer.
*/
protected void toString (StringBuffer buf)
{
buf.append("targetOid=").append(_toid);
buf.append(", sourceOid=").append(_soid);
}
/** The oid of the object that is the target of this event. */
protected int _toid;
/** The oid of the client that generated this event. */
protected int _soid = -1;
}