You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@zookeeper.apache.org by an...@apache.org on 2018/08/23 14:12:08 UTC

[16/20] zookeeper git commit: ZOOKEEPER-3031: 3.4: MAVEN MIGRATION - move client dir

http://git-wip-us.apache.org/repos/asf/zookeeper/blob/5694559d/src/c/src/recordio.c
----------------------------------------------------------------------
diff --git a/src/c/src/recordio.c b/src/c/src/recordio.c
deleted file mode 100644
index 0fcf48e..0000000
--- a/src/c/src/recordio.c
+++ /dev/null
@@ -1,366 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include <recordio.h>
-#include <string.h>
-#include <stdio.h>
-#include <errno.h>
-#include <stdlib.h>
-#ifndef WIN32
-#include <netinet/in.h>
-#else
-#include <winsock2.h> /* for _htonl and _ntohl */
-#endif
-
-void deallocate_String(char **s)
-{
-    if (*s)
-        free(*s);
-    *s = 0;
-}
-
-void deallocate_Buffer(struct buffer *b)
-{
-    if (b->buff)
-        free(b->buff);
-    b->buff = 0;
-}
-
-struct buff_struct {
-    int32_t len;
-    int32_t off;
-    char *buffer;
-};
-
-static int resize_buffer(struct buff_struct *s, int newlen)
-{
-    char *buffer= NULL;
-    while (s->len < newlen) {
-        s->len *= 2;
-    }
-    buffer = (char*)realloc(s->buffer, s->len);
-    if (!buffer) {
-        s->buffer = 0;
-        return -ENOMEM;
-    }
-    s->buffer = buffer;
-    return 0;
-}
-
-int oa_start_record(struct oarchive *oa, const char *tag)
-{
-    return 0;
-}
-int oa_end_record(struct oarchive *oa, const char *tag)
-{
-    return 0;
-}
-int oa_serialize_int(struct oarchive *oa, const char *tag, const int32_t *d)
-{
-    struct buff_struct *priv = oa->priv;
-    int32_t i = htonl(*d);
-    if ((priv->len - priv->off) < sizeof(i)) {
-        int rc = resize_buffer(priv, priv->len + sizeof(i));
-        if (rc < 0) return rc;
-    }
-    memcpy(priv->buffer+priv->off, &i, sizeof(i));
-    priv->off+=sizeof(i);
-    return 0;
-}
-int64_t zoo_htonll(int64_t v)
-{
-    int i = 0;
-    char *s = (char *)&v;
-    if (htonl(1) == 1) {
-        return v;
-    }
-    for (i = 0; i < 4; i++) {
-        int tmp = s[i];
-        s[i] = s[8-i-1];
-        s[8-i-1] = tmp;
-    }
-
-    return v;
-}
-
-int oa_serialize_long(struct oarchive *oa, const char *tag, const int64_t *d)
-{
-    const int64_t i = zoo_htonll(*d);
-    struct buff_struct *priv = oa->priv;
-    if ((priv->len - priv->off) < sizeof(i)) {
-        int rc = resize_buffer(priv, priv->len + sizeof(i));
-        if (rc < 0) return rc;
-    }
-    memcpy(priv->buffer+priv->off, &i, sizeof(i));
-    priv->off+=sizeof(i);
-    return 0;
-}
-int oa_start_vector(struct oarchive *oa, const char *tag, const int32_t *count)
-{
-    return oa_serialize_int(oa, tag, count);
-}
-int oa_end_vector(struct oarchive *oa, const char *tag)
-{
-    return 0;
-}
-int oa_serialize_bool(struct oarchive *oa, const char *name, const int32_t *i)
-{
-    //return oa_serialize_int(oa, name, i);
-    struct buff_struct *priv = oa->priv;
-    if ((priv->len - priv->off) < 1) {
-        int rc = resize_buffer(priv, priv->len + 1);
-        if (rc < 0)
-            return rc;
-    }
-    priv->buffer[priv->off] = (*i == 0 ? '\0' : '\1');
-    priv->off++;
-    return 0;
-}
-static const int32_t negone = -1;
-int oa_serialize_buffer(struct oarchive *oa, const char *name,
-        const struct buffer *b)
-{
-    struct buff_struct *priv = oa->priv;
-    int rc;
-    if (!b) {
-        return oa_serialize_int(oa, "len", &negone);
-    }
-    rc = oa_serialize_int(oa, "len", &b->len);
-    if (rc < 0)
-        return rc;
-    // this means a buffer of NUll 
-    // with size of -1. This is 
-    // waht we use in java serialization for NULL
-    if (b->len == -1) {
-      return rc;
-    }
-    if ((priv->len - priv->off) < b->len) {
-        rc = resize_buffer(priv, priv->len + b->len);
-        if (rc < 0)
-            return rc;
-    }
-    memcpy(priv->buffer+priv->off, b->buff, b->len);
-    priv->off += b->len;
-    return 0;
-}
-int oa_serialize_string(struct oarchive *oa, const char *name, char **s)
-{
-    struct buff_struct *priv = oa->priv;
-    int32_t len;
-    int rc;
-    if (!*s) {
-        oa_serialize_int(oa, "len", &negone);
-        return 0;
-    }
-    len = strlen(*s);
-    rc = oa_serialize_int(oa, "len", &len);
-    if (rc < 0)
-        return rc;
-    if ((priv->len - priv->off) < len) {
-        rc = resize_buffer(priv, priv->len + len);
-        if (rc < 0)
-            return rc;
-    }
-    memcpy(priv->buffer+priv->off, *s, len);
-    priv->off += len;
-    return 0;
-}
-int ia_start_record(struct iarchive *ia, const char *tag)
-{
-    return 0;
-}
-int ia_end_record(struct iarchive *ia, const char *tag)
-{
-    return 0;
-}
-int ia_deserialize_int(struct iarchive *ia, const char *tag, int32_t *count)
-{
-    struct buff_struct *priv = ia->priv;
-    if ((priv->len - priv->off) < sizeof(*count)) {
-        return -E2BIG;
-    }
-    memcpy(count, priv->buffer+priv->off, sizeof(*count));
-    priv->off+=sizeof(*count);
-    *count = ntohl(*count);
-    return 0;
-}
-
-int ia_deserialize_long(struct iarchive *ia, const char *tag, int64_t *count)
-{
-    struct buff_struct *priv = ia->priv;
-    int64_t v = 0;
-    if ((priv->len - priv->off) < sizeof(*count)) {
-        return -E2BIG;
-    }
-    memcpy(count, priv->buffer+priv->off, sizeof(*count));
-    priv->off+=sizeof(*count);
-    v = zoo_htonll(*count); // htonll and  ntohll do the same
-    *count = v;
-    return 0;
-}
-int ia_start_vector(struct iarchive *ia, const char *tag, int32_t *count)
-{
-    return ia_deserialize_int(ia, tag, count);
-}
-int ia_end_vector(struct iarchive *ia, const char *tag)
-{
-    return 0;
-}
-int ia_deserialize_bool(struct iarchive *ia, const char *name, int32_t *v)
-{
-    struct buff_struct *priv = ia->priv;
-    //fprintf(stderr, "Deserializing bool %d\n", priv->off);
-    //return ia_deserialize_int(ia, name, v);
-    if ((priv->len - priv->off) < 1) {
-        return -E2BIG;
-    }
-    *v = priv->buffer[priv->off];
-    priv->off+=1;
-    //fprintf(stderr, "Deserializing bool end %d\n", priv->off);
-    return 0;
-}
-int ia_deserialize_buffer(struct iarchive *ia, const char *name,
-        struct buffer *b)
-{
-    struct buff_struct *priv = ia->priv;
-    int rc = ia_deserialize_int(ia, "len", &b->len);
-    if (rc < 0)
-        return rc;
-    if ((priv->len - priv->off) < b->len) {
-        return -E2BIG;
-    }
-    // set the buffer to null
-    if (b->len == -1) {
-       b->buff = NULL;
-       return rc;
-    }
-    b->buff = malloc(b->len);
-    if (!b->buff) {
-        return -ENOMEM;
-    }
-    memcpy(b->buff, priv->buffer+priv->off, b->len);
-    priv->off += b->len;
-    return 0;
-}
-int ia_deserialize_string(struct iarchive *ia, const char *name, char **s)
-{
-    struct buff_struct *priv = ia->priv;
-    int32_t len;
-    int rc = ia_deserialize_int(ia, "len", &len);
-    if (rc < 0)
-        return rc;
-    if ((priv->len - priv->off) < len) {
-        return -E2BIG;
-    }
-    if (len < 0) {
-        return -EINVAL;
-    }
-    *s = malloc(len+1);
-    if (!*s) {
-        return -ENOMEM;
-    }
-    memcpy(*s, priv->buffer+priv->off, len);
-    (*s)[len] = '\0';
-    priv->off += len;
-    return 0;
-}
-
-static struct iarchive ia_default = { STRUCT_INITIALIZER (start_record ,ia_start_record),
-        STRUCT_INITIALIZER (end_record ,ia_end_record), STRUCT_INITIALIZER (start_vector , ia_start_vector),
-        STRUCT_INITIALIZER (end_vector ,ia_end_vector), STRUCT_INITIALIZER (deserialize_Bool , ia_deserialize_bool),
-        STRUCT_INITIALIZER (deserialize_Int ,ia_deserialize_int),
-        STRUCT_INITIALIZER (deserialize_Long , ia_deserialize_long) ,
-        STRUCT_INITIALIZER (deserialize_Buffer, ia_deserialize_buffer),
-        STRUCT_INITIALIZER (deserialize_String, ia_deserialize_string)   };
-
-static struct oarchive oa_default = { STRUCT_INITIALIZER (start_record , oa_start_record),
-        STRUCT_INITIALIZER (end_record , oa_end_record), STRUCT_INITIALIZER (start_vector , oa_start_vector),
-        STRUCT_INITIALIZER (end_vector , oa_end_vector), STRUCT_INITIALIZER (serialize_Bool , oa_serialize_bool),
-        STRUCT_INITIALIZER (serialize_Int , oa_serialize_int),
-        STRUCT_INITIALIZER (serialize_Long , oa_serialize_long) ,
-        STRUCT_INITIALIZER (serialize_Buffer , oa_serialize_buffer),
-        STRUCT_INITIALIZER (serialize_String , oa_serialize_string) };
-
-struct iarchive *create_buffer_iarchive(char *buffer, int len)
-{
-    struct iarchive *ia;
-    struct buff_struct *buff;
-    ia = malloc(sizeof(*ia));
-    if (!ia) return 0;
-    buff = malloc(sizeof(struct buff_struct));
-    if (!buff) {
-        free(ia);
-        return 0;
-    }
-    *ia = ia_default;
-    buff->off = 0;
-    buff->buffer = buffer;
-    buff->len = len;
-    ia->priv = buff;
-    return ia;
-}
-
-struct oarchive *create_buffer_oarchive()
-{
-    struct oarchive *oa;
-    struct buff_struct *buff;
-    oa = malloc(sizeof(*oa));
-    if (!oa) return 0;
-    buff = malloc(sizeof(struct buff_struct));
-    if (!buff) {
-        free(oa);
-        return 0;
-    }
-    *oa = oa_default;
-    buff->off = 0;
-    buff->buffer = malloc(128);
-    buff->len = 128;
-    oa->priv = buff;
-    return oa;
-}
-
-void close_buffer_iarchive(struct iarchive **ia)
-{
-    free((*ia)->priv);
-    free(*ia);
-    *ia = 0;
-}
-
-void close_buffer_oarchive(struct oarchive **oa, int free_buffer)
-{
-    if (free_buffer) {
-        struct buff_struct *buff = (struct buff_struct *)(*oa)->priv;
-        if (buff->buffer) {
-            free(buff->buffer);
-        }
-    }
-    free((*oa)->priv);
-    free(*oa);
-    *oa = 0;
-}
-
-char *get_buffer(struct oarchive *oa)
-{
-    struct buff_struct *buff = oa->priv;
-    return buff->buffer;
-}
-int get_buffer_len(struct oarchive *oa)
-{
-    struct buff_struct *buff = oa->priv;
-    return buff->off;
-}

