Author: fhanik
Date: Tue May 29 03:44:51 2007
New Revision: 542482
URL: http://svn.apache.org/viewvc?view=rev&rev=542482
Log:
Add the additional SocketStatus event types, its up to the connector
implementation to send the correct one.
Currently the functionality is backwards compatible as OPEN changed to OPEN_READ
Modified:
tomcat/trunk/java/org/apache/catalina/connector/CoyoteAdapter.java
tomcat/trunk/java/org/apache/tomcat/util/net/AprEndpoint.java
tomcat/trunk/java/org/apache/tomcat/util/net/NioEndpoint.java
tomcat/trunk/java/org/apache/tomcat/util/net/SocketStatus.java
Modified: tomcat/trunk/java/org/apache/catalina/connector/CoyoteAdapter.java
URL:
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/connector/CoyoteAdapter.java?view=diff&rev=542482&r1=542481&r2=542482
==============================================================================
--- tomcat/trunk/java/org/apache/catalina/connector/CoyoteAdapter.java
(original)
+++ tomcat/trunk/java/org/apache/catalina/connector/CoyoteAdapter.java Tue May
29 03:44:51 2007
@@ -123,7 +123,27 @@
try {
if ( event!=null && (event instanceof CometEventImpl))
((CometEventImpl)event).setWorkerThread();
- if (status == SocketStatus.OPEN) {
+ if (status == SocketStatus.OPEN_CALLBACK) {
+ if (response.isClosed()) {
+ // The event has been closed asynchronously, so call
end instead of
+ // read to cleanup the pipeline
+
request.getEvent().setEventType(CometEvent.EventType.END);
+ request.getEvent().setEventSubType(null);
+ } else {
+
request.getEvent().setEventType(CometEvent.EventType.CALLBACK);
+ request.getEvent().setEventSubType(null);
+ }
+ } else if (status == SocketStatus.OPEN_WRITE) {
+ if (response.isClosed()) {
+ // The event has been closed asynchronously, so call
end instead of
+ // read to cleanup the pipeline
+
request.getEvent().setEventType(CometEvent.EventType.END);
+ request.getEvent().setEventSubType(null);
+ } else {
+
request.getEvent().setEventType(CometEvent.EventType.WRITE);
+ request.getEvent().setEventSubType(null);
+ }
+ } else if (status == SocketStatus.OPEN_READ) {
if (response.isClosed()) {
// The event has been closed asynchronously, so call
end instead of
// read to cleanup the pipeline
@@ -274,7 +294,7 @@
if (!response.isClosed() && !response.isError()) {
if (request.getAvailable()) {
// Invoke a read event right away if there are
available bytes
- if (event(req, res, SocketStatus.OPEN)) {
+ if (event(req, res, SocketStatus.OPEN_READ)) {
comet = true;
res.action(ActionCode.ACTION_COMET_BEGIN,
null);
}
Modified: tomcat/trunk/java/org/apache/tomcat/util/net/AprEndpoint.java
URL:
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/tomcat/util/net/AprEndpoint.java?view=diff&rev=542482&r1=542481&r2=542482
==============================================================================
--- tomcat/trunk/java/org/apache/tomcat/util/net/AprEndpoint.java (original)
+++ tomcat/trunk/java/org/apache/tomcat/util/net/AprEndpoint.java Tue May 29
03:44:51 2007
@@ -1301,7 +1301,7 @@
// Check for failed sockets and hand this socket
off to a worker
if (((desc[n*2] & Poll.APR_POLLHUP) ==
Poll.APR_POLLHUP)
|| ((desc[n*2] & Poll.APR_POLLERR) ==
Poll.APR_POLLERR)
- || (comet && (!processSocket(desc[n*2+1],
SocketStatus.OPEN)))
+ || (comet && (!processSocket(desc[n*2+1],
SocketStatus.OPEN_READ)))
|| (!comet &&
(!processSocket(desc[n*2+1])))) {
// Close socket and clear pool
if (comet) {
Modified: tomcat/trunk/java/org/apache/tomcat/util/net/NioEndpoint.java
URL:
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/tomcat/util/net/NioEndpoint.java?view=diff&rev=542482&r1=542481&r2=542482
==============================================================================
--- tomcat/trunk/java/org/apache/tomcat/util/net/NioEndpoint.java (original)
+++ tomcat/trunk/java/org/apache/tomcat/util/net/NioEndpoint.java Tue May 29
03:44:51 2007
@@ -1501,7 +1501,7 @@
//check if thread is available
if ( isWorkerAvailable() ) {
unreg(sk, attachment, sk.readyOps());
- if (!processSocket(channel, SocketStatus.OPEN))
+ if (!processSocket(channel,
SocketStatus.OPEN_READ))
processSocket(channel,
SocketStatus.DISCONNECT);
} else {
result = false;
Modified: tomcat/trunk/java/org/apache/tomcat/util/net/SocketStatus.java
URL:
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/tomcat/util/net/SocketStatus.java?view=diff&rev=542482&r1=542481&r2=542482
==============================================================================
--- tomcat/trunk/java/org/apache/tomcat/util/net/SocketStatus.java (original)
+++ tomcat/trunk/java/org/apache/tomcat/util/net/SocketStatus.java Tue May 29
03:44:51 2007
@@ -23,5 +23,5 @@
* @author remm
*/
public enum SocketStatus {
- OPEN, STOP, TIMEOUT, DISCONNECT, ERROR
+ OPEN_READ, OPEN_WRITE, OPEN_CALLBACK, STOP, TIMEOUT, DISCONNECT, ERROR
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]