make AsyncResult extend IAsyncCallback; inline IMessageCallback
Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/3d4c2f94 Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/3d4c2f94 Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/3d4c2f94 Branch: refs/heads/trunk Commit: 3d4c2f9414d58117052b26f2b002bed7546a937a Parents: b60bc58 Author: Jonathan Ellis <[email protected]> Authored: Fri Mar 22 10:47:28 2013 -0500 Committer: Jonathan Ellis <[email protected]> Committed: Fri Mar 22 10:51:18 2013 -0500 ---------------------------------------------------------------------- src/java/org/apache/cassandra/net/AsyncResult.java | 8 +++- .../org/apache/cassandra/net/CallbackInfo.java | 6 +- .../org/apache/cassandra/net/IAsyncCallback.java | 8 +++- .../org/apache/cassandra/net/IMessageCallback.java | 30 --------------- .../org/apache/cassandra/net/MessagingService.java | 12 +++--- .../apache/cassandra/net/ResponseVerbHandler.java | 4 +- .../org/apache/cassandra/service/ReadCallback.java | 2 +- 7 files changed, 25 insertions(+), 45 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/cassandra/blob/3d4c2f94/src/java/org/apache/cassandra/net/AsyncResult.java ---------------------------------------------------------------------- diff --git a/src/java/org/apache/cassandra/net/AsyncResult.java b/src/java/org/apache/cassandra/net/AsyncResult.java index ebeda46..f6e2037 100644 --- a/src/java/org/apache/cassandra/net/AsyncResult.java +++ b/src/java/org/apache/cassandra/net/AsyncResult.java @@ -24,7 +24,11 @@ import java.util.concurrent.locks.Condition; import java.util.concurrent.locks.Lock; import java.util.concurrent.locks.ReentrantLock; -public class AsyncResult<T> implements IMessageCallback +/** + * A callback specialized for returning a value from a single target; that is, this is for messages + * that we only send to one recipient. + */ +public class AsyncResult<T> implements IAsyncCallback<T> { private T result; private final AtomicBoolean done = new AtomicBoolean(false); @@ -70,7 +74,7 @@ public class AsyncResult<T> implements IMessageCallback return result; } - public void result(MessageIn<T> response) + public void response(MessageIn<T> response) { try { http://git-wip-us.apache.org/repos/asf/cassandra/blob/3d4c2f94/src/java/org/apache/cassandra/net/CallbackInfo.java ---------------------------------------------------------------------- diff --git a/src/java/org/apache/cassandra/net/CallbackInfo.java b/src/java/org/apache/cassandra/net/CallbackInfo.java index a5fc8ad..4f40c5a 100644 --- a/src/java/org/apache/cassandra/net/CallbackInfo.java +++ b/src/java/org/apache/cassandra/net/CallbackInfo.java @@ -30,7 +30,7 @@ import org.apache.cassandra.service.StorageProxy; public class CallbackInfo { protected final InetAddress target; - protected final IMessageCallback callback; + protected final IAsyncCallback callback; protected final MessageOut<?> sentMessage; protected final IVersionedSerializer<?> serializer; @@ -41,12 +41,12 @@ public class CallbackInfo * @param callback * @param serializer serializer to deserialize response message */ - public CallbackInfo(InetAddress target, IMessageCallback callback, IVersionedSerializer<?> serializer) + public CallbackInfo(InetAddress target, IAsyncCallback callback, IVersionedSerializer<?> serializer) { this(target, callback, null, serializer); } - public CallbackInfo(InetAddress target, IMessageCallback callback, MessageOut<?> sentMessage, IVersionedSerializer<?> serializer) + public CallbackInfo(InetAddress target, IAsyncCallback callback, MessageOut<?> sentMessage, IVersionedSerializer<?> serializer) { this.target = target; this.callback = callback; http://git-wip-us.apache.org/repos/asf/cassandra/blob/3d4c2f94/src/java/org/apache/cassandra/net/IAsyncCallback.java ---------------------------------------------------------------------- diff --git a/src/java/org/apache/cassandra/net/IAsyncCallback.java b/src/java/org/apache/cassandra/net/IAsyncCallback.java index 868d368..1d83fbc 100644 --- a/src/java/org/apache/cassandra/net/IAsyncCallback.java +++ b/src/java/org/apache/cassandra/net/IAsyncCallback.java @@ -23,10 +23,16 @@ package org.apache.cassandra.net; * service. In particular, if any shared state is referenced, making * response alone synchronized will not suffice. */ -public interface IAsyncCallback<T> extends IMessageCallback +public interface IAsyncCallback<T> { /** * @param msg response received. */ public void response(MessageIn<T> msg); + + /** + * @return true if this callback is on the read path and its latency should be + * given as input to the dynamic snitch. + */ + boolean isLatencyForSnitch(); } http://git-wip-us.apache.org/repos/asf/cassandra/blob/3d4c2f94/src/java/org/apache/cassandra/net/IMessageCallback.java ---------------------------------------------------------------------- diff --git a/src/java/org/apache/cassandra/net/IMessageCallback.java b/src/java/org/apache/cassandra/net/IMessageCallback.java deleted file mode 100644 index 95acc1b..0000000 --- a/src/java/org/apache/cassandra/net/IMessageCallback.java +++ /dev/null @@ -1,30 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.apache.cassandra.net; - -/** - * Common parent of IAsyncCallback and IAsyncResult. Don't implement it directly. - */ -public interface IMessageCallback -{ - /** - * @return true if this callback is on the read path and its latency should be - * given as input to the dynamic snitch. - */ - public boolean isLatencyForSnitch(); -} http://git-wip-us.apache.org/repos/asf/cassandra/blob/3d4c2f94/src/java/org/apache/cassandra/net/MessagingService.java ---------------------------------------------------------------------- diff --git a/src/java/org/apache/cassandra/net/MessagingService.java b/src/java/org/apache/cassandra/net/MessagingService.java index 789555d..69b640b 100644 --- a/src/java/org/apache/cassandra/net/MessagingService.java +++ b/src/java/org/apache/cassandra/net/MessagingService.java @@ -355,7 +355,7 @@ public final class MessagingService implements MessagingServiceMBean * @param address the host that replied to the message * @param latency */ - public void maybeAddLatency(IMessageCallback cb, InetAddress address, long latency) + public void maybeAddLatency(IAsyncCallback cb, InetAddress address, long latency) { if (cb.isLatencyForSnitch()) addLatency(address, latency); @@ -514,7 +514,7 @@ public final class MessagingService implements MessagingServiceMBean return verbHandlers.get(type); } - public int addCallback(IMessageCallback cb, MessageOut message, InetAddress to, long timeout) + public int addCallback(IAsyncCallback cb, MessageOut message, InetAddress to, long timeout) { int messageId = nextId(); CallbackInfo previous; @@ -537,9 +537,9 @@ public final class MessagingService implements MessagingServiceMBean } /* - * @see #sendRR(Message message, InetAddress to, IMessageCallback cb, long timeout) + * @see #sendRR(Message message, InetAddress to, IAsyncCallback cb, long timeout) */ - public int sendRR(MessageOut message, InetAddress to, IMessageCallback cb) + public int sendRR(MessageOut message, InetAddress to, IAsyncCallback cb) { return sendRR(message, to, cb, message.getTimeout()); } @@ -559,7 +559,7 @@ public final class MessagingService implements MessagingServiceMBean * @param timeout the timeout used for expiration * @return an reference to message id used to match with the result */ - public int sendRR(MessageOut message, InetAddress to, IMessageCallback cb, long timeout) + public int sendRR(MessageOut message, InetAddress to, IAsyncCallback cb, long timeout) { int id = addCallback(cb, message, to, timeout); @@ -713,7 +713,7 @@ public final class MessagingService implements MessagingServiceMBean if (message.verb == Verb.REQUEST_RESPONSE && PBSPredictor.instance().isLoggingEnabled()) { - IMessageCallback cb = MessagingService.instance().getRegisteredCallback(id).callback; + IAsyncCallback cb = MessagingService.instance().getRegisteredCallback(id).callback; if (cb instanceof AbstractWriteResponseHandler) { http://git-wip-us.apache.org/repos/asf/cassandra/blob/3d4c2f94/src/java/org/apache/cassandra/net/ResponseVerbHandler.java ---------------------------------------------------------------------- diff --git a/src/java/org/apache/cassandra/net/ResponseVerbHandler.java b/src/java/org/apache/cassandra/net/ResponseVerbHandler.java index 92fbad1..ce8ab33 100644 --- a/src/java/org/apache/cassandra/net/ResponseVerbHandler.java +++ b/src/java/org/apache/cassandra/net/ResponseVerbHandler.java @@ -38,7 +38,7 @@ public class ResponseVerbHandler implements IVerbHandler return; } - IMessageCallback cb = callbackInfo.callback; + IAsyncCallback cb = callbackInfo.callback; MessagingService.instance().maybeAddLatency(cb, message.from, latency); if (cb instanceof IAsyncCallback) @@ -49,7 +49,7 @@ public class ResponseVerbHandler implements IVerbHandler else { Tracing.trace("Processing result from {}", message.from); - ((AsyncResult) cb).result(message); + ((AsyncResult) cb).response(message); } } } http://git-wip-us.apache.org/repos/asf/cassandra/blob/3d4c2f94/src/java/org/apache/cassandra/service/ReadCallback.java ---------------------------------------------------------------------- diff --git a/src/java/org/apache/cassandra/service/ReadCallback.java b/src/java/org/apache/cassandra/service/ReadCallback.java index 2ebaedd..a1caff6 100644 --- a/src/java/org/apache/cassandra/service/ReadCallback.java +++ b/src/java/org/apache/cassandra/service/ReadCallback.java @@ -81,7 +81,7 @@ public class ReadCallback<TMessage, TResolved> implements IAsyncCallback<TMessag public ReadCallback<TMessage, TResolved> withNewResolver(IResponseResolver<TMessage, TResolved> newResolver) { - return new ReadCallback(newResolver, consistencyLevel, blockfor, command, table, endpoints); + return new ReadCallback<TMessage, TResolved>(newResolver, consistencyLevel, blockfor, command, table, endpoints); } public boolean await(long interimTimeout)
