Author: rjung Date: Tue Dec 11 14:57:59 2007 New Revision: 603400 URL: http://svn.apache.org/viewvc?rev=603400&view=rev Log: Add function description comments and switch return values of jk_is_socket_connected() from 0/1 to JK_FALSE/JK_TRUE.
Modified: tomcat/connectors/trunk/jk/native/common/jk_connect.c Modified: tomcat/connectors/trunk/jk/native/common/jk_connect.c URL: http://svn.apache.org/viewvc/tomcat/connectors/trunk/jk/native/common/jk_connect.c?rev=603400&r1=603399&r2=603400&view=diff ============================================================================== --- tomcat/connectors/trunk/jk/native/common/jk_connect.c (original) +++ tomcat/connectors/trunk/jk/native/common/jk_connect.c Tue Dec 11 14:57:59 2007 @@ -58,6 +58,12 @@ typedef const char* SET_TYPE; #endif +/** Set socket to blocking + * @param sd socket to manipulate + * @return errno: fcntl returns -1 /* ! WIN32 */ + * pseudo errno: ioctlsocket returns SOCKET_ERROR /* WIN32 */ + * 0: success + */ static int soblock(jk_sock_t sd) { /* BeOS uses setsockopt at present for non blocking... */ @@ -87,6 +93,12 @@ return 0; } +/** Set socket to non-blocking + * @param sd socket to manipulate + * @return errno: fcntl returns -1 /* ! WIN32 */ + * pseudo errno: ioctlsocket returns SOCKET_ERROR /* WIN32 */ + * 0: success + */ static int sononblock(jk_sock_t sd) { #ifndef WIN32 @@ -117,6 +129,17 @@ #if defined (WIN32) || (defined(NETWARE) && defined(__NOVELL_LIBC__)) /* WIN32 implementation */ +/** Non-blocking socket connect + * @param sock socket to connect + * @param addr address to connect to + * @param timeout connect timeout in seconds + * (<=0: no timeout=blocking) + * @param l logger + * @return -1: some kind of error occured + * SOCKET_ERROR: no timeout given and error + * during blocking connect + * 0: success + */ static int nb_connect(jk_sock_t sock, struct sockaddr *addr, int timeout, jk_logger_t *l) { int rc; @@ -167,6 +190,15 @@ #elif !defined(NETWARE) /* POSIX implementation */ +/** Non-blocking socket connect + * @param sock socket to connect + * @param addr address to connect to + * @param timeout connect timeout in seconds + * (<=0: no timeout=blocking) + * @param l logger + * @return -1: some kind of error occured + * 0: success + */ static int nb_connect(jk_sock_t sock, struct sockaddr *addr, int timeout, jk_logger_t *l) { int rc = 0; @@ -216,6 +248,14 @@ } #else /* NETWARE implementation - blocking for now */ +/** Non-blocking socket connect + * @param sock socket to connect + * @param addr address to connect to + * @param timeout connect timeout in seconds (ignored!) + * @param l logger + * @return -1: some kind of error occured + * 0: success + */ static int nb_connect(jk_sock_t sock, struct sockaddr *addr, int timeout, jk_logger_t *l) { return connect(sock, addr, sizeof(struct sockaddr_in)); @@ -243,8 +283,14 @@ #endif -/** resolve the host IP */ - +/** Resolve the host IP + * @param host host or ip address + * @param port port + * @param rc return value pointer + * @param l logger + * @return JK_FALSE: some kind of error occured + * JK_TRUE: success + */ int jk_resolve(const char *host, int port, struct sockaddr_in *rc, jk_logger_t *l) { int x; @@ -262,7 +308,7 @@ } } - /* If we found also characters we shoud make name to IP resolution */ + /* If we found also characters we should make name to IP resolution */ if (host[x] != '\0') { #ifdef HAVE_APR @@ -320,8 +366,17 @@ return JK_TRUE; } -/** connect to Tomcat */ - +/** Connect to Tomcat + * @param addr address to connect to + * @param keepalive should we set SO_KEEPALIVE (if !=0) + * @param timeout connect timeout in seconds + * (<=0: no timeout=blocking) + * @param sock_buf size of send and recv buffer + * (<=0: use default) + * @param l logger + * @return JK_INVALID_SOCKET: some kind of error occured + * created socket: success + */ jk_sock_t jk_open_socket(struct sockaddr_in *addr, int keepalive, int timeout, int sock_buf, jk_logger_t *l) { @@ -342,7 +397,6 @@ "socket() failed (errno=%d)", errno); JK_TRACE_EXIT(l); return JK_INVALID_SOCKET; -; } /* Disable Nagle algorithm */ if (setsockopt(sock, IPPROTO_TCP, TCP_NODELAY, (SET_TYPE)&set, @@ -485,8 +539,13 @@ return sock; } -/** close the socket */ - +/** Close the socket + * @param s socket to close + * @param l logger + * @return -1: some kind of error occured /* ! WIN32 */ + * SOCKET_ERROR: some kind of error occured /* WIN32 */ + * 0: success + */ int jk_close_socket(jk_sock_t s, jk_logger_t *l) { if (IS_VALID_SOCKET(s)) @@ -510,6 +569,15 @@ #define SHUT_WR 0x01 #endif #endif + +/** Drain and close the socket + * @param s socket to close + * @param l logger + * @return -1: socket to close is invalid + * -1: some kind of error occured /* ! WIN32 */ + * SOCKET_ERROR: some kind of error occured /* WIN32 */ + * 0: success + */ int jk_shutdown_socket(jk_sock_t s, jk_logger_t *l) { char dummy[512]; @@ -565,15 +633,17 @@ return jk_close_socket(s, l); } -/** send a long message - * @param sd opened socket. - * @param b buffer containing the data. - * @param len length to send. - * @return -2: send returned 0 ? what this that ? - * -3: send failed. - * >0: total size send. +/** send a message + * @param sd socket to use + * @param b buffer containing the data + * @param len length to send + * @param l logger + * @return negative errno: write returns a fatal -1 /* ! WIN32 */ + * negative pseudo errno: send returns SOCKET_ERROR /* WIN32 */ + * JK_SOCKET_EOF: no bytes could be sent + * >0: success, total size send * @bug this fails on Unixes if len is too big for the underlying - * protocol. + * protocol */ int jk_tcp_socket_sendfull(jk_sock_t sd, const unsigned char *b, int len, jk_logger_t *l) { @@ -602,12 +672,15 @@ return sent; } -/** receive len bytes. Used in ajp_common. - * @param sd opened socket. - * @param b buffer to store the data. - * @param len length to receive. - * @return <0: receive failed or connection closed. - * >0: length of the received data. +/** receive a message + * @param sd socket to use + * @param b buffer to store the data + * @param len length to receive + * @param l logger + * @return negative errno: read returns a fatal -1 /* ! WIN32 */ + * negative pseudo errno: recv returns SOCKET_ERROR /* WIN32 */ + * JK_SOCKET_EOF: no bytes could be read + * >0: success, total size received */ int jk_tcp_socket_recvfull(jk_sock_t sd, unsigned char *b, int len, jk_logger_t *l) { @@ -653,6 +726,12 @@ return buf; } +/** Test if a socket is still connected + * @param sock socket to use + * @param l logger + * @return JK_FALSE: failure + * JK_TRUE: success + */ int jk_is_socket_connected(jk_sock_t sock, jk_logger_t *l) { fd_set fd; @@ -679,7 +758,7 @@ if (rc == 0) { /* If we get a timeout, then we are still connected */ - return 1; + return JK_TRUE; } else if (rc == 1) { #if defined(WIN32) || (defined(NETWARE) && defined(__NOVELL_LIBC__)) @@ -689,16 +768,16 @@ errno = 0; else errno = WSAGetLastError() - WSABASEERR; - return nr == 0 ? 0 : 1; + return nr == JK_FALSE ? JK_FALSE : JK_TRUE; } errno = WSAGetLastError() - WSABASEERR; #else int nr; if (ioctl(sock, FIONREAD, (void*)&nr) == 0) { - return nr == 0 ? 0 : 1; + return nr == JK_FALSE ? JK_FALSE : JK_TRUE; } #endif } - return 0; + return JK_FALSE; } --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]