[med-svn] [Git][med-team/libmaus2][upstream] New upstream version 2.0.657

Andreas Tille gitlab at salsa.debian.org
Mon Aug 19 19:21:28 BST 2019



Andreas Tille pushed to branch upstream at Debian Med / libmaus2


Commits:
f9353a7e by Andreas Tille at 2019-08-19T16:17:20Z
New upstream version 2.0.657
- - - - -


29 changed files:

- ChangeLog
- autom4te.cache/output.0
- autom4te.cache/output.1
- autom4te.cache/output.2
- autom4te.cache/requests
- autom4te.cache/traces.1
- configure
- configure.ac
- src/Makefile.am
- src/Makefile.in
- src/libmaus2/aio/TempFileArray.hpp
- src/libmaus2/autoarray/AutoArray.hpp
- src/libmaus2/bambam/ReadEndsBlockIndexSet.hpp
- src/libmaus2/bambam/parallel/BlockSortControl.hpp
- src/libmaus2/bambam/parallel/FragReadEndsMergeWorkPackage.hpp
- src/libmaus2/bambam/parallel/FragReadEndsMergeWorkPackageDispatcher.hpp
- src/libmaus2/bambam/parallel/PairReadEndsMergeWorkPackage.hpp
- src/libmaus2/bambam/parallel/PairReadEndsMergeWorkPackageDispatcher.hpp
- + src/libmaus2/network/ClientSocket.hpp
- src/libmaus2/network/FtpSocket.hpp
- src/libmaus2/network/GnuTLSSocket.hpp
- src/libmaus2/network/HttpHeader.hpp
- + src/libmaus2/network/ServerSocket.hpp
- src/libmaus2/network/Socket.hpp → src/libmaus2/network/SocketBase.hpp
- src/libmaus2/network/SocketInputStreamBuffer.hpp
- src/libmaus2/rank/ImpCacheLineRank.hpp
- src/libmaus2/suffixsort/SkewSuffixSort.hpp
- src/test/testfqbgzf.cpp
- src/test/testparallelbamblocksort.cpp


Changes:

=====================================
ChangeLog
=====================================
@@ -1,3 +1,29 @@
+libmaus2 (2.0.657-1) unstable; urgency=medium
+
+  * allow limiting parallelism in fragment merging of BlockSortControl (implicitely reduces number of open files)
+
+ -- German Tischler-Höhle <germant at miltenyibiotec.de>  Mon, 19 Aug 2019 14:29:09 +0200
+
+libmaus2 (2.0.656-1) unstable; urgency=medium
+
+  * refactoring socket classes
+  * refactor and guard against interupted system calls in Socket.hpp
+
+ -- German Tischler-Höhle <germant at miltenyibiotec.de>  Fri, 16 Aug 2019 10:54:29 +0200
+
+libmaus2 (2.0.655-1) unstable; urgency=medium
+
+  * refactor AutoArray and avoid mismatching alloc/dealloc pairs (do not deallocate memory allocated through new [] using free)
+
+ -- German Tischler-Höhle <germant at miltenyibiotec.de>  Thu, 15 Aug 2019 21:20:31 +0200
+
+libmaus2 (2.0.654-1) unstable; urgency=medium
+
+  * remove extraneous include directive in SkewSuffixSort
+  * add missing include directive in TempFileArray
+
+ -- German Tischler-Höhle <germant at miltenyibiotec.de>  Tue, 13 Aug 2019 15:58:13 +0200
+
 libmaus2 (2.0.653-1) unstable; urgency=medium
 
   * add getNextReferenceLength/getNextFrontDel/getNextReferenceInterval in BamAlignmentDecoderBase/BamAlignment


=====================================
autom4te.cache/output.0
=====================================
@@ -1,6 +1,6 @@
 @%:@! /bin/sh
 @%:@ Guess values for system-dependent variables and create Makefiles.
-@%:@ Generated by GNU Autoconf 2.69 for libmaus2 2.0.652.
+@%:@ Generated by GNU Autoconf 2.69 for libmaus2 2.0.656.
 @%:@
 @%:@ Report bugs to <tischler at mpi-cbg.de>.
 @%:@ 
@@ -590,8 +590,8 @@ MAKEFLAGS=
 # Identity of this package.
 PACKAGE_NAME='libmaus2'
 PACKAGE_TARNAME='libmaus2'
-PACKAGE_VERSION='2.0.652'
-PACKAGE_STRING='libmaus2 2.0.652'
+PACKAGE_VERSION='2.0.656'
+PACKAGE_STRING='libmaus2 2.0.656'
 PACKAGE_BUGREPORT='tischler at mpi-cbg.de'
 PACKAGE_URL='https://github.com/gt1/libmaus2'
 
@@ -1609,7 +1609,7 @@ if test "$ac_init_help" = "long"; then
   # Omit some internal or obsolete options to make the list less imposing.
   # This message is too long to be a string in the A/UX 3.1 sh.
   cat <<_ACEOF
