Return-Path: X-Original-To: apmail-zookeeper-commits-archive@www.apache.org Delivered-To: apmail-zookeeper-commits-archive@www.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id E453F1076B for ; Wed, 21 Aug 2013 09:41:13 +0000 (UTC) Received: (qmail 85761 invoked by uid 500); 21 Aug 2013 09:41:13 -0000 Delivered-To: apmail-zookeeper-commits-archive@zookeeper.apache.org Received: (qmail 85655 invoked by uid 500); 21 Aug 2013 09:41:08 -0000 Mailing-List: contact commits-help@zookeeper.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@ Delivered-To: mailing list commits@zookeeper.apache.org Received: (qmail 85647 invoked by uid 99); 21 Aug 2013 09:41:07 -0000 Received: from nike.apache.org (HELO nike.apache.org) (192.87.106.230) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 21 Aug 2013 09:41:07 +0000 X-ASF-Spam-Status: No, hits=-2000.0 required=5.0 tests=ALL_TRUSTED,T_FRT_STOCK2 X-Spam-Check-By: apache.org Received: from [140.211.11.4] (HELO eris.apache.org) (140.211.11.4) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 21 Aug 2013 09:41:04 +0000 Received: from eris.apache.org (localhost [127.0.0.1]) by eris.apache.org (Postfix) with ESMTP id 2287E238888A; Wed, 21 Aug 2013 09:40:43 +0000 (UTC) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r1516123 - in /zookeeper/trunk: CHANGES.txt src/c/src/mt_adaptor.c src/c/src/zk_log.c Date: Wed, 21 Aug 2013 09:40:42 -0000 To: commits@zookeeper.apache.org From: fpj@apache.org X-Mailer: svnmailer-1.0.9 Message-Id: <20130821094043.2287E238888A@eris.apache.org> X-Virus-Checked: Checked by ClamAV on apache.org Author: fpj Date: Wed Aug 21 09:40:42 2013 New Revision: 1516123 URL: http://svn.apache.org/r1516123 Log: ZOOKEEPER-1400. Allow logging via callback instead of raw FILE pointer (michi via fpj) Modified: zookeeper/trunk/CHANGES.txt zookeeper/trunk/src/c/src/mt_adaptor.c zookeeper/trunk/src/c/src/zk_log.c Modified: zookeeper/trunk/CHANGES.txt URL: http://svn.apache.org/viewvc/zookeeper/trunk/CHANGES.txt?rev=1516123&r1=1516122&r2=1516123&view=diff ============================================================================== --- zookeeper/trunk/CHANGES.txt (original) +++ zookeeper/trunk/CHANGES.txt Wed Aug 21 09:40:42 2013 @@ -545,6 +545,8 @@ IMPROVEMENTS: ZOOKEEPER-1413. Use on-disk transaction log for learner sync up (thawan) + ZOOKEEPER-1400. Allow logging via callback instead of raw FILE pointer (michi via fpj) + Release 3.4.0 - Non-backward compatible changes: Modified: zookeeper/trunk/src/c/src/mt_adaptor.c URL: http://svn.apache.org/viewvc/zookeeper/trunk/src/c/src/mt_adaptor.c?rev=1516123&r1=1516122&r2=1516123&view=diff ============================================================================== --- zookeeper/trunk/src/c/src/mt_adaptor.c (original) +++ zookeeper/trunk/src/c/src/mt_adaptor.c Wed Aug 21 09:40:42 2013 @@ -114,7 +114,7 @@ int process_async(int outstanding_sync) unsigned __stdcall do_io( void * ); unsigned __stdcall do_completion( void * ); -int handle_error(SOCKET sock, char* message) +int handle_error(zhandle_t* zh, SOCKET sock, char* message) { LOG_ERROR(LOGCALLBACK(zh), "%s. %d",message, WSAGetLastError()); closesocket (sock); @@ -122,7 +122,7 @@ int handle_error(SOCKET sock, char* mess } //--create socket pair for interupting selects. -int create_socket_pair(SOCKET fds[2]) +int create_socket_pair(zhandle_t* zh, SOCKET fds[2]) { struct sockaddr_in inaddr; struct sockaddr addr; @@ -141,23 +141,23 @@ int create_socket_pair(SOCKET fds[2]) inaddr.sin_port = 0; //--system assigns the port if ( setsockopt(lst,SOL_SOCKET,SO_REUSEADDR,(char*)&yes,sizeof(yes)) == SOCKET_ERROR ) { - return handle_error(lst,"Error trying to set socket option."); + return handle_error(zh, lst,"Error trying to set socket option."); } if (bind(lst,(struct sockaddr *)&inaddr,sizeof(inaddr)) == SOCKET_ERROR){ - return handle_error(lst,"Error trying to bind socket."); + return handle_error(zh, lst,"Error trying to bind socket."); } if (listen(lst,1) == SOCKET_ERROR){ - return handle_error(lst,"Error trying to listen on socket."); + return handle_error(zh, lst,"Error trying to listen on socket."); } len=sizeof(inaddr); getsockname(lst, &addr,&len); fds[0]=socket(AF_INET, SOCK_STREAM,0); if (connect(fds[0],&addr,len) == SOCKET_ERROR){ - return handle_error(lst, "Error while connecting to socket."); + return handle_error(zh, lst, "Error while connecting to socket."); } if ((fds[1]=accept(lst,0,0)) == INVALID_SOCKET){ closesocket(fds[0]); - return handle_error(lst, "Error while accepting socket connection."); + return handle_error(zh, lst, "Error while accepting socket connection."); } closesocket(lst); return 0; @@ -238,7 +238,7 @@ int adaptor_init(zhandle_t *zh) /* We use a pipe for interrupting select() in unix/sol and socketpair in windows. */ #ifdef WIN32 - if (create_socket_pair(adaptor_threads->self_pipe) == -1){ + if (create_socket_pair(zh, adaptor_threads->self_pipe) == -1){ LOG_ERROR(LOGCALLBACK(zh), "Can't make a socket."); #else if(pipe(adaptor_threads->self_pipe)==-1) { Modified: zookeeper/trunk/src/c/src/zk_log.c URL: http://svn.apache.org/viewvc/zookeeper/trunk/src/c/src/zk_log.c?rev=1516123&r1=1516122&r2=1516123&view=diff ============================================================================== --- zookeeper/trunk/src/c/src/zk_log.c (original) +++ zookeeper/trunk/src/c/src/zk_log.c Wed Aug 21 09:40:42 2013 @@ -127,6 +127,18 @@ void log_message(log_callback_fn callbac { static const char* dbgLevelStr[]={"ZOO_INVALID","ZOO_ERROR","ZOO_WARN", "ZOO_INFO","ZOO_DEBUG"}; + static pid_t pid=0; + va_list va; + int ofs = 0; +#ifdef THREADED + unsigned long int tid = 0; +#endif +#ifdef WIN32 + char timebuf [TIME_NOW_BUF_SIZE]; + const char* time = time_now(timebuf); +#else + const char* time = time_now(get_time_buffer()); +#endif char* buf = get_format_log_buffer(); if(!buf) @@ -135,40 +147,31 @@ void log_message(log_callback_fn callbac return; } - static pid_t pid=0; - if(pid==0) { pid=getpid(); } -#ifdef WIN32 - char timebuf [TIME_NOW_BUF_SIZE]; - const char* time = time_now(timebuf); -#else - const char* time = time_now(get_time_buffer()); -#endif #ifndef THREADED - int ofs = snprintf(buf, FORMAT_LOG_BUF_SIZE, - "%s:%d:%s@%s@%d: ", time, pid, - dbgLevelStr[curLevel], funcName, line); + ofs = snprintf(buf, FORMAT_LOG_BUF_SIZE, + "%s:%d:%s@%s@%d: ", time, pid, + dbgLevelStr[curLevel], funcName, line); #else #ifdef WIN32 - unsigned long int tid = (unsigned long int)(pthread_self().thread_id); + tid = (unsigned long int)(pthread_self().thread_id); #else - unsigned long int tid = (unsigned long int)(pthread_self()); + tid = (unsigned long int)(pthread_self()); #endif - int ofs = snprintf(buf, FORMAT_LOG_BUF_SIZE-1, - "%s:%d(0x%lx):%s@%s@%d: ", time, pid, tid, - dbgLevelStr[curLevel], funcName, line); + ofs = snprintf(buf, FORMAT_LOG_BUF_SIZE-1, + "%s:%d(0x%lx):%s@%s@%d: ", time, pid, tid, + dbgLevelStr[curLevel], funcName, line); #endif // Now grab the actual message out of the variadic arg list - va_list va; va_start(va, format); vsnprintf(buf+ofs, FORMAT_LOG_BUF_SIZE-1-ofs, format, va); va_end(va);