http://git-wip-us.apache.org/repos/asf/zookeeper/blob/5694559d/src/c/src/st_adaptor.c
----------------------------------------------------------------------
diff --git a/src/c/src/st_adaptor.c b/src/c/src/st_adaptor.c
deleted file mode 100644
index 23573b3..0000000
--- a/src/c/src/st_adaptor.c
+++ /dev/null
@@ -1,113 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#ifndef DLL_EXPORT
-#  define USE_STATIC_LIB
-#endif
-
-#include "zk_adaptor.h"
-#include <stdlib.h>
-#include <time.h>
-
-int zoo_lock_auth(zhandle_t *zh)
-{
-	return 0;
-}
-int zoo_unlock_auth(zhandle_t *zh)
-{
-	return 0;
-}
-int lock_buffer_list(buffer_head_t *l)
-{
-	return 0;
-}
-int unlock_buffer_list(buffer_head_t *l)
-{
-	return 0;
-}
-int lock_completion_list(completion_head_t *l)
-{
-	return 0;
-}
-int unlock_completion_list(completion_head_t *l)
-{
-	return 0;
-}
-struct sync_completion *alloc_sync_completion(void)
-{
-    return (struct sync_completion*)calloc(1, sizeof(struct sync_completion));
-}
-int wait_sync_completion(struct sync_completion *sc)
-{
-    return 0;
-}
-
-void free_sync_completion(struct sync_completion *sc)
-{
-    free(sc);
-}
-
-void notify_sync_completion(struct sync_completion *sc)
-{
-}
-
-int process_async(int outstanding_sync)
-{
-    return outstanding_sync == 0;
-}
-
-int adaptor_init(zhandle_t *zh)
-{
-    return 0;
-}
-
-void adaptor_finish(zhandle_t *zh){}
-
-void adaptor_destroy(zhandle_t *zh){}
-
-int flush_send_queue(zhandle_t *, int);
-
-int adaptor_send_queue(zhandle_t *zh, int timeout)
-{
-    return flush_send_queue(zh, timeout);
-}
-
-int32_t inc_ref_counter(zhandle_t* zh,int i)
-{
-    zh->ref_counter+=(i<0?-1:(i>0?1:0));
-    return zh->ref_counter;
-}
-
-int32_t get_xid()
-{
-    static int32_t xid = -1;
-    if (xid == -1) {
-        xid = time(0);
-    }
-    return xid++;
-}
-
-int enter_critical(zhandle_t* zh)
-{
-	return 0;
-}
-
-int leave_critical(zhandle_t* zh)
-{
-	return 0;
-}