-\`configure' configures libmaus2 2.0.652 to adapt to many kinds of systems.
+\`configure' configures libmaus2 2.0.656 to adapt to many kinds of systems.
 
 Usage: $0 [OPTION]... [VAR=VALUE]...
 
@@ -1681,7 +1681,7 @@ fi
 
 if test -n "$ac_init_help"; then
   case $ac_init_help in
-     short | recursive ) echo "Configuration of libmaus2 2.0.652:";;
+     short | recursive ) echo "Configuration of libmaus2 2.0.656:";;
    esac
   cat <<\_ACEOF
 
@@ -1851,7 +1851,7 @@ fi
 test -n "$ac_init_help" && exit $ac_status
 if $ac_init_version; then
   cat <<\_ACEOF
-libmaus2 configure 2.0.652
+libmaus2 configure 2.0.656
 generated by GNU Autoconf 2.69
 
 Copyright (C) 2012 Free Software Foundation, Inc.
@@ -2724,7 +2724,7 @@ cat >config.log <<_ACEOF
 This file contains any messages produced by compilers while
 running configure, to aid debugging if configure makes a mistake.
 
-It was created by libmaus2 $as_me 2.0.652, which was
+It was created by libmaus2 $as_me 2.0.656, which was
 generated by GNU Autoconf 2.69.  Invocation command line was
 
   $ $0 $@
@@ -3072,7 +3072,7 @@ ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $
 ac_compiler_gnu=$ac_cv_c_compiler_gnu
 
 
-LIBRARY_VERSION=2:652:0
+LIBRARY_VERSION=2:656:0
 { $as_echo "$as_me:${as_lineno-$LINENO}: Configuring for source in directory ${srcdir}" >&5
 $as_echo "$as_me: Configuring for source in directory ${srcdir}" >&6;}
 ac_aux_dir=
@@ -12628,7 +12628,7 @@ fi
 
 # Define the identity of the package.
  PACKAGE='libmaus2'
- VERSION='2.0.652'
+ VERSION='2.0.656'
 
 
 cat >>confdefs.h <<_ACEOF
@@ -28157,7 +28157,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
 # report actual input values of CONFIG_FILES etc. instead of their
 # values after options handling.
 ac_log="
-This file was extended by libmaus2 $as_me 2.0.652, which was
+This file was extended by libmaus2 $as_me 2.0.656, which was
 generated by GNU Autoconf 2.69.  Invocation command line was
 
   CONFIG_FILES    = $CONFIG_FILES
@@ -28224,7 +28224,7 @@ _ACEOF
 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
 ac_cs_version="\\
-libmaus2 config.status 2.0.652
+libmaus2 config.status 2.0.656
 configured by $0, generated by GNU Autoconf 2.69,
   with options \\"\$ac_cs_config\\"
 


=====================================
autom4te.cache/output.1
=====================================
@@ -1,6 +1,6 @@
 @%:@! /bin/sh
 @%:@ Guess values for system-dependent variables and create Makefiles.
-@%:@ Generated by GNU Autoconf 2.69 for libmaus2 2.0.653.
+@%:@ Generated by GNU Autoconf 2.69 for libmaus2 2.0.657.
 @%:@
 @%:@ Report bugs to <tischler at mpi-cbg.de>.
 @%:@ 
@@ -590,8 +590,8 @@ MAKEFLAGS=
 # Identity of this package.
 PACKAGE_NAME='libmaus2'
 PACKAGE_TARNAME='libmaus2'
-PACKAGE_VERSION='2.0.653'
-PACKAGE_STRING='libmaus2 2.0.653'
+PACKAGE_VERSION='2.0.657'
+PACKAGE_STRING='libmaus2 2.0.657'
 PACKAGE_BUGREPORT='tischler at mpi-cbg.de'
 PACKAGE_URL='https://github.com/gt1/libmaus2'
 
@@ -1609,7 +1609,7 @@ if test "$ac_init_help" = "long"; then
   # Omit some internal or obsolete options to make the list less imposing.
   # This message is too long to be a string in the A/UX 3.1 sh.
   cat <<_ACEOF
-\`configure' configures libmaus2 2.0.653 to adapt to many kinds of systems.
+\`configure' configures libmaus2 2.0.657 to adapt to many kinds of systems.
 
 Usage: $0 [OPTION]... [VAR=VALUE]...
 
@@ -1681,7 +1681,7 @@ fi
 
 if test -n "$ac_init_help"; then
   case $ac_init_help in
-     short | recursive ) echo "Configuration of libmaus2 2.0.653:";;
+     short | recursive ) echo "Configuration of libmaus2 2.0.657:";;
    esac
   cat <<\_ACEOF
 
@@ -1851,7 +1851,7 @@ fi
 test -n "$ac_init_help" && exit $ac_status
 if $ac_init_version; then
   cat <<\_ACEOF
-libmaus2 configure 2.0.653
+libmaus2 configure 2.0.657
 generated by GNU Autoconf 2.69
 
 Copyright (C) 2012 Free Software Foundation, Inc.
@@ -2724,7 +2724,7 @@ cat >config.log <<_ACEOF
 This file contains any messages produced by compilers while
 running configure, to aid debugging if configure makes a mistake.
 
-It was created by libmaus2 $as_me 2.0.653, which was
+It was created by libmaus2 $as_me 2.0.657, which was
 generated by GNU Autoconf 2.69.  Invocation command line was
 
   $ $0 $@
@@ -3072,7 +3072,7 @@ ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $
 ac_compiler_gnu=$ac_cv_c_compiler_gnu
 
 
-LIBRARY_VERSION=2:653:0
+LIBRARY_VERSION=2:657:0
 { $as_echo "$as_me:${as_lineno-$LINENO}: Configuring for source in directory ${srcdir}" >&5
 $as_echo "$as_me: Configuring for source in directory ${srcdir}" >&6;}
 ac_aux_dir=
@@ -12628,7 +12628,7 @@ fi
 
 # Define the identity of the package.
  PACKAGE='libmaus2'
- VERSION='2.0.653'
+ VERSION='2.0.657'
 
 
 cat >>confdefs.h <<_ACEOF
@@ -28157,7 +28157,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
 # report actual input values of CONFIG_FILES etc. instead of their
 # values after options handling.
 ac_log="
-This file was extended by libmaus2 $as_me 2.0.653, which was
+This file was extended by libmaus2 $as_me 2.0.657, which was
 generated by GNU Autoconf 2.69.  Invocation command line was
 
   CONFIG_FILES    = $CONFIG_FILES
@@ -28224,7 +28224,7 @@ _ACEOF
 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
 ac_cs_version="\\
-libmaus2 config.status 2.0.653
+libmaus2 config.status 2.0.657
 configured by $0, generated by GNU Autoconf 2.69,
   with options \\"\$ac_cs_config\\"
 


=====================================
autom4te.cache/output.2
=====================================
@@ -1,6 +1,6 @@
 @%:@! /bin/sh
 @%:@ Guess values for system-dependent variables and create Makefiles.
-@%:@ Generated by GNU Autoconf 2.69 for libmaus2 2.0.653.
+@%:@ Generated by GNU Autoconf 2.69 for libmaus2 2.0.657.
 @%:@
 @%:@ Report bugs to <tischler at mpi-cbg.de>.
 @%:@ 
@@ -590,8 +590,8 @@ MAKEFLAGS=
 # Identity of this package.
 PACKAGE_NAME='libmaus2'
 PACKAGE_TARNAME='libmaus2'
-PACKAGE_VERSION='2.0.653'
-PACKAGE_STRING='libmaus2 2.0.653'
+PACKAGE_VERSION='2.0.657'
+PACKAGE_STRING='libmaus2 2.0.657'
 PACKAGE_BUGREPORT='tischler at mpi-cbg.de'
 PACKAGE_URL='https://github.com/gt1/libmaus2'
 
@@ -1609,7 +1609,7 @@ if test "$ac_init_help" = "long"; then
   # Omit some internal or obsolete options to make the list less imposing.
   # This message is too long to be a string in the A/UX 3.1 sh.
   cat <<_ACEOF
-\`configure' configures libmaus2 2.0.653 to adapt to many kinds of systems.
+\`configure' configures libmaus2 2.0.657 to adapt to many kinds of systems.
 
 Usage: $0 [OPTION]... [VAR=VALUE]...
 
@@ -1681,7 +1681,7 @@ fi
 
 if test -n "$ac_init_help"; then
   case $ac_init_help in
-     short | recursive ) echo "Configuration of libmaus2 2.0.653:";;
+     short | recursive ) echo "Configuration of libmaus2 2.0.657:";;
    esac
   cat <<\_ACEOF
 
@@ -1851,7 +1851,7 @@ fi
 test -n "$ac_init_help" && exit $ac_status
 if $ac_init_version; then
   cat <<\_ACEOF
-libmaus2 configure 2.0.653
+libmaus2 configure 2.0.657
 generated by GNU Autoconf 2.69
 
 Copyright (C) 2012 Free Software Foundation, Inc.
@@ -2724,7 +2724,7 @@ cat >config.log <<_ACEOF
 This file contains any messages produced by compilers while
 running configure, to aid debugging if configure makes a mistake.
 
-It was created by libmaus2 $as_me 2.0.653, which was
+It was created by libmaus2 $as_me 2.0.657, which was
 generated by GNU Autoconf 2.69.  Invocation command line was
 
   $ $0 $@
@@ -3072,7 +3072,7 @@ ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $
 ac_compiler_gnu=$ac_cv_c_compiler_gnu
 
 
-LIBRARY_VERSION=2:653:0
+LIBRARY_VERSION=2:657:0
 { $as_echo "$as_me:${as_lineno-$LINENO}: Configuring for source in directory ${srcdir}" >&5
 $as_echo "$as_me: Configuring for source in directory ${srcdir}" >&6;}
 ac_aux_dir=
@@ -12628,7 +12628,7 @@ fi
 
 # Define the identity of the package.
  PACKAGE='libmaus2'
- VERSION='2.0.653'
+ VERSION='2.0.657'
 
 
 cat >>confdefs.h <<_ACEOF
@@ -28157,7 +28157,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
 # report actual input values of CONFIG_FILES etc. instead of their
 # values after options handling.
 ac_log="
-This file was extended by libmaus2 $as_me 2.0.653, which was
+This file was extended by libmaus2 $as_me 2.0.657, which was
 generated by GNU Autoconf 2.69.  Invocation command line was
 
   CONFIG_FILES    = $CONFIG_FILES
@@ -28224,7 +28224,7 @@ _ACEOF
 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
 ac_cs_version="\\
-libmaus2 config.status 2.0.653
+libmaus2 config.status 2.0.657
 configured by $0, generated by GNU Autoconf 2.69,
   with options \\"\$ac_cs_config\\"
 


=====================================
autom4te.cache/requests
=====================================
@@ -44,198 +44,198 @@
                         'configure.ac'
                       ],
                       {
-                        '_LT_AC_LOCK' => 1,
-                        'AM_SET_LEADING_DOT' => 1,
-                        'LT_OUTPUT' => 1,
-                        '_LTDL_SETUP' => 1,
-                        'AM_AUX_DIR_EXPAND' => 1,
-                        'AC_DISABLE_STATIC' => 1,
+                        'PKG_CHECK_VAR' => 1,
+                        'AM_SANITY_CHECK' => 1,
+                        '_LT_AC_LANG_F77_CONFIG' => 1,
+                        'AM_RUN_LOG' => 1,
+                        'AC_LIBTOOL_PROG_LD_SHLIBS' => 1,
+                        'AC_LTDL_DLSYM_USCORE' => 1,
+                        'LT_SYS_SYMBOL_USCORE' => 1,
                         'AC_ENABLE_STATIC' => 1,
-                        'AC_PATH_TOOL_PREFIX' => 1,
+                        'LTVERSION_VERSION' => 1,
                         'AM_ENABLE_STATIC' => 1,
-                        '_LT_AC_PROG_CXXCPP' => 1,
-                        '_LT_LIBOBJ' => 1,
-                        '_m4_warn' => 1,
-                        'AM_PROG_CC_C_O' => 1,
-                        'AM_PROG_LIBTOOL' => 1,
-                        '_LT_AC_LANG_GCJ_CONFIG' => 1,
-                        'LT_LIB_DLLOAD' => 1,
-                        'AM_PROG_LD' => 1,
-                        'LT_PROG_GCJ' => 1,
-                        'AC_PATH_MAGIC' => 1,
-                        'AC_LIBTOOL_LANG_CXX_CONFIG' => 1,
-                        '_LT_AC_LANG_C_CONFIG' => 1,
-                        'AC_PROG_LD_GNU' => 1,
-                        '_LT_AC_LANG_GCJ' => 1,
-                        'AC_CHECK_LIBM' => 1,
-                        'AC_DISABLE_SHARED' => 1,
-                        '_AM_CONFIG_MACRO_DIRS' => 1,
-                        'LT_PROG_GO' => 1,
-                        'AM_RUN_LOG' => 1,
-                        'AC_LTDL_PREOPEN' => 1,
-                        '_LT_AC_PROG_ECHO_BACKSLASH' => 1,
+                        'AC_LIBTOOL_PROG_COMPILER_NO_RTTI' => 1,
                         'AM_PROG_CC_STDC' => 1,
-                        'AC_LIBTOOL_SYS_LIB_STRIP' => 1,
-                        '_LT_AC_TRY_DLOPEN_SELF' => 1,
-                        'AC_LIBTOOL_GCJ' => 1,
-                        'AC_LIBLTDL_CONVENIENCE' => 1,
-                        'AC_PROG_NM' => 1,
-                        'AM_DISABLE_STATIC' => 1,
-                        'AC_LIBTOOL_SYS_DYNAMIC_LINKER' => 1,
+                        '_AM_OUTPUT_DEPENDENCY_COMMANDS' => 1,
+                        'fp_C_PROTOTYPES' => 1,
+                        'PKG_INSTALLDIR' => 1,
+                        'AC_LIB_LTDL' => 1,
+                        '_LT_DLL_DEF_P' => 1,
+                        'LTDL_INIT' => 1,
+                        '_LT_COMPILER_OPTION' => 1,
+                        'LT_SYS_DLSEARCH_PATH' => 1,
+                        'AC_LTDL_SHLIBPATH' => 1,
+                        'AM_ENABLE_SHARED' => 1,
+                        'AM_CONDITIONAL' => 1,
                         'AM_MISSING_HAS_RUN' => 1,
-                        'AC_CONFIG_MACRO_DIR' => 1,
-                        'AM_C_PROTOTYPES' => 1,
-                        'AC_LIBTOOL_SYS_MAX_CMD_LEN' => 1,
-                        'LTOBSOLETE_VERSION' => 1,
-                        'AC_ENABLE_SHARED' => 1,
-                        '_LT_PROG_ECHO_BACKSLASH' => 1,
-                        'AC_PROG_LD_RELOAD_FLAG' => 1,
+                        'AC_LIBTOOL_FC' => 1,
+                        'PKG_PROG_PKG_CONFIG' => 1,
+                        'LT_INIT' => 1,
+                        'LT_SUPPORTED_TAG' => 1,
                         'AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH' => 1,
-                        'LTVERSION_VERSION' => 1,
-                        '_LT_COMPILER_BOILERPLATE' => 1,
-                        '_LT_PROG_F77' => 1,
-                        'AC_CONFIG_MACRO_DIR_TRACE' => 1,
-                        '_LT_AC_LANG_RC_CONFIG' => 1,
-                        'LT_PATH_NM' => 1,
-                        'AC_LIBTOOL_CONFIG' => 1,
-                        'AC_LIBTOOL_PROG_COMPILER_PIC' => 1,
-                        'm4_pattern_allow' => 1,
-                        '_LT_REQUIRED_DARWIN_CHECKS' => 1,
-                        '_LT_AC_LANG_CXX' => 1,
-                        '_LT_PREPARE_SED_QUOTE_VARS' => 1,
-                        'PKG_CHECK_EXISTS' => 1,
-                        'AC_DEPLIBS_CHECK_METHOD' => 1,
-                        'AC_LIBTOOL_LANG_C_CONFIG' => 1,
-                        'LTDL_INIT' => 1,
-                        'LT_SYS_DLOPEN_DEPLIBS' => 1,
-                        'LT_FUNC_DLSYM_USCORE' => 1,
-                        'AC_PROG_LD' => 1,
-                        'AM_DISABLE_SHARED' => 1,
-                        'AC_LIBTOOL_PROG_CC_C_O' => 1,
+                        'include' => 1,
                         '_AM_PROG_TAR' => 1,
-                        'PKG_INSTALLDIR' => 1,
-                        '_LT_PROG_CXX' => 1,
-                        '_AC_AM_CONFIG_HEADER_HOOK' => 1,
-                        'LT_INIT' => 1,
+                        'AC_LIBTOOL_RC' => 1,
+                        'AC_PROG_LD' => 1,
+                        '_LT_LIBOBJ' => 1,
+                        '_LT_PREPARE_SED_QUOTE_VARS' => 1,
                         'LT_FUNC_ARGZ' => 1,
+                        'PKG_CHECK_MODULES' => 1,
                         'AC_LIBTOOL_COMPILER_OPTION' => 1,
-                        '_LT_AC_SYS_COMPILER' => 1,
-                        'LTDL_INSTALLABLE' => 1,
+                        'LT_WITH_LTDL' => 1,
+                        'AC_LIBTOOL_DLOPEN' => 1,
+                        'AM_DISABLE_SHARED' => 1,
+                        '_LT_AC_LANG_C_CONFIG' => 1,
+                        'AC_DISABLE_SHARED' => 1,
+                        'AC_LIBTOOL_SYS_OLD_ARCHIVE' => 1,
+                        'm4_include' => 1,
+                        'LTSUGAR_VERSION' => 1,
+                        'AM_PROG_LIBTOOL' => 1,
+                        'PKG_CHECK_MODULES_STATIC' => 1,
+                        'AM_OUTPUT_DEPENDENCY_COMMANDS' => 1,
+                        'LT_LIB_M' => 1,
+                        'AM_PROG_CC_C_O' => 1,
                         '_AC_PROG_LIBTOOL' => 1,
-                        '_LT_AC_LANG_F77_CONFIG' => 1,
-                        'm4_pattern_forbid' => 1,
-                        'AC_LIBTOOL_WIN32_DLL' => 1,
-                        'AM_PROG_INSTALL_SH' => 1,
+                        '_LT_AC_FILE_LTDLL_C' => 1,
+                        'AM_SET_DEPDIR' => 1,
+                        'AM_SUBST_NOTMAKE' => 1,
                         '_LT_CC_BASENAME' => 1,
-                        'AC_LTDL_DLSYM_USCORE' => 1,
-                        'PKG_PROG_PKG_CONFIG' => 1,
-                        '_AM_DEPENDENCIES' => 1,
                         'AC_LIBTOOL_F77' => 1,
-                        'AC_LTDL_SHLIBEXT' => 1,
-                        '_AM_SET_OPTION' => 1,
-                        'AC_LTDL_OBJDIR' => 1,
-                        'AC_LIBTOOL_PROG_LD_SHLIBS' => 1,
-                        'AC_LIBTOOL_LINKER_OPTION' => 1,
-                        'LT_AC_PROG_SED' => 1,
-                        'AC_LTDL_DLLIB' => 1,
-                        '_LT_AC_SHELL_INIT' => 1,
-                        'LTOPTIONS_VERSION' => 1,
-                        '_LT_LINKER_BOILERPLATE' => 1,
-                        'AM_MAKE_INCLUDE' => 1,
+                        '_LT_PROG_CXX' => 1,
+                        'AC_LTDL_SYSSEARCHPATH' => 1,
                         'AC_PROG_LIBTOOL' => 1,
-                        'LT_AC_PROG_GCJ' => 1,
-                        'AC_PROG_EGREP' => 1,
-                        '_AM_SET_OPTIONS' => 1,
-                        'AC_LIBTOOL_PICMODE' => 1,
-                        'LT_AC_PROG_RC' => 1,
-                        'LT_CMD_MAX_LEN' => 1,
-                        'AC_LIBTOOL_LANG_F77_CONFIG' => 1,
-                        '_LT_AC_LANG_CXX_CONFIG' => 1,
-                        '_LT_PROG_LTMAIN' => 1,
-                        '_AM_PROG_CC_C_O' => 1,
-                        'include' => 1,
-                        'AC_LIBTOOL_LANG_RC_CONFIG' => 1,
-                        'AC_LIBTOOL_DLOPEN_SELF' => 1,
-                        'AM_AUTOMAKE_VERSION' => 1,
-                        'LT_SUPPORTED_TAG' => 1,
-                        'AX_OPENMP' => 1,
-                        'AM_SUBST_NOTMAKE' => 1,
-                        'AC_LIBLTDL_INSTALLABLE' => 1,
+                        '_LT_AC_LANG_GCJ' => 1,
+                        'AC_PROG_NM' => 1,
+                        '_LT_WITH_SYSROOT' => 1,
+                        'AC_DISABLE_STATIC' => 1,
+                        'AC_DEPLIBS_CHECK_METHOD' => 1,
+                        'AC_LIBTOOL_WIN32_DLL' => 1,
+                        '_AM_DEPENDENCIES' => 1,
+                        'AM_PROG_INSTALL_STRIP' => 1,
+                        'AC_LIBTOOL_CXX' => 1,
+                        '_AC_AM_CONFIG_HEADER_HOOK' => 1,
+                        'LT_PROG_GCJ' => 1,
+                        'AC_LIBTOOL_GCJ' => 1,
+                        '_LT_LINKER_OPTION' => 1,
+                        '_LT_AC_LOCK' => 1,
+                        'LTOBSOLETE_VERSION' => 1,
+                        'AC_LTDL_OBJDIR' => 1,
+                        'AM_SILENT_RULES' => 1,
                         'AM_PROG_NM' => 1,
-                        'PKG_CHECK_VAR' => 1,
-                        'AM_CONDITIONAL' => 1,
-                        '_LT_PROG_FC' => 1,
+                        'AC_ENABLE_FAST_INSTALL' => 1,
+                        '_LT_PROG_ECHO_BACKSLASH' => 1,
+                        '_LT_AC_LANG_GCJ_CONFIG' => 1,
                         'AC_LIBTOOL_POSTDEP_PREDEP' => 1,
-                        '_LT_AC_TAGVAR' => 1,
-                        'LT_SYS_SYMBOL_USCORE' => 1,
-                        'LT_WITH_LTDL' => 1,
-                        'AM_SILENT_RULES' => 1,
-                        'fp_C_PROTOTYPES' => 1,
+                        '_AM_SET_OPTION' => 1,
+                        '_LT_PROG_FC' => 1,
+                        '_LT_AC_SHELL_INIT' => 1,
+                        '_LT_REQUIRED_DARWIN_CHECKS' => 1,
+                        'LT_FUNC_DLSYM_USCORE' => 1,
+                        'AM_C_PROTOTYPES' => 1,
                         'AM_MISSING_PROG' => 1,
-                        'PKG_CHECK_MODULES' => 1,
-                        '_LT_DLL_DEF_P' => 1,
-                        'AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE' => 1,
-                        'LT_LIB_M' => 1,
-                        'AM_OUTPUT_DEPENDENCY_COMMANDS' => 1,
-                        'LT_AC_PROG_EGREP' => 1,
-                        'AM_SANITY_CHECK' => 1,
-                        '_LT_AC_CHECK_DLFCN' => 1,
-                        '_LT_AC_LANG_F77' => 1,
-                        'AC_LIBTOOL_SYS_HARD_LINK_LOCKS' => 1,
-                        'AM_ENABLE_SHARED' => 1,
-                        'AC_LTDL_SYSSEARCHPATH' => 1,
-                        '_AM_IF_OPTION' => 1,
-                        'AM_PROG_INSTALL_STRIP' => 1,
                         'LT_PROG_RC' => 1,
-                        'AC_LTDL_SHLIBPATH' => 1,
-                        '_LT_AC_SYS_LIBPATH_AIX' => 1,
-                        '_PKG_SHORT_ERRORS_SUPPORTED' => 1,
-                        'AC_DEFUN_ONCE' => 1,
-                        'LT_PATH_LD' => 1,
-                        'AC_LIBTOOL_FC' => 1,
-                        'AC_LIBTOOL_PROG_COMPILER_NO_RTTI' => 1,
+                        '_LT_AC_LANG_CXX_CONFIG' => 1,
+                        'AC_PATH_MAGIC' => 1,
+                        'AC_LIBTOOL_SYS_LIB_STRIP' => 1,
+                        'LT_SYS_DLOPEN_SELF' => 1,
+                        'AC_PROG_EGREP' => 1,
+                        '_LT_AC_TAGVAR' => 1,
                         '_LT_AC_TAGCONFIG' => 1,
-                        '_LT_LINKER_OPTION' => 1,
-                        'AC_LIBTOOL_SETUP' => 1,
-                        'LTSUGAR_VERSION' => 1,
+                        'AC_LIBLTDL_CONVENIENCE' => 1,
+                        'LT_LIB_DLLOAD' => 1,
+                        'AC_LIBTOOL_PROG_CC_C_O' => 1,
+                        'LT_AC_PROG_SED' => 1,
                         '_AM_AUTOCONF_VERSION' => 1,
-                        '_AM_OUTPUT_DEPENDENCY_COMMANDS' => 1,
-                        'LT_CONFIG_LTDL_DIR' => 1,
-                        'AC_ENABLE_FAST_INSTALL' => 1,
-                        'AC_LIBTOOL_SYS_OLD_ARCHIVE' => 1,
-                        'LTDL_CONVENIENCE' => 1,
-                        'AM_INIT_AUTOMAKE' => 1,
-                        'AC_WITH_LTDL' => 1,
-                        'AM_SET_DEPDIR' => 1,
-                        'AC_LIBTOOL_LANG_GCJ_CONFIG' => 1,
-                        'AU_DEFUN' => 1,
-                        'AC_LIBTOOL_RC' => 1,
-                        'AC_LIB_LTDL' => 1,
-                        '_AM_SUBST_NOTMAKE' => 1,
-                        '_LT_PATH_TOOL_PREFIX' => 1,
-                        '_AM_MANGLE_OPTION' => 1,
                         'LT_SYS_MODULE_EXT' => 1,
-                        'AC_LTDL_ENABLE_INSTALL' => 1,
-                        '_LT_WITH_SYSROOT' => 1,
-                        '_LT_COMPILER_OPTION' => 1,
-                        '_LT_AC_FILE_LTDLL_C' => 1,
-                        'AC_DEFUN' => 1,
-                        'LT_SYS_DLSEARCH_PATH' => 1,
-                        'AM_DEP_TRACK' => 1,
-                        'PKG_NOARCH_INSTALLDIR' => 1,
-                        'AC_LTDL_SYS_DLOPEN_DEPLIBS' => 1,
-                        'AC_LTDL_SYMBOL_USCORE' => 1,
-                        'AC_DISABLE_FAST_INSTALL' => 1,
-                        'LT_SYS_DLOPEN_SELF' => 1,
+                        'AC_PROG_LD_GNU' => 1,
+                        '_LT_AC_PROG_ECHO_BACKSLASH' => 1,
+                        'AC_LIBTOOL_LANG_F77_CONFIG' => 1,
                         'AM_CONFIG_HEADER' => 1,
-                        'PKG_CHECK_MODULES_STATIC' => 1,
-                        'AC_LIBTOOL_OBJDIR' => 1,
-                        'LT_LANG' => 1,
-                        'LT_SYS_MODULE_PATH' => 1,
-                        'AC_LIBTOOL_CXX' => 1,
-                        'AC_LIBTOOL_DLOPEN' => 1,
+                        '_PKG_SHORT_ERRORS_SUPPORTED' => 1,
+                        'AX_OPENMP' => 1,
+                        'AC_PROG_LD_RELOAD_FLAG' => 1,
+                        'AC_LTDL_SHLIBEXT' => 1,
+                        'AC_LTDL_SYMBOL_USCORE' => 1,
+                        'AC_CHECK_LIBM' => 1,
+                        'LT_LANG' => 1,
+                        'AC_LTDL_PREOPEN' => 1,
+                        '_LT_AC_LANG_F77' => 1,
+                        'AC_LTDL_SYS_DLOPEN_DEPLIBS' => 1,
+                        'AC_PATH_TOOL_PREFIX' => 1,
+                        'AM_INIT_AUTOMAKE' => 1,
+                        'AC_DISABLE_FAST_INSTALL' => 1,
+                        'm4_pattern_allow' => 1,
+                        'AM_PROG_LD' => 1,
+                        'LTDL_CONVENIENCE' => 1,
+                        'LT_PROG_GO' => 1,
+                        '_AM_SET_OPTIONS' => 1,
+                        'AC_LIBTOOL_LANG_C_CONFIG' => 1,
+                        '_m4_warn' => 1,
+                        '_AM_SUBST_NOTMAKE' => 1,
+                        '_LTDL_SETUP' => 1,
+                        'AM_AUX_DIR_EXPAND' => 1,
+                        'AC_LIBTOOL_SYS_DYNAMIC_LINKER' => 1,
+                        '_LT_AC_LANG_CXX' => 1,
+                        'AC_LIBTOOL_LANG_CXX_CONFIG' => 1,
+                        '_LT_AC_SYS_COMPILER' => 1,
+                        '_LT_AC_CHECK_DLFCN' => 1,
+                        'AC_LIBLTDL_INSTALLABLE' => 1,
+                        'AC_WITH_LTDL' => 1,
+                        'PKG_CHECK_EXISTS' => 1,
+                        'LT_PATH_LD' => 1,
+                        'AC_LIBTOOL_LANG_RC_CONFIG' => 1,
+                        'LTOPTIONS_VERSION' => 1,
+                        'LT_CMD_MAX_LEN' => 1,
+                        'AC_LIBTOOL_PROG_COMPILER_PIC' => 1,
+                        'AC_DEFUN_ONCE' => 1,
+                        'AC_CONFIG_MACRO_DIR' => 1,
+                        '_AM_IF_OPTION' => 1,
+                        '_LT_AC_LANG_RC_CONFIG' => 1,
+                        '_LT_LINKER_BOILERPLATE' => 1,
+                        'LT_AC_PROG_GCJ' => 1,
+                        '_LT_AC_PROG_CXXCPP' => 1,
+                        'AC_CONFIG_MACRO_DIR_TRACE' => 1,
+                        '_AM_CONFIG_MACRO_DIRS' => 1,
+                        'LT_SYS_MODULE_PATH' => 1,
+                        'AC_LIBTOOL_PICMODE' => 1,
+                        '_LT_PROG_F77' => 1,
+                        'AC_LTDL_DLLIB' => 1,
+                        'AM_DEP_TRACK' => 1,
+                        'm4_pattern_forbid' => 1,
+                        '_LT_PATH_TOOL_PREFIX' => 1,
+                        'LT_SYS_DLOPEN_DEPLIBS' => 1,
+                        'LT_CONFIG_LTDL_DIR' => 1,
+                        'AM_AUTOMAKE_VERSION' => 1,
+                        'AC_LIBTOOL_SETUP' => 1,
+                        'LT_OUTPUT' => 1,
+                        'AC_LIBTOOL_LANG_GCJ_CONFIG' => 1,
+                        'LT_AC_PROG_EGREP' => 1,
+                        'AU_DEFUN' => 1,
+                        'AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE' => 1,
+                        '_AM_MANGLE_OPTION' => 1,
+                        'AM_PROG_INSTALL_SH' => 1,
+                        'AM_SET_LEADING_DOT' => 1,
+                        'PKG_NOARCH_INSTALLDIR' => 1,
+                        'LT_AC_PROG_RC' => 1,
+                        '_LT_COMPILER_BOILERPLATE' => 1,
+                        'AC_DEFUN' => 1,
+                        'AM_DISABLE_STATIC' => 1,
+                        'AC_LIBTOOL_OBJDIR' => 1,
+                        '_LT_AC_SYS_LIBPATH_AIX' => 1,
+                        '_LT_AC_TRY_DLOPEN_SELF' => 1,
                         'AM_SET_CURRENT_AUTOMAKE_VERSION' => 1,
-                        'm4_include' => 1
+                        'AC_ENABLE_SHARED' => 1,
+                        '_LT_PROG_LTMAIN' => 1,
+                        'LT_PATH_NM' => 1,
+                        'AM_MAKE_INCLUDE' => 1,
+                        'AC_LTDL_ENABLE_INSTALL' => 1,
+                        'AC_LIBTOOL_LINKER_OPTION' => 1,
+                        'AC_LIBTOOL_DLOPEN_SELF' => 1,
+                        'AC_LIBTOOL_CONFIG' => 1,
+                        '_AM_PROG_CC_C_O' => 1,
+                        'AC_LIBTOOL_SYS_HARD_LINK_LOCKS' => 1,
+                        'AC_LIBTOOL_SYS_MAX_CMD_LEN' => 1,
+                        'LTDL_INSTALLABLE' => 1
                       }
                     ], 'Autom4te::Request' ),
              bless( [
@@ -250,66 +250,66 @@
                         'configure.ac'
                       ],
                       {
-                        'AC_FC_PP_DEFINE' => 1,
-                        'AM_POT_TOOLS' => 1,
-                        'AM_MAINTAINER_MODE' => 1,
+                        'AM_EXTRA_RECURSIVE_TARGETS' => 1,
+                        '_AM_MAKEFILE_INCLUDE' => 1,
+                        'AC_CONFIG_LINKS' => 1,
+                        'AM_PROG_CXX_C_O' => 1,
+                        '_LT_AC_TAGCONFIG' => 1,
                         'AM_NLS' => 1,
-                        'AM_SILENT_RULES' => 1,
-                        'AC_REQUIRE_AUX_FILE' => 1,
-                        'AM_PROG_FC_C_O' => 1,
+                        'AC_INIT' => 1,
+                        'm4_sinclude' => 1,
                         'AC_CONFIG_SUBDIRS' => 1,
-                        'AH_OUTPUT' => 1,
-                        '_AM_COND_ELSE' => 1,
-                        'AC_DEFINE_TRACE_LITERAL' => 1,
+                        'AM_PROG_F77_C_O' => 1,
                         'AC_CONFIG_AUX_DIR' => 1,
-                        'AC_FC_FREEFORM' => 1,
-                        'AC_FC_SRCEXT' => 1,
-                        'AC_FC_PP_SRCEXT' => 1,
-                        'AC_CONFIG_LIBOBJ_DIR' => 1,
-                        'AM_XGETTEXT_OPTION' => 1,
-                        'AM_PROG_MKDIR_P' => 1,
-                        'AM_PROG_MOC' => 1,
-                        '_LT_AC_TAGCONFIG' => 1,
+                        'AM_GNU_GETTEXT' => 1,
+                        'AC_CANONICAL_SYSTEM' => 1,
                         'm4_include' => 1,
-                        'AC_PROG_LIBTOOL' => 1,
-                        'm4_sinclude' => 1,
-                        'AC_SUBST_TRACE' => 1,
-                        'AM_PROG_F77_C_O' => 1,
-                        'AM_INIT_AUTOMAKE' => 1,
-                        'AM_GNU_GETTEXT_INTL_SUBDIR' => 1,
-                        'AC_LIBSOURCE' => 1,
+                        'AM_MAINTAINER_MODE' => 1,
+                        'AM_PROG_LIBTOOL' => 1,
+                        'AC_DEFINE_TRACE_LITERAL' => 1,
+                        'AM_PROG_FC_C_O' => 1,
+                        'AC_CANONICAL_BUILD' => 1,
+                        'm4_pattern_forbid' => 1,
+                        'AC_CONFIG_LIBOBJ_DIR' => 1,
+                        'AC_CONFIG_FILES' => 1,
                         'LT_CONFIG_LTDL_DIR' => 1,
-                        'AM_PROG_AR' => 1,
                         'AM_AUTOMAKE_VERSION' => 1,
-                        'AC_CANONICAL_SYSTEM' => 1,
+                        'AC_SUBST' => 1,
+                        'AC_LIBSOURCE' => 1,
+                        'AM_ENABLE_MULTILIB' => 1,
+                        'AH_OUTPUT' => 1,
+                        '_AM_COND_ELSE' => 1,
+                        '_AM_SUBST_NOTMAKE' => 1,
+                        'AC_FC_PP_SRCEXT' => 1,
+                        'AC_FC_FREEFORM' => 1,
+                        'AM_POT_TOOLS' => 1,
                         'LT_SUPPORTED_TAG' => 1,
-                        'include' => 1,
-                        'AC_CANONICAL_HOST' => 1,
-                        'm4_pattern_allow' => 1,
-                        'AC_CONFIG_FILES' => 1,
-                        'sinclude' => 1,
-                        '_m4_warn' => 1,
                         'AM_MAKEFILE_INCLUDE' => 1,
-                        '_AM_COND_IF' => 1,
-                        '_AM_MAKEFILE_INCLUDE' => 1,
-                        'AM_PATH_GUILE' => 1,
+                        'AM_PROG_AR' => 1,
+                        'AM_XGETTEXT_OPTION' => 1,
                         'LT_INIT' => 1,
-                        'AM_EXTRA_RECURSIVE_TARGETS' => 1,
+                        '_m4_warn' => 1,
+                        'AC_PROG_LIBTOOL' => 1,
+                        'AC_FC_PP_DEFINE' => 1,
+                        'AM_PROG_MOC' => 1,
+                        'm4_pattern_allow' => 1,
+                        'sinclude' => 1,
+                        'AC_CANONICAL_HOST' => 1,
+                        'AC_REQUIRE_AUX_FILE' => 1,
                         'AM_PROG_CC_C_O' => 1,
-                        'AM_PROG_CXX_C_O' => 1,
-                        'AM_PROG_LIBTOOL' => 1,
-                        '_AM_SUBST_NOTMAKE' => 1,
-                        'AC_CANONICAL_TARGET' => 1,
-                        'AC_SUBST' => 1,
-                        'AC_INIT' => 1,
-                        'AM_ENABLE_MULTILIB' => 1,
-                        'AM_GNU_GETTEXT' => 1,
-                        'm4_pattern_forbid' => 1,
-                        'AC_CANONICAL_BUILD' => 1,
-                        'AC_CONFIG_HEADERS' => 1,
-                        'AC_CONFIG_LINKS' => 1,
+                        'AM_CONDITIONAL' => 1,
+                        'AM_INIT_AUTOMAKE' => 1,
                         '_AM_COND_ENDIF' => 1,
-                        'AM_CONDITIONAL' => 1
+                        'AC_FC_SRCEXT' => 1,
+                        'AC_CONFIG_HEADERS' => 1,
+                        'AM_SILENT_RULES' => 1,
+                        'AC_SUBST_TRACE' => 1,
+                        'AM_PROG_MKDIR_P' => 1,
+                        'include' => 1,
+                        'AM_PATH_GUILE' => 1,
+                        '_AM_COND_IF' => 1,
+                        'AM_GNU_GETTEXT_INTL_SUBDIR' => 1,
+                        'AC_CANONICAL_TARGET' => 1
                       }
                     ], 'Autom4te::Request' ),
              bless( [
@@ -353,198 +353,198 @@
                         'configure.ac'
                       ],
                       {
-                        '_LT_COMPILER_OPTION' => 1,
-                        '_LT_WITH_SYSROOT' => 1,
-                        'LT_SYS_MODULE_EXT' => 1,
-                        'AC_LTDL_ENABLE_INSTALL' => 1,
-                        '_AM_MANGLE_OPTION' => 1,
-                        '_LT_PATH_TOOL_PREFIX' => 1,
+                        '_AM_OUTPUT_DEPENDENCY_COMMANDS' => 1,
+                        'AM_PROG_CC_STDC' => 1,
+                        'AC_LIBTOOL_PROG_COMPILER_NO_RTTI' => 1,
+                        'AM_ENABLE_STATIC' => 1,
+                        'LTVERSION_VERSION' => 1,
+                        'PKG_INSTALLDIR' => 1,
+                        'fp_C_PROTOTYPES' => 1,
                         'AC_LIB_LTDL' => 1,
+                        'LT_SYS_DLSEARCH_PATH' => 1,
+                        'AC_LTDL_SHLIBPATH' => 1,
+                        '_LT_COMPILER_OPTION' => 1,
+                        'LTDL_INIT' => 1,
+                        '_LT_DLL_DEF_P' => 1,
+                        '_LT_AC_LANG_F77_CONFIG' => 1,
+                        'AM_SANITY_CHECK' => 1,
+                        'PKG_CHECK_VAR' => 1,
+                        'AC_LIBTOOL_PROG_LD_SHLIBS' => 1,
+                        'AM_RUN_LOG' => 1,
+                        'AC_LTDL_DLSYM_USCORE' => 1,
+                        'AC_ENABLE_STATIC' => 1,
+                        'LT_SYS_SYMBOL_USCORE' => 1,
+                        'AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH' => 1,
+                        'include' => 1,
                         'AC_LIBTOOL_RC' => 1,
-                        '_AM_SUBST_NOTMAKE' => 1,
-                        'AC_LIBTOOL_LANG_GCJ_CONFIG' => 1,
-                        'AU_DEFUN' => 1,
-                        'AM_SET_DEPDIR' => 1,
+                        'AC_PROG_LD' => 1,
+                        '_AM_PROG_TAR' => 1,
+                        'PKG_CHECK_MODULES' => 1,
+                        'LT_FUNC_ARGZ' => 1,
+                        '_LT_PREPARE_SED_QUOTE_VARS' => 1,
+                        '_LT_LIBOBJ' => 1,
+                        'AM_CONDITIONAL' => 1,
+                        'AM_ENABLE_SHARED' => 1,
+                        'LT_INIT' => 1,
+                        'AC_LIBTOOL_FC' => 1,
+                        'PKG_PROG_PKG_CONFIG' => 1,
+                        'AM_MISSING_HAS_RUN' => 1,
+                        'LT_SUPPORTED_TAG' => 1,
                         'AC_LIBTOOL_SYS_OLD_ARCHIVE' => 1,
-                        'AC_WITH_LTDL' => 1,
-                        'LTDL_CONVENIENCE' => 1,
-                        'AM_INIT_AUTOMAKE' => 1,
-                        '_AM_AUTOCONF_VERSION' => 1,
-                        'AC_ENABLE_FAST_INSTALL' => 1,
-                        'LT_CONFIG_LTDL_DIR' => 1,
-                        '_AM_OUTPUT_DEPENDENCY_COMMANDS' => 1,
-                        'AM_SET_CURRENT_AUTOMAKE_VERSION' => 1,
+                        'AM_PROG_LIBTOOL' => 1,
+                        'LTSUGAR_VERSION' => 1,
                         'm4_include' => 1,
-                        'LT_SYS_MODULE_PATH' => 1,
+                        'AC_LIBTOOL_COMPILER_OPTION' => 1,
                         'AC_LIBTOOL_DLOPEN' => 1,
+                        'LT_WITH_LTDL' => 1,
+                        'AC_DISABLE_SHARED' => 1,
+                        '_LT_AC_LANG_C_CONFIG' => 1,
+                        'AM_DISABLE_SHARED' => 1,
+                        'AM_PROG_INSTALL_STRIP' => 1,
+                        '_AC_AM_CONFIG_HEADER_HOOK' => 1,
                         'AC_LIBTOOL_CXX' => 1,
-                        'LT_LANG' => 1,
-                        'LT_SYS_DLOPEN_SELF' => 1,
-                        'AC_DISABLE_FAST_INSTALL' => 1,
+                        '_LT_AC_LOCK' => 1,
+                        'AC_LIBTOOL_GCJ' => 1,
+                        '_LT_LINKER_OPTION' => 1,
+                        'LT_PROG_GCJ' => 1,
+                        'AC_LTDL_OBJDIR' => 1,
+                        'AM_PROG_NM' => 1,
+                        'AM_SILENT_RULES' => 1,
+                        'LTOBSOLETE_VERSION' => 1,
+                        'AM_PROG_CC_C_O' => 1,
+                        'LT_LIB_M' => 1,
+                        'AM_OUTPUT_DEPENDENCY_COMMANDS' => 1,
                         'PKG_CHECK_MODULES_STATIC' => 1,
-                        'AC_LIBTOOL_OBJDIR' => 1,
+                        '_LT_CC_BASENAME' => 1,
+                        'AM_SUBST_NOTMAKE' => 1,
+                        'AM_SET_DEPDIR' => 1,
+                        '_LT_AC_FILE_LTDLL_C' => 1,
+                        '_AC_PROG_LIBTOOL' => 1,
+                        '_LT_WITH_SYSROOT' => 1,
+                        'AC_PROG_NM' => 1,
+                        'AC_PROG_LIBTOOL' => 1,
+                        'AC_LTDL_SYSSEARCHPATH' => 1,
+                        '_LT_AC_LANG_GCJ' => 1,
+                        '_LT_PROG_CXX' => 1,
+                        'AC_LIBTOOL_F77' => 1,
+                        'AC_LIBTOOL_WIN32_DLL' => 1,
+                        '_AM_DEPENDENCIES' => 1,
+                        'AC_DISABLE_STATIC' => 1,
+                        'AC_DEPLIBS_CHECK_METHOD' => 1,
+                        '_LT_AC_PROG_ECHO_BACKSLASH' => 1,
+                        'AC_PROG_LD_GNU' => 1,
+                        'LT_SYS_MODULE_EXT' => 1,
+                        '_AM_AUTOCONF_VERSION' => 1,
+                        'AC_LIBTOOL_LANG_F77_CONFIG' => 1,
+                        'AX_OPENMP' => 1,
+                        'AC_PROG_LD_RELOAD_FLAG' => 1,
+                        '_PKG_SHORT_ERRORS_SUPPORTED' => 1,
                         'AM_CONFIG_HEADER' => 1,
-                        'PKG_NOARCH_INSTALLDIR' => 1,
+                        'AC_CHECK_LIBM' => 1,
+                        'LT_LANG' => 1,
                         'AC_LTDL_SYMBOL_USCORE' => 1,
-                        'AC_LTDL_SYS_DLOPEN_DEPLIBS' => 1,
-                        'AC_DEFUN' => 1,
-                        'LT_SYS_DLSEARCH_PATH' => 1,
-                        '_LT_AC_FILE_LTDLL_C' => 1,
-                        'AM_DEP_TRACK' => 1,
+                        'AC_LTDL_SHLIBEXT' => 1,
                         'AC_LIBTOOL_POSTDEP_PREDEP' => 1,
-                        '_LT_AC_TAGVAR' => 1,
-                        '_LT_PROG_FC' => 1,
-                        'AM_CONDITIONAL' => 1,
-                        'PKG_CHECK_VAR' => 1,
-                        'AM_PROG_NM' => 1,
-                        'AC_LIBLTDL_INSTALLABLE' => 1,
-                        'AM_SUBST_NOTMAKE' => 1,
-                        'AM_AUTOMAKE_VERSION' => 1,
-                        'LT_SUPPORTED_TAG' => 1,
-                        'AC_LIBTOOL_LANG_RC_CONFIG' => 1,
-                        'include' => 1,
-                        'AC_LIBTOOL_DLOPEN_SELF' => 1,
-                        'AX_OPENMP' => 1,
-                        '_AM_PROG_CC_C_O' => 1,
-                        '_LT_PROG_LTMAIN' => 1,
-                        'LT_CMD_MAX_LEN' => 1,
-                        'AC_LIBTOOL_LANG_F77_CONFIG' => 1,
+                        '_LT_PROG_ECHO_BACKSLASH' => 1,
+                        '_LT_AC_LANG_GCJ_CONFIG' => 1,
+                        'AC_ENABLE_FAST_INSTALL' => 1,
+                        'AC_PATH_MAGIC' => 1,
+                        'LT_PROG_RC' => 1,
                         '_LT_AC_LANG_CXX_CONFIG' => 1,
-                        '_LT_LINKER_OPTION' => 1,
+                        '_LT_PROG_FC' => 1,
+                        '_LT_REQUIRED_DARWIN_CHECKS' => 1,
+                        '_LT_AC_SHELL_INIT' => 1,
+                        'AM_MISSING_PROG' => 1,
+                        'LT_FUNC_DLSYM_USCORE' => 1,
+                        'AM_C_PROTOTYPES' => 1,
+                        '_AM_SET_OPTION' => 1,
                         '_LT_AC_TAGCONFIG' => 1,
-                        'LTSUGAR_VERSION' => 1,
-                        'AC_LIBTOOL_SETUP' => 1,
+                        'AC_LIBLTDL_CONVENIENCE' => 1,
+                        '_LT_AC_TAGVAR' => 1,
+                        'AC_PROG_EGREP' => 1,
+                        'LT_SYS_DLOPEN_SELF' => 1,
+                        'AC_LIBTOOL_SYS_LIB_STRIP' => 1,
+                        'AC_LIBTOOL_PROG_CC_C_O' => 1,
+                        'LT_LIB_DLLOAD' => 1,
+                        'LT_AC_PROG_SED' => 1,
+                        'AC_LIBTOOL_LANG_CXX_CONFIG' => 1,
+                        '_LT_AC_LANG_CXX' => 1,
+                        'AC_LIBTOOL_SYS_DYNAMIC_LINKER' => 1,
+                        'AM_AUX_DIR_EXPAND' => 1,
+                        '_LT_AC_SYS_COMPILER' => 1,
+                        'PKG_CHECK_EXISTS' => 1,
                         'LT_PATH_LD' => 1,
-                        'AC_DEFUN_ONCE' => 1,
-                        'AC_LIBTOOL_FC' => 1,
-                        'AC_LIBTOOL_PROG_COMPILER_NO_RTTI' => 1,
-                        '_LT_AC_SYS_LIBPATH_AIX' => 1,
-                        'AC_LTDL_SHLIBPATH' => 1,
-                        '_PKG_SHORT_ERRORS_SUPPORTED' => 1,
-                        'AC_LTDL_SYSSEARCHPATH' => 1,
-                        'AM_ENABLE_SHARED' => 1,
-                        'AC_LIBTOOL_SYS_HARD_LINK_LOCKS' => 1,
+                        'AC_WITH_LTDL' => 1,
+                        'AC_LIBLTDL_INSTALLABLE' => 1,
                         '_LT_AC_CHECK_DLFCN' => 1,
-                        '_LT_AC_LANG_F77' => 1,
-                        'AM_PROG_INSTALL_STRIP' => 1,
-                        'LT_PROG_RC' => 1,
+                        'AC_CONFIG_MACRO_DIR' => 1,
                         '_AM_IF_OPTION' => 1,
-                        'AM_SANITY_CHECK' => 1,
-                        '_LT_DLL_DEF_P' => 1,
-                        'LT_AC_PROG_EGREP' => 1,
-                        'AM_OUTPUT_DEPENDENCY_COMMANDS' => 1,
-                        'AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE' => 1,
-                        'LT_LIB_M' => 1,
-                        'fp_C_PROTOTYPES' => 1,
-                        'PKG_CHECK_MODULES' => 1,
-                        'AM_MISSING_PROG' => 1,
-                        'LT_WITH_LTDL' => 1,
-                        'LT_SYS_SYMBOL_USCORE' => 1,
-                        'AM_SILENT_RULES' => 1,
-                        '_LT_AC_LANG_F77_CONFIG' => 1,
-                        'LTDL_INSTALLABLE' => 1,
-                        '_AC_PROG_LIBTOOL' => 1,
-                        'AC_LIBTOOL_WIN32_DLL' => 1,
-                        'm4_pattern_forbid' => 1,
-                        'AC_LIBTOOL_COMPILER_OPTION' => 1,
-                        'LT_FUNC_ARGZ' => 1,
-                        '_LT_AC_SYS_COMPILER' => 1,
-                        'PKG_INSTALLDIR' => 1,
-                        '_LT_PROG_CXX' => 1,
-                        'LT_INIT' => 1,
-                        '_AC_AM_CONFIG_HEADER_HOOK' => 1,
-                        'AM_DISABLE_SHARED' => 1,
-                        '_AM_PROG_TAR' => 1,
-                        'AC_LIBTOOL_PROG_CC_C_O' => 1,
-                        'AC_PROG_LD' => 1,
-                        'LT_FUNC_DLSYM_USCORE' => 1,
+                        '_LT_AC_LANG_RC_CONFIG' => 1,
+                        'AC_DEFUN_ONCE' => 1,
+                        'AC_LIBTOOL_PROG_COMPILER_PIC' => 1,
+                        'LTOPTIONS_VERSION' => 1,
+                        'LT_CMD_MAX_LEN' => 1,
+                        'AC_LIBTOOL_LANG_RC_CONFIG' => 1,
+                        'AC_LTDL_SYS_DLOPEN_DEPLIBS' => 1,
+                        'AM_INIT_AUTOMAKE' => 1,
+                        'AC_PATH_TOOL_PREFIX' => 1,
+                        '_LT_AC_LANG_F77' => 1,
+                        'AC_LTDL_PREOPEN' => 1,
+                        'LTDL_CONVENIENCE' => 1,
+                        'AM_PROG_LD' => 1,
+                        'm4_pattern_allow' => 1,
+                        'AC_DISABLE_FAST_INSTALL' => 1,
+                        '_m4_warn' => 1,
+                        '_AM_SET_OPTIONS' => 1,
                         'AC_LIBTOOL_LANG_C_CONFIG' => 1,
-                        'AC_DEPLIBS_CHECK_METHOD' => 1,
-                        'PKG_CHECK_EXISTS' => 1,
+                        'LT_PROG_GO' => 1,
+                        '_LTDL_SETUP' => 1,
+                        '_AM_SUBST_NOTMAKE' => 1,
+                        'AC_LTDL_DLLIB' => 1,
+                        'LT_CONFIG_LTDL_DIR' => 1,
+                        'AM_AUTOMAKE_VERSION' => 1,
                         'LT_SYS_DLOPEN_DEPLIBS' => 1,
-                        'LTDL_INIT' => 1,
-                        'm4_pattern_allow' => 1,
-                        '_LT_AC_LANG_CXX' => 1,
-                        '_LT_PREPARE_SED_QUOTE_VARS' => 1,
-                        '_LT_REQUIRED_DARWIN_CHECKS' => 1,
-                        'AC_LIBTOOL_PROG_COMPILER_PIC' => 1,
-                        'AC_LIBTOOL_CONFIG' => 1,
+                        '_LT_PATH_TOOL_PREFIX' => 1,
+                        'm4_pattern_forbid' => 1,
+                        'AM_DEP_TRACK' => 1,
+                        'AC_LIBTOOL_SETUP' => 1,
+                        'LT_OUTPUT' => 1,
+                        'AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE' => 1,
+                        'LT_AC_PROG_EGREP' => 1,
+                        'AU_DEFUN' => 1,
+                        'AC_LIBTOOL_LANG_GCJ_CONFIG' => 1,
+                        '_LT_LINKER_BOILERPLATE' => 1,
+                        '_LT_AC_PROG_CXXCPP' => 1,
+                        'LT_AC_PROG_GCJ' => 1,
+                        'LT_SYS_MODULE_PATH' => 1,
+                        '_AM_CONFIG_MACRO_DIRS' => 1,
                         'AC_CONFIG_MACRO_DIR_TRACE' => 1,
                         '_LT_PROG_F77' => 1,
-                        '_LT_AC_LANG_RC_CONFIG' => 1,
-                        'LT_PATH_NM' => 1,
-                        '_AM_SET_OPTIONS' => 1,
-                        'LT_AC_PROG_RC' => 1,
                         'AC_LIBTOOL_PICMODE' => 1,
-                        'AC_PROG_LIBTOOL' => 1,
-                        'LT_AC_PROG_GCJ' => 1,
-                        'AC_PROG_EGREP' => 1,
-                        'AM_MAKE_INCLUDE' => 1,
-                        '_LT_LINKER_BOILERPLATE' => 1,
-                        'LTOPTIONS_VERSION' => 1,
-                        '_LT_AC_SHELL_INIT' => 1,
-                        'AC_LTDL_DLLIB' => 1,
-                        'LT_AC_PROG_SED' => 1,
+                        'AC_LTDL_ENABLE_INSTALL' => 1,
                         'AC_LIBTOOL_LINKER_OPTION' => 1,
-                        'AC_LTDL_OBJDIR' => 1,
-                        'AC_LIBTOOL_PROG_LD_SHLIBS' => 1,
-                        'PKG_PROG_PKG_CONFIG' => 1,
-                        'AC_LTDL_DLSYM_USCORE' => 1,
-                        '_AM_SET_OPTION' => 1,
-                        'AC_LTDL_SHLIBEXT' => 1,
-                        'AC_LIBTOOL_F77' => 1,
-                        '_AM_DEPENDENCIES' => 1,
-                        'AM_PROG_INSTALL_SH' => 1,
-                        '_LT_CC_BASENAME' => 1,
-                        '_LT_AC_LANG_C_CONFIG' => 1,
-                        'AC_LIBTOOL_LANG_CXX_CONFIG' => 1,
-                        'AC_PATH_MAGIC' => 1,
-                        'LT_LIB_DLLOAD' => 1,
-                        '_LT_AC_LANG_GCJ_CONFIG' => 1,
-                        'LT_PROG_GCJ' => 1,
-                        'AM_PROG_LD' => 1,
-                        'AM_PROG_CC_C_O' => 1,
-                        'AM_PROG_LIBTOOL' => 1,
-                        '_LT_AC_PROG_CXXCPP' => 1,
-                        'AM_ENABLE_STATIC' => 1,
-                        '_m4_warn' => 1,
-                        '_LT_LIBOBJ' => 1,
-                        'AC_ENABLE_STATIC' => 1,
-                        'AC_PATH_TOOL_PREFIX' => 1,
-                        'LT_OUTPUT' => 1,
-                        '_LTDL_SETUP' => 1,
+                        'LT_PATH_NM' => 1,
+                        'AM_MAKE_INCLUDE' => 1,
+                        'AC_LIBTOOL_CONFIG' => 1,
+                        'AC_LIBTOOL_DLOPEN_SELF' => 1,
+                        'AC_LIBTOOL_SYS_HARD_LINK_LOCKS' => 1,
+                        '_AM_PROG_CC_C_O' => 1,
+                        'LTDL_INSTALLABLE' => 1,
+                        'AC_LIBTOOL_SYS_MAX_CMD_LEN' => 1,
                         'AM_SET_LEADING_DOT' => 1,
-                        '_LT_AC_LOCK' => 1,
-                        'AC_DISABLE_STATIC' => 1,
-                        'AM_AUX_DIR_EXPAND' => 1,
-                        'AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH' => 1,
-                        'AC_PROG_LD_RELOAD_FLAG' => 1,
-                        '_LT_PROG_ECHO_BACKSLASH' => 1,
+                        'AM_PROG_INSTALL_SH' => 1,
+                        '_AM_MANGLE_OPTION' => 1,
+                        'PKG_NOARCH_INSTALLDIR' => 1,
+                        '_LT_AC_SYS_LIBPATH_AIX' => 1,
+                        'AC_LIBTOOL_OBJDIR' => 1,
+                        'AM_DISABLE_STATIC' => 1,
                         '_LT_COMPILER_BOILERPLATE' => 1,
-                        'LTVERSION_VERSION' => 1,
-                        'AM_C_PROTOTYPES' => 1,
-                        'AC_CONFIG_MACRO_DIR' => 1,
+                        'LT_AC_PROG_RC' => 1,
+                        'AC_DEFUN' => 1,
+                        '_LT_PROG_LTMAIN' => 1,
+                        'AM_SET_CURRENT_AUTOMAKE_VERSION' => 1,
                         'AC_ENABLE_SHARED' => 1,
-                        'LTOBSOLETE_VERSION' => 1,
-                        'AC_LIBTOOL_SYS_MAX_CMD_LEN' => 1,
-                        'AM_MISSING_HAS_RUN' => 1,
-                        'AC_PROG_NM' => 1,
-                        'AM_DISABLE_STATIC' => 1,
-                        'AC_LIBLTDL_CONVENIENCE' => 1,
-                        '_LT_AC_TRY_DLOPEN_SELF' => 1,
-                        'AC_LIBTOOL_GCJ' => 1,
-                        'AC_LIBTOOL_SYS_DYNAMIC_LINKER' => 1,
-                        'AC_LIBTOOL_SYS_LIB_STRIP' => 1,
-                        'AM_PROG_CC_STDC' => 1,
-                        'LT_PROG_GO' => 1,
-                        '_LT_AC_PROG_ECHO_BACKSLASH' => 1,
-                        'AM_RUN_LOG' => 1,
-                        'AC_LTDL_PREOPEN' => 1,
-                        'AC_CHECK_LIBM' => 1,
-                        '_LT_AC_LANG_GCJ' => 1,
-                        'AC_DISABLE_SHARED' => 1,
-                        '_AM_CONFIG_MACRO_DIRS' => 1,
-                        'AC_PROG_LD_GNU' => 1
+                        '_LT_AC_TRY_DLOPEN_SELF' => 1
                       }
                     ], 'Autom4te::Request' )
            );


=====================================
autom4te.cache/traces.1
=====================================
@@ -4,7 +4,7 @@ m4trace:aclocal.m4:1460: -1- m4_include([m4/ltoptions.m4])
 m4trace:aclocal.m4:1461: -1- m4_include([m4/ltsugar.m4])
 m4trace:aclocal.m4:1462: -1- m4_include([m4/ltversion.m4])
 m4trace:aclocal.m4:1463: -1- m4_include([m4/lt~obsolete.m4])
-m4trace:configure.ac:1: -1- AC_INIT([libmaus2], [2.0.653], [tischler at mpi-cbg.de], [libmaus2], [https://github.com/gt1/libmaus2])
+m4trace:configure.ac:1: -1- AC_INIT([libmaus2], [2.0.657], [tischler at mpi-cbg.de], [libmaus2], [https://github.com/gt1/libmaus2])
 m4trace:configure.ac:1: -1- m4_pattern_forbid([^_?A[CHUM]_])
 m4trace:configure.ac:1: -1- m4_pattern_forbid([_AC_])
 m4trace:configure.ac:1: -1- m4_pattern_forbid([^LIBOBJS$], [do not use LIBOBJS directly, use AC_LIBOBJ (see section `AC_LIBOBJ vs LIBOBJS'])


