http://git-wip-us.apache.org/repos/asf/zookeeper/blob/63aaf0a1/src/contrib/rest/src/test/zkServer.sh ---------------------------------------------------------------------- diff --git a/src/contrib/rest/src/test/zkServer.sh b/src/contrib/rest/src/test/zkServer.sh deleted file mode 100755 index bff85f3..0000000 --- a/src/contrib/rest/src/test/zkServer.sh +++ /dev/null @@ -1,91 +0,0 @@ -#!/bin/bash -# -# 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 [ "x$1" == "x" ] -then - echo "USAGE: $0 startClean|start|stop hostPorts" - exit 2 -fi - -if [ "x$1" == "xstartClean" ] -then - if [ "x${base_dir}" == "x" ] - then - rm -rf /tmp/zkdata - else - rm -rf ${base_dir}/build/tmp - fi -fi - -# Make sure nothing is left over from before -if [ -r "/tmp/zk.pid" ] -then -pid=`cat /tmp/zk.pid` -kill -9 $pid -rm -f /tmp/zk.pid -fi - -if [ -r "${base_dir}/build/tmp/zk.pid" ] -then -pid=`cat ${base_dir}/build/tmp/zk.pid` -kill -9 $pid -rm -f ${base_dir}/build/tmp/zk.pid -fi - -if [ "x${base_dir}" == "x" ] -then -zk_base="../../../" -else -zk_base="${base_dir}" -fi - -CLASSPATH="$CLASSPATH:${zk_base}/build/classes" -CLASSPATH="$CLASSPATH:${zk_base}/conf" - -for i in "${zk_base}"/build/lib/*.jar -do - CLASSPATH="$CLASSPATH:$i" -done - -for i in "${zk_base}"/src/java/lib/*.jar -do - CLASSPATH="$CLASSPATH:$i" -done - -case $1 in -start|startClean) - if [ "x${base_dir}" == "x" ] - then - mkdir -p /tmp/zkdata - java -cp $CLASSPATH org.apache.zookeeper.server.ZooKeeperServerMain 22182 /tmp/zkdata &> /tmp/zk.log & - echo $! > /tmp/zk.pid - else - mkdir -p ${base_dir}/build/tmp/zkdata - java -cp $CLASSPATH org.apache.zookeeper.server.ZooKeeperServerMain 22182 ${base_dir}/build/tmp/zkdata &> ${base_dir}/build/tmp/zk.log & - echo $! > ${base_dir}/build/tmp/zk.pid - fi - sleep 5 - ;; -stop) - # Already killed above - ;; -*) - echo "Unknown command " + $1 - exit 2 -esac -
http://git-wip-us.apache.org/repos/asf/zookeeper/blob/63aaf0a1/src/contrib/zkfuse/Makefile.am ---------------------------------------------------------------------- diff --git a/src/contrib/zkfuse/Makefile.am b/src/contrib/zkfuse/Makefile.am deleted file mode 100644 index 36da1a5..0000000 --- a/src/contrib/zkfuse/Makefile.am +++ /dev/null @@ -1,4 +0,0 @@ -## Process this file with automake to produce Makefile.in - -SUBDIRS = src - http://git-wip-us.apache.org/repos/asf/zookeeper/blob/63aaf0a1/src/contrib/zkfuse/README.txt ---------------------------------------------------------------------- diff --git a/src/contrib/zkfuse/README.txt b/src/contrib/zkfuse/README.txt deleted file mode 100644 index 901d363..0000000 --- a/src/contrib/zkfuse/README.txt +++ /dev/null @@ -1,63 +0,0 @@ -Original authors of zkfuse are Swee Lim & Bartlomiej M Niechwiej of Yahoo. -' -ZooKeeper FUSE (File System in Userspace) -========================================= - -Pre-requisites --------------- -1. Linux system with 2.6.X kernel. -2. Fuse (Filesystem in Userspace) must be installed on the build node. -3. Development build libraries: - a. fuse - b. log4cxx - c. pthread - d. boost - -Build instructions ------------------- -1. cd into this directory -2. autoreconf -if -3. ./configure -4. make -5. zkfuse binary is under the src directory - -Testing Zkfuse --------------- -1. Depending on permission on /dev/fuse, you may need to sudo -u root. - * If /dev/fuse has permissions 0600, then you have to run Zkfuse as root. - * If /dev/fuse has permissions 0666, then you can run Zkfuse as any user. -2. Create or find a mount point that you have "rwx" permission. - * e.g. mkdir -p /tmp/zkfuse -3. Run Zkfuse as follows: - zkfuse -z <hostspec> -m /tmp/zkfuse -d - -z specifies ZooKeeper address(es) <host>:<port> - -m specifies the mount point - -d specifies the debug mode. - For additional command line options, try "zkfuse -h". - -FAQ ---- -Q. How to fix "warning: macro `AM_PATH_CPPUNIT' not found in library"? -A. * install cppunit (src or pkg) on build machine - -Q. Why can't Zkfuse cannot write to current directory? -A. * If Zkfuse is running as root on a NFS mounted file system, it will not - have root permissions because root user is mapped to another user by - NFS admin. - * If you run Zkfuse as root, it is a good idea to run Zkfuse from a - directory that you have write access to. This will allow core files - to be saved. - -Q. Why Zkfuse cannot mount? -A. * Check that the mount point exists and you have "rwx" permissions. - * Check that previous mounts have been umounted. If Zkfuse does not - exit cleanly, its mount point may have to be umounted manually. - If you cannot umount manually, make sure that there no files is open - within the mount point. - -Q. Why does Zkfuse complain about logging at startup? -A. * Zkfuse uses log4cxx for logging. It is looking for log4cxx.properties - file to obtain its logging configuration. - * There is an example log4cxx.properties file in the Zkfuse source - directory. - http://git-wip-us.apache.org/repos/asf/zookeeper/blob/63aaf0a1/src/contrib/zkfuse/build.xml ---------------------------------------------------------------------- diff --git a/src/contrib/zkfuse/build.xml b/src/contrib/zkfuse/build.xml deleted file mode 100644 index f589453..0000000 --- a/src/contrib/zkfuse/build.xml +++ /dev/null @@ -1,61 +0,0 @@ -<?xml version="1.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. ---> - -<project name="zkfuse" default="compile"> - <import file="../build-contrib.xml"/> - - <target name="init" depends="check-contrib" unless="skip.contrib"> - <echo message="contrib: ${name}"/> - <mkdir dir="${build.dir}"/> - <antcall target="init-contrib"/> - </target> - - <target name="compile" depends="init" unless="skip.contrib"> - <echo message="contrib: ${name}"/> - - <mkdir dir="${build.dir}"/> - <copy todir="${build.dir}"> - <fileset dir="${basedir}"> - <exclude name="**/VERSION"/> - </fileset> - </copy> - <exec executable="echo" output="${build.dir}/VERSION"> - <arg line="${version}" /> - </exec> - </target> - - <target name="jar" depends="compile" > - <echo message="No jar target defined for this package"/> - </target> - - <target name="test"> - <echo message="No test target defined for this package" /> - </target> - - - <target name="package" depends="compile" unless="skip.contrib"> - <echo message="contrib: ${name}"/> - - <mkdir dir="${dist.dir}/contrib/${name}"/> - <copy todir="${dist.dir}/contrib/${name}"> - <fileset dir="${build.dir}"/> - </copy> - </target> - -</project> http://git-wip-us.apache.org/repos/asf/zookeeper/blob/63aaf0a1/src/contrib/zkfuse/configure.ac ---------------------------------------------------------------------- diff --git a/src/contrib/zkfuse/configure.ac b/src/contrib/zkfuse/configure.ac deleted file mode 100644 index c86e7cd..0000000 --- a/src/contrib/zkfuse/configure.ac +++ /dev/null @@ -1,72 +0,0 @@ -# -*- Autoconf -*- -# Process this file with autoconf to produce a configure script. - -AC_PREREQ(2.59) - -AC_INIT([zkfuse], [2.2.0]) -AM_INIT_AUTOMAKE(foreign) - -AC_CONFIG_SRCDIR([src/zkadapter.h]) -AM_CONFIG_HEADER([config.h]) - -PACKAGE=zkfuse -VERSION=1.0 - -AC_SUBST(PACKAGE) -AC_SUBST(VERSION) - -BUILD_PATH="`pwd`" - -# Checks for programs. -AC_LANG_CPLUSPLUS -AC_PROG_CXX - -# Checks for libraries. -AC_CHECK_LIB([fuse], [main]) -AC_CHECK_LIB([log4cxx], [main], [], [AC_MSG_ERROR("We need log4cxx to build zkfuse")]) -AC_CHECK_LIB([thread], [thr_create]) -AC_CHECK_LIB([pthread], [pthread_create]) -AC_CHECK_LIB([rt], [clock_gettime]) -AC_CHECK_LIB([socket], [socket]) -AC_CHECK_LIB([nsl], [gethostbyname]) -AC_CHECK_LIB([ulockmgr], [ulockmgr_op]) - -ZOOKEEPER_PATH=${BUILD_PATH}/../../c -ZOOKEEPER_BUILD_PATH=${BUILD_PATH}/../../../build/c -AC_CHECK_LIB(zookeeper_mt, main, [ZOOKEEPER_LD="-L${ZOOKEEPER_BUILD_PATH}/.libs -lzookeeper_mt"],,["-L${ZOOKEEPER_BUILD_PATH}/.libs"]) - -AC_SUBST(ZOOKEEPER_PATH) -AC_SUBST(ZOOKEEPER_LD) - -# Checks for header files. -AC_HEADER_DIRENT -AC_HEADER_STDC -AC_CHECK_HEADERS([fcntl.h stdlib.h string.h sys/time.h unistd.h]) -AC_CHECK_HEADERS([boost/shared_ptr.hpp boost/utility.hpp boost/weak_ptr.hpp],, AC_MSG_ERROR([boost library headers not found. Please install boost library.])) - -# Checks for typedefs, structures, and compiler characteristics. -AC_HEADER_STDBOOL -AC_C_CONST -AC_TYPE_UID_T -AC_C_INLINE -AC_TYPE_INT32_T -AC_TYPE_INT64_T -AC_TYPE_MODE_T -AC_TYPE_OFF_T -AC_TYPE_SIZE_T -AC_CHECK_MEMBERS([struct stat.st_blksize]) -AC_STRUCT_ST_BLOCKS -AC_HEADER_TIME -AC_TYPE_UINT32_T -AC_TYPE_UINT64_T -AC_TYPE_UINT8_T -AC_C_VOLATILE - -# Checks for library functions. -AC_FUNC_UTIME_NULL -AC_CHECK_FUNCS([gettimeofday memset mkdir rmdir strdup strerror strstr strtol strtoul strtoull utime]) - -AC_CONFIG_FILES([Makefile]) -AC_CONFIG_FILES([src/Makefile]) -AC_OUTPUT -AC_C_VOLATILE http://git-wip-us.apache.org/repos/asf/zookeeper/blob/63aaf0a1/src/contrib/zkfuse/src/Makefile.am ---------------------------------------------------------------------- diff --git a/src/contrib/zkfuse/src/Makefile.am b/src/contrib/zkfuse/src/Makefile.am deleted file mode 100644 index c0d87e3..0000000 --- a/src/contrib/zkfuse/src/Makefile.am +++ /dev/null @@ -1,7 +0,0 @@ -AM_CXXFLAGS = -I${ZOOKEEPER_PATH}/include -I${ZOOKEEPER_PATH}/generated \ - -I$(top_srcdir)/include -I/usr/include -D_FILE_OFFSET_BITS=64 -D_REENTRANT - -noinst_PROGRAMS = zkfuse - -zkfuse_SOURCES = zkfuse.cc zkadapter.cc thread.cc log.cc -zkfuse_LDADD = ${ZOOKEEPER_LD} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/zookeeper/blob/63aaf0a1/src/contrib/zkfuse/src/blockingqueue.h ---------------------------------------------------------------------- diff --git a/src/contrib/zkfuse/src/blockingqueue.h b/src/contrib/zkfuse/src/blockingqueue.h deleted file mode 100644 index 4677290..0000000 --- a/src/contrib/zkfuse/src/blockingqueue.h +++ /dev/null @@ -1,154 +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 __BLOCKINGQUEUE_H__ -#define __BLOCKINGQUEUE_H__ - -#include <deque> - -#include "mutex.h" - -using namespace std; -USING_ZKFUSE_NAMESPACE - -namespace zk { - -/** - * \brief An unbounded blocking queue of elements of type E. - * - * <p> - * This class is thread safe. - */ -template <class E> -class BlockingQueue { - public: - - /** - * \brief Adds the specified element to this queue, waiting if necessary - * \brief for space to become available. - * - * @param e the element to be added - */ - void put(E e); - - /** - * \brief Retrieves and removes the head of this queue, waiting if - * \brief no elements are present in this queue. - * - * @param timeout how long to wait until an element becomes availabe, - * in milliseconds; if <code>0</code> then wait forever - * @param timedOut if not NULL then set to true whether this function timed out - * @return the element from the queue - */ - E take(int32_t timeout = 0, bool *timedOut = NULL); - - /** - * Returns the current size of this blocking queue. - * - * @return the number of elements in this queue - */ - int size() const; - - /** - * \brief Returns whether this queue is empty or not. - * - * @return true if this queue has no elements; false otherwise - */ - bool empty() const; - - private: - - /** - * The queue of elements. Deque is used to provide O(1) time - * for head elements removal. - */ - deque<E> m_queue; - - /** - * The mutex used for queue synchronization. - */ - mutable zkfuse::Mutex m_mutex; - - /** - * The conditionial variable associated with the mutex above. - */ - mutable Cond m_cond; - -}; - -template<class E> -int BlockingQueue<E>::size() const { - int size; - m_mutex.Acquire(); - size = m_queue.size(); - m_mutex.Release(); - return size; -} - -template<class E> -bool BlockingQueue<E>::empty() const { - bool isEmpty; - m_mutex.Acquire(); - isEmpty = m_queue.empty(); - m_mutex.Release(); - return isEmpty; -} - -template<class E> -void BlockingQueue<E>::put(E e) { - m_mutex.Acquire(); - m_queue.push_back( e ); - m_cond.Signal(); - m_mutex.Release(); -} - -template<class E> - E BlockingQueue<E>::take(int32_t timeout, bool *timedOut) { - m_mutex.Acquire(); - bool hasResult = true; - while (m_queue.empty()) { - if (timeout <= 0) { - m_cond.Wait( m_mutex ); - } else { - if (!m_cond.Wait( m_mutex, timeout )) { - hasResult = false; - break; - } - } - } - if (hasResult) { - E e = m_queue.front(); - m_queue.pop_front(); - m_mutex.Release(); - if (timedOut) { - *timedOut = false; - } - return e; - } else { - m_mutex.Release(); - if (timedOut) { - *timedOut = true; - } - return E(); - } -} - -} - -#endif /* __BLOCKINGQUEUE_H__ */ - http://git-wip-us.apache.org/repos/asf/zookeeper/blob/63aaf0a1/src/contrib/zkfuse/src/doxygen.cfg ---------------------------------------------------------------------- diff --git a/src/contrib/zkfuse/src/doxygen.cfg b/src/contrib/zkfuse/src/doxygen.cfg deleted file mode 100644 index 308b094..0000000 --- a/src/contrib/zkfuse/src/doxygen.cfg +++ /dev/null @@ -1,1242 +0,0 @@ -# Doxyfile 1.4.3 - -# 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 file describes the settings to be used by the documentation system -# doxygen (www.doxygen.org) for a project -# -# All text after a hash (#) is considered a comment and will be ignored -# The format is: -# TAG = value [value, ...] -# For lists items can also be appended using: -# TAG += value [value, ...] -# Values that contain spaces should be placed between quotes (" ") - -#--------------------------------------------------------------------------- -# Project related configuration options -#--------------------------------------------------------------------------- - -# The PROJECT_NAME tag is a single word (or a sequence of words surrounded -# by quotes) that should identify the project. - -PROJECT_NAME = ZkFuse - -# The PROJECT_NUMBER tag can be used to enter a project or revision number. -# This could be handy for archiving the generated documentation or -# if some version control system is used. - -PROJECT_NUMBER = - -# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) -# base path where the generated documentation will be put. -# If a relative path is entered, it will be relative to the location -# where doxygen was started. If left blank the current directory will be used. - -OUTPUT_DIRECTORY = doc - -# If the CREATE_SUBDIRS tag is set to YES, then doxygen will create -# 4096 sub-directories (in 2 levels) under the output directory of each output -# format and will distribute the generated files over these directories. -# Enabling this option can be useful when feeding doxygen a huge amount of -# source files, where putting all generated files in the same directory would -# otherwise cause performance problems for the file system. - -CREATE_SUBDIRS = NO - -# The OUTPUT_LANGUAGE tag is used to specify the language in which all -# documentation generated by doxygen is written. Doxygen will use this -# information to generate all constant output in the proper language. -# The default language is English, other supported languages are: -# Brazilian, Catalan, Chinese, Chinese-Traditional, Croatian, Czech, Danish, -# Dutch, Finnish, French, German, Greek, Hungarian, Italian, Japanese, -# Japanese-en (Japanese with English messages), Korean, Korean-en, Norwegian, -# Polish, Portuguese, Romanian, Russian, Serbian, Slovak, Slovene, Spanish, -# Swedish, and Ukrainian. - -OUTPUT_LANGUAGE = English - -# This tag can be used to specify the encoding used in the generated output. -# The encoding is not always determined by the language that is chosen, -# but also whether or not the output is meant for Windows or non-Windows users. -# In case there is a difference, setting the USE_WINDOWS_ENCODING tag to YES -# forces the Windows encoding (this is the default for the Windows binary), -# whereas setting the tag to NO uses a Unix-style encoding (the default for -# all platforms other than Windows). - -USE_WINDOWS_ENCODING = NO - -# If the BRIEF_MEMBER_DESC tag is set to YES (the default) Doxygen will -# include brief member descriptions after the members that are listed in -# the file and class documentation (similar to JavaDoc). -# Set to NO to disable this. - -BRIEF_MEMBER_DESC = YES - -# If the REPEAT_BRIEF tag is set to YES (the default) Doxygen will prepend -# the brief description of a member or function before the detailed description. -# Note: if both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the -# brief descriptions will be completely suppressed. - -REPEAT_BRIEF = YES - -# This tag implements a quasi-intelligent brief description abbreviator -# that is used to form the text in various listings. Each string -# in this list, if found as the leading text of the brief description, will be -# stripped from the text and the result after processing the whole list, is -# used as the annotated text. Otherwise, the brief description is used as-is. -# If left blank, the following values are used ("$name" is automatically -# replaced with the name of the entity): "The $name class" "The $name widget" -# "The $name file" "is" "provides" "specifies" "contains" -# "represents" "a" "an" "the" - -ABBREVIATE_BRIEF = - -# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then -# Doxygen will generate a detailed section even if there is only a brief -# description. - -ALWAYS_DETAILED_SEC = NO - -# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all -# inherited members of a class in the documentation of that class as if those -# members were ordinary class members. Constructors, destructors and assignment -# operators of the base classes will not be shown. - -INLINE_INHERITED_MEMB = NO - -# If the FULL_PATH_NAMES tag is set to YES then Doxygen will prepend the full -# path before files name in the file list and in the header files. If set -# to NO the shortest path that makes the file name unique will be used. - -FULL_PATH_NAMES = YES - -# If the FULL_PATH_NAMES tag is set to YES then the STRIP_FROM_PATH tag -# can be used to strip a user-defined part of the path. Stripping is -# only done if one of the specified strings matches the left-hand part of -# the path. The tag can be used to show relative paths in the file list. -# If left blank the directory from which doxygen is run is used as the -# path to strip. - -STRIP_FROM_PATH = - -# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of -# the path mentioned in the documentation of a class, which tells -# the reader which header file to include in order to use a class. -# If left blank only the name of the header file containing the class -# definition is used. Otherwise one should specify the include paths that -# are normally passed to the compiler using the -I flag. - -STRIP_FROM_INC_PATH = - -# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter -# (but less readable) file names. This can be useful is your file systems -# doesn't support long names like on DOS, Mac, or CD-ROM. - -SHORT_NAMES = NO - -# If the JAVADOC_AUTOBRIEF tag is set to YES then Doxygen -# will interpret the first line (until the first dot) of a JavaDoc-style -# comment as the brief description. If set to NO, the JavaDoc -# comments will behave just like the Qt-style comments (thus requiring an -# explicit @brief command for a brief description. - -JAVADOC_AUTOBRIEF = NO - -# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make Doxygen -# treat a multi-line C++ special comment block (i.e. a block of //! or /// -# comments) as a brief description. This used to be the default behaviour. -# The new default is to treat a multi-line C++ comment block as a detailed -# description. Set this tag to YES if you prefer the old behaviour instead. - -MULTILINE_CPP_IS_BRIEF = NO - -# If the DETAILS_AT_TOP tag is set to YES then Doxygen -# will output the detailed description near the top, like JavaDoc. -# If set to NO, the detailed description appears after the member -# documentation. - -DETAILS_AT_TOP = NO - -# If the INHERIT_DOCS tag is set to YES (the default) then an undocumented -# member inherits the documentation from any documented member that it -# re-implements. - -INHERIT_DOCS = YES - -# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC -# tag is set to YES, then doxygen will reuse the documentation of the first -# member in the group (if any) for the other members of the group. By default -# all members of a group must be documented explicitly. - -DISTRIBUTE_GROUP_DOC = NO - -# If the SEPARATE_MEMBER_PAGES tag is set to YES, then doxygen will produce -# a new page for each member. If set to NO, the documentation of a member will -# be part of the file/class/namespace that contains it. - -SEPARATE_MEMBER_PAGES = NO - -# The TAB_SIZE tag can be used to set the number of spaces in a tab. -# Doxygen uses this value to replace tabs by spaces in code fragments. - -TAB_SIZE = 8 - -# This tag can be used to specify a number of aliases that acts -# as commands in the documentation. An alias has the form "name=value". -# For example adding "sideeffect=\par Side Effects:\n" will allow you to -# put the command \sideeffect (or @sideeffect) in the documentation, which -# will result in a user-defined paragraph with heading "Side Effects:". -# You can put \n's in the value part of an alias to insert newlines. - -ALIASES = - -# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C -# sources only. Doxygen will then generate output that is more tailored for C. -# For instance, some of the names that are used will be different. The list -# of all members will be omitted, etc. - -OPTIMIZE_OUTPUT_FOR_C = NO - -# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java sources -# only. Doxygen will then generate output that is more tailored for Java. -# For instance, namespaces will be presented as packages, qualified scopes -# will look different, etc. - -OPTIMIZE_OUTPUT_JAVA = NO - -# Set the SUBGROUPING tag to YES (the default) to allow class member groups of -# the same type (for instance a group of public functions) to be put as a -# subgroup of that type (e.g. under the Public Functions section). Set it to -# NO to prevent subgrouping. Alternatively, this can be done per class using -# the \nosubgrouping command. - -SUBGROUPING = YES - -#--------------------------------------------------------------------------- -# Build related configuration options -#--------------------------------------------------------------------------- - -# If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in -# documentation are documented, even if no documentation was available. -# Private class members and static file members will be hidden unless -# the EXTRACT_PRIVATE and EXTRACT_STATIC tags are set to YES - -EXTRACT_ALL = NO - -# If the EXTRACT_PRIVATE tag is set to YES all private members of a class -# will be included in the documentation. - -EXTRACT_PRIVATE = YES - -# If the EXTRACT_STATIC tag is set to YES all static members of a file -# will be included in the documentation. - -EXTRACT_STATIC = YES - -# If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs) -# defined locally in source files will be included in the documentation. -# If set to NO only classes defined in header files are included. - -EXTRACT_LOCAL_CLASSES = YES - -# This flag is only useful for Objective-C code. When set to YES local -# methods, which are defined in the implementation section but not in -# the interface are included in the documentation. -# If set to NO (the default) only methods in the interface are included. - -EXTRACT_LOCAL_METHODS = NO - -# If the HIDE_UNDOC_MEMBERS tag is set to YES, Doxygen will hide all -# undocumented members of documented classes, files or namespaces. -# If set to NO (the default) these members will be included in the -# various overviews, but no documentation section is generated. -# This option has no effect if EXTRACT_ALL is enabled. - -HIDE_UNDOC_MEMBERS = NO - -# If the HIDE_UNDOC_CLASSES tag is set to YES, Doxygen will hide all -# undocumented classes that are normally visible in the class hierarchy. -# If set to NO (the default) these classes will be included in the various -# overviews. This option has no effect if EXTRACT_ALL is enabled. - -HIDE_UNDOC_CLASSES = NO - -# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, Doxygen will hide all -# friend (class|struct|union) declarations. -# If set to NO (the default) these declarations will be included in the -# documentation. - -HIDE_FRIEND_COMPOUNDS = NO - -# If the HIDE_IN_BODY_DOCS tag is set to YES, Doxygen will hide any -# documentation blocks found inside the body of a function. -# If set to NO (the default) these blocks will be appended to the -# function's detailed documentation block. - -HIDE_IN_BODY_DOCS = NO - -# The INTERNAL_DOCS tag determines if documentation -# that is typed after a \internal command is included. If the tag is set -# to NO (the default) then the documentation will be excluded. -# Set it to YES to include the internal documentation. - -INTERNAL_DOCS = NO - -# If the CASE_SENSE_NAMES tag is set to NO then Doxygen will only generate -# file names in lower-case letters. If set to YES upper-case letters are also -# allowed. This is useful if you have classes or files whose names only differ -# in case and if your file system supports case sensitive file names. Windows -# and Mac users are advised to set this option to NO. - -CASE_SENSE_NAMES = YES - -# If the HIDE_SCOPE_NAMES tag is set to NO (the default) then Doxygen -# will show members with their full class and namespace scopes in the -# documentation. If set to YES the scope will be hidden. - -HIDE_SCOPE_NAMES = NO - -# If the SHOW_INCLUDE_FILES tag is set to YES (the default) then Doxygen -# will put a list of the files that are included by a file in the documentation -# of that file. - -SHOW_INCLUDE_FILES = YES - -# If the INLINE_INFO tag is set to YES (the default) then a tag [inline] -# is inserted in the documentation for inline members. - -INLINE_INFO = YES - -# If the SORT_MEMBER_DOCS tag is set to YES (the default) then doxygen -# will sort the (detailed) documentation of file and class members -# alphabetically by member name. If set to NO the members will appear in -# declaration order. - -SORT_MEMBER_DOCS = YES - -# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the -# brief documentation of file, namespace and class members alphabetically -# by member name. If set to NO (the default) the members will appear in -# declaration order. - -SORT_BRIEF_DOCS = NO - -# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be -# sorted by fully-qualified names, including namespaces. If set to -# NO (the default), the class list will be sorted only by class name, -# not including the namespace part. -# Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES. -# Note: This option applies only to the class list, not to the -# alphabetical list. - -SORT_BY_SCOPE_NAME = NO - -# The GENERATE_TODOLIST tag can be used to enable (YES) or -# disable (NO) the todo list. This list is created by putting \todo -# commands in the documentation. - -GENERATE_TODOLIST = YES - -# The GENERATE_TESTLIST tag can be used to enable (YES) or -# disable (NO) the test list. This list is created by putting \test -# commands in the documentation. - -GENERATE_TESTLIST = YES - -# The GENERATE_BUGLIST tag can be used to enable (YES) or -# disable (NO) the bug list. This list is created by putting \bug -# commands in the documentation. - -GENERATE_BUGLIST = YES - -# The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or -# disable (NO) the deprecated list. This list is created by putting -# \deprecated commands in the documentation. - -GENERATE_DEPRECATEDLIST= YES - -# The ENABLED_SECTIONS tag can be used to enable conditional -# documentation sections, marked by \if sectionname ... \endif. - -ENABLED_SECTIONS = - -# The MAX_INITIALIZER_LINES tag determines the maximum number of lines -# the initial value of a variable or define consists of for it to appear in -# the documentation. If the initializer consists of more lines than specified -# here it will be hidden. Use a value of 0 to hide initializers completely. -# The appearance of the initializer of individual variables and defines in the -# documentation can be controlled using \showinitializer or \hideinitializer -# command in the documentation regardless of this setting. - -MAX_INITIALIZER_LINES = 30 - -# Set the SHOW_USED_FILES tag to NO to disable the list of files generated -# at the bottom of the documentation of classes and structs. If set to YES the -# list will mention the files that were used to generate the documentation. - -SHOW_USED_FILES = YES - -# If the sources in your project are distributed over multiple directories -# then setting the SHOW_DIRECTORIES tag to YES will show the directory hierarchy -# in the documentation. - -SHOW_DIRECTORIES = YES - -# The FILE_VERSION_FILTER tag can be used to specify a program or script that -# doxygen should invoke to get the current version for each file (typically from the -# version control system). Doxygen will invoke the program by executing (via -# popen()) the command <command> <input-file>, where <command> is the value of -# the FILE_VERSION_FILTER tag, and <input-file> is the name of an input file -# provided by doxygen. Whatever the progam writes to standard output -# is used as the file version. See the manual for examples. - -FILE_VERSION_FILTER = - -#--------------------------------------------------------------------------- -# configuration options related to warning and progress messages -#--------------------------------------------------------------------------- - -# The QUIET tag can be used to turn on/off the messages that are generated -# by doxygen. Possible values are YES and NO. If left blank NO is used. - -QUIET = NO - -# The WARNINGS tag can be used to turn on/off the warning messages that are -# generated by doxygen. Possible values are YES and NO. If left blank -# NO is used. - -WARNINGS = YES - -# If WARN_IF_UNDOCUMENTED is set to YES, then doxygen will generate warnings -# for undocumented members. If EXTRACT_ALL is set to YES then this flag will -# automatically be disabled. - -WARN_IF_UNDOCUMENTED = YES - -# If WARN_IF_DOC_ERROR is set to YES, doxygen will generate warnings for -# potential errors in the documentation, such as not documenting some -# parameters in a documented function, or documenting parameters that -# don't exist or using markup commands wrongly. - -WARN_IF_DOC_ERROR = YES - -# This WARN_NO_PARAMDOC option can be abled to get warnings for -# functions that are documented, but have no documentation for their parameters -# or return value. If set to NO (the default) doxygen will only warn about -# wrong or incomplete parameter documentation, but not about the absence of -# documentation. - -WARN_NO_PARAMDOC = NO - -# The WARN_FORMAT tag determines the format of the warning messages that -# doxygen can produce. The string should contain the $file, $line, and $text -# tags, which will be replaced by the file and line number from which the -# warning originated and the warning text. Optionally the format may contain -# $version, which will be replaced by the version of the file (if it could -# be obtained via FILE_VERSION_FILTER) - -WARN_FORMAT = "$file:$line: $text" - -# The WARN_LOGFILE tag can be used to specify a file to which warning -# and error messages should be written. If left blank the output is written -# to stderr. - -WARN_LOGFILE = - -#--------------------------------------------------------------------------- -# configuration options related to the input files -#--------------------------------------------------------------------------- - -# The INPUT tag can be used to specify the files and/or directories that contain -# documented source files. You may enter file names like "myfile.cpp" or -# directories like "/usr/src/myproject". Separate the files or directories -# with spaces. - -INPUT = - -# If the value of the INPUT tag contains directories, you can use the -# FILE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp -# and *.h) to filter out the source-files in the directories. If left -# blank the following patterns are tested: -# *.c *.cc *.cxx *.cpp *.c++ *.java *.ii *.ixx *.ipp *.i++ *.inl *.h *.hh *.hxx -# *.hpp *.h++ *.idl *.odl *.cs *.php *.php3 *.inc *.m *.mm - -FILE_PATTERNS = - -# The RECURSIVE tag can be used to turn specify whether or not subdirectories -# should be searched for input files as well. Possible values are YES and NO. -# If left blank NO is used. - -RECURSIVE = NO - -# The EXCLUDE tag can be used to specify files and/or directories that should -# excluded from the INPUT source files. This way you can easily exclude a -# subdirectory from a directory tree whose root is specified with the INPUT tag. - -EXCLUDE = - -# The EXCLUDE_SYMLINKS tag can be used select whether or not files or -# directories that are symbolic links (a Unix filesystem feature) are excluded -# from the input. - -EXCLUDE_SYMLINKS = NO - -# If the value of the INPUT tag contains directories, you can use the -# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude -# certain files from those directories. - -EXCLUDE_PATTERNS = - -# The EXAMPLE_PATH tag can be used to specify one or more files or -# directories that contain example code fragments that are included (see -# the \include command). - -EXAMPLE_PATH = - -# If the value of the EXAMPLE_PATH tag contains directories, you can use the -# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp -# and *.h) to filter out the source-files in the directories. If left -# blank all files are included. - -EXAMPLE_PATTERNS = - -# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be -# searched for input files to be used with the \include or \dontinclude -# commands irrespective of the value of the RECURSIVE tag. -# Possible values are YES and NO. If left blank NO is used. - -EXAMPLE_RECURSIVE = NO - -# The IMAGE_PATH tag can be used to specify one or more files or -# directories that contain image that are included in the documentation (see -# the \image command). - -IMAGE_PATH = - -# The INPUT_FILTER tag can be used to specify a program that doxygen should -# invoke to filter for each input file. Doxygen will invoke the filter program -# by executing (via popen()) the command <filter> <input-file>, where <filter> -# is the value of the INPUT_FILTER tag, and <input-file> is the name of an -# input file. Doxygen will then use the output that the filter program writes -# to standard output. If FILTER_PATTERNS is specified, this tag will be -# ignored. - -INPUT_FILTER = - -# The FILTER_PATTERNS tag can be used to specify filters on a per file pattern -# basis. Doxygen will compare the file name with each pattern and apply the -# filter if there is a match. The filters are a list of the form: -# pattern=filter (like *.cpp=my_cpp_filter). See INPUT_FILTER for further -# info on how filters are used. If FILTER_PATTERNS is empty, INPUT_FILTER -# is applied to all files. - -FILTER_PATTERNS = - -# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using -# INPUT_FILTER) will be used to filter the input files when producing source -# files to browse (i.e. when SOURCE_BROWSER is set to YES). - -FILTER_SOURCE_FILES = NO - -#--------------------------------------------------------------------------- -# configuration options related to source browsing -#--------------------------------------------------------------------------- - -# If the SOURCE_BROWSER tag is set to YES then a list of source files will -# be generated. Documented entities will be cross-referenced with these sources. -# Note: To get rid of all source code in the generated output, make sure also -# VERBATIM_HEADERS is set to NO. - -SOURCE_BROWSER = NO - -# Setting the INLINE_SOURCES tag to YES will include the body -# of functions and classes directly in the documentation. - -INLINE_SOURCES = NO - -# Setting the STRIP_CODE_COMMENTS tag to YES (the default) will instruct -# doxygen to hide any special comment blocks from generated source code -# fragments. Normal C and C++ comments will always remain visible. - -STRIP_CODE_COMMENTS = YES - -# If the REFERENCED_BY_RELATION tag is set to YES (the default) -# then for each documented function all documented -# functions referencing it will be listed. - -REFERENCED_BY_RELATION = YES - -# If the REFERENCES_RELATION tag is set to YES (the default) -# then for each documented function all documented entities -# called/used by that function will be listed. - -REFERENCES_RELATION = YES - -# If the USE_HTAGS tag is set to YES then the references to source code -# will point to the HTML generated by the htags(1) tool instead of doxygen -# built-in source browser. The htags tool is part of GNU's global source -# tagging system (see http://www.gnu.org/software/global/global.html). You -# will need version 4.8.6 or higher. - -USE_HTAGS = NO - -# If the VERBATIM_HEADERS tag is set to YES (the default) then Doxygen -# will generate a verbatim copy of the header file for each class for -# which an include is specified. Set to NO to disable this. - -VERBATIM_HEADERS = YES - -#--------------------------------------------------------------------------- -# configuration options related to the alphabetical class index -#--------------------------------------------------------------------------- - -# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index -# of all compounds will be generated. Enable this if the project -# contains a lot of classes, structs, unions or interfaces. - -ALPHABETICAL_INDEX = NO - -# If the alphabetical index is enabled (see ALPHABETICAL_INDEX) then -# the COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns -# in which this list will be split (can be a number in the range [1..20]) - -COLS_IN_ALPHA_INDEX = 5 - -# In case all classes in a project start with a common prefix, all -# classes will be put under the same header in the alphabetical index. -# The IGNORE_PREFIX tag can be used to specify one or more prefixes that -# should be ignored while generating the index headers. - -IGNORE_PREFIX = - -#--------------------------------------------------------------------------- -# configuration options related to the HTML output -#--------------------------------------------------------------------------- - -# If the GENERATE_HTML tag is set to YES (the default) Doxygen will -# generate HTML output. - -GENERATE_HTML = YES - -# The HTML_OUTPUT tag is used to specify where the HTML docs will be put. -# If a relative path is entered the value of OUTPUT_DIRECTORY will be -# put in front of it. If left blank `html' will be used as the default path. - -HTML_OUTPUT = html - -# The HTML_FILE_EXTENSION tag can be used to specify the file extension for -# each generated HTML page (for example: .htm,.php,.asp). If it is left blank -# doxygen will generate files with .html extension. - -HTML_FILE_EXTENSION = .html - -# The HTML_HEADER tag can be used to specify a personal HTML header for -# each generated HTML page. If it is left blank doxygen will generate a -# standard header. - -HTML_HEADER = - -# The HTML_FOOTER tag can be used to specify a personal HTML footer for -# each generated HTML page. If it is left blank doxygen will generate a -# standard footer. - -HTML_FOOTER = - -# The HTML_STYLESHEET tag can be used to specify a user-defined cascading -# style sheet that is used by each HTML page. It can be used to -# fine-tune the look of the HTML output. If the tag is left blank doxygen -# will generate a default style sheet. Note that doxygen will try to copy -# the style sheet file to the HTML output directory, so don't put your own -# stylesheet in the HTML output directory as well, or it will be erased! - -HTML_STYLESHEET = - -# If the HTML_ALIGN_MEMBERS tag is set to YES, the members of classes, -# files or namespaces will be aligned in HTML using tables. If set to -# NO a bullet list will be used. - -HTML_ALIGN_MEMBERS = YES - -# If the GENERATE_HTMLHELP tag is set to YES, additional index files -# will be generated that can be used as input for tools like the -# Microsoft HTML help workshop to generate a compressed HTML help file (.chm) -# of the generated HTML documentation. - -GENERATE_HTMLHELP = NO - -# If the GENERATE_HTMLHELP tag is set to YES, the CHM_FILE tag can -# be used to specify the file name of the resulting .chm file. You -# can add a path in front of the file if the result should not be -# written to the html output directory. - -CHM_FILE = - -# If the GENERATE_HTMLHELP tag is set to YES, the HHC_LOCATION tag can -# be used to specify the location (absolute path including file name) of -# the HTML help compiler (hhc.exe). If non-empty doxygen will try to run -# the HTML help compiler on the generated index.hhp. - -HHC_LOCATION = - -# If the GENERATE_HTMLHELP tag is set to YES, the GENERATE_CHI flag -# controls if a separate .chi index file is generated (YES) or that -# it should be included in the master .chm file (NO). - -GENERATE_CHI = NO - -# If the GENERATE_HTMLHELP tag is set to YES, the BINARY_TOC flag -# controls whether a binary table of contents is generated (YES) or a -# normal table of contents (NO) in the .chm file. - -BINARY_TOC = NO - -# The TOC_EXPAND flag can be set to YES to add extra items for group members -# to the contents of the HTML help documentation and to the tree view. - -TOC_EXPAND = NO - -# The DISABLE_INDEX tag can be used to turn on/off the condensed index at -# top of each HTML page. The value NO (the default) enables the index and -# the value YES disables it. - -DISABLE_INDEX = NO - -# This tag can be used to set the number of enum values (range [1..20]) -# that doxygen will group on one line in the generated HTML documentation. - -ENUM_VALUES_PER_LINE = 4 - -# If the GENERATE_TREEVIEW tag is set to YES, a side panel will be -# generated containing a tree-like index structure (just like the one that -# is generated for HTML Help). For this to work a browser that supports -# JavaScript, DHTML, CSS and frames is required (for instance Mozilla 1.0+, -# Netscape 6.0+, Internet explorer 5.0+, or Konqueror). Windows users are -# probably better off using the HTML help feature. - -GENERATE_TREEVIEW = NO - -# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be -# used to set the initial width (in pixels) of the frame in which the tree -# is shown. - -TREEVIEW_WIDTH = 250 - -#--------------------------------------------------------------------------- -# configuration options related to the LaTeX output -#--------------------------------------------------------------------------- - -# If the GENERATE_LATEX tag is set to YES (the default) Doxygen will -# generate Latex output. - -GENERATE_LATEX = YES - -# The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put. -# If a relative path is entered the value of OUTPUT_DIRECTORY will be -# put in front of it. If left blank `latex' will be used as the default path. - -LATEX_OUTPUT = latex - -# The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be -# invoked. If left blank `latex' will be used as the default command name. - -LATEX_CMD_NAME = latex - -# The MAKEINDEX_CMD_NAME tag can be used to specify the command name to -# generate index for LaTeX. If left blank `makeindex' will be used as the -# default command name. - -MAKEINDEX_CMD_NAME = makeindex - -# If the COMPACT_LATEX tag is set to YES Doxygen generates more compact -# LaTeX documents. This may be useful for small projects and may help to -# save some trees in general. - -COMPACT_LATEX = NO - -# The PAPER_TYPE tag can be used to set the paper type that is used -# by the printer. Possible values are: a4, a4wide, letter, legal and -# executive. If left blank a4wide will be used. - -PAPER_TYPE = a4wide - -# The EXTRA_PACKAGES tag can be to specify one or more names of LaTeX -# packages that should be included in the LaTeX output. - -EXTRA_PACKAGES = - -# The LATEX_HEADER tag can be used to specify a personal LaTeX header for -# the generated latex document. The header should contain everything until -# the first chapter. If it is left blank doxygen will generate a -# standard header. Notice: only use this tag if you know what you are doing! - -LATEX_HEADER = - -# If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated -# is prepared for conversion to pdf (using ps2pdf). The pdf file will -# contain links (just like the HTML output) instead of page references -# This makes the output suitable for online browsing using a pdf viewer. - -PDF_HYPERLINKS = NO - -# If the USE_PDFLATEX tag is set to YES, pdflatex will be used instead of -# plain latex in the generated Makefile. Set this option to YES to get a -# higher quality PDF documentation. - -USE_PDFLATEX = NO - -# If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \\batchmode. -# command to the generated LaTeX files. This will instruct LaTeX to keep -# running if errors occur, instead of asking the user for help. -# This option is also used when generating formulas in HTML. - -LATEX_BATCHMODE = NO - -# If LATEX_HIDE_INDICES is set to YES then doxygen will not -# include the index chapters (such as File Index, Compound Index, etc.) -# in the output. - -LATEX_HIDE_INDICES = NO - -#--------------------------------------------------------------------------- -# configuration options related to the RTF output -#--------------------------------------------------------------------------- - -# If the GENERATE_RTF tag is set to YES Doxygen will generate RTF output -# The RTF output is optimized for Word 97 and may not look very pretty with -# other RTF readers or editors. - -GENERATE_RTF = NO - -# The RTF_OUTPUT tag is used to specify where the RTF docs will be put. -# If a relative path is entered the value of OUTPUT_DIRECTORY will be -# put in front of it. If left blank `rtf' will be used as the default path. - -RTF_OUTPUT = rtf - -# If the COMPACT_RTF tag is set to YES Doxygen generates more compact -# RTF documents. This may be useful for small projects and may help to -# save some trees in general. - -COMPACT_RTF = NO - -# If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated -# will contain hyperlink fields. The RTF file will -# contain links (just like the HTML output) instead of page references. -# This makes the output suitable for online browsing using WORD or other -# programs which support those fields. -# Note: wordpad (write) and others do not support links. - -RTF_HYPERLINKS = NO - -# Load stylesheet definitions from file. Syntax is similar to doxygen's -# config file, i.e. a series of assignments. You only have to provide -# replacements, missing definitions are set to their default value. - -RTF_STYLESHEET_FILE = - -# Set optional variables used in the generation of an rtf document. -# Syntax is similar to doxygen's config file. - -RTF_EXTENSIONS_FILE = - -#--------------------------------------------------------------------------- -# configuration options related to the man page output -#--------------------------------------------------------------------------- - -# If the GENERATE_MAN tag is set to YES (the default) Doxygen will -# generate man pages - -GENERATE_MAN = NO - -# The MAN_OUTPUT tag is used to specify where the man pages will be put. -# If a relative path is entered the value of OUTPUT_DIRECTORY will be -# put in front of it. If left blank `man' will be used as the default path. - -MAN_OUTPUT = man - -# The MAN_EXTENSION tag determines the extension that is added to -# the generated man pages (default is the subroutine's section .3) - -MAN_EXTENSION = .3 - -# If the MAN_LINKS tag is set to YES and Doxygen generates man output, -# then it will generate one additional man file for each entity -# documented in the real man page(s). These additional files -# only source the real man page, but without them the man command -# would be unable to find the correct page. The default is NO. - -MAN_LINKS = NO - -#--------------------------------------------------------------------------- -# configuration options related to the XML output -#--------------------------------------------------------------------------- - -# If the GENERATE_XML tag is set to YES Doxygen will -# generate an XML file that captures the structure of -# the code including all documentation. - -GENERATE_XML = NO - -# The XML_OUTPUT tag is used to specify where the XML pages will be put. -# If a relative path is entered the value of OUTPUT_DIRECTORY will be -# put in front of it. If left blank `xml' will be used as the default path. - -XML_OUTPUT = xml - -# The XML_SCHEMA tag can be used to specify an XML schema, -# which can be used by a validating XML parser to check the -# syntax of the XML files. - -XML_SCHEMA = - -# The XML_DTD tag can be used to specify an XML DTD, -# which can be used by a validating XML parser to check the -# syntax of the XML files. - -XML_DTD = - -# If the XML_PROGRAMLISTING tag is set to YES Doxygen will -# dump the program listings (including syntax highlighting -# and cross-referencing information) to the XML output. Note that -# enabling this will significantly increase the size of the XML output. - -XML_PROGRAMLISTING = YES - -#--------------------------------------------------------------------------- -# configuration options for the AutoGen Definitions output -#--------------------------------------------------------------------------- - -# If the GENERATE_AUTOGEN_DEF tag is set to YES Doxygen will -# generate an AutoGen Definitions (see autogen.sf.net) file -# that captures the structure of the code including all -# documentation. Note that this feature is still experimental -# and incomplete at the moment. - -GENERATE_AUTOGEN_DEF = NO - -#--------------------------------------------------------------------------- -# configuration options related to the Perl module output -#--------------------------------------------------------------------------- - -# If the GENERATE_PERLMOD tag is set to YES Doxygen will -# generate a Perl module file that captures the structure of -# the code including all documentation. Note that this -# feature is still experimental and incomplete at the -# moment. - -GENERATE_PERLMOD = NO - -# If the PERLMOD_LATEX tag is set to YES Doxygen will generate -# the necessary Makefile rules, Perl scripts and LaTeX code to be able -# to generate PDF and DVI output from the Perl module output. - -PERLMOD_LATEX = NO - -# If the PERLMOD_PRETTY tag is set to YES the Perl module output will be -# nicely formatted so it can be parsed by a human reader. This is useful -# if you want to understand what is going on. On the other hand, if this -# tag is set to NO the size of the Perl module output will be much smaller -# and Perl will parse it just the same. - -PERLMOD_PRETTY = YES - -# The names of the make variables in the generated doxyrules.make file -# are prefixed with the string contained in PERLMOD_MAKEVAR_PREFIX. -# This is useful so different doxyrules.make files included by the same -# Makefile don't overwrite each other's variables. - -PERLMOD_MAKEVAR_PREFIX = - -#--------------------------------------------------------------------------- -# Configuration options related to the preprocessor -#--------------------------------------------------------------------------- - -# If the ENABLE_PREPROCESSING tag is set to YES (the default) Doxygen will -# evaluate all C-preprocessor directives found in the sources and include -# files. - -ENABLE_PREPROCESSING = YES - -# If the MACRO_EXPANSION tag is set to YES Doxygen will expand all macro -# names in the source code. If set to NO (the default) only conditional -# compilation will be performed. Macro expansion can be done in a controlled -# way by setting EXPAND_ONLY_PREDEF to YES. - -MACRO_EXPANSION = NO - -# If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES -# then the macro expansion is limited to the macros specified with the -# PREDEFINED and EXPAND_AS_PREDEFINED tags. - -EXPAND_ONLY_PREDEF = NO - -# If the SEARCH_INCLUDES tag is set to YES (the default) the includes files -# in the INCLUDE_PATH (see below) will be search if a #include is found. - -SEARCH_INCLUDES = YES - -# The INCLUDE_PATH tag can be used to specify one or more directories that -# contain include files that are not input files but should be processed by -# the preprocessor. - -INCLUDE_PATH = - -# You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard -# patterns (like *.h and *.hpp) to filter out the header-files in the -# directories. If left blank, the patterns specified with FILE_PATTERNS will -# be used. - -INCLUDE_FILE_PATTERNS = - -# The PREDEFINED tag can be used to specify one or more macro names that -# are defined before the preprocessor is started (similar to the -D option of -# gcc). The argument of the tag is a list of macros of the form: name -# or name=definition (no spaces). If the definition and the = are -# omitted =1 is assumed. To prevent a macro definition from being -# undefined via #undef or recursively expanded use the := operator -# instead of the = operator. - -PREDEFINED = - -# If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then -# this tag can be used to specify a list of macro names that should be expanded. -# The macro definition that is found in the sources will be used. -# Use the PREDEFINED tag if you want to use a different macro definition. - -EXPAND_AS_DEFINED = - -# If the SKIP_FUNCTION_MACROS tag is set to YES (the default) then -# doxygen's preprocessor will remove all function-like macros that are alone -# on a line, have an all uppercase name, and do not end with a semicolon. Such -# function macros are typically used for boiler-plate code, and will confuse -# the parser if not removed. - -SKIP_FUNCTION_MACROS = YES - -#--------------------------------------------------------------------------- -# Configuration::additions related to external references -#--------------------------------------------------------------------------- - -# The TAGFILES option can be used to specify one or more tagfiles. -# Optionally an initial location of the external documentation -# can be added for each tagfile. The format of a tag file without -# this location is as follows: -# TAGFILES = file1 file2 ... -# Adding location for the tag files is done as follows: -# TAGFILES = file1=loc1 "file2 = loc2" ... -# where "loc1" and "loc2" can be relative or absolute paths or -# URLs. If a location is present for each tag, the installdox tool -# does not have to be run to correct the links. -# Note that each tag file must have a unique name -# (where the name does NOT include the path) -# If a tag file is not located in the directory in which doxygen -# is run, you must also specify the path to the tagfile here. - -TAGFILES = - -# When a file name is specified after GENERATE_TAGFILE, doxygen will create -# a tag file that is based on the input files it reads. - -GENERATE_TAGFILE = - -# If the ALLEXTERNALS tag is set to YES all external classes will be listed -# in the class index. If set to NO only the inherited external classes -# will be listed. - -ALLEXTERNALS = NO - -# If the EXTERNAL_GROUPS tag is set to YES all external groups will be listed -# in the modules index. If set to NO, only the current project's groups will -# be listed. - -EXTERNAL_GROUPS = YES - -# The PERL_PATH should be the absolute path and name of the perl script -# interpreter (i.e. the result of `which perl'). - -PERL_PATH = /usr/bin/perl - -#--------------------------------------------------------------------------- -# Configuration options related to the dot tool -#--------------------------------------------------------------------------- - -# If the CLASS_DIAGRAMS tag is set to YES (the default) Doxygen will -# generate a inheritance diagram (in HTML, RTF and LaTeX) for classes with base -# or super classes. Setting the tag to NO turns the diagrams off. Note that -# this option is superseded by the HAVE_DOT option below. This is only a -# fallback. It is recommended to install and use dot, since it yields more -# powerful graphs. - -CLASS_DIAGRAMS = YES - -# If set to YES, the inheritance and collaboration graphs will hide -# inheritance and usage relations if the target is undocumented -# or is not a class. - -HIDE_UNDOC_RELATIONS = YES - -# If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is -# available from the path. This tool is part of Graphviz, a graph visualization -# toolkit from AT&T and Lucent Bell Labs. The other options in this section -# have no effect if this option is set to NO (the default) - -HAVE_DOT = NO - -# If the CLASS_GRAPH and HAVE_DOT tags are set to YES then doxygen -# will generate a graph for each documented class showing the direct and -# indirect inheritance relations. Setting this tag to YES will force the -# the CLASS_DIAGRAMS tag to NO. - -CLASS_GRAPH = YES - -# If the COLLABORATION_GRAPH and HAVE_DOT tags are set to YES then doxygen -# will generate a graph for each documented class showing the direct and -# indirect implementation dependencies (inheritance, containment, and -# class references variables) of the class with other documented classes. - -COLLABORATION_GRAPH = YES - -# If the GROUP_GRAPHS and HAVE_DOT tags are set to YES then doxygen -# will generate a graph for groups, showing the direct groups dependencies - -GROUP_GRAPHS = YES - -# If the UML_LOOK tag is set to YES doxygen will generate inheritance and -# collaboration diagrams in a style similar to the OMG's Unified Modeling -# Language. - -UML_LOOK = NO - -# If set to YES, the inheritance and collaboration graphs will show the -# relations between templates and their instances. - -TEMPLATE_RELATIONS = NO - -# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDE_GRAPH, and HAVE_DOT -# tags are set to YES then doxygen will generate a graph for each documented -# file showing the direct and indirect include dependencies of the file with -# other documented files. - -INCLUDE_GRAPH = YES - -# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDED_BY_GRAPH, and -# HAVE_DOT tags are set to YES then doxygen will generate a graph for each -# documented header file showing the documented files that directly or -# indirectly include this file. - -INCLUDED_BY_GRAPH = YES - -# If the CALL_GRAPH and HAVE_DOT tags are set to YES then doxygen will -# generate a call dependency graph for every global function or class method. -# Note that enabling this option will significantly increase the time of a run. -# So in most cases it will be better to enable call graphs for selected -# functions only using the \callgraph command. - -CALL_GRAPH = NO - -# If the GRAPHICAL_HIERARCHY and HAVE_DOT tags are set to YES then doxygen -# will graphical hierarchy of all classes instead of a textual one. - -GRAPHICAL_HIERARCHY = YES - -# If the DIRECTORY_GRAPH, SHOW_DIRECTORIES and HAVE_DOT tags are set to YES -# then doxygen will show the dependencies a directory has on other directories -# in a graphical way. The dependency relations are determined by the #include -# relations between the files in the directories. - -DIRECTORY_GRAPH = YES - -# The DOT_IMAGE_FORMAT tag can be used to set the image format of the images -# generated by dot. Possible values are png, jpg, or gif -# If left blank png will be used. - -DOT_IMAGE_FORMAT = png - -# The tag DOT_PATH can be used to specify the path where the dot tool can be -# found. If left blank, it is assumed the dot tool can be found in the path. - -DOT_PATH = - -# The DOTFILE_DIRS tag can be used to specify one or more directories that -# contain dot files that are included in the documentation (see the -# \dotfile command). - -DOTFILE_DIRS = - -# The MAX_DOT_GRAPH_WIDTH tag can be used to set the maximum allowed width -# (in pixels) of the graphs generated by dot. If a graph becomes larger than -# this value, doxygen will try to truncate the graph, so that it fits within -# the specified constraint. Beware that most browsers cannot cope with very -# large images. - -MAX_DOT_GRAPH_WIDTH = 1024 - -# The MAX_DOT_GRAPH_HEIGHT tag can be used to set the maximum allows height -# (in pixels) of the graphs generated by dot. If a graph becomes larger than -# this value, doxygen will try to truncate the graph, so that it fits within -# the specified constraint. Beware that most browsers cannot cope with very -# large images. - -MAX_DOT_GRAPH_HEIGHT = 1024 - -# The MAX_DOT_GRAPH_DEPTH tag can be used to set the maximum depth of the -# graphs generated by dot. A depth value of 3 means that only nodes reachable -# from the root by following a path via at most 3 edges will be shown. Nodes -# that lay further from the root node will be omitted. Note that setting this -# option to 1 or 2 may greatly reduce the computation time needed for large -# code bases. Also note that a graph may be further truncated if the graph's -# image dimensions are not sufficient to fit the graph (see MAX_DOT_GRAPH_WIDTH -# and MAX_DOT_GRAPH_HEIGHT). If 0 is used for the depth value (the default), -# the graph is not depth-constrained. - -MAX_DOT_GRAPH_DEPTH = 0 - -# Set the DOT_TRANSPARENT tag to YES to generate images with a transparent -# background. This is disabled by default, which results in a white background. -# Warning: Depending on the platform used, enabling this option may lead to -# badly anti-aliased labels on the edges of a graph (i.e. they become hard to -# read). - -DOT_TRANSPARENT = NO - -# Set the DOT_MULTI_TARGETS tag to YES allow dot to generate multiple output -# files in one run (i.e. multiple -o and -T options on the command line). This -# makes dot run faster, but since only newer versions of dot (>1.8.10) -# support this, this feature is disabled by default. - -DOT_MULTI_TARGETS = NO - -# If the GENERATE_LEGEND tag is set to YES (the default) Doxygen will -# generate a legend page explaining the meaning of the various boxes and -# arrows in the dot generated graphs. - -GENERATE_LEGEND = YES - -# If the DOT_CLEANUP tag is set to YES (the default) Doxygen will -# remove the intermediate dot files that are used to generate -# the various graphs. - -DOT_CLEANUP = YES - -#--------------------------------------------------------------------------- -# Configuration::additions related to the search engine -#--------------------------------------------------------------------------- - -# The SEARCHENGINE tag specifies whether or not a search engine should be -# used. If set to NO the values of all tags below this one will be ignored. - -SEARCHENGINE = NO http://git-wip-us.apache.org/repos/asf/zookeeper/blob/63aaf0a1/src/contrib/zkfuse/src/event.cc ---------------------------------------------------------------------- diff --git a/src/contrib/zkfuse/src/event.cc b/src/contrib/zkfuse/src/event.cc deleted file mode 100644 index 541657e..0000000 --- a/src/contrib/zkfuse/src/event.cc +++ /dev/null @@ -1,29 +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 "event.h" - -#define LOG_LEVEL LOG_FATAL -#define MODULE_NAME "Event" - -using namespace std; - -namespace zkfuse { - -} /* end of 'namespace zkfuse' */ - http://git-wip-us.apache.org/repos/asf/zookeeper/blob/63aaf0a1/src/contrib/zkfuse/src/event.h ---------------------------------------------------------------------- diff --git a/src/contrib/zkfuse/src/event.h b/src/contrib/zkfuse/src/event.h deleted file mode 100644 index 936ecc6..0000000 --- a/src/contrib/zkfuse/src/event.h +++ /dev/null @@ -1,553 +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 __EVENT_H__ -#define __EVENT_H__ - -#include <string> -#include <set> -#include <deque> -#include <algorithm> -#ifdef GCC4 -# include <tr1/memory> -using namespace std::tr1; -#else -# include <boost/shared_ptr.hpp> -using namespace boost; -#endif - -#include "log.h" -#include "blockingqueue.h" -#include "mutex.h" -#include "thread.h" - -using namespace std; -using namespace zk; - -namespace zkfuse { - -//forward declaration of EventSource -template<typename E> -class EventSource; - -/** - * \brief This interface is implemented by an observer - * \brief of a particular {@link EventSource}. - */ -template<typename E> -class EventListener { - public: - - /** - * \brief This method is invoked whenever an event - * \brief has been received by the event source being observed. - * - * @param source the source the triggered the event - * @param e the actual event being triggered - */ - virtual void eventReceived(const EventSource<E> &source, const E &e) = 0; -}; - -/** - * \brief This class represents a source of events. - * - * <p> - * Each source can have many observers (listeners) attached to it - * and in case of an event, this source may propagate the event - * using {@link #fireEvent} method. - */ -template<typename E> -class EventSource { - public: - - /** - * \brief The type corresponding to the list of registered event listeners. - */ - typedef set<EventListener<E> *> EventListeners; - - /** - * \brief Registers a new event listener. - * - * @param listener the listener to be added to the set of listeners - */ - void addListener(EventListener<E> *listener) { - m_listeners.insert( listener ); - } - - /** - * \brief Removes an already registered listener. - * - * @param listener the listener to be removed - */ - void removeListener(EventListener<E> *listener) { - m_listeners.erase( listener ); - } - - /** - * \brief Destructor. - */ - virtual ~EventSource() {} - - protected: - - /** - * \brief Fires the given event to all registered listeners. - * - * <p> - * This method essentially iterates over all listeners - * and invokes {@link fireEvent(EventListener<E> *listener, const E &event)} - * for each element. All derived classes are free to - * override the method to provide better error handling - * than the default implementation. - * - * @param event the event to be propagated to all listeners - */ - void fireEvent(const E &event); - - /** - * \brief Sends an event to the given listener. - * - * @param listener the listener to whom pass the event - * @param event the event to be handled - */ - virtual void fireEvent(EventListener<E> *listener, const E &event); - - private: - - /** - * The set of registered event listeners. - */ - EventListeners m_listeners; - -}; - -/** - * \brief The interface of a generic event wrapper. - */ -class AbstractEventWrapper { - public: - - /** - * \brief Destructor. - */ - virtual ~AbstractEventWrapper() {} - - /** - * \brief Returns the underlying wrapee's data. - */ - virtual void *getWrapee() = 0; -}; - -/** - * \brief A template based implementation of {@link AbstractEventWrapper}. - */ -template<typename E> -class EventWrapper : public AbstractEventWrapper { - public: - EventWrapper(const E &e) : m_e(e) { - } - void *getWrapee() { - return &m_e; - } - private: - E m_e; -}; - -/** - * \brief This class represents a generic event. - */ -class GenericEvent { - public: - - /** - * \brief Constructor. - */ - GenericEvent() : m_type(0) {} - - /** - * \brief Constructor. - * - * @param type the type of this event - * @param eventWarpper the wrapper around event's data - */ - GenericEvent(int type, AbstractEventWrapper *eventWrapper) : - m_type(type), m_eventWrapper(eventWrapper) { - } - - /** - * \brief Returns the type of this event. - * - * @return type of this event - */ - int getType() const { return m_type; } - - /** - * \brief Returns the event's data. - * - * @return the event's data - */ - void *getEvent() const { return m_eventWrapper->getWrapee(); } - - private: - - /** - * The event type. - */ - int m_type; - - /** - * The event represented as abstract wrapper. - */ - boost::shared_ptr<AbstractEventWrapper> m_eventWrapper; - -}; - -/** - * \brief This class adapts {@link EventListener} to a generic listener. - * Essentially this class listens on incoming events and fires them - * as {@link GenericEvent}s. - */ -template<typename E, const int type> -class EventListenerAdapter : public virtual EventListener<E>, - public virtual EventSource<GenericEvent> -{ - public: - - /** - * \brief Constructor. - * - * @param eventSource the source on which register this listener - */ - EventListenerAdapter(EventSource<E> &eventSource) { - eventSource.addListener(this); - } - - void eventReceived(const EventSource<E> &source, const E &e) { - AbstractEventWrapper *wrapper = new EventWrapper<E>(e); - GenericEvent event(type, wrapper); - fireEvent( event ); - } - -}; - -/** - * \brief This class provides an adapter between an asynchronous and synchronous - * \brief event handling. - * - * <p> - * This class queues up all received events and exposes them through - * {@link #getNextEvent()} method. - */ -template<typename E> -class SynchronousEventAdapter : public EventListener<E> { - public: - - void eventReceived(const EventSource<E> &source, const E &e) { - m_queue.put( e ); - } - - /** - * \brief Returns the next available event from the underlying queue, - * \brief possibly blocking, if no data is available. - * - * @return the next available event - */ - E getNextEvent() { - return m_queue.take(); - } - - /** - * \brief Returns whether there are any events in the queue or not. - * - * @return true if there is at least one event and - * the next call to {@link #getNextEvent} won't block - */ - bool hasEvents() const { - return (m_queue.empty() ? false : true); - } - - /** - * \brief Destructor. - */ - virtual ~SynchronousEventAdapter() {} - - private: - - /** - * The blocking queue of all events received so far. - */ - BlockingQueue<E> m_queue; - -}; - -/** - * This typedef defines the type of a timer Id. - */ -typedef int32_t TimerId; - -/** - * This class represents a timer event parametrized by the user's data type. - */ -template<typename T> -class TimerEvent { - public: - - /** - * \brief Constructor. - * - * @param id the ID of this event - * @param alarmTime when this event is to be triggered - * @param userData the user data associated with this event - */ - TimerEvent(TimerId id, int64_t alarmTime, const T &userData) : - m_id(id), m_alarmTime(alarmTime), m_userData(userData) - {} - - /** - * \brief Constructor. - */ - TimerEvent() : m_id(-1), m_alarmTime(-1) {} - - /** - * \brief Returns the ID. - * - * @return the ID of this event - */ - TimerId getID() const { return m_id; } - - /** - * \brief Returns the alarm time. - * - * @return the alarm time - */ - int64_t getAlarmTime() const { return m_alarmTime; } - - /** - * \brief Returns the user's data. - * - * @return the user's data - */ - T const &getUserData() const { return m_userData; } - - /** - * \brief Returns whether the given alarm time is less than this event's - * \brief time. - */ - bool operator<(const int64_t alarmTime) const { - return m_alarmTime < alarmTime; - } - - private: - - /** - * The ID of ths event. - */ - TimerId m_id; - - /** - * The time at which this event triggers. - */ - int64_t m_alarmTime; - - /** - * The user specific data associated with this event. - */ - T m_userData; - -}; - -template<typename T> -class Timer : public EventSource<TimerEvent<T> > { - public: - - /** - * \brief Constructor. - */ - Timer() : m_currentEventID(0), m_terminating(false) { - m_workerThread.Create( *this, &Timer<T>::sendAlarms ); - } - - /** - * \brief Destructor. - */ - ~Timer() { - m_terminating = true; - m_lock.notify(); - m_workerThread.Join(); - } - - /** - * \brief Schedules the given event <code>timeFromNow</code> milliseconds. - * - * @param timeFromNow time from now, in milliseconds, when the event - * should be triggered - * @param userData the user data associated with the timer event - * - * @return the ID of the newly created timer event - */ - TimerId scheduleAfter(int64_t timeFromNow, const T &userData) { - return scheduleAt( getCurrentTimeMillis() + timeFromNow, userData ); - } - - /** - * \brief Schedules an event at the given time. - * - * @param absTime absolute time, in milliseconds, at which the event - * should be triggered; the time is measured - * from Jan 1st, 1970 - * @param userData the user data associated with the timer event - * - * @return the ID of the newly created timer event - */ - TimerId scheduleAt(int64_t absTime, const T &userData) { - m_lock.lock(); - typename QueueType::iterator pos = - lower_bound( m_queue.begin(), m_queue.end(), absTime ); - TimerId id = m_currentEventID++; - TimerEvent<T> event(id, absTime, userData); - m_queue.insert( pos, event ); - m_lock.notify(); - m_lock.unlock(); - return id; - } - - /** - * \brief Returns the current time since Jan 1, 1970, in milliseconds. - * - * @return the current time in milliseconds - */ - static int64_t getCurrentTimeMillis() { - struct timeval now; - gettimeofday( &now, NULL ); - return now.tv_sec * 1000LL + now.tv_usec / 1000; - } - - /** - * \brief Cancels the given timer event. - * - * - * @param eventID the ID of the event to be canceled - * - * @return whether the event has been canceled - */ - bool cancelAlarm(TimerId eventID) { - bool canceled = false; - m_lock.lock(); - typename QueueType::iterator i; - for (i = m_queue.begin(); i != m_queue.end(); ++i) { - if (eventID == i->getID()) { - m_queue.erase( i ); - canceled = true; - break; - } - } - m_lock.unlock(); - return canceled; - } - - /** - * Executes the main loop of the worker thread. - */ - void sendAlarms() { - //iterate until terminating - while (!m_terminating) { - m_lock.lock(); - //1 step - wait until there is an event in the queue - if (m_queue.empty()) { - //wait up to 100ms to get next event - m_lock.wait( 100 ); - } - bool fire = false; - if (!m_queue.empty()) { - //retrieve the event from the queue and send it - TimerEvent<T> event = m_queue.front(); - //check whether we can send it right away - int64_t timeToWait = - event.getAlarmTime() - getCurrentTimeMillis(); - if (timeToWait <= 0) { - m_queue.pop_front(); - //we fire only if it's still in the queue and alarm - //time has just elapsed (in case the top event - //is canceled) - fire = true; - } else { - m_lock.wait( timeToWait ); - } - m_lock.unlock(); - if (fire) { - fireEvent( event ); - } - } else { - m_lock.unlock(); - } - } - } - - private: - - /** - * The type of timer events queue. - */ - typedef deque<TimerEvent<T> > QueueType; - - /** - * The current event ID, auto-incremented each time a new event - * is created. - */ - TimerId m_currentEventID; - - /** - * The queue of timer events sorted by {@link TimerEvent#alarmTime}. - */ - QueueType m_queue; - - /** - * The lock used to guard {@link #m_queue}. - */ - Lock m_lock; - - /** - * The thread that triggers alarms. - */ - CXXThread<Timer<T> > m_workerThread; - - /** - * Whether {@link #m_workerThread} is terminating. - */ - volatile bool m_terminating; - -}; - -template<typename E> -void EventSource<E>::fireEvent(const E &event) { - for (typename EventListeners::iterator i = m_listeners.begin(); - i != m_listeners.end(); - ++i) - { - fireEvent( *i, event ); - } -} - -template<typename E> -void EventSource<E>::fireEvent(EventListener<E> *listener, const E &event) { - listener->eventReceived( *this, event ); -} - -} /* end of 'namespace zkfuse' */ - -#endif /* __EVENT_H__ */ http://git-wip-us.apache.org/repos/asf/zookeeper/blob/63aaf0a1/src/contrib/zkfuse/src/log.cc ---------------------------------------------------------------------- diff --git a/src/contrib/zkfuse/src/log.cc b/src/contrib/zkfuse/src/log.cc deleted file mode 100644 index e2bfb0d..0000000 --- a/src/contrib/zkfuse/src/log.cc +++ /dev/null @@ -1,36 +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 <string> - -#include "log.h" - -using namespace std; - -/** - * \brief This class encapsulates a log4cxx configuration. - */ -class LogConfiguration { - public: - LogConfiguration(const string &file) { - PropertyConfigurator::configureAndWatch( file, 5000 ); - } -}; - -//enforces the configuration to be initialized -static LogConfiguration logConfig( "log4cxx.properties" );