http://git-wip-us.apache.org/repos/asf/zookeeper/blob/5694559d/src/c/src/winport.c
----------------------------------------------------------------------
diff --git a/src/c/src/winport.c b/src/c/src/winport.c
deleted file mode 100644
index 3592ea1..0000000
--- a/src/c/src/winport.c
+++ /dev/null
@@ -1,302 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#ifdef WIN32
-#include "winport.h"
-#include <stdlib.h>
-#include <stdint.h> /* for int64_t */
-#include <winsock2.h> /* must always be included before ws2tcpip.h */
-#include <ws2tcpip.h> /* for SOCKET */
-
-int pthread_mutex_lock(pthread_mutex_t* _mutex ){      
-       int rc = WaitForSingleObject( *_mutex,    // handle to mutex
-            INFINITE);  // no time-out interval
-       return ((rc == WAIT_OBJECT_0) ? 0: rc); 
-}
-
-int pthread_mutex_unlock( pthread_mutex_t* _mutex ){   
-       int rc = ReleaseMutex(*_mutex);
-       return ((rc != 0)? 0: GetLastError());  
-}
-
-int pthread_mutex_init(pthread_mutex_t* _mutex, void* ignoredAttr){
-       //use CreateMutex as we are using the HANDLES in pthread_cond
-       *_mutex = CreateMutex( 
-        NULL,              // default security attributes
-        FALSE,             // initially not owned
-        NULL);             // unnamed mutex    
-       return ((*_mutex == NULL) ? GetLastError() : 0);
-}
-
-int pthread_mutex_destroy(pthread_mutex_t* _mutex)
-{
-       int rc = CloseHandle(*_mutex);
-       return ((rc != 0)? 0: GetLastError());  
-}
-
-int pthread_create(pthread_t *thread, const pthread_attr_t *attr, unsigned  (__stdcall* start_routine)(void* a), void *arg)
-{
-   int _intThreadId; 
-   (*thread).thread_handle = (HANDLE)_beginthreadex( NULL, 0, start_routine , arg, 0, (unsigned int*)&_intThreadId );
-   (*thread).thread_id = _intThreadId;
-   return (((*thread).thread_handle == 0 ) ? errno : 0 );         
-}
-
-
-int pthread_equal(pthread_t t1, pthread_t t2){
-//Is there a better way to do this? GetThreadId(handle) is only supported Windows 2003 n above.
-       return ((t1.thread_id == t2.thread_id) ? 1:0);              
-}
-
-pthread_t pthread_self(){
-    pthread_t thread_self;
-    thread_self.thread_handle = GetCurrentThread();
-    thread_self.thread_id     = GetCurrentThreadId();
-    return thread_self;
-}
-
-int pthread_join(pthread_t _thread, void** ignore)
-{
-       int rc = WaitForSingleObject( _thread.thread_handle, INFINITE );
-       return ((rc == WAIT_OBJECT_0) ? 0: rc); 
-}
-
-int pthread_detach(pthread_t _thread)
-{
-       int rc = CloseHandle(_thread.thread_handle) ;
-       return  (rc != 0) ? 0: GetLastError();
-}
-
-void pthread_mutexattr_init(pthread_mutexattr_t* ignore){}
-void pthread_mutexattr_settype(pthread_mutexattr_t* ingore_attr, int ignore){}
-void pthread_mutexattr_destroy(pthread_mutexattr_t* ignore_attr){}
-       
-int 
-pthread_cond_init (pthread_cond_t *cv,
-                   const pthread_condattr_t * ignore)
-{
-  cv->waiters_count_ = 0;
-  cv->was_broadcast_ = 0;
-  cv->sema_ = CreateSemaphore (NULL,       // no security
-                                0,          // initially 0
-                                0x7fffffff, // max count
-                                NULL);      // unnamed 
-  if (cv->sema_ == NULL ) 
-               return GetLastError();
-  InitializeCriticalSection (&cv->waiters_count_lock_);
-  cv->waiters_done_ = CreateEvent (NULL,  // no security
-                                   FALSE, // auto-reset
-                                   FALSE, // non-signaled initially
-                                   NULL); // unnamed
-  return (cv->waiters_done_ == NULL) ? GetLastError() : 0;
-       
-}
-
-
-int pthread_cond_destroy(pthread_cond_t *cond)
-{
-       CloseHandle( cond->sema_);
-       DeleteCriticalSection(&cond->waiters_count_lock_);
-       return (CloseHandle( cond->waiters_done_ ) == 0)? GetLastError(): 0 ;
-}
-
-
-int
-pthread_cond_signal (pthread_cond_t *cv)
-{
-  int have_waiters;
-  EnterCriticalSection (& (cv->waiters_count_lock_));
-  have_waiters = cv->waiters_count_ > 0;
-  LeaveCriticalSection (&cv->waiters_count_lock_);
-
-  // If there aren't any waiters, then this is a no-op.  
-  if (have_waiters){
-         return (ReleaseSemaphore (cv->sema_, 1, 0) == 0 )  ? GetLastError() : 0 ;
-  }else
-         return 0;
-}
-
-
-int
-pthread_cond_broadcast (pthread_cond_t *cv)
-{
-  // This is needed to ensure that <waiters_count_> and <was_broadcast_> are
-  // consistent relative to each other.
-  int have_waiters = 0;
-  EnterCriticalSection (&cv->waiters_count_lock_);
-  
-  if (cv->waiters_count_ > 0) {
-    // We are broadcasting, even if there is just one waiter...
-    // Record that we are broadcasting, which helps optimize
-    // <pthread_cond_wait> for the non-broadcast case.
-    cv->was_broadcast_ = 1;
-    have_waiters = 1;
-  }
-
-  if (have_waiters) {
-    // Wake up all the waiters atomically.
-    ReleaseSemaphore (cv->sema_, cv->waiters_count_, 0);
-
-    LeaveCriticalSection (&cv->waiters_count_lock_);
-
-    // Wait for all the awakened threads to acquire the counting
-    // semaphore. 
-    WaitForSingleObject (cv->waiters_done_, INFINITE);
-    // This assignment is okay, even without the <waiters_count_lock_> held 
-    // because no other waiter threads can wake up to access it.
-    cv->was_broadcast_ = 0;
-  }
-  else
-    LeaveCriticalSection (&cv->waiters_count_lock_);
-}
-
-
-int
-pthread_cond_wait (pthread_cond_t *cv, 
-                   pthread_mutex_t *external_mutex)
-{
-  int last_waiter;
-  // Avoid race conditions.
-  EnterCriticalSection (&cv->waiters_count_lock_);
-  cv->waiters_count_++;
-  LeaveCriticalSection (&cv->waiters_count_lock_);
-
-  // This call atomically releases the mutex and waits on the
-  // semaphore until <pthread_cond_signal> or <pthread_cond_broadcast>
-  // are called by another thread.
-  SignalObjectAndWait (*external_mutex, cv->sema_, INFINITE, FALSE);
-
-  // Reacquire lock to avoid race conditions.
-  EnterCriticalSection (&cv->waiters_count_lock_);
-
-  // We're no longer waiting...
-  cv->waiters_count_--;
-
-  // Check to see if we're the last waiter after <pthread_cond_broadcast>.
-  last_waiter = cv->was_broadcast_ && cv->waiters_count_ == 0;
-
-  LeaveCriticalSection (&cv->waiters_count_lock_);
-
-  // If we're the last waiter thread during this particular broadcast
-  // then let all the other threads proceed.
-  if (last_waiter)
-    // This call atomically signals the <waiters_done_> event and waits until
-    // it can acquire the <external_mutex>.  This is required to ensure fairness. 
-    SignalObjectAndWait (cv->waiters_done_, *external_mutex, INFINITE, FALSE);
-  else
-    // Always regain the external mutex since that's the guarantee we
-    // give to our callers. 
-    WaitForSingleObject (*external_mutex, INFINITE);
-}
-
-int pthread_key_create(pthread_key_t *key, void (*destructor)(void *) )
-{
-  int result = 0;
-  pthread_key_t* newkey;
-
-  if ((newkey = (pthread_key_t*) calloc (1, sizeof (pthread_key_t))) == NULL)
-    {
-      result = ENOMEM;
-    }
-  else if ((newkey->key = TlsAlloc ()) == TLS_OUT_OF_INDEXES)
-    {
-      result = EAGAIN;
-      free (newkey);
-      newkey = NULL;
-    }
-  else if (destructor != NULL)
-    {
-      //--we have to store the function pointer for destructor, so that we can call it 
-         //--to free up the user allocated storage--       
-      newkey->destructor = destructor;
-    }
-  key = newkey;  
-  return (result);     
-}
-
-int pthread_key_delete(pthread_key_t key)
-{
-  int rc = 0;
-  LPVOID lpvData =  TlsGetValue(key.key);
-  rc = TlsFree (key.key);
-  rc = (rc != 0 ) ? 0 : GetLastError();
-  if (key.destructor != NULL && lpvData != 0){
-       key.destructor(lpvData);         //we take control of calling destructor, instead of calling it on thread exit.
-  }
-  free (&key);
-  return (rc);
-}
-
-void *pthread_getspecific(pthread_key_t key)
-{
-       LPVOID lpvData =  TlsGetValue(key.key);
-       if ((lpvData == 0) && (GetLastError() != ERROR_SUCCESS)) 
-               return NULL;
-       else 
-               return lpvData;
-}
-
-int pthread_setspecific(pthread_key_t key, const void *value)
-{
-       int rc = TlsSetValue (key.key, value);
-       return ((rc != 0 ) ? 0 : GetLastError());
-}
-
-int gettimeofday(struct timeval *tp, void *tzp) {
-        int64_t now = 0;
-        if (tzp != 0) { errno = EINVAL; return -1; }
-        GetSystemTimeAsFileTime( (LPFILETIME)&now );
-        tp->tv_sec = (long)(now / 10000000 - 11644473600LL);
-        tp->tv_usec = (now / 10) % 1000000;
-        return 0;
-}
-
-int close(SOCKET fd) {
-        return closesocket(fd);
-}
-
-int Win32WSAStartup()
-{
-       WORD    wVersionRq;
-       WSADATA wsaData;
-       int             err;
-
-       wVersionRq = MAKEWORD(2,0);
-       err = WSAStartup(wVersionRq, &wsaData);
-       if (err != 0)
-               return 1;
-       
-       // confirm the version information
-       if ((LOBYTE(wsaData.wVersion) != 2) ||
-           (HIBYTE(wsaData.wVersion) != 0))
-       {
-               Win32WSACleanup();              
-               return 1;
-       }
-       return 0;
-}
-
-void Win32WSACleanup()
-{
-       WSACleanup();
-}
-
-#endif //WIN32
-
-
-

