diff options
76 files changed, 744 insertions, 353 deletions
diff --git a/Makefile.in b/Makefile.in index eff5713..5222c19 100644 --- a/Makefile.in +++ b/Makefile.in @@ -42,6 +42,7 @@ DIST_COMMON = README $(am__configure_deps) $(srcdir)/Makefile.am \ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/argz.m4 \ $(top_srcdir)/m4/ax_boost_base.m4 \ + $(top_srcdir)/m4/ax_boost_signals.m4 \ $(top_srcdir)/m4/ax_boost_thread.m4 \ $(top_srcdir)/m4/ax_lib_mysql.m4 $(top_srcdir)/m4/libtool.m4 \ $(top_srcdir)/m4/ltdl.m4 $(top_srcdir)/m4/ltoptions.m4 \ @@ -89,6 +90,7 @@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BOOST_CPPFLAGS = @BOOST_CPPFLAGS@ BOOST_LDFLAGS = @BOOST_LDFLAGS@ +BOOST_SIGNALS_LIB = @BOOST_SIGNALS_LIB@ BOOST_THREAD_LIB = @BOOST_THREAD_LIB@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ @@ -220,8 +222,6 @@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ -sigc_CFLAGS = @sigc_CFLAGS@ -sigc_LIBS = @sigc_LIBS@ srcdir = @srcdir@ sys_symbol_underscore = @sys_symbol_underscore@ sysconfdir = @sysconfdir@ @@ -908,6 +908,7 @@ AC_SUBST([am__untar]) m4_include([m4/argz.m4]) m4_include([m4/ax_boost_base.m4]) +m4_include([m4/ax_boost_signals.m4]) m4_include([m4/ax_boost_thread.m4]) m4_include([m4/ax_lib_mysql.m4]) m4_include([m4/libtool.m4]) diff --git a/config.h.in b/config.h.in index 914c020..c3fa2b5 100644 --- a/config.h.in +++ b/config.h.in @@ -30,6 +30,9 @@ /* define if the Boost library is available */ #undef HAVE_BOOST +/* define if the Boost::Signals library is available */ +#undef HAVE_BOOST_SIGNALS + /* define if the Boost::Thread library is available */ #undef HAVE_BOOST_THREAD @@ -800,6 +800,7 @@ SYSTEMBACKEND_POSIX_TRUE LIBOBJS READLINE_LIBS GSSAPI_LIBS +BOOST_SIGNALS_LIB BOOST_THREAD_LIB BOOST_LDFLAGS BOOST_CPPFLAGS @@ -809,8 +810,6 @@ MYSQL_VERSION MYSQL_CONFIG pcrecpp_LIBS pcrecpp_CFLAGS -sigc_LIBS -sigc_CFLAGS GnuTLS_LIBS GnuTLS_CFLAGS libxml2_LIBS @@ -969,6 +968,7 @@ with_mysql with_boost with_boost_libdir with_boost_thread +with_boost_signals with_systembackend_posix with_systembackend_proc with_userbackend_mysql @@ -991,8 +991,6 @@ libxml2_CFLAGS libxml2_LIBS GnuTLS_CFLAGS GnuTLS_LIBS -sigc_CFLAGS -sigc_LIBS pcrecpp_CFLAGS pcrecpp_LIBS' @@ -1659,6 +1657,10 @@ Optional Packages: use the Thread library from boost - it is possible to specify a certain library for the linker e.g. --with-boost-thread=boost_thread-gcc-mt + --with-boost-signals[=special-lib] + use the Signals library from boost - it is possible + to specify a certain library for the linker e.g. + --with-boost-signals=boost_signals-gcc-mt-d --with-systembackend-posix enable POSIX system backend [default=yes] --with-systembackend-proc @@ -1686,8 +1688,6 @@ Some influential environment variables: GnuTLS_CFLAGS C compiler flags for GnuTLS, overriding pkg-config GnuTLS_LIBS linker flags for GnuTLS, overriding pkg-config - sigc_CFLAGS C compiler flags for sigc, overriding pkg-config - sigc_LIBS linker flags for sigc, overriding pkg-config pcrecpp_CFLAGS C compiler flags for pcrecpp, overriding pkg-config pcrecpp_LIBS @@ -17775,81 +17775,6 @@ $as_echo "yes" >&6; } fi pkg_failed=no -{ $as_echo "$as_me:$LINENO: checking for sigc" >&5 -$as_echo_n "checking for sigc... " >&6; } - -if test -n "$PKG_CONFIG"; then - if test -n "$sigc_CFLAGS"; then - pkg_cv_sigc_CFLAGS="$sigc_CFLAGS" - else - if test -n "$PKG_CONFIG" && \ - { ($as_echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"sigc++-2.0\"") >&5 - ($PKG_CONFIG --exists --print-errors "sigc++-2.0") 2>&5 - ac_status=$? - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; then - pkg_cv_sigc_CFLAGS=`$PKG_CONFIG --cflags "sigc++-2.0" 2>/dev/null` -else - pkg_failed=yes -fi - fi -else - pkg_failed=untried -fi -if test -n "$PKG_CONFIG"; then - if test -n "$sigc_LIBS"; then - pkg_cv_sigc_LIBS="$sigc_LIBS" - else - if test -n "$PKG_CONFIG" && \ - { ($as_echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"sigc++-2.0\"") >&5 - ($PKG_CONFIG --exists --print-errors "sigc++-2.0") 2>&5 - ac_status=$? - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; then - pkg_cv_sigc_LIBS=`$PKG_CONFIG --libs "sigc++-2.0" 2>/dev/null` -else - pkg_failed=yes -fi - fi -else - pkg_failed=untried -fi - - - -if test $pkg_failed = yes; then - -if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then - _pkg_short_errors_supported=yes -else - _pkg_short_errors_supported=no -fi - if test $_pkg_short_errors_supported = yes; then - sigc_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "sigc++-2.0"` - else - sigc_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "sigc++-2.0"` - fi - # Put the nasty error message in config.log where it belongs - echo "$sigc_PKG_ERRORS" >&5 - - { $as_echo "$as_me:$LINENO: result: no" >&5 -$as_echo "no" >&6; } - { { $as_echo "$as_me:$LINENO: error: Test for SigC++ 2.0 failed." >&5 -$as_echo "$as_me: error: Test for SigC++ 2.0 failed." >&2;} - { (exit 1); exit 1; }; } -elif test $pkg_failed = untried; then - { { $as_echo "$as_me:$LINENO: error: Test for SigC++ 2.0 failed." >&5 -$as_echo "$as_me: error: Test for SigC++ 2.0 failed." >&2;} - { (exit 1); exit 1; }; } -else - sigc_CFLAGS=$pkg_cv_sigc_CFLAGS - sigc_LIBS=$pkg_cv_sigc_LIBS - { $as_echo "$as_me:$LINENO: result: yes" >&5 -$as_echo "yes" >&6; } - : -fi - -pkg_failed=no { $as_echo "$as_me:$LINENO: checking for pcrecpp" >&5 $as_echo_n "checking for pcrecpp... " >&6; } @@ -18755,7 +18680,359 @@ $as_echo "$as_me: error: Could not link against $ax_lib !" >&2;} fi -CPPFLAGS='-I$(top_builddir)/lib -I$(top_srcdir)/lib -I${top_srcdir}/src '"$libxml2_CFLAGS $GnuTLS_CFLAGS $sigc_CFLAGS $pcrecpp_CFLAGS $MYSQL_CFLAGS $BOOST_CPPFLAGS $INCLTDL $CPPFLAGS" + +# Check whether --with-boost-signals was given. +if test "${with_boost_signals+set}" = set; then + withval=$with_boost_signals; + if test "$withval" = "no"; then + want_boost="no" + elif test "$withval" = "yes"; then + want_boost="yes" + ax_boost_user_signals_lib="" + else + want_boost="yes" + ax_boost_user_signals_lib="$withval" + fi + +else + want_boost="yes" + +fi + + + if test "x$want_boost" = "xyes"; then + + CPPFLAGS_SAVED="$CPPFLAGS" + CPPFLAGS="$CPPFLAGS $BOOST_CPPFLAGS" + export CPPFLAGS + + LDFLAGS_SAVED="$LDFLAGS" + LDFLAGS="$LDFLAGS $BOOST_LDFLAGS" + export LDFLAGS + + { $as_echo "$as_me:$LINENO: checking whether the Boost::Signals library is available" >&5 +$as_echo_n "checking whether the Boost::Signals library is available... " >&6; } +if test "${ax_cv_boost_signals+set}" = set; then + $as_echo_n "(cached) " >&6 +else + ac_ext=cpp +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu + + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include <boost/signal.hpp> + +int +main () +{ +boost::signal<void ()> sig; + return 0; + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_cxx_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ax_cv_boost_signals=yes +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ax_cv_boost_signals=no +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + +fi +{ $as_echo "$as_me:$LINENO: result: $ax_cv_boost_signals" >&5 +$as_echo "$ax_cv_boost_signals" >&6; } + if test "x$ax_cv_boost_signals" = "xyes"; then + +cat >>confdefs.h <<\_ACEOF +#define HAVE_BOOST_SIGNALS /**/ +_ACEOF + + BOOSTLIBDIR=`echo $BOOST_LDFLAGS | sed -e 's/[^\/]*//'` + if test "x$ax_boost_user_signals_lib" = "x"; then + for libextension in `ls $BOOSTLIBDIR/libboost_signals*.{so,a}* 2>/dev/null | sed 's,.*/,,' | sed -e 's;^lib\(boost_signals.*\)\.so.*$;\1;' -e 's;^lib\(boost_signals.*\)\.a*$;\1;'` ; do + ax_lib=${libextension} + as_ac_Lib=`$as_echo "ac_cv_lib_$ax_lib''_exit" | $as_tr_sh` +{ $as_echo "$as_me:$LINENO: checking for exit in -l$ax_lib" >&5 +$as_echo_n "checking for exit in -l$ax_lib... " >&6; } +if { as_var=$as_ac_Lib; eval "test \"\${$as_var+set}\" = set"; }; then + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-l$ax_lib $LIBS" +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char exit (); +int +main () +{ +return exit (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + $as_test_x conftest$ac_exeext + }; then + eval "$as_ac_Lib=yes" +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + eval "$as_ac_Lib=no" +fi + +rm -rf conftest.dSYM +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +ac_res=`eval 'as_val=${'$as_ac_Lib'} + $as_echo "$as_val"'` + { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } +as_val=`eval 'as_val=${'$as_ac_Lib'} + $as_echo "$as_val"'` + if test "x$as_val" = x""yes; then + BOOST_SIGNALS_LIB="-l$ax_lib"; link_signals="yes"; break +else + link_signals="no" +fi + + done + if test "x$link_signals" != "xyes"; then + for libextension in `ls $BOOSTLIBDIR/boost_signals*.{dll,a}* 2>/dev/null | sed 's,.*/,,' | sed -e 's;^\(boost_signals.*\)\.dll.*$;\1;' -e 's;^\(boost_signals.*\)\.a*$;\1;'` ; do + ax_lib=${libextension} + as_ac_Lib=`$as_echo "ac_cv_lib_$ax_lib''_exit" | $as_tr_sh` +{ $as_echo "$as_me:$LINENO: checking for exit in -l$ax_lib" >&5 +$as_echo_n "checking for exit in -l$ax_lib... " >&6; } +if { as_var=$as_ac_Lib; eval "test \"\${$as_var+set}\" = set"; }; then + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-l$ax_lib $LIBS" +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char exit (); +int +main () +{ +return exit (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + $as_test_x conftest$ac_exeext + }; then + eval "$as_ac_Lib=yes" +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + eval "$as_ac_Lib=no" +fi + +rm -rf conftest.dSYM +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +ac_res=`eval 'as_val=${'$as_ac_Lib'} + $as_echo "$as_val"'` + { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } +as_val=`eval 'as_val=${'$as_ac_Lib'} + $as_echo "$as_val"'` + if test "x$as_val" = x""yes; then + BOOST_SIGNALS_LIB="-l$ax_lib"; link_signals="yes"; break +else + link_signals="no" +fi + + done + fi + + else + for ax_lib in $ax_boost_user_signals_lib boost_signals-$ax_boost_user_signals_lib; do + as_ac_Lib=`$as_echo "ac_cv_lib_$ax_lib''_main" | $as_tr_sh` +{ $as_echo "$as_me:$LINENO: checking for main in -l$ax_lib" >&5 +$as_echo_n "checking for main in -l$ax_lib... " >&6; } +if { as_var=$as_ac_Lib; eval "test \"\${$as_var+set}\" = set"; }; then + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-l$ax_lib $LIBS" +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + + +int +main () +{ +return main (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + $as_test_x conftest$ac_exeext + }; then + eval "$as_ac_Lib=yes" +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + eval "$as_ac_Lib=no" +fi + +rm -rf conftest.dSYM +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +ac_res=`eval 'as_val=${'$as_ac_Lib'} + $as_echo "$as_val"'` + { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } +as_val=`eval 'as_val=${'$as_ac_Lib'} + $as_echo "$as_val"'` + if test "x$as_val" = x""yes; then + BOOST_SIGNALS_LIB="-l$ax_lib"; link_signals="yes"; break +else + link_signals="no" +fi + + done + + fi + if test "x$link_signals" != "xyes"; then + { { $as_echo "$as_me:$LINENO: error: Could not link against $ax_lib !" >&5 +$as_echo "$as_me: error: Could not link against $ax_lib !" >&2;} + { (exit 1); exit 1; }; } + fi + fi + + CPPFLAGS="$CPPFLAGS_SAVED" + LDFLAGS="$LDFLAGS_SAVED" + fi + + +CPPFLAGS='-I$(top_builddir)/lib -I$(top_srcdir)/lib -I${top_srcdir}/src '"$libxml2_CFLAGS $GnuTLS_CFLAGS $pcrecpp_CFLAGS $MYSQL_CFLAGS $BOOST_CPPFLAGS $INCLTDL $CPPFLAGS" { $as_echo "$as_me:$LINENO: checking for gss_init_sec_context in -lgssapi_krb5" >&5 $as_echo_n "checking for gss_init_sec_context in -lgssapi_krb5... " >&6; } diff --git a/configure.ac b/configure.ac index b0cda0e..8387ba6 100644 --- a/configure.ac +++ b/configure.ac @@ -31,14 +31,14 @@ AM_CONDITIONAL(INCLUDED_LTDL, test "x$with_included_ltdl" = xyes) # Checks for libraries. PKG_CHECK_MODULES(libxml2, libxml-2.0, , AC_MSG_ERROR(Test for libxml 2.0 failed.)) PKG_CHECK_MODULES(GnuTLS, gnutls, , AC_MSG_ERROR(Test for GnuTLS failed.)) -PKG_CHECK_MODULES(sigc, sigc++-2.0, , AC_MSG_ERROR(Test for SigC++ 2.0 failed.)) PKG_CHECK_MODULES(pcrecpp, libpcrecpp, , have_pcrecpp=no) AX_LIB_MYSQL AX_BOOST_BASE AX_BOOST_THREAD +AX_BOOST_SIGNALS -CPPFLAGS='-I$(top_builddir)/lib -I$(top_srcdir)/lib -I${top_srcdir}/src '"$libxml2_CFLAGS $GnuTLS_CFLAGS $sigc_CFLAGS $pcrecpp_CFLAGS $MYSQL_CFLAGS $BOOST_CPPFLAGS $INCLTDL $CPPFLAGS" +CPPFLAGS='-I$(top_builddir)/lib -I$(top_srcdir)/lib -I${top_srcdir}/src '"$libxml2_CFLAGS $GnuTLS_CFLAGS $pcrecpp_CFLAGS $MYSQL_CFLAGS $BOOST_CPPFLAGS $INCLTDL $CPPFLAGS" AC_CHECK_LIB(gssapi_krb5, gss_init_sec_context, AC_SUBST(GSSAPI_LIBS, -lgssapi_krb5), AC_CHECK_LIB(gssapi, gss_init_sec_context, GSSAPI_LIBS=-lgssapi, AC_MSG_ERROR(Test for GSSAPI library failed.))) AC_CHECK_LIB(readline, readline, AC_SUBST(READLINE_LIBS, -lreadline), AC_MSG_ERROR(Test for GNU readline library failed.)) diff --git a/libltdl/Makefile.in b/libltdl/Makefile.in index d8f988f..55cab99 100644 --- a/libltdl/Makefile.in +++ b/libltdl/Makefile.in @@ -45,6 +45,7 @@ DIST_COMMON = README $(am__include_HEADERS_DIST) \ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/argz.m4 \ $(top_srcdir)/m4/ax_boost_base.m4 \ + $(top_srcdir)/m4/ax_boost_signals.m4 \ $(top_srcdir)/m4/ax_boost_thread.m4 \ $(top_srcdir)/m4/ax_lib_mysql.m4 $(top_srcdir)/m4/libtool.m4 \ $(top_srcdir)/m4/ltdl.m4 $(top_srcdir)/m4/ltoptions.m4 \ @@ -160,6 +161,7 @@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BOOST_CPPFLAGS = @BOOST_CPPFLAGS@ BOOST_LDFLAGS = @BOOST_LDFLAGS@ +BOOST_SIGNALS_LIB = @BOOST_SIGNALS_LIB@ BOOST_THREAD_LIB = @BOOST_THREAD_LIB@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ @@ -291,8 +293,6 @@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ -sigc_CFLAGS = @sigc_CFLAGS@ -sigc_LIBS = @sigc_LIBS@ srcdir = @srcdir@ sys_symbol_underscore = @sys_symbol_underscore@ sysconfdir = @sysconfdir@ diff --git a/m4/ax_boost_signals.m4 b/m4/ax_boost_signals.m4 new file mode 100644 index 0000000..11e9c63 --- /dev/null +++ b/m4/ax_boost_signals.m4 @@ -0,0 +1,108 @@ +# =========================================================================== +# http://www.nongnu.org/autoconf-archive/ax_boost_signals.html +# =========================================================================== +# +# SYNOPSIS +# +# AX_BOOST_SIGNALS +# +# DESCRIPTION +# +# Test for Signals library from the Boost C++ libraries. The macro +# requires a preceding call to AX_BOOST_BASE. Further documentation is +# available at <http://randspringer.de/boost/index.html>. +# +# This macro calls: +# +# AC_SUBST(BOOST_SIGNALS_LIB) +# +# And sets: +# +# HAVE_BOOST_SIGNALS +# +# LICENSE +# +# Copyright (c) 2008 Thomas Porschberg <thomas@randspringer.de> +# Copyright (c) 2008 Michael Tindal +# +# Copying and distribution of this file, with or without modification, are +# permitted in any medium without royalty provided the copyright notice +# and this notice are preserved. + +AC_DEFUN([AX_BOOST_SIGNALS], +[ + AC_ARG_WITH([boost-signals], + AS_HELP_STRING([--with-boost-signals@<:@=special-lib@:>@], + [use the Signals library from boost - it is possible to specify a certain library for the linker + e.g. --with-boost-signals=boost_signals-gcc-mt-d ]), + [ + if test "$withval" = "no"; then + want_boost="no" + elif test "$withval" = "yes"; then + want_boost="yes" + ax_boost_user_signals_lib="" + else + want_boost="yes" + ax_boost_user_signals_lib="$withval" + fi + ], + [want_boost="yes"] + ) + + if test "x$want_boost" = "xyes"; then + AC_REQUIRE([AC_PROG_CC]) + CPPFLAGS_SAVED="$CPPFLAGS" + CPPFLAGS="$CPPFLAGS $BOOST_CPPFLAGS" + export CPPFLAGS + + LDFLAGS_SAVED="$LDFLAGS" + LDFLAGS="$LDFLAGS $BOOST_LDFLAGS" + export LDFLAGS + + AC_CACHE_CHECK(whether the Boost::Signals library is available, + ax_cv_boost_signals, + [AC_LANG_PUSH([C++]) + AC_COMPILE_IFELSE(AC_LANG_PROGRAM([[@%:@include <boost/signal.hpp> + ]], + [[boost::signal<void ()> sig; + return 0; + ]]), + ax_cv_boost_signals=yes, ax_cv_boost_signals=no) + AC_LANG_POP([C++]) + ]) + if test "x$ax_cv_boost_signals" = "xyes"; then + AC_DEFINE(HAVE_BOOST_SIGNALS,,[define if the Boost::Signals library is available]) + BOOSTLIBDIR=`echo $BOOST_LDFLAGS | sed -e 's/@<:@^\/@:>@*//'` + if test "x$ax_boost_user_signals_lib" = "x"; then + for libextension in `ls $BOOSTLIBDIR/libboost_signals*.{so,a}* 2>/dev/null | sed 's,.*/,,' | sed -e 's;^lib\(boost_signals.*\)\.so.*$;\1;' -e 's;^lib\(boost_signals.*\)\.a*$;\1;'` ; do + ax_lib=${libextension} + AC_CHECK_LIB($ax_lib, exit, + [BOOST_SIGNALS_LIB="-l$ax_lib"; AC_SUBST(BOOST_SIGNALS_LIB) link_signals="yes"; break], + [link_signals="no"]) + done + if test "x$link_signals" != "xyes"; then + for libextension in `ls $BOOSTLIBDIR/boost_signals*.{dll,a}* 2>/dev/null | sed 's,.*/,,' | sed -e 's;^\(boost_signals.*\)\.dll.*$;\1;' -e 's;^\(boost_signals.*\)\.a*$;\1;'` ; do + ax_lib=${libextension} + AC_CHECK_LIB($ax_lib, exit, + [BOOST_SIGNALS_LIB="-l$ax_lib"; AC_SUBST(BOOST_SIGNALS_LIB) link_signals="yes"; break], + [link_signals="no"]) + done + fi + + else + for ax_lib in $ax_boost_user_signals_lib boost_signals-$ax_boost_user_signals_lib; do + AC_CHECK_LIB($ax_lib, main, + [BOOST_SIGNALS_LIB="-l$ax_lib"; AC_SUBST(BOOST_SIGNALS_LIB) link_signals="yes"; break], + [link_signals="no"]) + done + + fi + if test "x$link_signals" != "xyes"; then + AC_MSG_ERROR(Could not link against $ax_lib !) + fi + fi + + CPPFLAGS="$CPPFLAGS_SAVED" + LDFLAGS="$LDFLAGS_SAVED" + fi +]) diff --git a/src/Client/CommandManager.h b/src/Client/CommandManager.h index f1689b1..7635542 100644 --- a/src/Client/CommandManager.h +++ b/src/Client/CommandManager.h @@ -20,7 +20,7 @@ #ifndef MAD_CLIENT_COMMANDMANAGER_H_ #define MAD_CLIENT_COMMANDMANAGER_H_ -#include <sigc++/signal.h> +#include <boost/signal.hpp> namespace Mad { @@ -39,7 +39,7 @@ class CommandManager { unsigned int activeRequests; - sigc::signal<void> finished; + boost::signal0<void> finished; bool disconnect; @@ -71,7 +71,7 @@ class CommandManager { bool requestsActive() {return (activeRequests > 0);} bool willDisconnect() {return disconnect;} - sigc::signal<void> signalFinished() const {return finished;} + boost::signal0<void>& signalFinished() {return finished;} }; } diff --git a/src/Client/CommandParser.cpp b/src/Client/CommandParser.cpp index 1b40046..78b3570 100644 --- a/src/Client/CommandParser.cpp +++ b/src/Client/CommandParser.cpp @@ -33,7 +33,8 @@ #include <iostream> #include <cstdio> -#include <sigc++/bind.h> + +#include <boost/bind.hpp> namespace Mad { namespace Client { @@ -111,9 +112,9 @@ std::map<std::string, Common::HostInfo> CommandParser::parseHostList(const std:: void CommandParser::fsinfoCommand(const std::vector<std::string> &args) { if(args.size() == 1) - Common::RequestManager::get()->sendRequest<Common::Requests::FSInfoRequest>(connection, sigc::mem_fun(CommandManager::get(), &CommandManager::fsInfoRequestFinished)); + Common::RequestManager::get()->sendRequest<Common::Requests::FSInfoRequest>(connection, boost::bind(&CommandManager::fsInfoRequestFinished, CommandManager::get(), _1)); else if(args.size() == 2) - Common::RequestManager::get()->sendRequest<Requests::DaemonFSInfoRequest>(connection, sigc::mem_fun(CommandManager::get(), &CommandManager::daemonFSInfoRequestFinished), args[1]); + Common::RequestManager::get()->sendRequest<Requests::DaemonFSInfoRequest>(connection, boost::bind(&CommandManager::daemonFSInfoRequestFinished, CommandManager::get(), _1), args[1]); else { Common::Logger::logf(Common::Logger::ERROR, "%s: Too many arguments.", args[0].c_str()); printUsage("fsinfo"); @@ -215,7 +216,7 @@ void CommandParser::rebootCommand(const std::vector<std::string> &args) { for(std::map<std::string, Common::HostInfo>::iterator host = hosts.begin(); host != hosts.end(); ++host) { Common::RequestManager::get()->sendRequest<Requests::DaemonCommandRequest>(connection, - sigc::mem_fun(CommandManager::get(), &CommandManager::daemonCommandRequestFinished), host->first, true + boost::bind(&CommandManager::daemonCommandRequestFinished, CommandManager::get(), _1), host->first, true ); ++CommandManager::get()->activeRequests; @@ -233,7 +234,7 @@ void CommandParser::shutdownCommand(const std::vector<std::string> &args) { for(std::map<std::string, Common::HostInfo>::iterator host = hosts.begin(); host != hosts.end(); ++host) { Common::RequestManager::get()->sendRequest<Requests::DaemonCommandRequest>(connection, - sigc::mem_fun(CommandManager::get(), &CommandManager::daemonCommandRequestFinished), host->first, false + boost::bind(&CommandManager::daemonCommandRequestFinished, CommandManager::get(), _1), host->first, false ); ++CommandManager::get()->activeRequests; @@ -243,10 +244,10 @@ void CommandParser::shutdownCommand(const std::vector<std::string> &args) { void CommandParser::statusCommand(const std::vector<std::string> &args) { if(args.size() == 1) Common::RequestManager::get()->sendRequest<Common::Requests::StatusRequest>(connection, - sigc::mem_fun(CommandManager::get(), &CommandManager::statusRequestFinished)); + boost::bind(&CommandManager::statusRequestFinished, CommandManager::get(), _1)); else if(args.size() == 2) Common::RequestManager::get()->sendRequest<Requests::DaemonStatusRequest>(connection, - sigc::mem_fun(CommandManager::get(), &CommandManager::daemonStatusRequestFinished), args[1]); + boost::bind(&CommandManager::daemonStatusRequestFinished, CommandManager::get(), _1), args[1]); else { Common::Logger::logf(Common::Logger::ERROR, "%s: Too many arguments.", args[0].c_str()); printUsage("status"); @@ -279,21 +280,21 @@ void CommandParser::userInfoCommand(const std::vector<std::string> &args) { ++CommandManager::get()->activeRequests; Common::RequestManager::get()->sendRequest<Common::Requests::UserInfoRequest>(connection, - sigc::mem_fun(CommandManager::get(), &CommandManager::userInfoRequestFinished), uid); + boost::bind(&CommandManager::userInfoRequestFinished, CommandManager::get(), _1), uid); } void CommandParser::listUsersCommand(const std::vector<std::string>&) { ++CommandManager::get()->activeRequests; Common::RequestManager::get()->sendRequest<Common::Requests::UserListRequest>(connection, - sigc::mem_fun(CommandManager::get(), &CommandManager::userListRequestFinished)); + boost::bind(&CommandManager::userListRequestFinished, CommandManager::get(), _1)); } void CommandParser::exitCommand(const std::vector<std::string>&) { ++CommandManager::get()->activeRequests; Common::RequestManager::get()->sendRequest<Common::Requests::DisconnectRequest>(connection, - sigc::mem_fun(CommandManager::get(), &CommandManager::disconnectRequestFinished)); + boost::bind(&CommandManager::disconnectRequestFinished, CommandManager::get(), _1)); } bool CommandParser::parse(const std::string &cmd) { diff --git a/src/Client/InformationManager.cpp b/src/Client/InformationManager.cpp index 6c36495..f1627f4 100644 --- a/src/Client/InformationManager.cpp +++ b/src/Client/InformationManager.cpp @@ -39,7 +39,7 @@ void InformationManager::DaemonStateUpdateRequestHandler::handlePacket(const Com sendPacket(ret); - signalFinished().emit(); + signalFinished()(); return; } @@ -55,7 +55,7 @@ void InformationManager::DaemonStateUpdateRequestHandler::handlePacket(const Com ret.setType("OK"); sendPacket(ret); - signalFinished().emit(); + signalFinished()(); } @@ -72,7 +72,7 @@ void InformationManager::updateDaemonList(Common::Connection *con) { return; Common::RequestManager::get()->sendRequest<Requests::DaemonListRequest>(con, - sigc::mem_fun(this, &InformationManager::daemonListRequestFinished)); + boost::bind(&InformationManager::daemonListRequestFinished, this, _1)); updating = true; } diff --git a/src/Client/Makefile.in b/src/Client/Makefile.in index 94a059f..29cec75 100644 --- a/src/Client/Makefile.in +++ b/src/Client/Makefile.in @@ -39,6 +39,7 @@ DIST_COMMON = $(noinst_HEADERS) $(srcdir)/Makefile.am \ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/argz.m4 \ $(top_srcdir)/m4/ax_boost_base.m4 \ + $(top_srcdir)/m4/ax_boost_signals.m4 \ $(top_srcdir)/m4/ax_boost_thread.m4 \ $(top_srcdir)/m4/ax_lib_mysql.m4 $(top_srcdir)/m4/libtool.m4 \ $(top_srcdir)/m4/ltdl.m4 $(top_srcdir)/m4/ltoptions.m4 \ @@ -93,6 +94,7 @@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BOOST_CPPFLAGS = @BOOST_CPPFLAGS@ BOOST_LDFLAGS = @BOOST_LDFLAGS@ +BOOST_SIGNALS_LIB = @BOOST_SIGNALS_LIB@ BOOST_THREAD_LIB = @BOOST_THREAD_LIB@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ @@ -224,8 +226,6 @@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ -sigc_CFLAGS = @sigc_CFLAGS@ -sigc_LIBS = @sigc_LIBS@ srcdir = @srcdir@ sys_symbol_underscore = @sys_symbol_underscore@ sysconfdir = @sysconfdir@ diff --git a/src/Client/Requests/Makefile.in b/src/Client/Requests/Makefile.in index 820cb4d..01665de 100644 --- a/src/Client/Requests/Makefile.in +++ b/src/Client/Requests/Makefile.in @@ -39,6 +39,7 @@ DIST_COMMON = $(noinst_HEADERS) $(srcdir)/Makefile.am \ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/argz.m4 \ $(top_srcdir)/m4/ax_boost_base.m4 \ + $(top_srcdir)/m4/ax_boost_signals.m4 \ $(top_srcdir)/m4/ax_boost_thread.m4 \ $(top_srcdir)/m4/ax_lib_mysql.m4 $(top_srcdir)/m4/libtool.m4 \ $(top_srcdir)/m4/ltdl.m4 $(top_srcdir)/m4/ltoptions.m4 \ @@ -83,6 +84,7 @@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BOOST_CPPFLAGS = @BOOST_CPPFLAGS@ BOOST_LDFLAGS = @BOOST_LDFLAGS@ +BOOST_SIGNALS_LIB = @BOOST_SIGNALS_LIB@ BOOST_THREAD_LIB = @BOOST_THREAD_LIB@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ @@ -214,8 +216,6 @@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ -sigc_CFLAGS = @sigc_CFLAGS@ -sigc_LIBS = @sigc_LIBS@ srcdir = @srcdir@ sys_symbol_underscore = @sys_symbol_underscore@ sysconfdir = @sysconfdir@ diff --git a/src/Common/ActionManager.cpp b/src/Common/ActionManager.cpp index 166001a..fc3c034 100644 --- a/src/Common/ActionManager.cpp +++ b/src/Common/ActionManager.cpp @@ -23,8 +23,6 @@ #include <fcntl.h> #include <signal.h> -#include <sigc++/adaptors/hide.h> - namespace Mad { namespace Common { @@ -39,7 +37,7 @@ void ActionManager::doInit() { fcntl(notifyPipe[0], F_SETFL, fcntl(notifyPipe[0], F_GETFL) | O_NONBLOCK); fcntl(notifyPipe[1], F_SETFL, fcntl(notifyPipe[1], F_GETFL) | O_NONBLOCK); - Net::FdManager::get()->registerFd(notifyPipe[0], sigc::hide(sigc::mem_fun(this, &ActionManager::run)), POLLIN); + Net::FdManager::get()->registerFd(notifyPipe[0], boost::bind(&ActionManager::run, this), POLLIN); } void ActionManager::doDeinit() { @@ -65,7 +63,7 @@ void ActionManager::run() { return; } - sigc::slot<void> action = actions.front(); + boost::function0<void> action = actions.front(); actions.pop(); sigprocmask(SIG_SETMASK, &oldset, 0); @@ -74,7 +72,7 @@ void ActionManager::run() { } } -void ActionManager::add(const sigc::slot<void> &action) { +void ActionManager::add(const boost::function0<void> &action) { sigset_t set, oldset; sigfillset(&set); sigprocmask(SIG_SETMASK, &set, &oldset); diff --git a/src/Common/ActionManager.h b/src/Common/ActionManager.h index e47652e..5d3dc15 100644 --- a/src/Common/ActionManager.h +++ b/src/Common/ActionManager.h @@ -25,14 +25,14 @@ #include <queue> #include <unistd.h> -#include <sigc++/slot.h> +#include <boost/function.hpp> namespace Mad { namespace Common { class ActionManager : public Initializable { private: - std::queue<sigc::slot<void> > actions; + std::queue<boost::function0<void> > actions; int notifyPipe[2]; static ActionManager actionManager; @@ -45,7 +45,7 @@ class ActionManager : public Initializable { public: void run(); - void add(const sigc::slot<void> &action); + void add(const boost::function0<void> &action); static ActionManager *get() { if(!actionManager.isInitialized()) diff --git a/src/Common/Base64Encoder.cpp b/src/Common/Base64Encoder.cpp index 9607ec9..a2795d6 100644 --- a/src/Common/Base64Encoder.cpp +++ b/src/Common/Base64Encoder.cpp @@ -189,18 +189,18 @@ std::vector<boost::uint8_t> Base64Encoder::decode(const std::string &data) { boost::uint8_t *ptr = buf.get(); for(size_t in = 0; in < data.length()-1; in += 4) { - if(b64[data[in]] >= 64 || b64[data[in+1]] >= 64) + if(b64[(size_t)data[in]] >= 64 || b64[(size_t)data[in+1]] >= 64) break; - *ptr++ = (b64[data[in]] << 2) + (b64[data[in+1]] >> 4); - if(in >= data.length()-2 || b64[data[in+2]] >= 64) + *ptr++ = (b64[(size_t)data[in]] << 2) + (b64[(size_t)data[in+1]] >> 4); + if(in >= data.length()-2 || b64[(size_t)data[in+2]] >= 64) break; - *ptr++ = (b64[data[in+1]] << 4) + (b64[data[in+2]] >> 2); - if(in >= data.length()-3 || b64[data[in+3]] >= 64) + *ptr++ = (b64[(size_t)data[in+1]] << 4) + (b64[(size_t)data[in+2]] >> 2); + if(in >= data.length()-3 || b64[(size_t)data[in+3]] >= 64) break; - *ptr++ = (b64[data[in+2]] << 6) + b64[data[in+3]]; + *ptr++ = (b64[(size_t)data[in+2]] << 6) + b64[(size_t)data[in+3]]; } return std::vector<boost::uint8_t>(buf.get(), ptr); diff --git a/src/Common/ClientConnection.cpp b/src/Common/ClientConnection.cpp index 7b33fb2..381f822 100644 --- a/src/Common/ClientConnection.cpp +++ b/src/Common/ClientConnection.cpp @@ -26,7 +26,7 @@ namespace Mad { namespace Common { ClientConnection::ClientConnection() : connection(new Net::ClientConnection) { - connection->signalReceive().connect(sigc::mem_fun(this, &ClientConnection::receive)); + connection->signalReceive().connect(boost::bind(&ClientConnection::receive, this, _1)); } bool ClientConnection::send(const Net::Packet &packet) { diff --git a/src/Common/Connection.cpp b/src/Common/Connection.cpp index 510731f..f476a68 100644 --- a/src/Common/Connection.cpp +++ b/src/Common/Connection.cpp @@ -20,8 +20,6 @@ #include "Connection.h" #include "XmlPacket.h" -#include <sigc++/bind.h> - namespace Mad { namespace Common { diff --git a/src/Common/Connection.h b/src/Common/Connection.h index 860c044..ea90c4c 100644 --- a/src/Common/Connection.h +++ b/src/Common/Connection.h @@ -23,7 +23,7 @@ #include <stdint.h> #include <sys/types.h> -#include <sigc++/signal.h> +#include <boost/signal.hpp> namespace Mad { @@ -39,7 +39,7 @@ class Connection { private: bool authenticated; - sigc::signal<void, const XmlPacket&, uint16_t> signal; + boost::signal2<void, const XmlPacket&, uint16_t> signal; // Prevent shallow copy Connection(const Connection &o); @@ -57,7 +57,7 @@ class Connection { bool sendPacket(const XmlPacket &packet, uint16_t requestId); - sigc::signal<void, const XmlPacket&, uint16_t> signalReceive() const { + boost::signal2<void, const XmlPacket&, uint16_t>& signalReceive() { return signal; } diff --git a/src/Common/Makefile.in b/src/Common/Makefile.in index ef3993d..8b66f20 100644 --- a/src/Common/Makefile.in +++ b/src/Common/Makefile.in @@ -39,6 +39,7 @@ DIST_COMMON = $(noinst_HEADERS) $(srcdir)/Makefile.am \ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/argz.m4 \ $(top_srcdir)/m4/ax_boost_base.m4 \ + $(top_srcdir)/m4/ax_boost_signals.m4 \ $(top_srcdir)/m4/ax_boost_thread.m4 \ $(top_srcdir)/m4/ax_lib_mysql.m4 $(top_srcdir)/m4/libtool.m4 \ $(top_srcdir)/m4/ltdl.m4 $(top_srcdir)/m4/ltoptions.m4 \ @@ -97,6 +98,7 @@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BOOST_CPPFLAGS = @BOOST_CPPFLAGS@ BOOST_LDFLAGS = @BOOST_LDFLAGS@ +BOOST_SIGNALS_LIB = @BOOST_SIGNALS_LIB@ BOOST_THREAD_LIB = @BOOST_THREAD_LIB@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ @@ -228,8 +230,6 @@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ -sigc_CFLAGS = @sigc_CFLAGS@ -sigc_LIBS = @sigc_LIBS@ srcdir = @srcdir@ sys_symbol_underscore = @sys_symbol_underscore@ sysconfdir = @sysconfdir@ diff --git a/src/Common/Request.h b/src/Common/Request.h index 7ab2816..3979e0c 100644 --- a/src/Common/Request.h +++ b/src/Common/Request.h @@ -24,7 +24,8 @@ #include <Net/Exception.h> #include <memory> -#include <sigc++/adaptors/hide.h> + +#include <boost/bind.hpp> namespace Mad { namespace Common { @@ -33,19 +34,19 @@ class Request : public RequestHandler { private: friend class RequestManager; - sigc::signal<void,const Request&> finished; + boost::signal1<void, const Request&> finished; std::auto_ptr<XmlPacket> res; Net::Exception exp; public: - typedef sigc::slot<void,const Request&> slot_type; + typedef boost::function1<void, const Request&> slot_type; protected: Request(Connection *connection, uint16_t requestId, slot_type slot) : RequestHandler(connection, requestId), exp(Net::Exception::NOT_FINISHED) { finished.connect(slot); - finished.connect(sigc::hide(signalFinished().make_slot())); + finished.connect(boost::bind((void(boost::signal0<void>::*)())&boost::signal0<void>::operator(), &signalFinished())); } void finish(std::auto_ptr<XmlPacket> result) {res = result; finished(*this);} diff --git a/src/Common/RequestHandler.h b/src/Common/RequestHandler.h index e3ac19f..9c50345 100644 --- a/src/Common/RequestHandler.h +++ b/src/Common/RequestHandler.h @@ -23,7 +23,6 @@ #include "Connection.h" #include "XmlPacket.h" -#include <sigc++/signal.h> #include <stdint.h> namespace Mad { @@ -34,7 +33,7 @@ class RequestManager; class RequestHandler { private: - sigc::signal<void> finished; + boost::signal0<void> finished; Connection *connection; uint16_t requestId; @@ -46,7 +45,7 @@ class RequestHandler { protected: RequestHandler(Connection *connection0, uint16_t requestId0) : connection(connection0), requestId(requestId0) {} - sigc::signal<void> signalFinished() {return finished;} + boost::signal0<void>& signalFinished() {return finished;} Connection* getConnection() const { return connection; diff --git a/src/Common/RequestHandlers/DisconnectRequestHandler.cpp b/src/Common/RequestHandlers/DisconnectRequestHandler.cpp index fa2ad88..163aa75 100644 --- a/src/Common/RequestHandlers/DisconnectRequestHandler.cpp +++ b/src/Common/RequestHandlers/DisconnectRequestHandler.cpp @@ -35,7 +35,7 @@ void DisconnectRequestHandler::handlePacket(const XmlPacket &packet) { sendPacket(ret); - signalFinished().emit(); + signalFinished()(); return; } @@ -47,7 +47,7 @@ void DisconnectRequestHandler::handlePacket(const XmlPacket &packet) { getConnection()->disconnect(); - signalFinished().emit(); + signalFinished()(); } } diff --git a/src/Common/RequestHandlers/FSInfoRequestHandler.cpp b/src/Common/RequestHandlers/FSInfoRequestHandler.cpp index fc98730..ed70a8b 100644 --- a/src/Common/RequestHandlers/FSInfoRequestHandler.cpp +++ b/src/Common/RequestHandlers/FSInfoRequestHandler.cpp @@ -21,6 +21,8 @@ #include <Net/Exception.h> #include "../Logger.h" +#include <boost/bind.hpp> + namespace Mad { namespace Common { namespace RequestHandlers { @@ -35,20 +37,20 @@ void FSInfoRequestHandler::handlePacket(const XmlPacket &packet) { sendPacket(ret); - signalFinished().emit(); + signalFinished()(); return; } // TODO Require authentication - if(!SystemManager::get()->getFSInfo(sigc::mem_fun(this, &FSInfoRequestHandler::fsInfoHandler))) { + if(!SystemManager::get()->getFSInfo(boost::bind(&FSInfoRequestHandler::fsInfoHandler, this, _1))) { XmlPacket ret; ret.setType("Error"); ret.add("ErrorCode", Net::Exception::NOT_IMPLEMENTED); sendPacket(ret); - signalFinished().emit(); + signalFinished()(); } } @@ -69,7 +71,7 @@ void FSInfoRequestHandler::fsInfoHandler(const std::vector<SystemManager::FSInfo } sendPacket(ret); - signalFinished().emit(); + signalFinished()(); } } diff --git a/src/Common/RequestHandlers/Makefile.in b/src/Common/RequestHandlers/Makefile.in index e5cce2c..22ff596 100644 --- a/src/Common/RequestHandlers/Makefile.in +++ b/src/Common/RequestHandlers/Makefile.in @@ -39,6 +39,7 @@ DIST_COMMON = $(noinst_HEADERS) $(srcdir)/Makefile.am \ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/argz.m4 \ $(top_srcdir)/m4/ax_boost_base.m4 \ + $(top_srcdir)/m4/ax_boost_signals.m4 \ $(top_srcdir)/m4/ax_boost_thread.m4 \ $(top_srcdir)/m4/ax_lib_mysql.m4 $(top_srcdir)/m4/libtool.m4 \ $(top_srcdir)/m4/ltdl.m4 $(top_srcdir)/m4/ltoptions.m4 \ @@ -83,6 +84,7 @@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BOOST_CPPFLAGS = @BOOST_CPPFLAGS@ BOOST_LDFLAGS = @BOOST_LDFLAGS@ +BOOST_SIGNALS_LIB = @BOOST_SIGNALS_LIB@ BOOST_THREAD_LIB = @BOOST_THREAD_LIB@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ @@ -214,8 +216,6 @@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ -sigc_CFLAGS = @sigc_CFLAGS@ -sigc_LIBS = @sigc_LIBS@ srcdir = @srcdir@ sys_symbol_underscore = @sys_symbol_underscore@ sysconfdir = @sysconfdir@ diff --git a/src/Common/RequestHandlers/StatusRequestHandler.cpp b/src/Common/RequestHandlers/StatusRequestHandler.cpp index 0cfe025..0c13bd9 100644 --- a/src/Common/RequestHandlers/StatusRequestHandler.cpp +++ b/src/Common/RequestHandlers/StatusRequestHandler.cpp @@ -22,6 +22,8 @@ #include "../SystemBackend.h" #include "../Logger.h" +#include <boost/bind.hpp> + namespace Mad { namespace Common { namespace RequestHandlers { @@ -36,17 +38,17 @@ void StatusRequestHandler::handlePacket(const XmlPacket &packet) { sendPacket(ret); - signalFinished().emit(); + signalFinished()(); return; } // TODO Require authentication - if(!SystemManager::get()->getUptimeInfo(sigc::mem_fun(this, &StatusRequestHandler::uptimeHandler))) + if(!SystemManager::get()->getUptimeInfo(boost::bind(&StatusRequestHandler::uptimeHandler, this, _1, _2))) needUptime = false; - if(!SystemManager::get()->getMemoryInfo(sigc::mem_fun(this, &StatusRequestHandler::memoryHandler))) + if(!SystemManager::get()->getMemoryInfo(boost::bind(&StatusRequestHandler::memoryHandler, this, _1, _2, _3, _4))) needMemory = false; - if(!SystemManager::get()->getLoadInfo(sigc::mem_fun(this, &StatusRequestHandler::loadHandler))) + if(!SystemManager::get()->getLoadInfo(boost::bind(&StatusRequestHandler::loadHandler, this, _1, _2, _3, _4, _5))) needLoad = false; send(); @@ -76,7 +78,7 @@ void StatusRequestHandler::send() { sent = true; - signalFinished().emit(); + signalFinished()(); } } diff --git a/src/Common/RequestManager.cpp b/src/Common/RequestManager.cpp index 08be0a9..c36bd76 100644 --- a/src/Common/RequestManager.cpp +++ b/src/Common/RequestManager.cpp @@ -21,8 +21,7 @@ #include "RequestHandlers/DisconnectRequestHandler.h" #include "Logger.h" -#include <sigc++/bind.h> -#include <sigc++/retype_return.h> +#include <boost/bind.hpp> namespace Mad { namespace Common { @@ -39,7 +38,7 @@ bool RequestManager::RequestMap::addRequest(uint16_t id, RequestHandler *info) { if(!insert(std::make_pair(id, info)).second) return false; - info->signalFinished().connect(sigc::hide_return(sigc::bind(sigc::mem_fun(this, &RequestManager::RequestMap::deleteRequest), id))); + info->signalFinished().connect(boost::bind(&RequestManager::RequestMap::deleteRequest, this, id)); return true; } @@ -121,7 +120,7 @@ RequestManager::RequestMap* RequestManager::getUnusedRequestId(Connection *conne void RequestManager::registerConnection(Connection *connection) { requestMaps.insert(std::make_pair(connection, new RequestMap())); - connection->signalReceive().connect(sigc::bind<0>(sigc::mem_fun(this, &RequestManager::receiveHandler), connection)); + connection->signalReceive().connect(boost::bind(&RequestManager::receiveHandler, this, connection, _1, _2)); } void RequestManager::unregisterConnection(Connection *connection) { diff --git a/src/Common/Requests/Makefile.in b/src/Common/Requests/Makefile.in index c809e3c..b36e5b8 100644 --- a/src/Common/Requests/Makefile.in +++ b/src/Common/Requests/Makefile.in @@ -39,6 +39,7 @@ DIST_COMMON = $(noinst_HEADERS) $(srcdir)/Makefile.am \ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/argz.m4 \ $(top_srcdir)/m4/ax_boost_base.m4 \ + $(top_srcdir)/m4/ax_boost_signals.m4 \ $(top_srcdir)/m4/ax_boost_thread.m4 \ $(top_srcdir)/m4/ax_lib_mysql.m4 $(top_srcdir)/m4/libtool.m4 \ $(top_srcdir)/m4/ltdl.m4 $(top_srcdir)/m4/ltoptions.m4 \ @@ -83,6 +84,7 @@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BOOST_CPPFLAGS = @BOOST_CPPFLAGS@ BOOST_LDFLAGS = @BOOST_LDFLAGS@ +BOOST_SIGNALS_LIB = @BOOST_SIGNALS_LIB@ BOOST_THREAD_LIB = @BOOST_THREAD_LIB@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ @@ -214,8 +216,6 @@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ -sigc_CFLAGS = @sigc_CFLAGS@ -sigc_LIBS = @sigc_LIBS@ srcdir = @srcdir@ sys_symbol_underscore = @sys_symbol_underscore@ sysconfdir = @sysconfdir@ diff --git a/src/Common/SystemBackend.h b/src/Common/SystemBackend.h index 9c3eaa2..ed553c2 100644 --- a/src/Common/SystemBackend.h +++ b/src/Common/SystemBackend.h @@ -31,27 +31,27 @@ class SystemBackend { protected: friend class SystemManager; - virtual bool getUptimeInfo(const sigc::slot<void, unsigned long, unsigned long> &callback _UNUSED_PARAMETER_) { + virtual bool getUptimeInfo(const boost::function2<void, unsigned long, unsigned long> &callback _UNUSED_PARAMETER_) { return false; } - virtual bool getMemoryInfo(const sigc::slot<void, unsigned long, unsigned long, unsigned long, unsigned long> &callback _UNUSED_PARAMETER_) { + virtual bool getMemoryInfo(const boost::function4<void, unsigned long, unsigned long, unsigned long, unsigned long> &callback _UNUSED_PARAMETER_) { return false; } - virtual bool getLoadInfo(const sigc::slot<void, unsigned long, unsigned long, float, float, float> &callback _UNUSED_PARAMETER_) { + virtual bool getLoadInfo(const boost::function5<void, unsigned long, unsigned long, float, float, float> &callback _UNUSED_PARAMETER_) { return false; } - virtual bool getFSInfo(const sigc::slot<void, const std::vector<SystemManager::FSInfo>& > &callback _UNUSED_PARAMETER_) { + virtual bool getFSInfo(const boost::function1<void, const std::vector<SystemManager::FSInfo>& > &callback _UNUSED_PARAMETER_) { return false; } - virtual bool shutdown(const sigc::slot<void> &callback _UNUSED_PARAMETER_) { + virtual bool shutdown(const boost::function0<void> &callback _UNUSED_PARAMETER_) { return false; } - virtual bool reboot(const sigc::slot<void> &callback _UNUSED_PARAMETER_) { + virtual bool reboot(const boost::function0<void> &callback _UNUSED_PARAMETER_) { return false; } diff --git a/src/Common/SystemManager.cpp b/src/Common/SystemManager.cpp index a037bd6..4a549b7 100644 --- a/src/Common/SystemManager.cpp +++ b/src/Common/SystemManager.cpp @@ -34,7 +34,7 @@ bool SystemManager::Compare::operator() (const SystemBackend *b1, const SystemBa } -bool SystemManager::getUptimeInfo(const sigc::slot<void, unsigned long, unsigned long> &callback) { +bool SystemManager::getUptimeInfo(const boost::function2<void, unsigned long, unsigned long> &callback) { for(std::set<SystemBackend*>::iterator backend = backends.begin(); backend != backends.end(); ++backend) { if((*backend)->getUptimeInfo(callback)) return true; @@ -43,7 +43,7 @@ bool SystemManager::getUptimeInfo(const sigc::slot<void, unsigned long, unsigned return false; } -bool SystemManager::getMemoryInfo(const sigc::slot<void, unsigned long, unsigned long, unsigned long, unsigned long> &callback) { +bool SystemManager::getMemoryInfo(const boost::function4<void, unsigned long, unsigned long, unsigned long, unsigned long> &callback) { for(std::set<SystemBackend*>::iterator backend = backends.begin(); backend != backends.end(); ++backend) { if((*backend)->getMemoryInfo(callback)) return true; @@ -52,7 +52,7 @@ bool SystemManager::getMemoryInfo(const sigc::slot<void, unsigned long, unsigned return false; } -bool SystemManager::getLoadInfo(const sigc::slot<void, unsigned long, unsigned long, float, float, float> &callback) { +bool SystemManager::getLoadInfo(const boost::function5<void, unsigned long, unsigned long, float, float, float> &callback) { for(std::set<SystemBackend*>::iterator backend = backends.begin(); backend != backends.end(); ++backend) { if((*backend)->getLoadInfo(callback)) return true; @@ -61,7 +61,7 @@ bool SystemManager::getLoadInfo(const sigc::slot<void, unsigned long, unsigned l return false; } -bool SystemManager::getFSInfo(const sigc::slot<void, const std::vector<FSInfo>& > &callback) { +bool SystemManager::getFSInfo(const boost::function1<void, const std::vector<FSInfo>& > &callback) { for(std::set<SystemBackend*>::iterator backend = backends.begin(); backend != backends.end(); ++backend) { if((*backend)->getFSInfo(callback)) return true; @@ -70,7 +70,7 @@ bool SystemManager::getFSInfo(const sigc::slot<void, const std::vector<FSInfo>& return false; } -bool SystemManager::shutdown(const sigc::slot<void> &callback) { +bool SystemManager::shutdown(const boost::function0<void> &callback) { for(std::set<SystemBackend*>::iterator backend = backends.begin(); backend != backends.end(); ++backend) { if((*backend)->shutdown(callback)) return true; @@ -79,7 +79,7 @@ bool SystemManager::shutdown(const sigc::slot<void> &callback) { return false; } -bool SystemManager::reboot(const sigc::slot<void> &callback) { +bool SystemManager::reboot(const boost::function0<void> &callback) { for(std::set<SystemBackend*>::iterator backend = backends.begin(); backend != backends.end(); ++backend) { if((*backend)->reboot(callback)) return true; diff --git a/src/Common/SystemManager.h b/src/Common/SystemManager.h index 5de7180..20d3c05 100644 --- a/src/Common/SystemManager.h +++ b/src/Common/SystemManager.h @@ -24,7 +24,7 @@ #include <string> #include <vector> -#include <sigc++/slot.h> +#include <boost/function.hpp> namespace Mad { namespace Common { @@ -62,14 +62,14 @@ class SystemManager { backends.erase(backend); } - bool getUptimeInfo(const sigc::slot<void, unsigned long, unsigned long> &callback); - bool getMemoryInfo(const sigc::slot<void, unsigned long, unsigned long, unsigned long, unsigned long> &callback); - bool getLoadInfo(const sigc::slot<void, unsigned long, unsigned long, float, float, float> &callback); + bool getUptimeInfo(const boost::function2<void, unsigned long, unsigned long> &callback); + bool getMemoryInfo(const boost::function4<void, unsigned long, unsigned long, unsigned long, unsigned long> &callback); + bool getLoadInfo(const boost::function5<void, unsigned long, unsigned long, float, float, float> &callback); - bool getFSInfo(const sigc::slot<void, const std::vector<FSInfo>& > &callback); + bool getFSInfo(const boost::function1<void, const std::vector<FSInfo>& > &callback); - bool shutdown(const sigc::slot<void> &callback); - bool reboot(const sigc::slot<void> &callback); + bool shutdown(const boost::function0<void> &callback); + bool reboot(const boost::function0<void> &callback); static SystemManager *get() { return &systemManager; diff --git a/src/Daemon/Backends/Makefile.in b/src/Daemon/Backends/Makefile.in index 31017c9..0500e0c 100644 --- a/src/Daemon/Backends/Makefile.in +++ b/src/Daemon/Backends/Makefile.in @@ -38,6 +38,7 @@ DIST_COMMON = $(noinst_HEADERS) $(srcdir)/Makefile.am \ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/argz.m4 \ $(top_srcdir)/m4/ax_boost_base.m4 \ + $(top_srcdir)/m4/ax_boost_signals.m4 \ $(top_srcdir)/m4/ax_boost_thread.m4 \ $(top_srcdir)/m4/ax_lib_mysql.m4 $(top_srcdir)/m4/libtool.m4 \ $(top_srcdir)/m4/ltdl.m4 $(top_srcdir)/m4/ltoptions.m4 \ @@ -65,6 +66,7 @@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BOOST_CPPFLAGS = @BOOST_CPPFLAGS@ BOOST_LDFLAGS = @BOOST_LDFLAGS@ +BOOST_SIGNALS_LIB = @BOOST_SIGNALS_LIB@ BOOST_THREAD_LIB = @BOOST_THREAD_LIB@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ @@ -196,8 +198,6 @@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ -sigc_CFLAGS = @sigc_CFLAGS@ -sigc_LIBS = @sigc_LIBS@ srcdir = @srcdir@ sys_symbol_underscore = @sys_symbol_underscore@ sysconfdir = @sysconfdir@ diff --git a/src/Daemon/Backends/NetworkLogger.h b/src/Daemon/Backends/NetworkLogger.h index 492fd87..a6b6c21 100644 --- a/src/Daemon/Backends/NetworkLogger.h +++ b/src/Daemon/Backends/NetworkLogger.h @@ -32,9 +32,11 @@ class NetworkLogger : public Common::Logger { private: Common::Connection *connection; + void requestFinished(const Common::Request&) {} + protected: virtual void logMessage(Common::Logger::MessageCategory category, Common::Logger::MessageLevel level, time_t messageTimestamp, const std::string &message) { - Common::RequestManager::get()->sendRequest<Requests::LogRequest>(connection, Common::Request::slot_type(), + Common::RequestManager::get()->sendRequest<Requests::LogRequest>(connection, boost::bind(&NetworkLogger::requestFinished, this, _1), category, level, messageTimestamp, message); } diff --git a/src/Daemon/Makefile.in b/src/Daemon/Makefile.in index a9faebf..4a1ef14 100644 --- a/src/Daemon/Makefile.in +++ b/src/Daemon/Makefile.in @@ -39,6 +39,7 @@ DIST_COMMON = $(noinst_HEADERS) $(srcdir)/Makefile.am \ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/argz.m4 \ $(top_srcdir)/m4/ax_boost_base.m4 \ + $(top_srcdir)/m4/ax_boost_signals.m4 \ $(top_srcdir)/m4/ax_boost_thread.m4 \ $(top_srcdir)/m4/ax_lib_mysql.m4 $(top_srcdir)/m4/libtool.m4 \ $(top_srcdir)/m4/ltdl.m4 $(top_srcdir)/m4/ltoptions.m4 \ @@ -91,6 +92,7 @@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BOOST_CPPFLAGS = @BOOST_CPPFLAGS@ BOOST_LDFLAGS = @BOOST_LDFLAGS@ +BOOST_SIGNALS_LIB = @BOOST_SIGNALS_LIB@ BOOST_THREAD_LIB = @BOOST_THREAD_LIB@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ @@ -222,8 +224,6 @@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ -sigc_CFLAGS = @sigc_CFLAGS@ -sigc_LIBS = @sigc_LIBS@ srcdir = @srcdir@ sys_symbol_underscore = @sys_symbol_underscore@ sysconfdir = @sysconfdir@ diff --git a/src/Daemon/RequestHandlers/CommandRequestHandler.cpp b/src/Daemon/RequestHandlers/CommandRequestHandler.cpp index 939f1f0..f7f21de 100644 --- a/src/Daemon/RequestHandlers/CommandRequestHandler.cpp +++ b/src/Daemon/RequestHandlers/CommandRequestHandler.cpp @@ -22,6 +22,8 @@ #include <Common/Logger.h> #include <Common/SystemManager.h> +#include <boost/bind.hpp> + namespace Mad { namespace Daemon { namespace RequestHandlers { @@ -36,7 +38,7 @@ void CommandRequestHandler::handlePacket(const Common::XmlPacket &packet) { sendPacket(ret); - signalFinished().emit(); + signalFinished()(); return; } @@ -46,11 +48,11 @@ void CommandRequestHandler::handlePacket(const Common::XmlPacket &packet) { std::string command = packet["command"]; if(command == "reboot") { - if(Common::SystemManager::get()->shutdown(sigc::mem_fun(this, &CommandRequestHandler::sendReply))) + if(Common::SystemManager::get()->shutdown(boost::bind(&CommandRequestHandler::sendReply, this))) return; } else { - if(Common::SystemManager::get()->reboot(sigc::mem_fun(this, &CommandRequestHandler::sendReply))) + if(Common::SystemManager::get()->reboot(boost::bind(&CommandRequestHandler::sendReply, this))) return; } @@ -60,7 +62,7 @@ void CommandRequestHandler::handlePacket(const Common::XmlPacket &packet) { sendPacket(ret); - signalFinished().emit(); + signalFinished()(); } void CommandRequestHandler::sendReply() { @@ -69,7 +71,7 @@ void CommandRequestHandler::sendReply() { sendPacket(packet); - signalFinished().emit(); + signalFinished()(); } } diff --git a/src/Daemon/RequestHandlers/Makefile.in b/src/Daemon/RequestHandlers/Makefile.in index 3de4cbe..8b34d1a 100644 --- a/src/Daemon/RequestHandlers/Makefile.in +++ b/src/Daemon/RequestHandlers/Makefile.in @@ -39,6 +39,7 @@ DIST_COMMON = $(noinst_HEADERS) $(srcdir)/Makefile.am \ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/argz.m4 \ $(top_srcdir)/m4/ax_boost_base.m4 \ + $(top_srcdir)/m4/ax_boost_signals.m4 \ $(top_srcdir)/m4/ax_boost_thread.m4 \ $(top_srcdir)/m4/ax_lib_mysql.m4 $(top_srcdir)/m4/libtool.m4 \ $(top_srcdir)/m4/ltdl.m4 $(top_srcdir)/m4/ltoptions.m4 \ @@ -82,6 +83,7 @@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BOOST_CPPFLAGS = @BOOST_CPPFLAGS@ BOOST_LDFLAGS = @BOOST_LDFLAGS@ +BOOST_SIGNALS_LIB = @BOOST_SIGNALS_LIB@ BOOST_THREAD_LIB = @BOOST_THREAD_LIB@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ @@ -213,8 +215,6 @@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ -sigc_CFLAGS = @sigc_CFLAGS@ -sigc_LIBS = @sigc_LIBS@ srcdir = @srcdir@ sys_symbol_underscore = @sys_symbol_underscore@ sysconfdir = @sysconfdir@ diff --git a/src/Daemon/Requests/Makefile.in b/src/Daemon/Requests/Makefile.in index 0f16855..1492ca6 100644 --- a/src/Daemon/Requests/Makefile.in +++ b/src/Daemon/Requests/Makefile.in @@ -39,6 +39,7 @@ DIST_COMMON = $(noinst_HEADERS) $(srcdir)/Makefile.am \ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/argz.m4 \ $(top_srcdir)/m4/ax_boost_base.m4 \ + $(top_srcdir)/m4/ax_boost_signals.m4 \ $(top_srcdir)/m4/ax_boost_thread.m4 \ $(top_srcdir)/m4/ax_lib_mysql.m4 $(top_srcdir)/m4/libtool.m4 \ $(top_srcdir)/m4/ltdl.m4 $(top_srcdir)/m4/ltoptions.m4 \ @@ -82,6 +83,7 @@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BOOST_CPPFLAGS = @BOOST_CPPFLAGS@ BOOST_LDFLAGS = @BOOST_LDFLAGS@ +BOOST_SIGNALS_LIB = @BOOST_SIGNALS_LIB@ BOOST_THREAD_LIB = @BOOST_THREAD_LIB@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ @@ -213,8 +215,6 @@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ -sigc_CFLAGS = @sigc_CFLAGS@ -sigc_LIBS = @sigc_LIBS@ srcdir = @srcdir@ sys_symbol_underscore = @sys_symbol_underscore@ sysconfdir = @sysconfdir@ diff --git a/src/Makefile.am b/src/Makefile.am index 3b9607f..7e16736 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -21,14 +21,14 @@ bin_PROGRAMS = mad madc mad-server mad_SOURCES = mad.cpp mad_LDADD = Daemon/libdaemon.la Common/libcommon.la Net/libnet.la \ - $(libxml2_LIBS) $(sigc_LIBS) $(GnuTLS_LIBS) @LIBLTDL@ $(daemon_modules) + $(BOOST_SIGNALS_LIB) $(libxml2_LIBS) $(GnuTLS_LIBS) @LIBLTDL@ $(daemon_modules) mad_LDFLAGS = -export-dynamic madc_SOURCES = madc.cpp madc_LDADD = Client/libclient.la Common/libcommon.la Net/libnet.la \ - $(libxml2_LIBS) $(sigc_LIBS) $(GnuTLS_LIBS) $(READLINE_LIBS) + $(BOOST_SIGNALS_LIB) $(libxml2_LIBS) $(GnuTLS_LIBS) $(READLINE_LIBS) mad_server_SOURCES = mad-server.cpp mad_server_LDADD = Server/libserver.la Common/libcommon.la Net/libnet.la \ - $(libxml2_LIBS) $(sigc_LIBS) $(GnuTLS_LIBS) $(GSSAPI_LIBS) @LIBLTDL@ $(server_modules) + $(BOOST_SIGNALS_LIB) $(libxml2_LIBS) $(GnuTLS_LIBS) $(GSSAPI_LIBS) @LIBLTDL@ $(server_modules) mad_server_LDFLAGS = -export-dynamic diff --git a/src/Makefile.in b/src/Makefile.in index a6e80f2..e0b62dd 100644 --- a/src/Makefile.in +++ b/src/Makefile.in @@ -43,6 +43,7 @@ DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/argz.m4 \ $(top_srcdir)/m4/ax_boost_base.m4 \ + $(top_srcdir)/m4/ax_boost_signals.m4 \ $(top_srcdir)/m4/ax_boost_thread.m4 \ $(top_srcdir)/m4/ax_lib_mysql.m4 $(top_srcdir)/m4/libtool.m4 \ $(top_srcdir)/m4/ltdl.m4 $(top_srcdir)/m4/ltoptions.m4 \ @@ -127,6 +128,7 @@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BOOST_CPPFLAGS = @BOOST_CPPFLAGS@ BOOST_LDFLAGS = @BOOST_LDFLAGS@ +BOOST_SIGNALS_LIB = @BOOST_SIGNALS_LIB@ BOOST_THREAD_LIB = @BOOST_THREAD_LIB@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ @@ -258,8 +260,6 @@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ -sigc_CFLAGS = @sigc_CFLAGS@ -sigc_LIBS = @sigc_LIBS@ srcdir = @srcdir@ sys_symbol_underscore = @sys_symbol_underscore@ sysconfdir = @sysconfdir@ @@ -274,16 +274,16 @@ server_modules = -dlpreopen modules/FileLogger.la $(am__append_2) \ $(am__append_4) $(am__append_5) mad_SOURCES = mad.cpp mad_LDADD = Daemon/libdaemon.la Common/libcommon.la Net/libnet.la \ - $(libxml2_LIBS) $(sigc_LIBS) $(GnuTLS_LIBS) @LIBLTDL@ $(daemon_modules) + $(BOOST_SIGNALS_LIB) $(libxml2_LIBS) $(GnuTLS_LIBS) @LIBLTDL@ $(daemon_modules) mad_LDFLAGS = -export-dynamic madc_SOURCES = madc.cpp madc_LDADD = Client/libclient.la Common/libcommon.la Net/libnet.la \ - $(libxml2_LIBS) $(sigc_LIBS) $(GnuTLS_LIBS) $(READLINE_LIBS) + $(BOOST_SIGNALS_LIB) $(libxml2_LIBS) $(GnuTLS_LIBS) $(READLINE_LIBS) mad_server_SOURCES = mad-server.cpp mad_server_LDADD = Server/libserver.la Common/libcommon.la Net/libnet.la \ - $(libxml2_LIBS) $(sigc_LIBS) $(GnuTLS_LIBS) $(GSSAPI_LIBS) @LIBLTDL@ $(server_modules) + $(BOOST_SIGNALS_LIB) $(libxml2_LIBS) $(GnuTLS_LIBS) $(GSSAPI_LIBS) @LIBLTDL@ $(server_modules) mad_server_LDFLAGS = -export-dynamic all: all-recursive diff --git a/src/Net/ClientConnection.cpp b/src/Net/ClientConnection.cpp index 688dbc7..087d95f 100644 --- a/src/Net/ClientConnection.cpp +++ b/src/Net/ClientConnection.cpp @@ -54,7 +54,7 @@ void ClientConnection::connectionHeader() { ConnectionHeader header = {'M', 'A', 'D', daemon ? 'D' : 'C', 0, 1, 1, 1}; rawSend((uint8_t*)&header, sizeof(header)); - rawReceive(sizeof(ConnectionHeader), sigc::mem_fun(this, &ClientConnection::connectionHeaderReceiveHandler)); + rawReceive(sizeof(ConnectionHeader), boost::bind(&ClientConnection::connectionHeaderReceiveHandler, this, _1, _2)); } void ClientConnection::connect(const IPAddress &address, bool daemon0) throw(Exception) { @@ -104,7 +104,7 @@ void ClientConnection::connect(const IPAddress &address, bool daemon0) throw(Exc gnutls_credentials_set(session, GNUTLS_CRD_CERTIFICATE, x509_cred); gnutls_transport_set_ptr(session, (gnutls_transport_ptr_t)sock); - FdManager::get()->registerFd(sock, sigc::mem_fun(this, &ClientConnection::sendReceive)); + FdManager::get()->registerFd(sock, boost::bind(&ClientConnection::sendReceive, this, _1)); state = CONNECT; diff --git a/src/Net/Connection.cpp b/src/Net/Connection.cpp index cf675c9..4e5029f 100644 --- a/src/Net/Connection.cpp +++ b/src/Net/Connection.cpp @@ -25,7 +25,7 @@ #include <cstring> #include <sys/socket.h> -#include <sigc++/bind.h> +#include <boost/bind.hpp> namespace Mad { namespace Net { @@ -125,12 +125,12 @@ void Connection::enterReceiveLoop() { return; if(_isConnecting()) - ThreadManager::get()->pushWork(sigc::mem_fun(connectedSignal, &sigc::signal<void>::emit)); + ThreadManager::get()->pushWork(boost::bind((void (boost::signal0<void>::*)())&boost::signal0<void>::operator(), &connectedSignal)); state = PACKET_HEADER; lock.unlock(); - rawReceive(sizeof(Packet::Data), sigc::mem_fun(this, &Connection::packetHeaderReceiveHandler)); + rawReceive(sizeof(Packet::Data), boost::bind(&Connection::packetHeaderReceiveHandler, this, _1, _2)); } void Connection::packetHeaderReceiveHandler(const void *data, unsigned long length) { @@ -146,13 +146,13 @@ void Connection::packetHeaderReceiveHandler(const void *data, unsigned long leng header = *(const Packet::Data*)data; if(header.length == 0) { - ThreadManager::get()->pushWork(sigc::bind(sigc::mem_fun(receiveSignal, &sigc::signal<void,const Packet&>::emit), Packet(ntohs(header.requestId)))); + ThreadManager::get()->pushWork(boost::bind((void (boost::signal1<void, const Packet&>::*)(const Packet&))&boost::signal1<void, const Packet&>::operator(), &receiveSignal, Packet(ntohs(header.requestId)))); enterReceiveLoop(); } else { state = PACKET_DATA; - rawReceive(ntohs(header.length), sigc::mem_fun(this, &Connection::packetDataReceiveHandler)); + rawReceive(ntohs(header.length), boost::bind(&Connection::packetDataReceiveHandler, this, _1, _2)); } } @@ -166,7 +166,7 @@ void Connection::packetDataReceiveHandler(const void *data, unsigned long length return; } - ThreadManager::get()->pushWork(sigc::bind(sigc::mem_fun(receiveSignal, &sigc::signal<void,const Packet&>::emit), Packet(ntohs(header.requestId), data, length))); + ThreadManager::get()->pushWork(boost::bind((void (boost::signal1<void, const Packet&>::*)(const Packet&))&boost::signal1<void, const Packet&>::operator(), &receiveSignal, Packet(ntohs(header.requestId), data, length))); enterReceiveLoop(); } @@ -213,7 +213,7 @@ void Connection::doReceive() { } bool Connection::rawReceive(unsigned long length, - const sigc::slot<void,const void*,unsigned long> ¬ify) + const boost::function2<void,const void*,unsigned long> ¬ify) { if(!isConnected()) return false; @@ -271,7 +271,7 @@ bool Connection::rawSend(const uint8_t *data, unsigned long length) { if(!isConnected()) return false; - Transmission trans = {length, 0, new uint8_t[length], sigc::slot<void,const void*,unsigned long>()}; + Transmission trans = {length, 0, new uint8_t[length], boost::function2<void,const void*,unsigned long>()}; std::memcpy(trans.data, data, length); sendLock.lock(); @@ -350,7 +350,7 @@ void Connection::doDisconnect() { gnutls_deinit(session); - ThreadManager::get()->pushWork(sigc::mem_fun(disconnectedSignal, &sigc::signal<void>::emit)); + ThreadManager::get()->pushWork(boost::bind((void (boost::signal0<void>::*)())&boost::signal0<void>::operator(), &disconnectedSignal)); state = DISCONNECTED; } diff --git a/src/Net/Connection.h b/src/Net/Connection.h index 1a3e72b..a0b95ea 100644 --- a/src/Net/Connection.h +++ b/src/Net/Connection.h @@ -27,9 +27,9 @@ #include <queue> #include <string> #include <gnutls/gnutls.h> -#include <sigc++/signal.h> #include <poll.h> +#include <boost/signal.hpp> #include <boost/thread/mutex.hpp> #include <boost/thread/shared_mutex.hpp> @@ -61,7 +61,7 @@ class Connection { uint8_t *data; - sigc::slot<void,const void*,unsigned long> notify; + boost::function2<void,const void*,unsigned long> notify; }; boost::mutex receiveLock; @@ -72,9 +72,9 @@ class Connection { Packet::Data header; - sigc::signal<void,const Packet&> receiveSignal; - sigc::signal<void> connectedSignal; - sigc::signal<void> disconnectedSignal; + boost::signal1<void,const Packet&> receiveSignal; + boost::signal0<void> connectedSignal; + boost::signal0<void> disconnectedSignal; void doHandshake(); @@ -129,7 +129,7 @@ class Connection { virtual void connectionHeader() = 0; - bool rawReceive(unsigned long length, const sigc::slot<void,const void*,unsigned long> ¬ify); + bool rawReceive(unsigned long length, const boost::function2<void,const void*,unsigned long> ¬ify); bool rawSend(const uint8_t *data, unsigned long length); void enterReceiveLoop(); @@ -190,9 +190,9 @@ class Connection { bool send(const Packet &packet); - sigc::signal<void,const Packet&> signalReceive() const {return receiveSignal;} - sigc::signal<void> signalConnected() const {return connectedSignal;} - sigc::signal<void> signalDisconnected() const {return disconnectedSignal;} + boost::signal1<void,const Packet&>& signalReceive() {return receiveSignal;} + boost::signal0<void>& signalConnected() {return connectedSignal;} + boost::signal0<void>& signalDisconnected() {return disconnectedSignal;} }; } diff --git a/src/Net/FdManager.cpp b/src/Net/FdManager.cpp index c7abe73..d8faef4 100644 --- a/src/Net/FdManager.cpp +++ b/src/Net/FdManager.cpp @@ -24,9 +24,6 @@ #include <unistd.h> #include <sys/fcntl.h> -#include <sigc++/adaptors/hide.h> -#include <sigc++/bind.h> - namespace Mad { namespace Net { @@ -43,7 +40,7 @@ FdManager::FdManager() : running(false) { flags = fcntl(interruptPipe[1], F_GETFL, 0); fcntl(interruptPipe[1], F_SETFL, flags | O_NONBLOCK); - registerFd(interruptPipe[0], sigc::hide(sigc::mem_fun(this, &FdManager::readInterrupt)), POLLIN); + registerFd(interruptPipe[0], boost::bind(&FdManager::readInterrupt, this), POLLIN); } FdManager::~FdManager() { @@ -54,7 +51,7 @@ FdManager::~FdManager() { } -bool FdManager::registerFd(int fd, const sigc::slot<void, short> &handler, short events) { +bool FdManager::registerFd(int fd, const boost::function1<void, short> &handler, short events) { struct pollfd pollfd = {fd, events, 0}; boost::lock(handlerLock, eventLock); @@ -149,11 +146,11 @@ void FdManager::ioThread() { if(poll(fdarray, count, -1) > 0) { handlerLock.lock_shared(); - std::queue<sigc::slot<void> > calls; + std::queue<boost::function0<void> > calls; for(size_t n = 0; n < count; ++n) { if(fdarray[n].revents) - calls.push(sigc::bind(handlers[fdarray[n].fd], fdarray[n].revents)); + calls.push(boost::bind(handlers[fdarray[n].fd], fdarray[n].revents)); } handlerLock.unlock_shared(); diff --git a/src/Net/FdManager.h b/src/Net/FdManager.h index 406110d..1cb95bc 100644 --- a/src/Net/FdManager.h +++ b/src/Net/FdManager.h @@ -22,8 +22,8 @@ #include <map> #include <poll.h> -#include <sigc++/signal.h> +#include <boost/function.hpp> #include <boost/thread/shared_mutex.hpp> namespace Mad { @@ -41,7 +41,7 @@ class FdManager { bool running; std::map<int, struct pollfd> pollfds; - std::map<int, sigc::slot<void, short> > handlers; + std::map<int, boost::function1<void, short> > handlers; int interruptPipe[2]; @@ -64,7 +64,7 @@ class FdManager { static FdManager *get() {return &fdManager;} - bool registerFd(int fd, const sigc::slot<void, short> &handler, short events = 0); + bool registerFd(int fd, const boost::function1<void, short> &handler, short events = 0); bool unregisterFd(int fd); bool setFdEvents(int fd, short events); diff --git a/src/Net/Listener.cpp b/src/Net/Listener.cpp index 5bcc353..11cbaf5 100644 --- a/src/Net/Listener.cpp +++ b/src/Net/Listener.cpp @@ -27,8 +27,6 @@ #include <cstring> #include <fcntl.h> -#include <sigc++/bind.h> - namespace Mad { namespace Net { @@ -40,8 +38,8 @@ void Listener::acceptHandler(int) { while((sd = accept(sock, (struct sockaddr*)&sa, &addrlen)) >= 0) { ServerConnection *con = new ServerConnection(sd, IPAddress(sa), dh_params, x905CertFile, x905KeyFile); - sigc::connection con1 = con->signalConnected().connect(sigc::bind(sigc::mem_fun(this, &Listener::connectHandler), con)); - sigc::connection con2 = con->signalDisconnected().connect(sigc::bind(sigc::mem_fun(this, &Listener::disconnectHandler), con)); + boost::signals::connection con1 = con->signalConnected().connect(boost::bind(&Listener::connectHandler, this, con)); + boost::signals::connection con2 = con->signalDisconnected().connect(boost::bind(&Listener::disconnectHandler, this, con)); connections.insert(std::make_pair(con, std::make_pair(con1, con2))); @@ -51,7 +49,7 @@ void Listener::acceptHandler(int) { void Listener::connectHandler(ServerConnection *con) { - std::map<ServerConnection*, std::pair<sigc::connection, sigc::connection> >::iterator it = connections.find(con); + std::map<ServerConnection*, std::pair<boost::signals::connection, boost::signals::connection> >::iterator it = connections.find(con); if(it == connections.end()) return; @@ -65,7 +63,7 @@ void Listener::connectHandler(ServerConnection *con) { } void Listener::disconnectHandler(ServerConnection *con) { - std::map<ServerConnection*, std::pair<sigc::connection, sigc::connection> >::iterator it = connections.find(con); + std::map<ServerConnection*, std::pair<boost::signals::connection, boost::signals::connection> >::iterator it = connections.find(con); if(it == connections.end()) return; @@ -112,11 +110,11 @@ Listener::Listener(const std::string &x905CertFile0, const std::string &x905KeyF throw Exception("listen()", Exception::INTERNAL_ERRNO, errno); } - FdManager::get()->registerFd(sock, sigc::mem_fun(this, &Listener::acceptHandler), POLLIN); + FdManager::get()->registerFd(sock, boost::bind(&Listener::acceptHandler, this, _1), POLLIN); } Listener::~Listener() { - for(std::map<ServerConnection*,std::pair<sigc::connection, sigc::connection> >::iterator con = connections.begin(); con != connections.end(); ++con) { + for(std::map<ServerConnection*,std::pair<boost::signals::connection, boost::signals::connection> >::iterator con = connections.begin(); con != connections.end(); ++con) { con->first->disconnect(); delete con->first; } diff --git a/src/Net/Listener.h b/src/Net/Listener.h index 3805403..26dffab 100644 --- a/src/Net/Listener.h +++ b/src/Net/Listener.h @@ -26,7 +26,7 @@ #include <map> #include <string> -#include <sigc++/connection.h> +#include <boost/signal.hpp> namespace Mad { namespace Net { @@ -42,9 +42,9 @@ class Listener { gnutls_dh_params_t dh_params; - std::map<ServerConnection*, std::pair<sigc::connection, sigc::connection> > connections; + std::map<ServerConnection*, std::pair<boost::signals::connection, boost::signals::connection> > connections; - sigc::signal<void, ServerConnection*> signal; + boost::signal1<void, ServerConnection*> signal; void acceptHandler(int); @@ -59,7 +59,7 @@ class Listener { Listener(const std::string &x905CertFile0, const std::string &x905KeyFile0, const IPAddress &address0 = IPAddress()) throw(Exception); virtual ~Listener(); - sigc::signal<void, ServerConnection*> signalNewConnection() const {return signal;} + boost::signal1<void, ServerConnection*>& signalNewConnection() {return signal;} }; } diff --git a/src/Net/Makefile.in b/src/Net/Makefile.in index c51039d..36b924e 100644 --- a/src/Net/Makefile.in +++ b/src/Net/Makefile.in @@ -39,6 +39,7 @@ DIST_COMMON = $(noinst_HEADERS) $(srcdir)/Makefile.am \ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/argz.m4 \ $(top_srcdir)/m4/ax_boost_base.m4 \ + $(top_srcdir)/m4/ax_boost_signals.m4 \ $(top_srcdir)/m4/ax_boost_thread.m4 \ $(top_srcdir)/m4/ax_lib_mysql.m4 $(top_srcdir)/m4/libtool.m4 \ $(top_srcdir)/m4/ltdl.m4 $(top_srcdir)/m4/ltoptions.m4 \ @@ -88,6 +89,7 @@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BOOST_CPPFLAGS = @BOOST_CPPFLAGS@ BOOST_LDFLAGS = @BOOST_LDFLAGS@ +BOOST_SIGNALS_LIB = @BOOST_SIGNALS_LIB@ BOOST_THREAD_LIB = @BOOST_THREAD_LIB@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ @@ -219,8 +221,6 @@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ -sigc_CFLAGS = @sigc_CFLAGS@ -sigc_LIBS = @sigc_LIBS@ srcdir = @srcdir@ sys_symbol_underscore = @sys_symbol_underscore@ sysconfdir = @sysconfdir@ diff --git a/src/Net/ServerConnection.cpp b/src/Net/ServerConnection.cpp index c415cb3..1f01ce5 100644 --- a/src/Net/ServerConnection.cpp +++ b/src/Net/ServerConnection.cpp @@ -77,7 +77,7 @@ ServerConnection::ServerConnection(int sock0, const IPAddress &address, gnutls_d gnutls_credentials_set(session, GNUTLS_CRD_CERTIFICATE, x509_cred); gnutls_transport_set_ptr(session, (gnutls_transport_ptr_t)sock); - FdManager::get()->registerFd(sock, sigc::mem_fun(this, &ServerConnection::sendReceive)); + FdManager::get()->registerFd(sock, boost::bind(&ServerConnection::sendReceive, this, _1)); state = CONNECT; diff --git a/src/Net/ServerConnection.h b/src/Net/ServerConnection.h index 0870143..d52cd7c 100644 --- a/src/Net/ServerConnection.h +++ b/src/Net/ServerConnection.h @@ -44,7 +44,7 @@ class ServerConnection : public Connection { ServerConnection(int sock0, const IPAddress &address, gnutls_dh_params_t dh_params, const std::string &x905certFile, const std::string &x905keyFile); virtual void connectionHeader() { - rawReceive(sizeof(ConnectionHeader), sigc::mem_fun(this, &ServerConnection::connectionHeaderReceiveHandler)); + rawReceive(sizeof(ConnectionHeader), boost::bind(&ServerConnection::connectionHeaderReceiveHandler, this, _1, _2)); } public: diff --git a/src/Net/ThreadManager.cpp b/src/Net/ThreadManager.cpp index b1f4d4b..71a754e 100644 --- a/src/Net/ThreadManager.cpp +++ b/src/Net/ThreadManager.cpp @@ -24,8 +24,6 @@ #include <Common/LogManager.h> #include <fcntl.h> -#include <sigc++/bind.h> -#include <sigc++/hide.h> namespace Mad { namespace Net { @@ -50,7 +48,7 @@ void ThreadManager::workerFunc() { return; } - sigc::slot<void> nextWork = work.front(); + boost::function0<void> nextWork = work.front(); work.pop(); lock2.unlock(); @@ -85,7 +83,7 @@ void ThreadManager::detach() { threadLock.unlock(); } -void ThreadManager::pushWork(const sigc::slot<void> &newWork) { +void ThreadManager::pushWork(const boost::function0<void> &newWork) { workLock.lock(); work.push(newWork); workLock.unlock(); diff --git a/src/Net/ThreadManager.h b/src/Net/ThreadManager.h index 9394329..fd903af 100644 --- a/src/Net/ThreadManager.h +++ b/src/Net/ThreadManager.h @@ -26,8 +26,8 @@ #include <queue> #include <set> -#include <sigc++/slot.h> +#include <boost/function.hpp> #include <boost/thread/thread.hpp> #include <boost/thread/condition_variable.hpp> #include <boost/thread/locks.hpp> @@ -48,7 +48,7 @@ class ThreadManager : public Common::Initializable { boost::mutex workLock; boost::condition_variable workCond; - std::queue<sigc::slot<void> > work; + std::queue<boost::function0<void> > work; static ThreadManager threadManager; @@ -81,7 +81,7 @@ class ThreadManager : public Common::Initializable { void detach(); - void pushWork(const sigc::slot<void> &newWork); + void pushWork(const boost::function0<void> &newWork); static ThreadManager* get() { return &threadManager; diff --git a/src/Server/ConnectionManager.cpp b/src/Server/ConnectionManager.cpp index 99f5680..6ef918a 100644 --- a/src/Server/ConnectionManager.cpp +++ b/src/Server/ConnectionManager.cpp @@ -41,8 +41,6 @@ #include <unistd.h> #include <algorithm> -#include <sigc++/bind.h> - namespace Mad { namespace Server { @@ -54,7 +52,7 @@ bool ConnectionManager::Connection::send(const Net::Packet &packet) { ConnectionManager::Connection::Connection(Net::ServerConnection *connection0) : connection(connection0), type(connection0->isDaemonConnection() ? DAEMON : CLIENT), hostInfo(0) { - connection->signalReceive().connect(sigc::mem_fun(this, &Connection::receive)); + connection->signalReceive().connect(boost::bind(&Connection::receive, this, _1)); } ConnectionManager::Connection::~Connection() { @@ -90,7 +88,7 @@ void ConnectionManager::updateState(Common::HostInfo *hostInfo, Common::HostInfo for(std::set<Connection*>::iterator con = connections.begin(); con != connections.end(); ++con) { if((*con)->getConnectionType() == Connection::CLIENT) - Common::RequestManager::get()->sendRequest<Requests::DaemonStateUpdateRequest>(*con, Common::Request::slot_type(), hostInfo->getName(), state); + Common::RequestManager::get()->sendRequest<Requests::DaemonStateUpdateRequest>(*con, boost::bind(&ConnectionManager::updateStateFinished, this, _1), hostInfo->getName(), state); } } @@ -150,7 +148,7 @@ void ConnectionManager::configFinished() { if(listenerAddresses.empty()) { try { Net::Listener *listener = new Net::Listener(x509CertFile, x509KeyFile); - listener->signalNewConnection().connect(sigc::mem_fun(this, &ConnectionManager::newConnectionHandler)); + listener->signalNewConnection().connect(boost::bind(&ConnectionManager::newConnectionHandler, this, _1)); listeners.push_back(listener); } catch(Net::Exception &e) { @@ -161,7 +159,7 @@ void ConnectionManager::configFinished() { for(std::vector<Net::IPAddress>::const_iterator address = listenerAddresses.begin(); address != listenerAddresses.end(); ++address) { try { Net::Listener *listener = new Net::Listener(x509CertFile, x509KeyFile, *address); - listener->signalNewConnection().connect(sigc::mem_fun(this, &ConnectionManager::newConnectionHandler)); + listener->signalNewConnection().connect(boost::bind(&ConnectionManager::newConnectionHandler, this, _1)); listeners.push_back(listener); } catch(Net::Exception &e) { @@ -173,7 +171,7 @@ void ConnectionManager::configFinished() { void ConnectionManager::newConnectionHandler(Net::ServerConnection *con) { Connection *connection = new Connection(con); - con->signalDisconnected().connect(sigc::bind(sigc::mem_fun(this, &ConnectionManager::disconnectHandler), connection)); + con->signalDisconnected().connect(boost::bind(&ConnectionManager::disconnectHandler, this, connection)); connections.insert(connection); Common::RequestManager::get()->registerConnection(connection); diff --git a/src/Server/ConnectionManager.h b/src/Server/ConnectionManager.h index 691d51f..7d97edc 100644 --- a/src/Server/ConnectionManager.h +++ b/src/Server/ConnectionManager.h @@ -101,6 +101,9 @@ class ConnectionManager : public Common::Configurable, public Common::Initializa ConnectionManager& operator=(const ConnectionManager &o); void updateState(Common::HostInfo *hostInfo, Common::HostInfo::State state); + void updateStateFinished(const Common::Request&) { + // TODO Error handling (updateStateFinished) + } ConnectionManager() {} diff --git a/src/Server/Makefile.in b/src/Server/Makefile.in index 66a02a0..7389540 100644 --- a/src/Server/Makefile.in +++ b/src/Server/Makefile.in @@ -39,6 +39,7 @@ DIST_COMMON = $(noinst_HEADERS) $(srcdir)/Makefile.am \ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/argz.m4 \ $(top_srcdir)/m4/ax_boost_base.m4 \ + $(top_srcdir)/m4/ax_boost_signals.m4 \ $(top_srcdir)/m4/ax_boost_thread.m4 \ $(top_srcdir)/m4/ax_lib_mysql.m4 $(top_srcdir)/m4/libtool.m4 \ $(top_srcdir)/m4/ltdl.m4 $(top_srcdir)/m4/ltoptions.m4 \ @@ -93,6 +94,7 @@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BOOST_CPPFLAGS = @BOOST_CPPFLAGS@ BOOST_LDFLAGS = @BOOST_LDFLAGS@ +BOOST_SIGNALS_LIB = @BOOST_SIGNALS_LIB@ BOOST_THREAD_LIB = @BOOST_THREAD_LIB@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ @@ -224,8 +226,6 @@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ -sigc_CFLAGS = @sigc_CFLAGS@ -sigc_LIBS = @sigc_LIBS@ srcdir = @srcdir@ sys_symbol_underscore = @sys_symbol_underscore@ sysconfdir = @sysconfdir@ diff --git a/src/Server/RequestHandlers/DaemonCommandRequestHandler.cpp b/src/Server/RequestHandlers/DaemonCommandRequestHandler.cpp index 314aa97..17a7e5d 100644 --- a/src/Server/RequestHandlers/DaemonCommandRequestHandler.cpp +++ b/src/Server/RequestHandlers/DaemonCommandRequestHandler.cpp @@ -37,7 +37,7 @@ void DaemonCommandRequestHandler::handlePacket(const Common::XmlPacket &packet) sendPacket(ret); - signalFinished().emit(); + signalFinished()(); return; } @@ -48,7 +48,7 @@ void DaemonCommandRequestHandler::handlePacket(const Common::XmlPacket &packet) try { Common::Connection *daemonCon = ConnectionManager::get()->getDaemonConnection(packet["daemon"]); Common::RequestManager::get()->sendRequest<Requests::CommandRequest>(daemonCon, - sigc::mem_fun(this, &DaemonCommandRequestHandler::requestFinished), command == "reboot"); + boost::bind(&DaemonCommandRequestHandler::requestFinished, this, _1), command == "reboot"); } catch(Net::Exception &e) { Common::XmlPacket ret; @@ -77,7 +77,7 @@ void DaemonCommandRequestHandler::requestFinished(const Common::Request &request sendPacket(ret); } - signalFinished().emit(); + signalFinished()(); } } diff --git a/src/Server/RequestHandlers/DaemonFSInfoRequestHandler.cpp b/src/Server/RequestHandlers/DaemonFSInfoRequestHandler.cpp index eadc0d5..df57a94 100644 --- a/src/Server/RequestHandlers/DaemonFSInfoRequestHandler.cpp +++ b/src/Server/RequestHandlers/DaemonFSInfoRequestHandler.cpp @@ -37,7 +37,7 @@ void DaemonFSInfoRequestHandler::handlePacket(const Common::XmlPacket &packet) { sendPacket(ret); - signalFinished().emit(); + signalFinished()(); return; } @@ -46,7 +46,7 @@ void DaemonFSInfoRequestHandler::handlePacket(const Common::XmlPacket &packet) { try { Common::Connection *daemonCon = ConnectionManager::get()->getDaemonConnection(packet["daemon"]); Common::RequestManager::get()->sendRequest<Common::Requests::FSInfoRequest>(daemonCon, - sigc::mem_fun(this, &DaemonFSInfoRequestHandler::requestFinished)); + boost::bind(&DaemonFSInfoRequestHandler::requestFinished, this, _1)); } catch(Net::Exception &e) { Common::XmlPacket ret; @@ -75,7 +75,7 @@ void DaemonFSInfoRequestHandler::requestFinished(const Common::Request &request) sendPacket(ret); } - signalFinished().emit(); + signalFinished()(); } } diff --git a/src/Server/RequestHandlers/DaemonListRequestHandler.cpp b/src/Server/RequestHandlers/DaemonListRequestHandler.cpp index 2b21a29..541148d 100644 --- a/src/Server/RequestHandlers/DaemonListRequestHandler.cpp +++ b/src/Server/RequestHandlers/DaemonListRequestHandler.cpp @@ -35,7 +35,7 @@ void DaemonListRequestHandler::handlePacket(const Common::XmlPacket &packet) { sendPacket(ret); - signalFinished().emit(); + signalFinished()(); return; } @@ -57,7 +57,7 @@ void DaemonListRequestHandler::handlePacket(const Common::XmlPacket &packet) { sendPacket(ret); - signalFinished().emit(); + signalFinished()(); } } diff --git a/src/Server/RequestHandlers/DaemonStatusRequestHandler.cpp b/src/Server/RequestHandlers/DaemonStatusRequestHandler.cpp index 9e21127..3d99c57 100644 --- a/src/Server/RequestHandlers/DaemonStatusRequestHandler.cpp +++ b/src/Server/RequestHandlers/DaemonStatusRequestHandler.cpp @@ -37,7 +37,7 @@ void DaemonStatusRequestHandler::handlePacket(const Common::XmlPacket &packet) { sendPacket(ret); - signalFinished().emit(); + signalFinished()(); return; } @@ -48,7 +48,7 @@ void DaemonStatusRequestHandler::handlePacket(const Common::XmlPacket &packet) { try { Common::Connection *daemonCon = ConnectionManager::get()->getDaemonConnection(daemonName); Common::RequestManager::get()->sendRequest<Common::Requests::StatusRequest>(daemonCon, - sigc::mem_fun(this, &DaemonStatusRequestHandler::requestFinished)); + boost::bind(&DaemonStatusRequestHandler::requestFinished, this, _1)); } catch(Net::Exception &e) { Common::XmlPacket ret; @@ -77,7 +77,7 @@ void DaemonStatusRequestHandler::requestFinished(const Common::Request &request) sendPacket(ret); } - signalFinished().emit(); + signalFinished()(); } } diff --git a/src/Server/RequestHandlers/GSSAPIAuthRequestHandler.cpp b/src/Server/RequestHandlers/GSSAPIAuthRequestHandler.cpp index 5272d7a..ade8329 100644 --- a/src/Server/RequestHandlers/GSSAPIAuthRequestHandler.cpp +++ b/src/Server/RequestHandlers/GSSAPIAuthRequestHandler.cpp @@ -39,7 +39,7 @@ void GSSAPIAuthRequestHandler::handlePacket(const Common::XmlPacket &packet) { sendPacket(ret); - signalFinished().emit(); + signalFinished()(); return; } @@ -118,7 +118,7 @@ void GSSAPIAuthRequestHandler::handlePacket(const Common::XmlPacket &packet) { if(majStat != GSS_S_COMPLETE) return; - signalFinished().emit(); + signalFinished()(); } } diff --git a/src/Server/RequestHandlers/IdentifyRequestHandler.cpp b/src/Server/RequestHandlers/IdentifyRequestHandler.cpp index ac8bb42..f69b3f5 100644 --- a/src/Server/RequestHandlers/IdentifyRequestHandler.cpp +++ b/src/Server/RequestHandlers/IdentifyRequestHandler.cpp @@ -36,7 +36,7 @@ void IdentifyRequestHandler::handlePacket(const Common::XmlPacket &packet) { sendPacket(ret); - signalFinished().emit(); + signalFinished()(); return; } @@ -59,7 +59,7 @@ void IdentifyRequestHandler::handlePacket(const Common::XmlPacket &packet) { sendPacket(ret); } - signalFinished().emit(); + signalFinished()(); } } diff --git a/src/Server/RequestHandlers/LogRequestHandler.cpp b/src/Server/RequestHandlers/LogRequestHandler.cpp index 557a97c..f4547e4 100644 --- a/src/Server/RequestHandlers/LogRequestHandler.cpp +++ b/src/Server/RequestHandlers/LogRequestHandler.cpp @@ -36,7 +36,7 @@ void LogRequestHandler::handlePacket(const Common::XmlPacket &packet) { sendPacket(ret); - signalFinished().emit(); + signalFinished()(); return; } @@ -55,7 +55,7 @@ void LogRequestHandler::handlePacket(const Common::XmlPacket &packet) { sendPacket(ret); - signalFinished().emit(); + signalFinished()(); } } diff --git a/src/Server/RequestHandlers/Makefile.in b/src/Server/RequestHandlers/Makefile.in index 4d0d9ce..3ee761b 100644 --- a/src/Server/RequestHandlers/Makefile.in +++ b/src/Server/RequestHandlers/Makefile.in @@ -39,6 +39,7 @@ DIST_COMMON = $(noinst_HEADERS) $(srcdir)/Makefile.am \ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/argz.m4 \ $(top_srcdir)/m4/ax_boost_base.m4 \ + $(top_srcdir)/m4/ax_boost_signals.m4 \ $(top_srcdir)/m4/ax_boost_thread.m4 \ $(top_srcdir)/m4/ax_lib_mysql.m4 $(top_srcdir)/m4/libtool.m4 \ $(top_srcdir)/m4/ltdl.m4 $(top_srcdir)/m4/ltoptions.m4 \ @@ -86,6 +87,7 @@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BOOST_CPPFLAGS = @BOOST_CPPFLAGS@ BOOST_LDFLAGS = @BOOST_LDFLAGS@ +BOOST_SIGNALS_LIB = @BOOST_SIGNALS_LIB@ BOOST_THREAD_LIB = @BOOST_THREAD_LIB@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ @@ -217,8 +219,6 @@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ -sigc_CFLAGS = @sigc_CFLAGS@ -sigc_LIBS = @sigc_LIBS@ srcdir = @srcdir@ sys_symbol_underscore = @sys_symbol_underscore@ sysconfdir = @sysconfdir@ diff --git a/src/Server/RequestHandlers/UserInfoRequestHandler.cpp b/src/Server/RequestHandlers/UserInfoRequestHandler.cpp index 39fa63e..740c2a9 100644 --- a/src/Server/RequestHandlers/UserInfoRequestHandler.cpp +++ b/src/Server/RequestHandlers/UserInfoRequestHandler.cpp @@ -22,6 +22,8 @@ #include <Net/Exception.h> #include <Common/Logger.h> +#include <boost/bind.hpp> + namespace Mad { namespace Server { namespace RequestHandlers { @@ -36,19 +38,19 @@ void UserInfoRequestHandler::handlePacket(const Common::XmlPacket &packet) { sendPacket(ret); - signalFinished().emit(); + signalFinished()(); return; } // TODO Require authentication - if(!UserManager::get()->getUserInfo(packet["uid"], sigc::mem_fun(this, &UserInfoRequestHandler::userInfoHandler))) { + if(!UserManager::get()->getUserInfo(packet["uid"], boost::bind(&UserInfoRequestHandler::userInfoHandler, this, _1))) { Common::XmlPacket ret; ret.setType("Error"); ret.add("ErrorCode", Net::Exception::NOT_IMPLEMENTED); sendPacket(ret); - signalFinished().emit(); + signalFinished()(); } } @@ -62,7 +64,7 @@ void UserInfoRequestHandler::userInfoHandler(const Common::UserInfo &info) { ret.add("fullName", info.getFullName()); sendPacket(ret); - signalFinished().emit(); + signalFinished()(); } } diff --git a/src/Server/RequestHandlers/UserListRequestHandler.cpp b/src/Server/RequestHandlers/UserListRequestHandler.cpp index 66f67bd..cd05c12 100644 --- a/src/Server/RequestHandlers/UserListRequestHandler.cpp +++ b/src/Server/RequestHandlers/UserListRequestHandler.cpp @@ -22,6 +22,8 @@ #include <Net/Exception.h> #include <Common/Logger.h> +#include <boost/bind.hpp> + namespace Mad { namespace Server { namespace RequestHandlers { @@ -36,19 +38,19 @@ void UserListRequestHandler::handlePacket(const Common::XmlPacket &packet) { sendPacket(ret); - signalFinished().emit(); + signalFinished()(); return; } // TODO Require authentication - if(!UserManager::get()->getUserList(sigc::mem_fun(this, &UserListRequestHandler::userListHandler))) { + if(!UserManager::get()->getUserList(boost::bind(&UserListRequestHandler::userListHandler, this, _1))) { Common::XmlPacket ret; ret.setType("Error"); ret.add("ErrorCode", Net::Exception::NOT_IMPLEMENTED); sendPacket(ret); - signalFinished().emit(); + signalFinished()(); } } @@ -68,7 +70,7 @@ void UserListRequestHandler::userListHandler(const std::map<unsigned long, Commo } sendPacket(ret); - signalFinished().emit(); + signalFinished()(); } } diff --git a/src/Server/Requests/Makefile.in b/src/Server/Requests/Makefile.in index 428400d..1fbdd8f 100644 --- a/src/Server/Requests/Makefile.in +++ b/src/Server/Requests/Makefile.in @@ -39,6 +39,7 @@ DIST_COMMON = $(noinst_HEADERS) $(srcdir)/Makefile.am \ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/argz.m4 \ $(top_srcdir)/m4/ax_boost_base.m4 \ + $(top_srcdir)/m4/ax_boost_signals.m4 \ $(top_srcdir)/m4/ax_boost_thread.m4 \ $(top_srcdir)/m4/ax_lib_mysql.m4 $(top_srcdir)/m4/libtool.m4 \ $(top_srcdir)/m4/ltdl.m4 $(top_srcdir)/m4/ltoptions.m4 \ @@ -83,6 +84,7 @@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BOOST_CPPFLAGS = @BOOST_CPPFLAGS@ BOOST_LDFLAGS = @BOOST_LDFLAGS@ +BOOST_SIGNALS_LIB = @BOOST_SIGNALS_LIB@ BOOST_THREAD_LIB = @BOOST_THREAD_LIB@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ @@ -214,8 +216,6 @@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ -sigc_CFLAGS = @sigc_CFLAGS@ -sigc_LIBS = @sigc_LIBS@ srcdir = @srcdir@ sys_symbol_underscore = @sys_symbol_underscore@ sysconfdir = @sysconfdir@ diff --git a/src/Server/UserBackend.h b/src/Server/UserBackend.h index cf88095..6aac7bc 100644 --- a/src/Server/UserBackend.h +++ b/src/Server/UserBackend.h @@ -27,7 +27,7 @@ #include <map> #include <string> -#include <sigc++/signal.h> +#include <boost/signal.hpp> namespace Mad { @@ -41,19 +41,19 @@ class UserBackend { UserBackend() {} - virtual bool getUserList(const sigc::slot<void, const std::map<unsigned long, Common::UserInfo>& > &callback _UNUSED_PARAMETER_) { + virtual bool getUserList(const boost::function1<void, const std::map<unsigned long, Common::UserInfo>& > &callback _UNUSED_PARAMETER_) { return false; } - virtual bool getUserInfo(unsigned long uid _UNUSED_PARAMETER_, const sigc::slot<void, const Common::UserInfo&> &callback _UNUSED_PARAMETER_) { + virtual bool getUserInfo(unsigned long uid _UNUSED_PARAMETER_, const boost::function1<void, const Common::UserInfo&> &callback _UNUSED_PARAMETER_) { return false; } - virtual bool setPassword(unsigned long uid _UNUSED_PARAMETER_, const std::string&, const sigc::slot<void, bool> &callback _UNUSED_PARAMETER_) { + virtual bool setPassword(unsigned long uid _UNUSED_PARAMETER_, const std::string&, const boost::function1<void, bool> &callback _UNUSED_PARAMETER_) { return false; } - virtual bool addUser(const Common::UserInfo &userInfo _UNUSED_PARAMETER_, const sigc::slot<void, bool> &callback _UNUSED_PARAMETER_) { + virtual bool addUser(const Common::UserInfo &userInfo _UNUSED_PARAMETER_, const boost::function1<void, bool> &callback _UNUSED_PARAMETER_) { return false; } diff --git a/src/Server/UserManager.cpp b/src/Server/UserManager.cpp index 2f58b7a..d763a8b 100644 --- a/src/Server/UserManager.cpp +++ b/src/Server/UserManager.cpp @@ -34,7 +34,7 @@ bool UserManager::Compare::operator() (const UserBackend *b1, const UserBackend } -bool UserManager::getUserList(const sigc::slot<void, const std::map<unsigned long, Common::UserInfo>& > &callback) { +bool UserManager::getUserList(const boost::function1<void, const std::map<unsigned long, Common::UserInfo>& > &callback) { for(std::set<UserBackend*>::iterator backend = backends.begin(); backend != backends.end(); ++backend) { if((*backend)->getUserList(callback)) return true; @@ -43,7 +43,7 @@ bool UserManager::getUserList(const sigc::slot<void, const std::map<unsigned lon return false; } -bool UserManager::getUserInfo(unsigned long uid, const sigc::slot<void, const Common::UserInfo&> &callback) { +bool UserManager::getUserInfo(unsigned long uid, const boost::function1<void, const Common::UserInfo&> &callback) { for(std::set<UserBackend*>::iterator backend = backends.begin(); backend != backends.end(); ++backend) { if((*backend)->getUserInfo(uid, callback)) return true; @@ -52,7 +52,7 @@ bool UserManager::getUserInfo(unsigned long uid, const sigc::slot<void, const Co return false; } -bool UserManager::setPassword(unsigned long uid, const std::string &password, const sigc::slot<void, bool> &callback) { +bool UserManager::setPassword(unsigned long uid, const std::string &password, const boost::function1<void, bool> &callback) { for(std::set<UserBackend*>::iterator backend = backends.begin(); backend != backends.end(); ++backend) { if((*backend)->setPassword(uid, password, callback)) return true; @@ -61,7 +61,7 @@ bool UserManager::setPassword(unsigned long uid, const std::string &password, co return false; } -bool UserManager::addUser(const Common::UserInfo &userInfo, const sigc::slot<void, bool> &callback) { +bool UserManager::addUser(const Common::UserInfo &userInfo, const boost::function1<void, bool> &callback) { for(std::set<UserBackend*>::iterator backend = backends.begin(); backend != backends.end(); ++backend) { if((*backend)->addUser(userInfo, callback)) return true; diff --git a/src/Server/UserManager.h b/src/Server/UserManager.h index 3c4097b..d0e7074 100644 --- a/src/Server/UserManager.h +++ b/src/Server/UserManager.h @@ -25,7 +25,7 @@ #include <map> #include <set> -#include <sigc++/slot.h> +#include <boost/function.hpp> namespace Mad { namespace Server { @@ -54,12 +54,12 @@ class UserManager { } - bool getUserList(const sigc::slot<void, const std::map<unsigned long, Common::UserInfo>& > &callback); - bool getUserInfo(unsigned long uid, const sigc::slot<void, const Common::UserInfo&> &callback); + bool getUserList(const boost::function1<void, const std::map<unsigned long, Common::UserInfo>& > &callback); + bool getUserInfo(unsigned long uid, const boost::function1<void, const Common::UserInfo&> &callback); - bool setPassword(unsigned long uid, const std::string &password, const sigc::slot<void, bool> &callback); + bool setPassword(unsigned long uid, const std::string &password, const boost::function1<void, bool> &callback); - bool addUser(const Common::UserInfo &userInfo, const sigc::slot<void, bool> &callback); + bool addUser(const Common::UserInfo &userInfo, const boost::function1<void, bool> &callback); static UserManager *get() { diff --git a/src/mad.cpp b/src/mad.cpp index 1a504f6..035c0be 100644 --- a/src/mad.cpp +++ b/src/mad.cpp @@ -71,7 +71,7 @@ int main() { //char hostname[256]; //gethostname(hostname, sizeof(hostname)); //Common::RequestManager::get()->sendRequest<Daemon::Requests::IdentifyRequest>(connection, sigc::ptr_fun(requestFinished), hostname); - Common::RequestManager::get()->sendRequest<Daemon::Requests::IdentifyRequest>(connection, sigc::ptr_fun(requestFinished), "test"); + Common::RequestManager::get()->sendRequest<Daemon::Requests::IdentifyRequest>(connection, &requestFinished, "test"); while(connection->isConnected()) usleep(100000); diff --git a/src/madc.cpp b/src/madc.cpp index 04f55b2..106617c 100644 --- a/src/madc.cpp +++ b/src/madc.cpp @@ -103,9 +103,9 @@ int main(int argc, char *argv[]) { std::cerr << " done." << std::endl << std::endl; Client::CommandParser::get()->setConnection(connection); - Client::CommandManager::get()->signalFinished().connect(sigc::ptr_fun(activateReadline)); + Client::CommandManager::get()->signalFinished().connect(&activateReadline); - Net::FdManager::get()->registerFd(STDIN_FILENO, sigc::ptr_fun(charHandler)); + Net::FdManager::get()->registerFd(STDIN_FILENO,&charHandler); activateReadline(); diff --git a/src/modules/Makefile.in b/src/modules/Makefile.in index 077c7bb..8dc9810 100644 --- a/src/modules/Makefile.in +++ b/src/modules/Makefile.in @@ -42,6 +42,7 @@ DIST_COMMON = $(noinst_HEADERS) $(srcdir)/Makefile.am \ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/argz.m4 \ $(top_srcdir)/m4/ax_boost_base.m4 \ + $(top_srcdir)/m4/ax_boost_signals.m4 \ $(top_srcdir)/m4/ax_boost_thread.m4 \ $(top_srcdir)/m4/ax_lib_mysql.m4 $(top_srcdir)/m4/libtool.m4 \ $(top_srcdir)/m4/ltdl.m4 $(top_srcdir)/m4/ltoptions.m4 \ @@ -68,8 +69,7 @@ FileLogger_la_OBJECTS = $(am_FileLogger_la_OBJECTS) FileLogger_la_LINK = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ $(CXXFLAGS) $(FileLogger_la_LDFLAGS) $(LDFLAGS) -o $@ -am__DEPENDENCIES_1 = -SystemBackendPosix_la_DEPENDENCIES = $(am__DEPENDENCIES_1) +SystemBackendPosix_la_DEPENDENCIES = am_SystemBackendPosix_la_OBJECTS = SystemBackendPosix.lo SystemBackendPosix_la_OBJECTS = $(am_SystemBackendPosix_la_OBJECTS) SystemBackendPosix_la_LINK = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) \ @@ -83,6 +83,7 @@ SystemBackendProc_la_LINK = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ $(CXXFLAGS) $(SystemBackendProc_la_LDFLAGS) $(LDFLAGS) -o $@ @SYSTEMBACKEND_PROC_TRUE@am_SystemBackendProc_la_rpath = +am__DEPENDENCIES_1 = UserBackendMysql_la_DEPENDENCIES = $(am__DEPENDENCIES_1) \ $(am__DEPENDENCIES_1) am_UserBackendMysql_la_OBJECTS = UserBackendMysql.lo @@ -123,6 +124,7 @@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BOOST_CPPFLAGS = @BOOST_CPPFLAGS@ BOOST_LDFLAGS = @BOOST_LDFLAGS@ +BOOST_SIGNALS_LIB = @BOOST_SIGNALS_LIB@ BOOST_THREAD_LIB = @BOOST_THREAD_LIB@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ @@ -254,8 +256,6 @@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ -sigc_CFLAGS = @sigc_CFLAGS@ -sigc_LIBS = @sigc_LIBS@ srcdir = @srcdir@ sys_symbol_underscore = @sys_symbol_underscore@ sysconfdir = @sysconfdir@ diff --git a/src/modules/SystemBackendPosix.cpp b/src/modules/SystemBackendPosix.cpp index 21e5c75..4969c6d 100644 --- a/src/modules/SystemBackendPosix.cpp +++ b/src/modules/SystemBackendPosix.cpp @@ -33,8 +33,6 @@ #include <sys/wait.h> #include <unistd.h> -#include <sigc++/bind.h> - #define init SystemBackendPosix_LTX_init #define deinit SystemBackendPosix_LTX_deinit @@ -43,8 +41,8 @@ namespace Modules { SystemBackendPosix *SystemBackendPosix::backend = 0; -std::map<pid_t, sigc::slot<void, int> > SystemBackendPosix::processes; -std::map<pid_t, sigc::slot<void, int, const std::string&> > SystemBackendPosix::processesWithOutput; +std::map<pid_t, boost::function1<void, int> > SystemBackendPosix::processes; +std::map<pid_t, boost::function2<void, int, const std::string&> > SystemBackendPosix::processesWithOutput; std::map<pid_t, int> SystemBackendPosix::processesWOHandles; std::map<pid_t, std::string > SystemBackendPosix::processesWOOutput; @@ -70,7 +68,7 @@ SystemBackendPosix::~SystemBackendPosix() { } -void SystemBackendPosix::fsInfoCallback(int, const std::string &output, const sigc::slot<void, const std::vector<Common::SystemManager::FSInfo>& > &callback) { +void SystemBackendPosix::fsInfoCallback(int, const std::string &output, const boost::function1<void, const std::vector<Common::SystemManager::FSInfo>& > &callback) { std::vector<Common::SystemManager::FSInfo> ret; std::istringstream stream(output); std::string str; @@ -99,14 +97,14 @@ void SystemBackendPosix::fsInfoCallback(int, const std::string &output, const si callback(ret); } -bool SystemBackendPosix::getFSInfo(const sigc::slot<void, const std::vector<Common::SystemManager::FSInfo>& > &callback) { +bool SystemBackendPosix::getFSInfo(const boost::function1<void, const std::vector<Common::SystemManager::FSInfo>& > &callback) { std::vector<std::string> argv; argv.push_back("/bin/df"); argv.push_back("-P"); argv.push_back("-k"); - return execWithOutput(sigc::bind(sigc::mem_fun(this, &SystemBackendPosix::fsInfoCallback), callback), "/bin/df", argv); + return execWithOutput(boost::bind(&SystemBackendPosix::fsInfoCallback, this, _1, _2, callback), "/bin/df", argv); } @@ -115,14 +113,14 @@ void SystemBackendPosix::childHandler(int) { pid_t pid; while((pid = waitpid(-1, &status, WNOHANG)) > 0) { - std::map<pid_t, sigc::slot<void, int> >::iterator it = processes.find(pid); + std::map<pid_t, boost::function1<void, int> >::iterator it = processes.find(pid); if(it != processes.end()) { - Common::ActionManager::get()->add(sigc::bind(it->second, status)); + Common::ActionManager::get()->add(boost::bind(it->second, status)); processes.erase(it); } else { - std::map<pid_t, sigc::slot<void, int, const std::string&> >::iterator it2 = processesWithOutput.find(pid); + std::map<pid_t, boost::function2<void, int, const std::string&> >::iterator it2 = processesWithOutput.find(pid); if(it2 != processesWithOutput.end()) { char buffer[1024]; @@ -133,10 +131,10 @@ void SystemBackendPosix::childHandler(int) { while((n = read(handle, buffer, sizeof(buffer))) > 0) output += std::string(buffer, n); - Net::FdManager::get()->unregisterFd(handle); - close(handle); + //Net::FdManager::get()->unregisterFd(handle); + //close(handle); - Common::ActionManager::get()->add(sigc::bind(it2->second, status, output)); + //Common::ActionManager::get()->add(boost::bind(it2->second, status, output)); processesWithOutput.erase(it2); processesWOHandles.erase(pid); processesWOOutput.erase(pid); @@ -218,7 +216,7 @@ void SystemBackendPosix::destroyArgs(std::pair<char**, char**> args) { } } -bool SystemBackendPosix::exec(const sigc::slot<void, int> &resultHandler, const std::string &filename, const std::vector<std::string> &argv, const std::vector<std::string> &env) { +bool SystemBackendPosix::exec(const boost::function1<void, int> &resultHandler, const std::string &filename, const std::vector<std::string> &argv, const std::vector<std::string> &env) { pid_t pid; std::pair<char**, char**> args = makeArgs(filename, argv, env); @@ -239,7 +237,7 @@ bool SystemBackendPosix::exec(const sigc::slot<void, int> &resultHandler, const return ret; } -bool SystemBackendPosix::execWithOutput(const sigc::slot<void, int, const std::string&> &resultHandler, const std::string &filename, const std::vector<std::string> &argv, const std::vector<std::string> &env) { +bool SystemBackendPosix::execWithOutput(const boost::function2<void, int, const std::string&> &resultHandler, const std::string &filename, const std::vector<std::string> &argv, const std::vector<std::string> &env) { pid_t pid; std::pair<char**, char**> args = makeArgs(filename, argv, env); @@ -268,7 +266,7 @@ bool SystemBackendPosix::execWithOutput(const sigc::slot<void, int, const std::s processesWOHandles.insert(std::make_pair(pid, pipeHandles[0])); processesWOOutput.insert(std::make_pair(pid, std::string())); - Net::FdManager::get()->registerFd(pipeHandles[0], sigc::bind(sigc::ptr_fun(&SystemBackendPosix::outputHandler), pid), POLLIN); + Net::FdManager::get()->registerFd(pipeHandles[0], boost::bind(&SystemBackendPosix::outputHandler, _1, pid), POLLIN); } dup2(saveStdout, STDOUT_FILENO); // restore old stdout diff --git a/src/modules/SystemBackendPosix.h b/src/modules/SystemBackendPosix.h index b12af6b..6d9b65f 100644 --- a/src/modules/SystemBackendPosix.h +++ b/src/modules/SystemBackendPosix.h @@ -27,18 +27,20 @@ #include <vector> #include <sys/types.h> -#include <sigc++/slot.h> -#include <sigc++/adaptors/hide.h> + +#include <boost/bind.hpp> namespace Mad { namespace Modules { +// TODO SystemBackendPosix doesn't work !!! + class SystemBackendPosix : private Common::SystemBackend { private: static SystemBackendPosix *backend; - static std::map<pid_t, sigc::slot<void, int> > processes; + static std::map<pid_t, boost::function1<void, int> > processes; - static std::map<pid_t, sigc::slot<void, int, const std::string&> > processesWithOutput; + static std::map<pid_t, boost::function2<void, int, const std::string&> > processesWithOutput; static std::map<pid_t, int> processesWOHandles; static std::map<pid_t, std::string > processesWOOutput; @@ -55,13 +57,13 @@ class SystemBackendPosix : private Common::SystemBackend { setChildHandler(); } - void fsInfoCallback(int, const std::string &output, const sigc::slot<void, const std::vector<Common::SystemManager::FSInfo>& > &callback); + void fsInfoCallback(int, const std::string &output, const boost::function1<void, const std::vector<Common::SystemManager::FSInfo>& > &callback); protected: - virtual bool getFSInfo(const sigc::slot<void, const std::vector<Common::SystemManager::FSInfo>& > &callback); + virtual bool getFSInfo(const boost::function1<void, const std::vector<Common::SystemManager::FSInfo>& > &callback); - virtual bool shutdown(const sigc::slot<void> &callback) {return exec(sigc::hide(callback), "/sbin/halt");} - virtual bool reboot(const sigc::slot<void> &callback) {return exec(sigc::hide(callback), "/sbin/reboot");} + virtual bool shutdown(const boost::function0<void> &callback) {return exec(boost::bind(callback), "/sbin/halt");} + virtual bool reboot(const boost::function0<void> &callback) {return exec(boost::bind(callback), "/sbin/reboot");} public: ~SystemBackendPosix(); @@ -83,10 +85,10 @@ class SystemBackendPosix : private Common::SystemBackend { backend = 0; } - static bool exec(const sigc::slot<void, int> &resultHandler, const std::string &filename, const std::vector<std::string> &argv = std::vector<std::string>(), + static bool exec(const boost::function1<void, int> &resultHandler, const std::string &filename, const std::vector<std::string> &argv = std::vector<std::string>(), const std::vector<std::string> &env = std::vector<std::string>()); - static bool execWithOutput(const sigc::slot<void, int, const std::string&> &resultHandler, const std::string &filename, const std::vector<std::string> &argv = std::vector<std::string>(), + static bool execWithOutput(const boost::function2<void, int, const std::string&> &resultHandler, const std::string &filename, const std::vector<std::string> &argv = std::vector<std::string>(), const std::vector<std::string> &env = std::vector<std::string>()); }; diff --git a/src/modules/SystemBackendProc.cpp b/src/modules/SystemBackendProc.cpp index 501f779..68f9cec 100644 --- a/src/modules/SystemBackendProc.cpp +++ b/src/modules/SystemBackendProc.cpp @@ -24,7 +24,7 @@ #include <cstdio> #include <cstring> -#include <sigc++/bind.h> +#include <boost/bind.hpp> #define init SystemBackendProc_LTX_init #define deinit SystemBackendProc_LTX_deinit @@ -34,7 +34,7 @@ namespace Modules { SystemBackendProc *SystemBackendProc::backend = 0; -bool SystemBackendProc::getUptimeInfo(const sigc::slot<void, unsigned long, unsigned long> &callback) { +bool SystemBackendProc::getUptimeInfo(const boost::function2<void, unsigned long, unsigned long> &callback) { unsigned long uptime = 0, idleTime = 0; uptimeFile.seekg(0, std::ios::beg); @@ -53,12 +53,12 @@ bool SystemBackendProc::getUptimeInfo(const sigc::slot<void, unsigned long, unsi if(uptimeFile.good()) idleTime = (unsigned long)f; - Common::ActionManager::get()->add(sigc::bind(callback, uptime, idleTime)); + Common::ActionManager::get()->add(boost::bind(callback, uptime, idleTime)); return true; } -bool SystemBackendProc::getMemoryInfo(const sigc::slot<void, unsigned long, unsigned long, unsigned long, unsigned long> &callback) { +bool SystemBackendProc::getMemoryInfo(const boost::function4<void, unsigned long, unsigned long, unsigned long, unsigned long> &callback) { unsigned long totalMem = 0, freeMem = 0, totalSwap = 0, freeSwap = 0; meminfoFile.seekg(0, std::ios::beg); @@ -90,12 +90,12 @@ bool SystemBackendProc::getMemoryInfo(const sigc::slot<void, unsigned long, unsi break; } - Common::ActionManager::get()->add(sigc::bind(callback, totalMem, freeMem, totalSwap, freeSwap)); + Common::ActionManager::get()->add(boost::bind(callback, totalMem, freeMem, totalSwap, freeSwap)); return true; } -bool SystemBackendProc::getLoadInfo(const sigc::slot<void, unsigned long, unsigned long, float, float, float> &callback) { +bool SystemBackendProc::getLoadInfo(const boost::function5<void, unsigned long, unsigned long, float, float, float> &callback) { unsigned long currentLoad = 0, nProcesses = 0; float loadAvg1 = 0, loadAvg5 = 0, loadAvg15 = 0; @@ -112,7 +112,7 @@ bool SystemBackendProc::getLoadInfo(const sigc::slot<void, unsigned long, unsign std::sscanf(line.c_str(), "%f %f %f %lu/%lu", &loadAvg1, &loadAvg5, &loadAvg15, ¤tLoad, &nProcesses); - Common::ActionManager::get()->add(sigc::bind(callback, currentLoad, nProcesses, loadAvg1, loadAvg5, loadAvg15)); + Common::ActionManager::get()->add(boost::bind(callback, currentLoad, nProcesses, loadAvg1, loadAvg5, loadAvg15)); return true; } diff --git a/src/modules/SystemBackendProc.h b/src/modules/SystemBackendProc.h index 7174551..bf19e22 100644 --- a/src/modules/SystemBackendProc.h +++ b/src/modules/SystemBackendProc.h @@ -38,9 +38,9 @@ class SystemBackendProc : private Common::SystemBackend { SystemBackendProc() : uptimeFile("/proc/uptime"), meminfoFile("/proc/meminfo"), loadFile("/proc/loadavg") {} protected: - virtual bool getUptimeInfo(const sigc::slot<void, unsigned long, unsigned long> &callback); - virtual bool getMemoryInfo(const sigc::slot<void, unsigned long, unsigned long, unsigned long, unsigned long> &callback); - virtual bool getLoadInfo(const sigc::slot<void, unsigned long, unsigned long, float, float, float> &callback); + virtual bool getUptimeInfo(const boost::function2<void, unsigned long, unsigned long> &callback); + virtual bool getMemoryInfo(const boost::function4<void, unsigned long, unsigned long, unsigned long, unsigned long> &callback); + virtual bool getLoadInfo(const boost::function5<void, unsigned long, unsigned long, float, float, float> &callback); public: static void registerBackend() { diff --git a/src/modules/UserBackendMysql.cpp b/src/modules/UserBackendMysql.cpp index daea626..da5126a 100644 --- a/src/modules/UserBackendMysql.cpp +++ b/src/modules/UserBackendMysql.cpp @@ -27,7 +27,7 @@ #include <sstream> -#include <sigc++/bind.h> +#include <boost/bind.hpp> #include <pcrecpp.h> #define init UserBackendMysql_LTX_init @@ -135,7 +135,7 @@ void UserBackendMysql::configFinished() { } -bool UserBackendMysql::getUserList(const sigc::slot<void, const std::map<unsigned long, Common::UserInfo>& > &callback) { +bool UserBackendMysql::getUserList(const boost::function1<void, const std::map<unsigned long, Common::UserInfo>& > &callback) { mysql_ping(mysql); mysql_real_query(mysql, queryListUsers.c_str(), queryListUsers.length()); @@ -155,12 +155,12 @@ bool UserBackendMysql::getUserList(const sigc::slot<void, const std::map<unsigne users.insert(std::make_pair(user.getUid(), user)); } - Common::ActionManager::get()->add(sigc::bind(callback, users)); + Common::ActionManager::get()->add(boost::bind(callback, users)); return true; } -bool UserBackendMysql::getUserInfo(unsigned long uid, const sigc::slot<void, const Common::UserInfo&> &callback) { +bool UserBackendMysql::getUserInfo(unsigned long uid, const boost::function1<void, const Common::UserInfo&> &callback) { mysql_ping(mysql); std::string query = queryUserById; @@ -186,12 +186,12 @@ bool UserBackendMysql::getUserInfo(unsigned long uid, const sigc::slot<void, con user.setGid(strtoul(row[1], 0, 10)); user.setFullName(row[3]); - Common::ActionManager::get()->add(sigc::bind(callback, user)); + Common::ActionManager::get()->add(boost::bind(callback, user)); while((row = mysql_fetch_row(result)) != 0) {} } else { - Common::ActionManager::get()->add(sigc::bind(callback, Common::UserInfo())); + Common::ActionManager::get()->add(boost::bind(callback, Common::UserInfo())); } return true; diff --git a/src/modules/UserBackendMysql.h b/src/modules/UserBackendMysql.h index ddd4252..2e4f1ff 100644 --- a/src/modules/UserBackendMysql.h +++ b/src/modules/UserBackendMysql.h @@ -50,8 +50,8 @@ class UserBackendMysql : private Server::UserBackend, private Common::Configurab virtual bool handleConfigEntry(const Common::ConfigEntry &entry, bool); virtual void configFinished(); - virtual bool getUserList(const sigc::slot<void, const std::map<unsigned long, Common::UserInfo>& > &callback); - virtual bool getUserInfo(unsigned long uid, const sigc::slot<void, const Common::UserInfo&> &callback); + virtual bool getUserList(const boost::function1<void, const std::map<unsigned long, Common::UserInfo>& > &callback); + virtual bool getUserInfo(unsigned long uid, const boost::function1<void, const Common::UserInfo&> &callback); public: virtual ~UserBackendMysql() { |