=====================================
configure
=====================================
@@ -1,6 +1,6 @@
 #! /bin/sh
 # Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.69 for libmaus2 2.0.653.
+# Generated by GNU Autoconf 2.69 for libmaus2 2.0.657.
 #
 # Report bugs to <tischler at mpi-cbg.de>.
 #
@@ -590,8 +590,8 @@ MAKEFLAGS=
 # Identity of this package.
 PACKAGE_NAME='libmaus2'
 PACKAGE_TARNAME='libmaus2'
-PACKAGE_VERSION='2.0.653'
-PACKAGE_STRING='libmaus2 2.0.653'
+PACKAGE_VERSION='2.0.657'
+PACKAGE_STRING='libmaus2 2.0.657'
 PACKAGE_BUGREPORT='tischler at mpi-cbg.de'
 PACKAGE_URL='https://github.com/gt1/libmaus2'
 
@@ -1609,7 +1609,7 @@ if test "$ac_init_help" = "long"; then
   # Omit some internal or obsolete options to make the list less imposing.
   # This message is too long to be a string in the A/UX 3.1 sh.
   cat <<_ACEOF
-\`configure' configures libmaus2 2.0.653 to adapt to many kinds of systems.
+\`configure' configures libmaus2 2.0.657 to adapt to many kinds of systems.
 
 Usage: $0 [OPTION]... [VAR=VALUE]...
 
@@ -1681,7 +1681,7 @@ fi
 
 if test -n "$ac_init_help"; then
   case $ac_init_help in
-     short | recursive ) echo "Configuration of libmaus2 2.0.653:";;
+     short | recursive ) echo "Configuration of libmaus2 2.0.657:";;
    esac
   cat <<\_ACEOF
 
@@ -1851,7 +1851,7 @@ fi
 test -n "$ac_init_help" && exit $ac_status
 if $ac_init_version; then
   cat <<\_ACEOF
-libmaus2 configure 2.0.653
+libmaus2 configure 2.0.657
 generated by GNU Autoconf 2.69
 
 Copyright (C) 2012 Free Software Foundation, Inc.
@@ -2724,7 +2724,7 @@ cat >config.log <<_ACEOF
 This file contains any messages produced by compilers while
 running configure, to aid debugging if configure makes a mistake.
 
-It was created by libmaus2 $as_me 2.0.653, which was
+It was created by libmaus2 $as_me 2.0.657, which was
 generated by GNU Autoconf 2.69.  Invocation command line was
 
   $ $0 $@
@@ -3072,7 +3072,7 @@ ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $
 ac_compiler_gnu=$ac_cv_c_compiler_gnu
 
 
-LIBRARY_VERSION=2:653:0
+LIBRARY_VERSION=2:657:0
 { $as_echo "$as_me:${as_lineno-$LINENO}: Configuring for source in directory ${srcdir}" >&5
 $as_echo "$as_me: Configuring for source in directory ${srcdir}" >&6;}
 ac_aux_dir=
@@ -12628,7 +12628,7 @@ fi
 
 # Define the identity of the package.
  PACKAGE='libmaus2'
- VERSION='2.0.653'
+ VERSION='2.0.657'
 
 
 cat >>confdefs.h <<_ACEOF
@@ -28157,7 +28157,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
 # report actual input values of CONFIG_FILES etc. instead of their
 # values after options handling.
 ac_log="
-This file was extended by libmaus2 $as_me 2.0.653, which was
+This file was extended by libmaus2 $as_me 2.0.657, which was
 generated by GNU Autoconf 2.69.  Invocation command line was
 
   CONFIG_FILES    = $CONFIG_FILES
@@ -28224,7 +28224,7 @@ _ACEOF
 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
 ac_cs_version="\\
-libmaus2 config.status 2.0.653
+libmaus2 config.status 2.0.657
 configured by $0, generated by GNU Autoconf 2.69,
   with options \\"\$ac_cs_config\\"
 


=====================================
configure.ac
=====================================
@@ -1,5 +1,5 @@
-AC_INIT(libmaus2,2.0.653,[tischler at mpi-cbg.de],[libmaus2],[https://github.com/gt1/libmaus2])
-LIBRARY_VERSION=2:653:0
+AC_INIT(libmaus2,2.0.657,[tischler at mpi-cbg.de],[libmaus2],[https://github.com/gt1/libmaus2])
+LIBRARY_VERSION=2:657:0
 AC_MSG_NOTICE([Configuring for source in directory ${srcdir}])
 AC_CANONICAL_SYSTEM
 AC_CANONICAL_HOST


=====================================
src/Makefile.am
=====================================
@@ -1773,7 +1773,9 @@ libmaus2rmq_include_HEADERS=\
 
 libmaus2network_includedir=$(includedir)/libmaus2/network
 libmaus2network_include_HEADERS=\
-	libmaus2/network/Socket.hpp \
+	libmaus2/network/SocketBase.hpp \
+	libmaus2/network/ClientSocket.hpp \
+	libmaus2/network/ServerSocket.hpp \
 	libmaus2/network/GetHostName.hpp \
 	libmaus2/network/SocketInputStreamBuffer.hpp \
 	libmaus2/network/SocketInputStream.hpp \


=====================================
src/Makefile.in
=====================================
@@ -4173,7 +4173,9 @@ libmaus2rmq_include_HEADERS = \
 
 libmaus2network_includedir = $(includedir)/libmaus2/network
 libmaus2network_include_HEADERS = \
-	libmaus2/network/Socket.hpp \
+	libmaus2/network/SocketBase.hpp \
+	libmaus2/network/ClientSocket.hpp \
+	libmaus2/network/ServerSocket.hpp \
 	libmaus2/network/GetHostName.hpp \
 	libmaus2/network/SocketInputStreamBuffer.hpp \
 	libmaus2/network/SocketInputStream.hpp \


=====================================
src/libmaus2/aio/TempFileArray.hpp
=====================================
@@ -22,6 +22,7 @@
 #include <libmaus2/autoarray/AutoArray.hpp>
 #include <libmaus2/util/TempFileRemovalContainer.hpp>
 #include <libmaus2/sorting/SortingBufferedOutputFile.hpp>
+#include <libmaus2/util/Concat.hpp>
 
 namespace libmaus2
 {


=====================================
src/libmaus2/autoarray/AutoArray.hpp
=====================================
@@ -196,6 +196,122 @@ namespace libmaus2
 		extern uint64_t volatile AutoArray_maxmem;
 		extern ::libmaus2::parallel::StdSpinLock AutoArray_lock;
 
+		template<typename N, alloc_type atype = alloc_type_cxx>
+		struct AutoArrayBase
+		{
+			typedef N value_type;
+
+			/**
+			 * return name of value type
+			 * @return name of value type
+			 **/
+			static std::string getValueTypeName()
+			{
+				return ::libmaus2::util::Demangle::demangle<value_type>();
+			}
+
+			/**
+			 * return name of allocation type
+			 * @return name of allocation type
+			 **/
+			static std::string getAllocTypeName()
+			{
+				switch ( atype )
+				{
+					case alloc_type_cxx:
+						return "alloc_type_cxx";
+					case alloc_type_c:
+						return "alloc_type_c";
+					case alloc_type_memalign_cacheline:
+						return "alloc_type_memalign_cacheline";
+					case alloc_type_memalign_pagesize:
+						return "alloc_type_memalign_pagesize";
+					case alloc_type_hugepages:
+						return "alloc_type_hugepages";
+					case alloc_type_hugepages_memalign_cacheline:
+						return "alloc_type_memalign_cacheline";
+					case alloc_type_hugepages_memalign_pagesize:
+						return "alloc_type_memalign_pagesize";
+					default:
+						return "alloc_type_unknown";
+				}
+			}
+			/**
+			 * return full type name of array class
+			 * @return full type name of array class
+			 **/
+			static std::string getTypeName()
+			{
+				return std::string("AutoArray<") + getValueTypeName() + "," + getAllocTypeName() + ">";
+			}
+
+			/**
+			 * @return size of a (level 1) cache line in bytes
+			 **/
+			#if defined(LIBMAUS2_HAVE_SYSCONF) && defined(_SC_LEVEL1_DCACHE_LINESIZE)
+			static uint64_t getCacheLineSize()
+			{
+				uint64_t sclinesize = libmaus2::posix::PosixFunctions::sysconf(_SC_LEVEL1_DCACHE_LINESIZE);
+
+				if ( sclinesize )
+					return sclinesize;
+
+				#if defined(LIBMAUS2_USE_ASSEMBLY) && defined(LIBMAUS2_HAVE_i386)
+				return ::libmaus2::util::I386CacheLineSize::getCacheLineSize();
+				#else
+				return 64ull;
+				#endif
+			}
+			#elif defined(_WIN32)
+			static uint64_t getCacheLineSize()
+			{
+				uint64_t cachelinesize = 0;
+				DWORD bufsize = 0;
+				GetLogicalProcessorInformation(0, &bufsize);
+				::libmaus2::autoarray::AutoArray<uint8_t> Abuffer(bufsize);
+	                        SYSTEM_LOGICAL_PROCESSOR_INFORMATION * const buffer = reinterpret_cast<SYSTEM_LOGICAL_PROCESSOR_INFORMATION *>(Abuffer.get());
+	                        GetLogicalProcessorInformation(&buffer[0], &bufsize);
+
+	                        for (uint64_t i = 0; i != bufsize / sizeof(SYSTEM_LOGICAL_PROCESSOR_INFORMATION); ++i)
+	                        {
+	                        	if (buffer[i].Relationship == RelationCache && buffer[i].Cache.Level == 1) {
+	                                	cachelinesize = buffer[i].Cache.LineSize;
+	                                	break;
+					}
+				}
+
+				return cachelinesize;
+			}
+			#elif defined(__APPLE__)
+			static uint64_t getCacheLineSize()
+			{
+				uint64_t cachelinesize = 0;
+				size_t cachelinesizelen = sizeof(cachelinesize);
+				#if defined(NDEBUG)
+				sysctlbyname("hw.cachelinesize", &cachelinesize, &cachelinesizelen, 0, 0);
+				#else
+				int const sysctlretname = sysctlbyname("hw.cachelinesize", &cachelinesize, &cachelinesizelen, 0, 0);
+				assert ( ! sysctlretname );
+				#endif
+				return cachelinesize;
+			}
+			#elif defined(LIBMAUS2_USE_ASSEMBLY) && defined(LIBMAUS2_HAVE_i386)
+			static uint64_t getCacheLineSize()
+			{
+				return ::libmaus2::util::I386CacheLineSize::getCacheLineSize();
+			}
+			#else
+			static uint64_t getCacheLineSize()
+			{
+				libmaus2::exception::LibMausException se;
+				se.getStream() << "AutoArray<>::getCacheLineSize(): cache line size detection not available." << std::endl;
+				se.finish();
+				throw se;
+			}
+			#endif
+		};
+
+
 		#if defined(LIBMAUS2_AUTOARRAY_AUTOARRAYTRACE)
 		template<unsigned int n>
 		struct AutoArrayBackTrace
@@ -294,6 +410,297 @@ namespace libmaus2
 			static void erase(std::unique_ptr<N> * array, uint64_t const n);
 		};
 
+		template<typename N, alloc_type atype>
+		struct AutoArrayAllocate
+		{
+			static N * allocate(uint64_t const n);
+		};
+
+		template<typename N>
+		struct AutoArrayAllocate<N,alloc_type_cxx>
+		{
+			static N * allocate(uint64_t const n)
+			{
+				try
+				{
+					N * p = new N[n];
+
+					return p;
+				}
+				catch(std::bad_alloc const & ex)
+				{
+					::libmaus2::exception::LibMausException se;
+					se.getStream()
+						<< AutoArrayBase<N,alloc_type_cxx>::getTypeName()
+						<< " failed to allocate " << n << " elements ("
+						<< n*sizeof(N) << " bytes)" << "\n"
+						<< "current total allocation " << AutoArray_memusage
+						<< std::endl;
+						;
+					se.finish();
+					throw se;
+				}
+			}
+
+			static void deallocate(N * array)
+			{
+				delete [] array;
+			}
+		};
+
+		template<typename N>
+		struct AutoArrayAllocate<N,alloc_type_c>
+		{
+			static N * allocate(uint64_t const n)
+			{
+				try
+				{
+					N * p = (N*)malloc(n*sizeof(N));
+
+					if ( ! p )
+						throw std::bad_alloc();
+
+					return p;
+				}
+				catch(std::bad_alloc const & ex)
+				{
+					::libmaus2::exception::LibMausException se;
+					se.getStream()
+						<< AutoArrayBase<N,alloc_type_c>::getTypeName()
+						<< " failed to allocate " << n << " elements ("
+						<< n*sizeof(N) << " bytes)" << "\n"
+						<< "current total allocation " << AutoArray_memusage
+						<< std::endl;
+						;
+					se.finish();
+					throw se;
+				}
+			}
+
+			static void deallocate(N * array)
+			{
+				::free(array);
+			}
+		};
+
+		template<typename N>
+		struct AutoArrayAllocate<N,alloc_type_memalign_cacheline>
+		{
+			static N * allocate(uint64_t const n)
+			{
+				try
+				{
+					N * array = NULL;
+
+					uint64_t const cachelinesize = AutoArrayBase<N,alloc_type_memalign_cacheline>::getCacheLineSize();
+
+					#if defined(_WIN32)
+					array = reinterpret_cast<N *>(_aligned_malloc( n * sizeof(N), cachelinesize ));
+					if ( ! array )
+						throw std::bad_alloc();
+					#elif defined(LIBMAUS2_HAVE_POSIX_MEMALIGN)
+					int r = posix_memalign(reinterpret_cast<void**>(&array),cachelinesize,n * sizeof(N) );
+					if ( r )
+					{
+						int const aerrno = r;
+						std::cerr << "allocation failure: " << strerror(aerrno) << " cachelinesize=" << cachelinesize << " requested size is " << n*sizeof(N) << std::endl;
+						throw std::bad_alloc();
+					}
+					#else
+					array = AlignedAllocation<N,atype>::alignedAllocate(n,cachelinesize);
+					#endif
+
+					return array;
+
+				}
+				catch(std::bad_alloc const & ex)
+				{
+					::libmaus2::exception::LibMausException se;
+					se.getStream()
+						<< AutoArrayBase<N,alloc_type_memalign_cacheline>::getTypeName()
+						<< " failed to allocate " << n << " elements ("
+						<< n*sizeof(N) << " bytes)" << "\n"
+						<< "current total allocation " << AutoArray_memusage
+						<< std::endl;
+						;
+					se.finish();
+					throw se;
+				}
+			}
+
+			static void deallocate(N * array)
+			{
+				#if defined(_WIN32) || defined(LIBMAUS2_HAVE_POSIX_MEMALIGN)
+				free(array);
+				#else
+				AlignedAllocation<N,alloc_type_memalign_cacheline>::freeAligned(array);
+				#endif
+			}
+		};
+
+		template<typename N>
+		struct AutoArrayAllocate<N,alloc_type_memalign_pagesize>
+		{
+			static N * allocate(uint64_t const n)
+			{
+				try
+				{
+					N * array = NULL;
+
+					uint64_t const pagesize = libmaus2::util::MemoryStatistics::getPageSize();
+					#if defined(_WIN32)
+					array = reinterpret_cast<N *>(_aligned_malloc( n * sizeof(N), pagesize ));
+					if ( ! array )
+						throw std::bad_alloc();
+					#elif defined(LIBMAUS2_HAVE_POSIX_MEMALIGN)
+					int r = posix_memalign(reinterpret_cast<void**>(&array),pagesize,n * sizeof(N) );
+					if ( r )
+					{
+						int const aerrno = r;
+						std::cerr << "allocation failure: " << strerror(aerrno) << " pagesize=" << pagesize << " requested size is " << n*sizeof(N) << std::endl;
+						throw std::bad_alloc();
+					}
+					#else
+					array = AlignedAllocation<N,atype>::alignedAllocate(n,pagesize);
+					#endif
+
+					return array;
+				}
+				catch(std::bad_alloc const & ex)
+				{
+					::libmaus2::exception::LibMausException se;
+					se.getStream()
+						<< AutoArrayBase<N,alloc_type_memalign_pagesize>::getTypeName()
+						<< " failed to allocate " << n << " elements ("
+						<< n*sizeof(N) << " bytes)" << "\n"
+						<< "current total allocation " << AutoArray_memusage
+						<< std::endl;
+						;
+					se.finish();
+					throw se;
+				}
+			}
+
+			static void deallocate(N * array)
+			{
+				#if defined(_WIN32) || defined(LIBMAUS2_HAVE_POSIX_MEMALIGN)
+				free(array);
+				#else
+				AlignedAllocation<N,alloc_type_memalign_pagesize>::freeAligned(array);
+				#endif
+			}
+		};
+
+		template<typename N>
+		struct AutoArrayAllocate<N,alloc_type_hugepages>
+		{
+			static N * allocate(uint64_t const n)
+			{
+				try
+				{
+					N * array = NULL;
+
+					array = reinterpret_cast<N *>(libmaus2::util::HugePages::getHugePageObject().malloc( n * sizeof(N), sizeof(N) ));
+					if ( ! array )
+						throw std::bad_alloc();
+
+					return array;
+				}
+				catch(std::bad_alloc const & ex)
+				{
+					::libmaus2::exception::LibMausException se;
+					se.getStream()
+						<< AutoArrayBase<N,alloc_type_hugepages>::getTypeName()
+						<< " failed to allocate " << n << " elements ("
+						<< n*sizeof(N) << " bytes)" << "\n"
+						<< "current total allocation " << AutoArray_memusage
+						<< std::endl;
+						;
+					se.finish();
+					throw se;
+				}
+			}
+
+			static void deallocate(N * array)
+			{
+				libmaus2::util::HugePages::getHugePageObject().free(array);
+			}
+		};
+
+		template<typename N>
+		struct AutoArrayAllocate<N,alloc_type_hugepages_memalign_cacheline>
+		{
+			static N * allocate(uint64_t const n)
+			{
+				try
+				{
+					N * array = NULL;
+
+					uint64_t const cachelinesize = AutoArrayBase<N,alloc_type_hugepages_memalign_cacheline>::getCacheLineSize();
+					array = reinterpret_cast<N *>(libmaus2::util::HugePages::getHugePageObject().malloc( n * sizeof(N), cachelinesize ));
+					if ( ! array )
+						throw std::bad_alloc();
+
+					return array;
+				}
+				catch(std::bad_alloc const & ex)
+				{
+					::libmaus2::exception::LibMausException se;
+					se.getStream()
+						<< AutoArrayBase<N,alloc_type_hugepages_memalign_cacheline>::getTypeName()
+						<< " failed to allocate " << n << " elements ("
+						<< n*sizeof(N) << " bytes)" << "\n"
+						<< "current total allocation " << AutoArray_memusage
+						<< std::endl;
+						;
+					se.finish();
+					throw se;
+				}
+			}
+
+			static void deallocate(N * array)
+			{
+				libmaus2::util::HugePages::getHugePageObject().free(array);
+			}
+		};
+
+		template<typename N>
+		struct AutoArrayAllocate<N,alloc_type_hugepages_memalign_pagesize>
+		{
+			static N * allocate(uint64_t const n)
+			{
+				try
+				{
+					N * array = NULL;
+
+					uint64_t const cachelinesize = libmaus2::util::MemoryStatistics::getPageSize();
+					array = reinterpret_cast<N *>(libmaus2::util::HugePages::getHugePageObject().malloc( n * sizeof(N), cachelinesize ));
+					if ( ! array )
+						throw std::bad_alloc();
+
+					return array;
+				}
+				catch(std::bad_alloc const & ex)
+				{
+					::libmaus2::exception::LibMausException se;
+					se.getStream()
+						<< AutoArrayBase<N,alloc_type_hugepages_memalign_pagesize>::getTypeName()
+						<< " failed to allocate " << n << " elements ("
+						<< n*sizeof(N) << " bytes)" << "\n"
+						<< "current total allocation " << AutoArray_memusage
+						<< std::endl;
+						;
+					se.finish();
+					throw se;
+				}
+			}
+
+			static void deallocate(N * array)
+			{
+				libmaus2::util::HugePages::getHugePageObject().free(array);
+			}
+		};
+
 		#if defined(LIBMAUS2_AUTOARRAY_AUTOARRAYTRACE)
 		extern std::vector< AutoArrayBackTrace<LIBMAUS2_AUTOARRAY_AUTOARRAYTRACE> > tracevector;
 		extern libmaus2::parallel::StdSpinLock backtracelock;
@@ -307,10 +714,10 @@ namespace libmaus2
 		{
 			static N * reallocate(N * p, uint64_t const rn, uint64_t const n)
 			{
-				N * np = new N[n];
+				N * np = AutoArrayAllocate<N,atype>::allocate(n);
 				uint64_t const tocopy = std::min(rn,n);
 				std::copy(p,p+tocopy,np);
-				delete [] p;
+				AutoArrayAllocate<N,atype>::deallocate(p);
 				return np;
 			}
 		};
@@ -327,11 +734,12 @@ namespace libmaus2
 			}
 		};
 
+
 		/**
 		 * array with automatic deallocation
 		 */
 		template<typename N, alloc_type atype = alloc_type_cxx, typename erase_type = ArrayErase<N> >
-		struct AutoArray
+		struct AutoArray : public AutoArrayBase<N,atype>
 		{
 			public:
 			//! element type
@@ -476,7 +884,7 @@ namespace libmaus2
 					__sync_fetch_and_sub(&AutoArray_memusage, n * sizeof(N));
 
 					::libmaus2::exception::LibMausException se;
-					se.getStream() << "libmaus2::autoarray::AutoArray<" << getValueTypeName() << ">::increaseTotalAllocation: bad allocation: AutoArray mem limit of " << AutoArray_maxmem << " bytes exceeded by new allocation of " << n*sizeof(N) << " bytes." << std::endl;
+					se.getStream() << "libmaus2::autoarray::AutoArray<" << AutoArrayBase<value_type,atype>::getValueTypeName() << ">::increaseTotalAllocation: bad allocation: AutoArray mem limit of " << AutoArray_maxmem << " bytes exceeded by new allocation of " << n*sizeof(N) << " bytes." << std::endl;
 					se.finish();
 
 					{
@@ -546,103 +954,7 @@ namespace libmaus2
 			 **/
 			void allocateArray(uint64_t const n)
 			{
-				try
-				{
-					switch ( atype )
-					{
-						case alloc_type_cxx:
-							array = new N[n];
-							break;
-						case alloc_type_c:
-							array = reinterpret_cast<N *>(malloc( n * sizeof(N) ));
-							if ( ! array )
-								throw std::bad_alloc();
-							break;
-						case alloc_type_memalign_cacheline:
-						{
-							uint64_t const cachelinesize = getCacheLineSize();
-							#if defined(_WIN32)
-							array = reinterpret_cast<N *>(_aligned_malloc( n * sizeof(N), cachelinesize ));
-							if ( ! array )
-								throw std::bad_alloc();
-							#elif defined(LIBMAUS2_HAVE_POSIX_MEMALIGN)
-							int r = posix_memalign(reinterpret_cast<void**>(&array),cachelinesize,n * sizeof(N) );
-							if ( r )
-							{
-								int const aerrno = r;
-								std::cerr << "allocation failure: " << strerror(aerrno) << " cachelinesize=" << cachelinesize << " requested size is " << n*sizeof(N) << std::endl;
-								throw std::bad_alloc();
-							}
-							#else
-							array = AlignedAllocation<N,atype>::alignedAllocate(n,cachelinesize);
-							#endif
-							break;
-						}
-						case alloc_type_memalign_pagesize:
-						{
-							uint64_t const pagesize = libmaus2::util::MemoryStatistics::getPageSize();
-							#if defined(_WIN32)
-							array = reinterpret_cast<N *>(_aligned_malloc( n * sizeof(N), pagesize ));
-							if ( ! array )
-								throw std::bad_alloc();
-							#elif defined(LIBMAUS2_HAVE_POSIX_MEMALIGN)
-							int r = posix_memalign(reinterpret_cast<void**>(&array),pagesize,n * sizeof(N) );
-							if ( r )
-							{
-								int const aerrno = r;
-								std::cerr << "allocation failure: " << strerror(aerrno) << " pagesize=" << pagesize << " requested size is " << n*sizeof(N) << std::endl;
-								throw std::bad_alloc();
-							}
-							#else
-							array = AlignedAllocation<N,atype>::alignedAllocate(n,pagesize);
-							#endif
-							break;
-						}
-						case alloc_type_hugepages:
-						{
-							array = reinterpret_cast<N *>(libmaus2::util::HugePages::getHugePageObject().malloc( n * sizeof(N), sizeof(N) ));
-							if ( ! array )
-								throw std::bad_alloc();
-							break;
-						}
-						case alloc_type_hugepages_memalign_cacheline:
-						{
-							uint64_t const cachelinesize = getCacheLineSize();
-							array = reinterpret_cast<N *>(libmaus2::util::HugePages::getHugePageObject().malloc( n * sizeof(N), cachelinesize ));
-							if ( ! array )
-								throw std::bad_alloc();
-							break;
-
-						}
-						case alloc_type_hugepages_memalign_pagesize:
-						{
-							uint64_t const cachelinesize = libmaus2::util::MemoryStatistics::getPageSize();
-							array = reinterpret_cast<N *>(libmaus2::util::HugePages::getHugePageObject().malloc( n * sizeof(N), cachelinesize ));
-							if ( ! array )
-								throw std::bad_alloc();
-							break;
-
-						}
-					}
-				}
-				catch(std::bad_alloc const & ex)
-				{
-					bool topfailed = false;
-					if ( system("top -b -n1") < 0 )
-					{
-						topfailed = true;
-					}
-					::libmaus2::exception::LibMausException se;
-					se.getStream()
-						<< getTypeName()
-						<< " failed to allocate " << n << " elements ("
-						<< n*sizeof(N) << " bytes)" << "\n"
-						<< "current total allocation " << AutoArray_memusage
-						<< (topfailed ? " (system(top -b -n1) failed)" : "") << std::endl;
-						;
-					se.finish();
-					throw se;
-				}
+				array = AutoArrayAllocate<value_type,atype>::allocate(n);
 			}
 
 			public:
@@ -724,49 +1036,6 @@ namespace libmaus2
 				return I;
 			}
 
-			/**
-			 * return name of value type
-			 * @return name of value type
-			 **/
-			static std::string getValueTypeName()
-			{
-				return ::libmaus2::util::Demangle::demangle<value_type>();
-			}
-
-			/**
-			 * return name of allocation type
-			 * @return name of allocation type
-			 **/
-			static std::string getAllocTypeName()
-			{
-				switch ( atype )
-				{
-					case alloc_type_cxx:
-						return "alloc_type_cxx";
-					case alloc_type_c:
-						return "alloc_type_c";
-					case alloc_type_memalign_cacheline:
-						return "alloc_type_memalign_cacheline";
-					case alloc_type_memalign_pagesize:
-						return "alloc_type_memalign_pagesize";
-					case alloc_type_hugepages:
-						return "alloc_type_hugepages";
-					case alloc_type_hugepages_memalign_cacheline:
-						return "alloc_type_memalign_cacheline";
-					case alloc_type_hugepages_memalign_pagesize:
-						return "alloc_type_memalign_pagesize";
-					default:
-						return "alloc_type_unknown";
-				}
-			}
-			/**
-			 * return full type name of array class
-			 * @return full type name of array class
-			 **/
-			static std::string getTypeName()
-			{
-				return std::string("AutoArray<") + getValueTypeName() + "," + getAllocTypeName() + ">";
-			}
 
 			/**
 			 * compute array of prefix sums in place
@@ -888,7 +1157,7 @@ namespace libmaus2
 				if ( ! ostr )
 				{
 					::libmaus2::exception::LibMausException se;
-					se.getStream() << "Failed to serialize " << getTypeName() << " of size " << size() << " to file " << filename << std::endl;
+					se.getStream() << "Failed to serialize " << AutoArrayBase<value_type,atype>::getTypeName() << " of size " << size() << " to file " << filename << std::endl;
 					se.finish();
 					throw se;
 				}
@@ -939,52 +1208,6 @@ namespace libmaus2
 				decreaseTotalAllocation(n);
 				n = rn;
 				increaseTotalAllocation(n);
-
-				#if 0
-				switch ( atype )
-				{
-					case alloc_type_c:
-					{
-						N * newarray = reinterpret_cast<N *>(realloc(array, rn * sizeof(N) ));
-						if ( (! newarray) && (rn != 0) )
-						{
-							bool topfailed = false;
-							if ( system("top -b -n1") < 0 )
-							{
-								topfailed = true;
-							}
-							::libmaus2::exception::LibMausException se;
-							se.getStream()
-								<< getTypeName()
-								<< "::resize() failed to allocate " << rn << " elements ("
-								<< rn*sizeof(N) << " bytes)" << "\n"
-								<< "current total allocation " << AutoArray_memusage
-								<< (topfailed ? " (system(top -b -n1) failed)" : "") << std::endl;
-								;
-							se.finish();
-							throw se;
-						}
-						decreaseTotalAllocation(n);
-						n = rn;
-						increaseTotalAllocation(n);
-						array = newarray;
-						break;
-					}
-					case alloc_type_cxx:
-					case alloc_type_memalign_cacheline:
-					case alloc_type_memalign_pagesize:
-					case alloc_type_hugepages:
-					case alloc_type_hugepages_memalign_cacheline:
-					case alloc_type_hugepages_memalign_pagesize:
-						{
-							this_type C(rn,false);
-							uint64_t const copy = std::min(size(),C.size());
-							std::copy(begin(),begin()+copy,C.begin());
-							*this = C;
-						}
-						break;
-				}
-				#endif
 			}
 
 			/**
@@ -997,70 +1220,6 @@ namespace libmaus2
 			}
 
 			private:
-			/**
-			 * @return size of a (level 1) cache line in bytes
-			 **/
-			#if defined(LIBMAUS2_HAVE_SYSCONF) && defined(_SC_LEVEL1_DCACHE_LINESIZE)
-			static uint64_t getCacheLineSize()
-			{
-				uint64_t sclinesize = libmaus2::posix::PosixFunctions::sysconf(_SC_LEVEL1_DCACHE_LINESIZE);
-
-				if ( sclinesize )
-					return sclinesize;
-
-				#if defined(LIBMAUS2_USE_ASSEMBLY) && defined(LIBMAUS2_HAVE_i386)
-				return ::libmaus2::util::I386CacheLineSize::getCacheLineSize();
-				#else
-				return 64ull;
-				#endif
-			}
-			#elif defined(_WIN32)
-			static uint64_t getCacheLineSize()
-			{
-				uint64_t cachelinesize = 0;
-				DWORD bufsize = 0;
-				GetLogicalProcessorInformation(0, &bufsize);
-				::libmaus2::autoarray::AutoArray<uint8_t> Abuffer(bufsize);
-	                        SYSTEM_LOGICAL_PROCESSOR_INFORMATION * const buffer = reinterpret_cast<SYSTEM_LOGICAL_PROCESSOR_INFORMATION *>(Abuffer.get());
-	                        GetLogicalProcessorInformation(&buffer[0], &bufsize);
-
-	                        for (uint64_t i = 0; i != bufsize / sizeof(SYSTEM_LOGICAL_PROCESSOR_INFORMATION); ++i)
-	                        {
-	                        	if (buffer[i].Relationship == RelationCache && buffer[i].Cache.Level == 1) {
-	                                	cachelinesize = buffer[i].Cache.LineSize;
-	                                	break;
-					}
-				}
-
-				return cachelinesize;
-			}
-			#elif defined(__APPLE__)
-			static uint64_t getCacheLineSize()
-			{
-				uint64_t cachelinesize = 0;
-				size_t cachelinesizelen = sizeof(cachelinesize);
-				#if defined(NDEBUG)
-				sysctlbyname("hw.cachelinesize", &cachelinesize, &cachelinesizelen, 0, 0);
-				#else
-				int const sysctlretname = sysctlbyname("hw.cachelinesize", &cachelinesize, &cachelinesizelen, 0, 0);
-				assert ( ! sysctlretname );
-				#endif
-				return cachelinesize;
-			}
-			#elif defined(LIBMAUS2_USE_ASSEMBLY) && defined(LIBMAUS2_HAVE_i386)
-			static uint64_t getCacheLineSize()
-			{
-				return ::libmaus2::util::I386CacheLineSize::getCacheLineSize();
-			}
-			#else
-			static uint64_t getCacheLineSize()
-			{
-				libmaus2::exception::LibMausException se;
-				se.getStream() << "AutoArray<>::getCacheLineSize(): cache line size detection not available." << std::endl;
-				se.finish();
-				throw se;
-			}
-			#endif
 
 			public:
 			N * take()
@@ -1079,34 +1238,7 @@ namespace libmaus2
 			{
 				decreaseTotalAllocation(n);
 
-				switch ( atype )
-				{
-					case alloc_type_cxx:
-						delete [] array;
-						break;
-					case alloc_type_c:
-						free(array);
-						break;
-					case alloc_type_memalign_cacheline:
-						#if defined(_WIN32) || defined(LIBMAUS2_HAVE_POSIX_MEMALIGN)
-						free(array);
-						#else
-						AlignedAllocation<N,alloc_type_memalign_cacheline>::freeAligned(array);
-						#endif
-						break;
-					case alloc_type_memalign_pagesize:
-						#if defined(_WIN32) || defined(LIBMAUS2_HAVE_POSIX_MEMALIGN)
-						free(array);
-						#else
-						AlignedAllocation<N,alloc_type_memalign_pagesize>::freeAligned(array);
-						#endif
-						break;
-					case alloc_type_hugepages:
-					case alloc_type_hugepages_memalign_cacheline:
-					case alloc_type_hugepages_memalign_pagesize:
-						libmaus2::util::HugePages::getHugePageObject().free(array);
-						break;
-				}
+				AutoArrayAllocate<value_type,atype>::deallocate(array);
 
 				array = 0;
 				n = 0;
@@ -1522,7 +1654,7 @@ namespace libmaus2
 				else
 				{
 					libmaus2::exception::LibMausException ex;
-					ex.getStream() << "AutoArray<"<<getTypeName()<<">::at(" << i << "): index is out of bounds for array of size " << size() << std::endl;
+					ex.getStream() << "AutoArray<"<< AutoArrayBase<value_type,atype>::getTypeName()<<">::at(" << i << "): index is out of bounds for array of size " << size() << std::endl;
 					ex.finish();
 					throw ex;
 				}
@@ -1540,7 +1672,7 @@ namespace libmaus2
 				else
 				{
 					libmaus2::exception::LibMausException ex;
-					ex.getStream() << "AutoArray<"<<getTypeName()<<">::at(" << i << "): index is out of bounds for array of size " << size() << std::endl;
+					ex.getStream() << "AutoArray<"<<AutoArrayBase<value_type,atype>::getTypeName()<<">::at(" << i << "): index is out of bounds for array of size " << size() << std::endl;
 					ex.finish();
 					throw ex;
 				}
@@ -1554,7 +1686,7 @@ namespace libmaus2
 			AutoArray<N,atype> & operator=(AutoArray<N,atype> const & o)
 			{
 				#if defined(AUTOARRAY_DEBUG)
-				std::cerr << this << "," << getTypeName() << "::operator=(" << &o << ")" << std::endl;;
+				std::cerr << this << "," << AutoArrayBase<value_type,atype>::getTypeName() << "::operator=(" << &o << ")" << std::endl;;
 				#endif
 
 				if ( this != &o )


=====================================
src/libmaus2/bambam/ReadEndsBlockIndexSet.hpp
=====================================
@@ -33,12 +33,8 @@ namespace libmaus2
 {
 	namespace bambam
 	{
-		struct ReadEndsBlockIndexSet
+		struct ReadEndsBlockIndexSetBase
 		{
-			typedef ReadEndsBlockIndexSet this_type;
-			typedef libmaus2::util::unique_ptr<this_type>::type unique_ptr_type;
-			typedef libmaus2::util::shared_ptr<this_type>::type shared_ptr_type;
-
 			typedef libmaus2::index::ExternalMemoryIndexDecoder<
 				libmaus2::bambam::ReadEndsBase,
 				libmaus2::bambam::ReadEndsContainerBase::baseIndexShift,
@@ -54,55 +50,124 @@ namespace libmaus2
 				return numblocks;
 			}
 
-			std::vector<ReadEndsBlockDecoderBaseCollectionInfoBase> const info;
-			uint64_t const numblocks;
-			std::vector<uint64_t> O;
-			libmaus2::autoarray::AutoArray<libmaus2::aio::InputStreamInstance::unique_ptr_type> indexstreams;
-			libmaus2::autoarray::AutoArray<index_decoder_pointer_type> indexes;
-
-			ReadEndsBlockIndexSet(std::vector<ReadEndsBlockDecoderBaseCollectionInfoBase> const & rinfo)
-			: info(rinfo), numblocks(computeNumBlocks(rinfo)), O(rinfo.size()), indexstreams(rinfo.size()), indexes(numblocks)
+			static std::vector<uint64_t> computeO(std::vector<ReadEndsBlockDecoderBaseCollectionInfoBase> const & info)
 			{
+				std::vector<uint64_t> O(info.size());
+
 				for ( uint64_t i = 1; i < O.size(); ++i )
-					O[i] = O[i-1] + rinfo[i-1].indexoffset.size();
+					O[i] = O[i-1] + info[i-1].indexoffset.size();
 
-				for ( uint64_t i = 0; i < rinfo.size(); ++i )
+				return O;
+			}
+
+			static libmaus2::autoarray::AutoArray<libmaus2::aio::InputStreamInstance::unique_ptr_type>::unique_ptr_type openIndexStreams(
+				std::vector<ReadEndsBlockDecoderBaseCollectionInfoBase> const & info
+			)
+			{
+				libmaus2::autoarray::AutoArray<libmaus2::aio::InputStreamInstance::unique_ptr_type>::unique_ptr_type indexstreams(
+					new libmaus2::autoarray::AutoArray<libmaus2::aio::InputStreamInstance::unique_ptr_type>(info.size())
+				);
+
+				for ( uint64_t i = 0; i < info.size(); ++i )
 				{
 					libmaus2::aio::InputStreamInstance::unique_ptr_type tptr(
-						new libmaus2::aio::InputStreamInstance(rinfo[i].indexfilename)
+						new libmaus2::aio::InputStreamInstance(info[i].indexfilename)
 					);
-					indexstreams[i] = UNIQUE_PTR_MOVE(tptr);
+					(*indexstreams)[i] = UNIQUE_PTR_MOVE(tptr);
+				}
 
-					for ( uint64_t j = 0; j < rinfo[i].indexoffset.size(); ++j )
+				return indexstreams;
+			}
+
+			static uint64_t getBaseBlockSize()
+			{
+				return libmaus2::bambam::ReadEndsContainerBase::baseIndexStep;
+			}
+
+			static libmaus2::autoarray::AutoArray<index_decoder_pointer_type>::unique_ptr_type openIndexes(
+				std::vector<ReadEndsBlockDecoderBaseCollectionInfoBase> const & info,
+				libmaus2::autoarray::AutoArray<libmaus2::aio::InputStreamInstance::unique_ptr_type>::unique_ptr_type & indexstreams,
+				uint64_t const numblocks,
+				std::vector<uint64_t> const & O
+			)
+			{
+				libmaus2::autoarray::AutoArray<index_decoder_pointer_type>::unique_ptr_type indexes(
+					new libmaus2::autoarray::AutoArray<index_decoder_pointer_type>(numblocks)
+				);
+
+				for ( uint64_t i = 0; i < indexstreams->size(); ++i )
+				{
+					std::istream & str = *((*indexstreams)[i]);
+
+					for ( uint64_t j = 0; j < info[i].indexoffset.size(); ++j )
 					{
-						indexstreams[i]->clear();
-						indexstreams[i]->seekg(rinfo[i].indexoffset[j]);
+						str.clear();
+						str.seekg(info[i].indexoffset[j]);
 						index_decoder_pointer_type iptr(
-							new index_decoder_type(*(indexstreams[i]))
+							new index_decoder_type(str)
 						);
-						indexes[O[i] + j] = UNIQUE_PTR_MOVE(iptr);
+						(*indexes)[O[i] + j] = UNIQUE_PTR_MOVE(iptr);
 					}
 				}
+
+				return indexes;
 			}
+		};
 
-			uint64_t size() const
+		struct ReadEndsBlockIndexSetData : public ReadEndsBlockIndexSetBase
+		{
+			typedef ReadEndsBlockIndexSetData this_type;
+			typedef libmaus2::util::unique_ptr<this_type>::type unique_ptr_type;
+			typedef libmaus2::util::shared_ptr<this_type>::type shared_ptr_type;
+
+			private:
+			index_decoder_type & operator[](uint64_t i)
 			{
-				return numblocks;
+				return *((*indexes)[i]);
 			}
 
-			index_decoder_type & operator[](uint64_t i)
+			public:
+			std::vector<ReadEndsBlockDecoderBaseCollectionInfoBase> const info;
+			uint64_t const numblocks;
+			std::vector<uint64_t> const O;
+
+			private:
+			libmaus2::autoarray::AutoArray<libmaus2::aio::InputStreamInstance::unique_ptr_type>::unique_ptr_type indexstreams;
+			libmaus2::autoarray::AutoArray<index_decoder_pointer_type>::unique_ptr_type indexes;
+			libmaus2::parallel::StdMutex mutex;
+
+			public:
+			ReadEndsBlockIndexSetData(std::vector<ReadEndsBlockDecoderBaseCollectionInfoBase> const & rinfo)
+			: info(rinfo), numblocks(computeNumBlocks(rinfo)), O(computeO(rinfo)), indexstreams(openIndexStreams(rinfo)), indexes(openIndexes(rinfo,indexstreams,numblocks,O)), mutex()
+			{
+			}
+
+			uint64_t size() const
 			{
-				return *(indexes[i]);
+				return numblocks;
 			}
 
 			std::pair<uint64_t,uint64_t> getOffset(uint64_t const block, uint64_t const subblock)
 			{
-				return (*this)[block][subblock];
+				std::pair<uint64_t,uint64_t> P;
+				{
+					libmaus2::parallel::ScopeStdMutex smutex(mutex);
+					P = (*this)[block][subblock];
+				}
+				return P;
 			}
+		};
 
-			static uint64_t getBaseBlockSize()
+		struct ReadEndsBlockIndexSet : public ReadEndsBlockIndexSetBase
+		{
+			typedef ReadEndsBlockIndexSet this_type;
+			typedef libmaus2::util::unique_ptr<this_type>::type unique_ptr_type;
+			typedef libmaus2::util::shared_ptr<this_type>::type shared_ptr_type;
+
+			ReadEndsBlockIndexSetData & data;
+
+			ReadEndsBlockIndexSet(ReadEndsBlockIndexSetData & rdata) : data(rdata)
 			{
-				return libmaus2::bambam::ReadEndsContainerBase::baseIndexStep;
 			}
 
 			std::pair<uint64_t,uint64_t> merge(
@@ -119,29 +184,29 @@ namespace libmaus2
 					exp += V[i].second-V[i].first;
 				}
 
-				libmaus2::autoarray::AutoArray<libmaus2::aio::InputStreamInstance::unique_ptr_type> datastreams(info.size());
-				libmaus2::autoarray::AutoArray<libmaus2::lz::SnappyInputStream::unique_ptr_type> zdatastreams(size());
+				libmaus2::autoarray::AutoArray<libmaus2::aio::InputStreamInstance::unique_ptr_type> datastreams(data.info.size());
+				libmaus2::autoarray::AutoArray<libmaus2::lz::SnappyInputStream::unique_ptr_type> zdatastreams(data.size());
 				libmaus2::bambam::ReadEnds R;
 
-				for ( uint64_t i = 0; i < info.size(); ++i )
+				for ( uint64_t i = 0; i < data.info.size(); ++i )
 				{
 					// open data stream
 					libmaus2::aio::InputStreamInstance::unique_ptr_type tptr(
-						new libmaus2::aio::InputStreamInstance(info[i].datafilename)
+						new libmaus2::aio::InputStreamInstance(data.info[i].datafilename)
 					);
 					datastreams[i] = UNIQUE_PTR_MOVE(tptr);
 
 					// set up uncompressors
-					for ( uint64_t j = 0; j < info[i].indexoffset.size(); ++j )
+					for ( uint64_t j = 0; j < data.info[i].indexoffset.size(); ++j )
 					{
-						uint64_t const blockid    = O[i] + j;
+						uint64_t const blockid    = data.O[i] + j;
 						uint64_t const vlow  = V[blockid].first;
 						uint64_t const vhigh = V[blockid].second;
 						uint64_t const subblockid = vlow / getBaseBlockSize();
 
 						if ( vlow < vhigh )
 						{
-							std::pair<uint64_t,uint64_t> const zoffset = getOffset(blockid,subblockid);
+							std::pair<uint64_t,uint64_t> const zoffset = data.getOffset(blockid,subblockid);
 
 							libmaus2::lz::SnappyInputStream::unique_ptr_type zptr(
 								new libmaus2::lz::SnappyInputStream(
@@ -234,29 +299,29 @@ namespace libmaus2
 					exp += V[i].second-V[i].first;
 				}
 
-				libmaus2::autoarray::AutoArray<libmaus2::aio::InputStreamInstance::unique_ptr_type> datastreams(info.size());
-				libmaus2::autoarray::AutoArray<libmaus2::lz::SnappyInputStream::unique_ptr_type> zdatastreams(size());
+				libmaus2::autoarray::AutoArray<libmaus2::aio::InputStreamInstance::unique_ptr_type> datastreams(data.info.size());
+				libmaus2::autoarray::AutoArray<libmaus2::lz::SnappyInputStream::unique_ptr_type> zdatastreams(data.size());
 				libmaus2::bambam::ReadEnds R;
 
-				for ( uint64_t i = 0; i < info.size(); ++i )
+				for ( uint64_t i = 0; i < data.info.size(); ++i )
 				{
 					// open data stream
 					libmaus2::aio::InputStreamInstance::unique_ptr_type tptr(
-						new libmaus2::aio::InputStreamInstance(info[i].datafilename)
+						new libmaus2::aio::InputStreamInstance(data.info[i].datafilename)
 					);
 					datastreams[i] = UNIQUE_PTR_MOVE(tptr);
 
 					// set up uncompressors
-					for ( uint64_t j = 0; j < info[i].indexoffset.size(); ++j )
+					for ( uint64_t j = 0; j < data.info[i].indexoffset.size(); ++j )
 					{
-						uint64_t const blockid    = O[i] + j;
+						uint64_t const blockid    = data.O[i] + j;
 						uint64_t const vlow = V[blockid].first;
 						uint64_t const vhigh = V[blockid].second;
 
 						if ( vlow < vhigh )
 						{
 							uint64_t const subblockid = vlow / getBaseBlockSize();
-							std::pair<uint64_t,uint64_t> const zoffset = getOffset(blockid,subblockid);
+							std::pair<uint64_t,uint64_t> const zoffset = data.getOffset(blockid,subblockid);
 
 							libmaus2::lz::SnappyInputStream::unique_ptr_type zptr(
 								new libmaus2::lz::SnappyInputStream(
@@ -367,29 +432,29 @@ namespace libmaus2
 					exp += V[i].second-V[i].first;
 				}
 
-				libmaus2::autoarray::AutoArray<libmaus2::aio::InputStreamInstance::unique_ptr_type> datastreams(info.size());
-				libmaus2::autoarray::AutoArray<libmaus2::lz::SnappyInputStream::unique_ptr_type> zdatastreams(size());
+				libmaus2::autoarray::AutoArray<libmaus2::aio::InputStreamInstance::unique_ptr_type> datastreams(data.info.size());
+				libmaus2::autoarray::AutoArray<libmaus2::lz::SnappyInputStream::unique_ptr_type> zdatastreams(data.size());
 				libmaus2::bambam::ReadEnds R;
 
-				for ( uint64_t i = 0; i < info.size(); ++i )
+				for ( uint64_t i = 0; i < data.info.size(); ++i )
 				{
 					// open data stream
 					libmaus2::aio::InputStreamInstance::unique_ptr_type tptr(
-						new libmaus2::aio::InputStreamInstance(info[i].datafilename)
+						new libmaus2::aio::InputStreamInstance(data.info[i].datafilename)
 					);
 					datastreams[i] = UNIQUE_PTR_MOVE(tptr);
 
 					// set up uncompressors
-					for ( uint64_t j = 0; j < info[i].indexoffset.size(); ++j )
+					for ( uint64_t j = 0; j < data.info[i].indexoffset.size(); ++j )
 					{
-						uint64_t const blockid    = O[i] + j;
+						uint64_t const blockid    = data.O[i] + j;
 						uint64_t const vlow = V[blockid].first;
 						uint64_t const vhigh = V[blockid].second;
 
 						if ( vlow < vhigh )
 						{
 							uint64_t const subblockid = vlow / getBaseBlockSize();
-							std::pair<uint64_t,uint64_t> const zoffset = getOffset(blockid,subblockid);
+							std::pair<uint64_t,uint64_t> const zoffset = data.getOffset(blockid,subblockid);
 
 							libmaus2::lz::SnappyInputStream::unique_ptr_type zptr(
 								new libmaus2::lz::SnappyInputStream(


=====================================
src/libmaus2/bambam/parallel/BlockSortControl.hpp
=====================================
@@ -420,6 +420,8 @@ namespace libmaus2
 
 				int verbose;
 
+				uint64_t const fragmergepar;
+
 				void freeBuffers()
 				{
 					fragmentBufferFreeListPreSort.reset();
@@ -466,6 +468,7 @@ namespace libmaus2
 					libmaus2::parallel::SimpleThreadPool & rSTP,
 					std::istream & in,
 					int const level,
+					uint64_t const rfragmergepar,
 					std::string const & rtempfileprefix,
 					std::string const & rhash,
 					bool const rfixmates = true,
@@ -546,7 +549,8 @@ namespace libmaus2
 					unmergeFragReadEndsRegions(0),
 					unmergePairReadEndsRegions(0),
 					hash(rhash),
-					verbose(0)
+					verbose(0),
+					fragmergepar(rfragmergepar)
 				{
 					STP.registerDispatcher(GICRPDid,&GICRPD);
 					STP.registerDispatcher(GIBDWPDid,&GIBDWPD);
@@ -1284,7 +1288,9 @@ namespace libmaus2
 					}
 				}
 
-				void enqueMergeFragReadEndsLists()
+				void enqueMergeFragReadEndsLists(
+					libmaus2::parallel::StdSemaphore::shared_ptr_type psem
+				)
 				{
 					if ( verbose )
 					{
@@ -1329,11 +1335,14 @@ namespace libmaus2
 						libmaus2::parallel::ScopeStdSpinLock slock(libmaus2::aio::StreamLock::cerrlock);
 						std::cerr << "\t\t(enque FragReadEndsMergeWorkPackage)\n";
 					}
+					libmaus2::bambam::ReadEndsBlockIndexSetData::shared_ptr_type setData(
+						new libmaus2::bambam::ReadEndsBlockIndexSetData(*MI)
+					);
 					for ( uint64_t i = 0; i < SMI.size(); ++i )
 					{
 						ReadEndsMergeRequest req(Pdupbitvec.get(),MI,SMI[i]);
 						FragReadEndsMergeWorkPackage * package = fragReadEndsMergeWorkPackages.getPackage();
-						*package = FragReadEndsMergeWorkPackage(req,0/*prio*/,FREMWPDid);
+						*package = FragReadEndsMergeWorkPackage(req,setData,psem,0/*prio*/,FREMWPDid);
 						package->subid = i;
 						STP.enque(package);
 					}
@@ -1344,7 +1353,9 @@ namespace libmaus2
 					}
 				}
 
-				void enqueMergePairReadEndsLists()
+				void enqueMergePairReadEndsLists(
+					libmaus2::parallel::StdSemaphore::shared_ptr_type psem
+				)
 				{
 					if ( verbose )
 					{
@@ -1389,11 +1400,14 @@ namespace libmaus2
 						libmaus2::parallel::ScopeStdSpinLock slock(libmaus2::aio::StreamLock::cerrlock);
 						std::cerr << "\t\t(enque PairReadEndsMergeWorkPackage)\n";
 					}
+					libmaus2::bambam::ReadEndsBlockIndexSetData::shared_ptr_type setData(
+						new libmaus2::bambam::ReadEndsBlockIndexSetData(*MI)
+					);
 					for ( uint64_t i = 0; i < SMI.size(); ++i )
 					{
 						ReadEndsMergeRequest req(Pdupbitvec.get(),MI,SMI[i]);
 						PairReadEndsMergeWorkPackage * package = pairReadEndsMergeWorkPackages.getPackage();
-						*package = PairReadEndsMergeWorkPackage(req,0/*prio*/,PREMWPDid);
+						*package = PairReadEndsMergeWorkPackage(req,setData,psem,0/*prio*/,PREMWPDid);
 						package->subid = i;
 						STP.enque(package);
 					}
@@ -1784,6 +1798,13 @@ namespace libmaus2
 
 				void mergeReadEndsLists(std::ostream & metricsstr, std::string const progname)
 				{
+					// set up semaphore to limit parallelism
+					libmaus2::parallel::StdSemaphore::shared_ptr_type psem(
+						new libmaus2::parallel::StdSemaphore
+					);
+					for ( uint64_t i = 0; i < fragmergepar; ++i )
+						psem->post();
+
 					// set up duplicate data structure
 					uint64_t const ureadsParsed = static_cast<uint64_t>(readsParsed);
 					libmaus2::bitio::BitVector::unique_ptr_type Tdupbitvec(new libmaus2::bitio::BitVector(ureadsParsed));
@@ -1797,7 +1818,7 @@ namespace libmaus2
 						libmaus2::parallel::ScopeStdSpinLock slock(libmaus2::aio::StreamLock::cerrlock);
 						std::cerr << "\n\t(call enqueMergeFragReadEndsLists)\n";
 					}
-					enqueMergeFragReadEndsLists();
+					enqueMergeFragReadEndsLists(psem);
 					if ( verbose )
 					{
 						libmaus2::parallel::ScopeStdSpinLock slock(libmaus2::aio::StreamLock::cerrlock);
@@ -1809,7 +1830,7 @@ namespace libmaus2
 						libmaus2::parallel::ScopeStdSpinLock slock(libmaus2::aio::StreamLock::cerrlock);
 						std::cerr << "\t(call enqueMergePairReadEndsLists)\n";
 					}
-					enqueMergePairReadEndsLists();
+					enqueMergePairReadEndsLists(psem);
 					if ( verbose )
 					{
 						libmaus2::parallel::ScopeStdSpinLock slock(libmaus2::aio::StreamLock::cerrlock);


=====================================
src/libmaus2/bambam/parallel/FragReadEndsMergeWorkPackage.hpp
=====================================
@@ -21,6 +21,7 @@
 
 #include <libmaus2/parallel/SimpleThreadWorkPackage.hpp>
 #include <libmaus2/bambam/parallel/ReadEndsMergeRequest.hpp>
+#include <libmaus2/bambam/ReadEndsBlockIndexSet.hpp>
 
 namespace libmaus2
 {
@@ -35,6 +36,8 @@ namespace libmaus2
 				typedef libmaus2::util::shared_ptr<this_type>::type shared_ptr_type;
 
 				ReadEndsMergeRequest REQ;
+				libmaus2::bambam::ReadEndsBlockIndexSetData::shared_ptr_type setData;
+				libmaus2::parallel::StdSemaphore::shared_ptr_type psem;
 
 				FragReadEndsMergeWorkPackage() : libmaus2::parallel::SimpleThreadWorkPackage(), REQ()
 				{
@@ -42,11 +45,13 @@ namespace libmaus2
 				}
 				FragReadEndsMergeWorkPackage(
 					ReadEndsMergeRequest const & rREQ,
+					libmaus2::bambam::ReadEndsBlockIndexSetData::shared_ptr_type rsetData,
+					libmaus2::parallel::StdSemaphore::shared_ptr_type rpsem,
 					uint64_t const rpriority,
 					uint64_t const rdispatcherid,
 					uint64_t const rpackageid = 0
 				)
-				: libmaus2::parallel::SimpleThreadWorkPackage(rpriority,rdispatcherid,rpackageid), REQ(rREQ)
+				: libmaus2::parallel::SimpleThreadWorkPackage(rpriority,rdispatcherid,rpackageid), REQ(rREQ), setData(rsetData), psem(rpsem)
 				{
 
 				}
@@ -58,6 +63,8 @@ namespace libmaus2
 					{
 						libmaus2::parallel::SimpleThreadWorkPackage::operator=(O);
 						REQ = O.REQ;
+						setData = O.setData;
+						psem = O.psem;
 					}
 					return *this;
 				}


=====================================
src/libmaus2/bambam/parallel/FragReadEndsMergeWorkPackageDispatcher.hpp
=====================================
@@ -61,17 +61,23 @@ namespace libmaus2
 
 				virtual void dispatch(libmaus2::parallel::SimpleThreadWorkPackage * P, libmaus2::parallel::SimpleThreadPoolInterfaceEnqueTermInterface & /* tpi */)
 				{
+					FragReadEndsMergeWorkPackage * BP = NULL;
+					bool gotsem = false;
+
 					try
 					{
-						FragReadEndsMergeWorkPackage * BP = dynamic_cast<FragReadEndsMergeWorkPackage *>(P);
+						BP = dynamic_cast<FragReadEndsMergeWorkPackage *>(P);
 						assert ( BP );
 
+						BP->psem->wait();
+						gotsem = true;
+
 						if ( verbose )
 						{
 							libmaus2::parallel::ScopeStdSpinLock slock(libmaus2::aio::StreamLock::cerrlock);
 							std::cerr << "FragReadEndsMergeWorkPackageDispatcher package " << P << " instantiating ReadEndsBlockIndexSet" << std::endl;
 						}
-						ReadEndsBlockIndexSet fragindexset(*(BP->REQ.MI));
+						ReadEndsBlockIndexSet fragindexset(*(BP->setData));
 						if ( verbose )
 						{
 							libmaus2::parallel::ScopeStdSpinLock slock(libmaus2::aio::StreamLock::cerrlock);
@@ -119,6 +125,10 @@ namespace libmaus2
 						}
 
 						mergeFinishedInterface.fragReadEndsMergeWorkPackageFinished(BP);
+
+						BP->psem->post();
+						gotsem = false;
+
 						packageReturnInterface.fragReadEndsMergeWorkPackageReturn(BP);
 
 						if ( verbose )
@@ -129,6 +139,9 @@ namespace libmaus2
 					}
 					catch(std::exception const & ex)
 					{
+						if ( BP && gotsem )
+							BP->psem->post();
+
 						libmaus2::parallel::ScopeStdSpinLock slock(libmaus2::aio::StreamLock::cerrlock);
 						std::cerr << "FragReadEndsMergeWorkPackageDispatcher package " << P << " exception: " << ex.what() << std::endl;
 						throw;


=====================================
src/libmaus2/bambam/parallel/PairReadEndsMergeWorkPackage.hpp
=====================================
@@ -21,6 +21,7 @@
 
 #include <libmaus2/bambam/parallel/ReadEndsMergeRequest.hpp>
 #include <libmaus2/parallel/SimpleThreadWorkPackage.hpp>
+#include <libmaus2/bambam/ReadEndsBlockIndexSet.hpp>
 
 namespace libmaus2
 {
@@ -35,18 +36,22 @@ namespace libmaus2
 				typedef libmaus2::util::shared_ptr<this_type>::type shared_ptr_type;
 
 				ReadEndsMergeRequest REQ;
+				libmaus2::bambam::ReadEndsBlockIndexSetData::shared_ptr_type setData;
+				libmaus2::parallel::StdSemaphore::shared_ptr_type psem;
 
-				PairReadEndsMergeWorkPackage() : libmaus2::parallel::SimpleThreadWorkPackage(), REQ()
+				PairReadEndsMergeWorkPackage() : libmaus2::parallel::SimpleThreadWorkPackage(), REQ(), setData()
 				{
 
 				}
 				PairReadEndsMergeWorkPackage(
 					ReadEndsMergeRequest const & rREQ,
+					libmaus2::bambam::ReadEndsBlockIndexSetData::shared_ptr_type rsetData,
+					libmaus2::parallel::StdSemaphore::shared_ptr_type rpsem,
 					uint64_t const rpriority,
 					uint64_t const rdispatcherid,
 					uint64_t const rpackageid = 0
 				)
-				: libmaus2::parallel::SimpleThreadWorkPackage(rpriority,rdispatcherid,rpackageid), REQ(rREQ)
+				: libmaus2::parallel::SimpleThreadWorkPackage(rpriority,rdispatcherid,rpackageid), REQ(rREQ), setData(rsetData), psem(rpsem)
 				{
 
 				}
@@ -58,6 +63,8 @@ namespace libmaus2
 					{
 						libmaus2::parallel::SimpleThreadWorkPackage::operator=(O);
 						REQ = O.REQ;
+						setData = O.setData;
+						psem = O.psem;
 					}
 					return *this;
 				}


=====================================
src/libmaus2/bambam/parallel/PairReadEndsMergeWorkPackageDispatcher.hpp
=====================================
@@ -64,17 +64,23 @@ namespace libmaus2
 
 				virtual void dispatch(libmaus2::parallel::SimpleThreadWorkPackage * P, libmaus2::parallel::SimpleThreadPoolInterfaceEnqueTermInterface & /* tpi */)
 				{
+					PairReadEndsMergeWorkPackage * BP = NULL;
+					bool gotsem = false;
+
 					try
 					{
-						PairReadEndsMergeWorkPackage * BP = dynamic_cast<PairReadEndsMergeWorkPackage *>(P);
+						BP = dynamic_cast<PairReadEndsMergeWorkPackage *>(P);
 						assert ( BP );
 
+						BP->psem->wait();
+						gotsem = true;
+
 						if ( verbose )
 						{
 							libmaus2::parallel::ScopeStdSpinLock slock(libmaus2::aio::StreamLock::cerrlock);
 							std::cerr << "PairReadEndsMergeWorkPackageDispatcher package " << P << " instantiating ReadEndsBlockIndexSet" << std::endl;
 						}
-						ReadEndsBlockIndexSet pairindexset(*(BP->REQ.MI));
+						ReadEndsBlockIndexSet pairindexset(*(BP->setData));
 						if ( verbose )
 						{
 							libmaus2::parallel::ScopeStdSpinLock slock(libmaus2::aio::StreamLock::cerrlock);
@@ -123,6 +129,10 @@ namespace libmaus2
 						}
 
 						mergeFinishedInterface.pairReadEndsMergeWorkPackageFinished(BP);
+
+						BP->psem->post();
+						gotsem = false;
+
 						packageReturnInterface.pairReadEndsMergeWorkPackageReturn(BP);
 
 						if ( verbose )
@@ -133,6 +143,9 @@ namespace libmaus2
 					}
 					catch(std::exception const & ex)
 					{
+						if ( BP && gotsem )
+							BP->psem->post();
+
 						libmaus2::parallel::ScopeStdSpinLock slock(libmaus2::aio::StreamLock::cerrlock);
 						std::cerr << "PairReadEndsMergeWorkPackageDispatcher exception: " << ex.what() << std::endl;
 						throw;


=====================================
src/libmaus2/network/ClientSocket.hpp
=====================================
@@ -0,0 +1,92 @@
+/*
+    libmaus2
+    Copyright (C) 2009-2019 German Tischler
+    Copyright (C) 2011-2013 Genome Research Limited
+
+    This program is free software: you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program.  If not, see <http://www.gnu.org/licenses/>.
+*/
+#if ! defined(LIBMAUS2_CLIENTSOCKET_HPP)
+#define LIBMAUS2_CLIENTSOCKET_HPP
+
+#include <libmaus2/network/SocketBase.hpp>
+
+namespace libmaus2
+{
+	namespace network
+	{
+		struct ClientSocket : public SocketBase
+		{
+			typedef ClientSocket this_type;
+			typedef ::libmaus2::util::unique_ptr<this_type>::type unique_ptr_type;
+
+			ClientSocket(unsigned short port, char const * hostname)
+			: SocketBase()
+			{
+				setAddress(hostname, remaddr);
+				remaddr.sin_port = htons(port);
+				remaddrset = true;
+
+				while ( ::connect(getFD(),reinterpret_cast<const sockaddr *>(&remaddr),sizeof(remaddr)) != 0 )
+				{
+					int const error = errno;
+
+					switch ( error )
+					{
+						case EINTR:
+						case EAGAIN:
+							break;
+						default:
+						{
+							::libmaus2::exception::LibMausException se;
+							se.getStream() << "ClientSocket: connect() failed with error " << strerror(error) << std::endl;
+							se.finish();
+							throw se;
+						}
+					}
+				}
+			}
+
+			static SocketBase::unique_ptr_type baseCast(ClientSocket::unique_ptr_type & C)
+			{
+				int const fd = C->getFD();
+				C->releaseFD();
+
+				try
+				{
+					SocketBase::unique_ptr_type ptr ( new SocketBase(fd) );
+					return ptr;
+				}
+				catch(...)
+				{
+					::close(fd);
+					throw;
+				}
+			}
+
+			static SocketBase::unique_ptr_type baseAlloc(unsigned short const port, char const * const hostname)
+			{
+				ClientSocket::unique_ptr_type ptr ( new ClientSocket(port,hostname) );
+				SocketBase::unique_ptr_type baseptr = baseCast(ptr);
+				return baseptr;
+			}
+
+			static SocketBase::unique_ptr_type baseAlloc(unsigned short const port, std::string const & hostname)
+			{
+				SocketBase::unique_ptr_type baseptr = baseAlloc(port,hostname.c_str());
+				return baseptr;
+			}
+		};
+	}
+}
+#endif


=====================================
src/libmaus2/network/FtpSocket.hpp
=====================================
@@ -22,7 +22,8 @@
 #include <libmaus2/LibMausConfig.hpp>
 
 #include <libmaus2/network/FtpUrl.hpp>
-#include <libmaus2/network/Socket.hpp>
+#include <libmaus2/network/ClientSocket.hpp>
+#include <libmaus2/network/ServerSocket.hpp>
 #include <libmaus2/network/SocketInputStream.hpp>
 #include <libmaus2/util/stringFunctions.hpp>
 


=====================================
src/libmaus2/network/GnuTLSSocket.hpp
=====================================
@@ -25,7 +25,7 @@
 #endif
 
 #include <libmaus2/network/GnuTLSInit.hpp>
-#include <libmaus2/network/Socket.hpp>
+#include <libmaus2/network/ClientSocket.hpp>
 #include <libmaus2/network/SocketInputOutputInterface.hpp>
 
 #if defined(LIBMAUS2_HAVE_GNUTLS)


=====================================
src/libmaus2/network/HttpHeader.hpp
=====================================
@@ -22,7 +22,7 @@
 #include <libmaus2/LibMausConfig.hpp>
 
 #include <libmaus2/network/HttpAbsoluteUrl.hpp>
-#include <libmaus2/network/Socket.hpp>
+#include <libmaus2/network/ClientSocket.hpp>
 #include <libmaus2/network/GnuTLSSocket.hpp>
 #include <libmaus2/network/SocketInputStream.hpp>
 #include <libmaus2/util/stringFunctions.hpp>


=====================================
src/libmaus2/network/ServerSocket.hpp
=====================================
@@ -0,0 +1,229 @@
+/*
+    libmaus2
+    Copyright (C) 2009-2019 German Tischler
+    Copyright (C) 2011-2013 Genome Research Limited
+
+    This program is free software: you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program.  If not, see <http://www.gnu.org/licenses/>.
+*/
+#if ! defined(LIBMAUS2_SERVERSOCKET_HPP)
+#define LIBMAUS2_SERVERSOCKET_HPP
+
+#include <libmaus2/network/SocketBase.hpp>
+
+namespace libmaus2
+{
+	namespace network
+	{
+		struct ServerSocket : public SocketBase
+		{
+			typedef ServerSocket this_type;
+			typedef ::libmaus2::util::unique_ptr<this_type>::type unique_ptr_type;
+
+			sockaddr_in recadr;
+
+			unsigned short getPort() const
+			{
+				return ntohs(recadr.sin_port);
+			}
+
+			static unique_ptr_type allocateServerSocket(
+				unsigned short & port,
+				unsigned int const backlog,
+				std::string const & hostname,
+				unsigned int tries)
+			{
+				unique_ptr_type ptr(allocateServerSocket(port,backlog,hostname.c_str(),tries));
+				return ptr;
+			}
+
+			static unique_ptr_type allocateServerSocket(
+				unsigned short & port,
+				unsigned int const backlog,
+				char const * hostname,
+				unsigned int tries)
+			{
+				for ( unsigned int i = 0; i < tries; ++i )
+				{
+					try
+					{
+						return unique_ptr_type ( new this_type(port,backlog,hostname) );
+					}
+					catch(std::exception const & ex)
+					{
+						// std::cerr << ex.what() << std::endl;
+						port++;
+					}
+				}
+
+				::libmaus2::exception::LibMausException ex;
+				ex.getStream() << "Failed to allocate ServerSocket (no ports available)";
+				ex.finish();
+				throw ex;
+			}
+
+			ServerSocket(unsigned short rport, unsigned int backlog, char const * hostname)
+			: SocketBase()
+			{
+				memset(&recadr,0,sizeof(recadr));
+
+				setAddress(hostname, recadr);
+				recadr.sin_port = htons(rport);
+
+				while ( ::bind ( getFD(), reinterpret_cast<struct sockaddr *>(&recadr), sizeof(recadr) ) != 0 )
+				{
+					int const error = errno;
+
+					switch ( error )
+					{
+						case EINTR:
+						case EAGAIN:
+							break;
+						case EADDRINUSE:
+							throw std::runtime_error("bind: address is already in use.");
+						default:
+						{
+							::libmaus2::exception::LibMausException se;
+							se.getStream() << "ServerSocket: bind() failed with error " << strerror(error) << std::endl;
+							se.finish();
+							throw se;
+						}
+					}
+				}
+
+				while ( ::listen ( getFD(), backlog ) != 0 )
+				{
+					int const error = errno;
+
+					switch ( error )
+					{
+						case EINTR:
+						case EAGAIN:
+							break;
+						default:
+						{
+							::libmaus2::exception::LibMausException se;
+							se.getStream() << "ServerSocket: listen() failed with error " << strerror(error) << std::endl;
+							se.finish();
+							throw se;
+						}
+					}
+				}
+			}
+
+			~ServerSocket()
+			{
+			}
+
+			SocketBase::unique_ptr_type accept()
+			{
+				sockaddr_in aadr;
+
+				#if defined(LIBMAUS2_HAVE_SOCKLEN_T)
+				socklen_t
+				#else
+				int
+				#endif
+					len = sizeof(aadr);
+
+				int accfd;
+
+				while ( (accfd = ::accept(getFD(),reinterpret_cast<struct sockaddr *>(&aadr),&len)) < 0 )
+				{
+					int const error = errno;
+
+					switch ( error )
+					{
+						case EINTR:
+						case EAGAIN:
+							break;
+						default:
+						{
+							::libmaus2::exception::LibMausException se;
+							se.getStream() << "ServerSocket::accept: accept() failed with error " << strerror(errno) << std::endl;
+							se.finish();
+							throw se;
+						}
+					}
+				}
+
+				try
+				{
+					SocketBase::unique_ptr_type ptr(new SocketBase(accfd,&aadr));
+					return ptr;
+				}
+				catch(...)
+				{
+					::close(accfd);
+					throw;
+				}
+			}
+
+			SocketBase::shared_ptr_type acceptShared()
+			{
+				SocketBase::unique_ptr_type uptr(accept());
+				SocketBase * ptr = uptr.release();
+				SocketBase::shared_ptr_type sptr(ptr);
+				return sptr;
+			}
+
+			bool waitForConnection(unsigned int const t)
+			{
+				int r = -1;
+
+				while ( r < 0 )
+				{
+					fd_set fds;
+					FD_ZERO(&fds);
+					FD_SET(getFD(),&fds);
+					struct timeval timeout = {
+						static_cast<long>(t),
+						static_cast<long>(0)
+					};
+
+					r = ::select(getFD()+1,&fds,0,0,&timeout);
+
+					if ( r < 0 )
+					{
+						int const error = errno;
+
+						switch ( error )
+						{
+							case EINTR:
+							case EAGAIN:
+								break;
+							default:
+							{
+								::libmaus2::exception::LibMausException se;
+								se.getStream() << "ServerSocket::waitForConnection: select failed on socket with error " << strerror(error) << std::endl;
+								se.finish();
+								throw se;
+							}
+						}
+					}
+				}
+
+				if ( r == 0 )
+				{
+					return false;
+				}
+				else
+				{
+					assert ( r > 0 );
+					return true;
+				}
+			}
+		};
+	}
+}
+#endif


=====================================
src/libmaus2/network/Socket.hpp → src/libmaus2/network/SocketBase.hpp
=====================================
@@ -1,6 +1,6 @@
 /*
     libmaus2
-    Copyright (C) 2009-2013 German Tischler
+    Copyright (C) 2009-2019 German Tischler
     Copyright (C) 2011-2013 Genome Research Limited
 
     This program is free software: you can redistribute it and/or modify
@@ -16,9 +16,10 @@
     You should have received a copy of the GNU General Public License
     along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */
+#if ! defined(LIBMAUS2_SOCKETBASE_HPP)
+#define LIBMAUS2_SOCKETBASE_HPP
 
-#if ! defined(LIBMAUS2_SOCKET_HPP)
-#define LIBMAUS2_SOCKET_HPP
+#include <libmaus2/LibMausWindows.hpp>
 
 #if defined(LIBMAUAS2_HAVE_UNISTD_H)
 #include <unistd.h>
@@ -48,7 +49,9 @@
 #include <sys/ioctl.h>
 #endif
 
+#if defined(LIBMAUS2_HAVE_LIBGEN_H)
 #include <libgen.h>
+#endif
 
 #if defined(LIBMAUS2_HAVE_NETDB_H)
 #include <netdb.h>
@@ -66,27 +69,20 @@
 #include <sys/resource.h>
 #endif
 
-#include <libmaus2/LibMausWindows.hpp>
-
+#include <cerrno>
 #include <climits>
 #include <cstdlib>
 #include <cstring>
-#include <cerrno>
 #include <iostream>
 #include <set>
+#include <stdexcept>
 
 #include <libmaus2/exception/LibMausException.hpp>
-#include <libmaus2/util/unique_ptr.hpp>
-#include <libmaus2/util/shared_ptr.hpp>
 #include <libmaus2/network/GetHostName.hpp>
 #include <libmaus2/network/SocketInputOutputInterface.hpp>
-#include <stdexcept>
-
 #include <libmaus2/posix/PosixFunctions.hpp>
-
-#if defined(__APPLE__)
-#include <netinet/tcp.h>
-#endif
+#include <libmaus2/util/unique_ptr.hpp>
+#include <libmaus2/util/shared_ptr.hpp>
 
 namespace libmaus2
 {
@@ -111,7 +107,7 @@ namespace libmaus2
 			{
 				if ( fd != -1 )
 				{
-					close(fd);
+					::close(fd);
 					fd = -1;
 				}
 			}
@@ -140,25 +136,31 @@ namespace libmaus2
 			{
 				while ( len )
 				{
-					::libmaus2::ssize_t wr = ::libmaus2::posix::PosixFunctions::write ( fd, data, len );
+					::libmaus2::ssize_t const wr = ::libmaus2::posix::PosixFunctions::write ( fd, data, len );
 
 					if ( wr < 0 )
 					{
-						if ( errno == EINTR )
-						{
-							std::cerr << "write interrupted by signal." << std::endl;
-						}
-						else
+						int const error = errno;
+
+						switch ( error )
 						{
-							::libmaus2::exception::LibMausException se;
-							se.getStream() << "SocketBase::write() to " << getStringAddr() << " failed: " << strerror(errno);
-							se.finish();
-							throw se;
+							case EINTR:
+							case EAGAIN:
+								break;
+							default:
+							{
+								::libmaus2::exception::LibMausException se;
+								se.getStream() << "SocketBase::write() to " << getStringAddr() << " failed: " << strerror(errno);
+								se.finish();
+								throw se;
+							}
 						}
 					}
-
-					data += wr;
-					len -= wr;
+					else
+					{
+						data += wr;
+						len -= wr;
+					}
 				}
 			}
 
@@ -176,13 +178,27 @@ namespace libmaus2
 						data += red;
 						len -= red;
 					}
-					else if ( red < 0 && errno == EINTR )
+					else if ( red == 0 )
 					{
-						std::cerr << "read interrupted by signal." << std::endl;
+						len = 0;
 					}
 					else
 					{
-						len = 0;
+						int const error = errno;
+
+						switch ( error )
+						{
+							case EINTR:
+							case EAGAIN:
+								break;
+							default:
+							{
+								::libmaus2::exception::LibMausException se;
+								se.getStream() << "SocketBase::read() to " << getStringAddr() << " failed: " << strerror(errno);
+								se.finish();
+								throw se;
+							}
+						}
 					}
 				}
 
@@ -203,13 +219,27 @@ namespace libmaus2
 						data += red;
 						len -= red;
 					}
-					else if ( red < 0 && errno == EINTR )
+					else if ( red == 0 )
 					{
-						std::cerr << "read interrupted by signal." << std::endl;
+						len = 0;
 					}
 					else
 					{
-						len = 0;
+						int const error = errno;
+
+						switch ( error )
+						{
+							case EINTR:
+							case EAGAIN:
+								break;
+							default:
+							{
+								::libmaus2::exception::LibMausException se;
+								se.getStream() << "SocketBase::readPart() to " << getStringAddr() << " failed: " << strerror(errno);
+								se.finish();
+								throw se;
+							}
+						}
 					}
 				}
 
@@ -349,16 +379,6 @@ namespace libmaus2
 				cleanup();
 			}
 
-			bool hasData()
-			{
-				fd_set readfds;
-				FD_ZERO(&readfds);
-				FD_SET(fd,&readfds);
-				struct timeval tv = { 0,0 };
-				int selok = ::select(fd+1,&readfds,0,0,&tv);
-				return selok > 0;
-			}
-
 			int getFD() const
 			{
 				return fd;
@@ -372,204 +392,6 @@ namespace libmaus2
 			}
 
 		};
-
-		struct ClientSocket : public SocketBase
-		{
-			typedef ClientSocket this_type;
-			typedef ::libmaus2::util::unique_ptr<this_type>::type unique_ptr_type;
-
-			ClientSocket(unsigned short port, char const * hostname)
-			: SocketBase()
-			{
-				setAddress(hostname, remaddr);
-				remaddr.sin_port = htons(port);
-				remaddrset = true;
-
-				if ( connect(getFD(),reinterpret_cast<const sockaddr *>(&remaddr),sizeof(remaddr)) != 0 )
-				{
-					::libmaus2::exception::LibMausException se;
-					se.getStream() << "connect() failed: " << strerror(errno);
-					se.finish();
-					throw se;
-				}
-			}
-
-			static SocketBase::unique_ptr_type baseCast(ClientSocket::unique_ptr_type & C)
-			{
-				int const fd = C->getFD();
-				C->releaseFD();
-
-				try
-				{
-					SocketBase::unique_ptr_type ptr ( new SocketBase(fd) );
-					return ptr;
-				}
-				catch(...)
-				{
-					close(fd);
-					throw;
-				}
-			}
-
-			static SocketBase::unique_ptr_type baseAlloc(unsigned short const port, char const * const hostname)
-			{
-				ClientSocket::unique_ptr_type ptr ( new ClientSocket(port,hostname) );
-				SocketBase::unique_ptr_type baseptr = baseCast(ptr);
-				return baseptr;
-			}
-
-			static SocketBase::unique_ptr_type baseAlloc(unsigned short const port, std::string const & hostname)
-			{
-
-				SocketBase::unique_ptr_type baseptr = baseAlloc(port,hostname.c_str());
-				return baseptr;
-			}
-		};
-
-		struct ServerSocket : public SocketBase
-		{
-			typedef ServerSocket this_type;
-			typedef ::libmaus2::util::unique_ptr<this_type>::type unique_ptr_type;
-
-			sockaddr_in recadr;
-
-			unsigned short getPort() const
-			{
-				return ntohs(recadr.sin_port);
-			}
-
-			static unique_ptr_type allocateServerSocket(
-				unsigned short & port,
-				unsigned int const backlog,
-				std::string const & hostname,
-				unsigned int tries)
-			{
-				unique_ptr_type ptr(allocateServerSocket(port,backlog,hostname.c_str(),tries));
-				return ptr;
-			}
-
-			static unique_ptr_type allocateServerSocket(
-				unsigned short & port,
-				unsigned int const backlog,
-				char const * hostname,
-				unsigned int tries)
-			{
-				for ( unsigned int i = 0; i < tries; ++i )
-				{
-					try
-					{
-						return unique_ptr_type ( new this_type(port,backlog,hostname) );
-					}
-					catch(std::exception const & ex)
-					{
-						// std::cerr << ex.what() << std::endl;
-						port++;
-					}
-				}
-
-				::libmaus2::exception::LibMausException ex;
-				ex.getStream() << "Failed to allocate ServerSocket (no ports available)";
-				ex.finish();
-				throw ex;
-			}
-
-			ServerSocket(unsigned short rport, unsigned int backlog, char const * hostname)
-			: SocketBase()
-			{
-				memset(&recadr,0,sizeof(recadr));
-
-				setAddress(hostname, recadr);
-				recadr.sin_port = htons(rport);
-
-				if ( bind ( getFD(), reinterpret_cast<struct sockaddr *>(&recadr), sizeof(recadr) ) != 0 )
-				{
-					if ( errno == EADDRINUSE )
-						throw std::runtime_error("bind: address is already in use.");
-
-					// cleanup();
-					::libmaus2::exception::LibMausException se;
-					se.getStream() << "bind() failed: " << strerror(errno);
-					se.finish();
-					throw se;
-				}
-
-				if ( listen ( getFD(), backlog ) != 0 )
-				{
-					// cleanup();
-					::libmaus2::exception::LibMausException se;
-					se.getStream() << "listen() failed: " << strerror(errno);
-					se.finish();
-					throw se;
-				}
-			}
-
-			~ServerSocket()
-			{
-			}
-
-			SocketBase::unique_ptr_type accept()
-			{
-				sockaddr_in aadr;
-
-				#if defined(LIBMAUS2_HAVE_SOCKLEN_T)
-				socklen_t
-				#else
-				int
-				#endif
-					len = sizeof(aadr);
-
-				int afd = ::accept(getFD(),reinterpret_cast<struct sockaddr *>(&aadr),&len);
-
-				if ( afd < 0 )
-				{
-					::libmaus2::exception::LibMausException se;
-					se.getStream() << "accept() failed: " << strerror(errno);
-					se.finish();
-					throw se;
-				}
-				else
-				{
-					return SocketBase::unique_ptr_type(new SocketBase(afd,&aadr));
-				}
-			}
-
-			SocketBase::shared_ptr_type acceptShared()
-			{
-				SocketBase::unique_ptr_type uptr(accept());
-				SocketBase * ptr = uptr.release();
-				SocketBase::shared_ptr_type sptr(ptr);
-				return sptr;
-			}
-
-			bool waitForConnection(unsigned int const t)
-			{
-				fd_set fds;
-				FD_ZERO(&fds);
-				FD_SET(getFD(),&fds);
-				struct timeval timeout = {
-					static_cast<long>(t),
-					static_cast<long>(0)
-				};
-
-				int const r = ::select(getFD()+1,&fds,0,0,&timeout);
-
-				if ( r < 0 )
-				{
-					::libmaus2::exception::LibMausException se;
-					se.getStream() << "select failed on socket." << std::endl;
-					se.finish();
-					throw se;
-				}
-				else if ( r == 0 )
-				{
-					return false;
-				}
-				else
-				{
-					return true;
-				}
-			}
-		};
 	}
 }
 #endif


=====================================
src/libmaus2/network/SocketInputStreamBuffer.hpp
=====================================
@@ -21,7 +21,7 @@
 
 #include <streambuf>
 #include <istream>
-#include <libmaus2/network/Socket.hpp>
+#include <libmaus2/network/SocketInputOutputInterface.hpp>
 
 namespace libmaus2
 {


=====================================
src/libmaus2/rank/ImpCacheLineRank.hpp
=====================================
@@ -25,7 +25,6 @@
 #include <libmaus2/select/ESelectBase.hpp>
 #include <libmaus2/bitio/getBit.hpp>
 #include <libmaus2/aio/SynchronousGenericOutput.hpp>
-#include <libmaus2/network/Socket.hpp>
 
 namespace libmaus2
 {


=====================================
src/libmaus2/suffixsort/SkewSuffixSort.hpp
=====================================
@@ -23,7 +23,6 @@
 #include <libmaus2/autoarray/AutoArray.hpp>
 #include <libmaus2/aio/SynchronousGenericInput.hpp>
 #include <libmaus2/aio/SynchronousGenericOutput.hpp>
-#include <libmaus2/aio/OutputBuffer8.hpp>
 #include <libmaus2/util/GetFileSize.hpp>
 #include <limits>
 


=====================================
src/test/testfqbgzf.cpp
=====================================
@@ -21,8 +21,6 @@
 #include <libmaus2/lz/BgzfDeflateParallel.hpp>
 #include <libmaus2/util/TempFileRemovalContainer.hpp>
 #include <libmaus2/fastx/StreamFastQReader.hpp>
-#include <libmaus2/network/Socket.hpp>
-#include <libmaus2/network/SocketInputStream.hpp>
 
 struct PatternBuffer : public libmaus2::util::PushBuffer<libmaus2::fastx::StreamFastQReader::pattern_type>
 {


=====================================
src/test/testparallelbamblocksort.cpp
=====================================
@@ -88,6 +88,7 @@ int parallelbamblocksort(libmaus2::util::ArgInfo const & arginfo,
 	int const templevel = arginfo.getValue<int>("level",1);
 	std::string const hash = arginfo.getValue<std::string>("hash","crc32prod");
 	std::string const filehash = arginfo.getValue<std::string>("filehash","md5");
+	uint64_t const fragmergepar = arginfo.getValue<uint64_t>("fragmergepar",numlogcpus);
 
 	std::string const sinputformat = arginfo.getUnparsedValue("inputformat","bam");
 	libmaus2::bambam::parallel::BlockSortControlBase::block_sort_control_input_enum inform = libmaus2::bambam::parallel::BlockSortControlBase::block_sort_control_input_bam;
@@ -111,7 +112,7 @@ int parallelbamblocksort(libmaus2::util::ArgInfo const & arginfo,
 	libmaus2::parallel::SimpleThreadPool STP(numlogcpus);
 	typename libmaus2::bambam::parallel::BlockSortControl<order_type,create_dup_mark_info>::unique_ptr_type VC(
 		new libmaus2::bambam::parallel::BlockSortControl<order_type,create_dup_mark_info>(
-			inform,STP,in,templevel,tmpfilebase,hash,fixmates,dupmarksupport
+			inform,STP,in,templevel,fragmergepar,tmpfilebase,hash,fixmates,dupmarksupport
 		)
 	);
 	VC->enqueReadPackage();



View it on GitLab: https://salsa.debian.org/med-team/libmaus2/commit/f9353a7e6bc7ae75a85377db3005b6f5e171c109

-- 
View it on GitLab: https://salsa.debian.org/med-team/libmaus2/commit/f9353a7e6bc7ae75a85377db3005b6f5e171c109
You're receiving this email because of your account on salsa.debian.org.


-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://alioth-lists.debian.net/pipermail/debian-med-commit/attachments/20190819/63ffdf75/attachment-0001.html>


More information about the debian-med-commit mailing list