http://git-wip-us.apache.org/repos/asf/zookeeper/blob/5694559d/src/c/src/winport.h
----------------------------------------------------------------------
diff --git a/src/c/src/winport.h b/src/c/src/winport.h
deleted file mode 100644
index da6028c..0000000
--- a/src/c/src/winport.h
+++ /dev/null
@@ -1,138 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-/**
- * This header file is to port pthread lib , sockets and other utility methods on windows.
- * Specifically the threads function, mutexes, keys, and socket initialization.
- */
-
-#ifndef WINPORT_H_
-#define WINPORT_H_
-
-#ifdef WIN32
-#include "winconfig.h"
-
-#define _WINSOCK_DEPRECATED_NO_WARNINGS
-#include <winsock2.h> /* must always be included before ws2tcpip.h */
-#include <ws2tcpip.h> /* for struct sock_addr used in zookeeper.h */
-
-/* POSIX names are deprecated, use ISO conformant names instead. */
-#define strdup _strdup
-#define getcwd _getcwd
-#define getpid _getpid
-
-/* Windows "secure" versions of POSIX reentrant functions */
-#define strtok_r strtok_s
-#define localtime_r(a,b) localtime_s(b,a)
-
-/* After this version of MSVC, snprintf became a defined function,
-   and so cannot be redefined, nor can #ifndef be used to guard it. */
-#if ((defined(_MSC_VER) && _MSC_VER < 1900) || !defined(_MSC_VER))
-#define snprintf _snprintf
-#endif
-
-
-#include <errno.h>
-#include <process.h>
-#include <stdint.h> /* for int64_t */
-#include <stdlib.h>
-#include <malloc.h>
-
-
-typedef int ssize_t;
-typedef HANDLE pthread_mutex_t;
-
-struct pthread_t_
-{
-  HANDLE thread_handle;
-  DWORD  thread_id;
-};
-
-typedef struct pthread_t_ pthread_t;
-typedef int pthread_mutexattr_t;       
-typedef int pthread_condattr_t;        
-typedef int pthread_attr_t; 
-#define PTHREAD_MUTEX_RECURSIVE 0
-
-int pthread_mutex_lock(pthread_mutex_t* _mutex );
-int pthread_mutex_unlock( pthread_mutex_t* _mutex );
-int pthread_mutex_init(pthread_mutex_t* _mutex, void* ignoredAttr);
-int pthread_mutex_destroy(pthread_mutex_t* _mutex);
-int pthread_create(pthread_t *thread, const pthread_attr_t *attr, unsigned  (__stdcall* start_routine)(void* a), void *arg);
-int pthread_equal(pthread_t t1, pthread_t t2);
-pthread_t pthread_self();
-int pthread_join(pthread_t _thread, void** ignore);
-int pthread_detach(pthread_t _thread);
-
-void pthread_mutexattr_init(pthread_mutexattr_t* ignore);
-void pthread_mutexattr_settype(pthread_mutexattr_t* ingore_attr, int ignore);
-void pthread_mutexattr_destroy(pthread_mutexattr_t* ignore_attr);
-
-
-// http://www.cs.wustl.edu/~schmidt/win32-cv-1.html
- 
-typedef struct 
-{
-       int waiters_count_;
-    // Number of waiting threads.
-
-    CRITICAL_SECTION waiters_count_lock_;
-    // Serialize access to <waiters_count_>.
-
-    HANDLE sema_;
-       // Semaphore used to queue up threads waiting for the condition to
-    // become signaled. 
-
-    HANDLE waiters_done_;
-    // An auto-reset event used by the broadcast/signal thread to wait
-    // for all the waiting thread(s) to wake up and be released from the
-    // semaphore. 
-
-    size_t was_broadcast_;
-    // Keeps track of whether we were broadcasting or signaling.  This
-    // allows us to optimize the code if we're just signaling.
-}pthread_cond_t;
-       
-int pthread_cond_init (pthread_cond_t *cv,const pthread_condattr_t * ignore);
-int pthread_cond_destroy(pthread_cond_t *cond);
-int pthread_cond_signal (pthread_cond_t *cv);
-int pthread_cond_broadcast (pthread_cond_t *cv);
-int pthread_cond_wait (pthread_cond_t *cv, pthread_mutex_t *external_mutex);
-
-
-struct pthread_key_t_
-{
-  DWORD key;
-  void (*destructor) (void *);  
-};
-
-typedef struct pthread_key_t_ pthread_key_t;
-int pthread_key_create(pthread_key_t *key, void (*destructor)(void *) );
-int pthread_key_delete(pthread_key_t key);
-void *pthread_getspecific(pthread_key_t key);
-int pthread_setspecific(pthread_key_t key, const void *value);
-
-int gettimeofday(struct timeval *tp, void *tzp);
-int close(SOCKET fd);
-int Win32WSAStartup();
-void Win32WSACleanup();
-#endif //WIN32
-
-
-
-#endif //WINPORT_H_

