You are viewing a plain text version of this content. The canonical link for it is here.
Posted to scm@geronimo.apache.org by jd...@apache.org on 2007/09/30 12:36:38 UTC
svn commit: r580691 -
/geronimo/sandbox/gshell/trunk/gshell-whisper/src/main/java/org/apache/geronimo/gshell/whisper/request/
Author: jdillon
Date: Sun Sep 30 03:36:37 2007
New Revision: 580691
URL: http://svn.apache.org/viewvc?rev=580691&view=rev
Log:
Fixed a bug in resp handling, rename Request -> RequestHandle, Response -> ResponseHandle to be clear these aren't really messages, just holders
Added:
geronimo/sandbox/gshell/trunk/gshell-whisper/src/main/java/org/apache/geronimo/gshell/whisper/request/RequestHandle.java (contents, props changed)
- copied, changed from r580231, geronimo/sandbox/gshell/trunk/gshell-whisper/src/main/java/org/apache/geronimo/gshell/whisper/request/Request.java
geronimo/sandbox/gshell/trunk/gshell-whisper/src/main/java/org/apache/geronimo/gshell/whisper/request/ResponseHandle.java (contents, props changed)
- copied, changed from r580231, geronimo/sandbox/gshell/trunk/gshell-whisper/src/main/java/org/apache/geronimo/gshell/whisper/request/Response.java
Removed:
geronimo/sandbox/gshell/trunk/gshell-whisper/src/main/java/org/apache/geronimo/gshell/whisper/request/Request.java
geronimo/sandbox/gshell/trunk/gshell-whisper/src/main/java/org/apache/geronimo/gshell/whisper/request/Response.java
Modified:
geronimo/sandbox/gshell/trunk/gshell-whisper/src/main/java/org/apache/geronimo/gshell/whisper/request/RequestManager.java
geronimo/sandbox/gshell/trunk/gshell-whisper/src/main/java/org/apache/geronimo/gshell/whisper/request/RequestResponseFilter.java
geronimo/sandbox/gshell/trunk/gshell-whisper/src/main/java/org/apache/geronimo/gshell/whisper/request/Requestor.java
Copied: geronimo/sandbox/gshell/trunk/gshell-whisper/src/main/java/org/apache/geronimo/gshell/whisper/request/RequestHandle.java (from r580231, geronimo/sandbox/gshell/trunk/gshell-whisper/src/main/java/org/apache/geronimo/gshell/whisper/request/Request.java)
URL: http://svn.apache.org/viewvc/geronimo/sandbox/gshell/trunk/gshell-whisper/src/main/java/org/apache/geronimo/gshell/whisper/request/RequestHandle.java?p2=geronimo/sandbox/gshell/trunk/gshell-whisper/src/main/java/org/apache/geronimo/gshell/whisper/request/RequestHandle.java&p1=geronimo/sandbox/gshell/trunk/gshell-whisper/src/main/java/org/apache/geronimo/gshell/whisper/request/Request.java&r1=580231&r2=580691&rev=580691&view=diff
==============================================================================
--- geronimo/sandbox/gshell/trunk/gshell-whisper/src/main/java/org/apache/geronimo/gshell/whisper/request/Request.java (original)
+++ geronimo/sandbox/gshell/trunk/gshell-whisper/src/main/java/org/apache/geronimo/gshell/whisper/request/RequestHandle.java Sun Sep 30 03:36:37 2007
@@ -37,7 +37,7 @@
*
* @version $Rev$ $Date$
*/
-public class Request
+public class RequestHandle
{
private final Logger log = LoggerFactory.getLogger(getClass());
@@ -53,7 +53,7 @@
private volatile boolean signaled;
- public Request(final Message message, final Duration timeout) {
+ public RequestHandle(final Message message, final Duration timeout) {
assert message != null;
assert timeout != null;
@@ -61,7 +61,7 @@
this.timeout = timeout;
}
- public Request(final Message message, long timeout, final TimeUnit timeoutUnit) {
+ public RequestHandle(final Message message, long timeout, final TimeUnit timeoutUnit) {
this(message, new Duration(timeout, timeoutUnit));
}
@@ -76,11 +76,11 @@
else if (obj == null) {
return false;
}
- else if (!(obj instanceof Request)) {
+ else if (!(obj instanceof RequestHandle)) {
return false;
}
- Request request = (Request) obj;
+ RequestHandle request = (RequestHandle) obj;
return getId().equals(request.getId());
}
@@ -109,24 +109,24 @@
return !responses.isEmpty();
}
- public Response awaitResponse() throws RequestTimeoutException, InterruptedException {
+ public ResponseHandle awaitResponse() throws RequestTimeoutException, InterruptedException {
chechEndOfResponses();
log.debug("Waiting for response");
- Response resp = decodeResponse(responses.take());
+ ResponseHandle resp = decodeResponse(responses.take());
log.trace("Received response: {}", resp);
return resp;
}
- public Response awaitResponse(final long timeout, final TimeUnit unit) throws RequestTimeoutException, InterruptedException {
+ public ResponseHandle awaitResponse(final long timeout, final TimeUnit unit) throws RequestTimeoutException, InterruptedException {
chechEndOfResponses();
log.debug("Polling for response");
- Response resp = decodeResponse(responses.poll(timeout, unit));
+ ResponseHandle resp = decodeResponse(responses.poll(timeout, unit));
if (log.isTraceEnabled()) {
if (resp != null) {
@@ -140,7 +140,7 @@
return resp;
}
- public Response awaitResponseUninterruptibly() throws RequestTimeoutException {
+ public ResponseHandle awaitResponseUninterruptibly() throws RequestTimeoutException {
while (true) {
try {
return awaitResponse();
@@ -149,9 +149,9 @@
}
}
- private Response decodeResponse(final Object obj) {
- if (obj instanceof Response) {
- return (Response) obj;
+ private ResponseHandle decodeResponse(final Object obj) {
+ if (obj instanceof ResponseHandle) {
+ return (ResponseHandle) obj;
}
else if (obj == null) {
return null;
@@ -176,7 +176,7 @@
responses.add(answer);
}
- void signal(final Response response) {
+ void signal(final ResponseHandle response) {
assert response != null;
lock.lock();
@@ -191,7 +191,7 @@
queueResponse(response);
- if (response.getType() != Response.Type.PARTIAL) {
+ if (response.getType() != ResponseHandle.Type.PARTIAL) {
endOfResponses = true;
}
}
Propchange: geronimo/sandbox/gshell/trunk/gshell-whisper/src/main/java/org/apache/geronimo/gshell/whisper/request/RequestHandle.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: geronimo/sandbox/gshell/trunk/gshell-whisper/src/main/java/org/apache/geronimo/gshell/whisper/request/RequestHandle.java
------------------------------------------------------------------------------
svn:keywords = Date Author Id Revision HeadURL
Propchange: geronimo/sandbox/gshell/trunk/gshell-whisper/src/main/java/org/apache/geronimo/gshell/whisper/request/RequestHandle.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Modified: geronimo/sandbox/gshell/trunk/gshell-whisper/src/main/java/org/apache/geronimo/gshell/whisper/request/RequestManager.java
URL: http://svn.apache.org/viewvc/geronimo/sandbox/gshell/trunk/gshell-whisper/src/main/java/org/apache/geronimo/gshell/whisper/request/RequestManager.java?rev=580691&r1=580690&r2=580691&view=diff
==============================================================================
--- geronimo/sandbox/gshell/trunk/gshell-whisper/src/main/java/org/apache/geronimo/gshell/whisper/request/RequestManager.java (original)
+++ geronimo/sandbox/gshell/trunk/gshell-whisper/src/main/java/org/apache/geronimo/gshell/whisper/request/RequestManager.java Sun Sep 30 03:36:37 2007
@@ -88,7 +88,18 @@
return reg;
}
- public void register(final Request request) {
+ public boolean contains(final Message.ID id) {
+ lock.lock();
+
+ try {
+ return registrations.containsKey(id);
+ }
+ finally {
+ lock.unlock();
+ }
+ }
+
+ public void register(final RequestHandle request) {
assert request != null;
lock.lock();
@@ -111,7 +122,7 @@
}
}
- public Request lookup(final Message.ID id) {
+ public RequestHandle lookup(final Message.ID id) {
assert id != null;
lock.lock();
@@ -126,7 +137,7 @@
}
}
- public Request deregister(final Message.ID id) {
+ public RequestHandle deregister(final Message.ID id) {
assert id != null;
lock.lock();
@@ -158,6 +169,7 @@
log.debug("Activated: {}", reg);
}
catch (NotRegisteredException e) {
+ // Sometimes we receive responses to requests faster than we can register them
log.debug("Ignoring activation; request not registered: {}", id);
}
finally {
@@ -242,13 +254,13 @@
private class Registration
{
- public final Request request;
+ public final RequestHandle request;
public RegistrationState state = RegistrationState.PENDING;
private ScheduledFuture<?> timeoutFuture;
- public Registration(final Request request) {
+ public Registration(final RequestHandle request) {
assert request != null;
this.request = request;
Modified: geronimo/sandbox/gshell/trunk/gshell-whisper/src/main/java/org/apache/geronimo/gshell/whisper/request/RequestResponseFilter.java
URL: http://svn.apache.org/viewvc/geronimo/sandbox/gshell/trunk/gshell-whisper/src/main/java/org/apache/geronimo/gshell/whisper/request/RequestResponseFilter.java?rev=580691&r1=580690&r2=580691&view=diff
==============================================================================
--- geronimo/sandbox/gshell/trunk/gshell-whisper/src/main/java/org/apache/geronimo/gshell/whisper/request/RequestResponseFilter.java (original)
+++ geronimo/sandbox/gshell/trunk/gshell-whisper/src/main/java/org/apache/geronimo/gshell/whisper/request/RequestResponseFilter.java Sun Sep 30 03:36:37 2007
@@ -64,8 +64,8 @@
public void filterWrite(final NextFilter nextFilter, final IoSession session, WriteRequest writeRequest) throws Exception {
Object message = writeRequest.getMessage();
- if (message instanceof Request) {
- Request request = (Request) message;
+ if (message instanceof RequestHandle) {
+ RequestHandle request = (RequestHandle) message;
RequestManager manager = RequestManager.BINDER.lookup(session);
@@ -93,14 +93,14 @@
id = msg.getCorrelationId();
}
- // If we have a correlation id, then we can process the response
- if (id != null) {
- RequestManager manager = RequestManager.BINDER.lookup(session);
+ RequestManager manager = RequestManager.BINDER.lookup(session);
- Request request = manager.deregister(id);
+ // If we have a correlation id and its been registered, then we can process the response
+ if (id != null && manager.contains(id)) {
+ RequestHandle request = manager.deregister(id);
// Setup the response and signal the request
- Response response = new Response(request, msg, Response.Type.WHOLE);
+ ResponseHandle response = new ResponseHandle(request, msg, ResponseHandle.Type.WHOLE);
request.signal(response);
@@ -117,8 +117,8 @@
*/
@Override
public void messageSent(final NextFilter nextFilter, final IoSession session, final Object message) throws Exception {
- if (message instanceof Request) {
- Request request = (Request) message;
+ if (message instanceof RequestHandle) {
+ RequestHandle request = (RequestHandle) message;
RequestManager manager = RequestManager.BINDER.lookup(session);
Modified: geronimo/sandbox/gshell/trunk/gshell-whisper/src/main/java/org/apache/geronimo/gshell/whisper/request/Requestor.java
URL: http://svn.apache.org/viewvc/geronimo/sandbox/gshell/trunk/gshell-whisper/src/main/java/org/apache/geronimo/gshell/whisper/request/Requestor.java?rev=580691&r1=580690&r2=580691&view=diff
==============================================================================
--- geronimo/sandbox/gshell/trunk/gshell-whisper/src/main/java/org/apache/geronimo/gshell/whisper/request/Requestor.java (original)
+++ geronimo/sandbox/gshell/trunk/gshell-whisper/src/main/java/org/apache/geronimo/gshell/whisper/request/Requestor.java Sun Sep 30 03:36:37 2007
@@ -72,7 +72,7 @@
assert msg != null;
assert timeout != null;
- Request req = new Request(msg, timeout.getValue(), timeout.getUnit());
+ RequestHandle req = new RequestHandle(msg, timeout.getValue(), timeout.getUnit());
WriteFuture wf = session.write(req);
@@ -86,9 +86,9 @@
public Message request(final Message msg, final Duration timeout) throws Exception {
RequestWriteFuture wf = submit(msg, timeout);
- Request req = wf.getRequest();
+ RequestHandle req = wf.getRequest();
- Response resp = req.awaitResponse();
+ ResponseHandle resp = req.awaitResponse();
return resp.getMessage();
}
@@ -106,14 +106,14 @@
{
private final WriteFuture delegate;
- private final Request request;
+ private final RequestHandle request;
- public RequestWriteFuture(final WriteFuture wf, final Request req) {
+ public RequestWriteFuture(final WriteFuture wf, final RequestHandle req) {
this.delegate = wf;
this.request = req;
}
- public Request getRequest() {
+ public RequestHandle getRequest() {
return request;
}
Copied: geronimo/sandbox/gshell/trunk/gshell-whisper/src/main/java/org/apache/geronimo/gshell/whisper/request/ResponseHandle.java (from r580231, geronimo/sandbox/gshell/trunk/gshell-whisper/src/main/java/org/apache/geronimo/gshell/whisper/request/Response.java)
URL: http://svn.apache.org/viewvc/geronimo/sandbox/gshell/trunk/gshell-whisper/src/main/java/org/apache/geronimo/gshell/whisper/request/ResponseHandle.java?p2=geronimo/sandbox/gshell/trunk/gshell-whisper/src/main/java/org/apache/geronimo/gshell/whisper/request/ResponseHandle.java&p1=geronimo/sandbox/gshell/trunk/gshell-whisper/src/main/java/org/apache/geronimo/gshell/whisper/request/Response.java&r1=580231&r2=580691&rev=580691&view=diff
==============================================================================
--- geronimo/sandbox/gshell/trunk/gshell-whisper/src/main/java/org/apache/geronimo/gshell/whisper/request/Response.java (original)
+++ geronimo/sandbox/gshell/trunk/gshell-whisper/src/main/java/org/apache/geronimo/gshell/whisper/request/ResponseHandle.java Sun Sep 30 03:36:37 2007
@@ -32,15 +32,15 @@
*
* @version $Rev$ $Date$
*/
-public class Response
+public class ResponseHandle
{
- private final Request request;
+ private final RequestHandle request;
private final Type type;
private final Message message;
- public Response(final Request request, final Message message, final Type type) {
+ public ResponseHandle(final RequestHandle request, final Message message, final Type type) {
this.request = request;
this.type = type;
this.message = message;
@@ -57,11 +57,11 @@
else if (obj == null) {
return false;
}
- else if (!(obj instanceof Response)) {
+ else if (!(obj instanceof ResponseHandle)) {
return false;
}
- Response resp = (Response) obj;
+ ResponseHandle resp = (ResponseHandle) obj;
return getRequest().equals(resp.getRequest()) && getType().equals(resp.getType());
}
@@ -74,7 +74,7 @@
.toString();
}
- public Request getRequest() {
+ public RequestHandle getRequest() {
return request;
}
Propchange: geronimo/sandbox/gshell/trunk/gshell-whisper/src/main/java/org/apache/geronimo/gshell/whisper/request/ResponseHandle.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: geronimo/sandbox/gshell/trunk/gshell-whisper/src/main/java/org/apache/geronimo/gshell/whisper/request/ResponseHandle.java
------------------------------------------------------------------------------
svn:keywords = Date Author Id Revision HeadURL
Propchange: geronimo/sandbox/gshell/trunk/gshell-whisper/src/main/java/org/apache/geronimo/gshell/whisper/request/ResponseHandle.java
------------------------------------------------------------------------------
svn:mime-type = text/plain