Type safety.
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4237 542714f4-19e9-0310-aa3c-eee0fc999fb1
This commit is contained in:
@@ -75,10 +75,8 @@ public class InvocationDirector
|
|||||||
_client = client;
|
_client = client;
|
||||||
|
|
||||||
// add ourselves as a subscriber to the client object
|
// add ourselves as a subscriber to the client object
|
||||||
_omgr.subscribeToObject(cloid, new Subscriber() {
|
_omgr.subscribeToObject(cloid, new Subscriber<ClientObject>() {
|
||||||
public void objectAvailable (DObject object) {
|
public void objectAvailable (ClientObject clobj) {
|
||||||
ClientObject clobj = (ClientObject)object;
|
|
||||||
|
|
||||||
// add ourselves as an event listener
|
// add ourselves as an event listener
|
||||||
clobj.addListener(InvocationDirector.this);
|
clobj.addListener(InvocationDirector.this);
|
||||||
|
|
||||||
@@ -144,8 +142,9 @@ public class InvocationDirector
|
|||||||
public void unregisterReceiver (String receiverCode)
|
public void unregisterReceiver (String receiverCode)
|
||||||
{
|
{
|
||||||
// remove the receiver from the list
|
// remove the receiver from the list
|
||||||
for (Iterator iter = _reclist.iterator(); iter.hasNext(); ) {
|
for (Iterator<InvocationDecoder> iter = _reclist.iterator();
|
||||||
InvocationDecoder decoder = (InvocationDecoder)iter.next();
|
iter.hasNext(); ) {
|
||||||
|
InvocationDecoder decoder = iter.next();
|
||||||
if (decoder.getReceiverCode().equals(receiverCode)) {
|
if (decoder.getReceiverCode().equals(receiverCode)) {
|
||||||
iter.remove();
|
iter.remove();
|
||||||
}
|
}
|
||||||
@@ -193,8 +192,8 @@ public class InvocationDirector
|
|||||||
// pack all the set add events into a single transaction
|
// pack all the set add events into a single transaction
|
||||||
_clobj.startTransaction();
|
_clobj.startTransaction();
|
||||||
try {
|
try {
|
||||||
for (Iterator iter = _reclist.iterator(); iter.hasNext(); ) {
|
for (InvocationDecoder decoder : _reclist) {
|
||||||
assignReceiverId((InvocationDecoder)iter.next());
|
assignReceiverId(decoder);
|
||||||
}
|
}
|
||||||
} finally {
|
} finally {
|
||||||
_clobj.commitTransaction();
|
_clobj.commitTransaction();
|
||||||
@@ -272,8 +271,7 @@ public class InvocationDirector
|
|||||||
int reqId, int methodId, Object[] args)
|
int reqId, int methodId, Object[] args)
|
||||||
{
|
{
|
||||||
// look up the invocation marshaller registered for that response
|
// look up the invocation marshaller registered for that response
|
||||||
ListenerMarshaller listener = (ListenerMarshaller)
|
ListenerMarshaller listener = _listeners.remove(reqId);
|
||||||
_listeners.remove(reqId);
|
|
||||||
if (listener == null) {
|
if (listener == null) {
|
||||||
Log.warning("Received invocation response for which we have " +
|
Log.warning("Received invocation response for which we have " +
|
||||||
"no registered listener [reqId=" + reqId +
|
"no registered listener [reqId=" + reqId +
|
||||||
@@ -314,8 +312,7 @@ public class InvocationDirector
|
|||||||
int receiverId, int methodId, Object[] args)
|
int receiverId, int methodId, Object[] args)
|
||||||
{
|
{
|
||||||
// look up the decoder registered for this receiver
|
// look up the decoder registered for this receiver
|
||||||
InvocationDecoder decoder = (InvocationDecoder)
|
InvocationDecoder decoder = _receivers.get(receiverId);
|
||||||
_receivers.get(receiverId);
|
|
||||||
if (decoder == null) {
|
if (decoder == null) {
|
||||||
Log.warning("Received notification for which we have no " +
|
Log.warning("Received notification for which we have no " +
|
||||||
"registered receiver [recvId=" + receiverId +
|
"registered receiver [recvId=" + receiverId +
|
||||||
@@ -348,13 +345,13 @@ public class InvocationDirector
|
|||||||
protected void handleClientObjectChanged (int newCloid)
|
protected void handleClientObjectChanged (int newCloid)
|
||||||
{
|
{
|
||||||
// subscribe to the new client object
|
// subscribe to the new client object
|
||||||
_omgr.subscribeToObject(newCloid, new Subscriber() {
|
_omgr.subscribeToObject(newCloid, new Subscriber<ClientObject>() {
|
||||||
public void objectAvailable (DObject object) {
|
public void objectAvailable (ClientObject clobj) {
|
||||||
// grab a reference to our old receiver registrations
|
// grab a reference to our old receiver registrations
|
||||||
DSet receivers = _clobj.receivers;
|
DSet receivers = _clobj.receivers;
|
||||||
|
|
||||||
// replace the client object
|
// replace the client object
|
||||||
_clobj = (ClientObject)object;
|
_clobj = clobj;
|
||||||
|
|
||||||
// add ourselves as an event listener
|
// add ourselves as an event listener
|
||||||
_clobj.addListener(InvocationDirector.this);
|
_clobj.addListener(InvocationDirector.this);
|
||||||
@@ -399,9 +396,9 @@ public class InvocationDirector
|
|||||||
{
|
{
|
||||||
if (_listeners.size() > 0) {
|
if (_listeners.size() > 0) {
|
||||||
long then = now - LISTENER_MAX_AGE;
|
long then = now - LISTENER_MAX_AGE;
|
||||||
Iterator iter = _listeners.values().iterator();
|
Iterator<ListenerMarshaller> iter = _listeners.values().iterator();
|
||||||
while (iter.hasNext()) {
|
while (iter.hasNext()) {
|
||||||
ListenerMarshaller lm = (ListenerMarshaller)iter.next();
|
ListenerMarshaller lm = iter.next();
|
||||||
if (then > lm.mapStamp) {
|
if (then > lm.mapStamp) {
|
||||||
// Log.info("Flushing marshaller " + lm + ".");
|
// Log.info("Flushing marshaller " + lm + ".");
|
||||||
iter.remove();
|
iter.remove();
|
||||||
@@ -444,14 +441,17 @@ public class InvocationDirector
|
|||||||
|
|
||||||
/** Used to keep track of invocation service listeners which will
|
/** Used to keep track of invocation service listeners which will
|
||||||
* receive responses from invocation service requests. */
|
* receive responses from invocation service requests. */
|
||||||
protected HashIntMap _listeners = new HashIntMap();
|
protected HashIntMap<ListenerMarshaller> _listeners =
|
||||||
|
new HashIntMap<ListenerMarshaller>();
|
||||||
|
|
||||||
/** Used to keep track of invocation notification receivers. */
|
/** Used to keep track of invocation notification receivers. */
|
||||||
protected HashIntMap _receivers = new HashIntMap();
|
protected HashIntMap<InvocationDecoder> _receivers =
|
||||||
|
new HashIntMap<InvocationDecoder>();
|
||||||
|
|
||||||
/** All registered receivers are maintained in a list so that we can
|
/** All registered receivers are maintained in a list so that we can
|
||||||
* assign receiver ids to them when we go online. */
|
* assign receiver ids to them when we go online. */
|
||||||
protected ArrayList _reclist = new ArrayList();
|
protected ArrayList<InvocationDecoder> _reclist =
|
||||||
|
new ArrayList<InvocationDecoder>();
|
||||||
|
|
||||||
/** The last time we flushed our listeners. */
|
/** The last time we flushed our listeners. */
|
||||||
protected long _lastFlushTime;
|
protected long _lastFlushTime;
|
||||||
|
|||||||
Reference in New Issue
Block a user