http://git-wip-us.apache.org/repos/asf/zookeeper/blob/5694559d/src/c/src/zk_adaptor.h
----------------------------------------------------------------------
diff --git a/src/c/src/zk_adaptor.h b/src/c/src/zk_adaptor.h
deleted file mode 100644
index b990779..0000000
--- a/src/c/src/zk_adaptor.h
+++ /dev/null
@@ -1,276 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#ifndef ZK_ADAPTOR_H_
-#define ZK_ADAPTOR_H_
-#include <zookeeper.jute.h>
-#ifdef THREADED
-#ifndef WIN32
-#include <pthread.h>
-#else
-#include "winport.h"
-#endif
-#endif
-#include "zookeeper.h"
-#include "zk_hashtable.h"
-
-/* predefined xid's values recognized as special by the server */
-#define WATCHER_EVENT_XID -1 
-#define PING_XID -2
-#define AUTH_XID -4
-#define SET_WATCHES_XID -8
-
-/* zookeeper state constants */
-#define EXPIRED_SESSION_STATE_DEF -112
-#define AUTH_FAILED_STATE_DEF -113
-#define CONNECTING_STATE_DEF 1
-#define ASSOCIATING_STATE_DEF 2
-#define CONNECTED_STATE_DEF 3
-#define NOTCONNECTED_STATE_DEF 999
-
-/* zookeeper event type constants */
-#define CREATED_EVENT_DEF 1
-#define DELETED_EVENT_DEF 2
-#define CHANGED_EVENT_DEF 3
-#define CHILD_EVENT_DEF 4
-#define SESSION_EVENT_DEF -1
-#define NOTWATCHING_EVENT_DEF -2
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-struct _buffer_list;
-struct _completion_list;
-
-typedef struct _buffer_head {
-    struct _buffer_list *volatile head;
-    struct _buffer_list *last;
-#ifdef THREADED
-    pthread_mutex_t lock;
-#endif
-} buffer_head_t;
-
-typedef struct _completion_head {
-    struct _completion_list *volatile head;
-    struct _completion_list *last;
-#ifdef THREADED
-    pthread_cond_t cond;
-    pthread_mutex_t lock;
-#endif
-} completion_head_t;
-
-int lock_buffer_list(buffer_head_t *l);
-int unlock_buffer_list(buffer_head_t *l);
-int lock_completion_list(completion_head_t *l);
-int unlock_completion_list(completion_head_t *l);
-
-struct sync_completion {
-    int rc;
-    union {
-        struct {
-            char *str;
-            int str_len;
-        } str;
-        struct Stat stat;
-        struct {
-            char *buffer;
-            int buff_len;
-            struct Stat stat;
-        } data;
-        struct {
-            struct ACL_vector acl;
-            struct Stat stat;
-        } acl;
-        struct String_vector strs2;
-        struct {
-            struct String_vector strs2;
-            struct Stat stat2;
-        } strs_stat;
-    } u;
-    int complete;
-#ifdef THREADED
-    pthread_cond_t cond;
-    pthread_mutex_t lock;
-#endif
-};
-
-typedef struct _auth_info {
-    int state; /* 0=>inactive, >0 => active */
-    char* scheme;
-    struct buffer auth;
-    void_completion_t completion;
-    const char* data;
-    struct _auth_info *next;
-} auth_info;
-
-/**
- * This structure represents a packet being read or written.
- */
-typedef struct _buffer_list {
-    char *buffer;
-    int len; /* This represents the length of sizeof(header) + length of buffer */
-    int curr_offset; /* This is the offset into the header followed by offset into the buffer */
-    struct _buffer_list *next;
-} buffer_list_t;
-
-/* the size of connect request */
-#define HANDSHAKE_REQ_SIZE 44
-/* connect request */
-struct connect_req {
-    int32_t protocolVersion;
-    int64_t lastZxidSeen;
-    int32_t timeOut;
-    int64_t sessionId;
-    int32_t passwd_len;
-    char passwd[16];
-};
-
-/* the connect response */
-struct prime_struct {
-    int32_t len;
-    int32_t protocolVersion;
-    int32_t timeOut;
-    int64_t sessionId;
-    int32_t passwd_len;
-    char passwd[16];
-}; 
-
-#ifdef THREADED
-/* this is used by mt_adaptor internally for thread management */
-struct adaptor_threads {
-     pthread_t io;
-     pthread_t completion;
-     int threadsToWait;         // barrier
-     pthread_cond_t cond;       // barrier's conditional
-     pthread_mutex_t lock;      // ... and a lock
-     pthread_mutex_t zh_lock;   // critical section lock
-#ifdef WIN32
-     SOCKET self_pipe[2];
-#else
-     int self_pipe[2];
-#endif
-};
-#endif
-
-/** the auth list for adding auth */
-typedef struct _auth_list_head {
-     auth_info *auth;
-#ifdef THREADED
-     pthread_mutex_t lock;
-#endif
-} auth_list_head_t;
-
-/**
- * This structure represents the connection to zookeeper.
- */
-
-struct _zhandle {
-#ifdef WIN32
-    SOCKET fd; /* the descriptor used to talk to zookeeper */
-#else
-    int fd; /* the descriptor used to talk to zookeeper */
-#endif
-    char *hostname; /* the hostname of zookeeper */
-    struct sockaddr_storage *addrs; /* the addresses that correspond to the hostname */
-    int addrs_count; /* The number of addresses in the addrs array */
-    watcher_fn watcher; /* the registered watcher */
-    struct timeval last_recv; /* The time that the last message was received */
-    struct timeval last_send; /* The time that the last message was sent */
-    struct timeval last_ping; /* The time that the last PING was sent */
-    struct timeval next_deadline; /* The time of the next deadline */
-    int recv_timeout; /* The maximum amount of time that can go by without 
-     receiving anything from the zookeeper server */
-    buffer_list_t *input_buffer; /* the current buffer being read in */
-    buffer_head_t to_process; /* The buffers that have been read and are ready to be processed. */
-    buffer_head_t to_send; /* The packets queued to send */
-    completion_head_t sent_requests; /* The outstanding requests */
-    completion_head_t completions_to_process; /* completions that are ready to run */
-    int connect_index; /* The index of the address to connect to */
-    clientid_t client_id;
-    long long last_zxid;
-    int outstanding_sync; /* Number of outstanding synchronous requests */
-    struct _buffer_list primer_buffer; /* The buffer used for the handshake at the start of a connection */
-    struct prime_struct primer_storage; /* the connect response */
-    char primer_storage_buffer[40]; /* the true size of primer_storage */
-    volatile int state;
-    void *context;
-    auth_list_head_t auth_h; /* authentication data list */
-    /* zookeeper_close is not reentrant because it de-allocates the zhandler. 
-     * This guard variable is used to defer the destruction of zhandle till 
-     * right before top-level API call returns to the caller */
-    int32_t ref_counter;
-    volatile int close_requested;
-    void *adaptor_priv;
-    /* Used for debugging only: non-zero value indicates the time when the zookeeper_process
-     * call returned while there was at least one unprocessed server response 
-     * available in the socket recv buffer */
-    struct timeval socket_readable;
-    
-    zk_hashtable* active_node_watchers;   
-    zk_hashtable* active_exist_watchers;
-    zk_hashtable* active_child_watchers;
-    /** used for chroot path at the client side **/
-    char *chroot;
-};
-
-
-int adaptor_init(zhandle_t *zh);
-void adaptor_finish(zhandle_t *zh);
-void adaptor_destroy(zhandle_t *zh);
-struct sync_completion *alloc_sync_completion(void);
-int wait_sync_completion(struct sync_completion *sc);
-void free_sync_completion(struct sync_completion *sc);
-void notify_sync_completion(struct sync_completion *sc);
-int adaptor_send_queue(zhandle_t *zh, int timeout);
-int process_async(int outstanding_sync);
-void process_completions(zhandle_t *zh);
-int flush_send_queue(zhandle_t*zh, int timeout);
-char* sub_string(zhandle_t *zh, const char* server_path);
-void free_duplicate_path(const char* free_path, const char* path);
-int zoo_lock_auth(zhandle_t *zh);
-int zoo_unlock_auth(zhandle_t *zh);
-
-// critical section guards
-int enter_critical(zhandle_t* zh);
-int leave_critical(zhandle_t* zh);
-// zhandle object reference counting
-void api_prolog(zhandle_t* zh);
-int api_epilog(zhandle_t *zh, int rc);
-int32_t get_xid();
-// returns the new value of the ref counter
-int32_t inc_ref_counter(zhandle_t* zh,int i);
-
-#ifdef THREADED
-// atomic post-increment
-int32_t fetch_and_add(volatile int32_t* operand, int incr);
-// in mt mode process session event asynchronously by the completion thread
-#define PROCESS_SESSION_EVENT(zh,newstate) queue_session_event(zh,newstate)
-#else
-// in single-threaded mode process session event immediately
-//#define PROCESS_SESSION_EVENT(zh,newstate) deliverWatchers(zh,ZOO_SESSION_EVENT,newstate,0)
-#define PROCESS_SESSION_EVENT(zh,newstate) queue_session_event(zh,newstate)
-#endif
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /*ZK_ADAPTOR_H_*/
-
-

