Author: mturk
Date: Fri Jul 15 11:01:51 2011
New Revision: 1147091
URL: http://svn.apache.org/viewvc?rev=1147091&view=rev
Log:
Use macros for flags struct member set/get/check
Modified:
commons/sandbox/runtime/trunk/src/main/java/org/apache/commons/runtime/net/LocalDescriptor.java
commons/sandbox/runtime/trunk/src/main/native/include/acr/stddefs.h
commons/sandbox/runtime/trunk/src/main/native/os/unix/inetsock.c
commons/sandbox/runtime/trunk/src/main/native/os/unix/localsock.c
commons/sandbox/runtime/trunk/src/main/native/os/unix/sockstream.c
commons/sandbox/runtime/trunk/src/main/native/os/win32/localsock.c
Modified:
commons/sandbox/runtime/trunk/src/main/java/org/apache/commons/runtime/net/LocalDescriptor.java
URL:
http://svn.apache.org/viewvc/commons/sandbox/runtime/trunk/src/main/java/org/apache/commons/runtime/net/LocalDescriptor.java?rev=1147091&r1=1147090&r2=1147091&view=diff
==============================================================================
---
commons/sandbox/runtime/trunk/src/main/java/org/apache/commons/runtime/net/LocalDescriptor.java
(original)
+++
commons/sandbox/runtime/trunk/src/main/java/org/apache/commons/runtime/net/LocalDescriptor.java
Fri Jul 15 11:01:51 2011
@@ -43,7 +43,7 @@ final class LocalDescriptor extends Desc
private static native int block0(long fd, boolean block);
private static native int tmset0(long fd, int timeout);
private static native int shutdown0(long fd, int how);
- private static native boolean isBlocking0(long fd)
+ private static native boolean blocking0(long fd)
throws IOException;
public LocalDescriptor()
@@ -74,7 +74,7 @@ final class LocalDescriptor extends Desc
{
if (closed())
throw new ClosedDescriptorException();
- return isBlocking0(fd);
+ return blocking0(fd);
}
public LocalDescriptor configureBlocking(boolean block)
Modified: commons/sandbox/runtime/trunk/src/main/native/include/acr/stddefs.h
URL:
http://svn.apache.org/viewvc/commons/sandbox/runtime/trunk/src/main/native/include/acr/stddefs.h?rev=1147091&r1=1147090&r2=1147091&view=diff
==============================================================================
--- commons/sandbox/runtime/trunk/src/main/native/include/acr/stddefs.h
(original)
+++ commons/sandbox/runtime/trunk/src/main/native/include/acr/stddefs.h Fri Jul
15 11:01:51 2011
@@ -296,10 +296,14 @@
#define ACR_SET(o, f) do { (o) |= (f); } while (0)
#define ACR_CLR(o, f) do { (o) &= ~(f); } while (0)
-#define ACR_HAS(o, f) ((o) & (f))
+#define ACR_HAS(o, f) (((o) & (f)) != 0)
#define ACR_NOT(o, f) (((o) & (f)) == 0)
#define ACR_ISSET(o, f) (((o) & (f)) == (f))
+#define ACR_SETFLAG(o, f) do { (o)->flags |= (f); } while (0)
+#define ACR_CLRFLAG(o, f) do { (o)->flags &= ~(f); } while (0)
+#define ACR_HASFLAG(o, f) (((o)->flags & (f)) != 0)
+
#define UNUSED_SOURCE_FILE(F) \
const char __provided_##F [] = "Using system provided " #F "()"
Modified: commons/sandbox/runtime/trunk/src/main/native/os/unix/inetsock.c
URL:
http://svn.apache.org/viewvc/commons/sandbox/runtime/trunk/src/main/native/os/unix/inetsock.c?rev=1147091&r1=1147090&r2=1147091&view=diff
==============================================================================
--- commons/sandbox/runtime/trunk/src/main/native/os/unix/inetsock.c (original)
+++ commons/sandbox/runtime/trunk/src/main/native/os/unix/inetsock.c Fri Jul 15
11:01:51 2011
@@ -108,13 +108,15 @@ ACR_NET_EXPORT(jlong, SocketDescriptor,
return 0;
}
sp->type = ACR_DT_SOCKET;
- sp->timeout = -1;
sp->refs = 1;
sp->s = sd;
if (block == JNI_FALSE) {
sp->flags = ACR_DT_NONBLOCK;
sp->timeout = 0;
}
+ else {
+ sp->timeout = -1;
+ }
return P2J(sp);
}
@@ -165,8 +167,9 @@ ACR_NET_EXPORT(jint, SocketDescriptor, s
sd = retain_sd(fd);
if (shutdown(fd->s, how) == -1)
rc = ACR_GET_NETOS_ERROR();
- if (how != 1)
- fd->flags |= ACR_DT_HITEOF;
+ if (how != 1) {
+ ACR_SETFLAG(fd, ACR_DT_HITEOF);
+ }
release_sd(fd);
return rc;
}
@@ -177,8 +180,7 @@ ACR_NET_EXPORT(jint, SocketDescriptor, b
acr_sd_t *fd = J2P(fp, acr_sd_t *);
if (on == JNI_TRUE) {
- if ((fd->flags & ACR_DT_NONBLOCK) != 0 &&
- (rc = AcrNonblock(fd->s, 0)) == 0) {
+ if (ACR_HASFLAG(fd, ACR_DT_NONBLOCK) && (rc = AcrNonblock(fd->s, 0))
== 0) {
fd->timeout = -1;
#if HAVE_SO_RCVTIMEO && HAVE_SO_SNDTIMEO
{
@@ -189,15 +191,14 @@ ACR_NET_EXPORT(jint, SocketDescriptor, b
(char *)&zero, (socklen_t)sizeof(zero));
}
#endif
- fd->flags &= ~ACR_DT_NONBLOCK;
+ ACR_CLRFLAG(fd, ACR_DT_NONBLOCK);
}
}
else {
- if ((fd->flags & ACR_DT_NONBLOCK) == 0 &&
- (rc = AcrNonblock(fd->s, 1)) == 0) {
+ if (!ACR_HASFLAG(fd, ACR_DT_NONBLOCK) && (rc = AcrNonblock(fd->s, 1))
== 0) {
if (fd->timeout < 0)
fd->timeout = 0;
- fd->flags |= ACR_DT_NONBLOCK;
+ ACR_SETFLAG(fd, ACR_DT_NONBLOCK);
}
}
return rc;
@@ -207,10 +208,10 @@ ACR_NET_EXPORT(jboolean, SocketDescripto
{
acr_sd_t *fd = J2P(fp, acr_sd_t *);
- if ((fd->flags & ACR_DT_NONBLOCK) == 0)
- return JNI_TRUE;
- else
+ if (ACR_HASFLAG(fd, ACR_DT_NONBLOCK))
return JNI_FALSE;
+ else
+ return JNI_TRUE;
}
ACR_NET_EXPORT(jboolean, SocketAddress, haveipv6)(JNI_STDARGS)
Modified: commons/sandbox/runtime/trunk/src/main/native/os/unix/localsock.c
URL:
http://svn.apache.org/viewvc/commons/sandbox/runtime/trunk/src/main/native/os/unix/localsock.c?rev=1147091&r1=1147090&r2=1147091&view=diff
==============================================================================
--- commons/sandbox/runtime/trunk/src/main/native/os/unix/localsock.c (original)
+++ commons/sandbox/runtime/trunk/src/main/native/os/unix/localsock.c Fri Jul
15 11:01:51 2011
@@ -91,8 +91,9 @@ ACR_NET_EXPORT(jint, LocalDescriptor, sh
sd = retain_sd(fd);
if (shutdown(sd, how) == -1)
rc = ACR_GET_NETOS_ERROR();
- if (how != 1)
- fd->flags |= ACR_DT_HITEOF;
+ if (how != 1) {
+ ACR_SETFLAG(fd, ACR_DT_HITEOF);
+ }
release_sd(fd);
return rc;
}
@@ -160,13 +161,15 @@ ACR_NET_EXPORT(jlong, LocalDescriptor, s
return 0;
}
sp->type = ACR_DT_LSOCK;
- sp->timeout = -1;
sp->refs = 1;
sp->s = sd;
if (block == JNI_FALSE) {
sp->flags = ACR_DT_NONBLOCK;
sp->timeout = 0;
}
+ else {
+ sp->timeout = -1;
+ }
return P2J(sp);
}
@@ -176,27 +179,23 @@ ACR_NET_EXPORT(jint, LocalDescriptor, bl
acr_sd_t *fd = J2P(fp, acr_sd_t *);
if (on == JNI_TRUE) {
- if ((fd->flags & ACR_DT_NONBLOCK) != 0 &&
- (rc = AcrNonblock(fd->s, 0)) == 0) {
- fd->timeout = -1;
+ if (ACR_HASFLAG(fd, ACR_DT_NONBLOCK) && (rc = AcrNonblock(fd->s, 0))
== 0) {
#if HAVE_SO_RCVTIMEO && HAVE_SO_SNDTIMEO
- {
- int zero = 0;
- setsockopt(fd->s, SOL_SOCKET, SO_RCVTIMEO,
- (char *)&zero, (socklen_t)sizeof(zero));
- setsockopt(fd->s, SOL_SOCKET, SO_SNDTIMEO,
- (char *)&zero, (socklen_t)sizeof(zero));
- }
+ int zero = 0;
+ setsockopt(fd->s, SOL_SOCKET, SO_RCVTIMEO,
+ (char *)&zero, (socklen_t)sizeof(zero));
+ setsockopt(fd->s, SOL_SOCKET, SO_SNDTIMEO,
+ (char *)&zero, (socklen_t)sizeof(zero));
#endif
- fd->flags &= ~ACR_DT_NONBLOCK;
+ fd->timeout = -1;
+ ACR_CLRFLAG(fd, ACR_DT_NONBLOCK);
}
}
else {
- if ((fd->flags & ACR_DT_NONBLOCK) == 0 &&
- (rc = AcrNonblock(fd->s, 1)) == 0) {
+ if (!ACR_HASFLAG(fd, ACR_DT_NONBLOCK) && (rc = AcrNonblock(fd->s, 1))
== 0) {
if (fd->timeout < 0)
fd->timeout = 0;
- fd->flags |= ACR_DT_NONBLOCK;
+ ACR_SETFLAG(fd, ACR_DT_NONBLOCK);
}
}
return rc;
@@ -208,17 +207,17 @@ ACR_NET_EXPORT(jint, LocalDescriptor, tm
acr_sd_t *fd = J2P(fp, acr_sd_t *);
if (timeout == 0) {
- if ((fd->flags & ACR_DT_NONBLOCK) == 0) {
+ if (!ACR_HASFLAG(fd, ACR_DT_NONBLOCK)) {
if ((rc = AcrNonblock(fd->s, 1)) != 0)
return rc;
- fd->flags |= ACR_DT_NONBLOCK;
+ ACR_SETFLAG(fd, ACR_DT_NONBLOCK);
}
}
else if (timeout > 0) {
- if ((fd->flags & ACR_DT_NONBLOCK) == 0) {
+ if (!ACR_HASFLAG(fd, ACR_DT_NONBLOCK)) {
if ((rc = AcrNonblock(fd->s, 1)) != 0)
return rc;
- fd->flags |= ACR_DT_NONBLOCK;
+ ACR_SETFLAG(fd, ACR_DT_NONBLOCK);
}
#if HAVE_SO_RCVTIMEO && HAVE_SO_SNDTIMEO
if (fd->timeout != timeout) {
@@ -230,10 +229,10 @@ ACR_NET_EXPORT(jint, LocalDescriptor, tm
#endif
}
else if (timeout < 0) {
- if ((fd->flags & ACR_DT_NONBLOCK) != 0) {
+ if (ACR_HASFLAG(fd, ACR_DT_NONBLOCK)) {
if ((rc = AcrNonblock(fd->s, 0)) != 0)
return rc;
- fd->flags &= ~ACR_DT_NONBLOCK;
+ ACR_CLRFLAG(fd, ACR_DT_NONBLOCK);
}
#if HAVE_SO_RCVTIMEO && HAVE_SO_SNDTIMEO
{
@@ -249,34 +248,14 @@ ACR_NET_EXPORT(jint, LocalDescriptor, tm
return 0;
}
-ACR_NET_EXPORT(jboolean, LocalDescriptor, isBlocking0)(JNI_STDARGS, jlong fp)
+ACR_NET_EXPORT(jboolean, LocalDescriptor, blocking0)(JNI_STDARGS, jlong fp)
{
acr_sd_t *fd = J2P(fp, acr_sd_t *);
- if ((fd->flags & ACR_DT_NONBLOCK) == 0)
- return JNI_TRUE;
- else
+ if (ACR_HASFLAG(fd, ACR_DT_NONBLOCK))
return JNI_FALSE;
-#if 0
-#ifdef O_NONBLOCK
- /* Use non-blocking I/O
- */
- long mode;
- acr_sd_t *fd = J2P(fp, acr_sd_t *);
-
- if ((mode = fcntl(fd->s, F_GETFL, 0)) == -1) {
- ACR_THROW_NET_ERRNO();
+ else
return JNI_TRUE;
- }
- if ((mode & O_NONBLOCK) == O_NONBLOCK)
- return JNI_FALSE;
-#else
- /* Non blocking I/O is unsupported.
- */
- ACR_THROW_NET_ERROR(ACR_ENOTIMPL);
-#endif
- return JNI_TRUE;
-#endif
}
ACR_NET_EXPORT(jint, LocalEndpoint, connect0)(JNI_STDARGS, jlong fp,
@@ -290,7 +269,7 @@ ACR_NET_EXPORT(jint, LocalEndpoint, conn
sd = retain_sd(fd);
if (timeout == 0)
timeout = fd->timeout;
- if (timeout > 0 && (fd->flags & ACR_DT_NONBLOCK) == 0) {
+ if (timeout > 0 && !ACR_HASFLAG(fd, ACR_DT_NONBLOCK)) {
/* Turn the socket to non-blocking mode
*/
if ((rc = AcrNonblock(sd, 1)) != 0)
@@ -319,7 +298,7 @@ ACR_NET_EXPORT(jint, LocalEndpoint, conn
}
#endif
}
- if ((fd->type & ACR_DT_NONBLOCK) == 0)
+ if (!ACR_HASFLAG(fd, ACR_DT_NONBLOCK))
AcrNonblock(fd->s, 0);
}
}
@@ -404,7 +383,7 @@ ACR_NET_EXPORT(jlong, LocalServerEndpoin
if (block == JNI_FALSE) {
int rc = 0;
#if HAVE_NONBLOCK_INHERITED
- if ((fd->flags & ACR_DT_NONBLOCK) == 0)
+ if (!ACR_HASFLAG(fd, ACR_DT_NONBLOCK))
#endif
rc = AcrNonblock(sd, 1);
if (rc != 0) {
@@ -414,7 +393,7 @@ ACR_NET_EXPORT(jlong, LocalServerEndpoin
}
}
#if HAVE_NONBLOCK_INHERITED
- else if ((fd->flags & ACR_DT_NONBLOCK) != 0) {
+ else if (ACR_HASFLAG(fd, ACR_DT_NONBLOCK)) {
/* We have nonblocking acceptor and need
* blocking socket
*/
@@ -436,14 +415,17 @@ ACR_NET_EXPORT(jlong, LocalServerEndpoin
return 0;
}
sp->type = ACR_DT_LSOCK;
- sp->flags = fd->flags & ~ACR_DT_NONBLOCK;
+ sp->flags = fd->flags;
sp->timeout = fd->timeout;
sp->refs = 1;
sp->s = sd;
if (block == JNI_FALSE) {
- sp->flags |= ACR_DT_NONBLOCK;
+ ACR_SETFLAG(sp, ACR_DT_NONBLOCK);
if (sp->timeout < 0)
sp->timeout = 0;
}
+ else {
+ ACR_CLRFLAG(sp, ACR_DT_NONBLOCK);
+ }
return P2J(sp);
}
Modified: commons/sandbox/runtime/trunk/src/main/native/os/unix/sockstream.c
URL:
http://svn.apache.org/viewvc/commons/sandbox/runtime/trunk/src/main/native/os/unix/sockstream.c?rev=1147091&r1=1147090&r2=1147091&view=diff
==============================================================================
--- commons/sandbox/runtime/trunk/src/main/native/os/unix/sockstream.c
(original)
+++ commons/sandbox/runtime/trunk/src/main/native/os/unix/sockstream.c Fri Jul
15 11:01:51 2011
@@ -40,7 +40,7 @@ typedef struct acr_ss_t {
acr_sd_t *fd;
} acr_ss_t;
-ACR_INLINE(int) _retain_sd(acr_ss_t *ss)
+ACR_INLINE(int) retain_sd(acr_ss_t *ss)
{
if (ss->fd != 0) {
AcrAtomic32Inc(&ss->fd->refs);
@@ -50,7 +50,7 @@ ACR_INLINE(int) _retain_sd(acr_ss_t *ss)
return -1;
}
-ACR_INLINE(void) _release_sd(acr_ss_t *ss)
+ACR_INLINE(int) release_sd(acr_ss_t *ss)
{
if (AcrAtomic32Dec(&ss->fd->refs) == 0) {
/* Socket was closed while we were
@@ -60,7 +60,10 @@ ACR_INLINE(void) _release_sd(acr_ss_t *s
*/
AcrFree(ss->fd);
ss->fd = 0;
+ return 0;
}
+ else
+ return 1;
}
ACR_NET_EXPORT(jlong, SocketStream, alloc0)(JNI_STDARGS, jlong fp)
@@ -91,12 +94,49 @@ ACR_NET_EXPORT(jint, SocketStream, close
ACR_NET_EXPORT(jboolean, SocketStream, eof0)(JNI_STDARGS, jlong sp)
{
acr_ss_t *ss = J2P(sp, acr_ss_t *);
- if ((ss->fd->flags & ACR_DT_HITEOF) != 0)
+ if (ACR_HASFLAG(ss->fd, ACR_DT_HITEOF))
return JNI_TRUE;
else
return JNI_FALSE;
}
+ACR_NET_EXPORT(jboolean, SocketStream, eof1)(JNI_STDARGS, jlong sp)
+{
+ int sd, rc = 0;
+ jboolean rv = JNI_TRUE;
+ acr_ss_t *ss = J2P(sp, acr_ss_t *);
+
+ if ((sd = retain_sd(ss)) == -1) {
+ rc = ACR_EBADF;
+ goto finally;
+ }
+ if (ACR_HASFLAG(ss->fd, ACR_DT_HITEOF))
+ goto finally;
+ rc = AcrWaitIO(sd, 0, POLLIN);
+ if (rc == 0) {
+ char dummy;
+ ssize_t rd = recv(sd, &dummy, 1, MSG_PEEK);
+ if (rd == -1)
+ rc = errno;
+ else if (rd != 0)
+ rv = JNI_FALSE;
+ }
+ else if (rc == ACR_TIMEUP) {
+ rv = JNI_FALSE;
+ rc = 0;
+ }
+ if (rv) {
+ ACR_SETFLAG(ss->fd, ACR_DT_HITEOF);
+ }
+finally:
+ release_sd(ss);
+ if (rc != 0) {
+ ACR_THROW_NET_ERROR(rc);
+ }
+ return rv;
+}
+
+
ACR_NET_EXPORT(jint, SocketStream, avail0)(JNI_STDARGS, jlong sp)
{
int avail;
@@ -121,14 +161,12 @@ ACR_NET_EXPORT(jint, SocketStream, read0
unsigned char ch;
acr_ss_t *ss = J2P(sp, acr_ss_t *);
- if ((ss->fd->flags & ACR_DT_HITEOF) != 0) {
- /* Already hit EOF */
- return -1;
- }
- if ((sd = _retain_sd(ss)) == -1) {
+ if ((sd = retain_sd(ss)) == -1) {
rc = ACR_EBADF;
goto finally;
}
+ if (ACR_HASFLAG(ss->fd, ACR_DT_HITEOF))
+ goto finally;
rd = r_read(sd, &ch, 1);
if (rd == -1 && (errno == EAGAIN || errno == EWOULDBLOCK) &&
ss->fd->timeout > 0) {
@@ -144,7 +182,7 @@ ACR_NET_EXPORT(jint, SocketStream, read0
else
ss->fd->flags |= ACR_DT_HITEOF;
finally:
- _release_sd(ss);
+ release_sd(ss);
if (rc != 0) {
ACR_THROW_NET_ERROR(rc);
return -1;
@@ -165,14 +203,12 @@ ACR_NET_EXPORT(jint, SocketStream, read1
jbyte onstack[ACR_PBUFF_SIZ];
acr_ss_t *ss = J2P(sp, acr_ss_t *);
- if ((ss->fd->flags & ACR_DT_HITEOF) != 0) {
- /* Already hit EOF */
- return -1;
- }
- if ((sd = _retain_sd(ss)) == -1) {
+ if ((sd = retain_sd(ss)) == -1) {
rc = ACR_EBADF;
goto finally;
}
+ if (ACR_HASFLAG(ss->fd, ACR_DT_HITEOF))
+ goto finally;
if (len > ACR_PBUFF_SIZ) {
if (len > ACR_MEGABYTE) {
if ((bc = (*env)->GetByteArrayElements(env, buf, 0)) != 0)
@@ -201,7 +237,7 @@ ACR_NET_EXPORT(jint, SocketStream, read1
ss->fd->flags |= ACR_DT_HITEOF;
finally:
- _release_sd(ss);
+ release_sd(ss);
if (rc == 0) {
if (rd > 0) {
if (bc != 0) {
@@ -238,14 +274,12 @@ ACR_NET_EXPORT(jint, SocketStream, read2
char *bb = J2P(pa, char *);
acr_ss_t *ss = J2P(sp, acr_ss_t *);
- if ((ss->fd->flags & ACR_DT_HITEOF) != 0) {
- /* Already hit EOF */
- return -1;
- }
- if ((sd = _retain_sd(ss)) == -1) {
+ if ((sd = retain_sd(ss)) == -1) {
rc = ACR_EBADF;
goto finally;
}
+ if (ACR_HASFLAG(ss->fd, ACR_DT_HITEOF))
+ goto finally;
if (bb == 0) {
rc = ACR_EINVAL;
goto finally;
@@ -264,7 +298,7 @@ ACR_NET_EXPORT(jint, SocketStream, read2
ss->fd->flags |= ACR_DT_HITEOF;
finally:
- _release_sd(ss);
+ release_sd(ss);
if (rc != 0) {
rd = 0;
/* Throw exception */
@@ -284,14 +318,12 @@ ACR_NET_EXPORT(jint, SocketStream, read3
char *bb = 0;
acr_ss_t *ss = J2P(sp, acr_ss_t *);
- if ((ss->fd->flags & ACR_DT_HITEOF) != 0) {
- /* Already hit EOF */
- return -1;
- }
- if ((sd = _retain_sd(ss)) == -1) {
+ if ((sd = retain_sd(ss)) == -1) {
rc = ACR_EBADF;
goto finally;
}
+ if (ACR_HASFLAG(ss->fd, ACR_DT_HITEOF))
+ goto finally;
bb = (char *)(*env)->GetDirectBufferAddress(env, buf);
if (bb == 0) {
rc = ACR_EINVAL;
@@ -312,7 +344,7 @@ ACR_NET_EXPORT(jint, SocketStream, read3
ss->fd->flags |= ACR_DT_HITEOF;
finally:
- _release_sd(ss);
+ release_sd(ss);
if (rc != 0) {
rd = 0;
/* Throw exception */
@@ -330,7 +362,7 @@ ACR_NET_EXPORT(jint, SocketStream, write
ssize_t wr = 0;
acr_ss_t *ss = J2P(sp, acr_ss_t *);
- if ((sd = _retain_sd(ss)) == -1) {
+ if ((sd = retain_sd(ss)) == -1) {
rc = ACR_EBADF;
goto finally;
}
@@ -345,7 +377,7 @@ ACR_NET_EXPORT(jint, SocketStream, write
if (wr == -1)
rc = ACR_GET_OS_ERROR();
finally:
- _release_sd(ss);
+ release_sd(ss);
if (rc != 0) {
wr = -1;
ACR_THROW_NET_ERROR(rc);
@@ -364,7 +396,7 @@ ACR_NET_EXPORT(jint, SocketStream, write
ssize_t wr = 0;
acr_ss_t *ss = J2P(sp, acr_ss_t *);
- if ((sd = _retain_sd(ss)) == -1) {
+ if ((sd = retain_sd(ss)) == -1) {
rc = ACR_EBADF;
goto finally;
}
@@ -384,7 +416,7 @@ ACR_NET_EXPORT(jint, SocketStream, write
if (wr == -1)
rc = ACR_GET_OS_ERROR();
finally:
- _release_sd(ss);
+ release_sd(ss);
if (bb != 0)
(*env)->ReleaseByteArrayElements(env, buf, bb, JNI_ABORT);
if (rc != 0) {
@@ -406,7 +438,7 @@ ACR_NET_EXPORT(jint, SocketStream, write
char *bb = J2P(pa, char *);
acr_ss_t *ss = J2P(sp, acr_ss_t *);
- if ((sd = _retain_sd(ss)) == -1) {
+ if ((sd = retain_sd(ss)) == -1) {
rc = ACR_EBADF;
goto finally;
}
@@ -425,7 +457,7 @@ ACR_NET_EXPORT(jint, SocketStream, write
if (wr == -1)
rc = ACR_GET_OS_ERROR();
finally:
- _release_sd(ss);
+ release_sd(ss);
if (rc != 0) {
wr = -1;
ACR_THROW_NET_ERROR(rc);
@@ -444,7 +476,7 @@ ACR_NET_EXPORT(jint, SocketStream, write
ssize_t wr = 0;
acr_ss_t *ss = J2P(sp, acr_ss_t *);
- if ((sd = _retain_sd(ss)) == -1) {
+ if ((sd = retain_sd(ss)) == -1) {
rc = ACR_EBADF;
goto finally;
}
@@ -464,7 +496,7 @@ ACR_NET_EXPORT(jint, SocketStream, write
if (wr == -1)
rc = ACR_GET_OS_ERROR();
finally:
- _release_sd(ss);
+ release_sd(ss);
if (rc != 0) {
wr = -1;
ACR_THROW_NET_ERROR(rc);
@@ -487,7 +519,7 @@ ACR_NET_EXPORT(jlong, SocketStream, writ
jbyteArray bastack[ACR_IOVEC_ON_STACK];
acr_ss_t *ss = J2P(sp, acr_ss_t *);
- if ((sd = _retain_sd(ss)) == -1) {
+ if ((sd = retain_sd(ss)) == -1) {
rc = ACR_EBADF;
goto finally;
}
@@ -540,7 +572,7 @@ ACR_NET_EXPORT(jlong, SocketStream, writ
if (wr == -1)
rc = ACR_GET_OS_ERROR();
finally:
- _release_sd(ss);
+ release_sd(ss);
if (boa != 0) {
for (i = 0; i < len; i++) {
if (boa[i] != 0)
@@ -572,7 +604,7 @@ ACR_NET_EXPORT(jlong, SocketStream, writ
struct iovec onstack[ACR_IOVEC_ON_STACK];
acr_ss_t *ss = J2P(sp, acr_ss_t *);
- if ((sd = _retain_sd(ss)) == -1) {
+ if ((sd = retain_sd(ss)) == -1) {
rc = ACR_EBADF;
goto finally;
}
@@ -617,7 +649,7 @@ ACR_NET_EXPORT(jlong, SocketStream, writ
if (wr == -1)
rc = ACR_GET_OS_ERROR();
finally:
- _release_sd(ss);
+ release_sd(ss);
if (iov != onstack)
AcrFree(iov);
if (rc != 0) {
Modified: commons/sandbox/runtime/trunk/src/main/native/os/win32/localsock.c
URL:
http://svn.apache.org/viewvc/commons/sandbox/runtime/trunk/src/main/native/os/win32/localsock.c?rev=1147091&r1=1147090&r2=1147091&view=diff
==============================================================================
--- commons/sandbox/runtime/trunk/src/main/native/os/win32/localsock.c
(original)
+++ commons/sandbox/runtime/trunk/src/main/native/os/win32/localsock.c Fri Jul
15 11:01:51 2011
@@ -111,8 +111,9 @@ ACR_NET_EXPORT(jint, LocalDescriptor, sh
sd = retain_sd(fd);
if (shutdown(fd->s, how) == SOCKET_ERROR)
rc = ACR_GET_NETOS_ERROR();
- if (how != 1)
- fd->flags |= ACR_DT_HITEOF;
+ if (how != 1) {
+ ACR_SETFLAG(fd, ACR_DT_HITEOF);
+ }
release_sd(fd);
return rc;
}
@@ -167,13 +168,15 @@ ACR_NET_EXPORT(jlong, LocalDescriptor, s
return 0;
}
sp->type = ACR_DT_LSOCK;
- sp->timeout = -1;
sp->refs = 1;
sp->s = sd;
if (block == JNI_FALSE) {
- sp->flags |= ACR_DT_NONBLOCK;
+ ACR_SETFLAG(sp, ACR_DT_NONBLOCK);
sp->timeout = 0;
}
+ else {
+ sp->timeout = -1;
+ }
return P2J(sp);
}
@@ -183,7 +186,7 @@ ACR_NET_EXPORT(jint, LocalDescriptor, bl
acr_sd_t *fd = J2P(fp, acr_sd_t *);
if (on == JNI_TRUE) {
- if ((fd->flags & ACR_DT_NONBLOCK) != 0) {
+ if (ACR_HASFLAG(fd, ACR_DT_NONBLOCK)) {
int zero = 0;
if ((rc = AcrNonblock(fd->s, 0)) != 0)
return rc;
@@ -192,29 +195,29 @@ ACR_NET_EXPORT(jint, LocalDescriptor, bl
setsockopt(fd->s, SOL_SOCKET, SO_SNDTIMEO,
(char *)&zero, (socklen_t)sizeof(zero));
fd->timeout = -1;
- fd->flags &= ~ACR_DT_NONBLOCK;
+ ACR_CLRFLAG(fd, ACR_DT_NONBLOCK);
}
}
else {
- if ((fd->flags & ACR_DT_NONBLOCK) == 0) {
+ if (!ACR_HASFLAG(fd, ACR_DT_NONBLOCK)) {
if ((rc = AcrNonblock(fd->s, 1)) != 0)
return rc;
if (fd->timeout < 0)
fd->timeout = 0;
- fd->flags |= ACR_DT_NONBLOCK;
+ ACR_SETFLAG(fd, ACR_DT_NONBLOCK);
}
}
return 0;
}
-ACR_NET_EXPORT(jboolean, LocalDescriptor, isBlocking0)(JNI_STDARGS, jlong fp)
+ACR_NET_EXPORT(jboolean, LocalDescriptor, blocking0)(JNI_STDARGS, jlong fp)
{
acr_sd_t *fd = J2P(fp, acr_sd_t *);
- if ((fd->flags & ACR_DT_NONBLOCK) == 0)
- return JNI_TRUE;
- else
+ if (ACR_HASFLAG(fd, ACR_DT_NONBLOCK))
return JNI_FALSE;
+ else
+ return JNI_TRUE;
}
ACR_NET_EXPORT(jint, LocalDescriptor, tmset0)(JNI_STDARGS, jlong fp, jint
timeout)
@@ -223,17 +226,17 @@ ACR_NET_EXPORT(jint, LocalDescriptor, tm
acr_sd_t *fd = J2P(fp, acr_sd_t *);
if (timeout == 0) {
- if ((fd->flags & ACR_DT_NONBLOCK) == 0) {
+ if (!ACR_HASFLAG(fd, ACR_DT_NONBLOCK)) {
if ((rc = AcrNonblock(fd->s, 1)) != 0)
return rc;
- fd->flags |= ACR_DT_NONBLOCK;
+ ACR_SETFLAG(fd, ACR_DT_NONBLOCK);
}
}
else if (timeout > 0) {
- if ((fd->flags & ACR_DT_NONBLOCK) == 0) {
+ if (!ACR_HASFLAG(fd, ACR_DT_NONBLOCK)) {
if ((rc = AcrNonblock(fd->s, 1)) != 0)
return rc;
- fd->flags |= ACR_DT_NONBLOCK;
+ ACR_SETFLAG(fd, ACR_DT_NONBLOCK);
}
if (fd->timeout != timeout) {
setsockopt(fd->s, SOL_SOCKET, SO_RCVTIMEO,
@@ -244,10 +247,10 @@ ACR_NET_EXPORT(jint, LocalDescriptor, tm
}
else if (timeout < 0) {
int zero = 0;
- if ((fd->flags & ACR_DT_NONBLOCK) != 0) {
+ if (ACR_HASFLAG(fd, ACR_DT_NONBLOCK)) {
if ((rc = AcrNonblock(fd->s, 0)) != 0)
return rc;
- fd->flags &= ~ACR_DT_NONBLOCK;
+ ACR_CLRFLAG(fd, ACR_DT_NONBLOCK);
}
setsockopt(fd->s, SOL_SOCKET, SO_RCVTIMEO,
(char *)&zero, (socklen_t)sizeof(zero));
@@ -301,12 +304,12 @@ ACR_NET_EXPORT(jint, LocalEndpoint, conn
if (timeout == 0)
timeout = fd->timeout;
sd = retain_sd(fd);
- if (timeout > 0 && (fd->flags & ACR_DT_NONBLOCK) == 0) {
+ if (timeout > 0 && !ACR_HASFLAG(fd, ACR_DT_NONBLOCK)) {
/* Turn the socket to non-blocking mode
* for the duration of the connect call.
*/
if ((rc = AcrNonblock(sd, 1)) != 0)
- goto finally;;
+ goto finally;
}
rc = connect(sd, (SOCKADDR *)&sa, sas);
if (rc == SOCKET_ERROR)
@@ -324,7 +327,7 @@ ACR_NET_EXPORT(jint, LocalEndpoint, conn
rc = err;
}
}
- if ((fd->type & ACR_DT_NONBLOCK) == 0)
+ if (!ACR_HASFLAG(fd, ACR_DT_NONBLOCK))
AcrNonblock(sd, 0);
}
}
@@ -435,7 +438,7 @@ ACR_NET_EXPORT(jlong, LocalServerEndpoin
return 0;
}
if (block == JNI_FALSE) {
- if ((fd->flags & ACR_DT_NONBLOCK) == 0) {
+ if (!ACR_HASFLAG(fd, ACR_DT_NONBLOCK)) {
int rc = AcrNonblock(sd, 1);
if (rc != 0) {
closesocket(sd);
@@ -444,7 +447,7 @@ ACR_NET_EXPORT(jlong, LocalServerEndpoin
}
}
}
- else if ((fd->flags & ACR_DT_NONBLOCK) != 0) {
+ else if (ACR_HASFLAG(fd, ACR_DT_NONBLOCK)) {
int rc = AcrNonblock(sd, 0);
if (rc != 0) {
closesocket(sd);
@@ -465,14 +468,17 @@ ACR_NET_EXPORT(jlong, LocalServerEndpoin
SOCKADDR_RELEASE(ba, aa);
sp->type = ACR_DT_LSOCK;
- sp->flags = fd->flags & ~ACR_DT_NONBLOCK;
+ sp->flags = fd->flags;
sp->timeout = fd->timeout;
sp->refs = 1;
sp->s = sd;
if (block == JNI_FALSE) {
- sp->flags |= ACR_DT_NONBLOCK;
+ ACR_SETFLAG(sp, ACR_DT_NONBLOCK);
if (sp->timeout < 0)
sp->timeout = 0;
}
+ else {
+ ACR_CLRFLAG(sp, ACR_DT_NONBLOCK);
+ }
return P2J(sp);
}