http://git-wip-us.apache.org/repos/asf/zookeeper/blob/5694559d/src/c/src/zk_hashtable.c
----------------------------------------------------------------------
diff --git a/src/c/src/zk_hashtable.c b/src/c/src/zk_hashtable.c
deleted file mode 100644
index 0efc5aa..0000000
--- a/src/c/src/zk_hashtable.c
+++ /dev/null
@@ -1,337 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include "zk_hashtable.h"
-#include "zk_adaptor.h"
-#include "hashtable/hashtable.h"
-#include "hashtable/hashtable_itr.h"
-#include <string.h>
-#include <stdlib.h>
-#include <assert.h>
-
-typedef struct _watcher_object {
-    watcher_fn watcher;
-    void* context;
-    struct _watcher_object* next;
-} watcher_object_t;
-
-
-struct _zk_hashtable {
-    struct hashtable* ht;
-};
-
-struct watcher_object_list {
-    watcher_object_t* head;
-};
-
-/* the following functions are for testing only */
-typedef struct hashtable hashtable_impl;
-
-hashtable_impl* getImpl(zk_hashtable* ht){
-    return ht->ht;
-}
-
-watcher_object_t* getFirstWatcher(zk_hashtable* ht,const char* path)
-{
-    watcher_object_list_t* wl=hashtable_search(ht->ht,(void*)path);
-    if(wl!=0)
-        return wl->head;
-    return 0;
-}
-/* end of testing functions */
-
-watcher_object_t* clone_watcher_object(watcher_object_t* wo)
-{
-    watcher_object_t* res=calloc(1,sizeof(watcher_object_t));
-    assert(res);
-    res->watcher=wo->watcher;
-    res->context=wo->context;
-    return res;
-}
-
-static unsigned int string_hash_djb2(void *str) 
-{
-    unsigned int hash = 5381;
-    int c;
-    const char* cstr = (const char*)str;
-    while ((c = *cstr++))
-        hash = ((hash << 5) + hash) + c; /* hash * 33 + c */
-
-    return hash;
-}
-
-static int string_equal(void *key1,void *key2)
-{
-    return strcmp((const char*)key1,(const char*)key2)==0;
-}
-
-static watcher_object_t* create_watcher_object(watcher_fn watcher,void* ctx)
-{
-    watcher_object_t* wo=calloc(1,sizeof(watcher_object_t));
-    assert(wo);
-    wo->watcher=watcher;
-    wo->context=ctx;
-    return wo;
-}
-
-static watcher_object_list_t* create_watcher_object_list(watcher_object_t* head) 
-{
-    watcher_object_list_t* wl=calloc(1,sizeof(watcher_object_list_t));
-    assert(wl);
-    wl->head=head;
-    return wl;
-}
-
-static void destroy_watcher_object_list(watcher_object_list_t* list)
-{
-    watcher_object_t* e = NULL;
-
-    if(list==0)
-        return;
-    e=list->head;
-    while(e!=0){
-        watcher_object_t* this=e;
-        e=e->next;
-        free(this);
-    }
-    free(list);
-}
-
-zk_hashtable* create_zk_hashtable()
-{
-    struct _zk_hashtable *ht=calloc(1,sizeof(struct _zk_hashtable));
-    assert(ht);
-    ht->ht=create_hashtable(32,string_hash_djb2,string_equal);
-    return ht;
-}
-
-static void do_clean_hashtable(zk_hashtable* ht)
-{
-    struct hashtable_itr *it;
-    int hasMore;
-    if(hashtable_count(ht->ht)==0)
-        return;
-    it=hashtable_iterator(ht->ht);
-    do {
-        watcher_object_list_t* w=hashtable_iterator_value(it);
-        destroy_watcher_object_list(w);
-        hasMore=hashtable_iterator_remove(it);
-    } while(hasMore);
-    free(it);
-}
-
-void destroy_zk_hashtable(zk_hashtable* ht)
-{
-    if(ht!=0){
-        do_clean_hashtable(ht);
-        hashtable_destroy(ht->ht,0);
-        free(ht);
-    }
-}
-
-// searches for a watcher object instance in a watcher object list;
-// two watcher objects are equal if their watcher function and context pointers
-// are equal
-static watcher_object_t* search_watcher(watcher_object_list_t** wl,watcher_object_t* wo)
-{
-    watcher_object_t* wobj=(*wl)->head;
-    while(wobj!=0){
-        if(wobj->watcher==wo->watcher && wobj->context==wo->context)
-            return wobj;
-        wobj=wobj->next;
-    }
-    return 0;
-}
-
-static int add_to_list(watcher_object_list_t **wl, watcher_object_t *wo,
-                       int clone)
-{
-    if (search_watcher(wl, wo)==0) {
-        watcher_object_t* cloned=wo;
-        if (clone) {
-            cloned = clone_watcher_object(wo);
-            assert(cloned);
-        }
-        cloned->next = (*wl)->head;
-        (*wl)->head = cloned;
-        return 1;
-    } else if (!clone) {
-        // If it's here and we aren't supposed to clone, we must destroy
-        free(wo);
-    }
-    return 0;
-}
-
-static int do_insert_watcher_object(zk_hashtable *ht, const char *path, watcher_object_t* wo)
-{
-    int res=1;
-    watcher_object_list_t* wl;
-
-    wl=hashtable_search(ht->ht,(void*)path);
-    if(wl==0){
-        int res;
-        /* inserting a new path element */
-        res=hashtable_insert(ht->ht,strdup(path),create_watcher_object_list(wo));
-        assert(res);
-    }else{
-        /*
-         * Path already exists; check if the watcher already exists.
-         * Don't clone the watcher since it's allocated on the heap --- avoids
-         * a memory leak and saves a clone operation (calloc + copy).
-         */
-        res = add_to_list(&wl, wo, 0);
-    }
-    return res;    
-}
-
-
-char **collect_keys(zk_hashtable *ht, int *count)
-{
-    char **list;
-    struct hashtable_itr *it;
-    int i;
-
-    *count = hashtable_count(ht->ht);
-    list = calloc(*count, sizeof(char*));
-    it=hashtable_iterator(ht->ht);
-    for(i = 0; i < *count; i++) {
-        list[i] = strdup(hashtable_iterator_key(it));
-        hashtable_iterator_advance(it);
-    }
-    free(it);
-    return list;
-}
-
-static int insert_watcher_object(zk_hashtable *ht, const char *path,
-                                 watcher_object_t* wo)
-{
-    int res;
-    res=do_insert_watcher_object(ht,path,wo);
-    return res;
-}
-
-static void copy_watchers(watcher_object_list_t *from, watcher_object_list_t *to, int clone)
-{
-    watcher_object_t* wo=from->head;
-    while(wo){
-        watcher_object_t *next = wo->next;
-        add_to_list(&to, wo, clone);
-        wo=next;
-    }
-}
-
-static void copy_table(zk_hashtable *from, watcher_object_list_t *to) {
-    struct hashtable_itr *it;
-    int hasMore;
-    if(hashtable_count(from->ht)==0)
-        return;
-    it=hashtable_iterator(from->ht);
-    do {
-        watcher_object_list_t *w = hashtable_iterator_value(it);
-        copy_watchers(w, to, 1);
-        hasMore=hashtable_iterator_advance(it);
-    } while(hasMore);
-    free(it);
-}
-
-static void collect_session_watchers(zhandle_t *zh,
-                                     watcher_object_list_t **list)
-{
-    copy_table(zh->active_node_watchers, *list);
-    copy_table(zh->active_exist_watchers, *list);
-    copy_table(zh->active_child_watchers, *list);
-}
-
-static void add_for_event(zk_hashtable *ht, char *path, watcher_object_list_t **list)
-{
-    watcher_object_list_t* wl;
-    wl = (watcher_object_list_t*)hashtable_remove(ht->ht, path);
-    if (wl) {
-        copy_watchers(wl, *list, 0);
-        // Since we move, not clone the watch_objects, we just need to free the
-        // head pointer
-        free(wl);
-    }
-}
-
-static void do_foreach_watcher(watcher_object_t* wo,zhandle_t* zh,
-        const char* path,int type,int state)
-{
-    // session event's don't have paths
-    const char *client_path =
-        (type != ZOO_SESSION_EVENT ? sub_string(zh, path) : path);
-    while(wo!=0){
-        wo->watcher(zh,type,state,client_path,wo->context);
-        wo=wo->next;
-    }    
-    free_duplicate_path(client_path, path);
-}
-
-watcher_object_list_t *collectWatchers(zhandle_t *zh,int type, char *path)
-{
-    struct watcher_object_list *list = create_watcher_object_list(0); 
-
-    if(type==ZOO_SESSION_EVENT){
-        watcher_object_t defWatcher;
-        defWatcher.watcher=zh->watcher;
-        defWatcher.context=zh->context;
-        add_to_list(&list, &defWatcher, 1);
-        collect_session_watchers(zh, &list);
-        return list;
-    }
-    switch(type){
-    case CREATED_EVENT_DEF:
-    case CHANGED_EVENT_DEF:
-        // look up the watchers for the path and move them to a delivery list
-        add_for_event(zh->active_node_watchers,path,&list);
-        add_for_event(zh->active_exist_watchers,path,&list);
-        break;
-    case CHILD_EVENT_DEF:
-        // look up the watchers for the path and move them to a delivery list
-        add_for_event(zh->active_child_watchers,path,&list);
-        break;
-    case DELETED_EVENT_DEF:
-        // look up the watchers for the path and move them to a delivery list
-        add_for_event(zh->active_node_watchers,path,&list);
-        add_for_event(zh->active_exist_watchers,path,&list);
-        add_for_event(zh->active_child_watchers,path,&list);
-        break;
-    }
-    return list;
-}
-
-void deliverWatchers(zhandle_t *zh, int type,int state, char *path, watcher_object_list_t **list)
-{
-    if (!list || !(*list)) return;
-    do_foreach_watcher((*list)->head, zh, path, type, state);
-    destroy_watcher_object_list(*list);
-    *list = 0;
-}
-
-void activateWatcher(zhandle_t *zh, watcher_registration_t* reg, int rc)
-{
-    if(reg){
-        /* in multithreaded lib, this code is executed 
-         * by the IO thread */
-        zk_hashtable *ht = reg->checker(zh, rc);
-        if(ht){
-            insert_watcher_object(ht,reg->path,
-                    create_watcher_object(reg->watcher, reg->context));
-        }
-    }    
-}

http://git-wip-us.apache.org/repos/asf/zookeeper/blob/5694559d/src/c/src/zk_hashtable.h
----------------------------------------------------------------------
diff --git a/src/c/src/zk_hashtable.h b/src/c/src/zk_hashtable.h
deleted file mode 100644
index 31109c1..0000000
--- a/src/c/src/zk_hashtable.h
+++ /dev/null
@@ -1,69 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#ifndef ZK_HASHTABLE_H_
-#define ZK_HASHTABLE_H_
-
-#include <zookeeper.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-    typedef struct watcher_object_list watcher_object_list_t;
-typedef struct _zk_hashtable zk_hashtable;
-
-/**
- * The function must return a non-zero value if the watcher object can be activated
- * as a result of the server response. Normally, a watch can only be activated
- * if the server returns a success code (ZOK). However in the case when zoo_exists() 
- * returns a ZNONODE code the watcher should be activated nevertheless.
- */
-typedef zk_hashtable *(*result_checker_fn)(zhandle_t *, int rc);
-
-/**
- * A watcher object gets temporarily stored with the completion entry until 
- * the server response comes back at which moment the watcher object is moved
- * to the active watchers map.
- */
-typedef struct _watcher_registration {
-    watcher_fn watcher;
-    void* context;
-    result_checker_fn checker;
-    const char* path;
-} watcher_registration_t;
-
-zk_hashtable* create_zk_hashtable();
-void destroy_zk_hashtable(zk_hashtable* ht);
-
-char **collect_keys(zk_hashtable *ht, int *count);
-
-/**
- * check if the completion has a watcher object associated
- * with it. If it does, move the watcher object to the map of
- * active watchers (only if the checker allows to do so)
- */
-    void activateWatcher(zhandle_t *zh, watcher_registration_t* reg, int rc);
-    watcher_object_list_t *collectWatchers(zhandle_t *zh,int type, char *path);
-    void deliverWatchers(zhandle_t *zh, int type, int state, char *path, struct watcher_object_list **list);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /*ZK_HASHTABLE_H_*/

http://git-wip-us.apache.org/repos/asf/zookeeper/blob/5694559d/src/c/src/zk_log.c
----------------------------------------------------------------------
diff --git a/src/c/src/zk_log.c b/src/c/src/zk_log.c
deleted file mode 100644
index 6b4fdfa..0000000
--- a/src/c/src/zk_log.c
+++ /dev/null
@@ -1,180 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#if !defined(DLL_EXPORT) && !defined(USE_STATIC_LIB)
-#  define USE_STATIC_LIB
-#endif
-
-#include "zookeeper_log.h"
-#ifndef WIN32
-#include <unistd.h>
-#else
-typedef DWORD pid_t;
-#include <process.h> /* for getpid */
-#endif
-
-#include <stdarg.h>
-#include <time.h>
-
-#define TIME_NOW_BUF_SIZE 1024
-#define FORMAT_LOG_BUF_SIZE 4096
-
-#ifdef THREADED
-#ifndef WIN32
-#include <pthread.h>
-#else 
-#include "winport.h"
-#endif
-
-static pthread_key_t time_now_buffer;
-static pthread_key_t format_log_msg_buffer;
-
-void freeBuffer(void* p){
-    if(p) free(p);
-}
-
-__attribute__((constructor)) void prepareTSDKeys() {
-    pthread_key_create (&time_now_buffer, freeBuffer);
-    pthread_key_create (&format_log_msg_buffer, freeBuffer);
-}
-
-char* getTSData(pthread_key_t key,int size){
-    char* p=pthread_getspecific(key);
-    if(p==0){
-        int res;
-        p=calloc(1,size);
-        res=pthread_setspecific(key,p);
-        if(res!=0){
-            fprintf(stderr,"Failed to set TSD key: %d",res);
-        }
-    }
-    return p;
-}
-
-char* get_time_buffer(){
-    return getTSData(time_now_buffer,TIME_NOW_BUF_SIZE);
-}
-
-char* get_format_log_buffer(){  
-    return getTSData(format_log_msg_buffer,FORMAT_LOG_BUF_SIZE);
-}
-#else
-char* get_time_buffer(){
-    static char buf[TIME_NOW_BUF_SIZE];
-    return buf;    
-}
-
-char* get_format_log_buffer(){
-    static char buf[FORMAT_LOG_BUF_SIZE];
-    return buf;
-}
-
-#endif
-
-ZooLogLevel logLevel=ZOO_LOG_LEVEL_INFO;
-
-static FILE* logStream=0;
-FILE* getLogStream(){
-    if(logStream==0)
-        logStream=stderr;
-    return logStream;
-}
-
-void zoo_set_log_stream(FILE* stream){
-    logStream=stream;
-}
-
-static const char* time_now(char* now_str){
-    struct timeval tv;
-    struct tm lt;
-    time_t now = 0;
-    size_t len = 0;
-    
-    gettimeofday(&tv,0);
-
-    now = tv.tv_sec;
-    localtime_r(&now, &lt);
-
-    // clone the format used by log4j ISO8601DateFormat
-    // specifically: "yyyy-MM-dd HH:mm:ss,SSS"
-
-    len = strftime(now_str, TIME_NOW_BUF_SIZE,
-                          "%Y-%m-%d %H:%M:%S",
-                          &lt);
-
-    len += snprintf(now_str + len,
-                    TIME_NOW_BUF_SIZE - len,
-                    ",%03d",
-                    (int)(tv.tv_usec/1000));
-
-    return now_str;
-}
-
-void log_message(ZooLogLevel curLevel,int line,const char* funcName,
-    const char* message)
-{
-    static const char* dbgLevelStr[]={"ZOO_INVALID","ZOO_ERROR","ZOO_WARN",
-            "ZOO_INFO","ZOO_DEBUG"};
-    static pid_t pid=0;
-#ifdef WIN32
-    char timebuf [TIME_NOW_BUF_SIZE];
-#endif
-    if(pid==0)pid=getpid();
-#ifndef THREADED
-    // pid_t is long on Solaris
-    fprintf(LOGSTREAM, "%s:%ld:%s@%s@%d: %s\n", time_now(get_time_buffer()),(long)pid,
-            dbgLevelStr[curLevel],funcName,line,message);
-#else
-#ifdef WIN32
-    fprintf(LOGSTREAM, "%s:%d(0x%lx):%s@%s@%d: %s\n", time_now(timebuf),pid,
-            (unsigned long int)(pthread_self().thread_id),
-            dbgLevelStr[curLevel],funcName,line,message);      
-#else
-    fprintf(LOGSTREAM, "%s:%ld(0x%lx):%s@%s@%d: %s\n", time_now(get_time_buffer()),(long)pid,
-            (unsigned long int)pthread_self(),
-            dbgLevelStr[curLevel],funcName,line,message);      
-#endif
-#endif
-    fflush(LOGSTREAM);
-}
-
-const char* format_log_message(const char* format,...)
-{
-    va_list va;
-    char* buf=get_format_log_buffer();
-    if(!buf)
-        return "format_log_message: Unable to allocate memory buffer";
-    
-    va_start(va,format);
-    vsnprintf(buf, FORMAT_LOG_BUF_SIZE-1,format,va);
-    va_end(va); 
-    return buf;
-}
-
-void zoo_set_debug_level(ZooLogLevel level)
-{
-    if(level==0){
-        // disable logging (unit tests do this)
-        logLevel=(ZooLogLevel)0;
-        return;
-    }
-    if(level<ZOO_LOG_LEVEL_ERROR)level=ZOO_LOG_LEVEL_ERROR;
-    if(level>ZOO_LOG_LEVEL_DEBUG)level=ZOO_LOG_LEVEL_DEBUG;
-    logLevel=level;
-}
-