omniEvents-2_6_2/0000755000076400001440000000000010303671742014131 5ustar alexusers00000000000000omniEvents-2_6_2/aclocal.d/0000755000076400001440000000000010240451203015735 5ustar alexusers00000000000000omniEvents-2_6_2/aclocal.d/ACX_PTHREAD.m40000644000076400001440000002303110227236242017771 0ustar alexusers00000000000000dnl dnl ACX_PTHREAD([ACTION-IF-FOUND[, ACTION-IF-NOT-FOUND]]) dnl dnl Description dnl dnl This macro figures out how to build C programs using POSIX threads. It dnl sets the PTHREAD_LIBS output variable to the threads library and linker dnl flags, and the PTHREAD_CFLAGS output variable to any special C compiler dnl flags that are needed. (The user can also force certain compiler dnl flags/libs to be tested by setting these environment variables.) dnl dnl Also sets PTHREAD_CC to any special C compiler that is needed for dnl multi-threaded programs (defaults to the value of CC otherwise). (This is dnl necessary on AIX to use the special cc_r compiler alias.) dnl dnl NOTE: You are assumed to not only compile your program with these flags, dnl but also link it with them as well. e.g. you should link with $PTHREAD_CC dnl $CFLAGS $PTHREAD_CFLAGS $LDFLAGS ... $PTHREAD_LIBS $LIBS dnl dnl If you are only building threads programs, you may wish to use these dnl variables in your default LIBS, CFLAGS, and CC: dnl dnl LIBS="$PTHREAD_LIBS $LIBS" dnl CFLAGS="$CFLAGS $PTHREAD_CFLAGS" dnl CC="$PTHREAD_CC" dnl dnl In addition, if the PTHREAD_CREATE_JOINABLE thread-attribute constant dnl has a nonstandard name, defines PTHREAD_CREATE_JOINABLE to that name dnl (e.g. PTHREAD_CREATE_UNDETACHED on AIX). dnl dnl ACTION-IF-FOUND is a list of shell commands to run if a threads library dnl is found, and ACTION-IF-NOT-FOUND is a list of commands to run it if it dnl is not found. If ACTION-IF-FOUND is not specified, the default action dnl will define HAVE_PTHREAD. dnl dnl Please let the authors know if this macro fails on any platform, or if dnl you have any other suggestions or comments. This macro was based on work dnl by SGJ on autoconf scripts for FFTW (www.fftw.org) (with help from M. dnl Frigo), as well as ac_pthread and hb_pthread macros posted by AFC to the dnl autoconf macro repository. We are also grateful for the helpful feedback dnl of numerous users. dnl dnl Version: 1.8 (last modified: 2003-05-21) dnl Author: Steven G. Johnson and dnl Alejandro Forero Cuervo dnl dnl from http://www.gnu.org/software/ac-archive/htmldoc/index.html dnl dnl License: dnl GNU General Public License dnl [http://www.gnu.org/software/ac-archive/htmldoc/COPYING.html] dnl with this special exception dnl [http://www.gnu.org/software/ac-archive/htmldoc/COPYING-Exception.html]. dnl AC_DEFUN([ACX_PTHREAD], [ AC_REQUIRE([AC_CANONICAL_HOST]) AC_LANG_SAVE AC_LANG_C acx_pthread_ok=no # We used to check for pthread.h first, but this fails if pthread.h # requires special compiler flags (e.g. on True64 or Sequent). # It gets checked for in the link test anyway. # First of all, check if the user has set any of the PTHREAD_LIBS, # etcetera environment variables, and if threads linking works using # them: if test x"$PTHREAD_LIBS$PTHREAD_CFLAGS" != x; then save_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS $PTHREAD_CFLAGS" save_LIBS="$LIBS" LIBS="$PTHREAD_LIBS $LIBS" AC_MSG_CHECKING([for pthread_join in LIBS=$PTHREAD_LIBS with CFLAGS=$PTHREAD_CFLAGS]) AC_TRY_LINK_FUNC(pthread_join, acx_pthread_ok=yes) AC_MSG_RESULT($acx_pthread_ok) if test x"$acx_pthread_ok" = xno; then PTHREAD_LIBS="" PTHREAD_CFLAGS="" fi LIBS="$save_LIBS" CFLAGS="$save_CFLAGS" fi # We must check for the threads library under a number of different # names; the ordering is very important because some systems # (e.g. DEC) have both -lpthread and -lpthreads, where one of the # libraries is broken (non-POSIX). # Create a list of thread flags to try. Items starting with a "-" are # C compiler flags, and other items are library names, except for "none" # which indicates that we try without any flags at all. acx_pthread_flags="pthreads none -Kthread -kthread lthread -pthread -pthreads -mthreads pthread --thread-safe -mt" # The ordering *is* (sometimes) important. Some notes on the # individual items follow: # pthreads: AIX (must check this before -lpthread) # none: in case threads are in libc; should be tried before -Kthread and # other compiler flags to prevent continual compiler warnings # -Kthread: Sequent (threads in libc, but -Kthread needed for pthread.h) # -kthread: FreeBSD kernel threads (preferred to -pthread since SMP-able) # lthread: LinuxThreads port on FreeBSD (also preferred to -pthread) # -pthread: Linux/gcc (kernel threads), BSD/gcc (userland threads) # -pthreads: Solaris/gcc # -mthreads: Mingw32/gcc, Lynx/gcc # -mt: Sun Workshop C (may only link SunOS threads [-lthread], but it # doesn't hurt to check since this sometimes defines pthreads too; # also defines -D_REENTRANT) # pthread: Linux, etcetera # --thread-safe: KAI C++ case "${host_cpu}-${host_os}" in *solaris*) # On Solaris (at least, for some versions), libc contains stubbed # (non-functional) versions of the pthreads routines, so link-based # tests will erroneously succeed. (We need to link with -pthread or # -lpthread.) (The stubs are missing pthread_cleanup_push, or rather # a function called by this macro, so we could check for that, but # who knows whether they'll stub that too in a future libc.) So, # we'll just look for -pthreads and -lpthread first: acx_pthread_flags="-pthread -pthreads pthread -mt $acx_pthread_flags" ;; esac if test x"$acx_pthread_ok" = xno; then for flag in $acx_pthread_flags; do case $flag in none) AC_MSG_CHECKING([whether pthreads work without any flags]) ;; -*) AC_MSG_CHECKING([whether pthreads work with $flag]) PTHREAD_CFLAGS="$flag" ;; *) AC_MSG_CHECKING([for the pthreads library -l$flag]) PTHREAD_LIBS="-l$flag" ;; esac save_LIBS="$LIBS" save_CFLAGS="$CFLAGS" LIBS="$PTHREAD_LIBS $LIBS" CFLAGS="$CFLAGS $PTHREAD_CFLAGS" # Check for various functions. We must include pthread.h, # since some functions may be macros. (On the Sequent, we # need a special flag -Kthread to make this header compile.) # We check for pthread_join because it is in -lpthread on IRIX # while pthread_create is in libc. We check for pthread_attr_init # due to DEC craziness with -lpthreads. We check for # pthread_cleanup_push because it is one of the few pthread # functions on Solaris that doesn't have a non-functional libc stub. # We try pthread_create on general principles. AC_TRY_LINK([#include ], [pthread_t th; pthread_join(th, 0); pthread_attr_init(0); pthread_cleanup_push(0, 0); pthread_create(0,0,0,0); pthread_cleanup_pop(0); ], [acx_pthread_ok=yes]) LIBS="$save_LIBS" CFLAGS="$save_CFLAGS" AC_MSG_RESULT($acx_pthread_ok) if test "x$acx_pthread_ok" = xyes; then break; fi PTHREAD_LIBS="" PTHREAD_CFLAGS="" done fi # Various other checks: if test "x$acx_pthread_ok" = xyes; then save_LIBS="$LIBS" LIBS="$PTHREAD_LIBS $LIBS" save_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS $PTHREAD_CFLAGS" # Detect AIX lossage: threads are created detached by default # and the JOINABLE attribute has a nonstandard name (UNDETACHED). AC_MSG_CHECKING([for joinable pthread attribute]) AC_TRY_LINK([#include ], [int attr=PTHREAD_CREATE_JOINABLE;], ok=PTHREAD_CREATE_JOINABLE, ok=unknown) if test x"$ok" = xunknown; then AC_TRY_LINK([#include ], [int attr=PTHREAD_CREATE_UNDETACHED;], ok=PTHREAD_CREATE_UNDETACHED, ok=unknown) fi if test x"$ok" != xPTHREAD_CREATE_JOINABLE; then AC_DEFINE(PTHREAD_CREATE_JOINABLE, $ok, [Define to the necessary symbol if this constant uses a non-standard name on your system.]) fi AC_MSG_RESULT(${ok}) if test x"$ok" = xunknown; then AC_MSG_WARN([we do not know how to create joinable pthreads]) fi AC_MSG_CHECKING([if more special flags are required for pthreads]) flag=no case "${host_cpu}-${host_os}" in *-aix* | *-freebsd*) flag="-D_THREAD_SAFE";; *solaris* | *-osf* | *-hpux*) flag="-D_REENTRANT";; esac AC_MSG_RESULT(${flag}) if test "x$flag" != xno; then PTHREAD_CFLAGS="$flag $PTHREAD_CFLAGS" fi LIBS="$save_LIBS" CFLAGS="$save_CFLAGS" # More AIX lossage: must compile with cc_r AC_CHECK_PROG(PTHREAD_CC, cc_r, cc_r, ${CC}) else PTHREAD_CC="$CC" fi AC_SUBST(PTHREAD_LIBS) AC_SUBST(PTHREAD_CFLAGS) AC_SUBST(PTHREAD_CC) # Finally, execute ACTION-IF-FOUND/ACTION-IF-NOT-FOUND: if test x"$acx_pthread_ok" = xyes; then ifelse([$1],,AC_DEFINE(HAVE_PTHREAD,1,[Define if you have POSIX threads libraries and header files.]),[$1]) : else acx_pthread_ok=no $2 fi AC_LANG_RESTORE ])dnl ACX_PTHREADomniEvents-2_6_2/aclocal.d/AC_CORBA_IDLCOS.m40000644000076400001440000000400510227236242020435 0ustar alexusers00000000000000dnl dnl AC_CORBA_IDLCOS dnl dnl Description dnl dnl Searches for the directory containing COS/CosNaming.idl dnl and records it in the output variable IDL_COS_DIR. dnl dnl Copyright (C) 2003, Alex Tingle dnl dnl License: dnl GNU General Public License dnl [http://www.gnu.org/software/ac-archive/htmldoc/COPYING.html] dnl with this special exception dnl [http://www.gnu.org/software/ac-archive/htmldoc/COPYING-Exception.html]. dnl AC_DEFUN([AC_CORBA_IDLCOS],[ AC_REQUIRE([AC_PROG_OMNIIDL]) AC_CACHE_CHECK([for IDL COS include directory], ac_cv_corba_idlcos, [ ac_cv_corba_idlcos=no if test "x$OMNIORBBASE" != x; then if test -d "$OMNIORBBASE/share/idl"; then ac_corba_idldirs="$ac_corba_idldirs $OMNIORBBASE/share/idl" fi if test -d "$OMNIORBBASE/idl"; then ac_corba_idldirs="$ac_corba_idldirs $OMNIORBBASE/idl" fi else if test "x$prefix" != x && test "$prefix" != "NONE"; then if test -d "$prefix/share/idl"; then ac_corba_idldirs="$ac_corba_idldirs $prefix/share/idl" fi if test -d "$prefix/idl"; then ac_corba_idldirs="$ac_corba_idldirs $prefix/idl" fi fi if test -d "/usr/local/share/idl"; then ac_corba_idldirs="$ac_corba_idldirs /usr/local/share/idl" fi if test -d "/usr/share/idl"; then ac_corba_idldirs="$ac_corba_idldirs /usr/share/idl" fi if test -d "/opt/share/idl"; then ac_corba_idldirs="$ac_corba_idldirs /opt/share/idl" fi fi if test -n "$ac_corba_idldirs"; then for ac_corba_i in `find $ac_corba_idldirs -type d -name COS 2>/dev/null` do if test -f "$ac_corba_i/CosNaming.idl" then ac_cv_corba_idlcos=`AS_DIRNAME(["$ac_corba_i"])` break fi done fi ]) if test "x$ac_cv_corba_idlcos" != xno; then IDL_COS_DIR=$ac_cv_corba_idlcos AC_SUBST(IDL_COS_DIR) fi ]) omniEvents-2_6_2/aclocal.d/AC_CORBA_OMNIEVENTS.m40000644000076400001440000000315310227236242021152 0ustar alexusers00000000000000dnl dnl AC_CORBA_OMNIEVENTS dnl dnl Description dnl dnl Tests for a linkable installation of omniEvents dnl [http://www.omnievents.org/]. If found, it defines dnl pre-processor macro `HAVE_OMNIEVENTS'. dnl dnl Copyright (C) 2004, Alex Tingle dnl dnl License: dnl GNU General Public License dnl [http://www.gnu.org/software/ac-archive/htmldoc/COPYING.html] dnl with this special exception dnl [http://www.gnu.org/software/ac-archive/htmldoc/COPYING-Exception.html]. dnl AC_DEFUN([AC_CORBA_OMNIEVENTS],[ AC_REQUIRE([AC_CORBA_ORB]) AC_CACHE_CHECK([for omniEvents], ac_cv_corba_omnievents, [ AC_LANG_SAVE AC_LANG_CPLUSPLUS AC_CXX_CLEAN_TEMPLATE_REPOSITORY # Save CPPFLAGS, LDFLAGS & LIBS ac_corba_save_cppflags="$CPPFLAGS" ac_corba_save_ldflags="$LDFLAGS" ac_corba_save_libs="$LIBS" LIBS="$ac_corba_save_libs -lomniEventsCl" # Nasty hack to get around problems with omniEvents 2.4.1 install. CPPFLAGS="$ac_corba_save_cppflags -I$ac_omniorbbase/include/COS" ac_cv_corba_omnievents=no AC_TRY_LINK( [#include ], [EventChannelAdmin::EventChannelFactory_var factory], [ac_cv_corba_omnievents=yes] ) if test "$ac_cv_corba_omnievents" = no then # Restore CPPFLAGS LDFLAGS & LIBS CPPFLAGS="$ac_corba_save_cppflags" LDFLAGS="$ac_corba_save_ldflags" LIBS="$ac_corba_save_libs" fi AC_LANG_RESTORE ]) if test "$ac_cv_corba_omnievents" != no then AC_DEFINE(HAVE_OMNIEVENTS,1,"define if omniEvents is available.") fi ]) omniEvents-2_6_2/aclocal.d/AC_CORBA_OMNI_PLATFORM.m40000644000076400001440000001032510227236242021530 0ustar alexusers00000000000000dnl dnl AC_CORBA_OMNI_PLATFORM dnl dnl Description dnl dnl Autodetects the platform and sets necessary omniORB variables. dnl defines: __OSVERSION__ dnl variables: PLATFORM_NAME, PLATFORM_DEFINITION, dnl OSVERSION, PROCESSOR_NAME, PROCESSOR_DEFINITION dnl dnl Based upon the autoconf macros from OmniORB4 dnl [http://omniorb.sourceforge.net]. dnl dnl Copyright (C) 2003, Alex Tingle dnl dnl License: dnl GNU General Public License dnl [http://www.gnu.org/software/ac-archive/htmldoc/COPYING.html] dnl with this special exception dnl [http://www.gnu.org/software/ac-archive/htmldoc/COPYING-Exception.html]. dnl AC_DEFUN([AC_CORBA_OMNI_PLATFORM],[ AC_REQUIRE([AC_CANONICAL_HOST]) plat_name="Platform_Unknown" plat_def="__unknown_platform__" os_v="0" AH_TEMPLATE(__linux__,[for OmniORB on Linux, Cygwin]) AH_TEMPLATE(__sunos__,[for OmniORB on SunOS (Solaris)]) AH_TEMPLATE(__osf1__,[for OmniORB on OSF1 (Tru64)]) AH_TEMPLATE(__hpux__,[for OmniORB on HPUX]) AH_TEMPLATE(__nextstep__,[for OmniORB on NextStep]) AH_TEMPLATE(__irix__,[for OmniORB on IRIX]) AH_TEMPLATE(__aix__,[for OmniORB on AIX]) AH_TEMPLATE(__darwin__,[for OmniORB on Darwin]) AH_TEMPLATE(__freebsd__,[for OmniORB on FreeBSD]) AH_TEMPLATE(__osr5__,[for OmniORB on OSR5]) case "$host" in *-*-linux-*) plat_name="Linux"; plat_def="__linux__"; os_v="2";; *-*-cygwin*) plat_name="Cygwin"; plat_def="__linux__"; os_v="2";; *-*-solaris*) plat_name="SunOS"; plat_def="__sunos__"; os_v="5";; *-*-osf3*) plat_name="OSF1"; plat_def="__osf1__"; os_v="3";; *-*-osf4*) plat_name="OSF1"; plat_def="__osf1__"; os_v="4";; *-*-osf5*) plat_name="OSF1"; plat_def="__osf1__"; os_v="5";; *-*-hpux10*) plat_name="HPUX"; plat_def="__hpux__"; os_v="10";; *-*-hpux11*) plat_name="HPUX"; plat_def="__hpux__"; os_v="11";; *-*-nextstep*) plat_name="NextStep"; plat_def="__nextstep__"; os_v="3";; *-*-openstep*) plat_name="NextStep"; plat_def="__nextstep__"; os_v="3";; *-*-irix*) plat_name="IRIX"; plat_def="__irix__"; os_v="6";; *-*-aix*) plat_name="AIX"; plat_def="__aix__"; os_v="4";; *-*-darwin*) plat_name="Darwin"; plat_def="__darwin__"; os_v="1";; *-*-freebsd3*) plat_name="FreeBSD"; plat_def="__freebsd__"; os_v="3";; *-*-freebsd4*) plat_name="FreeBSD"; plat_def="__freebsd__"; os_v="4";; *-*-freebsd5*) plat_name="FreeBSD"; plat_def="__freebsd__"; os_v="5";; *-*-sco*) plat_name="OSR5"; plat_def="__osr5__"; os_v="5";; esac AC_SUBST(PLATFORM_NAME, $plat_name) AC_SUBST(PLATFORM_DEFINITION, $plat_def) AC_SUBST(OSVERSION, $os_v) AC_DEFINE_UNQUOTED($plat_def) AC_DEFINE_UNQUOTED(__OSVERSION__, $os_v,[for omniORB]) proc_name="UnknownProcessor" proc_def="__processor_unknown__" AH_TEMPLATE(__x86__,[for OmniORB on x86Processor]) AH_TEMPLATE(__sparc__,[for OmniORB on SparcProcessor]) AH_TEMPLATE(__alpha__,[for OmniORB on AlphaProcessor]) AH_TEMPLATE(__m68k__,[for OmniORB on m68kProcessor]) AH_TEMPLATE(__mips__,[for OmniORB on IndigoProcessor]) AH_TEMPLATE(__arm__,[for OmniORB on ArmProcessor]) AH_TEMPLATE(__s390__,[for OmniORB on s390Processor]) AH_TEMPLATE(__ia64__,[for OmniORB on ia64Processor]) AH_TEMPLATE(__hppa__,[for OmniORB on HppaProcessor]) AH_TEMPLATE(__powerpc__,[for OmniORB on PowerPCProcessor]) case "$host" in i?86-*) proc_name="x86Processor"; proc_def="__x86__";; sparc-*) proc_name="SparcProcessor"; proc_def="__sparc__";; alpha*) proc_name="AlphaProcessor"; proc_def="__alpha__";; m68k-*) proc_name="m68kProcessor"; proc_def="__m68k__";; mips*) proc_name="IndigoProcessor"; proc_def="__mips__";; arm-*) proc_name="ArmProcessor"; proc_def="__arm__";; s390-*) proc_name="s390Processor"; proc_def="__s390__";; ia64-*) proc_name="ia64Processor"; proc_def="__ia64__";; hppa*) proc_name="HppaProcessor"; proc_def="__hppa__";; powerpc*) proc_name="PowerPCProcessor"; proc_def="__powerpc__";; esac AC_SUBST(PROCESSOR_NAME, $proc_name) AC_SUBST(PROCESSOR_DEFINITION, $proc_def) AC_DEFINE_UNQUOTED($proc_def) ]) omniEvents-2_6_2/aclocal.d/AC_CORBA_ORB.m40000644000076400001440000000225010227236242020102 0ustar alexusers00000000000000dnl dnl AC_CORBA_ORB dnl dnl Description dnl dnl Tests for a linkable CORBA ORB. Currentlly only finds omniORB3 or dnl omniORB4. Sets the output variable `CORBA_ORB', sets variables CPPFLAGS, dnl LIBS & LDFLAGS. Sets pthread & socket options if necessary. dnl dnl Copyright (C) 2003, Alex Tingle dnl dnl License: dnl GNU General Public License dnl [http://www.gnu.org/software/ac-archive/htmldoc/COPYING.html] dnl with this special exception dnl [http://www.gnu.org/software/ac-archive/htmldoc/COPYING-Exception.html]. dnl AC_DEFUN([AC_CORBA_ORB],[ AC_ARG_WITH([omniorb], [[ --with-omniorb=PATH set the path to the local omniORB installation [$OMNIORBBASE].]], [OMNIORBBASE=$withval] ) if test "x$CORBA_ORB" = x; then AC_CORBA_ORB_OMNIORB4 fi if test "x$CORBA_ORB" = x; then AC_CORBA_ORB_OMNIORB3 fi ]) dnl dnl AC_CORBA_SOCKET_NSL dnl Small wrapper around ETR_SOCKET_NSL. Automatically adds the result to LIBS. dnl AC_DEFUN([AC_CORBA_SOCKET_NSL],[ AC_REQUIRE([AC_PROG_CC]) AC_REQUIRE([ETR_SOCKET_NSL]) if test "x$ETR_SOCKET_LIBS" != x; then LIBS="$LIBS $ETR_SOCKET_LIBS" fi ]) omniEvents-2_6_2/aclocal.d/AC_CORBA_ORB_OMNIORB3.m40000644000076400001440000000676010227236242021364 0ustar alexusers00000000000000dnl dnl AC_CORBA_ORB_OMNIORB3 dnl dnl Description dnl dnl Tests for a linkable installation of omniORB3 dnl [http://omniorb.sourceforge.net]. If found, it defines dnl pre-processor macro `HAVE_OMNIORB4' and sets variables CPPFLAGS, dnl LIBS & LDFLAGS. Sets pthread & socket options if necessary. dnl dnl Copyright (C) 2003, Alex Tingle dnl dnl License: dnl GNU General Public License dnl [http://www.gnu.org/software/ac-archive/htmldoc/COPYING.html] dnl with this special exception dnl [http://www.gnu.org/software/ac-archive/htmldoc/COPYING-Exception.html]. dnl AC_DEFUN([AC_CORBA_ORB_OMNIORB3],[ AC_REQUIRE([AC_CORBA_SOCKET_NSL]) AC_REQUIRE([ACX_PTHREAD]) AC_REQUIRE([AC_CORBA_OMNI_PLATFORM]) AC_CACHE_CHECK([for omniORB3], ac_cv_corba_omniorb3, [ AC_LANG_SAVE AC_LANG_CPLUSPLUS AC_CXX_CLEAN_TEMPLATE_REPOSITORY # Save CPPFLAGS, LDFLAGS & LIBS ac_corba_save_cppflags="$CPPFLAGS" ac_corba_save_ldflags="$LDFLAGS" ac_corba_save_libs="$LIBS" LDFLAGS="$ac_corba_save_ldflags $PTHREAD_CFLAGS $PTHREAD_LIBS" CPPFLAGS="$ac_corba_save_cppflags $PTHREAD_CFLAGS" # Try to find the omniORB3 header file.Start with $OMNIORBBASE, # and then $prefix, else just try the default include path. ac_cv_corba_omniorb3=no AC_CORBA_SEARCHDIRS(include) for ac_corba_i in `find $ac_corba_searchdirs -type d -name omniORB3 2>/dev/null` do if test -f $ac_corba_i/CORBA.h then ac_corba_omnidir=`AS_DIRNAME(["$ac_corba_i"])` CPPFLAGS="$CPPFLAGS -I$ac_corba_omnidir" AC_TRY_CPP([#include ], [ac_cv_corba_omniorb3="$ac_corba_omnidir"], [CPPFLAGS="$ac_corba_save_cppflags $PTHREAD_CFLAGS"]) fi test "$ac_cv_corba_omniorb3" != no && break done if test "$ac_cv_corba_omniorb3" = no && test -z "$OMNIORBBASE"; then AC_TRY_CPP([#include ],[ac_cv_corba_omniorb3=yes]) fi # Try to find the omniORB3 libraries. if test "$ac_cv_corba_omniorb3" != no; then LIBS="$LIBS -lomniORB3 -lomniGK_stub -lomniDynamic3 -lomniGK_alone" LIBS="$LIBS -lomnithread" ac_corba_links=no AC_CORBA_SEARCHDIRS(lib) for ac_corba_i in `find $ac_corba_searchdirs -type f -name 'libomniORB3*' 2>/dev/null` do # Could check for all required libraries here. ac_corba_omnidir=`AS_DIRNAME(["$ac_corba_i"])` LDFLAGS="$LDFLAGS -L$ac_corba_omnidir" # Try to link. AC_TRY_LINK([#include ],[CORBA::ORB_var orb], [ac_corba_links=yes], [LDFLAGS="$ac_corba_save_ldflags $PTHREAD_CFLAGS $PTHREAD_LIBS"]) test "$ac_corba_links" = yes && break done if test "$ac_corba_links" = no; then AC_TRY_LINK([#include ],[CORBA::ORB_var orb], [ac_corba_links=yes]) fi test "$ac_corba_links" = no && ac_cv_corba_omniorb3=no fi if test "$ac_cv_corba_omniorb3" = no then # Restore CPPFLAGS LDFLAGS & LIBS CPPFLAGS="$ac_corba_save_cppflags" LDFLAGS="$ac_corba_save_ldflags" LIBS="$ac_corba_save_libs" fi AC_LANG_RESTORE ]) if test "$ac_cv_corba_omniorb3" != no then CORBA_ORB="omniORB3" AC_SUBST(CORBA_ORB) AC_DEFINE(HAVE_OMNIORB3,1,"define if omniORB3 is available.") # Since we've found `omniORB', we'll need `omniidl'. AC_PROG_OMNIIDL fi ]) omniEvents-2_6_2/aclocal.d/AC_CORBA_ORB_OMNIORB4.m40000644000076400001440000001014410240451203021343 0ustar alexusers00000000000000dnl dnl AC_CORBA_ORB_OMNIORB4 dnl dnl Description dnl dnl Tests for a linkable installation of omniORB4 dnl [http://omniorb.sourceforge.net]. If found, it defines dnl pre-processor macro `HAVE_OMNIORB4' and sets variables CPPFLAGS, dnl LIBS & LDFLAGS. Sets pthread & socket options if necessary. dnl dnl Copyright (C) 2003, Alex Tingle dnl dnl License: dnl GNU General Public License dnl [http://www.gnu.org/software/ac-archive/htmldoc/COPYING.html] dnl with this special exception dnl [http://www.gnu.org/software/ac-archive/htmldoc/COPYING-Exception.html]. dnl AC_DEFUN([AC_CORBA_ORB_OMNIORB4],[ AC_REQUIRE([AC_CORBA_SOCKET_NSL]) AC_REQUIRE([ACX_PTHREAD]) AC_REQUIRE([AC_CORBA_OMNI_PLATFORM]) AC_CACHE_CHECK([for omniORB4], ac_cv_corba_omniorb4, [ AC_LANG_SAVE AC_LANG_CPLUSPLUS AC_CXX_CLEAN_TEMPLATE_REPOSITORY # Save CPPFLAGS, LDFLAGS & LIBS ac_corba_save_cppflags="$CPPFLAGS" ac_corba_save_ldflags="$LDFLAGS" ac_corba_save_libs="$LIBS" LDFLAGS="$ac_corba_save_ldflags $PTHREAD_CFLAGS $PTHREAD_LIBS" CPPFLAGS="$ac_corba_save_cppflags $PTHREAD_CFLAGS" # Try to find the omniORB4 header file.Start with $OMNIORBBASE, # and then $prefix, else just try the default include path. ac_cv_corba_omniorb4=no AC_CORBA_SEARCHDIRS(include) for ac_corba_i in `find $ac_corba_searchdirs -type d -name omniORB4 2>/dev/null` do if test -f $ac_corba_i/CORBA.h then ac_corba_omnidir=`AS_DIRNAME(["$ac_corba_i"])` CPPFLAGS="$CPPFLAGS -I$ac_corba_omnidir" AC_TRY_CPP(AC_CORBA_ORB_OMNIORB4_INCLUDE, [ac_cv_corba_omniorb4="$ac_corba_omnidir"], [CPPFLAGS="$ac_corba_save_cppflags $PTHREAD_CFLAGS"]) fi test "$ac_cv_corba_omniorb4" != no && break done if test "$ac_cv_corba_omniorb4" = no && test -z "$OMNIORBBASE"; then AC_TRY_CPP(AC_CORBA_ORB_OMNIORB4_INCLUDE,[ac_cv_corba_omniorb4=yes]) fi # Try to find the omniORB4 libraries. if test "$ac_cv_corba_omniorb4" != no; then LIBS="$LIBS -lomniORB4 -lomniDynamic4" LIBS="$LIBS -lomnithread" ac_corba_links=no AC_CORBA_SEARCHDIRS(lib) for ac_corba_i in `find $ac_corba_searchdirs -type f -name 'libomniORB4*' 2>/dev/null` do # Could check for all required libraries here. ac_corba_omnidir=`AS_DIRNAME(["$ac_corba_i"])` LDFLAGS="$LDFLAGS -L$ac_corba_omnidir" # Try to link. AC_TRY_LINK(AC_CORBA_ORB_OMNIORB4_INCLUDE,[CORBA::ORB_var orb], [ac_corba_links=yes], [LDFLAGS="$ac_corba_save_ldflags $PTHREAD_CFLAGS $PTHREAD_LIBS"]) test "$ac_corba_links" = yes && break done if test "$ac_corba_links" = no; then AC_TRY_LINK(AC_CORBA_ORB_OMNIORB4_INCLUDE,[CORBA::ORB_var orb], [ac_corba_links=yes]) fi test "$ac_corba_links" = no && ac_cv_corba_omniorb4=no fi if test "$ac_cv_corba_omniorb4" = no then # Restore CPPFLAGS LDFLAGS & LIBS CPPFLAGS="$ac_corba_save_cppflags" LDFLAGS="$ac_corba_save_ldflags" LIBS="$ac_corba_save_libs" fi AC_LANG_RESTORE ]) if test "$ac_cv_corba_omniorb4" != no then CORBA_ORB="omniORB4" AC_SUBST([CORBA_ORB]) AC_DEFINE([HAVE_OMNIORB4],1,"define if omniORB4 is available.") # The use can enable unloadable stubs for libraries that need to be # unloadable. See the omniORB documentation. (omniORB4+ only.) AC_ARG_ENABLE([unloadable-stubs], [ AC_HELP_STRING( [--enable-unloadable-stubs], [library may be safely unloaded. [default=no]] ) ],[ IDL_CPPFLAGS="-DOMNI_UNLOADABLE_STUBS=1" AC_SUBST([IDL_CPPFLAGS]) ]) # Since we've found `omniORB', we'll need `omniidl'. AC_PROG_OMNIIDL fi ]) AC_DEFUN([AC_CORBA_ORB_OMNIORB4_INCLUDE],[ /* The PACKAGE_* macros cause incompatabilities with omniORB4. */ #undef PACKAGE_BUGREPORT #undef PACKAGE_NAME #undef PACKAGE_STRING #undef PACKAGE_TARNAME #undef PACKAGE_VERSION #include ]) omniEvents-2_6_2/aclocal.d/AC_CORBA_SEARCHDIRS.m40000644000076400001440000000267510227236242021122 0ustar alexusers00000000000000dnl dnl AC_CORBA_SEARCHDIRS( DIRTYPE ) dnl dnl Description dnl dnl Utility macro. Constructs a space-separated list of directories to search dnl for CORBA components. Sets the variable `ac_corba_searchdirs'. dnl Example: `AC_CORBA_SEARCHDIRS([bin])' sets dnl ac_corba_searchdirs="$prefix/bin /usr/local/bin /opt/bin /usr/bin" dnl or dnl ac_corba_searchdirs="$OMNIORBBASE/bin" dnl If OMNIORBBASE is set (e.g. by --with-omniorb) then no other directories dnl are searched. dnl dnl Copyright (C) 2003, Alex Tingle dnl dnl License: dnl GNU General Public License dnl [http://www.gnu.org/software/ac-archive/htmldoc/COPYING.html] dnl with this special exception dnl [http://www.gnu.org/software/ac-archive/htmldoc/COPYING-Exception.html]. dnl AC_DEFUN([AC_CORBA_SEARCHDIRS],[ ac_corba_searchdirs="" if test "x$OMNIORBBASE" != x; then if test -d "$OMNIORBBASE/$1"; then ac_corba_searchdirs="$ac_corba_searchdirs $OMNIORBBASE/$1" fi else if test "x$prefix" != x && test "$prefix" != "NONE" && test -d "$prefix/$1" then ac_corba_searchdirs="$ac_corba_searchdirs $prefix/$1" fi if test -d "/usr/local/$1" then ac_corba_searchdirs="$ac_corba_searchdirs /usr/local/$1" fi if test -d "/opt/$1" then ac_corba_searchdirs="$ac_corba_searchdirs /opt/$1" fi if test -d "/usr/$1" then ac_corba_searchdirs="$ac_corba_searchdirs /usr/$1" fi fi ]) omniEvents-2_6_2/aclocal.d/AC_CXX_BOOL.m40000644000076400001440000000210410227236242020025 0ustar alexusers00000000000000dnl dnl AC_CXX_BOOL dnl dnl Description dnl dnl If the compiler recognizes bool as a separate built-in type, define HAVE_BOOL. dnl Note that a typedef is not a separate type since you cannot overload a function dnl such that it accepts either the basic type or the typedef. dnl dnl Version: 1.2 (last modified: 2000-07-19) dnl Author: Luc Maisonobe dnl dnl from http://www.gnu.org/software/ac-archive/htmldoc/index.html dnl dnl License: dnl GNU General Public License dnl [http://www.gnu.org/software/ac-archive/htmldoc/COPYING.html] dnl with this special exception dnl [http://www.gnu.org/software/ac-archive/htmldoc/COPYING-Exception.html]. dnl AC_DEFUN([AC_CXX_BOOL], [AC_CACHE_CHECK(whether the compiler recognizes bool as a built-in type, ac_cv_cxx_bool, [AC_LANG_SAVE AC_LANG_CPLUSPLUS AC_TRY_COMPILE([ int f(int x){return 1;} int f(char x){return 1;} int f(bool x){return 1;} ],[bool b = true; return f(b);], ac_cv_cxx_bool=yes, ac_cv_cxx_bool=no) AC_LANG_RESTORE ]) if test "$ac_cv_cxx_bool" = yes; then AC_DEFINE(HAVE_BOOL,,[define if bool is a built-in type]) fi ]) omniEvents-2_6_2/aclocal.d/AC_CXX_CLEAN_TEMPLATE_REPOSITORY.m40000644000076400001440000000133010227236242023206 0ustar alexusers00000000000000dnl dnl AC_CXX_CLEAN_TEMPLATE_REPOSITORY dnl dnl Description dnl dnl Sometime failed C++ compiles can leave trash in the template repository. dnl Just clean them all away. dnl dnl Copyright (C) 2003, Alex Tingle dnl dnl License: dnl GNU General Public License dnl [http://www.gnu.org/software/ac-archive/htmldoc/COPYING.html] dnl with this special exception dnl [http://www.gnu.org/software/ac-archive/htmldoc/COPYING-Exception.html]. dnl AC_DEFUN([AC_CXX_CLEAN_TEMPLATE_REPOSITORY],[ # Sometime failed C++ compiles can leave trash in the template repository. # Just clean them all away. rm -rf ./SunWS_cache # Solaris/CC rm -rf ./.cxx_repository # Tru64/cxx # ...add more here. ]) omniEvents-2_6_2/aclocal.d/AC_CXX_COMPILE_OBJ.m40000644000076400001440000000223410227236242021060 0ustar alexusers00000000000000dnl dnl AC_CXX_COMPILE_OBJ( NAME, CODE, [ACTION-IF-OK [, ACTION-IF-NOT-OK] ] ) dnl dnl Description dnl dnl Compiles CODE into an object file NAME. dnl Any existing copy of NAME is deleted before we start. dnl ACTION-IF-OK is only run if NAME is created AND it hase size >0. dnl If NAME is successfully created, then it is up to the caller to delete it. dnl dnl Copyright (C) 2003, Alex Tingle dnl dnl License: dnl GNU General Public License dnl [http://www.gnu.org/software/ac-archive/htmldoc/COPYING.html] dnl with this special exception dnl [http://www.gnu.org/software/ac-archive/htmldoc/COPYING-Exception.html]. dnl AC_DEFUN([AC_CXX_COMPILE_OBJ],[ cat > conftest.$ac_ext <&AC_FD_CC cat conftest.$ac_ext >&AC_FD_CC CXXFLAGS="$ac_save_cxxflags" rm -f conftest* "$1" ifelse([$4], , , [$4]) fi ]) omniEvents-2_6_2/aclocal.d/AC_CXX_HAVE_STL.m40000644000076400001440000000212110227236242020536 0ustar alexusers00000000000000dnl dnl AC_CXX_HAVE_STL dnl dnl Description dnl dnl If the compiler supports the Standard Template Library, define HAVE_STL. dnl dnl Version: 1.2 (last modified: 2000-07-19) dnl Author: Luc Maisonobe dnl dnl from http://www.gnu.org/software/ac-archive/htmldoc/index.html dnl dnl License: dnl GNU General Public License dnl [http://www.gnu.org/software/ac-archive/htmldoc/COPYING.html] dnl with this special exception dnl [http://www.gnu.org/software/ac-archive/htmldoc/COPYING-Exception.html]. dnl AC_DEFUN([AC_CXX_HAVE_STL], [AC_CACHE_CHECK(whether the compiler supports Standard Template Library, ac_cv_cxx_have_stl, [AC_REQUIRE([AC_CXX_NAMESPACES]) AC_LANG_SAVE AC_LANG_CPLUSPLUS AC_TRY_COMPILE([#include #include #ifdef HAVE_NAMESPACES using namespace std; #endif],[list x; x.push_back(5); list::iterator iter = x.begin(); if (iter != x.end()) ++iter; return 0;], ac_cv_cxx_have_stl=yes, ac_cv_cxx_have_stl=no) AC_LANG_RESTORE ]) if test "$ac_cv_cxx_have_stl" = yes; then AC_DEFINE(HAVE_STL,,[define if the compiler supports Standard Template Library]) fi ]) omniEvents-2_6_2/aclocal.d/AC_CXX_IDENTITY.m40000644000076400001440000000447410227236242020537 0ustar alexusers00000000000000dnl dnl AC_PROG_OMNIIDL dnl dnl Description dnl dnl AC_CXX_IDENTITY( [ ACTION-IF-OK [ ,ACTION-IF-FAILED ] ] ) dnl Sets ac_cv_cxx_identity to a string that identifies the C++ compiler. dnl Format: vendor-compiler-major-minor-micro dnl dnl Copyright (C) 2003, Alex Tingle dnl dnl License: dnl GNU General Public License dnl [http://www.gnu.org/software/ac-archive/htmldoc/COPYING.html] dnl with this special exception dnl [http://www.gnu.org/software/ac-archive/htmldoc/COPYING-Exception.html]. dnl AC_DEFUN([AC_CXX_IDENTITY],[ AC_REQUIRE([AC_PROG_CXX]) AC_CACHE_CHECK([C++ compiler identity],[ac_cv_cxx_identity],[ ac_cv_cxx_identity="unknown" cat > conftest.$ac_ext < int _result=1; void set(const char* vendor,const char* compiler,int major,int minor,int micro) { switch(_result) { case 0: _result=2; break; case 1: _result=0; break; default: _result=2; } printf("%s-%s-%i-%i-%i\n",vendor,compiler,major,minor,micro); } #define HEXN(X,N) ((X>>(4*N))&0xF) int main(int,char**) { #ifdef __GNUG__ set("GNU","g++",__GNUC__,__GNUC_MINOR__,0); #endif #ifdef __SUNPRO_CC set("Sun","CC",HEXN(__SUNPRO_CC,2),HEXN(__SUNPRO_CC,1),HEXN(__SUNPRO_CC,0)); #endif #ifdef __xlC__ set("IBM","xlC",10*HEXN(__xlC__,3)+HEXN(__xlC__,2),10*HEXN(__xlC__,1)+HEXN(__xlC__,0),0); #else # if defined(_AIX) && !defined(__GNUC__) set("IBM","xlC",0,0,0); # endif #endif #ifdef __DECCXX_VER set("DEC","cxx",__DECCXX_VER/10000000,__DECCXX_VER/100000%100,__DECCXX_VER%100); #endif #ifdef __HP_aCC set("HP","aCC",__HP_aCC/10000,__HP_aCC/100%100,__HP_aCC%100); #endif #ifdef __KCC_VERSION set("Kai","KCC",HEXN(__KCC_VERSION,3),HEXN(__KCC_VERSION,2),__KCC_VERSION&0xFF); #endif #ifdef _MSC_VER set("Microsoft","VC++",_MSC_VER>>8,_MSC_VER&0xFF,0); #endif return _result; } EOF if AC_TRY_EVAL(ac_link) \ && test -s conftest${ac_exeext} \ && AC_TRY_COMMAND([./conftest${ac_exeext} >/dev/null]) then ac_cv_cxx_identity=`./conftest${ac_exeext}` fi if test $ac_cv_cxx_identity = "unknown"; then echo "configure: failed program was:" >&AC_FD_CC cat conftest.$ac_ext >&AC_FD_CC ifelse([$2], , , [$2]) else ifelse([$1], , :, [$1]) fi rm -f conftest* ]) ]) omniEvents-2_6_2/aclocal.d/AC_CXX_NAMESPACES.m40000644000076400001440000000174610227236242020724 0ustar alexusers00000000000000dnl dnl AC_CXX_NAMESPACES dnl dnl Description dnl dnl If the compiler can prevent names clashes using namespaces, dnl define HAVE_NAMESPACES. dnl dnl Version: 1.2 (last modified: 2000-07-19) dnl Author: Luc Maisonobe dnl dnl from http://www.gnu.org/software/ac-archive/htmldoc/index.html dnl dnl License: dnl GNU General Public License dnl [http://www.gnu.org/software/ac-archive/htmldoc/COPYING.html] dnl with this special exception dnl [http://www.gnu.org/software/ac-archive/htmldoc/COPYING-Exception.html]. dnl AC_DEFUN([AC_CXX_NAMESPACES], [AC_CACHE_CHECK(whether the compiler implements namespaces, ac_cv_cxx_namespaces, [AC_LANG_SAVE AC_LANG_CPLUSPLUS AC_TRY_COMPILE([namespace Outer { namespace Inner { int i = 0; }}], [using namespace Outer::Inner; return i;], ac_cv_cxx_namespaces=yes, ac_cv_cxx_namespaces=no) AC_LANG_RESTORE ]) if test "$ac_cv_cxx_namespaces" = yes; then AC_DEFINE(HAVE_NAMESPACES,,[define if the compiler implements namespaces]) fi ]) omniEvents-2_6_2/aclocal.d/AC_CXX_PIC_FLAG.m40000644000076400001440000000261510227236242020505 0ustar alexusers00000000000000dnl dnl AC_CXX_PIC_FLAG dnl dnl Description dnl dnl Autodetects C++ `Position independant code' (PIC) flag. dnl Adds whatever CXXFLAGS are needed to ensure than C++ object code can dnl be linked into a dynamic shared library. dnl dnl Copyright (C) 2003, Alex Tingle dnl dnl License: dnl GNU General Public License dnl [http://www.gnu.org/software/ac-archive/htmldoc/COPYING.html] dnl with this special exception dnl [http://www.gnu.org/software/ac-archive/htmldoc/COPYING-Exception.html]. dnl AC_DEFUN([AC_CXX_PIC_FLAG],[ AC_REQUIRE([AC_CANONICAL_HOST]) AC_REQUIRE([AC_CXX_IDENTITY]) AC_CACHE_CHECK([for C++ position independent code flag], ac_cv_cxx_pic_flag, [ ac_cxx_pic_save_cxxflags="$CXXFLAGS" ac_cv_cxx_pic_flag="none needed" case "$ac_cv_cxx_identity" in GNU-g++-*-*-*) ac_cv_cxx_pic_flag="-fPIC" ;; HP-aCC-*-*-*) ac_cv_cxx_pic_flag="+Z" ;; Kai-KCC-*-*-*) ac_cv_cxx_pic_flag="+Z" ;; *-CC-*-*-*) ac_cv_cxx_pic_flag="-KPIC" ;; DEC-cxx-*-*-*) ac_cv_cxx_pic_flag="none needed" ;; IBM-xlC-*-*-*) ac_cv_cxx_pic_flag="none needed" ;; esac # Finish up by adding the PIC flag to CXXFLAGS if test "$ac_cv_cxx_pic_flag" = "none needed"; then CXXFLAGS="$ac_cxx_pic_save_cxxflags" else CXXFLAGS="$ac_cxx_pic_save_cxxflags $ac_cv_cxx_pic_flag" fi ]) ]) omniEvents-2_6_2/aclocal.d/AC_CXX_STD.m40000644000076400001440000001375210227236242017737 0ustar alexusers00000000000000dnl dnl AC_CXX_STD dnl dnl Description dnl dnl Tests for various things that we might expect to find in dnl C++ namespace std. dnl dnl Looks for or else . dnl Looks for or else . dnl Looks for . dnl Defines macro HAVE_FSTREAM_ATTACH if we have: dnl void ofstream::attach (int FILE) dnl Defines macro HAVE_FSTREAM_OPEN if we have: dnl void ofstream::open (const char* FNAME, int MODE) dnl Defines macro FSTREAM_OPEN_PROT if we have: dnl void ofstream::open (const char* FNAME, int MODE, int PROT) dnl Defines macro HAVE_STD_IOSTREAM if this works: dnl #include dnl std::cout<<"Hello World"< dnl std::list foo; dnl dnl Copyright (C) 2003, Alex Tingle dnl dnl License: dnl GNU General Public License dnl [http://www.gnu.org/software/ac-archive/htmldoc/COPYING.html] dnl with this special exception dnl [http://www.gnu.org/software/ac-archive/htmldoc/COPYING-Exception.html]. dnl AC_DEFUN([AC_CXX_STD],[ AC_CXX_HAVE_IOSTREAM AC_CXX_HAVE_IOMANIP AC_CHECK_HEADERS([cmath]) AC_CXX_HAVE_STD_IOSTREAM AC_CXX_HAVE_STD_STL AC_CXX_HAVE_FSTREAM_ATTACH AC_CXX_HAVE_FSTREAM_OPEN ]) dnl dnl AC_CXX_HAVE_IOSTREAM dnl Looks for or else . dnl AC_DEFUN([AC_CXX_HAVE_IOSTREAM],[ AC_CHECK_HEADER([iostream],[ AC_DEFINE([HAVE_IOSTREAM],[1],[Define to 1 if you have the header file.]) ],[ AC_CHECK_HEADERS([iostream.h]) ]) ]) dnl dnl AC_CXX_HAVE_FSTREAM_ATTACH dnl Defines macro HAVE_FSTREAM_ATTACH if we have: dnl void ofstream::attach (int FILE) dnl AC_DEFUN([AC_CXX_HAVE_FSTREAM_ATTACH],[ AC_REQUIRE([AC_CXX_HAVE_STD_IOSTREAM]) AC_CACHE_CHECK([for fstream::attach()],[ac_cv_cxx_have_fstream_attach],[ ac_cv_cxx_have_fstream_attach=no AC_LANG_SAVE AC_LANG_CPLUSPLUS AC_TRY_COMPILE([ #ifdef HAVE_IOSTREAM #include #else #include #endif #ifdef HAVE_STD_IOSTREAM using namespace std; #endif ],[int fd=0;ofstream s;s.attach(fd);], [ac_cv_cxx_have_fstream_attach=yes]) AC_LANG_RESTORE ]) if test "$ac_cv_cxx_have_fstream_attach" = yes; then AC_DEFINE([HAVE_FSTREAM_ATTACH],[1],[define if we have fstream::attach().]) fi ]) dnl dnl AC_CXX_HAVE_FSTREAM_OPEN dnl Defines macro HAVE_FSTREAM_OPEN if we have: dnl void ofstream::open (const char* FNAME, int MODE) dnl Defines macro FSTREAM_OPEN_PROT if we have: dnl void ofstream::open (const char* FNAME, int MODE, int PROT) dnl AC_DEFUN([AC_CXX_HAVE_FSTREAM_OPEN],[ AC_REQUIRE([AC_CXX_HAVE_STD_IOSTREAM]) AC_CACHE_CHECK([for fstream::open()],[ac_cv_cxx_have_fstream_open],[ ac_cv_cxx_have_fstream_open=no ac_cv_cxx_fstream_open_prot=no AC_LANG_SAVE AC_LANG_CPLUSPLUS # Try with 2 parameters AC_TRY_COMPILE([ #ifdef HAVE_IOSTREAM #include #else #include #endif #ifdef HAVE_STD_IOSTREAM using namespace std; #endif ],[ofstream s;s.open("conftest.txt",ios::out|ios::trunc);], [ac_cv_cxx_have_fstream_open=yes]) # Try with mode parameter AC_TRY_COMPILE([ #ifdef HAVE_IOSTREAM #include #else #include #endif #ifdef HAVE_STD_IOSTREAM using namespace std; #endif ],[ofstream s;s.open("conftest.txt",ios::out|ios::trunc,0666);], [ac_cv_cxx_fstream_open_prot=yes]) AC_LANG_RESTORE ]) if test "$ac_cv_cxx_have_fstream_open" = yes; then AC_DEFINE([HAVE_FSTREAM_OPEN],[1], [define if we have fstream::open().]) fi if test "$ac_cv_cxx_fstream_open_prot" = yes; then AC_DEFINE([FSTREAM_OPEN_PROT],[1], [define if fstream::open() accepts third parameter.]) fi ]) dnl dnl AC_CXX_HAVE_IOMANIP dnl Looks for or else . dnl AC_DEFUN([AC_CXX_HAVE_IOMANIP],[ AC_CHECK_HEADER([iomanip],[ AC_DEFINE([HAVE_IOMANIP],[1],[Define to 1 if you have the header file.]) ],[ AC_CHECK_HEADERS([iomanip.h]) ]) ]) dnl dnl AC_CXX_HAVE_STD_IOSTREAM dnl Defines macro HAVE_STD_IOSTREAM if this works: dnl #include dnl std::cout<<"Hello World"< #else #include #endif ],[std::cout<<"Hello World"< #else #include #endif ],[std::cout<<"Hello World"< dnl std::list foo; dnl AC_DEFUN([AC_CXX_HAVE_STD_STL],[ AC_REQUIRE([AC_CXX_NAMESPACES]) AC_REQUIRE([AC_CXX_HAVE_STL]) AC_CACHE_CHECK([for C++ Standard Template Library in namespace std.], ac_cv_cxx_have_std_stl,[ ac_cv_cxx_have_std_stl=no if test "x$ac_cv_cxx_namespaces" = xyes; then AC_LANG_SAVE AC_LANG_CPLUSPLUS AC_TRY_COMPILE([#include ],[std::list foo;return 0;], [ac_cv_cxx_have_std_stl=yes]) AC_LANG_RESTORE fi ]) if test "$ac_cv_cxx_have_std_stl" = yes; then AC_DEFINE([HAVE_STD_STL],[1],[define if C++ Standard Template Library is in namespace std]) fi ]) omniEvents-2_6_2/aclocal.d/AC_CXX_TEMPLATE_REPOSITORY.m40000644000076400001440000000354710227236242022320 0ustar alexusers00000000000000dnl dnl AC_CXX_TEMPLATE_REPOSITORY dnl dnl Description dnl dnl Test whether the C++ compiler accepts the -ptr template dnl repository option. If so, sets the output variable `CXXFLAGS_PTR'. dnl dnl Copyright (C) 2003, Alex Tingle dnl dnl License: dnl GNU General Public License dnl [http://www.gnu.org/software/ac-archive/htmldoc/COPYING.html] dnl with this special exception dnl [http://www.gnu.org/software/ac-archive/htmldoc/COPYING-Exception.html]. dnl AC_DEFUN([AC_CXX_TEMPLATE_REPOSITORY],[ AC_REQUIRE([AC_PROG_CXX])dnl AC_CACHE_CHECK([whether C++ compiler accepts the -ptr option], ac_cv_cxx_ptr,[ ac_cv_cxx_ptr=no if test "x$ac_cv_prog_gxx" != xyes; then AC_LANG_SAVE AC_LANG_CPLUSPLUS AC_CXX_CLEAN_TEMPLATE_REPOSITORY ac_cxx_ptr_save_cxxflags="$CXXFLAGS" ac_cxx_ptr_decl="template T m(T v){return v*2;}" ac_cxx_ptr_prog="int x=2; int y=m(x);" ac_cv_cxx_ptr="-ptr" # Try it with no space after -ptr CXXFLAGS="$ac_cxx_ptr_save_cxxflags $ac_cv_cxx_ptr./confrepository.d" AC_TRY_COMPILE([$ac_cxx_ptr_decl],[$ac_cxx_ptr_prog],[:],[ac_cv_cxx_ptr=no]) test -d confrepository.d || ac_cv_cxx_ptr=no if test "x$ac_cv_cxx_ptr" = xno; then ac_cv_cxx_ptr="-ptr " # Now try a space before the parameter. CXXFLAGS="$ac_cxx_ptr_save_cxxflags $ac_cv_cxx_ptr./confrepository.d" AC_TRY_COMPILE([$ac_cxx_ptr_decl],[$ac_cxx_ptr_prog],[:],[ac_cv_cxx_ptr=no]) test -d confrepository.d || ac_cv_cxx_ptr=no fi # Clear away any confrepository.d that we might have made. rm -rf ./confrepository.d CXXFLAGS="$ac_cxx_ptr_save_cxxflags" AC_LANG_RESTORE fi ]) if test "x$ac_cv_cxx_ptr" != xno then CXXFLAGS_PTR=$ac_cv_cxx_ptr AC_SUBST(CXXFLAGS_PTR) fi ]) omniEvents-2_6_2/aclocal.d/AC_FUNC_SIGSET.m40000644000076400001440000000133610227236242020367 0ustar alexusers00000000000000dnl dnl AC_FUNC_SIGSET dnl dnl Description dnl dnl Tests for sigset(), the non-BSD alternative to signal(). dnl dnl Copyright (C) 2004, Alex Tingle dnl dnl License: dnl GNU General Public License dnl [http://www.gnu.org/software/ac-archive/htmldoc/COPYING.html] dnl with this special exception dnl [http://www.gnu.org/software/ac-archive/htmldoc/COPYING-Exception.html]. dnl AC_DEFUN([AC_FUNC_SIGSET],[ AC_CACHE_CHECK([for sigset()],[ac_cv_sigset],[ AC_TRY_COMPILE([#include ],[sigset(SIGTERM,SIG_IGN);], [ac_cv_sigset=yes], [ac_cv_sigset=no]) ]) if test x"ac_cv_sigset" = xyes; then AC_DEFINE([HAVE_SIGSET],1,[Define to 1 if you have the `sigset' function.]) fi ]) omniEvents-2_6_2/aclocal.d/AC_PROG_CXX_AR.m40000644000076400001440000000475010227236242020434 0ustar alexusers00000000000000dnl dnl AC_PROG_CXX_AR dnl dnl Description dnl dnl C++ may require a special archiver to ensure that template code gets dnl included with the rest of the objects. Sets the output variable CXX_AR. dnl dnl Copyright (C) 2003, Alex Tingle dnl dnl License: dnl GNU General Public License dnl [http://www.gnu.org/software/ac-archive/htmldoc/COPYING.html] dnl with this special exception dnl [http://www.gnu.org/software/ac-archive/htmldoc/COPYING-Exception.html]. dnl AC_DEFUN([AC_PROG_CXX_AR],[ AC_REQUIRE([AC_CXX_IDENTITY]) AC_CACHE_CHECK([for C++ static archiver], ac_cv_prog_cxx_ar, [ ac_cv_prog_cxx_ar="no" ac_prog_cxx_ar_save_libs="$LIBS" AC_LANG_SAVE AC_CXX_CLEAN_TEMPLATE_REPOSITORY AC_LANG([C++]) # Make object files a.o & b.o AC_CXX_COMPILE_OBJ([a.$ac_objext],[int a(){return 123;}],[ AC_CXX_COMPILE_OBJ([b.$ac_objext],[int b(){return 456;}],[ # Files a.o & b.o now exist, try to build them into a static library. # Try the more esoteric ones first, and then finally test for 'ar'. LIBS="$ac_prog_cxx_ar_save_libs -L. -lconftest" # Use the compiler's ID to make an initial guess. case "$ac_cv_cxx_identity" in GNU-g++-*-*-*) ac_prog_cxx_ar="ar cqs" ;; HP-aCC-*-*-*) ac_prog_cxx_ar="ar cqs" ;; Kai-KCC-*-*-*) ac_prog_cxx_ar="ar cqs" ;; Sun-CC-*-*-*) ac_prog_cxx_ar="${CXX-g++} -xar -o" ;; SGI-CC-*-*-*) ac_prog_cxx_ar="${CXX-g++} -ar -o" ;; DEC-cxx-*-*-*) ac_prog_cxx_ar="ar cqs" ;; IBM-xlC-*-*-*) ac_prog_cxx_ar="ar cqs" ;; esac if AC_TRY_COMMAND([$ac_prog_cxx_ar libconftest.a a.$ac_objext b.$ac_objext >/dev/null 2>/dev/null]); then AC_TRY_LINK([int b();],[return(b()==456?0:1)], [ac_cv_prog_cxx_ar="$ac_prog_cxx_ar"]) fi rm -f libconftest.a # Hmmm...: ar cq (may be inefficient without a subsequent 'ranlib') if test "$ac_cv_prog_cxx_ar" = no; then if AC_TRY_COMMAND([ar cq libconftest.a a.$ac_objext b.$ac_objext >/dev/null 2>/dev/null]); then AC_TRY_LINK([int b();],[return(b()==456?0:1)], [ac_cv_prog_cxx_ar="ar cq"],[:]) fi rm -f libconftest.a fi ]) ]) rm -f a.$ac_objext b.$ac_objext AC_LANG_RESTORE LIBS="$ac_prog_cxx_ar_save_libs" ]) if test "$ac_cv_prog_cxx_ar" != no then CXX_AR="$ac_cv_prog_cxx_ar" AC_SUBST(CXX_AR) fi ]) omniEvents-2_6_2/aclocal.d/AC_PROG_CXX_LINK_SO_LIB.m40000644000076400001440000001532110227236242021752 0ustar alexusers00000000000000dnl dnl AC_PROG_CXX_LINK_SO_LIB dnl dnl Description dnl dnl Works out how to build a C++ shared object library. dnl dnl If successful, the following output variables are set: dnl CXX_LINK_SO_LIB - Command to build a C++ shared object library. dnl Expects that the environment variable `$soname' is set to the name of dnl the library. The value of CXX_LINK_SO_LIB can only be used from dnl within a makefile (because is double-quotes the `$'). dnl LD_LIBRARY_PATH_NAME - set to the name of the environment variable that dnl sets the run-time search path for shared libraries. dnl SOEXT - set to the system's filename extension for shared libraries. dnl E.g. `.so', `.a', `.sl'. dnl dnl Additionally, any options required to link a dynamic executable are dnl added to `LDFLAGS'. dnl dnl Copyright (C) 2003, Alex Tingle dnl dnl License: dnl GNU General Public License dnl [http://www.gnu.org/software/ac-archive/htmldoc/COPYING.html] dnl with this special exception dnl [http://www.gnu.org/software/ac-archive/htmldoc/COPYING-Exception.html]. dnl AC_DEFUN([AC_PROG_CXX_LINK_SO_LIB],[ AC_REQUIRE([AC_CANONICAL_HOST]) AC_REQUIRE([AC_CXX_IDENTITY]) AC_REQUIRE([AC_CXX_PIC_FLAG]) AC_CACHE_CHECK([for C++ shared library linker], ac_cv_prog_cxx_link_so_lib, [ ac_cv_prog_cxx_link_so_lib="no" case "$host" in *-*-aix*) ac_prog_cxx_soext=".a";; *-*-darwin*) ac_prog_cxx_soext=".dylib";; *-*-hpux*) ac_prog_cxx_soext=".sl";; *-*-*) ac_prog_cxx_soext=".so";; esac soname="libconftest$ac_prog_cxx_soext" AC_LANG_SAVE AC_CXX_CLEAN_TEMPLATE_REPOSITORY AC_LANG([C++]) case "$ac_cv_cxx_identity" in GNU-g++-*-*-*) # GNU/g++ options vary with the platform: case "$host" in *-*-darwin*) ac_sobuild="${CXX-g++} -dynamiclib -install_name $soname -o " ;; *-*-solaris*) ac_sobuild="${CXX-g++} -shared -Wl,-h,$soname -o " ;; *-*-*) ac_sobuild="${CXX-g++} -shared -Wl,-soname,$soname -o " ;; esac ;; HP-aCC-*-*-*) ac_sobuild="${CXX-g++} -b -Wl,+h$soname -o " ;; Kai-KCC-*-*-*) ac_sobuild="${CXX-g++} --soname $soname -o " ;; *-CC-*-*-*) ac_sobuild="${CXX-g++} -G -h $soname -o " ;; SGI-CC-*-*-*) ac_sobuild="${CXX-g++} -shared -soname $soname -o " ;; DEC-cxx-*-*-*) ac_sobuild="${CXX-g++} -shared -soname $soname -o " ;; IBM-xlC-*-*-*) ac_sobuild="${CXX-g++} -G -o " ;; esac case "$ac_cv_cxx_identity" in GNU-g++-*-*-*) # GNU/g++ options vary with the platform: case "$host" in *-*-darwin*) ac_soflags="-dynamic" ;; # -dynamic is the default *-*-*) ac_soflags="-Wl,-Bdynamic" ;; esac ;; HP-aCC-*-*-*) ac_soflags="-Wl,-a,shared_archive" ;; Kai-KCC-*-*-*) ;; # ?? *-CC-*-*-*) ac_soflags="-Bdynamic" ;; DEC-cxx-*-*-*) ac_soflags="-call_shared" ;; IBM-xlC-*-*-*) ac_soflags="-bdynamic -brtl" ;; esac # Make object files a.o, b.o & c.o AC_CXX_COMPILE_OBJ([a.$ac_objext],[int a(){return 123;}],[:],[:]) AC_CXX_COMPILE_OBJ([b.$ac_objext],[int b(){return 456;}],[:],[:]) AC_CXX_COMPILE_OBJ([c.$ac_objext],[int b(){return 789;}],[:],[:]) # Try various ways of building shared object libraries ac_sothere="" AC_CXX_TRY_LINK_SO([$ac_sobuild],$soname,[ac_sothere=yes]) if test "$ac_sothere" = yes; then ac_save_libs="$LIBS" LIBS="$ac_save_libs -L. -lconftest" # Try various ways of running dynamic executables. ac_soworks="" if test -z "$ac_soworks"; then # Linux, solaris, SGI, HP-UX(64bit), Tru64, AIX ac_sopath="LD_LIBRARY_PATH" AC_CXX_TRY_RUN_DYNAMIC([$ac_soflags],[$ac_sopath],[ac_soworks=yes]) fi if test -z "$ac_soworks"; then # solaris(64bit) ac_sopath="LD_LIBRARY_PATH_64" AC_CXX_TRY_RUN_DYNAMIC([$ac_soflags],[$ac_sopath],[ac_soworks=yes]) fi if test -z "$ac_soworks"; then # HP-UX(32bit) ac_sopath="SHLIB_PATH" AC_CXX_TRY_RUN_DYNAMIC([$ac_soflags],[$ac_sopath],[ac_soworks=yes]) fi if test -z "$ac_soworks"; then # Darwin/MacOSX ac_sopath="DYLD_LIBRARY_PATH" AC_CXX_TRY_RUN_DYNAMIC([$ac_soflags],[$ac_sopath],[ac_soworks=yes]) fi if test -z "$ac_soworks"; then # SGI(32bit) ac_sopath="LD_LIBRARYN32_PATH" AC_CXX_TRY_RUN_DYNAMIC([$ac_soflags],[$ac_sopath],[ac_soworks=yes]) fi if test -z "$ac_soworks"; then # SGI(64bit) ac_sopath="LD_LIBRARYN64_PATH" AC_CXX_TRY_RUN_DYNAMIC([$ac_soflags],[$ac_sopath],[ac_soworks=yes]) fi LIBS="$ac_save_libs" fi if test "x$ac_soworks" = xyes; then ac_cv_prog_cxx_link_so_lib="`echo $ac_sobuild|sed s/$soname/\\$\\$soname/`" LDFLAGS="$LDFLAGS $ac_soflags" fi rm -f a.$ac_objext b.$ac_objext c.$ac_objext libconftest* AC_LANG_RESTORE ]) if test "$ac_cv_prog_cxx_link_so_lib" != no then CXX_LINK_SO_LIB="$ac_cv_prog_cxx_link_so_lib" AC_SUBST(CXX_LINK_SO_LIB) LD_LIBRARY_PATH_NAME=$ac_sopath AC_SUBST(LD_LIBRARY_PATH_NAME) AC_SUBST(SOEXT,$ac_prog_cxx_soext) fi ]) dnl dnl AC_CXX_TRY_LINK_SO( SOLINK-COMMAND, SONAME-BASE, dnl [ACTION-IF-OK [, ACTION-IF-NOT-OK]]) dnl AC_DEFUN([AC_CXX_TRY_LINK_SO],[ # We assume that a.o b.o & c.o already exist. rm -f $2 $3 if AC_TRY_COMMAND([$1 $2.1 a.$ac_objext b.$ac_objext >/dev/null 2>/dev/null]) \ && test -s $2.1 then AC_TRY_COMMAND([$1 $2.2 a.$ac_objext c.$ac_objext >/dev/null 2>/dev/null]) ifelse([$3], , :, [$3]) else ifelse([$4], , :, [$4]) fi ]) dnl dnl AC_CXX_TRY_RUN_DYNAMIC( EXE-LINK-FLAGS, LD_LIB_PATH-VARIABLE dnl [ACTION-IF-OK [, ACTION-IF-NOT-OK]]) dnl AC_DEFUN([AC_CXX_TRY_RUN_DYNAMIC],[ ac_save_ldflags="$LDFLAGS" LDFLAGS="$ac_save_ldflags $1" ac_dollar_var="[\$]$2" ac_save_ldpath=`eval echo $ac_dollar_var` eval $2=".:$ac_save_ldpath" eval export $2 ac_cxx_so_works=no rm -f $soname ln -s $soname.1 $soname AC_TRY_RUN([int b();int main(int,char**){return(b()==456?0:1);}],[ rm -f $soname ln -s $soname.2 $soname if (./conftest$ac_exeext; exit); then : else # Success - ./conftest returned 1 this time, so changing the # library changed the behaviour of the exe! ac_cxx_so_works=yes fi ],[:]) LDFLAGS="$ac_save_ldflags" eval $2="$ac_save_ldpath" eval export $2 if test "$ac_cxx_so_works" = yes; then ifelse([$3], , :, [$3]) else ifelse([$4], , :, [$4]) fi ]) omniEvents-2_6_2/aclocal.d/AC_PROG_OMNIIDL.m40000644000076400001440000000704010240451203020465 0ustar alexusers00000000000000dnl dnl AC_PROG_OMNIIDL dnl dnl Description dnl dnl Locates the omniidl program (part of omniORB dnl [http://omniorb.sourceforge.net]). Sets the output variable `IDL'. dnl dnl Copyright (C) 2003, Alex Tingle dnl dnl License: dnl GNU General Public License dnl [http://www.gnu.org/software/ac-archive/htmldoc/COPYING.html] dnl with this special exception dnl [http://www.gnu.org/software/ac-archive/htmldoc/COPYING-Exception.html]. dnl AC_DEFUN([AC_PROG_OMNIIDL],[ AC_CACHE_CHECK([for omniidl],IDL,[ IDL=no # First, try and find omniidl inside the $OMNIORBBASE/bin directory if test "x$OMNIORBBASE" != x; then IDL="not found in $OMNIORBBASE" for ac_idlfile in `find $OMNIORBBASE/bin -name omniidl` do if test -x "$ac_idlfile"; then IDL="$ac_idlfile" break; fi done fi if test "x$IDL" = xno; then if test "x$prefix" != x && test "$prefix" != "NONE" && test -d "$prefix/bin" then ac_omniidl_path="$prefix/bin:$PATH" else ac_omniidl_path="$PATH" fi AC_PATH_PROG_QUIET(IDL,omniidl,no,[$ac_omniidl_path]) fi if test "x$IDL" != xno; then # Check with which version of omniORB `omniidl' is compatible. echo "interface ConfTest { void m(); };" > conftest.idl if AC_TRY_COMMAND([$IDL -bcxx -Wbh=.hh conftest.idl]); then ac_corba_omniidl_orb=unknown grep 'omniORB3/CORBA.h' conftest.hh >/dev/null 2>/dev/null && ac_corba_omniidl_orb=omniORB3 grep 'omniORB4/CORBA.h' conftest.hh >/dev/null 2>/dev/null && ac_corba_omniidl_orb=omniORB4 else IDL=no fi rm -f conftest* fi ]) # Stop if omniidl is not compatible with omniORB. if test "x$IDL" != xno && test "x$IDL" != "xnot found in $OMNIORBBASE" && \ test "x$ac_corba_omniidl_orb" != "x$CORBA_ORB" then AC_MSG_ERROR([omniidl output is for $ac_corba_omniidl_orb. You can't use it with $CORBA_ORB. This can happen when you have more than one version of omniORB installed. You probably need to set PYTHONPATH to ensure that omniidl is using the correct python module (_omniidlmodule.so).]) fi ]) dnl dnl This is a verbatim copy of AC_PATH_PROG from acgeneral.m4, only with the dnl AC_MSG_CHECKING & AC_MSG_RESULT removed. dnl dnl AC_PATH_PROG_QUIET(VARIABLE, PROG-TO-CHECK-FOR [, VALUE-IF-NOT-FOUND [, PATH]]) AC_DEFUN([AC_PATH_PROG_QUIET], [# Extract the first word of "$2", so it can be a program name with args. set dummy $2; ac_word=[$]2 dnl AC_MSG_CHECKING([for $ac_word]) AC_CACHE_VAL(ac_cv_path_$1, [case "[$]$1" in /*) ac_cv_path_$1="[$]$1" # Let the user override the test with a path. ;; ?:/*) ac_cv_path_$1="[$]$1" # Let the user override the test with a dos path. ;; *) IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" dnl $ac_dummy forces splitting on constant user-supplied paths. dnl POSIX.2 word splitting is done only on the output of word expansions, dnl not every word. This closes a longstanding sh security hole. ac_dummy="ifelse([$4], , $PATH, [$4])" for ac_dir in $ac_dummy; do test -z "$ac_dir" && ac_dir=. if test -f $ac_dir/$ac_word; then ac_cv_path_$1="$ac_dir/$ac_word" break fi done IFS="$ac_save_ifs" dnl If no 3rd arg is given, leave the cache variable unset, dnl so AC_PATH_PROGS will keep looking. ifelse([$3], , , [ test -z "[$]ac_cv_path_$1" && ac_cv_path_$1="$3" ])dnl ;; esac])dnl $1="$ac_cv_path_$1" dnl if test -n "[$]$1"; then dnl AC_MSG_RESULT([$]$1) dnl else dnl AC_MSG_RESULT(no) dnl fi AC_SUBST($1)dnl ]) omniEvents-2_6_2/aclocal.d/ETR_SOCKET_NSL.m40000644000076400001440000000565710227236242020443 0ustar alexusers00000000000000dnl dnl Description dnl dnl This macro figures out what libraries are required on this platform to dnl link sockets programs. It's usually -lsocket and/or -lnsl or neither. We dnl test for all three combinations. dnl dnl Version: 1.1 (last modified: 2001-06-07) dnl Author: Warren Young dnl dnl from http://www.gnu.org/software/ac-archive/htmldoc/index.html dnl dnl License: dnl GNU General Public License dnl [http://www.gnu.org/software/ac-archive/htmldoc/COPYING.html] dnl with this special exception dnl [http://www.gnu.org/software/ac-archive/htmldoc/COPYING-Exception.html]. dnl AC_DEFUN([ETR_SOCKET_NSL], [ AC_CACHE_CHECK(for libraries containing socket functions, ac_cv_socket_libs, [ oLIBS=$LIBS AC_TRY_LINK([ #include #include #include #include ], [ struct in_addr add; int sd = socket(AF_INET, SOCK_STREAM, 0); inet_ntoa(add); ], ac_cv_socket_libs=-lc, ac_cv_socket_libs=no) if test x"$ac_cv_socket_libs" = "xno" then LIBS="$oLIBS -lsocket" AC_TRY_LINK([ #include #include #include #include ], [ struct in_addr add; int sd = socket(AF_INET, SOCK_STREAM, 0); inet_ntoa(add); ], ac_cv_socket_libs=-lsocket, ac_cv_socket_libs=no) fi if test x"$ac_cv_socket_libs" = "xno" then LIBS="$oLIBS -lsocket -lnsl" AC_TRY_LINK([ #include #include #include #include ], [ struct in_addr add; int sd = socket(AF_INET, SOCK_STREAM, 0); inet_ntoa(add); ], ac_cv_socket_libs="-lsocket -lnsl", ac_cv_socket_libs=no) fi LIBS=$oLIBS ]) if test x"$ac_cv_socket_libs" = "xno" then AC_MSG_ERROR([Cannot find socket libraries]) elif test x"$ac_cv_socket_libs" = "x-lc" then ETR_SOCKET_LIBS="" else ETR_SOCKET_LIBS="$ac_cv_socket_libs" fi AC_SUBST(ETR_SOCKET_LIBS) ]) dnl ETR_SOCKET_NSL omniEvents-2_6_2/aclocal.d/AC_CXX_RTTI_FLAG.m40000644000076400001440000000267210233775330020662 0ustar alexusers00000000000000dnl dnl AC_CXX_PIC_FLAG dnl dnl Description dnl dnl Autodetects C++ `Rel Time Type Information' (RTTI) flag. dnl Adds whatever CXXFLAGS are needed to ensure than C++ object code can dnl use dynamic_cast<> and typeid. dnl dnl Copyright (C) 2005, Alex Tingle dnl dnl License: dnl GNU General Public License dnl [http://www.gnu.org/software/ac-archive/htmldoc/COPYING.html] dnl with this special exception dnl [http://www.gnu.org/software/ac-archive/htmldoc/COPYING-Exception.html]. dnl AC_DEFUN([AC_CXX_RTTI_FLAG],[ AC_REQUIRE([AC_CANONICAL_HOST]) AC_REQUIRE([AC_CXX_IDENTITY]) AC_CACHE_CHECK([for C++ RTTI flag], ac_cv_cxx_rtti_flag, [ ac_cxx_rtti_save_cxxflags="$CXXFLAGS" ac_cv_cxx_rtti_flag="none needed" case "$ac_cv_cxx_identity" in GNU-g++-*-*-*) ac_cv_cxx_rtti_flag="on by default" ;; # -fno-rtti HP-aCC-*-*-*) ac_cv_cxx_rtti_flag="none needed" ;; *-CC-*-*-*) ac_cv_cxx_rtti_flag="on by default" ;; DEC-cxx-*-*-*) ac_cv_cxx_rtti_flag="on by default" ;; # -[no]rtti IBM-xlC-*-*-*) ac_cv_cxx_rtti_flag="-qrtti=all" ;; esac # Finish up by adding the PIC flag to CXXFLAGS if test "$ac_cv_cxx_rtti_flag" = "none needed" \ -o "$ac_cv_cxx_rtti_flag" = "on by default" then CXXFLAGS="$ac_cxx_rtti_save_cxxflags" else CXXFLAGS="$ac_cxx_rtti_save_cxxflags $ac_cv_cxx_rtti_flag" fi ]) ]) omniEvents-2_6_2/CHANGES_2010000644000076400001440000001064210227236242015506 0ustar alexusers00000000000000Release Notes for 2.0.1 (15th January 2000) ======================= This release is a minor release which fixes a number of bugs in omniEvents 2.0.0. This release adds support for multiple SupplierAdmin and ConsumerAdmin objects per event channel. To re-use your existing persistence log files you will need to modify them as described in sections 1 & 3 below. Also, as from this release omniEvents is supplied in a single library in both static and dynamic versions. The last release of omniEvents was 2.0.0 (20th Nov 1999). The previous major release was 1.0.3 (11th May 1999). The source code distribution for omniEvents 2.0.1 is available at : http://www.uk.research.att.com/omniORB/contribapp.html#omniEvents Changes since 2.0.0 ------------------- 1. Support for multiple Admin objects per event channel. omniEvents now creates by default new supplierAdmin and consumerAdmin objects each time the for_suppliers() and for_consumers() methods are called on an EventChannel_i interface. This change has been introduced to more closely align omniEvents with the Notification Service to allow for the eventual implementation of QOS parameters and filters at the Admin object level. If you wish to re-use your existing persistence log files you will need to make some minor changes to them as described below. The files you should modify are located in the $OMNIEVENTS_LOGDIR and are named: omnievents-.log and omnievents-.bak 1.1 Delete all instances of COMMON and channelFactory but the last in each file. 1.2 Move each end every instance of pxyPullSupplier and pxyPushSupplier into the corresponding consumerAdmin instance immediatly above it. 1.3 Move each end every instance of pxyPullConsumer and pxyPushConsumer into the corresponding supplierAdmin instance immediatly above it. Notes: - You don't need to re-indent the lines you move. - Make sure you delete/move the entire instance (i.e including the start and closing braces - and everything else in between). 2. Restructured the containment of Proxies. The proxies for suppliers and consumers are no longer contained directly under the event channel. Instead they are located under the corresponding SupplierAdmin or ConsumerAdmin object initialy used to create them. 3. Removed factory dependency on naming service. The EventChannelFactory_i class no longer persists its name or hence bind itself with the naming service when restarted from persistency. The default factory created by the omniEvents executable is still bound to the naming service by the omniEvents executable (as was done prevously) but it is no longer re-bound during re-starts. If you wish to re-use your existing persistence log files you will need to make some minor changes to them as described below. The files you should modify are located in the $OMNIEVENTS_LOGDIR and are named: omnievents-.log and omnievents-.bak 3.1 Delete all instances of COMMON and channelFactory but the last in each file. 3.2 Move the port entry in the instance of COMMON into the channelFactory instance. 3.3 Delete the entire instance of COMMON. Notes: - You don't need to re-indent the line. 4. Examples no longer compiled with omniEvents libraries. The examples provided are no longer compiled using the omniEvents libraries but with the generated stubs instead. This is to re-enforce the fact that they are not dependent on omniEvents. 5. Bugs fixed. - Push Suppliers can now be connected to a ProxyPushConsumer using a nil reference. The ProxyPushConsumer_i::connect_push_supplier() method has been changed to allow a nil parameter to be passed and no longer throws a CORBA::BAD_PARAM exception. - Pull Consumers can now be connected to a ProxyPullSupplier using a nil reference. The ProxyPullSupplier_i::connect_pull_consumer() method has been changed to allow a nil parameter to be passed and no longer throws a CORBA::BAD_PARAM exception. - Fixed memory leak when persisting connected proxies. Failed to delete stringified IOR. - Fixed broken persistency during restart. omniEvents failed to re-open logfile. - Removed requirement for extern usage() function from omniEventsLog. - Removed inclusion of CosLifeCycle.idl in CosEventChannelAdmin.idl. - Modified pull model thread signaling to use counting semaphores to avoid missing pull requests. omniEvents-2_6_2/CHANGES_2100000644000076400001440000000675210227236242015515 0ustar alexusers00000000000000Release Notes for 2.1.0 (15th August 2000) ======================= This is a major release which fixes a number of bugs in omniEvents 2.0.1 as well as providing build compatibility with omniORB 3.0.1. omniEvents 2.1.0 makes use of omniORB3 specific features which prevents building with all previous versions of omniORB2. The last release of omniEvents was 2.0.1 (15th Jan 2000). The previous major release was 2.0.0 (20th Nov 1999). The source code distribution for omniEvents 2.1.0 is available at : http://www.uk.research.att.com/omniORB/contribapp.html#omniEvents Changes since 2.0.1 ------------------- 1. Port to omniORB 3.0.1. omniEvents 2.0.1 will NOT build against omniORB 3.0.0 due to a bug in the initial release where the omniidl compiler fails to generate complete interface skeletons. omniEvents 2.0.1 should be built against the latest omniORB 3.0.1 CVS snapshot available at: ftp://ftp.uk.research.att.com/pub/omniORB/omniORB_3_snapshots/omniORB3-latest.tar.gz omniEvents 2.0.1 will NOT build against any of the omniORB 2.x.x releases. due to changes in the generated skeleton inheritance tree. 2. New MaxQueueLength QOS Parameter The EventChannelFactory now accepts the MaxQueueLength QOS parameter to set the maximum number of events queued by the channel. This parameter is used to decide if an event provided by a supplier should be queued by the channel: o Events are discarded in FIFO order (ie first received is discarded) o Events are discarded silently, ie No exceptions are raised. o The default is 0 meaning no limit applies. The maximum number of events queued on behalf of each consumer is still controlled using the MaxEventsPerConsumer QOS parameter. 3. New configuration file The directory config now has a config.mk file used to specify site-specific information. This currently includes parameters to specify the following: o STL behaviour with respect to default parameters. o Location of STL headers o Location and name of the STL library. o Default location of persistency log files. o Default persistency checkpoint period. 4. Bugs fixed. - A bug in the logfile persistency prevented checkpoints from occuring and as a result the log file was not being culled. - Incorrect OEP_ecps constructor member initialisation caused build problems on some platforms. - Setting MaxEventsPerConsumer to 1 (eg by running eventc -m 1) caused a segmentation fault in the omniEvents server. - Fixed build problems for DEC platform. - Fixed build problems for SGI platform. - Fixed build problems for Red Hat / gcc platform. - Better handling of STL. omniEvents now assumes by default that the STL container classes do not accept default ordering and allocator arguments. This behaviour can be overriden using the STL_HAS_DEFAULT_ARGS parameter in the config/config.mk file. 5. Known Issues - The DLL produced for x86_nt_4.0 is incomplete. When linking against it you need to also include the EventChannelAdminSK.o and CosLifeCycleSK.o stub objects. For more details see the dir.mk file in src/sharedlib. - In agent mode (ie with only PushConsumers and PullSuppliers connected to an event channel) the response of the event channel degrades considerably if a PullSupplier is unreachable (eg COMMS_FAILURE). The reason for this is that the polling is done sequentially in one thread. There is a plan to change it so that each ProxyPullConsumer polls in its own thread. omniEvents-2_6_2/CHANGES_2110000644000076400001440000000240610227236242015506 0ustar alexusers00000000000000Release Notes for 2.1.1 (13th October 2000) ======================= This is a minor release to fixes a bug in omniEvents 2.1.1 omniEvents 2.1.0 makes use of omniORB3 specific features which prevents building with all previous versions of omniORB2. The last release of omniEvents was 2.1.0 (15th Aug 2000). The source code distribution for omniEvents 2.1.1 is available at : http://www.uk.research.att.com/omniORB/contribapp.html#omniEvents Changes since 2.1.1 ------------------- 1. Bugs fixed. - Corrected build problem caused by incorrect symbol in oep_types.h - Corrected build problem caused by incorrect symbol in EventChannelFactory_i.h 2. Known Issues - The DLL produced for x86_nt_4.0 is incomplete. When linking against it you need to also include the EventChannelAdminSK.o and CosLifeCycleSK.o stub objects. For more details see the dir.mk file in src/sharedlib. - In agent mode (ie with only PushConsumers and PullSuppliers connected to an event channel) the response of the event channel degrades considerably if a PullSupplier is unreachable (eg COMMS_FAILURE). The reason for this is that the polling is done sequentially in one thread. There is a plan to change it so that each ProxyPullConsumer polls in its own thread. omniEvents-2_6_2/CHANGES_2120000644000076400001440000000204310227236242015504 0ustar alexusers00000000000000Release Notes for 2.1.2 (19th February 2003) ======================= This is a minor release to enable omniEvents to build with both omniORB3 and omniORB4 using the old build system. The last release of omniEvents was 2.1.1 (13th October 2000). The source code distribution for omniEvents 2.1.2 is available at : http://sourceforge.net/projects/omnievents/ Changes since 2.1.1 ------------------- 1. Added support for omniORB4 2. Known Issues - The DLL produced for x86_nt_4.0 is incomplete. When linking against it you need to also include the EventChannelAdminSK.o and CosLifeCycleSK.o stub objects. For more details see the dir.mk file in src/sharedlib. - In agent mode (ie with only PushConsumers and PullSuppliers connected to an event channel) the response of the event channel degrades considerably if a PullSupplier is unreachable (eg COMMS_FAILURE). The reason for this is that the polling is done sequentially in one thread. There is a plan to change it so that each ProxyPullConsumer polls in its own thread. omniEvents-2_6_2/CHANGES_2400000644000076400001440000000547010227236242015514 0ustar alexusers00000000000000RELEASE 2.4 (AUTOCONF) ====================== This is a port of omniEvents 2.1.2 to an autoconf build environment. It preserve the exact functionality of 2.1.2, in order to keep changes in the build system separate from functional changes. There have been some minor changes to the text of error messages, in order to enhace usability. Features: o `make install' installs omniEvents into the proper local directory (/usr/local by default). o Auto detects omniORB3 and omniORB4. o Auto detects C++ compiler shared library compile/build options. o Auto detects C++ STL and iostream features. o Tested on a variety of platforms: Windows 2000 / Visual C++ 6.0 AIX 5.1 / xlC_r 5.0 HPUX 11.00 / aCC A.03.37 Linux x86, Debian 3.1 / g++ 2.95.4 Solaris 2.8 / CC 5.3 Tru64 4.0F / cxx 6.2 o New Python versions of example programs (in examples/python directory). o Windows binaries now available. Changes: Virtually all `#include's have been wrapped in autoconf-generated preprocessor macro guards. These have almost completely replaced platform specific switches. Only the file src/omniEventsLog.cc still contains a significant number of platform specific switches. This file has been extensively re-factored, but it still needs work ;-( Manual configuration of a few esoteric values has been moved from config/config.mk to include/config.h. New output() member functions. Eliminates the need for friend ostream functions that are problematic on earlier versions of Microsoft VisualC++ Updated License to GNU Lesser GPL v2.1. Included LICENSE file in distribution. Removed files: config/config.mk README.hpux11 - now builds out of the box on HP-UX11 README.win32 - no longer relevant dir.mk - not used by new build system GNUmakefile - not used by new build system idl/Naming.idl - now use COS/CosNaming.idl Added files: configure - main auto configuration script. config.mk.in - template for config.mk file. include/config.h.in - template for include/config.h file. Makefile - in each build directory. LICENSE win32/* - windows build files. examples/python/* - python port of examples programs. Autoconf files (used by configure - just leave them alone): auto/* Autoconf: The following file are used by autoconf to generate the configure script. configure.ac aclocal.d/* To regenerate the `configure' script, run the following commands: % aclocal -I aclocal.d # Reads the contents of `aclocal.d'. % autoheader # Generates `include/config.h'. % autoconf # Generates `configure'. -Alex Tingle [3-Dec-2003] alex.omnievents(AT)firetree.net omniEvents-2_6_2/CHANGES_2600000644000076400001440000002403710227236242015516 0ustar alexusers00000000000000CHANGES FROM 2.4.0 TO 2.6.0 2.6.0 o Improved error reporting when connections are shut down due to misbehaving clients. 2.5.4: o Windows Service is now fully and natively supported. o Documentation completely revamped. The README file has been converted to Docbook and reorganised. Man pages added. HTML format added. o Eliminated (mostly) the confusing distinction between cold & warm start. The server now just 'does the right thing' in most circumstances. Renamed the '-s' (cold Start) option to '-p' (port), because of its more limited scope. o Unlimited complexity when specifying Event Channel Factory name & kind. New path-like syntax for '-n' & '-N' options. Eliminated '-k' & '-K' options that used to set the 'kind'. o Renamed the '-d' (debug) option to '-f' (foreground). o Fixed a bug that caused occasional core-dumps when connections were very quickly followed by disconnection. 2.5.3: o Federated event channels are now supported. Connect a `source' event channel to a `sink' channel using the 'eventf' command. Events are pushes from the source to the sink. The relationship is stored persistently and re-established when one or both of the the channels is restarted. Federation improves performance over a wide area network (or the internet). o Real-time mode improves push-push delivery times for low-volume traffic. Activated by compile-time macro OMNIEVENTS_REAL_TIME_PUSH. On by default. o New IDL module `omniEvents'. Contains derived interfaces for EventChannel and EventChannelFactory. New interfaces omniEvents::EventChannel & omniEvents::EventChannelFactory now inherit from interface FT::PullMonitorable. Clients can call the is_alive() operation to confirm that the omniEvents server is still running. New interface omniEvents::EventChannelFactory inherits from OpenOrb's EventChannelFactory interface. So clients built to work with OpenOrb's event service can now call create_channel() and join_channel() on omniEvents. o You can change the traceLevel while the application is running. Send the server SIGUSR1 to bump its traceLevel up by 5. The traceLevel is wrapped at 45, so you can always get it back to where it started by repeatedly sending SIGUSR1. E.g. % kill -USR1 `cat /var/run/omniEvents.pid` omniEvents daemon ----------------- o The omniEvents server now runs as a daemon on Unix platforms. Output is sent to syslog. The application can now maintain its own PIDFILE (-p option). It also shuts down cleanly when it receives SIGTERM or SIGINT. The 'etc' directory contains a SysV-style init script and a config file. To install the service: 'omniorb-eventservice' on a Unix platform, type: % su root # cd omniEvents/etc # make install You have to manually set up the symbolic links in rcX.d so that init will automatically start & stop the daemon as you change runlevels. o New option: -p PIDFILE A running server saves its PID in PIDFILE, and deletes the file when it quits. The server will refuse to start if PIDFILE already exists and contains the PID of a running process. PIDFILE should usually be set to `/var/run/omniEvents.pid'. o New option: -d Debug mode. Forces the server to remain in the foreground. Disables logging to syslog. o New option: -t TRACEFILE Redirects output to TRACEFILE from stderr or syslog. New EventChannel parameters --------------------------- o FilterId (eventc -t REPOSITORY_ID) Create a new channel with an event type filter. Only types whose RepositoryId matches the parameter are permitted to pass through the channel. Other events are silently ignored. 2.5.2: omniEvents daemon ----------------- o New option: -a ENDPOINT Sets an alternate endPoint for the server. All CORBA object references generated by the server include the alternate address. When clients cannot contact the server, they automatically fall back to trying the alternate address. This option is exactly equivalent to the ORB parameter `endPointNoListen', except that the value is saved in the server's persistency log file, so that it is remembered whenever omniEvents is warm started. `-a' is a cold start option. It can only be used when the log directory is empty and the `-s' startup option is used. o New option: -v Verbose mode. Prints the following information to standard output when the server starts: port - set with the `-s' option at cold start. alternate endpoint - set with the `-a' option at cold start. IOR - the IOR of the EventChannelFactory object. New EventChannel parameters --------------------------- o InsName (eventc -i NAME) This parameter sets the name by which the EventChannel is known in omniEvents INSPOA. You can refer to the channel with a corbaloc string like this: corbaloc::host:port/NAME Replace `host' with omniEvents' hostname and `port' with the TCP port you chose with the -s option. o CyclePeriod_ns (eventc -c NANOSECONDS) Sets the cycle period of the channel. This is the time that the channel waits before transferring messages from the incoming queue to the outgoing queue. While messages are being transferred, incoming calls are queued. The default is 0.1 seconds. Applications that require very rapid message delivery should reduce the period. The tradeoff represented by this parameter can be represented like this: PERIOD: short <-----------------------------------------> l o n g rapid delivery low CPU usage less chance of queue overflow more responsive 2.5.1: The C++ examples have better exception handling, and have been ported to use the POA rather than the BOA. There are new Java examples in examples/java. Not all of the examples have been translated into Java yet, but these should be enough to get you going. New Autoconf macro: aclocal.d/AC_CORBA_OMNIEVENTS.m4. This is not used by omniEvents itself, but is intended for other packages that want to use omniEvents. Experimental shared library version on omniEvents. THIS IS A WORK IN PROGRESS. The `class Orb' needs to be refactored in order to allow foreign CORBA code to share its Orb with omniEvents. There is a new `lite' version of the daemon, that uses the dynamic library. It's not built by default, but you can buid it by running: `cd src && make oelite'. New file format for the persistency log. The format expresses the same hierarchy as the old, but in such a way that changes can simply be appended to the end of the file, rather than havig to re-dump the whole hierarchy. This should help performance and disk usage in environments with lots of Proxies. We no longer use the lex/yacc parser see src/PersistNode.{h,cc} instead. New option: -V causes omniEvents to report its version. 2.5.0: This is an EXPERIMENTAL POA implementation of the OMG Event Services Specification v1.1 for omniORB. It builds upon the foundation of omniEvents v2.4. omniEvent's reliance on the old BOA architecture has been a serious impediment to developing further features. This release implements all of the basic Event Service features of omniEvents 2.4. Features This new version contains a number of significant enhancements over the previous one. I've individually designed each Proxy type for optimal performance, and minimal use of system resources. In particular, this implementation uses very few threads per channel, which helps to cut down on complexity and on locking overheads. It's been quite interesting. Although they seem superficially similar, I've found that the challenges are actually quite distinct. * ProxyPushConsumer. Implemented as a (mostly) stateless `DefaultServant'. The ProxyPushConsumer doesn't really care from whom messages are arriving, so I've used a single DefaultServant in a stateless POA to avoid expensive lookups in the active object map. Relies upon POA::Current to identify the source of disconnect messages. Sadly, POA::Current is only implemented in omniORB4. Without POA::Current, only stateless connections are supported (no disconnect callbacks). * ProxyPullConsumer. All outgoing calls are performed through the Dynamic Invokation Interface's (DII) send_deferred() method. This enables a single thread to manage communication with all connected suppliers, rather than having to use a thread per connection. * ProxyPushSupplier. Again, all outgoing calls are performed through the DII's send_deferred() method. A dedicated thread is used to maximize the output rate of events. Outgoing events are queued in a circular buffer that naturally discards the oldest messages if a Consumer can't keep up with the incoming event rate. * ProxyPullSupplier. The trickiest of the four, and the one where I've made the biggest compromise. try_pull() mode is straightforward, but pull() calls should really block until an event becomes available. I can't see a way of doing this without spawning and then blocking a thread for each incoming call. That's too expensive in threads for me, so I've made pull() calls time out immediately if there is no event waiting. They throw TRANSIENT instead, which at least blocks the calling thread as it should (with omniORB4 at least). In other news, all of these Proxy implementations are careful to send the proper disconnect message to their peers when they are disconnected. They also automatically disconnect when they receive an exception, which clears away server resources when misbehaved clients just disappear without letting us know they're going. This behaviour should probably be made a little more lenient when the exception is a TRANSIENT. Doxygen code documentation is included in the download. I find it enormously helpful for finding my way round, so I thought I'd include it. A test suite is also included. It's written in Python and requires omniORBPy. The tests are all for standards compliance, there are no performance tests yet. omniEvents-2_6_2/foo0000644000076400001440000000445410242712304014636 0ustar alexusers00000000000000omniEvents: [135297032] Servant::Servant() count=1 omniEvents: [135352276] Servant::Servant() count=2 omniEvents: [135353288] Servant::Servant() count=3 omniEvents: [135353288] Activating object 1.12727.428a6952/ConsumerAdmin omniEvents: [135357560] Servant::Servant() count=4 omniEvents: [135357616] Servant::Servant() count=5 omniEvents: [135357560] Activating object 1.12727.428a6952/SupplierAdmin omniEvents: [135358744] Servant::Servant() count=6 omniEvents: [135358744] Activating object 1.12727.428a6952/ProxyPushSupplierManager omniEvents: [135361544] Servant::Servant() count=7 omniEvents: [135361544] ProxyPushSupplierManager::incarnate() omniEvents: [135361544] Activating object 1.12727.428a6952.ProxyPushSupplier/3.12727.428a6959 omniEvents: [135363512] Servant::Servant() count=8 omniEvents: [135363512] Activating object 1.12727.428a6952/ProxyPullSupplierManager omniEvents: [135363392] Servant::Servant() count=9 omniEvents: [135363392] Activating object 1.12727.428a6952.ProxyPullSupplier/b.12727.428a6963 omniEvents: [135352276] Activating object 1.12727.428a6952/EventChannel omniEvents: [135365292] Servant::Servant() count=10 omniEvents: [135365944] Servant::Servant() count=11 omniEvents: [135365944] Activating object 2.12727.428a6954/ConsumerAdmin omniEvents: [135370216] Servant::Servant() count=12 omniEvents: [135370272] Servant::Servant() count=13 omniEvents: [135370216] Activating object 2.12727.428a6954/SupplierAdmin omniEvents: [135365292] Activating object 2.12727.428a6954/EventChannel omniEvents: [135297032] Activating object omniINSPOA/omniEvents omniEvents: [Wed May 18 20:16:47 2005] Checkpointing Phase 1: Prepare. omniEvents: [135363392] Servant::~Servant() count=12 omniEvents: [135361544] ProxyPushSupplierManager::etherealize() omniEvents: [135352276] Servant::~Servant() count=11 omniEvents: [135357616] Servant::~Servant() count=10 omniEvents: [135357560] Servant::~Servant() count=9 omniEvents: [135358744] Servant::~Servant() count=8 omniEvents: [135363512] Servant::~Servant() count=7 omniEvents: [135353288] Servant::~Servant() count=6 omniEvents: [135365292] Servant::~Servant() count=5 omniEvents: [135370272] Servant::~Servant() count=4 omniEvents: [135370216] Servant::~Servant() count=3 omniEvents: [135365944] Servant::~Servant() count=2 omniEvents: [135297032] Servant::~Servant() count=1 omniEvents-2_6_2/LICENSE0000644000076400001440000005750510227236242015147 0ustar alexusers00000000000000 GNU LESSER GENERAL PUBLIC LICENSE Version 2.1, February 1999 Copyright (C) 1991, 1999 Free Software Foundation, Inc. 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. [This is the first released version of the Lesser GPL. It also counts as the successor of the GNU Library Public License, version 2, hence the version number 2.1.] Preamble The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public Licenses are intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This license, the Lesser General Public License, applies to some specially designated software packages--typically libraries--of the Free Software Foundation and other authors who decide to use it. You can use it too, but we suggest you first think carefully about whether this license or the ordinary General Public License is the better strategy to use in any particular case, based on the explanations below. When we speak of free software, we are referring to freedom of use, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish); that you receive source code or can get it if you want it; that you can change the software and use pieces of it in new free programs; and that you are informed that you can do these things. To protect your rights, we need to make restrictions that forbid distributors to deny you these rights or to ask you to surrender these rights. These restrictions translate to certain responsibilities for you if you distribute copies of the library or if you modify it. For example, if you distribute copies of the library, whether gratis or for a fee, you must give the recipients all the rights that we gave you. You must make sure that they, too, receive or can get the source code. If you link other code with the library, you must provide complete object files to the recipients, so that they can relink them with the library after making changes to the library and recompiling it. And you must show them these terms so they know their rights. We protect your rights with a two-step method: (1) we copyright the library, and (2) we offer you this license, which gives you legal permission to copy, distribute and/or modify the library. To protect each distributor, we want to make it very clear that there is no warranty for the free library. Also, if the library is modified by someone else and passed on, the recipients should know that what they have is not the original version, so that the original author's reputation will not be affected by problems that might be introduced by others. Finally, software patents pose a constant threat to the existence of any free program. We wish to make sure that a company cannot effectively restrict the users of a free program by obtaining a restrictive license from a patent holder. Therefore, we insist that any patent license obtained for a version of the library must be consistent with the full freedom of use specified in this license. Most GNU software, including some libraries, is covered by the ordinary GNU General Public License. This license, the GNU Lesser General Public License, applies to certain designated libraries, and is quite different from the ordinary General Public License. We use this license for certain libraries in order to permit linking those libraries into non-free programs. When a program is linked with a library, whether statically or using a shared library, the combination of the two is legally speaking a combined work, a derivative of the original library. The ordinary General Public License therefore permits such linking only if the entire combination fits its criteria of freedom. The Lesser General Public License permits more lax criteria for linking other code with the library. We call this license the "Lesser" General Public License because it does Less to protect the user's freedom than the ordinary General Public License. It also provides other free software developers Less of an advantage over competing non-free programs. These disadvantages are the reason we use the ordinary General Public License for many libraries. However, the Lesser license provides advantages in certain special circumstances. For example, on rare occasions, there may be a special need to encourage the widest possible use of a certain library, so that it becomes a de-facto standard. To achieve this, non-free programs must be allowed to use the library. A more frequent case is that a free library does the same job as widely used non-free libraries. In this case, there is little to gain by limiting the free library to free software only, so we use the Lesser General Public License. In other cases, permission to use a particular library in non-free programs enables a greater number of people to use a large body of free software. For example, permission to use the GNU C Library in non-free programs enables many more people to use the whole GNU operating system, as well as its variant, the GNU/Linux operating system. Although the Lesser General Public License is Less protective of the users' freedom, it does ensure that the user of a program that is linked with the Library has the freedom and the wherewithal to run that program using a modified version of the Library. The precise terms and conditions for copying, distribution and modification follow. Pay close attention to the difference between a "work based on the library" and a "work that uses the library". The former contains code derived from the library, whereas the latter must be combined with the library in order to run. GNU LESSER GENERAL PUBLIC LICENSE TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 0. This License Agreement applies to any software library or other program which contains a notice placed by the copyright holder or other authorized party saying it may be distributed under the terms of this Lesser General Public License (also called "this License"). Each licensee is addressed as "you". A "library" means a collection of software functions and/or data prepared so as to be conveniently linked with application programs (which use some of those functions and data) to form executables. The "Library", below, refers to any such software library or work which has been distributed under these terms. A "work based on the Library" means either the Library or any derivative work under copyright law: that is to say, a work containing the Library or a portion of it, either verbatim or with modifications and/or translated straightforwardly into another language. (Hereinafter, translation is included without limitation in the term "modification".) "Source code" for a work means the preferred form of the work for making modifications to it. For a library, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the library. Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running a program using the Library is not restricted, and output from such a program is covered only if its contents constitute a work based on the Library (independent of the use of the Library in a tool for writing it). Whether that is true depends on what the Library does and what the program that uses the Library does. 1. You may copy and distribute verbatim copies of the Library's complete source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and distribute a copy of this License along with the Library. You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee. 2. You may modify your copy or copies of the Library or any portion of it, thus forming a work based on the Library, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions: a) The modified work must itself be a software library. b) You must cause the files modified to carry prominent notices stating that you changed the files and the date of any change. c) You must cause the whole of the work to be licensed at no charge to all third parties under the terms of this License. d) If a facility in the modified Library refers to a function or a table of data to be supplied by an application program that uses the facility, other than as an argument passed when the facility is invoked, then you must make a good faith effort to ensure that, in the event an application does not supply such function or table, the facility still operates, and performs whatever part of its purpose remains meaningful. (For example, a function in a library to compute square roots has a purpose that is entirely well-defined independent of the application. Therefore, Subsection 2d requires that any application-supplied function or table used by this function must be optional: if the application does not supply it, the square root function must still compute square roots.) These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Library, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Library, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Library. In addition, mere aggregation of another work not based on the Library with the Library (or with a work based on the Library) on a volume of a storage or distribution medium does not bring the other work under the scope of this License. 3. You may opt to apply the terms of the ordinary GNU General Public License instead of this License to a given copy of the Library. To do this, you must alter all the notices that refer to this License, so that they refer to the ordinary GNU General Public License, version 2, instead of to this License. (If a newer version than version 2 of the ordinary GNU General Public License has appeared, then you can specify that version instead if you wish.) Do not make any other change in these notices. Once this change is made in a given copy, it is irreversible for that copy, so the ordinary GNU General Public License applies to all subsequent copies and derivative works made from that copy. This option is useful when you wish to copy part of the code of the Library into a program that is not a library. 4. You may copy and distribute the Library (or a portion or derivative of it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange. If distribution of object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place satisfies the requirement to distribute the source code, even though third parties are not compelled to copy the source along with the object code. 5. A program that contains no derivative of any portion of the Library, but is designed to work with the Library by being compiled or linked with it, is called a "work that uses the Library". Such a work, in isolation, is not a derivative work of the Library, and therefore falls outside the scope of this License. However, linking a "work that uses the Library" with the Library creates an executable that is a derivative of the Library (because it contains portions of the Library), rather than a "work that uses the library". The executable is therefore covered by this License. Section 6 states terms for distribution of such executables. When a "work that uses the Library" uses material from a header file that is part of the Library, the object code for the work may be a derivative work of the Library even though the source code is not. Whether this is true is especially significant if the work can be linked without the Library, or if the work is itself a library. The threshold for this to be true is not precisely defined by law. If such an object file uses only numerical parameters, data structure layouts and accessors, and small macros and small inline functions (ten lines or less in length), then the use of the object file is unrestricted, regardless of whether it is legally a derivative work. (Executables containing this object code plus portions of the Library will still fall under Section 6.) Otherwise, if the work is a derivative of the Library, you may distribute the object code for the work under the terms of Section 6. Any executables containing that work also fall under Section 6, whether or not they are linked directly with the Library itself. 6. As an exception to the Sections above, you may also combine or link a "work that uses the Library" with the Library to produce a work containing portions of the Library, and distribute that work under terms of your choice, provided that the terms permit modification of the work for the customer's own use and reverse engineering for debugging such modifications. You must give prominent notice with each copy of the work that the Library is used in it and that the Library and its use are covered by this License. You must supply a copy of this License. If the work during execution displays copyright notices, you must include the copyright notice for the Library among them, as well as a reference directing the user to the copy of this License. Also, you must do one of these things: a) Accompany the work with the complete corresponding machine-readable source code for the Library including whatever changes were used in the work (which must be distributed under Sections 1 and 2 above); and, if the work is an executable linked with the Library, with the complete machine-readable "work that uses the Library", as object code and/or source code, so that the user can modify the Library and then relink to produce a modified executable containing the modified Library. (It is understood that the user who changes the contents of definitions files in the Library will not necessarily be able to recompile the application to use the modified definitions.) b) Use a suitable shared library mechanism for linking with the Library. A suitable mechanism is one that (1) uses at run time a copy of the library already present on the user's computer system, rather than copying library functions into the executable, and (2) will operate properly with a modified version of the library, if the user installs one, as long as the modified version is interface-compatible with the version that the work was made with. c) Accompany the work with a written offer, valid for at least three years, to give the same user the materials specified in Subsection 6a, above, for a charge no more than the cost of performing this distribution. d) If distribution of the work is made by offering access to copy from a designated place, offer equivalent access to copy the above specified materials from the same place. e) Verify that the user has already received a copy of these materials or that you have already sent this user a copy. For an executable, the required form of the "work that uses the Library" must include any data and utility programs needed for reproducing the executable from it. However, as a special exception, the materials to be distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable. It may happen that this requirement contradicts the license restrictions of other proprietary libraries that do not normally accompany the operating system. Such a contradiction means you cannot use both them and the Library together in an executable that you distribute. 7. You may place library facilities that are a work based on the Library side-by-side in a single library together with other library facilities not covered by this License, and distribute such a combined library, provided that the separate distribution of the work based on the Library and of the other library facilities is otherwise permitted, and provided that you do these two things: a) Accompany the combined library with a copy of the same work based on the Library, uncombined with any other library facilities. This must be distributed under the terms of the Sections above. b) Give prominent notice with the combined library of the fact that part of it is a work based on the Library, and explaining where to find the accompanying uncombined form of the same work. 8. You may not copy, modify, sublicense, link with, or distribute the Library except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense, link with, or distribute the Library is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. 9. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Library or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Library (or any work based on the Library), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Library or works based on it. 10. Each time you redistribute the Library (or any work based on the Library), the recipient automatically receives a license from the original licensor to copy, distribute, link with or modify the Library subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties with this License. 11. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Library at all. For example, if a patent license would not permit royalty-free redistribution of the Library by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Library. If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply, and the section as a whole is intended to apply in other circumstances. It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice. This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. 12. If the distribution and/or use of the Library is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Library under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License. 13. The Free Software Foundation may publish revised and/or new versions of the Lesser General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Library specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Library does not specify a license version number, you may choose any version ever published by the Free Software Foundation. 14. If you wish to incorporate parts of the Library into other free programs whose distribution conditions are incompatible with these, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. NO WARRANTY 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. END OF TERMS AND CONDITIONS omniEvents-2_6_2/Makefile0000644000076400001440000000260310240451202015555 0ustar alexusers00000000000000# Package : omniEvents # Makefile Created : 2003/10/31 # Author : Alex Tingle # # Copyright (C) 2003 Alex Tingle. # # This file is part of the omniEvents application. # # omniEvents is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either # version 2.1 of the License, or (at your option) any later version. # # omniEvents is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public # License along with this library; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # all: $(MAKE) -C idl $@ $(MAKE) -C src $@ $(MAKE) -C tools $@ $(MAKE) -C examples $@ install: $(MAKE) -C idl $@ $(MAKE) -C src $@ $(MAKE) -C tools $@ $(MAKE) -C contrib $@ uninstall: $(MAKE) -C idl $@ $(MAKE) -C src $@ $(MAKE) -C tools $@ $(MAKE) -C contrib $@ clean: $(MAKE) -C idl $@ $(MAKE) -C src $@ $(MAKE) -C tools $@ $(MAKE) -C examples $@ .PHONY: all install uninstall clean omniEvents-2_6_2/README0000644000076400001440000014166310263502265015022 0ustar alexusers00000000000000omniEvents ---------- Information on installing, building and using omniEvents, an implementation of the OMG Event Service Specification v1.1 for omniORB3 and omniORB4. This work is licensed under the Creative Commons Attribution License. To view a copy of this license, visit http://creativecommons.org/licenses/by/2.0/ or send a letter to Creative Commons, 559 Nathan Abbott Way, Stanford, California 94305, USA. We hope you find omniEvents useful. If you have any comments or suggestion for improvements you can email us at: alextingle@users.sourceforge.net naderp@users.sourceforge.net shamus13@users.sourceforge.net 1. Introduction =============== omniEvents enables CORBA applications to communicate through asynchronous broadcast channels rather than direct method calls. The server runs on Windows, and most Unixes. It is a small, efficient implementation of the Object Management Group's Event Service specification designed to work with omniORB. We provide a number of example programs in C++, Python and Java, to help you get started with writing your own event service clients. If you want to get going quickly, then read the "Quick Install" section for Unix or Windows, and then refer to the Reference section. 1.1 Features ------------ Implements untyped event channels.: "Suppliers" send events to the event channel as a CORBA "`any'" type. The channel then broadcasts the event to all of the "consumers" that have subscribed to the channel. Persistent state.: Channels and connections are continuously saved to disk, so that they can be recreated when the server restarts. Scalable.: Event channels can be federated, which allows multiple servers to share the load of delivering events to many clients across a wide area network. Fault tolerant.: Implements a sub-set of the Fault-Tolerant CORBA specification. Servers may be configured to operate in pairs - if one fails then clients automatically switch over to the alternate. Easy to install.: The server runs as a daemon on Unix or a service on Windows. A SysV style init file can be automatically installed on Unix, to get you up and running with minimum fuss. Events can be filtered by type.: Event channels can be configured to only pass on events of a particular CORBA type. Combined with channel federation, this allows Consumers to choose which type of events to receive. Available as a library.: You can create event channels within your own programs by linking to the shared library (on Unix). 1.2 Further Reading ------------------- Information on the Event Service specification can be obtained from the "CORBA services : Event Service Specification" page at: http://www.omg.org/technology/documents/formal/event_service.htm For an introduction to the various communication models see "OMG Event Object Service", SIGS Vol9, Num 2, February 1997 . You can download from http://www.iona.com/hyplan/vinoski/col9.pdf There is an excellent introduction to the Event Service in Chapter 20 of the book "Advanced CORBA Programming with C++", by Michi Henning & Steve Vinoski. 2. Build and Installation ========================= This section provides a complete guide to building and installing omniEvents. 2.1 Prerequisites ----------------- You need to install omniORB before you can start with omniEvents. The latest version of omniORB4 is strongly recommended. You can download it from here: http://omniorb.sourceforge.net/download.html The Unix install requires GNU Make. If you don't have it already, then you can download it from here: http://ftp.gnu.org/pub/gnu/make/ In order to install omniEvents as a Windows service, you need to be using a modern version of Windows. You need: NT, win2000 or XP. You cannot use: win95, 98 or ME (but you can just run the server manually). 2.2 Quick Install Guide - Unix ------------------------------ omniEvents is distributed as source for Unix platforms. To install you must unpack the omniEvents-XXX-src.tar.gz file, build the code and then install the executables and init scripts into the correct locations on your system. 1) Unpack the .tar.gz file: `gzip -dc omniEvents-XXX-src.tar.gz | tar xvf -'. 2) Go down into the omniEvents diectory: `cd omniEvents-XXX'. 3) Run the `configure' script. For a full list of available parameters, type `./configure --help'. Common parameters are: --prefix=PREFIX install files in PREFIX [/usr/local]. --with-omniorb=PATH set the path to the local omniORB installation [$OMNIORBBASE]. -q, --quiet, --silent do not print "checking..." messages. 4) Compile the executables: `make'. 5) Get superuser privileges: `su root'. 6) Install the executables: `make install'. 7) Install the system init script: `cd etc; make install'. 8) Set up SysV service `omniorb-eventservice'... The procedure for setting up a SysV service differs from platform to platform. You need to create symbolic links from the /etc/rcX.d directories to the /etc/init.d/omniorb-eventservice init script. (The paths to these files may be different on your system.) For example, on a Debian GNU/Linux system, the command `update-rc.d omniorb-eventservice defaults' would set up omniEvents to start at the default runlevels. Example: Typical Unix build session % gzip -dc omniEvents-XXX-src.tar.gz | tar xvf - % cd omniEvents-XXX % ./configure % make % su root # make install # cd etc # make install # 2.3 Quick Install Guide - Windows --------------------------------- omniEvents is distributed precompiled for Windows. To install you must unpack the omniEvents-XXX-win32.zip file, set up your system path and install the service. 1) Unpack the .zip file using (for example) WinZip. We assume that you unpack it into C:\Program Files. If you choose to put it somewhere else, then just adjust the remainder of these instructions accordingly. 2) Add the omniEvents directory to the system environment variable: Path. It's important to NOT use the "local" path. Only the "system" path is available at boot time when services start. Menu: Start -> Control Panel. Icon: System. Tab: Advanced. Click: Environment Variables. Add to System Path: `;C:\Program Files\omniEvents-XXX' 3) Create a data directory: C:\omniEvents. omniEvents will store its persistent state in this directory. 4) Install the service: Open a command window, and type: `omniEvents install -t "C:\omniEvents\trace.out"' 5) The service will start automatically when you next reboot, or you can start it manually now. 2.4 Building from Source on Windows ----------------------------------- It is not usually necessary to compile omniEvents for Windows, since it is available pre-compiled. 1) Firstly make sure you have everything you need: Microsoft Visual C++ compiler. (Tested with version 6.0, service pack 3) The environment variables for command-line compiling must be set up. You can test this by trying to compile hello.cc (in the win32 directory) with the command: > cl -TP -GX -MD hello.cc omniORB4. Get it from http://omniorb.sourceforge.net/download.html You should set up your PATH environment to include: \bin\x86_win32 Test this by checking that this command prints out the omniidl help: > omniidl -u A fairly recent version of GNU Make for Windows (3.78.1 or above). Download it from http://unxutils.sourceforge.net/ or Google for "gnu make windows". The make.exe also needs to be in the PATH. For example, you could copy it into your C:\winnt directory. The following command should show version text: > make --help 2) Next make sure that the build files are correctly configured. Don't run the `configure' command on Windows, hand edit the files instead. When you unpack the omniEvents-XXX-src.tar.gz file, the Windows config.mk and src/config.h files should already be in the correct places. If not, then you can copy them from the win32/ directory. Edit config.mk to set the values of these variables: `OMNIORB_BASE' full path to omniORB top-level directory. `OMNIORB_LIBS' libraries provided by omniORB. `OMNIEVENTS_BASE' full path to omniEvents top-level directory. 3) Compile omniEvents. Open a command window, and `cd' to the omniEvents top-level directory. The following command builds omniEvents: > make 2.5 Programs ------------ This section lists the programs that are bundled with the omniEvents distribution. Most importantly, the omniEvents daemon implements the EventChannelFactory and hosts the event channels. The daemon is built in the src/ directory. On Unix the daemon is installed into /usr/local/sbin, by default. Unix win32 Description ---- ----- ----------- omniEvents omniEvents.exe EventChannelFactory server. These tools enable management of event channels from the command line. They are built in the tools/ directory. On Unix, they are installed into /usr/local/bin, by default. Unix win32 Description ---- ----- ----------- eventc eventc.exe Command to create a channel. eventf eventf.exe Command to federate (link) two channels. events events.exe Command to stream events to or from a file. rmeventc rmeventc.exe Command to remove a channel. Finally, four example clients are provided. These enable you to test whether or not your omniEvents daemon is really working. They are built in the examples/ directory. Unix win32 Description ---- ----- ----------- pushsupp pushsupp.exe Push Supplier test client pushcons pushcons.exe Push Consumer test client pullsupp pullsupp.exe Pull Supplier test client pullcons pullcons.exe Pull Consumer test client 2.6 Supported Platforms ----------------------- omniEvents 2.6 has been tested with omniORB 3.0.5 & omniORB 4.0.4 on the following platforms. Platform omniORB3 omniORB4 -------- -------- -------- AIX 5.1 / xlC_r 5.0 no yes HPUX 11.00 / aCC A.03.37 - yes Linux x86, Debian 3.1 / g++ 2.95.4 yes yes Macintosh OS X, 10.3.5 - yes Solaris 9 x86 / gcc-2.95.3 - yes Solaris 8 sparc / CC 5.3 yes yes Tru64 5.1B / cxx 6.5 yes yes Windows 2000 / Visual C++ 6.0 SP3 - yes Earlier versions of omniEvents have been tested on the following platforms. Platform omniORB3 omniORB4 -------- -------- -------- Tru64 4.0F / cxx 6.2 yes yes HPUX 10.20 / aCC (B3910B A.01.21) yes - Windows NT 4.0 / Visual C++ 6.0 SP3 yes - Solaris 2.5 / gcc-2.8.1 yes - x86 Redhat linux 4.2 / gcc-2.7.2 yes - x86 Mandrake 7.2 / gcc-2.95.3 - yes 2.7 Directory Structure ----------------------- The directory structure of the omniEvents distribution looks as follows. auto/ various scripts used by AutoConf doc/ this documentation doc/doxygen/ source code documentation generated by Doxygen. examples/ source files for examples examples/java/ Java version of examples examples/python/ Python version of examples idl/ idl files src/ source files test/ test harness tools/ command line tools for manipulating the Event Service. win32/ build files for Windows 3. How to Set Configuration Options =================================== This section tells you how to set configuration options, not what options are available. For a detailed description of the available configuration options, see the omniEvents reference section. See also the eventc reference section, for a description of how to configure new event channels at run-time. omniEvents' default "out of the box" set-up is fit for most purposes. You only need to modify the configuration if you are interested in advanced features such as fault tolerant failover, or changing the default TCP port. In general, command-line parameters are stored somewhere, and retrieved each time the daemon is started. The method of storing parameters is different on Unix and Windows. In addition, there are a number of defaults that can be set at compile-time. 3.1 Unix SysV-style service. ---------------------------- The SysV `init' program starts the omniEvents daemon from the script /etc/init.d/omniorb-eventservice. You can also use this script to start and stop the service manually: syntax: `/etc/init.d/omniorb-eventservice [start|stop|restart]' The script reads omniEvents' configuration options from the file /etc/default/omniorb-eventservice. Edit this file to change the options. See also: omniEvents reference. 3.2 Windows service. -------------------- The omniEvents Windows service stores options in the Registry key `HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\omniEvents'. They are read each time the service starts. Usually the only option you should set is the -t FILENAME option that directs trace output to the named file. You set the service options by listing them after the `install' or `setoptions' commands: syntax: `omniEvents install OPTIONS' syntax: `omniEvents setoptions OPTIONS' You can see the currently stored options with the `getoptions' command: syntax: `omniEvents getoptions' See also: omniEvents-win32 reference. 3.3 Compile-time customisation ------------------------------ Some compile-time parameters may only be adjusted by manually editing the file src/defaults.h: o the default data directory [/var/lib/omniEvents on Unix, C:\omniEvents on Windows.] o the name of the environment variable that sets the data directory [ `OMNIEVENTS_LOGDIR'] o the period between data file checkpoints [`900' seconds] o Default event channel parameters: `PullRetryPeriod_ms' Time between `pull()' calls. [1 second] `MaxQueueLength' Number of events to queue. [1023] `MaxNumProxies' Limit on number of ProxyPullSuppliers. [1024] `CyclePeriod_ns' Time between batch transfer of events. [0.1 second] Please refer to the src/defaults.h file for descriptions of all parameters. 4. Running the examples ======================= The examples programs (`eventc', `pushsupp', `pushcons', `pullsupp', `pullcons') are also available as Python and Java. Look in examples/python/* and examples/java/*. In these examples, we run omniEvents from the command line. A real installation would probably use a system service, as mentioned in the installation section. 4.1 Start the Naming Service (omniNames) ---------------------------------------- You must start the naming service (`omniNames') as the examples make use of the naming service to locate the event channel factory. Please refer to the omniORB documentation for information on how to set up the naming service. 4.2 Start the omniEvents daemon (omniEvents) -------------------------------------------- `omniEvents' implements an Event Channel Factory server which clients can use to create Event Channels. The factory registers itself with the Naming Service to enable clients to locate it. Before you start, you may need to set the environment variable `OMNIORB_CONFIG' to contain the full path name of the file omniORB.cfg. The default is /etc/omniORB.cfg. For example: % OMNIORB_CONFIG=/wib/wob/omniORB.cfg; export OMNIORB_CONFIG Start omniEvents by running the executable. The binary is in PREFIX/sbin (if you used the `configure --prefix' parameter), or in /usr/local/sbin (by default). Once the service is correctly started up, it automatically backgrounds itself (Unix only). Example: Startup from the command-line. % omniEvents -l $HOME % omniEvents supports the following options: cold start syntax: src/omniEvents [-pPORT] [-aENDPOINT] [OPTIONS] warm start syntax: src/omniEvents [OPTIONS] COLD START OPTIONS: -p PORT configure server port [11169] -a ENDPOINT set alternate endPoint for failover OPTIONS: -l PATH full path to data directory* [/var/lib/omniEvents] -P PIDFILE keep track of running instance in PIDFILE. -N ID factory naming service id ["EventChannelFactory"] -f Stay in the foreground. -t FILE Send trace messages to FILE instead of syslog. -v print the IOR of the new EventChannelFactory. -V display version -h display this help text *You can also set the environment variable OMNIEVENTS_LOGDIR to specify the directory where the data files are kept. The options provided allow you to override the default name used to register the Event Channel Factory with the Naming Service. omniEvents supports persistent channels by writing all state changes to a file. This persistency datafile is stored in /var/lib/omniEvents/ by default. Use the -l option or the `OMNIEVENTS_LOGDIR' environment variable to override the default. 4.3 Create an Event Channel (eventc) ------------------------------------ `eventc' resolves the factory name with the Naming Service and then contacts the factory to request an Event Channel. The Event Channel is created within the the omniEvents process. You can by-pass the factory completely and instantiate the event channel directly within your own process by linking your application directly with the omniEvents shared libraries. The src/main.cc file is a good starting point to find out how. eventc then registers the created Event Channel with the Naming Service, and exits. eventc has the following options: syntax: tools/eventc OPTIONS [FACTORY_URI] FACTORY_URI: The factory may be specified as a URI. This may be an IOR, or a corbaloc::: or corbaname::: URI. For example: corbaloc::localhost:11169/omniEvents OPTIONS: DEFAULT: -n channel name ["EventChannel"] -N factory name (if URI is not specified) ["EventChannelFactory"] -c override default CyclePeriod_ns of new channel (nanoseconds) -i set the InsName of new channel, to enable access via corbaloc -p override default MaxNumProxies of new channel -q override default MaxQueueLength of new channel -R override default PullRetryPeriod_ms for new channel (milliseconds) -t set an event type filter, FilterId= -v print the IOR of the new EventChannel to standard output. -h display this help text OLD OPTIONS: (only used by omniEvents v2.4 and earlier) -m override default MaxEventsPerConsumer for new channel The options provided allow you to override the default name used to register the Event Channel Factory and the created Event Channel with the Naming Service. eventc starts silently unless it encounters any problems or if you turn tracing on by supplying the omniORB specific option -ORBtraceLevel 20. eventc terminates once the event channel has been created: % eventc % 4.4 Run one or more example suppliers/consumers ----------------------------------------------- There are four example clients: `pushsupp', `pushcons', `pullsupp' and `pullcons'. When run, each supplier and consumer contacts the Naming Service to obtain a reference to the Event Channel created in step 2 above. They then connect themselves to the channel and do their bits. The data sent through the channel is always of type `long' in the examples. As per `eventc', you can override the default name used to register the channel in the naming service. The -d option is used to exercise the disconnect functionality provided by the channel. syntax: examples/pushsupp OPTIONS [CHANNEL_URI] CHANNEL_URI: The event channel may be specified as a URI. This may be an IOR, or a corbaloc::: or corbaname::: URI. OPTIONS: DEFAULT: -d NUM disconnect after sending NUM events [0 - never disconnect] -r connect using a nil reference -s SECS sleep SECS seconds after disconnecting [0] -n NAME channel name (if URI is not specified) ["EventChannel"] -h display this help text syntax: examples/pushcons OPTIONS [CHANNEL_URI] CHANNEL_URI: The event channel may be specified as a URI. This may be an IOR, or a corbaloc::: or corbaname::: URI. OPTIONS: DEFAULT: -d NUM disconnect after receiving NUM events [0 - never disconnect] -s SECS sleep SECS seconds after disconnecting [0] -n NAME channel name (if URI is not specified) ["EventChannel"] -h display this help text syntax: examples/pullsupp OPTIONS [CHANNEL_URI] CHANNEL_URI: The event channel may be specified as a URI. This may be an IOR, or a corbaloc::: or corbaname::: URI. OPTIONS: DEFAULT: -d NUM disconnect after sending NUM events [0 - never disconnect] -s SECS sleep SECS seconds after disconnecting [0] -n NAME channel name (if URI is not specified) ["EventChannel"] -h display this help text syntax: examples/pullcons OPTIONS [CHANNEL_URI] CHANNEL_URI: The event channel may be specified as a URI. This may be an IOR, or a corbaloc::: or corbaname::: URI. OPTIONS: DEFAULT: -t enable try_pull mode -r connect using a nil reference -d NUM disconnect after receiving NUM events [0 - never disconnect] -s SECS sleep SECS seconds after disconnecting [0] -n NAME channel name (if URI is not specified) ["EventChannel"] -h display this help text The -t option in pullcons causes the pull consumer to issue non-blocking `try_pull()' invocations rather than blocking `pull()'s. Example: Here is what to expect during a typical session % examples/pushsupp Looking for EventChannel Obtained SupplierAdmin. Obtained ProxyPushConsumer. Connected Push Supplier. Push Supplier: push() called. Data : 0 Push Supplier: push() called. Data : 1 Push Supplier: push() called. Data : 2 Push Supplier: push() called. Data : 3 Push Supplier: push() called. Data : 4 Push Supplier: push() called. Data : 5 ... % examples/pushcons Obtained ConsumerAdmin. Obtained ProxyPushSupplier. Connected Push Consumer. Push Consumer: push() called. Data : 0 Push Consumer: push() called. Data : 1 Push Consumer: push() called. Data : 2 Push Consumer: push() called. Data : 3 Push Consumer: push() called. Data : 4 Push Consumer: push() called. Data : 5 Push Consumer: push() called. Data : 6 ... Pull consumers cause the event channel to poll every pull supplier connected when they request an event (using `pull()', not `try_pull()') until an event enters the event channel (which could come from a push supplier). In order to prevent the Event Channel from consuming excessive CPU when polling for events the -r option of eventc can be used to specify a pull retry period QOS parameter. This parameter represents a timeout in seconds to wait for before each poll cycle. This parameter defaults to 1 second. 5. Writing an Event Service Client ================================== The examples are a great place to start learning about the event service. Feel free to use them as a starting point for your own clients. The same examples are available as C++, Python and Java. However, this section provides a few more general instructions. 5.1 Connecting -------------- Here's a list of all the ways clients can locate the omniEvents server's EventChannelFactory object: by IOR. (`omniEvents -v'): The -v option prints the EventChannelFactory's IOR. You can then use a straightforward `string_to_object()' method call to turn this into an object reference. by `corbaloc::host:port/omniEvents': The EventChannelFactory is registered in the omniORB INSPOA as `omniEvents' which means that you can use the human readable "corbaloc" string above instead of the IOR. Replace `host' with omniEvents' hostname and `port' with the TCP port: 11169 (or whatever you chose with the -p option). `resolve_initial_references("EventService")': If omniORB.cfg is properly configured, you can use `resolve_initial_references()' to find the event service, just as is usually done for the Naming Service. Just add a line like this: InitRef = EventService=corbaloc::host:port/omniEvents The naming service (`omniEvents -N NAME'): omniEvents always registers the EventChannelFactory as a top-level entry in the naming service. Use the -N option to control the context, id & kind. (`EventChannelFactory' by default). 5.2 Using `any' type -------------------- The "events" pushed and pulled around by the Event Service are simply CORBA `any' values. The `any' type can hold any CORBA type. The examples simply send a `long' value, but a more realistic problem would employ a user-defined struct as the event. For user-defined types you first need to define the type in IDL, then compile the IDL. For omniORB with C++ you would use `omniidl -bcxx -Wba'. The -Wba generates the operators you will need to use your type with `CORBA::Any'. Here's a small example: module MyMessages { struct NVPair { NameType name; ValueType value; }; }; Assuming you compile this IDL correctly, you will have insertion & extraction methods: `operator>>=()' and `operator<<=()'. Here are examples of how to use them: CORBA::Any data; // Insert by value MyMessages::NVPair inputNvPair = ... data <<= inputNvPair; // takes a deep copy. // Insert by pointer MyMessages::NVPair* inputNvPairPtr = ... data <<= inputNvPairPtr; // does NOT copy - assumes ownership //XX delete inputNvPairPtr; <== NO!! . . . // Extract const MyMessages::NVPair* outputNvPairPtr = NULL; if(data >>= outputNvPairPtr) { // Use outputNvPairPtr BUT DON'T DELETE IT!! } else { cerr<<"Wrong type!!"< -a -l -P -N -f -t -vVh -ORB DESCRIPTION `omniEvents' is a CORBA Event Service server program. It is designed to be run as a standalone daemon process. The server continuously saves its state to a file. Event channels are re-created from this file each time the server restarts. The options -p and -a affect the identity of the server's event channels, so these options can only be set the first time the server is run. Servers may be configured to operate in pairs - if one fails then clients automatically switch over to the alternate. OPTIONS -p port: Sets the TCP port on which a new server will listen. The default is `11169' This value is stored in the new server's persistent state. There is no need to supply this option when a server is restarted, since the value is read from the file. If the option is supplied then it is simply compared with the stored value - if the two do not match then the program exits with an error. -a endpoint: Sets an alternate endPoint for a new server. All CORBA object references generated by the server include the alternate address. When clients cannot contact the server, they automatically fall back to trying the alternate address. This option is exactly equivalent to the ORB parameter endPointNoListen, except that the value is saved in the server's persistency file, so that it is remembered whenever omniEvents is restarted. The format for a TCP endpoint is `giop:tcp:HOST:PORT', for example: `-a giop:tcp:secondary.host:11169' This value is stored in the server's persistent state. There is no need to supply this option when a server is restarted, since the value is read from the file. If the option is supplied then it is simply compared with the stored value - if the two do not match then the program exits with an error. -l directory: Full path to data directory, where omniEvents stores its persistent state. The default is /var/lib/omniEvents -P pidfile: Keep track of the currently running omniEvents process in `pidfile', which should usually be /var/run/omniEvents.pid. If `pidfile' already exists, then the server refuses to start. The default is to not write a PID file. -N factory-name: Sets the CORBA Name Service name for the EventChannelFactory CORBA object. Each time the server starts, it registers its channel factory object with `factory-name' in the Name Service. Format for name: `[CONTEXT-ID[.CONTEXT-KIND]/]*OBJECT-ID[.OBJECT-KIND]' Examples: `foo', `foo.bar', `foo.bar/baz/qux', `foo/bar/baz.qux'. The default is `EventChannelFactory' -f: Run the server in the foreground (do not daemonize). -t file: Send trace messages to `file' instead of syslog. -v: Output the CORBA IOR of the EventChannelFactory CORBA object when the server starts. This will go either to syslog or to the current trace file. -V: Display version. -h: Display a short summary of command-line options. -ORBparameter value: Standard omniORB options. see omniORB documentation for details. Do NOT use this option to set the `endPoint' or `alternateEndPoint'. This option is commonly used to set the omniORB `traceLevel', in order to get more detailed output. Example: `-ORBtraceLevel 5' EVENT CHANNEL PARAMETERS The omniEvents::EventChannelFactory object implements the standard CosLifeCycle::GenericFactory interface. An EventChannel object is created by a call to the `create_object(key,the_criteria)' operation. The "key" parameter must be set to `"EventChannel"."object interface"'. The "the_criteria" parameter is a sequence of various service parameters. Supported parameters are listed below. CyclePeriod_ns (`long'): Sets the cycle period of the channel (nanoseconds). This is the time that the channel waits before transferring messages from the incoming queue to the outgoing queue. While messages are being transferred, incoming calls are queued. The default is 0.1 seconds. FilterId (`string'): Only types whose `RepositoryId' matches the parameter are permitted to pass through the channel. Other events are silently ignored. InsName (`string'): Sets the name by which the EventChannel is known in omniEvents' INSPOA. You can refer to the channel with a corbaloc string like this: `corbaloc::HOST:11169/NAME' MaxNumProxies (`long'): The maximum number of `ProxyPullSuppliers' per channel. MaxQueueLength (`long'): How many events are buffered by the `ConsumerAdmin' object. The discard policy is FIFO, meaning that the oldest events are discarded first in case of overflow. PullRetryPeriod_ms (`long'): Period (milliseconds) between polls when in Pull Supplier - Push Consumer mode. SIGNALS SIGTERM, SIGINT: Shuts down the server. SIGUSR1: You can change the traceLevel while the application is running. Send the server SIGUSR1 to bump its traceLevel up by 5. The traceLevel is wrapped at 45, so you can always get it back to where it started by repeatedly sending SIGUSR1. Example: `kill -USR1 `cat /var/run/omniEvents.pid`' ENVIRONMENT VARIABLES OMNIEVENTS_LOGDIR: Sets the directory where data files are kept by default. An alternative to the -l option. OMNIORB_CONFIG: The location of the omniORB configuration file. COPYRIGHT Copyright © 2003-2005 Alex Tingle, 1999 Paul Nader. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -------------------------------------------------------------------------------- omniEvents-win32 - CORBA Event Service for Windows Command: `omniEvents' -p -a -l -N -t -vVh -ORB Windows service control: `omniEvents' install uninstall setoptions getoptions DESCRIPTION `omniEvents' is a CORBA Event Service server program. It is designed to be run as a Windows service. The server continuously saves its state to a file. Event channels are re-created from this file each time the server restarts. The options -p and -a affect the identity of the server's event channels, so these options can only be set the first time the server is run. Servers may be configured to operate in pairs - if one fails then clients automatically switch over to the alternate. SERVICE CONTROL `omniEvents' itself has four service set-up commands. The command name must immediately follow the `omniEvents'. Any normal command-line options which follow the command are stored in the Windows registry. They will be used when the service starts up. `omniEvents install OPTIONS': Install the service with the specified options. The only option that will usually be useful is -t, which instructs omniEvents to send trace logs to a file. Example: `omniEvents install -t "C:\omniEvents\trace.out"' `omniEvents uninstall': Uninstalls the service. `omniEvents setoptions OPTIONS': Changes the service's stored options. `omniEvents getoptions': Outputs the service's stored option to standard output. Once the `omniEvents' is installed, you can control it from the command line, or from scripts with the `Sc.exe' command. `Sc.exe' is distributed with the "Microsoft SDK". `sc start omniEvents': Starts the server. `sc stop omniEvents': Shuts down the server. `sc control omniEvents 128': You can change the traceLevel while the application is running. Send control signal `128' to the server to bump its traceLevel up by 5. The traceLevel is wrapped at 45, so you can always get it back to where it started by repeatedly sending signal `128'. OPTIONS -p port: Sets the TCP port on which a new server will listen. The default is `11169' This value is stored in the new server's persistent state. There is no need to supply this option when a server is restarted, since the value is read from the file. If the option is supplied then it is simply compared with the stored value - if the two do not match then the program exits with an error. -a endpoint: Sets an alternate endPoint for a new server. All CORBA object references generated by the server include the alternate address. When clients cannot contact the server, they automatically fall back to trying the alternate address. This option is exactly equivalent to the ORB parameter endPointNoListen, except that the value is saved in the server's persistency file, so that it is remembered whenever omniEvents is restarted. The format for a TCP endpoint is `giop:tcp:HOST:PORT', for example: `-a giop:tcp:secondary.host:11169' This value is stored in the server's persistent state. There is no need to supply this option when a server is restarted, since the value is read from the file. If the option is supplied then it is simply compared with the stored value - if the two do not match then the program exits with an error. -l directory: Full path to data directory, where omniEvents stores its persistent state. The default is C:\omniEvents -N factory-name: Sets the CORBA Name Service name for the EventChannelFactory CORBA object. Each time the server starts, it registers its channel factory object with `factory-name' in the Name Service. Format for name: `[CONTEXT-ID[.CONTEXT-KIND]/]*OBJECT-ID[.OBJECT-KIND]' Examples: `foo', `foo.bar', `foo.bar/baz/qux', `foo/bar/baz.qux'. The default is `EventChannelFactory' -t file: Send trace messages to `file'. -v: Output the CORBA IOR of the EventChannelFactory CORBA object when the server starts. -V: Display version. -h: Display a short summary of command-line options. -ORBparameter value: Standard omniORB options. see omniORB documentation for details. Do NOT use this option to set the `endPoint' or `alternateEndPoint'. This option is commonly used to set the omniORB `traceLevel', in order to get more detailed output. Example: `-ORBtraceLevel 5' EVENT CHANNEL PARAMETERS The omniEvents::EventChannelFactory object implements the standard CosLifeCycle::GenericFactory interface. An EventChannel object is created by a call to the `create_object(key,the_criteria)' operation. The "key" parameter must be set to `"EventChannel"."object interface"'. The "the_criteria" parameter is a sequence of various service parameters. Supported parameters are listed below. CyclePeriod_ns (`long'): Sets the cycle period of the channel (nanoseconds). This is the time that the channel waits before transferring messages from the incoming queue to the outgoing queue. While messages are being transferred, incoming calls are queued. The default is 0.1 seconds. FilterId (`string'): Only types whose `RepositoryId' matches the parameter are permitted to pass through the channel. Other events are silently ignored. InsName (`string'): Sets the name by which the EventChannel is known in omniEvents' INSPOA. You can refer to the channel with a corbaloc string like this: `corbaloc::HOST:11169/NAME' MaxNumProxies (`long'): The maximum number of `ProxyPullSuppliers' per channel. MaxQueueLength (`long'): How many events are buffered by the `ConsumerAdmin' object. The discard policy is FIFO, meaning that the oldest events are discarded first in case of overflow. PullRetryPeriod_ms (`long'): Period (milliseconds) between polls when in Pull Supplier - Push Consumer mode. ENVIRONMENT VARIABLES OMNIEVENTS_LOGDIR: Sets the directory where data files are kept by default. An alternative to the -l option. OMNIORB_CONFIG: The location of the omniORB configuration file. COPYRIGHT Copyright © 2003-2005 Alex Tingle, 1999 Paul Nader. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -------------------------------------------------------------------------------- eventc - create a CORBA EventChannel and register it in the naming service `eventc' -n -N -c -i -p -q -R -t -vh -ORB DESCRIPTION eventc contacts the omniEvents server to request an Event Channel. The Event Channel is created within the the omniEvents process. eventc then registers the created Event Channel with the Naming Service, and exits. factory-uri: The factory may be specified as a URI. This may be an IOR, or a corbaloc::: or corbaname::: URI. Example: `eventc corbaloc::localhost:11169/omniEvents' If the factory-uri argument is not supplied, then the -N factory-name option is used to look up the server in the CORBA Name Service. OPTIONS -n channel-name: Sets the CORBA Name Service name for the new EventChannel CORBA object. Format for channel-name: `[CONTEXT-ID[.CONTEXT-KIND]/]*OBJECT-ID[.OBJECT-KIND]' Examples: `foo', `foo.bar', `foo.bar/baz/qux', `foo/bar/baz.qux'. The default is `EventChannel' -N factory-name: The CORBA Name Service name for the EventChannelFactory CORBA object. The default value is `EventChannelFactory'. This value is only used when the `factory-uri' argument is not supplied. -c nanoseconds: Sets the `CyclePeriod_ns' parameter of the new event channel. -i id: Set the `InsName' of new event channel, to enable access via corbaloc. -p num: Sets the `MaxNumProxies' parameter of the new event channel. -q num: Sets the `MaxQueueLength' parameter of the new event channel. -R milliseconds: Sets the `PullRetryPeriod_ms' parameter of the new event channel. -t repository-id: Sets the `FilterId' parameter of the new event channel. -v: Output the CORBA IOR of the new EventChannel CORBA object. -h: Display a short summary of command-line options. -ORBparameter value: Standard omniORB options. see omniORB documentation for details. This option is commonly used to set the omniORB `traceLevel', in order to get more detailed output. Example: `-ORBtraceLevel 5' ENVIRONMENT VARIABLES OMNIORB_CONFIG: The location of the omniORB configuration file. COPYRIGHT Copyright © 2003-2005 Alex Tingle, 1999 Paul Nader. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -------------------------------------------------------------------------------- eventf - connect (federate) two CORBA EventChannels `eventf' DESCRIPTION `eventf' establishes a connection between two event channels. The event channels must both already be in existence (perhaps created by the `eventc' command). If both event channels are implemented by omniEvents, then the connection is persistent: it will be recreated if one or both of the channels is shut down and later restarted. The from- and to-channels must be specified as URIs. This may be an IOR, or a corbaloc::: or corbaname::: URI. Example: `eventf corbaname::#from.channel corbaname::#to.channel' ENVIRONMENT VARIABLES OMNIORB_CONFIG: The location of the omniORB configuration file. COPYRIGHT Copyright © 2004,2005 Alex Tingle. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -------------------------------------------------------------------------------- events - stream events from or to a CORBA EventChannel `events' -n -s -h -ORB DESCRIPTION `events' streams events from an event channel to standard output, or (-s) from standard input to an event channel. Events are streamed in raw binary form, accompanied by a timestamp. When the stream is played back into a channel, the timestamps are used the replicate the original delays between the messages. The main use for this command it to record sets of events and play them back later for testing. Recording example: `events corbaname::#EventChannel > test.dat' Playback example: `events -s corbaname::#EventChannel < test.dat' OPTIONS -n channel-name: The CORBA Name Service name used to look up the EventChannel CORBA object. Format for channel-name: `[CONTEXT-ID[.CONTEXT-KIND]/]*OBJECT-ID[.OBJECT-KIND]' Examples: `foo', `foo.bar', `foo.bar/baz/qux', `foo/bar/baz.qux'. The default is `EventChannel' -s: Supply mode. Read events from standard input. -h: Display a short summary of command-line options. -ORBparameter value: Standard omniORB options. see omniORB documentation for details. This option is commonly used to set the omniORB `traceLevel', in order to get more detailed output. Example: `-ORBtraceLevel 5' ENVIRONMENT VARIABLES OMNIORB_CONFIG: The location of the omniORB configuration file. COPYRIGHT Copyright © 2004,2005 Alex Tingle. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -------------------------------------------------------------------------------- rmeventc - destroy a CORBA EventChannel `rmeventc' -n -h -ORB DESCRIPTION `rmeventc' connects to an event channel and calls its `destroy()' operation. If the channel is located by the -n option, then the name is unbound (removed) from the Name Service. Example: `rmeventc -nfoo/bar/baz.qux' OPTIONS -n channel-name: The CORBA Name Service name used to look up the EventChannel CORBA object. Format for channel-name: `[CONTEXT-ID[.CONTEXT-KIND]/]*OBJECT-ID[.OBJECT-KIND]' Examples: `foo', `foo.bar', `foo.bar/baz/qux', `foo/bar/baz.qux'. The default is `EventChannel' -h: Display a short summary of command-line options. -ORBparameter value: Standard omniORB options. see omniORB documentation for details. This option is commonly used to set the omniORB `traceLevel', in order to get more detailed output. Example: `-ORBtraceLevel 5' ENVIRONMENT VARIABLES OMNIORB_CONFIG: The location of the omniORB configuration file. COPYRIGHT Copyright © 2003-2005 Alex Tingle. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. omniEvents-2_6_2/TODO0000644000076400001440000000306410303667571014631 0ustar alexusers00000000000000This file lists planned features. ENHANCEMENTS o Redesign `eventc' command line. Need generic parameter passing, rather than a load of random single-letter options. o Rewrite file stream interface in omniEventsLog.cc more cleanly. At the moment it's a dense thicket of #ifdefs. Need to do a clean, modern C++ implementation, and add on older stuff around it, rather than have it all mixed up together. o Add support for GNU-style long options. o Add a fallback logdir ($HOME/omniEventsLog.d) in user space to help out non-root users who want to run servers. o Drop privileges in daemon mode to enhance security. o Detect `loops' of federated event channels. Currently, it is possible to connect channel A with channel B, and B back with A. Any event sent to either channel then bounces endlessly between the two. o 'Supply-only' federated channels. The channel has only a single consumer, connected to an upstream supplier. Clients can only create new supplier proxies. Useful for safely delivering events to untrusted recipients. o 'No destroy' channels, that ignore the destroy() operation. 'No disconnect' proxies, that ignore the disconnect_*() operation. Again, useful for delivering events to untrusted recipients. FUTURE (all speculative) o Plug-in filtering between the receive & send sides. Possibly Python scripted? o Typed event service. As bolt on? Or fully integrated? Please send any comments and suggestions to: alextingle@users.sourceforge.net naderp@users.sourceforge.net shamus13@users.sourceforge.net omniEvents-2_6_2/config.mk.in0000644000076400001440000001203210240451202016315 0ustar alexusers00000000000000# Package : omniEvents # config.mk.in Created : 2003/10/31 # Author : Alex Tingle # # Copyright (C) 2003, 2004 Alex Tingle. # # This file is part of the omniEvents application. # # omniEvents is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either # version 2.1 of the License, or (at your option) any later version. # # omniEvents is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public # License along with this library; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # # @configure_input@ OMNIEVENTS_BASE = @abs_top_srcdir@ CORBA_ORB = @CORBA_ORB@ # Punctuation EMPTY := SPACE := $(EMPTY) $(EMPTY) # Platform dependent file extensions. OBJEXT := @OBJEXT@ EXEEXT := @EXEEXT@ SOEXT := @SOEXT@ StaticLib = lib$(1).a # Name of the application and libraries that we will build. OMNIEVENTS := omniEvents CLIENT_LIB := $(call StaticLib,$(OMNIEVENTS)Cl) PACKAGE_VERSION := @PACKAGE_VERSION@ HAVE_GETHOSTNAME := @HAVE_GETHOSTNAME@ # May need to install a substitute. # Define installation directories. prefix := @prefix@ exec_prefix := @exec_prefix@ INSTALL_BIN := $(DESTDIR)@bindir@ INSTALL_SBIN := $(DESTDIR)@sbindir@ INSTALL_LIB := $(DESTDIR)@libdir@ INSTALL_INCLUDE := $(DESTDIR)@includedir@ INSTALL_IDL := $(DESTDIR)${prefix}/share/idl INSTALL_ETC := $(DESTDIR)@INSTALL_ETC@ SYSCONFIG_DIR := $(DESTDIR)@SYSCONFIG_DIR@ # Set up install & clean programs. INSTALL := $(subst auto/install,$(OMNIEVENTS_BASE)/auto/install,@INSTALL@) RM := rm -f RMDIR := rm -rf ## ## IDL compiler. ## IDL := @IDL@ IDL_COS_DIR := @IDL_COS_DIR@ IDLFLAGS = -bcxx # <--- backend selection should be omniidl's first option. IDLFLAGS += -Wba -Wbh='.hh' -Wbs='.cc' -Wbd='DynSK.cc' -WbBOA -Wbuse_quotes IDLFLAGS += -I$(IDL_COS_DIR)/COS # The IDL compiler doesn't write code that uses config.h, so we have to compile # the generated files with a couple of extra options: EXTRA_IDL_CXXFLAGS := @IDL_CPPFLAGS@ -D@PLATFORM_DEFINITION@ \ -D@PROCESSOR_DEFINITION@ -D__OSVERSION__=@OSVERSION@ ## ## C++ compiler: $(CXX) $(CPPFLAGS) $(CXXFLAGS) source ## CXX := @CXX@ CXXFLAGS += @CXXFLAGS@ # CXXFLAGS CPPFLAGS += -I../idl -I../src CPPFLAGS += @CPPFLAGS@ # CPPFLAGS CPPFLAGS += @DEFS@ # DEFS CPPFLAGS += -DENABLE_CLIENT_IR_SUPPORT=1 -DOMNIEVENTS_REAL_TIME_PUSH=1 ## ## C++ Linker: $(LD) objects $(LDFLAGS) $(LDOUT)target $(LDLIBS) ## LD := $(CXX) LDFLAGS += @CXXFLAGS@ # CXXFLAGS LDFLAGS += @LDFLAGS@ # LDFLAGS LDLIBS += @LIBS@ # LIBS ## ## Command to make a symbolic link from $(1) to $(2) ## MakeSymLink = $(RM) $(2) && ln -s $(1) $(2) ## ## Command to build C++ static archive (library) ## $(1) - archive/library (output) filename ## $(2) - objects and static libraries to include ## CxxBuildStatic = @CXX_AR@ $(1) $(2) ## ## Command to build C++ executable. ## $(1) - executable (output) filename ## $(2) - objects and static libraries to include ## CxxBuildExecutable = $(LD) $(2) $(LDFLAGS) -o $(1) $(LDLIBS) ## ## Command to build C++ shared libraries. ## $(1) - output filename (.so) ## $(2) - objects ## $(3) - static libraries to include ## $(4) - soname ## CXX_LINK_SO_LIB := @CXX_LINK_SO_LIB@ ifeq ($(CXX_LINK_SO_LIB),) CxxBuildShared = else CxxBuildShared = \ soname=$(4) && \ $(CXX_LINK_SO_LIB) $(1) $(2) $(LDFLAGS) $(LDLIBS) $(3) endif ## ## Command to install C++ shared libraries. ## $(1) - root library name ## $(2) - package version (MAJOR.MINOR.MICRO) ## $(3) - target directory ## SharedLibName = lib$(1)$(SOEXT) SharedLibFullName = $(SharedLibName).$(2) SharedLibSoName = $(basename $(basename $(SharedLibFullName))) ifeq ($(CXX_LINK_SO_LIB),) InstallSharedLib = else InstallSharedLib = \ $(INSTALL) -d $(3) && \ $(INSTALL) $(SharedLibName) $(3)/$(SharedLibFullName) && \ cd $(3) && \ $(call MakeSymLink,$(SharedLibFullName),$(basename $(SharedLibFullName))) &&\ $(call MakeSymLink,$(basename $(SharedLibFullName)),$(SharedLibSoName)) &&\ $(call MakeSymLink,$(SharedLibSoName),$(SharedLibName)) endif ## ## Some compilers & linkers need to be told where to store ## template instantiations. ## CXXFLAGS_PTR := @CXXFLAGS_PTR@ CXX_REPOSITORY := $(OMNIEVENTS_BASE)/templates.d ifneq ("$(CXXFLAGS_PTR)","") CXXFLAGS += @CXXFLAGS_PTR@$(CXX_REPOSITORY) LDFLAGS += @CXXFLAGS_PTR@$(CXX_REPOSITORY) endif ## ## Suffix rules for compiling .idl & .cc files. ## .SUFFIXES: .idl .cc .$(OBJEXT) .idl.cc: $(IDL) $(IDLFLAGS) $< .cc.$(OBJEXT): $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) $< # (end) omniEvents-2_6_2/configure0000755000076400001440000111405010263503216016035 0ustar alexusers00000000000000#! /bin/sh # Guess values for system-dependent variables and create Makefiles. # Generated by GNU Autoconf 2.59 for omniEvents 2.6.2. # # Report bugs to . # # Copyright (C) 2003 Free Software Foundation, Inc. # This configure script is free software; the Free Software Foundation # gives unlimited permission to copy, distribute and modify it. ## --------------------- ## ## M4sh Initialization. ## ## --------------------- ## # Be Bourne compatible if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then emulate sh NULLCMD=: # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then set -o posix fi DUALCASE=1; export DUALCASE # for MKS sh # Support unset when possible. if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then as_unset=unset else as_unset=false fi # Work around bugs in pre-3.0 UWIN ksh. $as_unset ENV MAIL MAILPATH PS1='$ ' PS2='> ' PS4='+ ' # NLS nuisances. for as_var in \ LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \ LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \ LC_TELEPHONE LC_TIME do if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then eval $as_var=C; export $as_var else $as_unset $as_var fi done # Required to use basename. if expr a : '\(a\)' >/dev/null 2>&1; then as_expr=expr else as_expr=false fi if (basename /) >/dev/null 2>&1 && test "X`basename / 2>&1`" = "X/"; then as_basename=basename else as_basename=false fi # Name of the executable. as_me=`$as_basename "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)$' \| \ . : '\(.\)' 2>/dev/null || echo X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/; q; } /^X\/\(\/\/\)$/{ s//\1/; q; } /^X\/\(\/\).*/{ s//\1/; q; } s/.*/./; q'` # PATH needs CR, and LINENO needs CR and PATH. # Avoid depending upon Character Ranges. as_cr_letters='abcdefghijklmnopqrstuvwxyz' as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' as_cr_Letters=$as_cr_letters$as_cr_LETTERS as_cr_digits='0123456789' as_cr_alnum=$as_cr_Letters$as_cr_digits # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then echo "#! /bin/sh" >conf$$.sh echo "exit 0" >>conf$$.sh chmod +x conf$$.sh if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then PATH_SEPARATOR=';' else PATH_SEPARATOR=: fi rm -f conf$$.sh fi as_lineno_1=$LINENO as_lineno_2=$LINENO as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` test "x$as_lineno_1" != "x$as_lineno_2" && test "x$as_lineno_3" = "x$as_lineno_2" || { # Find who we are. Look in the path if we contain no path at all # relative or not. case $0 in *[\\/]* ) as_myself=$0 ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break done ;; esac # We did not find ourselves, most probably we were run as `sh COMMAND' # in which case we are not to be found in the path. if test "x$as_myself" = x; then as_myself=$0 fi if test ! -f "$as_myself"; then { echo "$as_me: error: cannot find myself; rerun with an absolute path" >&2 { (exit 1); exit 1; }; } fi case $CONFIG_SHELL in '') as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for as_base in sh bash ksh sh5; do case $as_dir in /*) if ("$as_dir/$as_base" -c ' as_lineno_1=$LINENO as_lineno_2=$LINENO as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` test "x$as_lineno_1" != "x$as_lineno_2" && test "x$as_lineno_3" = "x$as_lineno_2" ') 2>/dev/null; then $as_unset BASH_ENV || test "${BASH_ENV+set}" != set || { BASH_ENV=; export BASH_ENV; } $as_unset ENV || test "${ENV+set}" != set || { ENV=; export ENV; } CONFIG_SHELL=$as_dir/$as_base export CONFIG_SHELL exec "$CONFIG_SHELL" "$0" ${1+"$@"} fi;; esac done done ;; esac # Create $as_me.lineno as a copy of $as_myself, but with $LINENO # uniformly replaced by the line number. The first 'sed' inserts a # line-number line before each line; the second 'sed' does the real # work. The second script uses 'N' to pair each line-number line # with the numbered line, and appends trailing '-' during # substitution so that $LINENO is not a special case at line end. # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the # second 'sed' script. Blame Lee E. McMahon for sed's syntax. :-) sed '=' <$as_myself | sed ' N s,$,-, : loop s,^\(['$as_cr_digits']*\)\(.*\)[$]LINENO\([^'$as_cr_alnum'_]\),\1\2\1\3, t loop s,-$,, s,^['$as_cr_digits']*\n,, ' >$as_me.lineno && chmod +x $as_me.lineno || { echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2 { (exit 1); exit 1; }; } # Don't try to exec as it changes $[0], causing all sort of problems # (the dirname of $[0] is not the place where we might find the # original and so on. Autoconf is especially sensible to this). . ./$as_me.lineno # Exit status is that of the last command. exit } case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in *c*,-n*) ECHO_N= ECHO_C=' ' ECHO_T=' ' ;; *c*,* ) ECHO_N=-n ECHO_C= ECHO_T= ;; *) ECHO_N= ECHO_C='\c' ECHO_T= ;; esac if expr a : '\(a\)' >/dev/null 2>&1; then as_expr=expr else as_expr=false fi rm -f conf$$ conf$$.exe conf$$.file echo >conf$$.file if ln -s conf$$.file conf$$ 2>/dev/null; then # We could just check for DJGPP; but this test a) works b) is more generic # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04). if test -f conf$$.exe; then # Don't use ln at all; we don't have any links as_ln_s='cp -p' else as_ln_s='ln -s' fi elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -p' fi rm -f conf$$ conf$$.exe conf$$.file if mkdir -p . 2>/dev/null; then as_mkdir_p=: else test -d ./-p && rmdir ./-p as_mkdir_p=false fi as_executable_p="test -f" # Sed expression to map a string onto a valid CPP name. as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" # Sed expression to map a string onto a valid variable name. as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" # IFS # We need space, tab and new line, in precisely that order. as_nl=' ' IFS=" $as_nl" # CDPATH. $as_unset CDPATH # Name of the host. # hostname on some systems (SVR3.2, Linux) returns a bogus exit status, # so uname gets run too. ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` exec 6>&1 # # Initializations. # ac_default_prefix=/usr/local ac_config_libobj_dir=. cross_compiling=no subdirs= MFLAGS= MAKEFLAGS= SHELL=${CONFIG_SHELL-/bin/sh} # Maximum number of lines to put in a shell here document. # This variable seems obsolete. It should probably be removed, and # only ac_max_sed_lines should be used. : ${ac_max_here_lines=38} # Identity of this package. PACKAGE_NAME='omniEvents' PACKAGE_TARNAME='omnievents' PACKAGE_VERSION='2.6.2' PACKAGE_STRING='omniEvents 2.6.2' PACKAGE_BUGREPORT='alex.omnievents@firetree.net' ac_unique_file="src/omniEvents.cc" # Factoring default headers for most tests. ac_includes_default="\ #include #if HAVE_SYS_TYPES_H # include #endif #if HAVE_SYS_STAT_H # include #endif #if STDC_HEADERS # include # include #else # if HAVE_STDLIB_H # include # endif #endif #if HAVE_STRING_H # if !STDC_HEADERS && HAVE_MEMORY_H # include # endif # include #endif #if HAVE_STRINGS_H # include #endif #if HAVE_INTTYPES_H # include #else # if HAVE_STDINT_H # include # endif #endif #if HAVE_UNISTD_H # include #endif" ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS CXX CXXFLAGS LDFLAGS CPPFLAGS ac_ct_CXX EXEEXT OBJEXT CC CFLAGS ac_ct_CC INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA SET_MAKE ALLOCA CXXCPP EGREP CXXFLAGS_PTR build build_cpu build_vendor build_os host host_cpu host_vendor host_os CXX_AR CXX_LINK_SO_LIB LD_LIBRARY_PATH_NAME SOEXT LIBOBJS ETR_SOCKET_LIBS PTHREAD_CC PTHREAD_LIBS PTHREAD_CFLAGS PLATFORM_NAME PLATFORM_DEFINITION OSVERSION PROCESSOR_NAME PROCESSOR_DEFINITION CORBA_ORB IDL_CPPFLAGS IDL IDL_COS_DIR INSTALL_ETC SYSCONFIG_DIR HAVE_GETHOSTNAME LTLIBOBJS' ac_subst_files='' # Initialize some variables set by options. ac_init_help= ac_init_version=false # The variables have the same names as the options, with # dashes changed to underlines. cache_file=/dev/null exec_prefix=NONE no_create= no_recursion= prefix=NONE program_prefix=NONE program_suffix=NONE program_transform_name=s,x,x, silent= site= srcdir= verbose= x_includes=NONE x_libraries=NONE # Installation directory options. # These are left unexpanded so users can "make install exec_prefix=/foo" # and all the variables that are supposed to be based on exec_prefix # by default will actually change. # Use braces instead of parens because sh, perl, etc. also accept them. bindir='${exec_prefix}/bin' sbindir='${exec_prefix}/sbin' libexecdir='${exec_prefix}/libexec' datadir='${prefix}/share' sysconfdir='${prefix}/etc' sharedstatedir='${prefix}/com' localstatedir='${prefix}/var' libdir='${exec_prefix}/lib' includedir='${prefix}/include' oldincludedir='/usr/include' infodir='${prefix}/info' mandir='${prefix}/man' ac_prev= for ac_option do # If the previous option needs an argument, assign it. if test -n "$ac_prev"; then eval "$ac_prev=\$ac_option" ac_prev= continue fi ac_optarg=`expr "x$ac_option" : 'x[^=]*=\(.*\)'` # Accept the important Cygnus configure options, so we can diagnose typos. case $ac_option in -bindir | --bindir | --bindi | --bind | --bin | --bi) ac_prev=bindir ;; -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) bindir=$ac_optarg ;; -build | --build | --buil | --bui | --bu) ac_prev=build_alias ;; -build=* | --build=* | --buil=* | --bui=* | --bu=*) build_alias=$ac_optarg ;; -cache-file | --cache-file | --cache-fil | --cache-fi \ | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) ac_prev=cache_file ;; -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) cache_file=$ac_optarg ;; --config-cache | -C) cache_file=config.cache ;; -datadir | --datadir | --datadi | --datad | --data | --dat | --da) ac_prev=datadir ;; -datadir=* | --datadir=* | --datadi=* | --datad=* | --data=* | --dat=* \ | --da=*) datadir=$ac_optarg ;; -disable-* | --disable-*) ac_feature=`expr "x$ac_option" : 'x-*disable-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null && { echo "$as_me: error: invalid feature name: $ac_feature" >&2 { (exit 1); exit 1; }; } ac_feature=`echo $ac_feature | sed 's/-/_/g'` eval "enable_$ac_feature=no" ;; -enable-* | --enable-*) ac_feature=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null && { echo "$as_me: error: invalid feature name: $ac_feature" >&2 { (exit 1); exit 1; }; } ac_feature=`echo $ac_feature | sed 's/-/_/g'` case $ac_option in *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;; *) ac_optarg=yes ;; esac eval "enable_$ac_feature='$ac_optarg'" ;; -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ | --exec | --exe | --ex) ac_prev=exec_prefix ;; -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ | --exec=* | --exe=* | --ex=*) exec_prefix=$ac_optarg ;; -gas | --gas | --ga | --g) # Obsolete; use --with-gas. with_gas=yes ;; -help | --help | --hel | --he | -h) ac_init_help=long ;; -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) ac_init_help=recursive ;; -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) ac_init_help=short ;; -host | --host | --hos | --ho) ac_prev=host_alias ;; -host=* | --host=* | --hos=* | --ho=*) host_alias=$ac_optarg ;; -includedir | --includedir | --includedi | --included | --include \ | --includ | --inclu | --incl | --inc) ac_prev=includedir ;; -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ | --includ=* | --inclu=* | --incl=* | --inc=*) includedir=$ac_optarg ;; -infodir | --infodir | --infodi | --infod | --info | --inf) ac_prev=infodir ;; -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) infodir=$ac_optarg ;; -libdir | --libdir | --libdi | --libd) ac_prev=libdir ;; -libdir=* | --libdir=* | --libdi=* | --libd=*) libdir=$ac_optarg ;; -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ | --libexe | --libex | --libe) ac_prev=libexecdir ;; -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ | --libexe=* | --libex=* | --libe=*) libexecdir=$ac_optarg ;; -localstatedir | --localstatedir | --localstatedi | --localstated \ | --localstate | --localstat | --localsta | --localst \ | --locals | --local | --loca | --loc | --lo) ac_prev=localstatedir ;; -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ | --localstate=* | --localstat=* | --localsta=* | --localst=* \ | --locals=* | --local=* | --loca=* | --loc=* | --lo=*) localstatedir=$ac_optarg ;; -mandir | --mandir | --mandi | --mand | --man | --ma | --m) ac_prev=mandir ;; -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) mandir=$ac_optarg ;; -nfp | --nfp | --nf) # Obsolete; use --without-fp. with_fp=no ;; -no-create | --no-create | --no-creat | --no-crea | --no-cre \ | --no-cr | --no-c | -n) no_create=yes ;; -no-recursion | --no-recursion | --no-recursio | --no-recursi \ | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) no_recursion=yes ;; -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ | --oldin | --oldi | --old | --ol | --o) ac_prev=oldincludedir ;; -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) oldincludedir=$ac_optarg ;; -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) ac_prev=prefix ;; -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) prefix=$ac_optarg ;; -program-prefix | --program-prefix | --program-prefi | --program-pref \ | --program-pre | --program-pr | --program-p) ac_prev=program_prefix ;; -program-prefix=* | --program-prefix=* | --program-prefi=* \ | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) program_prefix=$ac_optarg ;; -program-suffix | --program-suffix | --program-suffi | --program-suff \ | --program-suf | --program-su | --program-s) ac_prev=program_suffix ;; -program-suffix=* | --program-suffix=* | --program-suffi=* \ | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) program_suffix=$ac_optarg ;; -program-transform-name | --program-transform-name \ | --program-transform-nam | --program-transform-na \ | --program-transform-n | --program-transform- \ | --program-transform | --program-transfor \ | --program-transfo | --program-transf \ | --program-trans | --program-tran \ | --progr-tra | --program-tr | --program-t) ac_prev=program_transform_name ;; -program-transform-name=* | --program-transform-name=* \ | --program-transform-nam=* | --program-transform-na=* \ | --program-transform-n=* | --program-transform-=* \ | --program-transform=* | --program-transfor=* \ | --program-transfo=* | --program-transf=* \ | --program-trans=* | --program-tran=* \ | --progr-tra=* | --program-tr=* | --program-t=*) program_transform_name=$ac_optarg ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) silent=yes ;; -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) ac_prev=sbindir ;; -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ | --sbi=* | --sb=*) sbindir=$ac_optarg ;; -sharedstatedir | --sharedstatedir | --sharedstatedi \ | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ | --sharedst | --shareds | --shared | --share | --shar \ | --sha | --sh) ac_prev=sharedstatedir ;; -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ | --sha=* | --sh=*) sharedstatedir=$ac_optarg ;; -site | --site | --sit) ac_prev=site ;; -site=* | --site=* | --sit=*) site=$ac_optarg ;; -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) ac_prev=srcdir ;; -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) srcdir=$ac_optarg ;; -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ | --syscon | --sysco | --sysc | --sys | --sy) ac_prev=sysconfdir ;; -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) sysconfdir=$ac_optarg ;; -target | --target | --targe | --targ | --tar | --ta | --t) ac_prev=target_alias ;; -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) target_alias=$ac_optarg ;; -v | -verbose | --verbose | --verbos | --verbo | --verb) verbose=yes ;; -version | --version | --versio | --versi | --vers | -V) ac_init_version=: ;; -with-* | --with-*) ac_package=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null && { echo "$as_me: error: invalid package name: $ac_package" >&2 { (exit 1); exit 1; }; } ac_package=`echo $ac_package| sed 's/-/_/g'` case $ac_option in *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;; *) ac_optarg=yes ;; esac eval "with_$ac_package='$ac_optarg'" ;; -without-* | --without-*) ac_package=`expr "x$ac_option" : 'x-*without-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null && { echo "$as_me: error: invalid package name: $ac_package" >&2 { (exit 1); exit 1; }; } ac_package=`echo $ac_package | sed 's/-/_/g'` eval "with_$ac_package=no" ;; --x) # Obsolete; use --with-x. with_x=yes ;; -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ | --x-incl | --x-inc | --x-in | --x-i) ac_prev=x_includes ;; -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) x_includes=$ac_optarg ;; -x-libraries | --x-libraries | --x-librarie | --x-librari \ | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) ac_prev=x_libraries ;; -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) x_libraries=$ac_optarg ;; -*) { echo "$as_me: error: unrecognized option: $ac_option Try \`$0 --help' for more information." >&2 { (exit 1); exit 1; }; } ;; *=*) ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` # Reject names that are not valid shell variable names. expr "x$ac_envvar" : ".*[^_$as_cr_alnum]" >/dev/null && { echo "$as_me: error: invalid variable name: $ac_envvar" >&2 { (exit 1); exit 1; }; } ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` eval "$ac_envvar='$ac_optarg'" export $ac_envvar ;; *) # FIXME: should be removed in autoconf 3.0. echo "$as_me: WARNING: you should use --build, --host, --target" >&2 expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && echo "$as_me: WARNING: invalid host type: $ac_option" >&2 : ${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option} ;; esac done if test -n "$ac_prev"; then ac_option=--`echo $ac_prev | sed 's/_/-/g'` { echo "$as_me: error: missing argument to $ac_option" >&2 { (exit 1); exit 1; }; } fi # Be sure to have absolute paths. for ac_var in exec_prefix prefix do eval ac_val=$`echo $ac_var` case $ac_val in [\\/$]* | ?:[\\/]* | NONE | '' ) ;; *) { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2 { (exit 1); exit 1; }; };; esac done # Be sure to have absolute paths. for ac_var in bindir sbindir libexecdir datadir sysconfdir sharedstatedir \ localstatedir libdir includedir oldincludedir infodir mandir do eval ac_val=$`echo $ac_var` case $ac_val in [\\/$]* | ?:[\\/]* ) ;; *) { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2 { (exit 1); exit 1; }; };; esac done # There might be people who depend on the old broken behavior: `$host' # used to hold the argument of --host etc. # FIXME: To remove some day. build=$build_alias host=$host_alias target=$target_alias # FIXME: To remove some day. if test "x$host_alias" != x; then if test "x$build_alias" = x; then cross_compiling=maybe echo "$as_me: WARNING: If you wanted to set the --build type, don't use --host. If a cross compiler is detected then cross compile mode will be used." >&2 elif test "x$build_alias" != "x$host_alias"; then cross_compiling=yes fi fi ac_tool_prefix= test -n "$host_alias" && ac_tool_prefix=$host_alias- test "$silent" = yes && exec 6>/dev/null # Find the source files, if location was not specified. if test -z "$srcdir"; then ac_srcdir_defaulted=yes # Try the directory containing this script, then its parent. ac_confdir=`(dirname "$0") 2>/dev/null || $as_expr X"$0" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$0" : 'X\(//\)[^/]' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| \ . : '\(.\)' 2>/dev/null || echo X"$0" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } /^X\(\/\/\)[^/].*/{ s//\1/; q; } /^X\(\/\/\)$/{ s//\1/; q; } /^X\(\/\).*/{ s//\1/; q; } s/.*/./; q'` srcdir=$ac_confdir if test ! -r $srcdir/$ac_unique_file; then srcdir=.. fi else ac_srcdir_defaulted=no fi if test ! -r $srcdir/$ac_unique_file; then if test "$ac_srcdir_defaulted" = yes; then { echo "$as_me: error: cannot find sources ($ac_unique_file) in $ac_confdir or .." >&2 { (exit 1); exit 1; }; } else { echo "$as_me: error: cannot find sources ($ac_unique_file) in $srcdir" >&2 { (exit 1); exit 1; }; } fi fi (cd $srcdir && test -r ./$ac_unique_file) 2>/dev/null || { echo "$as_me: error: sources are in $srcdir, but \`cd $srcdir' does not work" >&2 { (exit 1); exit 1; }; } srcdir=`echo "$srcdir" | sed 's%\([^\\/]\)[\\/]*$%\1%'` ac_env_build_alias_set=${build_alias+set} ac_env_build_alias_value=$build_alias ac_cv_env_build_alias_set=${build_alias+set} ac_cv_env_build_alias_value=$build_alias ac_env_host_alias_set=${host_alias+set} ac_env_host_alias_value=$host_alias ac_cv_env_host_alias_set=${host_alias+set} ac_cv_env_host_alias_value=$host_alias ac_env_target_alias_set=${target_alias+set} ac_env_target_alias_value=$target_alias ac_cv_env_target_alias_set=${target_alias+set} ac_cv_env_target_alias_value=$target_alias ac_env_CXX_set=${CXX+set} ac_env_CXX_value=$CXX ac_cv_env_CXX_set=${CXX+set} ac_cv_env_CXX_value=$CXX ac_env_CXXFLAGS_set=${CXXFLAGS+set} ac_env_CXXFLAGS_value=$CXXFLAGS ac_cv_env_CXXFLAGS_set=${CXXFLAGS+set} ac_cv_env_CXXFLAGS_value=$CXXFLAGS ac_env_LDFLAGS_set=${LDFLAGS+set} ac_env_LDFLAGS_value=$LDFLAGS ac_cv_env_LDFLAGS_set=${LDFLAGS+set} ac_cv_env_LDFLAGS_value=$LDFLAGS ac_env_CPPFLAGS_set=${CPPFLAGS+set} ac_env_CPPFLAGS_value=$CPPFLAGS ac_cv_env_CPPFLAGS_set=${CPPFLAGS+set} ac_cv_env_CPPFLAGS_value=$CPPFLAGS ac_env_CC_set=${CC+set} ac_env_CC_value=$CC ac_cv_env_CC_set=${CC+set} ac_cv_env_CC_value=$CC ac_env_CFLAGS_set=${CFLAGS+set} ac_env_CFLAGS_value=$CFLAGS ac_cv_env_CFLAGS_set=${CFLAGS+set} ac_cv_env_CFLAGS_value=$CFLAGS ac_env_CXXCPP_set=${CXXCPP+set} ac_env_CXXCPP_value=$CXXCPP ac_cv_env_CXXCPP_set=${CXXCPP+set} ac_cv_env_CXXCPP_value=$CXXCPP # # Report the --help message. # if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF \`configure' configures omniEvents 2.6.2 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... To assign environment variables (e.g., CC, CFLAGS...), specify them as VAR=VALUE. See below for descriptions of some of the useful variables. Defaults for the options are specified in brackets. Configuration: -h, --help display this help and exit --help=short display options specific to this package --help=recursive display the short help of all the included packages -V, --version display version information and exit -q, --quiet, --silent do not print \`checking...' messages --cache-file=FILE cache test results in FILE [disabled] -C, --config-cache alias for \`--cache-file=config.cache' -n, --no-create do not create output files --srcdir=DIR find the sources in DIR [configure dir or \`..'] _ACEOF cat <<_ACEOF Installation directories: --prefix=PREFIX install architecture-independent files in PREFIX [$ac_default_prefix] --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX [PREFIX] By default, \`make install' will install all the files in \`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify an installation prefix other than \`$ac_default_prefix' using \`--prefix', for instance \`--prefix=\$HOME'. For better control, use the options below. Fine tuning of the installation directories: --bindir=DIR user executables [EPREFIX/bin] --sbindir=DIR system admin executables [EPREFIX/sbin] --libexecdir=DIR program executables [EPREFIX/libexec] --datadir=DIR read-only architecture-independent data [PREFIX/share] --sysconfdir=DIR read-only single-machine data [PREFIX/etc] --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] --localstatedir=DIR modifiable single-machine data [PREFIX/var] --libdir=DIR object code libraries [EPREFIX/lib] --includedir=DIR C header files [PREFIX/include] --oldincludedir=DIR C header files for non-gcc [/usr/include] --infodir=DIR info documentation [PREFIX/info] --mandir=DIR man documentation [PREFIX/man] _ACEOF cat <<\_ACEOF System types: --build=BUILD configure for building on BUILD [guessed] --host=HOST cross-compile to build programs to run on HOST [BUILD] _ACEOF fi if test -n "$ac_init_help"; then case $ac_init_help in short | recursive ) echo "Configuration of omniEvents 2.6.2:";; esac cat <<\_ACEOF Optional Features: --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) --enable-FEATURE[=ARG] include FEATURE [ARG=yes] --enable-unloadable-stubs library may be safely unloaded. [default=no] Optional Packages: --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) --with-omniorb=PATH set the path to the local omniORB installation [$OMNIORBBASE]. Some influential environment variables: CXX C++ compiler command CXXFLAGS C++ compiler flags LDFLAGS linker flags, e.g. -L if you have libraries in a nonstandard directory CPPFLAGS C/C++ preprocessor flags, e.g. -I if you have headers in a nonstandard directory CC C compiler command CFLAGS C compiler flags CXXCPP C++ preprocessor Use these variables to override the choices made by `configure' or to help it to find libraries and programs with nonstandard names/locations. Report bugs to . _ACEOF fi if test "$ac_init_help" = "recursive"; then # If there are subdirs, report their specific --help. ac_popdir=`pwd` for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue test -d $ac_dir || continue ac_builddir=. if test "$ac_dir" != .; then ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` # A "../" for each directory in $ac_dir_suffix. ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'` else ac_dir_suffix= ac_top_builddir= fi case $srcdir in .) # No --srcdir option. We are building in place. ac_srcdir=. if test -z "$ac_top_builddir"; then ac_top_srcdir=. else ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'` fi ;; [\\/]* | ?:[\\/]* ) # Absolute path. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ;; *) # Relative path. ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_builddir$srcdir ;; esac # Do not use `cd foo && pwd` to compute absolute paths, because # the directories may not exist. case `pwd` in .) ac_abs_builddir="$ac_dir";; *) case "$ac_dir" in .) ac_abs_builddir=`pwd`;; [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";; *) ac_abs_builddir=`pwd`/"$ac_dir";; esac;; esac case $ac_abs_builddir in .) ac_abs_top_builddir=${ac_top_builddir}.;; *) case ${ac_top_builddir}. in .) ac_abs_top_builddir=$ac_abs_builddir;; [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;; *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;; esac;; esac case $ac_abs_builddir in .) ac_abs_srcdir=$ac_srcdir;; *) case $ac_srcdir in .) ac_abs_srcdir=$ac_abs_builddir;; [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;; *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;; esac;; esac case $ac_abs_builddir in .) ac_abs_top_srcdir=$ac_top_srcdir;; *) case $ac_top_srcdir in .) ac_abs_top_srcdir=$ac_abs_builddir;; [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;; *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;; esac;; esac cd $ac_dir # Check for guested configure; otherwise get Cygnus style configure. if test -f $ac_srcdir/configure.gnu; then echo $SHELL $ac_srcdir/configure.gnu --help=recursive elif test -f $ac_srcdir/configure; then echo $SHELL $ac_srcdir/configure --help=recursive elif test -f $ac_srcdir/configure.ac || test -f $ac_srcdir/configure.in; then echo $ac_configure --help else echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 fi cd "$ac_popdir" done fi test -n "$ac_init_help" && exit 0 if $ac_init_version; then cat <<\_ACEOF omniEvents configure 2.6.2 generated by GNU Autoconf 2.59 Copyright (C) 2003 Free Software Foundation, Inc. This configure script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it. _ACEOF exit 0 fi exec 5>config.log cat >&5 <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. It was created by omniEvents $as_me 2.6.2, which was generated by GNU Autoconf 2.59. Invocation command line was $ $0 $@ _ACEOF { cat <<_ASUNAME ## --------- ## ## Platform. ## ## --------- ## hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` uname -m = `(uname -m) 2>/dev/null || echo unknown` uname -r = `(uname -r) 2>/dev/null || echo unknown` uname -s = `(uname -s) 2>/dev/null || echo unknown` uname -v = `(uname -v) 2>/dev/null || echo unknown` /usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` /bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` /bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` /usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` /usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` hostinfo = `(hostinfo) 2>/dev/null || echo unknown` /bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` /usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` /bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` _ASUNAME as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. echo "PATH: $as_dir" done } >&5 cat >&5 <<_ACEOF ## ----------- ## ## Core tests. ## ## ----------- ## _ACEOF # Keep a trace of the command line. # Strip out --no-create and --no-recursion so they do not pile up. # Strip out --silent because we don't want to record it for future runs. # Also quote any args containing shell meta-characters. # Make two passes to allow for proper duplicate-argument suppression. ac_configure_args= ac_configure_args0= ac_configure_args1= ac_sep= ac_must_keep_next=false for ac_pass in 1 2 do for ac_arg do case $ac_arg in -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) continue ;; *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*) ac_arg=`echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; esac case $ac_pass in 1) ac_configure_args0="$ac_configure_args0 '$ac_arg'" ;; 2) ac_configure_args1="$ac_configure_args1 '$ac_arg'" if test $ac_must_keep_next = true; then ac_must_keep_next=false # Got value, back to normal. else case $ac_arg in *=* | --config-cache | -C | -disable-* | --disable-* \ | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ | -with-* | --with-* | -without-* | --without-* | --x) case "$ac_configure_args0 " in "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; esac ;; -* ) ac_must_keep_next=true ;; esac fi ac_configure_args="$ac_configure_args$ac_sep'$ac_arg'" # Get rid of the leading space. ac_sep=" " ;; esac done done $as_unset ac_configure_args0 || test "${ac_configure_args0+set}" != set || { ac_configure_args0=; export ac_configure_args0; } $as_unset ac_configure_args1 || test "${ac_configure_args1+set}" != set || { ac_configure_args1=; export ac_configure_args1; } # When interrupted or exit'd, cleanup temporary files, and complete # config.log. We remove comments because anyway the quotes in there # would cause problems or look ugly. # WARNING: Be sure not to use single quotes in there, as some shells, # such as our DU 5.0 friend, will then `close' the trap. trap 'exit_status=$? # Save into config.log some information that might help in debugging. { echo cat <<\_ASBOX ## ---------------- ## ## Cache variables. ## ## ---------------- ## _ASBOX echo # The following way of writing the cache mishandles newlines in values, { (set) 2>&1 | case `(ac_space='"'"' '"'"'; set | grep ac_space) 2>&1` in *ac_space=\ *) sed -n \ "s/'"'"'/'"'"'\\\\'"'"''"'"'/g; s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='"'"'\\2'"'"'/p" ;; *) sed -n \ "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p" ;; esac; } echo cat <<\_ASBOX ## ----------------- ## ## Output variables. ## ## ----------------- ## _ASBOX echo for ac_var in $ac_subst_vars do eval ac_val=$`echo $ac_var` echo "$ac_var='"'"'$ac_val'"'"'" done | sort echo if test -n "$ac_subst_files"; then cat <<\_ASBOX ## ------------- ## ## Output files. ## ## ------------- ## _ASBOX echo for ac_var in $ac_subst_files do eval ac_val=$`echo $ac_var` echo "$ac_var='"'"'$ac_val'"'"'" done | sort echo fi if test -s confdefs.h; then cat <<\_ASBOX ## ----------- ## ## confdefs.h. ## ## ----------- ## _ASBOX echo sed "/^$/d" confdefs.h | sort echo fi test "$ac_signal" != 0 && echo "$as_me: caught signal $ac_signal" echo "$as_me: exit $exit_status" } >&5 rm -f core *.core && rm -rf conftest* confdefs* conf$$* $ac_clean_files && exit $exit_status ' 0 for ac_signal in 1 2 13 15; do trap 'ac_signal='$ac_signal'; { (exit 1); exit 1; }' $ac_signal done ac_signal=0 # confdefs.h avoids OS command line length limits that DEFS can exceed. rm -rf conftest* confdefs.h # AIX cpp loses on an empty file, so make sure it contains at least a newline. echo >confdefs.h # Predefined preprocessor variables. cat >>confdefs.h <<_ACEOF #define PACKAGE_NAME "$PACKAGE_NAME" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_TARNAME "$PACKAGE_TARNAME" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_VERSION "$PACKAGE_VERSION" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_STRING "$PACKAGE_STRING" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT" _ACEOF # Let the site file select an alternate cache file if it wants to. # Prefer explicitly selected file to automatically selected ones. if test -z "$CONFIG_SITE"; then if test "x$prefix" != xNONE; then CONFIG_SITE="$prefix/share/config.site $prefix/etc/config.site" else CONFIG_SITE="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site" fi fi for ac_site_file in $CONFIG_SITE; do if test -r "$ac_site_file"; then { echo "$as_me:$LINENO: loading site script $ac_site_file" >&5 echo "$as_me: loading site script $ac_site_file" >&6;} sed 's/^/| /' "$ac_site_file" >&5 . "$ac_site_file" fi done if test -r "$cache_file"; then # Some versions of bash will fail to source /dev/null (special # files actually), so we avoid doing that. if test -f "$cache_file"; then { echo "$as_me:$LINENO: loading cache $cache_file" >&5 echo "$as_me: loading cache $cache_file" >&6;} case $cache_file in [\\/]* | ?:[\\/]* ) . $cache_file;; *) . ./$cache_file;; esac fi else { echo "$as_me:$LINENO: creating cache $cache_file" >&5 echo "$as_me: creating cache $cache_file" >&6;} >$cache_file fi # Check that the precious variables saved in the cache have kept the same # value. ac_cache_corrupted=false for ac_var in `(set) 2>&1 | sed -n 's/^ac_env_\([a-zA-Z_0-9]*\)_set=.*/\1/p'`; do eval ac_old_set=\$ac_cv_env_${ac_var}_set eval ac_new_set=\$ac_env_${ac_var}_set eval ac_old_val="\$ac_cv_env_${ac_var}_value" eval ac_new_val="\$ac_env_${ac_var}_value" case $ac_old_set,$ac_new_set in set,) { echo "$as_me:$LINENO: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} ac_cache_corrupted=: ;; ,set) { echo "$as_me:$LINENO: error: \`$ac_var' was not set in the previous run" >&5 echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} ac_cache_corrupted=: ;; ,);; *) if test "x$ac_old_val" != "x$ac_new_val"; then { echo "$as_me:$LINENO: error: \`$ac_var' has changed since the previous run:" >&5 echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} { echo "$as_me:$LINENO: former value: $ac_old_val" >&5 echo "$as_me: former value: $ac_old_val" >&2;} { echo "$as_me:$LINENO: current value: $ac_new_val" >&5 echo "$as_me: current value: $ac_new_val" >&2;} ac_cache_corrupted=: fi;; esac # Pass precious variables to config.status. if test "$ac_new_set" = set; then case $ac_new_val in *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*) ac_arg=$ac_var=`echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; *) ac_arg=$ac_var=$ac_new_val ;; esac case " $ac_configure_args " in *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. *) ac_configure_args="$ac_configure_args '$ac_arg'" ;; esac fi done if $ac_cache_corrupted; then { echo "$as_me:$LINENO: error: changes in the environment can compromise the build" >&5 echo "$as_me: error: changes in the environment can compromise the build" >&2;} { { echo "$as_me:$LINENO: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&5 echo "$as_me: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&2;} { (exit 1); exit 1; }; } fi 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 ac_aux_dir= for ac_dir in auto $srcdir/auto; do if test -f $ac_dir/install-sh; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/install-sh -c" break elif test -f $ac_dir/install.sh; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/install.sh -c" break elif test -f $ac_dir/shtool; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/shtool install -c" break fi done if test -z "$ac_aux_dir"; then { { echo "$as_me:$LINENO: error: cannot find install-sh or install.sh in auto $srcdir/auto" >&5 echo "$as_me: error: cannot find install-sh or install.sh in auto $srcdir/auto" >&2;} { (exit 1); exit 1; }; } fi ac_config_guess="$SHELL $ac_aux_dir/config.guess" ac_config_sub="$SHELL $ac_aux_dir/config.sub" ac_configure="$SHELL $ac_aux_dir/configure" # This should be Cygnus configure. ac_config_headers="$ac_config_headers src/config.h" ac_omniorbbase="$OMNIORBBASE" # Checks for programs. ac_ext=cc 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 if test -n "$ac_tool_prefix"; then for ac_prog in $CCC g++ c++ gpp aCC CC cxx cc++ cl FCC KCC RCC xlC_r xlC do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_CXX+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$CXX"; then ac_cv_prog_CXX="$CXX" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CXX="$ac_tool_prefix$ac_prog" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done fi fi CXX=$ac_cv_prog_CXX if test -n "$CXX"; then echo "$as_me:$LINENO: result: $CXX" >&5 echo "${ECHO_T}$CXX" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi test -n "$CXX" && break done fi if test -z "$CXX"; then ac_ct_CXX=$CXX for ac_prog in $CCC g++ c++ gpp aCC CC cxx cc++ cl FCC KCC RCC xlC_r xlC do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_ac_ct_CXX+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$ac_ct_CXX"; then ac_cv_prog_ac_ct_CXX="$ac_ct_CXX" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CXX="$ac_prog" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done fi fi ac_ct_CXX=$ac_cv_prog_ac_ct_CXX if test -n "$ac_ct_CXX"; then echo "$as_me:$LINENO: result: $ac_ct_CXX" >&5 echo "${ECHO_T}$ac_ct_CXX" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi test -n "$ac_ct_CXX" && break done test -n "$ac_ct_CXX" || ac_ct_CXX="g++" CXX=$ac_ct_CXX fi # Provide some information about the compiler. echo "$as_me:$LINENO:" \ "checking for C++ compiler version" >&5 ac_compiler=`set X $ac_compile; echo $2` { (eval echo "$as_me:$LINENO: \"$ac_compiler --version &5\"") >&5 (eval $ac_compiler --version &5) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } { (eval echo "$as_me:$LINENO: \"$ac_compiler -v &5\"") >&5 (eval $ac_compiler -v &5) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } { (eval echo "$as_me:$LINENO: \"$ac_compiler -V &5\"") >&5 (eval $ac_compiler -V &5) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } 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 0; } _ACEOF ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files a.out a.exe b.out" # Try to create an executable without -o first, disregard a.out. # It will help us diagnose broken compilers, and finding out an intuition # of exeext. echo "$as_me:$LINENO: checking for C++ compiler default output file name" >&5 echo $ECHO_N "checking for C++ compiler default output file name... $ECHO_C" >&6 ac_link_default=`echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` if { (eval echo "$as_me:$LINENO: \"$ac_link_default\"") >&5 (eval $ac_link_default) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then # Find the output, starting from the most likely. This scheme is # not robust to junk in `.', hence go to wildcards (a.*) only as a last # resort. # Be careful to initialize this variable, since it used to be cached. # Otherwise an old cache value of `no' led to `EXEEXT = no' in a Makefile. ac_cv_exeext= # b.out is created by i960 compilers. for ac_file in a_out.exe a.exe conftest.exe a.out conftest a.* conftest.* b.out do test -f "$ac_file" || continue case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.o | *.obj ) ;; conftest.$ac_ext ) # This is the source file. ;; [ab].out ) # We found the default executable, but exeext='' is most # certainly right. break;; *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` # FIXME: I believe we export ac_cv_exeext for Libtool, # but it would be cool to find out if it's true. Does anybody # maintain Libtool? --akim. export ac_cv_exeext break;; * ) break;; esac done else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { { echo "$as_me:$LINENO: error: C++ compiler cannot create executables See \`config.log' for more details." >&5 echo "$as_me: error: C++ compiler cannot create executables See \`config.log' for more details." >&2;} { (exit 77); exit 77; }; } fi ac_exeext=$ac_cv_exeext echo "$as_me:$LINENO: result: $ac_file" >&5 echo "${ECHO_T}$ac_file" >&6 # Check the compiler produces executables we can run. If not, either # the compiler is broken, or we cross compile. echo "$as_me:$LINENO: checking whether the C++ compiler works" >&5 echo $ECHO_N "checking whether the C++ compiler works... $ECHO_C" >&6 # FIXME: These cross compiler hacks should be removed for Autoconf 3.0 # If not cross compiling, check that we can run a simple program. if test "$cross_compiling" != yes; then if { ac_try='./$ac_file' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then cross_compiling=no else if test "$cross_compiling" = maybe; then cross_compiling=yes else { { echo "$as_me:$LINENO: error: cannot run C++ compiled programs. If you meant to cross compile, use \`--host'. See \`config.log' for more details." >&5 echo "$as_me: error: cannot run C++ compiled programs. If you meant to cross compile, use \`--host'. See \`config.log' for more details." >&2;} { (exit 1); exit 1; }; } fi fi fi echo "$as_me:$LINENO: result: yes" >&5 echo "${ECHO_T}yes" >&6 rm -f a.out a.exe conftest$ac_cv_exeext b.out ac_clean_files=$ac_clean_files_save # Check the compiler produces executables we can run. If not, either # the compiler is broken, or we cross compile. echo "$as_me:$LINENO: checking whether we are cross compiling" >&5 echo $ECHO_N "checking whether we are cross compiling... $ECHO_C" >&6 echo "$as_me:$LINENO: result: $cross_compiling" >&5 echo "${ECHO_T}$cross_compiling" >&6 echo "$as_me:$LINENO: checking for suffix of executables" >&5 echo $ECHO_N "checking for suffix of executables... $ECHO_C" >&6 if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then # If both `conftest.exe' and `conftest' are `present' (well, observable) # catch `conftest.exe'. For instance with Cygwin, `ls conftest' will # work properly (i.e., refer to `conftest.exe'), while it won't with # `rm'. for ac_file in conftest.exe conftest conftest.*; do test -f "$ac_file" || continue case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.o | *.obj ) ;; *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` export ac_cv_exeext break;; * ) break;; esac done else { { echo "$as_me:$LINENO: error: cannot compute suffix of executables: cannot compile and link See \`config.log' for more details." >&5 echo "$as_me: error: cannot compute suffix of executables: cannot compile and link See \`config.log' for more details." >&2;} { (exit 1); exit 1; }; } fi rm -f conftest$ac_cv_exeext echo "$as_me:$LINENO: result: $ac_cv_exeext" >&5 echo "${ECHO_T}$ac_cv_exeext" >&6 rm -f conftest.$ac_ext EXEEXT=$ac_cv_exeext ac_exeext=$EXEEXT echo "$as_me:$LINENO: checking for suffix of object files" >&5 echo $ECHO_N "checking for suffix of object files... $ECHO_C" >&6 if test "${ac_cv_objext+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else 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 0; } _ACEOF rm -f conftest.o conftest.obj if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then for ac_file in `(ls conftest.o conftest.obj; ls conftest.*) 2>/dev/null`; do case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg ) ;; *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` break;; esac done else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { { echo "$as_me:$LINENO: error: cannot compute suffix of object files: cannot compile See \`config.log' for more details." >&5 echo "$as_me: error: cannot compute suffix of object files: cannot compile See \`config.log' for more details." >&2;} { (exit 1); exit 1; }; } fi rm -f conftest.$ac_cv_objext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $ac_cv_objext" >&5 echo "${ECHO_T}$ac_cv_objext" >&6 OBJEXT=$ac_cv_objext ac_objext=$OBJEXT echo "$as_me:$LINENO: checking whether we are using the GNU C++ compiler" >&5 echo $ECHO_N "checking whether we are using the GNU C++ compiler... $ECHO_C" >&6 if test "${ac_cv_cxx_compiler_gnu+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { #ifndef __GNUC__ choke me #endif ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_cxx_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_compiler_gnu=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_compiler_gnu=no fi rm -f conftest.err conftest.$ac_objext conftest.$ac_ext ac_cv_cxx_compiler_gnu=$ac_compiler_gnu fi echo "$as_me:$LINENO: result: $ac_cv_cxx_compiler_gnu" >&5 echo "${ECHO_T}$ac_cv_cxx_compiler_gnu" >&6 GXX=`test $ac_compiler_gnu = yes && echo yes` ac_test_CXXFLAGS=${CXXFLAGS+set} ac_save_CXXFLAGS=$CXXFLAGS CXXFLAGS="-g" echo "$as_me:$LINENO: checking whether $CXX accepts -g" >&5 echo $ECHO_N "checking whether $CXX accepts -g... $ECHO_C" >&6 if test "${ac_cv_prog_cxx_g+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else 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 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_cxx_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_prog_cxx_g=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_prog_cxx_g=no fi rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $ac_cv_prog_cxx_g" >&5 echo "${ECHO_T}$ac_cv_prog_cxx_g" >&6 if test "$ac_test_CXXFLAGS" = set; then CXXFLAGS=$ac_save_CXXFLAGS elif test $ac_cv_prog_cxx_g = yes; then if test "$GXX" = yes; then CXXFLAGS="-g -O2" else CXXFLAGS="-g" fi else if test "$GXX" = yes; then CXXFLAGS="-O2" else CXXFLAGS= fi fi for ac_declaration in \ '' \ 'extern "C" void std::exit (int) throw (); using std::exit;' \ 'extern "C" void std::exit (int); using std::exit;' \ 'extern "C" void exit (int) throw ();' \ 'extern "C" void exit (int);' \ 'void exit (int);' do cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_declaration #include int main () { exit (42); ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_cxx_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then : else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 continue fi rm -f conftest.err conftest.$ac_objext conftest.$ac_ext cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_declaration int main () { exit (42); ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_cxx_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then break else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -f conftest.err conftest.$ac_objext conftest.$ac_ext done rm -f conftest* if test -n "$ac_declaration"; then echo '#ifdef __cplusplus' >>confdefs.h echo $ac_declaration >>confdefs.h echo '#endif' >>confdefs.h fi 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 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 if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. set dummy ${ac_tool_prefix}gcc; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}gcc" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then echo "$as_me:$LINENO: result: $CC" >&5 echo "${ECHO_T}$CC" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi fi if test -z "$ac_cv_prog_CC"; then ac_ct_CC=$CC # Extract the first word of "gcc", so it can be a program name with args. set dummy gcc; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_ac_ct_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="gcc" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 echo "${ECHO_T}$ac_ct_CC" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi CC=$ac_ct_CC else CC="$ac_cv_prog_CC" fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. set dummy ${ac_tool_prefix}cc; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}cc" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then echo "$as_me:$LINENO: result: $CC" >&5 echo "${ECHO_T}$CC" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi fi if test -z "$ac_cv_prog_CC"; then ac_ct_CC=$CC # Extract the first word of "cc", so it can be a program name with args. set dummy cc; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_ac_ct_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="cc" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 echo "${ECHO_T}$ac_ct_CC" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi CC=$ac_ct_CC else CC="$ac_cv_prog_CC" fi fi if test -z "$CC"; then # Extract the first word of "cc", so it can be a program name with args. set dummy cc; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else ac_prog_rejected=no as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then ac_prog_rejected=yes continue fi ac_cv_prog_CC="cc" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done if test $ac_prog_rejected = yes; then # We found a bogon in the path, so make sure we never use it. set dummy $ac_cv_prog_CC shift if test $# != 0; then # We chose a different compiler from the bogus one. # However, it has the same basename, so the bogon will be chosen # first if we set CC to just the basename; use the full file name. shift ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@" fi fi fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then echo "$as_me:$LINENO: result: $CC" >&5 echo "${ECHO_T}$CC" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then for ac_prog in cl do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="$ac_tool_prefix$ac_prog" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then echo "$as_me:$LINENO: result: $CC" >&5 echo "${ECHO_T}$CC" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi test -n "$CC" && break done fi if test -z "$CC"; then ac_ct_CC=$CC for ac_prog in cl do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_ac_ct_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="$ac_prog" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 echo "${ECHO_T}$ac_ct_CC" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi test -n "$ac_ct_CC" && break done CC=$ac_ct_CC fi fi test -z "$CC" && { { echo "$as_me:$LINENO: error: no acceptable C compiler found in \$PATH See \`config.log' for more details." >&5 echo "$as_me: error: no acceptable C compiler found in \$PATH See \`config.log' for more details." >&2;} { (exit 1); exit 1; }; } # Provide some information about the compiler. echo "$as_me:$LINENO:" \ "checking for C compiler version" >&5 ac_compiler=`set X $ac_compile; echo $2` { (eval echo "$as_me:$LINENO: \"$ac_compiler --version &5\"") >&5 (eval $ac_compiler --version &5) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } { (eval echo "$as_me:$LINENO: \"$ac_compiler -v &5\"") >&5 (eval $ac_compiler -v &5) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } { (eval echo "$as_me:$LINENO: \"$ac_compiler -V &5\"") >&5 (eval $ac_compiler -V &5) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } echo "$as_me:$LINENO: checking whether we are using the GNU C compiler" >&5 echo $ECHO_N "checking whether we are using the GNU C compiler... $ECHO_C" >&6 if test "${ac_cv_c_compiler_gnu+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { #ifndef __GNUC__ choke me #endif ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_compiler_gnu=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_compiler_gnu=no fi rm -f conftest.err conftest.$ac_objext conftest.$ac_ext ac_cv_c_compiler_gnu=$ac_compiler_gnu fi echo "$as_me:$LINENO: result: $ac_cv_c_compiler_gnu" >&5 echo "${ECHO_T}$ac_cv_c_compiler_gnu" >&6 GCC=`test $ac_compiler_gnu = yes && echo yes` ac_test_CFLAGS=${CFLAGS+set} ac_save_CFLAGS=$CFLAGS CFLAGS="-g" echo "$as_me:$LINENO: checking whether $CC accepts -g" >&5 echo $ECHO_N "checking whether $CC accepts -g... $ECHO_C" >&6 if test "${ac_cv_prog_cc_g+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else 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 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_prog_cc_g=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_prog_cc_g=no fi rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5 echo "${ECHO_T}$ac_cv_prog_cc_g" >&6 if test "$ac_test_CFLAGS" = set; then CFLAGS=$ac_save_CFLAGS elif test $ac_cv_prog_cc_g = yes; then if test "$GCC" = yes; then CFLAGS="-g -O2" else CFLAGS="-g" fi else if test "$GCC" = yes; then CFLAGS="-O2" else CFLAGS= fi fi echo "$as_me:$LINENO: checking for $CC option to accept ANSI C" >&5 echo $ECHO_N "checking for $CC option to accept ANSI C... $ECHO_C" >&6 if test "${ac_cv_prog_cc_stdc+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_cv_prog_cc_stdc=no ac_save_CC=$CC cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include #include #include #include /* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ struct buf { int x; }; FILE * (*rcsopen) (struct buf *, struct stat *, int); static char *e (p, i) char **p; int i; { return p[i]; } static char *f (char * (*g) (char **, int), char **p, ...) { char *s; va_list v; va_start (v,p); s = g (p, va_arg (v,int)); va_end (v); return s; } /* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has function prototypes and stuff, but not '\xHH' hex character constants. These don't provoke an error unfortunately, instead are silently treated as 'x'. The following induces an error, until -std1 is added to get proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an array size at least. It's necessary to write '\x00'==0 to get something that's true only with -std1. */ int osf4_cc_array ['\x00' == 0 ? 1 : -1]; int test (int i, double x); struct s1 {int (*f) (int a);}; struct s2 {int (*f) (double a);}; int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); int argc; char **argv; int main () { return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; ; return 0; } _ACEOF # Don't try gcc -ansi; that turns off useful extensions and # breaks some systems' header files. # AIX -qlanglvl=ansi # Ultrix and OSF/1 -std1 # HP-UX 10.20 and later -Ae # HP-UX older versions -Aa -D_HPUX_SOURCE # SVR4 -Xc -D__EXTENSIONS__ for ac_arg in "" -qlanglvl=ansi -std1 -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" do CC="$ac_save_CC $ac_arg" rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_prog_cc_stdc=$ac_arg break else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -f conftest.err conftest.$ac_objext done rm -f conftest.$ac_ext conftest.$ac_objext CC=$ac_save_CC fi case "x$ac_cv_prog_cc_stdc" in x|xno) echo "$as_me:$LINENO: result: none needed" >&5 echo "${ECHO_T}none needed" >&6 ;; *) echo "$as_me:$LINENO: result: $ac_cv_prog_cc_stdc" >&5 echo "${ECHO_T}$ac_cv_prog_cc_stdc" >&6 CC="$CC $ac_cv_prog_cc_stdc" ;; esac # Some people use a C++ compiler to compile C. Since we use `exit', # in C++ we need to declare it. In case someone uses the same compiler # for both compiling C and C++ we need to have the C++ compiler decide # the declaration of exit, since it's the most demanding environment. cat >conftest.$ac_ext <<_ACEOF #ifndef __cplusplus choke me #endif _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then for ac_declaration in \ '' \ 'extern "C" void std::exit (int) throw (); using std::exit;' \ 'extern "C" void std::exit (int); using std::exit;' \ 'extern "C" void exit (int) throw ();' \ 'extern "C" void exit (int);' \ 'void exit (int);' do cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_declaration #include int main () { exit (42); ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then : else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 continue fi rm -f conftest.err conftest.$ac_objext conftest.$ac_ext cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_declaration int main () { exit (42); ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then break else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -f conftest.err conftest.$ac_objext conftest.$ac_ext done rm -f conftest* if test -n "$ac_declaration"; then echo '#ifdef __cplusplus' >>confdefs.h echo $ac_declaration >>confdefs.h echo '#endif' >>confdefs.h fi else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -f 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 # Find a good install program. We prefer a C program (faster), # so one script is as good as another. But avoid the broken or # incompatible versions: # SysV /etc/install, /usr/sbin/install # SunOS /usr/etc/install # IRIX /sbin/install # AIX /bin/install # AmigaOS /C/install, which installs bootblocks on floppy discs # AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag # AFS /usr/afsws/bin/install, which mishandles nonexistent args # SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" # OS/2's system install, which has a completely different semantic # ./install, which can be erroneously created by make from ./install.sh. echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5 echo $ECHO_N "checking for a BSD-compatible install... $ECHO_C" >&6 if test -z "$INSTALL"; then if test "${ac_cv_path_install+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. # Account for people who put trailing slashes in PATH elements. case $as_dir/ in ./ | .// | /cC/* | \ /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ ?:\\/os2\\/install\\/* | ?:\\/OS2\\/INSTALL\\/* | \ /usr/ucb/* ) ;; *) # OSF1 and SCO ODT 3.0 have their own names for install. # Don't use installbsd from OSF since it installs stuff as root # by default. for ac_prog in ginstall scoinst install; do for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then if test $ac_prog = install && grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then # AIX install. It has an incompatible calling convention. : elif test $ac_prog = install && grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then # program-specific install script used by HP pwplus--don't use. : else ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" break 3 fi fi done done ;; esac done fi if test "${ac_cv_path_install+set}" = set; then INSTALL=$ac_cv_path_install else # As a last resort, use the slow shell script. We don't cache a # path for INSTALL within a source directory, because that will # break other packages using the cache if that directory is # removed, or if the path is relative. INSTALL=$ac_install_sh fi fi echo "$as_me:$LINENO: result: $INSTALL" >&5 echo "${ECHO_T}$INSTALL" >&6 # Use test -z because SunOS4 sh mishandles braces in ${var-val}. # It thinks the first close brace ends the variable substitution. test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' echo "$as_me:$LINENO: checking whether ${MAKE-make} sets \$(MAKE)" >&5 echo $ECHO_N "checking whether ${MAKE-make} sets \$(MAKE)... $ECHO_C" >&6 set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y,:./+-,___p_,'` if eval "test \"\${ac_cv_prog_make_${ac_make}_set+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.make <<\_ACEOF all: @echo 'ac_maketemp="$(MAKE)"' _ACEOF # GNU make sometimes prints "make[1]: Entering...", which would confuse us. eval `${MAKE-make} -f conftest.make 2>/dev/null | grep temp=` if test -n "$ac_maketemp"; then eval ac_cv_prog_make_${ac_make}_set=yes else eval ac_cv_prog_make_${ac_make}_set=no fi rm -f conftest.make fi if eval "test \"`echo '$ac_cv_prog_make_'${ac_make}_set`\" = yes"; then echo "$as_me:$LINENO: result: yes" >&5 echo "${ECHO_T}yes" >&6 SET_MAKE= else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 SET_MAKE="MAKE=${MAKE-make}" fi ac_ext=cc 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 # Checks for header files. ac_ext=cc 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 echo "$as_me:$LINENO: checking how to run the C++ preprocessor" >&5 echo $ECHO_N "checking how to run the C++ preprocessor... $ECHO_C" >&6 if test -z "$CXXCPP"; then if test "${ac_cv_prog_CXXCPP+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else # Double quotes because CXXCPP needs to be expanded for CXXCPP in "$CXX -E" "/lib/cpp" do ac_preproc_ok=false for ac_cxx_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # Prefer to if __STDC__ is defined, since # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #ifdef __STDC__ # include #else # include #endif Syntax error _ACEOF if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_cxx_preproc_warn_flag ac_cpp_err=$ac_cpp_err$ac_cxx_werror_flag else ac_cpp_err= fi else ac_cpp_err=yes fi if test -z "$ac_cpp_err"; then : else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 # Broken: fails on valid input. continue fi rm -f conftest.err conftest.$ac_ext # OK, works on sane cases. Now check whether non-existent headers # can be detected and how. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include _ACEOF if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_cxx_preproc_warn_flag ac_cpp_err=$ac_cpp_err$ac_cxx_werror_flag else ac_cpp_err= fi else ac_cpp_err=yes fi if test -z "$ac_cpp_err"; then # Broken: success on invalid input. continue else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.err conftest.$ac_ext if $ac_preproc_ok; then break fi done ac_cv_prog_CXXCPP=$CXXCPP fi CXXCPP=$ac_cv_prog_CXXCPP else ac_cv_prog_CXXCPP=$CXXCPP fi echo "$as_me:$LINENO: result: $CXXCPP" >&5 echo "${ECHO_T}$CXXCPP" >&6 ac_preproc_ok=false for ac_cxx_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # Prefer to if __STDC__ is defined, since # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #ifdef __STDC__ # include #else # include #endif Syntax error _ACEOF if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_cxx_preproc_warn_flag ac_cpp_err=$ac_cpp_err$ac_cxx_werror_flag else ac_cpp_err= fi else ac_cpp_err=yes fi if test -z "$ac_cpp_err"; then : else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 # Broken: fails on valid input. continue fi rm -f conftest.err conftest.$ac_ext # OK, works on sane cases. Now check whether non-existent headers # can be detected and how. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include _ACEOF if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_cxx_preproc_warn_flag ac_cpp_err=$ac_cpp_err$ac_cxx_werror_flag else ac_cpp_err= fi else ac_cpp_err=yes fi if test -z "$ac_cpp_err"; then # Broken: success on invalid input. continue else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.err conftest.$ac_ext if $ac_preproc_ok; then : else { { echo "$as_me:$LINENO: error: C++ preprocessor \"$CXXCPP\" fails sanity check See \`config.log' for more details." >&5 echo "$as_me: error: C++ preprocessor \"$CXXCPP\" fails sanity check See \`config.log' for more details." >&2;} { (exit 1); exit 1; }; } fi ac_ext=cc 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 echo "$as_me:$LINENO: checking for egrep" >&5 echo $ECHO_N "checking for egrep... $ECHO_C" >&6 if test "${ac_cv_prog_egrep+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if echo a | (grep -E '(a|b)') >/dev/null 2>&1 then ac_cv_prog_egrep='grep -E' else ac_cv_prog_egrep='egrep' fi fi echo "$as_me:$LINENO: result: $ac_cv_prog_egrep" >&5 echo "${ECHO_T}$ac_cv_prog_egrep" >&6 EGREP=$ac_cv_prog_egrep # The Ultrix 4.2 mips builtin alloca declared by alloca.h only works # for constant arguments. Useless! echo "$as_me:$LINENO: checking for working alloca.h" >&5 echo $ECHO_N "checking for working alloca.h... $ECHO_C" >&6 if test "${ac_cv_working_alloca_h+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include int main () { char *p = (char *) alloca (2 * sizeof (int)); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_cxx_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_working_alloca_h=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_working_alloca_h=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $ac_cv_working_alloca_h" >&5 echo "${ECHO_T}$ac_cv_working_alloca_h" >&6 if test $ac_cv_working_alloca_h = yes; then cat >>confdefs.h <<\_ACEOF #define HAVE_ALLOCA_H 1 _ACEOF fi echo "$as_me:$LINENO: checking for alloca" >&5 echo $ECHO_N "checking for alloca... $ECHO_C" >&6 if test "${ac_cv_func_alloca_works+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #ifdef __GNUC__ # define alloca __builtin_alloca #else # ifdef _MSC_VER # include # define alloca _alloca # else # if HAVE_ALLOCA_H # include # else # ifdef _AIX #pragma alloca # else # ifndef alloca /* predefined by HP cc +Olibcalls */ char *alloca (); # endif # endif # endif # endif #endif int main () { char *p = (char *) alloca (1); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_cxx_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_func_alloca_works=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_func_alloca_works=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $ac_cv_func_alloca_works" >&5 echo "${ECHO_T}$ac_cv_func_alloca_works" >&6 if test $ac_cv_func_alloca_works = yes; then cat >>confdefs.h <<\_ACEOF #define HAVE_ALLOCA 1 _ACEOF else # The SVR3 libPW and SVR4 libucb both contain incompatible functions # that cause trouble. Some versions do not even contain alloca or # contain a buggy version. If you still want to use their alloca, # use ar to extract alloca.o from them instead of compiling alloca.c. ALLOCA=alloca.$ac_objext cat >>confdefs.h <<\_ACEOF #define C_ALLOCA 1 _ACEOF echo "$as_me:$LINENO: checking whether \`alloca.c' needs Cray hooks" >&5 echo $ECHO_N "checking whether \`alloca.c' needs Cray hooks... $ECHO_C" >&6 if test "${ac_cv_os_cray+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #if defined(CRAY) && ! defined(CRAY2) webecray #else wenotbecray #endif _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "webecray" >/dev/null 2>&1; then ac_cv_os_cray=yes else ac_cv_os_cray=no fi rm -f conftest* fi echo "$as_me:$LINENO: result: $ac_cv_os_cray" >&5 echo "${ECHO_T}$ac_cv_os_cray" >&6 if test $ac_cv_os_cray = yes; then for ac_func in _getb67 GETB67 getb67; do as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` echo "$as_me:$LINENO: checking for $ac_func" >&5 echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 if eval "test \"\${$as_ac_var+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Define $ac_func to an innocuous variant, in case declares $ac_func. For example, HP-UX 11i declares gettimeofday. */ #define $ac_func innocuous_$ac_func /* System header to define __stub macros and hopefully few prototypes, which can conflict with char $ac_func (); below. Prefer to if __STDC__ is defined, since exists even on freestanding compilers. */ #ifdef __STDC__ # include #else # include #endif #undef $ac_func /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" { #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char $ac_func (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined (__stub_$ac_func) || defined (__stub___$ac_func) choke me #else char (*f) () = $ac_func; #endif #ifdef __cplusplus } #endif int main () { return f != $ac_func; ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_cxx_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then eval "$as_ac_var=yes" else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 eval "$as_ac_var=no" fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 if test `eval echo '${'$as_ac_var'}'` = yes; then cat >>confdefs.h <<_ACEOF #define CRAY_STACKSEG_END $ac_func _ACEOF break fi done fi echo "$as_me:$LINENO: checking stack direction for C alloca" >&5 echo $ECHO_N "checking stack direction for C alloca... $ECHO_C" >&6 if test "${ac_cv_c_stack_direction+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test "$cross_compiling" = yes; then ac_cv_c_stack_direction=0 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int find_stack_direction () { static char *addr = 0; auto char dummy; if (addr == 0) { addr = &dummy; return find_stack_direction (); } else return (&dummy > addr) ? 1 : -1; } int main () { exit (find_stack_direction () < 0); } _ACEOF rm -f conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='./conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_c_stack_direction=1 else echo "$as_me: program exited with status $ac_status" >&5 echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ( exit $ac_status ) ac_cv_c_stack_direction=-1 fi rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi fi echo "$as_me:$LINENO: result: $ac_cv_c_stack_direction" >&5 echo "${ECHO_T}$ac_cv_c_stack_direction" >&6 cat >>confdefs.h <<_ACEOF #define STACK_DIRECTION $ac_cv_c_stack_direction _ACEOF fi echo "$as_me:$LINENO: checking for ANSI C header files" >&5 echo $ECHO_N "checking for ANSI C header files... $ECHO_C" >&6 if test "${ac_cv_header_stdc+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include #include #include #include int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_cxx_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_header_stdc=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_header_stdc=no fi rm -f conftest.err conftest.$ac_objext conftest.$ac_ext if test $ac_cv_header_stdc = yes; then # SunOS 4.x string.h does not declare mem*, contrary to ANSI. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "memchr" >/dev/null 2>&1; then : else ac_cv_header_stdc=no fi rm -f conftest* fi if test $ac_cv_header_stdc = yes; then # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "free" >/dev/null 2>&1; then : else ac_cv_header_stdc=no fi rm -f conftest* fi if test $ac_cv_header_stdc = yes; then # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. if test "$cross_compiling" = yes; then : else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include #if ((' ' & 0x0FF) == 0x020) # define ISLOWER(c) ('a' <= (c) && (c) <= 'z') # define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) #else # define ISLOWER(c) \ (('a' <= (c) && (c) <= 'i') \ || ('j' <= (c) && (c) <= 'r') \ || ('s' <= (c) && (c) <= 'z')) # define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) #endif #define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) int main () { int i; for (i = 0; i < 256; i++) if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) exit(2); exit (0); } _ACEOF rm -f conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='./conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then : else echo "$as_me: program exited with status $ac_status" >&5 echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ( exit $ac_status ) ac_cv_header_stdc=no fi rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi fi fi echo "$as_me:$LINENO: result: $ac_cv_header_stdc" >&5 echo "${ECHO_T}$ac_cv_header_stdc" >&6 if test $ac_cv_header_stdc = yes; then cat >>confdefs.h <<\_ACEOF #define STDC_HEADERS 1 _ACEOF fi # On IRIX 5.3, sys/types and inttypes.h are conflicting. for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ inttypes.h stdint.h unistd.h do as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` echo "$as_me:$LINENO: checking for $ac_header" >&5 echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 if eval "test \"\${$as_ac_Header+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default #include <$ac_header> _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_cxx_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then eval "$as_ac_Header=yes" else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 eval "$as_ac_Header=no" fi rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 if test `eval echo '${'$as_ac_Header'}'` = yes; then cat >>confdefs.h <<_ACEOF #define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF fi done for ac_header in fcntl.h malloc.h stdlib.h string.h strings.h syslog.h sys/param.h unistd.h process.h signal.h libc.h sys/utsname.h do as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` if eval "test \"\${$as_ac_Header+set}\" = set"; then echo "$as_me:$LINENO: checking for $ac_header" >&5 echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 if eval "test \"\${$as_ac_Header+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 fi echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 else # Is the header compilable? echo "$as_me:$LINENO: checking $ac_header usability" >&5 echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default #include <$ac_header> _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_cxx_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_header_compiler=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_header_compiler=no fi rm -f conftest.err conftest.$ac_objext conftest.$ac_ext echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 echo "${ECHO_T}$ac_header_compiler" >&6 # Is the header present? echo "$as_me:$LINENO: checking $ac_header presence" >&5 echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include <$ac_header> _ACEOF if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_cxx_preproc_warn_flag ac_cpp_err=$ac_cpp_err$ac_cxx_werror_flag else ac_cpp_err= fi else ac_cpp_err=yes fi if test -z "$ac_cpp_err"; then ac_header_preproc=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_header_preproc=no fi rm -f conftest.err conftest.$ac_ext echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 echo "${ECHO_T}$ac_header_preproc" >&6 # So? What about this header? case $ac_header_compiler:$ac_header_preproc:$ac_cxx_preproc_warn_flag in yes:no: ) { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} ac_header_preproc=yes ;; no:yes:* ) { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} ( cat <<\_ASBOX ## ------------------------------------------- ## ## Report this to alex.omnievents@firetree.net ## ## ------------------------------------------- ## _ASBOX ) | sed "s/^/$as_me: WARNING: /" >&2 ;; esac echo "$as_me:$LINENO: checking for $ac_header" >&5 echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 if eval "test \"\${$as_ac_Header+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else eval "$as_ac_Header=\$ac_header_preproc" fi echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 fi if test `eval echo '${'$as_ac_Header'}'` = yes; then cat >>confdefs.h <<_ACEOF #define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF fi done # Checks for typedefs, structures, and compiler characteristics. echo "$as_me:$LINENO: checking for an ANSI C-conforming const" >&5 echo $ECHO_N "checking for an ANSI C-conforming const... $ECHO_C" >&6 if test "${ac_cv_c_const+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { /* FIXME: Include the comments suggested by Paul. */ #ifndef __cplusplus /* Ultrix mips cc rejects this. */ typedef int charset[2]; const charset x; /* SunOS 4.1.1 cc rejects this. */ char const *const *ccp; char **p; /* NEC SVR4.0.2 mips cc rejects this. */ struct point {int x, y;}; static struct point const zero = {0,0}; /* AIX XL C 1.02.0.0 rejects this. It does not let you subtract one const X* pointer from another in an arm of an if-expression whose if-part is not a constant expression */ const char *g = "string"; ccp = &g + (g ? g-g : 0); /* HPUX 7.0 cc rejects these. */ ++ccp; p = (char**) ccp; ccp = (char const *const *) p; { /* SCO 3.2v4 cc rejects this. */ char *t; char const *s = 0 ? (char *) 0 : (char const *) 0; *t++ = 0; } { /* Someone thinks the Sun supposedly-ANSI compiler will reject this. */ int x[] = {25, 17}; const int *foo = &x[0]; ++foo; } { /* Sun SC1.0 ANSI compiler rejects this -- but not the above. */ typedef const int *iptr; iptr p = 0; ++p; } { /* AIX XL C 1.02.0.0 rejects this saying "k.c", line 2.27: 1506-025 (S) Operand must be a modifiable lvalue. */ struct s { int j; const int *ap[3]; }; struct s *b; b->j = 5; } { /* ULTRIX-32 V3.1 (Rev 9) vcc rejects this */ const int foo = 10; } #endif ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_cxx_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_c_const=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_c_const=no fi rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $ac_cv_c_const" >&5 echo "${ECHO_T}$ac_cv_c_const" >&6 if test $ac_cv_c_const = no; then cat >>confdefs.h <<\_ACEOF #define const _ACEOF fi echo "$as_me:$LINENO: checking for inline" >&5 echo $ECHO_N "checking for inline... $ECHO_C" >&6 if test "${ac_cv_c_inline+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_cv_c_inline=no for ac_kw in inline __inline__ __inline; do cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #ifndef __cplusplus typedef int foo_t; static $ac_kw foo_t static_foo () {return 0; } $ac_kw foo_t foo () {return 0; } #endif _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_cxx_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_c_inline=$ac_kw; break else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -f conftest.err conftest.$ac_objext conftest.$ac_ext done fi echo "$as_me:$LINENO: result: $ac_cv_c_inline" >&5 echo "${ECHO_T}$ac_cv_c_inline" >&6 case $ac_cv_c_inline in inline | yes) ;; *) case $ac_cv_c_inline in no) ac_val=;; *) ac_val=$ac_cv_c_inline;; esac cat >>confdefs.h <<_ACEOF #ifndef __cplusplus #define inline $ac_val #endif _ACEOF ;; esac echo "$as_me:$LINENO: checking for size_t" >&5 echo $ECHO_N "checking for size_t... $ECHO_C" >&6 if test "${ac_cv_type_size_t+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default int main () { if ((size_t *) 0) return 0; if (sizeof (size_t)) return 0; ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_cxx_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_type_size_t=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_type_size_t=no fi rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $ac_cv_type_size_t" >&5 echo "${ECHO_T}$ac_cv_type_size_t" >&6 if test $ac_cv_type_size_t = yes; then : else cat >>confdefs.h <<_ACEOF #define size_t unsigned _ACEOF fi # Checks for C++ features echo "$as_me:$LINENO: checking whether the compiler implements namespaces" >&5 echo $ECHO_N "checking whether the compiler implements namespaces... $ECHO_C" >&6 if test "${ac_cv_cxx_namespaces+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_ext=cc 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. */ namespace Outer { namespace Inner { int i = 0; }} int main () { using namespace Outer::Inner; return i; ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_cxx_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_cxx_namespaces=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_cxx_namespaces=no fi rm -f conftest.err conftest.$ac_objext conftest.$ac_ext ac_ext=cc 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 fi echo "$as_me:$LINENO: result: $ac_cv_cxx_namespaces" >&5 echo "${ECHO_T}$ac_cv_cxx_namespaces" >&6 if test "$ac_cv_cxx_namespaces" = yes; then cat >>confdefs.h <<\_ACEOF #define HAVE_NAMESPACES _ACEOF fi echo "$as_me:$LINENO: checking whether the compiler supports Standard Template Library" >&5 echo $ECHO_N "checking whether the compiler supports Standard Template Library... $ECHO_C" >&6 if test "${ac_cv_cxx_have_stl+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_ext=cc 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 #include #ifdef HAVE_NAMESPACES using namespace std; #endif int main () { list x; x.push_back(5); list::iterator iter = x.begin(); if (iter != x.end()) ++iter; return 0; ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_cxx_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_cxx_have_stl=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_cxx_have_stl=no fi rm -f conftest.err conftest.$ac_objext conftest.$ac_ext ac_ext=cc 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 fi echo "$as_me:$LINENO: result: $ac_cv_cxx_have_stl" >&5 echo "${ECHO_T}$ac_cv_cxx_have_stl" >&6 if test "$ac_cv_cxx_have_stl" = yes; then cat >>confdefs.h <<\_ACEOF #define HAVE_STL _ACEOF fi if test "${ac_cv_header_iostream+set}" = set; then echo "$as_me:$LINENO: checking for iostream" >&5 echo $ECHO_N "checking for iostream... $ECHO_C" >&6 if test "${ac_cv_header_iostream+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 fi echo "$as_me:$LINENO: result: $ac_cv_header_iostream" >&5 echo "${ECHO_T}$ac_cv_header_iostream" >&6 else # Is the header compilable? echo "$as_me:$LINENO: checking iostream usability" >&5 echo $ECHO_N "checking iostream usability... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default #include _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_cxx_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_header_compiler=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_header_compiler=no fi rm -f conftest.err conftest.$ac_objext conftest.$ac_ext echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 echo "${ECHO_T}$ac_header_compiler" >&6 # Is the header present? echo "$as_me:$LINENO: checking iostream presence" >&5 echo $ECHO_N "checking iostream presence... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include _ACEOF if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_cxx_preproc_warn_flag ac_cpp_err=$ac_cpp_err$ac_cxx_werror_flag else ac_cpp_err= fi else ac_cpp_err=yes fi if test -z "$ac_cpp_err"; then ac_header_preproc=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_header_preproc=no fi rm -f conftest.err conftest.$ac_ext echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 echo "${ECHO_T}$ac_header_preproc" >&6 # So? What about this header? case $ac_header_compiler:$ac_header_preproc:$ac_cxx_preproc_warn_flag in yes:no: ) { echo "$as_me:$LINENO: WARNING: iostream: accepted by the compiler, rejected by the preprocessor!" >&5 echo "$as_me: WARNING: iostream: accepted by the compiler, rejected by the preprocessor!" >&2;} { echo "$as_me:$LINENO: WARNING: iostream: proceeding with the compiler's result" >&5 echo "$as_me: WARNING: iostream: proceeding with the compiler's result" >&2;} ac_header_preproc=yes ;; no:yes:* ) { echo "$as_me:$LINENO: WARNING: iostream: present but cannot be compiled" >&5 echo "$as_me: WARNING: iostream: present but cannot be compiled" >&2;} { echo "$as_me:$LINENO: WARNING: iostream: check for missing prerequisite headers?" >&5 echo "$as_me: WARNING: iostream: check for missing prerequisite headers?" >&2;} { echo "$as_me:$LINENO: WARNING: iostream: see the Autoconf documentation" >&5 echo "$as_me: WARNING: iostream: see the Autoconf documentation" >&2;} { echo "$as_me:$LINENO: WARNING: iostream: section \"Present But Cannot Be Compiled\"" >&5 echo "$as_me: WARNING: iostream: section \"Present But Cannot Be Compiled\"" >&2;} { echo "$as_me:$LINENO: WARNING: iostream: proceeding with the preprocessor's result" >&5 echo "$as_me: WARNING: iostream: proceeding with the preprocessor's result" >&2;} { echo "$as_me:$LINENO: WARNING: iostream: in the future, the compiler will take precedence" >&5 echo "$as_me: WARNING: iostream: in the future, the compiler will take precedence" >&2;} ( cat <<\_ASBOX ## ------------------------------------------- ## ## Report this to alex.omnievents@firetree.net ## ## ------------------------------------------- ## _ASBOX ) | sed "s/^/$as_me: WARNING: /" >&2 ;; esac echo "$as_me:$LINENO: checking for iostream" >&5 echo $ECHO_N "checking for iostream... $ECHO_C" >&6 if test "${ac_cv_header_iostream+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_cv_header_iostream=$ac_header_preproc fi echo "$as_me:$LINENO: result: $ac_cv_header_iostream" >&5 echo "${ECHO_T}$ac_cv_header_iostream" >&6 fi if test $ac_cv_header_iostream = yes; then cat >>confdefs.h <<\_ACEOF #define HAVE_IOSTREAM 1 _ACEOF else for ac_header in iostream.h do as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` if eval "test \"\${$as_ac_Header+set}\" = set"; then echo "$as_me:$LINENO: checking for $ac_header" >&5 echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 if eval "test \"\${$as_ac_Header+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 fi echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 else # Is the header compilable? echo "$as_me:$LINENO: checking $ac_header usability" >&5 echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default #include <$ac_header> _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_cxx_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_header_compiler=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_header_compiler=no fi rm -f conftest.err conftest.$ac_objext conftest.$ac_ext echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 echo "${ECHO_T}$ac_header_compiler" >&6 # Is the header present? echo "$as_me:$LINENO: checking $ac_header presence" >&5 echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include <$ac_header> _ACEOF if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_cxx_preproc_warn_flag ac_cpp_err=$ac_cpp_err$ac_cxx_werror_flag else ac_cpp_err= fi else ac_cpp_err=yes fi if test -z "$ac_cpp_err"; then ac_header_preproc=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_header_preproc=no fi rm -f conftest.err conftest.$ac_ext echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 echo "${ECHO_T}$ac_header_preproc" >&6 # So? What about this header? case $ac_header_compiler:$ac_header_preproc:$ac_cxx_preproc_warn_flag in yes:no: ) { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} ac_header_preproc=yes ;; no:yes:* ) { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} ( cat <<\_ASBOX ## ------------------------------------------- ## ## Report this to alex.omnievents@firetree.net ## ## ------------------------------------------- ## _ASBOX ) | sed "s/^/$as_me: WARNING: /" >&2 ;; esac echo "$as_me:$LINENO: checking for $ac_header" >&5 echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 if eval "test \"\${$as_ac_Header+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else eval "$as_ac_Header=\$ac_header_preproc" fi echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 fi if test `eval echo '${'$as_ac_Header'}'` = yes; then cat >>confdefs.h <<_ACEOF #define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF fi done fi if test "${ac_cv_header_iomanip+set}" = set; then echo "$as_me:$LINENO: checking for iomanip" >&5 echo $ECHO_N "checking for iomanip... $ECHO_C" >&6 if test "${ac_cv_header_iomanip+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 fi echo "$as_me:$LINENO: result: $ac_cv_header_iomanip" >&5 echo "${ECHO_T}$ac_cv_header_iomanip" >&6 else # Is the header compilable? echo "$as_me:$LINENO: checking iomanip usability" >&5 echo $ECHO_N "checking iomanip usability... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default #include _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_cxx_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_header_compiler=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_header_compiler=no fi rm -f conftest.err conftest.$ac_objext conftest.$ac_ext echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 echo "${ECHO_T}$ac_header_compiler" >&6 # Is the header present? echo "$as_me:$LINENO: checking iomanip presence" >&5 echo $ECHO_N "checking iomanip presence... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include _ACEOF if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_cxx_preproc_warn_flag ac_cpp_err=$ac_cpp_err$ac_cxx_werror_flag else ac_cpp_err= fi else ac_cpp_err=yes fi if test -z "$ac_cpp_err"; then ac_header_preproc=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_header_preproc=no fi rm -f conftest.err conftest.$ac_ext echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 echo "${ECHO_T}$ac_header_preproc" >&6 # So? What about this header? case $ac_header_compiler:$ac_header_preproc:$ac_cxx_preproc_warn_flag in yes:no: ) { echo "$as_me:$LINENO: WARNING: iomanip: accepted by the compiler, rejected by the preprocessor!" >&5 echo "$as_me: WARNING: iomanip: accepted by the compiler, rejected by the preprocessor!" >&2;} { echo "$as_me:$LINENO: WARNING: iomanip: proceeding with the compiler's result" >&5 echo "$as_me: WARNING: iomanip: proceeding with the compiler's result" >&2;} ac_header_preproc=yes ;; no:yes:* ) { echo "$as_me:$LINENO: WARNING: iomanip: present but cannot be compiled" >&5 echo "$as_me: WARNING: iomanip: present but cannot be compiled" >&2;} { echo "$as_me:$LINENO: WARNING: iomanip: check for missing prerequisite headers?" >&5 echo "$as_me: WARNING: iomanip: check for missing prerequisite headers?" >&2;} { echo "$as_me:$LINENO: WARNING: iomanip: see the Autoconf documentation" >&5 echo "$as_me: WARNING: iomanip: see the Autoconf documentation" >&2;} { echo "$as_me:$LINENO: WARNING: iomanip: section \"Present But Cannot Be Compiled\"" >&5 echo "$as_me: WARNING: iomanip: section \"Present But Cannot Be Compiled\"" >&2;} { echo "$as_me:$LINENO: WARNING: iomanip: proceeding with the preprocessor's result" >&5 echo "$as_me: WARNING: iomanip: proceeding with the preprocessor's result" >&2;} { echo "$as_me:$LINENO: WARNING: iomanip: in the future, the compiler will take precedence" >&5 echo "$as_me: WARNING: iomanip: in the future, the compiler will take precedence" >&2;} ( cat <<\_ASBOX ## ------------------------------------------- ## ## Report this to alex.omnievents@firetree.net ## ## ------------------------------------------- ## _ASBOX ) | sed "s/^/$as_me: WARNING: /" >&2 ;; esac echo "$as_me:$LINENO: checking for iomanip" >&5 echo $ECHO_N "checking for iomanip... $ECHO_C" >&6 if test "${ac_cv_header_iomanip+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_cv_header_iomanip=$ac_header_preproc fi echo "$as_me:$LINENO: result: $ac_cv_header_iomanip" >&5 echo "${ECHO_T}$ac_cv_header_iomanip" >&6 fi if test $ac_cv_header_iomanip = yes; then cat >>confdefs.h <<\_ACEOF #define HAVE_IOMANIP 1 _ACEOF else for ac_header in iomanip.h do as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` if eval "test \"\${$as_ac_Header+set}\" = set"; then echo "$as_me:$LINENO: checking for $ac_header" >&5 echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 if eval "test \"\${$as_ac_Header+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 fi echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 else # Is the header compilable? echo "$as_me:$LINENO: checking $ac_header usability" >&5 echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default #include <$ac_header> _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_cxx_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_header_compiler=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_header_compiler=no fi rm -f conftest.err conftest.$ac_objext conftest.$ac_ext echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 echo "${ECHO_T}$ac_header_compiler" >&6 # Is the header present? echo "$as_me:$LINENO: checking $ac_header presence" >&5 echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include <$ac_header> _ACEOF if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_cxx_preproc_warn_flag ac_cpp_err=$ac_cpp_err$ac_cxx_werror_flag else ac_cpp_err= fi else ac_cpp_err=yes fi if test -z "$ac_cpp_err"; then ac_header_preproc=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_header_preproc=no fi rm -f conftest.err conftest.$ac_ext echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 echo "${ECHO_T}$ac_header_preproc" >&6 # So? What about this header? case $ac_header_compiler:$ac_header_preproc:$ac_cxx_preproc_warn_flag in yes:no: ) { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} ac_header_preproc=yes ;; no:yes:* ) { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} ( cat <<\_ASBOX ## ------------------------------------------- ## ## Report this to alex.omnievents@firetree.net ## ## ------------------------------------------- ## _ASBOX ) | sed "s/^/$as_me: WARNING: /" >&2 ;; esac echo "$as_me:$LINENO: checking for $ac_header" >&5 echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 if eval "test \"\${$as_ac_Header+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else eval "$as_ac_Header=\$ac_header_preproc" fi echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 fi if test `eval echo '${'$as_ac_Header'}'` = yes; then cat >>confdefs.h <<_ACEOF #define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF fi done fi for ac_header in cmath do as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` if eval "test \"\${$as_ac_Header+set}\" = set"; then echo "$as_me:$LINENO: checking for $ac_header" >&5 echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 if eval "test \"\${$as_ac_Header+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 fi echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 else # Is the header compilable? echo "$as_me:$LINENO: checking $ac_header usability" >&5 echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default #include <$ac_header> _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_cxx_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_header_compiler=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_header_compiler=no fi rm -f conftest.err conftest.$ac_objext conftest.$ac_ext echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 echo "${ECHO_T}$ac_header_compiler" >&6 # Is the header present? echo "$as_me:$LINENO: checking $ac_header presence" >&5 echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include <$ac_header> _ACEOF if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_cxx_preproc_warn_flag ac_cpp_err=$ac_cpp_err$ac_cxx_werror_flag else ac_cpp_err= fi else ac_cpp_err=yes fi if test -z "$ac_cpp_err"; then ac_header_preproc=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_header_preproc=no fi rm -f conftest.err conftest.$ac_ext echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 echo "${ECHO_T}$ac_header_preproc" >&6 # So? What about this header? case $ac_header_compiler:$ac_header_preproc:$ac_cxx_preproc_warn_flag in yes:no: ) { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} ac_header_preproc=yes ;; no:yes:* ) { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} ( cat <<\_ASBOX ## ------------------------------------------- ## ## Report this to alex.omnievents@firetree.net ## ## ------------------------------------------- ## _ASBOX ) | sed "s/^/$as_me: WARNING: /" >&2 ;; esac echo "$as_me:$LINENO: checking for $ac_header" >&5 echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 if eval "test \"\${$as_ac_Header+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else eval "$as_ac_Header=\$ac_header_preproc" fi echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 fi if test `eval echo '${'$as_ac_Header'}'` = yes; then cat >>confdefs.h <<_ACEOF #define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF fi done echo "$as_me:$LINENO: checking for C++ iostream in namespace std" >&5 echo $ECHO_N "checking for C++ iostream in namespace std... $ECHO_C" >&6 if test "${ac_cv_cxx_have_std_iostream+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_cv_cxx_have_std_iostream=no ac_cv_cxx_need_use_std_iostream=no if test "x$ac_cv_cxx_namespaces" = xyes; then ac_ext=cc 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. */ #ifdef HAVE_IOSTREAM #include #else #include #endif int main () { std::cout<<"Hello World"<&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_cxx_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_cxx_have_std_iostream=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -f conftest.err conftest.$ac_objext conftest.$ac_ext cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #define __USE_STD_IOSTREAM 1 #ifdef HAVE_IOSTREAM #include #else #include #endif int main () { std::cout<<"Hello World"<&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_cxx_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_cxx_have_std_iostream=yes;ac_cv_cxx_need_use_std_iostream=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -f conftest.err conftest.$ac_objext conftest.$ac_ext ac_ext=cc 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 fi fi echo "$as_me:$LINENO: result: $ac_cv_cxx_have_std_iostream" >&5 echo "${ECHO_T}$ac_cv_cxx_have_std_iostream" >&6 if test "$ac_cv_cxx_have_std_iostream" = yes; then cat >>confdefs.h <<\_ACEOF #define HAVE_STD_IOSTREAM 1 _ACEOF fi if test "$ac_cv_cxx_need_use_std_iostream" = yes; then cat >>confdefs.h <<\_ACEOF #define __USE_STD_IOSTREAM 1 _ACEOF fi echo "$as_me:$LINENO: checking for C++ Standard Template Library in namespace std." >&5 echo $ECHO_N "checking for C++ Standard Template Library in namespace std.... $ECHO_C" >&6 if test "${ac_cv_cxx_have_std_stl+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_cv_cxx_have_std_stl=no if test "x$ac_cv_cxx_namespaces" = xyes; then ac_ext=cc 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 int main () { std::list foo;return 0; ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_cxx_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_cxx_have_std_stl=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -f conftest.err conftest.$ac_objext conftest.$ac_ext ac_ext=cc 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 fi fi echo "$as_me:$LINENO: result: $ac_cv_cxx_have_std_stl" >&5 echo "${ECHO_T}$ac_cv_cxx_have_std_stl" >&6 if test "$ac_cv_cxx_have_std_stl" = yes; then cat >>confdefs.h <<\_ACEOF #define HAVE_STD_STL 1 _ACEOF fi echo "$as_me:$LINENO: checking for fstream::attach()" >&5 echo $ECHO_N "checking for fstream::attach()... $ECHO_C" >&6 if test "${ac_cv_cxx_have_fstream_attach+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_cv_cxx_have_fstream_attach=no ac_ext=cc 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. */ #ifdef HAVE_IOSTREAM #include #else #include #endif #ifdef HAVE_STD_IOSTREAM using namespace std; #endif int main () { int fd=0;ofstream s;s.attach(fd); ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_cxx_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_cxx_have_fstream_attach=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -f conftest.err conftest.$ac_objext conftest.$ac_ext ac_ext=cc 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 fi echo "$as_me:$LINENO: result: $ac_cv_cxx_have_fstream_attach" >&5 echo "${ECHO_T}$ac_cv_cxx_have_fstream_attach" >&6 if test "$ac_cv_cxx_have_fstream_attach" = yes; then cat >>confdefs.h <<\_ACEOF #define HAVE_FSTREAM_ATTACH 1 _ACEOF fi echo "$as_me:$LINENO: checking for fstream::open()" >&5 echo $ECHO_N "checking for fstream::open()... $ECHO_C" >&6 if test "${ac_cv_cxx_have_fstream_open+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_cv_cxx_have_fstream_open=no ac_cv_cxx_fstream_open_prot=no ac_ext=cc 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 # Try with 2 parameters cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #ifdef HAVE_IOSTREAM #include #else #include #endif #ifdef HAVE_STD_IOSTREAM using namespace std; #endif int main () { ofstream s;s.open("conftest.txt",ios::out|ios::trunc); ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_cxx_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_cxx_have_fstream_open=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -f conftest.err conftest.$ac_objext conftest.$ac_ext # Try with mode parameter cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #ifdef HAVE_IOSTREAM #include #else #include #endif #ifdef HAVE_STD_IOSTREAM using namespace std; #endif int main () { ofstream s;s.open("conftest.txt",ios::out|ios::trunc,0666); ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_cxx_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_cxx_fstream_open_prot=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -f conftest.err conftest.$ac_objext conftest.$ac_ext ac_ext=cc 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 fi echo "$as_me:$LINENO: result: $ac_cv_cxx_have_fstream_open" >&5 echo "${ECHO_T}$ac_cv_cxx_have_fstream_open" >&6 if test "$ac_cv_cxx_have_fstream_open" = yes; then cat >>confdefs.h <<\_ACEOF #define HAVE_FSTREAM_OPEN 1 _ACEOF fi if test "$ac_cv_cxx_fstream_open_prot" = yes; then cat >>confdefs.h <<\_ACEOF #define FSTREAM_OPEN_PROT 1 _ACEOF fi echo "$as_me:$LINENO: checking whether the compiler recognizes bool as a built-in type" >&5 echo $ECHO_N "checking whether the compiler recognizes bool as a built-in type... $ECHO_C" >&6 if test "${ac_cv_cxx_bool+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_ext=cc 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. */ int f(int x){return 1;} int f(char x){return 1;} int f(bool x){return 1;} int main () { bool b = true; return f(b); ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_cxx_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_cxx_bool=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_cxx_bool=no fi rm -f conftest.err conftest.$ac_objext conftest.$ac_ext ac_ext=cc 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 fi echo "$as_me:$LINENO: result: $ac_cv_cxx_bool" >&5 echo "${ECHO_T}$ac_cv_cxx_bool" >&6 if test "$ac_cv_cxx_bool" = yes; then cat >>confdefs.h <<\_ACEOF #define HAVE_BOOL _ACEOF fi echo "$as_me:$LINENO: checking whether C++ compiler accepts the -ptr option" >&5 echo $ECHO_N "checking whether C++ compiler accepts the -ptr option... $ECHO_C" >&6 if test "${ac_cv_cxx_ptr+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_cv_cxx_ptr=no if test "x$ac_cv_cxx_compiler_gnu" != xyes; then ac_ext=cc 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 # Sometime failed C++ compiles can leave trash in the template repository. # Just clean them all away. rm -rf ./SunWS_cache # Solaris/CC rm -rf ./.cxx_repository # Tru64/cxx # ...add more here. ac_cxx_ptr_save_cxxflags="$CXXFLAGS" ac_cxx_ptr_decl="template T m(T v){return v*2;}" ac_cxx_ptr_prog="int x=2; int y=m(x);" ac_cv_cxx_ptr="-ptr" # Try it with no space after -ptr CXXFLAGS="$ac_cxx_ptr_save_cxxflags $ac_cv_cxx_ptr./confrepository.d" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_cxx_ptr_decl int main () { $ac_cxx_ptr_prog ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_cxx_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then : else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_cxx_ptr=no fi rm -f conftest.err conftest.$ac_objext conftest.$ac_ext test -d confrepository.d || ac_cv_cxx_ptr=no if test "x$ac_cv_cxx_ptr" = xno; then ac_cv_cxx_ptr="-ptr " # Now try a space before the parameter. CXXFLAGS="$ac_cxx_ptr_save_cxxflags $ac_cv_cxx_ptr./confrepository.d" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_cxx_ptr_decl int main () { $ac_cxx_ptr_prog ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_cxx_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then : else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_cxx_ptr=no fi rm -f conftest.err conftest.$ac_objext conftest.$ac_ext test -d confrepository.d || ac_cv_cxx_ptr=no fi # Clear away any confrepository.d that we might have made. rm -rf ./confrepository.d CXXFLAGS="$ac_cxx_ptr_save_cxxflags" ac_ext=cc 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 fi fi echo "$as_me:$LINENO: result: $ac_cv_cxx_ptr" >&5 echo "${ECHO_T}$ac_cv_cxx_ptr" >&6 if test "x$ac_cv_cxx_ptr" != xno then CXXFLAGS_PTR=$ac_cv_cxx_ptr fi # Make sure we can run config.sub. $ac_config_sub sun4 >/dev/null 2>&1 || { { echo "$as_me:$LINENO: error: cannot run $ac_config_sub" >&5 echo "$as_me: error: cannot run $ac_config_sub" >&2;} { (exit 1); exit 1; }; } echo "$as_me:$LINENO: checking build system type" >&5 echo $ECHO_N "checking build system type... $ECHO_C" >&6 if test "${ac_cv_build+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_cv_build_alias=$build_alias test -z "$ac_cv_build_alias" && ac_cv_build_alias=`$ac_config_guess` test -z "$ac_cv_build_alias" && { { echo "$as_me:$LINENO: error: cannot guess build type; you must specify one" >&5 echo "$as_me: error: cannot guess build type; you must specify one" >&2;} { (exit 1); exit 1; }; } ac_cv_build=`$ac_config_sub $ac_cv_build_alias` || { { echo "$as_me:$LINENO: error: $ac_config_sub $ac_cv_build_alias failed" >&5 echo "$as_me: error: $ac_config_sub $ac_cv_build_alias failed" >&2;} { (exit 1); exit 1; }; } fi echo "$as_me:$LINENO: result: $ac_cv_build" >&5 echo "${ECHO_T}$ac_cv_build" >&6 build=$ac_cv_build build_cpu=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` build_vendor=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` build_os=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` echo "$as_me:$LINENO: checking host system type" >&5 echo $ECHO_N "checking host system type... $ECHO_C" >&6 if test "${ac_cv_host+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_cv_host_alias=$host_alias test -z "$ac_cv_host_alias" && ac_cv_host_alias=$ac_cv_build_alias ac_cv_host=`$ac_config_sub $ac_cv_host_alias` || { { echo "$as_me:$LINENO: error: $ac_config_sub $ac_cv_host_alias failed" >&5 echo "$as_me: error: $ac_config_sub $ac_cv_host_alias failed" >&2;} { (exit 1); exit 1; }; } fi echo "$as_me:$LINENO: result: $ac_cv_host" >&5 echo "${ECHO_T}$ac_cv_host" >&6 host=$ac_cv_host host_cpu=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` host_vendor=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` host_os=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` echo "$as_me:$LINENO: checking C++ compiler identity" >&5 echo $ECHO_N "checking C++ compiler identity... $ECHO_C" >&6 if test "${ac_cv_cxx_identity+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_cv_cxx_identity="unknown" cat > conftest.$ac_ext < int _result=1; void set(const char* vendor,const char* compiler,int major,int minor,int micro) { switch(_result) { case 0: _result=2; break; case 1: _result=0; break; default: _result=2; } printf("%s-%s-%i-%i-%i\n",vendor,compiler,major,minor,micro); } #define HEXN(X,N) ((X>>(4*N))&0xF) int main(int,char**) { #ifdef __GNUG__ set("GNU","g++",__GNUC__,__GNUC_MINOR__,0); #endif #ifdef __SUNPRO_CC set("Sun","CC",HEXN(__SUNPRO_CC,2),HEXN(__SUNPRO_CC,1),HEXN(__SUNPRO_CC,0)); #endif #ifdef __xlC__ set("IBM","xlC",10*HEXN(__xlC__,3)+HEXN(__xlC__,2),10*HEXN(__xlC__,1)+HEXN(__xlC__,0),0); #else # if defined(_AIX) && !defined(__GNUC__) set("IBM","xlC",0,0,0); # endif #endif #ifdef __DECCXX_VER set("DEC","cxx",__DECCXX_VER/10000000,__DECCXX_VER/100000%100,__DECCXX_VER%100); #endif #ifdef __HP_aCC set("HP","aCC",__HP_aCC/10000,__HP_aCC/100%100,__HP_aCC%100); #endif #ifdef __KCC_VERSION set("Kai","KCC",HEXN(__KCC_VERSION,3),HEXN(__KCC_VERSION,2),__KCC_VERSION&0xFF); #endif #ifdef _MSC_VER set("Microsoft","VC++",_MSC_VER>>8,_MSC_VER&0xFF,0); #endif return _result; } EOF if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } \ && test -s conftest${ac_exeext} \ && { ac_try='./conftest${ac_exeext} >/dev/null' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } then ac_cv_cxx_identity=`./conftest${ac_exeext}` fi if test $ac_cv_cxx_identity = "unknown"; then echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 else : fi rm -f conftest* fi echo "$as_me:$LINENO: result: $ac_cv_cxx_identity" >&5 echo "${ECHO_T}$ac_cv_cxx_identity" >&6 echo "$as_me:$LINENO: checking for C++ position independent code flag" >&5 echo $ECHO_N "checking for C++ position independent code flag... $ECHO_C" >&6 if test "${ac_cv_cxx_pic_flag+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_cxx_pic_save_cxxflags="$CXXFLAGS" ac_cv_cxx_pic_flag="none needed" case "$ac_cv_cxx_identity" in GNU-g++-*-*-*) ac_cv_cxx_pic_flag="-fPIC" ;; HP-aCC-*-*-*) ac_cv_cxx_pic_flag="+Z" ;; Kai-KCC-*-*-*) ac_cv_cxx_pic_flag="+Z" ;; *-CC-*-*-*) ac_cv_cxx_pic_flag="-KPIC" ;; DEC-cxx-*-*-*) ac_cv_cxx_pic_flag="none needed" ;; IBM-xlC-*-*-*) ac_cv_cxx_pic_flag="none needed" ;; esac # Finish up by adding the PIC flag to CXXFLAGS if test "$ac_cv_cxx_pic_flag" = "none needed"; then CXXFLAGS="$ac_cxx_pic_save_cxxflags" else CXXFLAGS="$ac_cxx_pic_save_cxxflags $ac_cv_cxx_pic_flag" fi fi echo "$as_me:$LINENO: result: $ac_cv_cxx_pic_flag" >&5 echo "${ECHO_T}$ac_cv_cxx_pic_flag" >&6 echo "$as_me:$LINENO: checking for C++ RTTI flag" >&5 echo $ECHO_N "checking for C++ RTTI flag... $ECHO_C" >&6 if test "${ac_cv_cxx_rtti_flag+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_cxx_rtti_save_cxxflags="$CXXFLAGS" ac_cv_cxx_rtti_flag="none needed" case "$ac_cv_cxx_identity" in GNU-g++-*-*-*) ac_cv_cxx_rtti_flag="on by default" ;; # -fno-rtti HP-aCC-*-*-*) ac_cv_cxx_rtti_flag="none needed" ;; *-CC-*-*-*) ac_cv_cxx_rtti_flag="on by default" ;; DEC-cxx-*-*-*) ac_cv_cxx_rtti_flag="on by default" ;; # -[no]rtti IBM-xlC-*-*-*) ac_cv_cxx_rtti_flag="-qrtti=all" ;; esac # Finish up by adding the PIC flag to CXXFLAGS if test "$ac_cv_cxx_rtti_flag" = "none needed" \ -o "$ac_cv_cxx_rtti_flag" = "on by default" then CXXFLAGS="$ac_cxx_rtti_save_cxxflags" else CXXFLAGS="$ac_cxx_rtti_save_cxxflags $ac_cv_cxx_rtti_flag" fi fi echo "$as_me:$LINENO: result: $ac_cv_cxx_rtti_flag" >&5 echo "${ECHO_T}$ac_cv_cxx_rtti_flag" >&6 echo "$as_me:$LINENO: checking for C++ static archiver" >&5 echo $ECHO_N "checking for C++ static archiver... $ECHO_C" >&6 if test "${ac_cv_prog_cxx_ar+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_cv_prog_cxx_ar="no" ac_prog_cxx_ar_save_libs="$LIBS" # Sometime failed C++ compiles can leave trash in the template repository. # Just clean them all away. rm -rf ./SunWS_cache # Solaris/CC rm -rf ./.cxx_repository # Tru64/cxx # ...add more here. ac_ext=cc 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 # Make object files a.o & b.o cat > conftest.$ac_ext <&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && test -s a.$ac_objext; then CXXFLAGS="$ac_save_cxxflags" rm -f conftest* cat > conftest.$ac_ext <&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && test -s b.$ac_objext; then CXXFLAGS="$ac_save_cxxflags" rm -f conftest* # Files a.o & b.o now exist, try to build them into a static library. # Try the more esoteric ones first, and then finally test for 'ar'. LIBS="$ac_prog_cxx_ar_save_libs -L. -lconftest" # Use the compiler's ID to make an initial guess. case "$ac_cv_cxx_identity" in GNU-g++-*-*-*) ac_prog_cxx_ar="ar cqs" ;; HP-aCC-*-*-*) ac_prog_cxx_ar="ar cqs" ;; Kai-KCC-*-*-*) ac_prog_cxx_ar="ar cqs" ;; Sun-CC-*-*-*) ac_prog_cxx_ar="${CXX-g++} -xar -o" ;; SGI-CC-*-*-*) ac_prog_cxx_ar="${CXX-g++} -ar -o" ;; DEC-cxx-*-*-*) ac_prog_cxx_ar="ar cqs" ;; IBM-xlC-*-*-*) ac_prog_cxx_ar="ar cqs" ;; esac if { ac_try='$ac_prog_cxx_ar libconftest.a a.$ac_objext b.$ac_objext >/dev/null 2>/dev/null' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int b(); int main () { return(b()==456?0:1) ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_cxx_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_prog_cxx_ar="$ac_prog_cxx_ar" else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi rm -f libconftest.a # Hmmm...: ar cq (may be inefficient without a subsequent 'ranlib') if test "$ac_cv_prog_cxx_ar" = no; then if { ac_try='ar cq libconftest.a a.$ac_objext b.$ac_objext >/dev/null 2>/dev/null' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int b(); int main () { return(b()==456?0:1) ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_cxx_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_prog_cxx_ar="ar cq" else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 : fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi rm -f libconftest.a fi else echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 CXXFLAGS="$ac_save_cxxflags" rm -f conftest* "b.$ac_objext" fi else echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 CXXFLAGS="$ac_save_cxxflags" rm -f conftest* "a.$ac_objext" fi rm -f a.$ac_objext b.$ac_objext ac_ext=cc 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 LIBS="$ac_prog_cxx_ar_save_libs" fi echo "$as_me:$LINENO: result: $ac_cv_prog_cxx_ar" >&5 echo "${ECHO_T}$ac_cv_prog_cxx_ar" >&6 if test "$ac_cv_prog_cxx_ar" != no then CXX_AR="$ac_cv_prog_cxx_ar" fi echo "$as_me:$LINENO: checking for C++ shared library linker" >&5 echo $ECHO_N "checking for C++ shared library linker... $ECHO_C" >&6 if test "${ac_cv_prog_cxx_link_so_lib+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_cv_prog_cxx_link_so_lib="no" case "$host" in *-*-aix*) ac_prog_cxx_soext=".a";; *-*-darwin*) ac_prog_cxx_soext=".dylib";; *-*-hpux*) ac_prog_cxx_soext=".sl";; *-*-*) ac_prog_cxx_soext=".so";; esac soname="libconftest$ac_prog_cxx_soext" # Sometime failed C++ compiles can leave trash in the template repository. # Just clean them all away. rm -rf ./SunWS_cache # Solaris/CC rm -rf ./.cxx_repository # Tru64/cxx # ...add more here. ac_ext=cc 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 case "$ac_cv_cxx_identity" in GNU-g++-*-*-*) # GNU/g++ options vary with the platform: case "$host" in *-*-darwin*) ac_sobuild="${CXX-g++} -dynamiclib -install_name $soname -o " ;; *-*-solaris*) ac_sobuild="${CXX-g++} -shared -Wl,-h,$soname -o " ;; *-*-*) ac_sobuild="${CXX-g++} -shared -Wl,-soname,$soname -o " ;; esac ;; HP-aCC-*-*-*) ac_sobuild="${CXX-g++} -b -Wl,+h$soname -o " ;; Kai-KCC-*-*-*) ac_sobuild="${CXX-g++} --soname $soname -o " ;; *-CC-*-*-*) ac_sobuild="${CXX-g++} -G -h $soname -o " ;; SGI-CC-*-*-*) ac_sobuild="${CXX-g++} -shared -soname $soname -o " ;; DEC-cxx-*-*-*) ac_sobuild="${CXX-g++} -shared -soname $soname -o " ;; IBM-xlC-*-*-*) ac_sobuild="${CXX-g++} -G -o " ;; esac case "$ac_cv_cxx_identity" in GNU-g++-*-*-*) # GNU/g++ options vary with the platform: case "$host" in *-*-darwin*) ac_soflags="-dynamic" ;; # -dynamic is the default *-*-*) ac_soflags="-Wl,-Bdynamic" ;; esac ;; HP-aCC-*-*-*) ac_soflags="-Wl,-a,shared_archive" ;; Kai-KCC-*-*-*) ;; # ?? *-CC-*-*-*) ac_soflags="-Bdynamic" ;; DEC-cxx-*-*-*) ac_soflags="-call_shared" ;; IBM-xlC-*-*-*) ac_soflags="-bdynamic -brtl" ;; esac # Make object files a.o, b.o & c.o cat > conftest.$ac_ext <&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && test -s a.$ac_objext; then CXXFLAGS="$ac_save_cxxflags" rm -f conftest* : else echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 CXXFLAGS="$ac_save_cxxflags" rm -f conftest* "a.$ac_objext" : fi cat > conftest.$ac_ext <&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && test -s b.$ac_objext; then CXXFLAGS="$ac_save_cxxflags" rm -f conftest* : else echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 CXXFLAGS="$ac_save_cxxflags" rm -f conftest* "b.$ac_objext" : fi cat > conftest.$ac_ext <&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && test -s c.$ac_objext; then CXXFLAGS="$ac_save_cxxflags" rm -f conftest* : else echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 CXXFLAGS="$ac_save_cxxflags" rm -f conftest* "c.$ac_objext" : fi # Try various ways of building shared object libraries ac_sothere="" # We assume that a.o b.o & c.o already exist. rm -f $soname ac_sothere=yes if { ac_try='$ac_sobuild $soname.1 a.$ac_objext b.$ac_objext >/dev/null 2>/dev/null' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } \ && test -s $soname.1 then { ac_try='$ac_sobuild $soname.2 a.$ac_objext c.$ac_objext >/dev/null 2>/dev/null' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } ac_sothere=yes else : fi if test "$ac_sothere" = yes; then ac_save_libs="$LIBS" LIBS="$ac_save_libs -L. -lconftest" # Try various ways of running dynamic executables. ac_soworks="" if test -z "$ac_soworks"; then # Linux, solaris, SGI, HP-UX(64bit), Tru64, AIX ac_sopath="LD_LIBRARY_PATH" ac_save_ldflags="$LDFLAGS" LDFLAGS="$ac_save_ldflags $ac_soflags" ac_dollar_var="\$$ac_sopath" ac_save_ldpath=`eval echo $ac_dollar_var` eval $ac_sopath=".:$ac_save_ldpath" eval export $ac_sopath ac_cxx_so_works=no rm -f $soname ln -s $soname.1 $soname if test "$cross_compiling" = yes; then { { echo "$as_me:$LINENO: error: cannot run test program while cross compiling See \`config.log' for more details." >&5 echo "$as_me: error: cannot run test program while cross compiling See \`config.log' for more details." >&2;} { (exit 1); exit 1; }; } else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int b();int main(int,char**){return(b()==456?0:1);} _ACEOF rm -f conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='./conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then rm -f $soname ln -s $soname.2 $soname if (./conftest$ac_exeext; exit); then : else # Success - ./conftest returned 1 this time, so changing the # library changed the behaviour of the exe! ac_cxx_so_works=yes fi else echo "$as_me: program exited with status $ac_status" >&5 echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ( exit $ac_status ) : fi rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi LDFLAGS="$ac_save_ldflags" eval $ac_sopath="$ac_save_ldpath" eval export $ac_sopath if test "$ac_cxx_so_works" = yes; then ac_soworks=yes else : fi fi if test -z "$ac_soworks"; then # solaris(64bit) ac_sopath="LD_LIBRARY_PATH_64" ac_save_ldflags="$LDFLAGS" LDFLAGS="$ac_save_ldflags $ac_soflags" ac_dollar_var="\$$ac_sopath" ac_save_ldpath=`eval echo $ac_dollar_var` eval $ac_sopath=".:$ac_save_ldpath" eval export $ac_sopath ac_cxx_so_works=no rm -f $soname ln -s $soname.1 $soname if test "$cross_compiling" = yes; then { { echo "$as_me:$LINENO: error: cannot run test program while cross compiling See \`config.log' for more details." >&5 echo "$as_me: error: cannot run test program while cross compiling See \`config.log' for more details." >&2;} { (exit 1); exit 1; }; } else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int b();int main(int,char**){return(b()==456?0:1);} _ACEOF rm -f conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='./conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then rm -f $soname ln -s $soname.2 $soname if (./conftest$ac_exeext; exit); then : else # Success - ./conftest returned 1 this time, so changing the # library changed the behaviour of the exe! ac_cxx_so_works=yes fi else echo "$as_me: program exited with status $ac_status" >&5 echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ( exit $ac_status ) : fi rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi LDFLAGS="$ac_save_ldflags" eval $ac_sopath="$ac_save_ldpath" eval export $ac_sopath if test "$ac_cxx_so_works" = yes; then ac_soworks=yes else : fi fi if test -z "$ac_soworks"; then # HP-UX(32bit) ac_sopath="SHLIB_PATH" ac_save_ldflags="$LDFLAGS" LDFLAGS="$ac_save_ldflags $ac_soflags" ac_dollar_var="\$$ac_sopath" ac_save_ldpath=`eval echo $ac_dollar_var` eval $ac_sopath=".:$ac_save_ldpath" eval export $ac_sopath ac_cxx_so_works=no rm -f $soname ln -s $soname.1 $soname if test "$cross_compiling" = yes; then { { echo "$as_me:$LINENO: error: cannot run test program while cross compiling See \`config.log' for more details." >&5 echo "$as_me: error: cannot run test program while cross compiling See \`config.log' for more details." >&2;} { (exit 1); exit 1; }; } else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int b();int main(int,char**){return(b()==456?0:1);} _ACEOF rm -f conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='./conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then rm -f $soname ln -s $soname.2 $soname if (./conftest$ac_exeext; exit); then : else # Success - ./conftest returned 1 this time, so changing the # library changed the behaviour of the exe! ac_cxx_so_works=yes fi else echo "$as_me: program exited with status $ac_status" >&5 echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ( exit $ac_status ) : fi rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi LDFLAGS="$ac_save_ldflags" eval $ac_sopath="$ac_save_ldpath" eval export $ac_sopath if test "$ac_cxx_so_works" = yes; then ac_soworks=yes else : fi fi if test -z "$ac_soworks"; then # Darwin/MacOSX ac_sopath="DYLD_LIBRARY_PATH" ac_save_ldflags="$LDFLAGS" LDFLAGS="$ac_save_ldflags $ac_soflags" ac_dollar_var="\$$ac_sopath" ac_save_ldpath=`eval echo $ac_dollar_var` eval $ac_sopath=".:$ac_save_ldpath" eval export $ac_sopath ac_cxx_so_works=no rm -f $soname ln -s $soname.1 $soname if test "$cross_compiling" = yes; then { { echo "$as_me:$LINENO: error: cannot run test program while cross compiling See \`config.log' for more details." >&5 echo "$as_me: error: cannot run test program while cross compiling See \`config.log' for more details." >&2;} { (exit 1); exit 1; }; } else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int b();int main(int,char**){return(b()==456?0:1);} _ACEOF rm -f conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='./conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then rm -f $soname ln -s $soname.2 $soname if (./conftest$ac_exeext; exit); then : else # Success - ./conftest returned 1 this time, so changing the # library changed the behaviour of the exe! ac_cxx_so_works=yes fi else echo "$as_me: program exited with status $ac_status" >&5 echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ( exit $ac_status ) : fi rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi LDFLAGS="$ac_save_ldflags" eval $ac_sopath="$ac_save_ldpath" eval export $ac_sopath if test "$ac_cxx_so_works" = yes; then ac_soworks=yes else : fi fi if test -z "$ac_soworks"; then # SGI(32bit) ac_sopath="LD_LIBRARYN32_PATH" ac_save_ldflags="$LDFLAGS" LDFLAGS="$ac_save_ldflags $ac_soflags" ac_dollar_var="\$$ac_sopath" ac_save_ldpath=`eval echo $ac_dollar_var` eval $ac_sopath=".:$ac_save_ldpath" eval export $ac_sopath ac_cxx_so_works=no rm -f $soname ln -s $soname.1 $soname if test "$cross_compiling" = yes; then { { echo "$as_me:$LINENO: error: cannot run test program while cross compiling See \`config.log' for more details." >&5 echo "$as_me: error: cannot run test program while cross compiling See \`config.log' for more details." >&2;} { (exit 1); exit 1; }; } else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int b();int main(int,char**){return(b()==456?0:1);} _ACEOF rm -f conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='./conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then rm -f $soname ln -s $soname.2 $soname if (./conftest$ac_exeext; exit); then : else # Success - ./conftest returned 1 this time, so changing the # library changed the behaviour of the exe! ac_cxx_so_works=yes fi else echo "$as_me: program exited with status $ac_status" >&5 echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ( exit $ac_status ) : fi rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi LDFLAGS="$ac_save_ldflags" eval $ac_sopath="$ac_save_ldpath" eval export $ac_sopath if test "$ac_cxx_so_works" = yes; then ac_soworks=yes else : fi fi if test -z "$ac_soworks"; then # SGI(64bit) ac_sopath="LD_LIBRARYN64_PATH" ac_save_ldflags="$LDFLAGS" LDFLAGS="$ac_save_ldflags $ac_soflags" ac_dollar_var="\$$ac_sopath" ac_save_ldpath=`eval echo $ac_dollar_var` eval $ac_sopath=".:$ac_save_ldpath" eval export $ac_sopath ac_cxx_so_works=no rm -f $soname ln -s $soname.1 $soname if test "$cross_compiling" = yes; then { { echo "$as_me:$LINENO: error: cannot run test program while cross compiling See \`config.log' for more details." >&5 echo "$as_me: error: cannot run test program while cross compiling See \`config.log' for more details." >&2;} { (exit 1); exit 1; }; } else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int b();int main(int,char**){return(b()==456?0:1);} _ACEOF rm -f conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='./conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then rm -f $soname ln -s $soname.2 $soname if (./conftest$ac_exeext; exit); then : else # Success - ./conftest returned 1 this time, so changing the # library changed the behaviour of the exe! ac_cxx_so_works=yes fi else echo "$as_me: program exited with status $ac_status" >&5 echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ( exit $ac_status ) : fi rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi LDFLAGS="$ac_save_ldflags" eval $ac_sopath="$ac_save_ldpath" eval export $ac_sopath if test "$ac_cxx_so_works" = yes; then ac_soworks=yes else : fi fi LIBS="$ac_save_libs" fi if test "x$ac_soworks" = xyes; then ac_cv_prog_cxx_link_so_lib="`echo $ac_sobuild|sed s/$soname/\\$\\$soname/`" LDFLAGS="$LDFLAGS $ac_soflags" fi rm -f a.$ac_objext b.$ac_objext c.$ac_objext libconftest* ac_ext=cc 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 fi echo "$as_me:$LINENO: result: $ac_cv_prog_cxx_link_so_lib" >&5 echo "${ECHO_T}$ac_cv_prog_cxx_link_so_lib" >&6 if test "$ac_cv_prog_cxx_link_so_lib" != no then CXX_LINK_SO_LIB="$ac_cv_prog_cxx_link_so_lib" LD_LIBRARY_PATH_NAME=$ac_sopath SOEXT=$ac_prog_cxx_soext fi # Checks for library functions. for ac_header in stdlib.h do as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` if eval "test \"\${$as_ac_Header+set}\" = set"; then echo "$as_me:$LINENO: checking for $ac_header" >&5 echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 if eval "test \"\${$as_ac_Header+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 fi echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 else # Is the header compilable? echo "$as_me:$LINENO: checking $ac_header usability" >&5 echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default #include <$ac_header> _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_cxx_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_header_compiler=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_header_compiler=no fi rm -f conftest.err conftest.$ac_objext conftest.$ac_ext echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 echo "${ECHO_T}$ac_header_compiler" >&6 # Is the header present? echo "$as_me:$LINENO: checking $ac_header presence" >&5 echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include <$ac_header> _ACEOF if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_cxx_preproc_warn_flag ac_cpp_err=$ac_cpp_err$ac_cxx_werror_flag else ac_cpp_err= fi else ac_cpp_err=yes fi if test -z "$ac_cpp_err"; then ac_header_preproc=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_header_preproc=no fi rm -f conftest.err conftest.$ac_ext echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 echo "${ECHO_T}$ac_header_preproc" >&6 # So? What about this header? case $ac_header_compiler:$ac_header_preproc:$ac_cxx_preproc_warn_flag in yes:no: ) { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} ac_header_preproc=yes ;; no:yes:* ) { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} ( cat <<\_ASBOX ## ------------------------------------------- ## ## Report this to alex.omnievents@firetree.net ## ## ------------------------------------------- ## _ASBOX ) | sed "s/^/$as_me: WARNING: /" >&2 ;; esac echo "$as_me:$LINENO: checking for $ac_header" >&5 echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 if eval "test \"\${$as_ac_Header+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else eval "$as_ac_Header=\$ac_header_preproc" fi echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 fi if test `eval echo '${'$as_ac_Header'}'` = yes; then cat >>confdefs.h <<_ACEOF #define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF fi done echo "$as_me:$LINENO: checking for GNU libc compatible malloc" >&5 echo $ECHO_N "checking for GNU libc compatible malloc... $ECHO_C" >&6 if test "${ac_cv_func_malloc_0_nonnull+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test "$cross_compiling" = yes; then ac_cv_func_malloc_0_nonnull=no else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #if STDC_HEADERS || HAVE_STDLIB_H # include #else char *malloc (); #endif int main () { exit (malloc (0) ? 0 : 1); ; return 0; } _ACEOF rm -f conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='./conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_func_malloc_0_nonnull=yes else echo "$as_me: program exited with status $ac_status" >&5 echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ( exit $ac_status ) ac_cv_func_malloc_0_nonnull=no fi rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi fi echo "$as_me:$LINENO: result: $ac_cv_func_malloc_0_nonnull" >&5 echo "${ECHO_T}$ac_cv_func_malloc_0_nonnull" >&6 if test $ac_cv_func_malloc_0_nonnull = yes; then cat >>confdefs.h <<\_ACEOF #define HAVE_MALLOC 1 _ACEOF else cat >>confdefs.h <<\_ACEOF #define HAVE_MALLOC 0 _ACEOF case $LIBOBJS in "malloc.$ac_objext" | \ *" malloc.$ac_objext" | \ "malloc.$ac_objext "* | \ *" malloc.$ac_objext "* ) ;; *) LIBOBJS="$LIBOBJS malloc.$ac_objext" ;; esac cat >>confdefs.h <<\_ACEOF #define malloc rpl_malloc _ACEOF fi echo "$as_me:$LINENO: checking return type of signal handlers" >&5 echo $ECHO_N "checking return type of signal handlers... $ECHO_C" >&6 if test "${ac_cv_type_signal+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include #include #ifdef signal # undef signal #endif #ifdef __cplusplus extern "C" void (*signal (int, void (*)(int)))(int); #else void (*signal ()) (); #endif int main () { int i; ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_cxx_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_type_signal=void else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_type_signal=int fi rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $ac_cv_type_signal" >&5 echo "${ECHO_T}$ac_cv_type_signal" >&6 cat >>confdefs.h <<_ACEOF #define RETSIGTYPE $ac_cv_type_signal _ACEOF echo "$as_me:$LINENO: checking whether lstat dereferences a symlink specified with a trailing slash" >&5 echo $ECHO_N "checking whether lstat dereferences a symlink specified with a trailing slash... $ECHO_C" >&6 if test "${ac_cv_func_lstat_dereferences_slashed_symlink+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else rm -f conftest.sym conftest.file echo >conftest.file if test "$as_ln_s" = "ln -s" && ln -s conftest.file conftest.sym; then if test "$cross_compiling" = yes; then ac_cv_func_lstat_dereferences_slashed_symlink=no else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default int main () { struct stat sbuf; /* Linux will dereference the symlink and fail. That is better in the sense that it means we will not have to compile and use the lstat wrapper. */ exit (lstat ("conftest.sym/", &sbuf) ? 0 : 1); ; return 0; } _ACEOF rm -f conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='./conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_func_lstat_dereferences_slashed_symlink=yes else echo "$as_me: program exited with status $ac_status" >&5 echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ( exit $ac_status ) ac_cv_func_lstat_dereferences_slashed_symlink=no fi rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi else # If the `ln -s' command failed, then we probably don't even # have an lstat function. ac_cv_func_lstat_dereferences_slashed_symlink=no fi rm -f conftest.sym conftest.file fi echo "$as_me:$LINENO: result: $ac_cv_func_lstat_dereferences_slashed_symlink" >&5 echo "${ECHO_T}$ac_cv_func_lstat_dereferences_slashed_symlink" >&6 test $ac_cv_func_lstat_dereferences_slashed_symlink = yes && cat >>confdefs.h <<_ACEOF #define LSTAT_FOLLOWS_SLASHED_SYMLINK 1 _ACEOF if test $ac_cv_func_lstat_dereferences_slashed_symlink = no; then case $LIBOBJS in "lstat.$ac_objext" | \ *" lstat.$ac_objext" | \ "lstat.$ac_objext "* | \ *" lstat.$ac_objext "* ) ;; *) LIBOBJS="$LIBOBJS lstat.$ac_objext" ;; esac fi echo "$as_me:$LINENO: checking whether stat accepts an empty string" >&5 echo $ECHO_N "checking whether stat accepts an empty string... $ECHO_C" >&6 if test "${ac_cv_func_stat_empty_string_bug+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test "$cross_compiling" = yes; then ac_cv_func_stat_empty_string_bug=yes else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default int main () { struct stat sbuf; exit (stat ("", &sbuf) ? 1 : 0); ; return 0; } _ACEOF rm -f conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='./conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_func_stat_empty_string_bug=yes else echo "$as_me: program exited with status $ac_status" >&5 echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ( exit $ac_status ) ac_cv_func_stat_empty_string_bug=no fi rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi fi echo "$as_me:$LINENO: result: $ac_cv_func_stat_empty_string_bug" >&5 echo "${ECHO_T}$ac_cv_func_stat_empty_string_bug" >&6 if test $ac_cv_func_stat_empty_string_bug = yes; then case $LIBOBJS in "stat.$ac_objext" | \ *" stat.$ac_objext" | \ "stat.$ac_objext "* | \ *" stat.$ac_objext "* ) ;; *) LIBOBJS="$LIBOBJS stat.$ac_objext" ;; esac cat >>confdefs.h <<_ACEOF #define HAVE_STAT_EMPTY_STRING_BUG 1 _ACEOF fi echo "$as_me:$LINENO: checking for sigset()" >&5 echo $ECHO_N "checking for sigset()... $ECHO_C" >&6 if test "${ac_cv_sigset+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include int main () { sigset(SIGTERM,SIG_IGN); ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_cxx_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_sigset=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_sigset=no fi rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $ac_cv_sigset" >&5 echo "${ECHO_T}$ac_cv_sigset" >&6 if test x"ac_cv_sigset" = xyes; then cat >>confdefs.h <<\_ACEOF #define HAVE_SIGSET 1 _ACEOF fi for ac_func in gethostname strchr strdup tzset uname getopt on_exit do as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` echo "$as_me:$LINENO: checking for $ac_func" >&5 echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 if eval "test \"\${$as_ac_var+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Define $ac_func to an innocuous variant, in case declares $ac_func. For example, HP-UX 11i declares gettimeofday. */ #define $ac_func innocuous_$ac_func /* System header to define __stub macros and hopefully few prototypes, which can conflict with char $ac_func (); below. Prefer to if __STDC__ is defined, since exists even on freestanding compilers. */ #ifdef __STDC__ # include #else # include #endif #undef $ac_func /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" { #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char $ac_func (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined (__stub_$ac_func) || defined (__stub___$ac_func) choke me #else char (*f) () = $ac_func; #endif #ifdef __cplusplus } #endif int main () { return f != $ac_func; ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_cxx_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then eval "$as_ac_var=yes" else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 eval "$as_ac_var=no" fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 if test `eval echo '${'$as_ac_var'}'` = yes; then cat >>confdefs.h <<_ACEOF #define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 _ACEOF fi done # Checks for libraries. # Corba (Needs to go last, as it sets some libraries that may not run without # LD_LIBRARY_PATH being set. echo "$as_me:$LINENO: checking for libraries containing socket functions" >&5 echo $ECHO_N "checking for libraries containing socket functions... $ECHO_C" >&6 if test "${ac_cv_socket_libs+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else oLIBS=$LIBS cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include #include #include #include int main () { struct in_addr add; int sd = socket(AF_INET, SOCK_STREAM, 0); inet_ntoa(add); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_cxx_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_socket_libs=-lc else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_socket_libs=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext if test x"$ac_cv_socket_libs" = "xno" then LIBS="$oLIBS -lsocket" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include #include #include #include int main () { struct in_addr add; int sd = socket(AF_INET, SOCK_STREAM, 0); inet_ntoa(add); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_cxx_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_socket_libs=-lsocket else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_socket_libs=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi if test x"$ac_cv_socket_libs" = "xno" then LIBS="$oLIBS -lsocket -lnsl" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include #include #include #include int main () { struct in_addr add; int sd = socket(AF_INET, SOCK_STREAM, 0); inet_ntoa(add); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_cxx_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_socket_libs="-lsocket -lnsl" else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_socket_libs=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi LIBS=$oLIBS fi echo "$as_me:$LINENO: result: $ac_cv_socket_libs" >&5 echo "${ECHO_T}$ac_cv_socket_libs" >&6 if test x"$ac_cv_socket_libs" = "xno" then { { echo "$as_me:$LINENO: error: Cannot find socket libraries" >&5 echo "$as_me: error: Cannot find socket libraries" >&2;} { (exit 1); exit 1; }; } elif test x"$ac_cv_socket_libs" = "x-lc" then ETR_SOCKET_LIBS="" else ETR_SOCKET_LIBS="$ac_cv_socket_libs" fi if test "x$ETR_SOCKET_LIBS" != x; then LIBS="$LIBS $ETR_SOCKET_LIBS" fi 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 acx_pthread_ok=no # We used to check for pthread.h first, but this fails if pthread.h # requires special compiler flags (e.g. on True64 or Sequent). # It gets checked for in the link test anyway. # First of all, check if the user has set any of the PTHREAD_LIBS, # etcetera environment variables, and if threads linking works using # them: if test x"$PTHREAD_LIBS$PTHREAD_CFLAGS" != x; then save_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS $PTHREAD_CFLAGS" save_LIBS="$LIBS" LIBS="$PTHREAD_LIBS $LIBS" echo "$as_me:$LINENO: checking for pthread_join in LIBS=$PTHREAD_LIBS with CFLAGS=$PTHREAD_CFLAGS" >&5 echo $ECHO_N "checking for pthread_join in LIBS=$PTHREAD_LIBS with CFLAGS=$PTHREAD_CFLAGS... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char pthread_join (); int main () { pthread_join (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then acx_pthread_ok=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext echo "$as_me:$LINENO: result: $acx_pthread_ok" >&5 echo "${ECHO_T}$acx_pthread_ok" >&6 if test x"$acx_pthread_ok" = xno; then PTHREAD_LIBS="" PTHREAD_CFLAGS="" fi LIBS="$save_LIBS" CFLAGS="$save_CFLAGS" fi # We must check for the threads library under a number of different # names; the ordering is very important because some systems # (e.g. DEC) have both -lpthread and -lpthreads, where one of the # libraries is broken (non-POSIX). # Create a list of thread flags to try. Items starting with a "-" are # C compiler flags, and other items are library names, except for "none" # which indicates that we try without any flags at all. acx_pthread_flags="pthreads none -Kthread -kthread lthread -pthread -pthreads -mthreads pthread --thread-safe -mt" # The ordering *is* (sometimes) important. Some notes on the # individual items follow: # pthreads: AIX (must check this before -lpthread) # none: in case threads are in libc; should be tried before -Kthread and # other compiler flags to prevent continual compiler warnings # -Kthread: Sequent (threads in libc, but -Kthread needed for pthread.h) # -kthread: FreeBSD kernel threads (preferred to -pthread since SMP-able) # lthread: LinuxThreads port on FreeBSD (also preferred to -pthread) # -pthread: Linux/gcc (kernel threads), BSD/gcc (userland threads) # -pthreads: Solaris/gcc # -mthreads: Mingw32/gcc, Lynx/gcc # -mt: Sun Workshop C (may only link SunOS threads [-lthread], but it # doesn't hurt to check since this sometimes defines pthreads too; # also defines -D_REENTRANT) # pthread: Linux, etcetera # --thread-safe: KAI C++ case "${host_cpu}-${host_os}" in *solaris*) # On Solaris (at least, for some versions), libc contains stubbed # (non-functional) versions of the pthreads routines, so link-based # tests will erroneously succeed. (We need to link with -pthread or # -lpthread.) (The stubs are missing pthread_cleanup_push, or rather # a function called by this macro, so we could check for that, but # who knows whether they'll stub that too in a future libc.) So, # we'll just look for -pthreads and -lpthread first: acx_pthread_flags="-pthread -pthreads pthread -mt $acx_pthread_flags" ;; esac if test x"$acx_pthread_ok" = xno; then for flag in $acx_pthread_flags; do case $flag in none) echo "$as_me:$LINENO: checking whether pthreads work without any flags" >&5 echo $ECHO_N "checking whether pthreads work without any flags... $ECHO_C" >&6 ;; -*) echo "$as_me:$LINENO: checking whether pthreads work with $flag" >&5 echo $ECHO_N "checking whether pthreads work with $flag... $ECHO_C" >&6 PTHREAD_CFLAGS="$flag" ;; *) echo "$as_me:$LINENO: checking for the pthreads library -l$flag" >&5 echo $ECHO_N "checking for the pthreads library -l$flag... $ECHO_C" >&6 PTHREAD_LIBS="-l$flag" ;; esac save_LIBS="$LIBS" save_CFLAGS="$CFLAGS" LIBS="$PTHREAD_LIBS $LIBS" CFLAGS="$CFLAGS $PTHREAD_CFLAGS" # Check for various functions. We must include pthread.h, # since some functions may be macros. (On the Sequent, we # need a special flag -Kthread to make this header compile.) # We check for pthread_join because it is in -lpthread on IRIX # while pthread_create is in libc. We check for pthread_attr_init # due to DEC craziness with -lpthreads. We check for # pthread_cleanup_push because it is one of the few pthread # functions on Solaris that doesn't have a non-functional libc stub. # We try pthread_create on general principles. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include int main () { pthread_t th; pthread_join(th, 0); pthread_attr_init(0); pthread_cleanup_push(0, 0); pthread_create(0,0,0,0); pthread_cleanup_pop(0); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then acx_pthread_ok=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS="$save_LIBS" CFLAGS="$save_CFLAGS" echo "$as_me:$LINENO: result: $acx_pthread_ok" >&5 echo "${ECHO_T}$acx_pthread_ok" >&6 if test "x$acx_pthread_ok" = xyes; then break; fi PTHREAD_LIBS="" PTHREAD_CFLAGS="" done fi # Various other checks: if test "x$acx_pthread_ok" = xyes; then save_LIBS="$LIBS" LIBS="$PTHREAD_LIBS $LIBS" save_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS $PTHREAD_CFLAGS" # Detect AIX lossage: threads are created detached by default # and the JOINABLE attribute has a nonstandard name (UNDETACHED). echo "$as_me:$LINENO: checking for joinable pthread attribute" >&5 echo $ECHO_N "checking for joinable pthread attribute... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include int main () { int attr=PTHREAD_CREATE_JOINABLE; ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ok=PTHREAD_CREATE_JOINABLE else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ok=unknown fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext if test x"$ok" = xunknown; then cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include int main () { int attr=PTHREAD_CREATE_UNDETACHED; ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ok=PTHREAD_CREATE_UNDETACHED else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ok=unknown fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi if test x"$ok" != xPTHREAD_CREATE_JOINABLE; then cat >>confdefs.h <<\_ACEOF #define PTHREAD_CREATE_JOINABLE $ok _ACEOF fi echo "$as_me:$LINENO: result: ${ok}" >&5 echo "${ECHO_T}${ok}" >&6 if test x"$ok" = xunknown; then { echo "$as_me:$LINENO: WARNING: we do not know how to create joinable pthreads" >&5 echo "$as_me: WARNING: we do not know how to create joinable pthreads" >&2;} fi echo "$as_me:$LINENO: checking if more special flags are required for pthreads" >&5 echo $ECHO_N "checking if more special flags are required for pthreads... $ECHO_C" >&6 flag=no case "${host_cpu}-${host_os}" in *-aix* | *-freebsd*) flag="-D_THREAD_SAFE";; *solaris* | *-osf* | *-hpux*) flag="-D_REENTRANT";; esac echo "$as_me:$LINENO: result: ${flag}" >&5 echo "${ECHO_T}${flag}" >&6 if test "x$flag" != xno; then PTHREAD_CFLAGS="$flag $PTHREAD_CFLAGS" fi LIBS="$save_LIBS" CFLAGS="$save_CFLAGS" # More AIX lossage: must compile with cc_r # Extract the first word of "cc_r", so it can be a program name with args. set dummy cc_r; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_PTHREAD_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$PTHREAD_CC"; then ac_cv_prog_PTHREAD_CC="$PTHREAD_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_PTHREAD_CC="cc_r" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done test -z "$ac_cv_prog_PTHREAD_CC" && ac_cv_prog_PTHREAD_CC="${CC}" fi fi PTHREAD_CC=$ac_cv_prog_PTHREAD_CC if test -n "$PTHREAD_CC"; then echo "$as_me:$LINENO: result: $PTHREAD_CC" >&5 echo "${ECHO_T}$PTHREAD_CC" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi else PTHREAD_CC="$CC" fi # Finally, execute ACTION-IF-FOUND/ACTION-IF-NOT-FOUND: if test x"$acx_pthread_ok" = xyes; then cat >>confdefs.h <<\_ACEOF #define HAVE_PTHREAD 1 _ACEOF : else acx_pthread_ok=no fi ac_ext=cc 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 plat_name="Platform_Unknown" plat_def="__unknown_platform__" os_v="0" case "$host" in *-*-linux-*) plat_name="Linux"; plat_def="__linux__"; os_v="2";; *-*-cygwin*) plat_name="Cygwin"; plat_def="__linux__"; os_v="2";; *-*-solaris*) plat_name="SunOS"; plat_def="__sunos__"; os_v="5";; *-*-osf3*) plat_name="OSF1"; plat_def="__osf1__"; os_v="3";; *-*-osf4*) plat_name="OSF1"; plat_def="__osf1__"; os_v="4";; *-*-osf5*) plat_name="OSF1"; plat_def="__osf1__"; os_v="5";; *-*-hpux10*) plat_name="HPUX"; plat_def="__hpux__"; os_v="10";; *-*-hpux11*) plat_name="HPUX"; plat_def="__hpux__"; os_v="11";; *-*-nextstep*) plat_name="NextStep"; plat_def="__nextstep__"; os_v="3";; *-*-openstep*) plat_name="NextStep"; plat_def="__nextstep__"; os_v="3";; *-*-irix*) plat_name="IRIX"; plat_def="__irix__"; os_v="6";; *-*-aix*) plat_name="AIX"; plat_def="__aix__"; os_v="4";; *-*-darwin*) plat_name="Darwin"; plat_def="__darwin__"; os_v="1";; *-*-freebsd3*) plat_name="FreeBSD"; plat_def="__freebsd__"; os_v="3";; *-*-freebsd4*) plat_name="FreeBSD"; plat_def="__freebsd__"; os_v="4";; *-*-freebsd5*) plat_name="FreeBSD"; plat_def="__freebsd__"; os_v="5";; *-*-sco*) plat_name="OSR5"; plat_def="__osr5__"; os_v="5";; esac PLATFORM_NAME=$plat_name PLATFORM_DEFINITION=$plat_def OSVERSION=$os_v cat >>confdefs.h <<_ACEOF #define $plat_def 1 _ACEOF cat >>confdefs.h <<_ACEOF #define __OSVERSION__ $os_v _ACEOF proc_name="UnknownProcessor" proc_def="__processor_unknown__" case "$host" in i?86-*) proc_name="x86Processor"; proc_def="__x86__";; sparc-*) proc_name="SparcProcessor"; proc_def="__sparc__";; alpha*) proc_name="AlphaProcessor"; proc_def="__alpha__";; m68k-*) proc_name="m68kProcessor"; proc_def="__m68k__";; mips*) proc_name="IndigoProcessor"; proc_def="__mips__";; arm-*) proc_name="ArmProcessor"; proc_def="__arm__";; s390-*) proc_name="s390Processor"; proc_def="__s390__";; ia64-*) proc_name="ia64Processor"; proc_def="__ia64__";; hppa*) proc_name="HppaProcessor"; proc_def="__hppa__";; powerpc*) proc_name="PowerPCProcessor"; proc_def="__powerpc__";; esac PROCESSOR_NAME=$proc_name PROCESSOR_DEFINITION=$proc_def cat >>confdefs.h <<_ACEOF #define $proc_def 1 _ACEOF # Check whether --with-omniorb or --without-omniorb was given. if test "${with_omniorb+set}" = set; then withval="$with_omniorb" OMNIORBBASE=$withval fi; if test "x$CORBA_ORB" = x; then echo "$as_me:$LINENO: checking for omniORB4" >&5 echo $ECHO_N "checking for omniORB4... $ECHO_C" >&6 if test "${ac_cv_corba_omniorb4+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_ext=cc 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 # Sometime failed C++ compiles can leave trash in the template repository. # Just clean them all away. rm -rf ./SunWS_cache # Solaris/CC rm -rf ./.cxx_repository # Tru64/cxx # ...add more here. # Save CPPFLAGS, LDFLAGS & LIBS ac_corba_save_cppflags="$CPPFLAGS" ac_corba_save_ldflags="$LDFLAGS" ac_corba_save_libs="$LIBS" LDFLAGS="$ac_corba_save_ldflags $PTHREAD_CFLAGS $PTHREAD_LIBS" CPPFLAGS="$ac_corba_save_cppflags $PTHREAD_CFLAGS" # Try to find the omniORB4 header file.Start with $OMNIORBBASE, # and then $prefix, else just try the default include path. ac_cv_corba_omniorb4=no ac_corba_searchdirs="" if test "x$OMNIORBBASE" != x; then if test -d "$OMNIORBBASE/include"; then ac_corba_searchdirs="$ac_corba_searchdirs $OMNIORBBASE/include" fi else if test "x$prefix" != x && test "$prefix" != "NONE" && test -d "$prefix/include" then ac_corba_searchdirs="$ac_corba_searchdirs $prefix/include" fi if test -d "/usr/local/include" then ac_corba_searchdirs="$ac_corba_searchdirs /usr/local/include" fi if test -d "/opt/include" then ac_corba_searchdirs="$ac_corba_searchdirs /opt/include" fi if test -d "/usr/include" then ac_corba_searchdirs="$ac_corba_searchdirs /usr/include" fi fi for ac_corba_i in `find $ac_corba_searchdirs -type d -name omniORB4 2>/dev/null` do if test -f $ac_corba_i/CORBA.h then ac_corba_omnidir=`(dirname "$ac_corba_i") 2>/dev/null || $as_expr X"$ac_corba_i" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$ac_corba_i" : 'X\(//\)[^/]' \| \ X"$ac_corba_i" : 'X\(//\)$' \| \ X"$ac_corba_i" : 'X\(/\)' \| \ . : '\(.\)' 2>/dev/null || echo X"$ac_corba_i" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } /^X\(\/\/\)[^/].*/{ s//\1/; q; } /^X\(\/\/\)$/{ s//\1/; q; } /^X\(\/\).*/{ s//\1/; q; } s/.*/./; q'` CPPFLAGS="$CPPFLAGS -I$ac_corba_omnidir" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* The PACKAGE_* macros cause incompatabilities with omniORB4. */ #undef PACKAGE_BUGREPORT #undef PACKAGE_NAME #undef PACKAGE_STRING #undef PACKAGE_TARNAME #undef PACKAGE_VERSION #include _ACEOF if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_cxx_preproc_warn_flag ac_cpp_err=$ac_cpp_err$ac_cxx_werror_flag else ac_cpp_err= fi else ac_cpp_err=yes fi if test -z "$ac_cpp_err"; then ac_cv_corba_omniorb4="$ac_corba_omnidir" else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 CPPFLAGS="$ac_corba_save_cppflags $PTHREAD_CFLAGS" fi rm -f conftest.err conftest.$ac_ext fi test "$ac_cv_corba_omniorb4" != no && break done if test "$ac_cv_corba_omniorb4" = no && test -z "$OMNIORBBASE"; then cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* The PACKAGE_* macros cause incompatabilities with omniORB4. */ #undef PACKAGE_BUGREPORT #undef PACKAGE_NAME #undef PACKAGE_STRING #undef PACKAGE_TARNAME #undef PACKAGE_VERSION #include _ACEOF if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_cxx_preproc_warn_flag ac_cpp_err=$ac_cpp_err$ac_cxx_werror_flag else ac_cpp_err= fi else ac_cpp_err=yes fi if test -z "$ac_cpp_err"; then ac_cv_corba_omniorb4=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -f conftest.err conftest.$ac_ext fi # Try to find the omniORB4 libraries. if test "$ac_cv_corba_omniorb4" != no; then LIBS="$LIBS -lomniORB4 -lomniDynamic4" LIBS="$LIBS -lomnithread" ac_corba_links=no ac_corba_searchdirs="" if test "x$OMNIORBBASE" != x; then if test -d "$OMNIORBBASE/lib"; then ac_corba_searchdirs="$ac_corba_searchdirs $OMNIORBBASE/lib" fi else if test "x$prefix" != x && test "$prefix" != "NONE" && test -d "$prefix/lib" then ac_corba_searchdirs="$ac_corba_searchdirs $prefix/lib" fi if test -d "/usr/local/lib" then ac_corba_searchdirs="$ac_corba_searchdirs /usr/local/lib" fi if test -d "/opt/lib" then ac_corba_searchdirs="$ac_corba_searchdirs /opt/lib" fi if test -d "/usr/lib" then ac_corba_searchdirs="$ac_corba_searchdirs /usr/lib" fi fi for ac_corba_i in `find $ac_corba_searchdirs -type f -name 'libomniORB4*' 2>/dev/null` do # Could check for all required libraries here. ac_corba_omnidir=`(dirname "$ac_corba_i") 2>/dev/null || $as_expr X"$ac_corba_i" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$ac_corba_i" : 'X\(//\)[^/]' \| \ X"$ac_corba_i" : 'X\(//\)$' \| \ X"$ac_corba_i" : 'X\(/\)' \| \ . : '\(.\)' 2>/dev/null || echo X"$ac_corba_i" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } /^X\(\/\/\)[^/].*/{ s//\1/; q; } /^X\(\/\/\)$/{ s//\1/; q; } /^X\(\/\).*/{ s//\1/; q; } s/.*/./; q'` LDFLAGS="$LDFLAGS -L$ac_corba_omnidir" # Try to link. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* The PACKAGE_* macros cause incompatabilities with omniORB4. */ #undef PACKAGE_BUGREPORT #undef PACKAGE_NAME #undef PACKAGE_STRING #undef PACKAGE_TARNAME #undef PACKAGE_VERSION #include int main () { CORBA::ORB_var orb ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_cxx_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_corba_links=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 LDFLAGS="$ac_corba_save_ldflags $PTHREAD_CFLAGS $PTHREAD_LIBS" fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext test "$ac_corba_links" = yes && break done if test "$ac_corba_links" = no; then cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* The PACKAGE_* macros cause incompatabilities with omniORB4. */ #undef PACKAGE_BUGREPORT #undef PACKAGE_NAME #undef PACKAGE_STRING #undef PACKAGE_TARNAME #undef PACKAGE_VERSION #include int main () { CORBA::ORB_var orb ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_cxx_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_corba_links=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi test "$ac_corba_links" = no && ac_cv_corba_omniorb4=no fi if test "$ac_cv_corba_omniorb4" = no then # Restore CPPFLAGS LDFLAGS & LIBS CPPFLAGS="$ac_corba_save_cppflags" LDFLAGS="$ac_corba_save_ldflags" LIBS="$ac_corba_save_libs" fi ac_ext=cc 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 fi echo "$as_me:$LINENO: result: $ac_cv_corba_omniorb4" >&5 echo "${ECHO_T}$ac_cv_corba_omniorb4" >&6 if test "$ac_cv_corba_omniorb4" != no then CORBA_ORB="omniORB4" cat >>confdefs.h <<\_ACEOF #define HAVE_OMNIORB4 1 _ACEOF # The use can enable unloadable stubs for libraries that need to be # unloadable. See the omniORB documentation. (omniORB4+ only.) # Check whether --enable-unloadable-stubs or --disable-unloadable-stubs was given. if test "${enable_unloadable_stubs+set}" = set; then enableval="$enable_unloadable_stubs" IDL_CPPFLAGS="-DOMNI_UNLOADABLE_STUBS=1" fi; # Since we've found `omniORB', we'll need `omniidl'. echo "$as_me:$LINENO: checking for omniidl" >&5 echo $ECHO_N "checking for omniidl... $ECHO_C" >&6 if test "${IDL+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else IDL=no # First, try and find omniidl inside the $OMNIORBBASE/bin directory if test "x$OMNIORBBASE" != x; then IDL="not found in $OMNIORBBASE" for ac_idlfile in `find $OMNIORBBASE/bin -name omniidl` do if test -x "$ac_idlfile"; then IDL="$ac_idlfile" break; fi done fi if test "x$IDL" = xno; then if test "x$prefix" != x && test "$prefix" != "NONE" && test -d "$prefix/bin" then ac_omniidl_path="$prefix/bin:$PATH" else ac_omniidl_path="$PATH" fi # Extract the first word of "omniidl", so it can be a program name with args. set dummy omniidl; ac_word=$2 if test "${ac_cv_path_IDL+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else case "$IDL" in /*) ac_cv_path_IDL="$IDL" # Let the user override the test with a path. ;; ?:/*) ac_cv_path_IDL="$IDL" # Let the user override the test with a dos path. ;; *) IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" ac_dummy="$ac_omniidl_path" for ac_dir in $ac_dummy; do test -z "$ac_dir" && ac_dir=. if test -f $ac_dir/$ac_word; then ac_cv_path_IDL="$ac_dir/$ac_word" break fi done IFS="$ac_save_ifs" test -z "$ac_cv_path_IDL" && ac_cv_path_IDL="no" ;; esac fi IDL="$ac_cv_path_IDL" fi if test "x$IDL" != xno; then # Check with which version of omniORB `omniidl' is compatible. echo "interface ConfTest { void m(); };" > conftest.idl if { ac_try='$IDL -bcxx -Wbh=.hh conftest.idl' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_corba_omniidl_orb=unknown grep 'omniORB3/CORBA.h' conftest.hh >/dev/null 2>/dev/null && ac_corba_omniidl_orb=omniORB3 grep 'omniORB4/CORBA.h' conftest.hh >/dev/null 2>/dev/null && ac_corba_omniidl_orb=omniORB4 else IDL=no fi rm -f conftest* fi fi echo "$as_me:$LINENO: result: $IDL" >&5 echo "${ECHO_T}$IDL" >&6 # Stop if omniidl is not compatible with omniORB. if test "x$IDL" != xno && test "x$IDL" != "xnot found in $OMNIORBBASE" && \ test "x$ac_corba_omniidl_orb" != "x$CORBA_ORB" then { { echo "$as_me:$LINENO: error: omniidl output is for $ac_corba_omniidl_orb. You can't use it with $CORBA_ORB. This can happen when you have more than one version of omniORB installed. You probably need to set PYTHONPATH to ensure that omniidl is using the correct python module (_omniidlmodule.so)." >&5 echo "$as_me: error: omniidl output is for $ac_corba_omniidl_orb. You can't use it with $CORBA_ORB. This can happen when you have more than one version of omniORB installed. You probably need to set PYTHONPATH to ensure that omniidl is using the correct python module (_omniidlmodule.so)." >&2;} { (exit 1); exit 1; }; } fi fi fi if test "x$CORBA_ORB" = x; then echo "$as_me:$LINENO: checking for omniORB3" >&5 echo $ECHO_N "checking for omniORB3... $ECHO_C" >&6 if test "${ac_cv_corba_omniorb3+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_ext=cc 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 # Sometime failed C++ compiles can leave trash in the template repository. # Just clean them all away. rm -rf ./SunWS_cache # Solaris/CC rm -rf ./.cxx_repository # Tru64/cxx # ...add more here. # Save CPPFLAGS, LDFLAGS & LIBS ac_corba_save_cppflags="$CPPFLAGS" ac_corba_save_ldflags="$LDFLAGS" ac_corba_save_libs="$LIBS" LDFLAGS="$ac_corba_save_ldflags $PTHREAD_CFLAGS $PTHREAD_LIBS" CPPFLAGS="$ac_corba_save_cppflags $PTHREAD_CFLAGS" # Try to find the omniORB3 header file.Start with $OMNIORBBASE, # and then $prefix, else just try the default include path. ac_cv_corba_omniorb3=no ac_corba_searchdirs="" if test "x$OMNIORBBASE" != x; then if test -d "$OMNIORBBASE/include"; then ac_corba_searchdirs="$ac_corba_searchdirs $OMNIORBBASE/include" fi else if test "x$prefix" != x && test "$prefix" != "NONE" && test -d "$prefix/include" then ac_corba_searchdirs="$ac_corba_searchdirs $prefix/include" fi if test -d "/usr/local/include" then ac_corba_searchdirs="$ac_corba_searchdirs /usr/local/include" fi if test -d "/opt/include" then ac_corba_searchdirs="$ac_corba_searchdirs /opt/include" fi if test -d "/usr/include" then ac_corba_searchdirs="$ac_corba_searchdirs /usr/include" fi fi for ac_corba_i in `find $ac_corba_searchdirs -type d -name omniORB3 2>/dev/null` do if test -f $ac_corba_i/CORBA.h then ac_corba_omnidir=`(dirname "$ac_corba_i") 2>/dev/null || $as_expr X"$ac_corba_i" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$ac_corba_i" : 'X\(//\)[^/]' \| \ X"$ac_corba_i" : 'X\(//\)$' \| \ X"$ac_corba_i" : 'X\(/\)' \| \ . : '\(.\)' 2>/dev/null || echo X"$ac_corba_i" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } /^X\(\/\/\)[^/].*/{ s//\1/; q; } /^X\(\/\/\)$/{ s//\1/; q; } /^X\(\/\).*/{ s//\1/; q; } s/.*/./; q'` CPPFLAGS="$CPPFLAGS -I$ac_corba_omnidir" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include _ACEOF if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_cxx_preproc_warn_flag ac_cpp_err=$ac_cpp_err$ac_cxx_werror_flag else ac_cpp_err= fi else ac_cpp_err=yes fi if test -z "$ac_cpp_err"; then ac_cv_corba_omniorb3="$ac_corba_omnidir" else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 CPPFLAGS="$ac_corba_save_cppflags $PTHREAD_CFLAGS" fi rm -f conftest.err conftest.$ac_ext fi test "$ac_cv_corba_omniorb3" != no && break done if test "$ac_cv_corba_omniorb3" = no && test -z "$OMNIORBBASE"; then cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include _ACEOF if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_cxx_preproc_warn_flag ac_cpp_err=$ac_cpp_err$ac_cxx_werror_flag else ac_cpp_err= fi else ac_cpp_err=yes fi if test -z "$ac_cpp_err"; then ac_cv_corba_omniorb3=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -f conftest.err conftest.$ac_ext fi # Try to find the omniORB3 libraries. if test "$ac_cv_corba_omniorb3" != no; then LIBS="$LIBS -lomniORB3 -lomniGK_stub -lomniDynamic3 -lomniGK_alone" LIBS="$LIBS -lomnithread" ac_corba_links=no ac_corba_searchdirs="" if test "x$OMNIORBBASE" != x; then if test -d "$OMNIORBBASE/lib"; then ac_corba_searchdirs="$ac_corba_searchdirs $OMNIORBBASE/lib" fi else if test "x$prefix" != x && test "$prefix" != "NONE" && test -d "$prefix/lib" then ac_corba_searchdirs="$ac_corba_searchdirs $prefix/lib" fi if test -d "/usr/local/lib" then ac_corba_searchdirs="$ac_corba_searchdirs /usr/local/lib" fi if test -d "/opt/lib" then ac_corba_searchdirs="$ac_corba_searchdirs /opt/lib" fi if test -d "/usr/lib" then ac_corba_searchdirs="$ac_corba_searchdirs /usr/lib" fi fi for ac_corba_i in `find $ac_corba_searchdirs -type f -name 'libomniORB3*' 2>/dev/null` do # Could check for all required libraries here. ac_corba_omnidir=`(dirname "$ac_corba_i") 2>/dev/null || $as_expr X"$ac_corba_i" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$ac_corba_i" : 'X\(//\)[^/]' \| \ X"$ac_corba_i" : 'X\(//\)$' \| \ X"$ac_corba_i" : 'X\(/\)' \| \ . : '\(.\)' 2>/dev/null || echo X"$ac_corba_i" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } /^X\(\/\/\)[^/].*/{ s//\1/; q; } /^X\(\/\/\)$/{ s//\1/; q; } /^X\(\/\).*/{ s//\1/; q; } s/.*/./; q'` LDFLAGS="$LDFLAGS -L$ac_corba_omnidir" # Try to link. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include int main () { CORBA::ORB_var orb ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_cxx_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_corba_links=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 LDFLAGS="$ac_corba_save_ldflags $PTHREAD_CFLAGS $PTHREAD_LIBS" fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext test "$ac_corba_links" = yes && break done if test "$ac_corba_links" = no; then cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include int main () { CORBA::ORB_var orb ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_cxx_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_corba_links=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi test "$ac_corba_links" = no && ac_cv_corba_omniorb3=no fi if test "$ac_cv_corba_omniorb3" = no then # Restore CPPFLAGS LDFLAGS & LIBS CPPFLAGS="$ac_corba_save_cppflags" LDFLAGS="$ac_corba_save_ldflags" LIBS="$ac_corba_save_libs" fi ac_ext=cc 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 fi echo "$as_me:$LINENO: result: $ac_cv_corba_omniorb3" >&5 echo "${ECHO_T}$ac_cv_corba_omniorb3" >&6 if test "$ac_cv_corba_omniorb3" != no then CORBA_ORB="omniORB3" cat >>confdefs.h <<\_ACEOF #define HAVE_OMNIORB3 1 _ACEOF # Since we've found `omniORB', we'll need `omniidl'. echo "$as_me:$LINENO: checking for omniidl" >&5 echo $ECHO_N "checking for omniidl... $ECHO_C" >&6 if test "${IDL+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else IDL=no # First, try and find omniidl inside the $OMNIORBBASE/bin directory if test "x$OMNIORBBASE" != x; then IDL="not found in $OMNIORBBASE" for ac_idlfile in `find $OMNIORBBASE/bin -name omniidl` do if test -x "$ac_idlfile"; then IDL="$ac_idlfile" break; fi done fi if test "x$IDL" = xno; then if test "x$prefix" != x && test "$prefix" != "NONE" && test -d "$prefix/bin" then ac_omniidl_path="$prefix/bin:$PATH" else ac_omniidl_path="$PATH" fi # Extract the first word of "omniidl", so it can be a program name with args. set dummy omniidl; ac_word=$2 if test "${ac_cv_path_IDL+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else case "$IDL" in /*) ac_cv_path_IDL="$IDL" # Let the user override the test with a path. ;; ?:/*) ac_cv_path_IDL="$IDL" # Let the user override the test with a dos path. ;; *) IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" ac_dummy="$ac_omniidl_path" for ac_dir in $ac_dummy; do test -z "$ac_dir" && ac_dir=. if test -f $ac_dir/$ac_word; then ac_cv_path_IDL="$ac_dir/$ac_word" break fi done IFS="$ac_save_ifs" test -z "$ac_cv_path_IDL" && ac_cv_path_IDL="no" ;; esac fi IDL="$ac_cv_path_IDL" fi if test "x$IDL" != xno; then # Check with which version of omniORB `omniidl' is compatible. echo "interface ConfTest { void m(); };" > conftest.idl if { ac_try='$IDL -bcxx -Wbh=.hh conftest.idl' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_corba_omniidl_orb=unknown grep 'omniORB3/CORBA.h' conftest.hh >/dev/null 2>/dev/null && ac_corba_omniidl_orb=omniORB3 grep 'omniORB4/CORBA.h' conftest.hh >/dev/null 2>/dev/null && ac_corba_omniidl_orb=omniORB4 else IDL=no fi rm -f conftest* fi fi echo "$as_me:$LINENO: result: $IDL" >&5 echo "${ECHO_T}$IDL" >&6 # Stop if omniidl is not compatible with omniORB. if test "x$IDL" != xno && test "x$IDL" != "xnot found in $OMNIORBBASE" && \ test "x$ac_corba_omniidl_orb" != "x$CORBA_ORB" then { { echo "$as_me:$LINENO: error: omniidl output is for $ac_corba_omniidl_orb. You can't use it with $CORBA_ORB. This can happen when you have more than one version of omniORB installed. You probably need to set PYTHONPATH to ensure that omniidl is using the correct python module (_omniidlmodule.so)." >&5 echo "$as_me: error: omniidl output is for $ac_corba_omniidl_orb. You can't use it with $CORBA_ORB. This can happen when you have more than one version of omniORB installed. You probably need to set PYTHONPATH to ensure that omniidl is using the correct python module (_omniidlmodule.so)." >&2;} { (exit 1); exit 1; }; } fi fi fi echo "$as_me:$LINENO: checking for IDL COS include directory" >&5 echo $ECHO_N "checking for IDL COS include directory... $ECHO_C" >&6 if test "${ac_cv_corba_idlcos+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_cv_corba_idlcos=no if test "x$OMNIORBBASE" != x; then if test -d "$OMNIORBBASE/share/idl"; then ac_corba_idldirs="$ac_corba_idldirs $OMNIORBBASE/share/idl" fi if test -d "$OMNIORBBASE/idl"; then ac_corba_idldirs="$ac_corba_idldirs $OMNIORBBASE/idl" fi else if test "x$prefix" != x && test "$prefix" != "NONE"; then if test -d "$prefix/share/idl"; then ac_corba_idldirs="$ac_corba_idldirs $prefix/share/idl" fi if test -d "$prefix/idl"; then ac_corba_idldirs="$ac_corba_idldirs $prefix/idl" fi fi if test -d "/usr/local/share/idl"; then ac_corba_idldirs="$ac_corba_idldirs /usr/local/share/idl" fi if test -d "/usr/share/idl"; then ac_corba_idldirs="$ac_corba_idldirs /usr/share/idl" fi if test -d "/opt/share/idl"; then ac_corba_idldirs="$ac_corba_idldirs /opt/share/idl" fi fi if test -n "$ac_corba_idldirs"; then for ac_corba_i in `find $ac_corba_idldirs -type d -name COS 2>/dev/null` do if test -f "$ac_corba_i/CosNaming.idl" then ac_cv_corba_idlcos=`(dirname "$ac_corba_i") 2>/dev/null || $as_expr X"$ac_corba_i" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$ac_corba_i" : 'X\(//\)[^/]' \| \ X"$ac_corba_i" : 'X\(//\)$' \| \ X"$ac_corba_i" : 'X\(/\)' \| \ . : '\(.\)' 2>/dev/null || echo X"$ac_corba_i" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } /^X\(\/\/\)[^/].*/{ s//\1/; q; } /^X\(\/\/\)$/{ s//\1/; q; } /^X\(\/\).*/{ s//\1/; q; } s/.*/./; q'` break fi done fi fi echo "$as_me:$LINENO: result: $ac_cv_corba_idlcos" >&5 echo "${ECHO_T}$ac_cv_corba_idlcos" >&6 if test "x$ac_cv_corba_idlcos" != xno; then IDL_COS_DIR=$ac_cv_corba_idlcos fi # Check for SysV-style init.d directory. echo "$as_me:$LINENO: checking for SysV-style init.d directory" >&5 echo $ECHO_N "checking for SysV-style init.d directory... $ECHO_C" >&6 if test -d /etc/init.d ; then echo "$as_me:$LINENO: result: /etc/init.d" >&5 echo "${ECHO_T}/etc/init.d" >&6 INSTALL_ETC=/etc elif test -d /sbin/init.d ; then echo "$as_me:$LINENO: result: /sbin/init.d" >&5 echo "${ECHO_T}/sbin/init.d" >&6 INSTALL_ETC=/sbin else echo "$as_me:$LINENO: result: no. Using default /etc/init.d" >&5 echo "${ECHO_T}no. Using default /etc/init.d" >&6 INSTALL_ETC=/etc fi # Check for SysV-style /etc/default or BSD style /etc/sysconfig directories. echo "$as_me:$LINENO: checking for SysV or BSD-style config directory" >&5 echo $ECHO_N "checking for SysV or BSD-style config directory... $ECHO_C" >&6 if test -d /etc/default ; then echo "$as_me:$LINENO: result: /etc/default" >&5 echo "${ECHO_T}/etc/default" >&6 SYSCONFIG_DIR=/etc/default elif test -d /etc/sysconfig ; then echo "$as_me:$LINENO: result: /etc/sysconfig" >&5 echo "${ECHO_T}/etc/sysconfig" >&6 SYSCONFIG_DIR=/etc/sysconfig else echo "$as_me:$LINENO: result: no. Using default /etc/default" >&5 echo "${ECHO_T}no. Using default /etc/default" >&6 SYSCONFIG_DIR=/etc/default fi if test "x$ac_cv_func_gethostname" = x ; then HAVE_GETHOSTNAME=no else HAVE_GETHOSTNAME=yes fi # Write a summary of the most important results. echo "+-----------------------------------------------------------------------------+" echo "| C++ : $CXX" echo "| C++ STL : $ac_cv_cxx_have_stl" case "$CORBA_ORB" in omniORB3) echo "| CORBA ORB : $ac_cv_corba_omniorb3 (omniORB3)" ;; omniORB4) echo "| CORBA ORB : $ac_cv_corba_omniorb4 (omniORB4)" ;; *) echo "| CORBA ORB : NONE FOUND" ;; esac echo "| omniidl : $IDL" if test "x$OMNIORBBASE" != x; then echo "+-----------------------------------------------------------------------------+" if test "x$OMNIORBBASE" = "x$ac_omniorbbase"; then echo "| NOTE: omniORB search restricted by OMNIORBBASE=$ac_omniorbbase" echo "| To override, try 'unset OMNIORBBASE' or option '--with-omniorb'" else echo "| NOTE: omniORB search restricted by --with-omniorb=$OMNIORBBASE" fi fi echo "+-----------------------------------------------------------------------------+" ac_config_files="$ac_config_files config.mk etc/init.d/omniorb-eventservice contrib/omniEvents.pc" cat >confcache <<\_ACEOF # This file is a shell script that caches the results of configure # tests run on this system so they can be shared between configure # scripts and configure runs, see configure's option --config-cache. # It is not useful on other systems. If it contains results you don't # want to keep, you may remove or edit it. # # config.status only pays attention to the cache file if you give it # the --recheck option to rerun configure. # # `ac_cv_env_foo' variables (set or unset) will be overridden when # loading this file, other *unset* `ac_cv_foo' will be assigned the # following values. _ACEOF # The following way of writing the cache mishandles newlines in values, # but we know of no workaround that is simple, portable, and efficient. # So, don't put newlines in cache variables' values. # Ultrix sh set writes to stderr and can't be redirected directly, # and sets the high bit in the cache file unless we assign to the vars. { (set) 2>&1 | case `(ac_space=' '; set | grep ac_space) 2>&1` in *ac_space=\ *) # `set' does not quote correctly, so add quotes (double-quote # substitution turns \\\\ into \\, and sed turns \\ into \). sed -n \ "s/'/'\\\\''/g; s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" ;; *) # `set' quotes correctly as required by POSIX, so do not add quotes. sed -n \ "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p" ;; esac; } | sed ' t clear : clear s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ t end /^ac_cv_env/!s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ : end' >>confcache if diff $cache_file confcache >/dev/null 2>&1; then :; else if test -w $cache_file; then test "x$cache_file" != "x/dev/null" && echo "updating cache $cache_file" cat confcache >$cache_file else echo "not updating unwritable cache $cache_file" fi fi rm -f confcache test "x$prefix" = xNONE && prefix=$ac_default_prefix # Let make expand exec_prefix. test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' # VPATH may cause trouble with some makes, so we remove $(srcdir), # ${srcdir} and @srcdir@ from VPATH if srcdir is ".", strip leading and # trailing colons and then remove the whole line if VPATH becomes empty # (actually we leave an empty line to preserve line numbers). if test "x$srcdir" = x.; then ac_vpsub='/^[ ]*VPATH[ ]*=/{ s/:*\$(srcdir):*/:/; s/:*\${srcdir}:*/:/; s/:*@srcdir@:*/:/; s/^\([^=]*=[ ]*\):*/\1/; s/:*$//; s/^[^=]*=[ ]*$//; }' fi DEFS=-DHAVE_CONFIG_H ac_libobjs= ac_ltlibobjs= for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue # 1. Remove the extension, and $U if already installed. ac_i=`echo "$ac_i" | sed 's/\$U\././;s/\.o$//;s/\.obj$//'` # 2. Add them. ac_libobjs="$ac_libobjs $ac_i\$U.$ac_objext" ac_ltlibobjs="$ac_ltlibobjs $ac_i"'$U.lo' done LIBOBJS=$ac_libobjs LTLIBOBJS=$ac_ltlibobjs : ${CONFIG_STATUS=./config.status} ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files $CONFIG_STATUS" { echo "$as_me:$LINENO: creating $CONFIG_STATUS" >&5 echo "$as_me: creating $CONFIG_STATUS" >&6;} cat >$CONFIG_STATUS <<_ACEOF #! $SHELL # Generated by $as_me. # Run this file to recreate the current configuration. # Compiler output produced by configure, useful for debugging # configure, is in config.log if it exists. debug=false ac_cs_recheck=false ac_cs_silent=false SHELL=\${CONFIG_SHELL-$SHELL} _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF ## --------------------- ## ## M4sh Initialization. ## ## --------------------- ## # Be Bourne compatible if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then emulate sh NULLCMD=: # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then set -o posix fi DUALCASE=1; export DUALCASE # for MKS sh # Support unset when possible. if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then as_unset=unset else as_unset=false fi # Work around bugs in pre-3.0 UWIN ksh. $as_unset ENV MAIL MAILPATH PS1='$ ' PS2='> ' PS4='+ ' # NLS nuisances. for as_var in \ LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \ LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \ LC_TELEPHONE LC_TIME do if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then eval $as_var=C; export $as_var else $as_unset $as_var fi done # Required to use basename. if expr a : '\(a\)' >/dev/null 2>&1; then as_expr=expr else as_expr=false fi if (basename /) >/dev/null 2>&1 && test "X`basename / 2>&1`" = "X/"; then as_basename=basename else as_basename=false fi # Name of the executable. as_me=`$as_basename "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)$' \| \ . : '\(.\)' 2>/dev/null || echo X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/; q; } /^X\/\(\/\/\)$/{ s//\1/; q; } /^X\/\(\/\).*/{ s//\1/; q; } s/.*/./; q'` # PATH needs CR, and LINENO needs CR and PATH. # Avoid depending upon Character Ranges. as_cr_letters='abcdefghijklmnopqrstuvwxyz' as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' as_cr_Letters=$as_cr_letters$as_cr_LETTERS as_cr_digits='0123456789' as_cr_alnum=$as_cr_Letters$as_cr_digits # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then echo "#! /bin/sh" >conf$$.sh echo "exit 0" >>conf$$.sh chmod +x conf$$.sh if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then PATH_SEPARATOR=';' else PATH_SEPARATOR=: fi rm -f conf$$.sh fi as_lineno_1=$LINENO as_lineno_2=$LINENO as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` test "x$as_lineno_1" != "x$as_lineno_2" && test "x$as_lineno_3" = "x$as_lineno_2" || { # Find who we are. Look in the path if we contain no path at all # relative or not. case $0 in *[\\/]* ) as_myself=$0 ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break done ;; esac # We did not find ourselves, most probably we were run as `sh COMMAND' # in which case we are not to be found in the path. if test "x$as_myself" = x; then as_myself=$0 fi if test ! -f "$as_myself"; then { { echo "$as_me:$LINENO: error: cannot find myself; rerun with an absolute path" >&5 echo "$as_me: error: cannot find myself; rerun with an absolute path" >&2;} { (exit 1); exit 1; }; } fi case $CONFIG_SHELL in '') as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for as_base in sh bash ksh sh5; do case $as_dir in /*) if ("$as_dir/$as_base" -c ' as_lineno_1=$LINENO as_lineno_2=$LINENO as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` test "x$as_lineno_1" != "x$as_lineno_2" && test "x$as_lineno_3" = "x$as_lineno_2" ') 2>/dev/null; then $as_unset BASH_ENV || test "${BASH_ENV+set}" != set || { BASH_ENV=; export BASH_ENV; } $as_unset ENV || test "${ENV+set}" != set || { ENV=; export ENV; } CONFIG_SHELL=$as_dir/$as_base export CONFIG_SHELL exec "$CONFIG_SHELL" "$0" ${1+"$@"} fi;; esac done done ;; esac # Create $as_me.lineno as a copy of $as_myself, but with $LINENO # uniformly replaced by the line number. The first 'sed' inserts a # line-number line before each line; the second 'sed' does the real # work. The second script uses 'N' to pair each line-number line # with the numbered line, and appends trailing '-' during # substitution so that $LINENO is not a special case at line end. # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the # second 'sed' script. Blame Lee E. McMahon for sed's syntax. :-) sed '=' <$as_myself | sed ' N s,$,-, : loop s,^\(['$as_cr_digits']*\)\(.*\)[$]LINENO\([^'$as_cr_alnum'_]\),\1\2\1\3, t loop s,-$,, s,^['$as_cr_digits']*\n,, ' >$as_me.lineno && chmod +x $as_me.lineno || { { echo "$as_me:$LINENO: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&5 echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2;} { (exit 1); exit 1; }; } # Don't try to exec as it changes $[0], causing all sort of problems # (the dirname of $[0] is not the place where we might find the # original and so on. Autoconf is especially sensible to this). . ./$as_me.lineno # Exit status is that of the last command. exit } case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in *c*,-n*) ECHO_N= ECHO_C=' ' ECHO_T=' ' ;; *c*,* ) ECHO_N=-n ECHO_C= ECHO_T= ;; *) ECHO_N= ECHO_C='\c' ECHO_T= ;; esac if expr a : '\(a\)' >/dev/null 2>&1; then as_expr=expr else as_expr=false fi rm -f conf$$ conf$$.exe conf$$.file echo >conf$$.file if ln -s conf$$.file conf$$ 2>/dev/null; then # We could just check for DJGPP; but this test a) works b) is more generic # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04). if test -f conf$$.exe; then # Don't use ln at all; we don't have any links as_ln_s='cp -p' else as_ln_s='ln -s' fi elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -p' fi rm -f conf$$ conf$$.exe conf$$.file if mkdir -p . 2>/dev/null; then as_mkdir_p=: else test -d ./-p && rmdir ./-p as_mkdir_p=false fi as_executable_p="test -f" # Sed expression to map a string onto a valid CPP name. as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" # Sed expression to map a string onto a valid variable name. as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" # IFS # We need space, tab and new line, in precisely that order. as_nl=' ' IFS=" $as_nl" # CDPATH. $as_unset CDPATH exec 6>&1 # Open the log real soon, to keep \$[0] and so on meaningful, and to # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. Logging --version etc. is OK. exec 5>>config.log { echo sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX ## Running $as_me. ## _ASBOX } >&5 cat >&5 <<_CSEOF This file was extended by omniEvents $as_me 2.6.2, which was generated by GNU Autoconf 2.59. Invocation command line was CONFIG_FILES = $CONFIG_FILES CONFIG_HEADERS = $CONFIG_HEADERS CONFIG_LINKS = $CONFIG_LINKS CONFIG_COMMANDS = $CONFIG_COMMANDS $ $0 $@ _CSEOF echo "on `(hostname || uname -n) 2>/dev/null | sed 1q`" >&5 echo >&5 _ACEOF # Files that config.status was made for. if test -n "$ac_config_files"; then echo "config_files=\"$ac_config_files\"" >>$CONFIG_STATUS fi if test -n "$ac_config_headers"; then echo "config_headers=\"$ac_config_headers\"" >>$CONFIG_STATUS fi if test -n "$ac_config_links"; then echo "config_links=\"$ac_config_links\"" >>$CONFIG_STATUS fi if test -n "$ac_config_commands"; then echo "config_commands=\"$ac_config_commands\"" >>$CONFIG_STATUS fi cat >>$CONFIG_STATUS <<\_ACEOF ac_cs_usage="\ \`$as_me' instantiates files from templates according to the current configuration. Usage: $0 [OPTIONS] [FILE]... -h, --help print this help, then exit -V, --version print version number, then exit -q, --quiet do not print progress messages -d, --debug don't remove temporary files --recheck update $as_me by reconfiguring in the same conditions --file=FILE[:TEMPLATE] instantiate the configuration file FILE --header=FILE[:TEMPLATE] instantiate the configuration header FILE Configuration files: $config_files Configuration headers: $config_headers Report bugs to ." _ACEOF cat >>$CONFIG_STATUS <<_ACEOF ac_cs_version="\\ omniEvents config.status 2.6.2 configured by $0, generated by GNU Autoconf 2.59, with options \\"`echo "$ac_configure_args" | sed 's/[\\""\`\$]/\\\\&/g'`\\" Copyright (C) 2003 Free Software Foundation, Inc. This config.status script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it." srcdir=$srcdir INSTALL="$INSTALL" _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF # If no file are specified by the user, then we need to provide default # value. By we need to know if files were specified by the user. ac_need_defaults=: while test $# != 0 do case $1 in --*=*) ac_option=`expr "x$1" : 'x\([^=]*\)='` ac_optarg=`expr "x$1" : 'x[^=]*=\(.*\)'` ac_shift=: ;; -*) ac_option=$1 ac_optarg=$2 ac_shift=shift ;; *) # This is not an option, so the user has probably given explicit # arguments. ac_option=$1 ac_need_defaults=false;; esac case $ac_option in # Handling of the options. _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) ac_cs_recheck=: ;; --version | --vers* | -V ) echo "$ac_cs_version"; exit 0 ;; --he | --h) # Conflict between --help and --header { { echo "$as_me:$LINENO: error: ambiguous option: $1 Try \`$0 --help' for more information." >&5 echo "$as_me: error: ambiguous option: $1 Try \`$0 --help' for more information." >&2;} { (exit 1); exit 1; }; };; --help | --hel | -h ) echo "$ac_cs_usage"; exit 0 ;; --debug | --d* | -d ) debug=: ;; --file | --fil | --fi | --f ) $ac_shift CONFIG_FILES="$CONFIG_FILES $ac_optarg" ac_need_defaults=false;; --header | --heade | --head | --hea ) $ac_shift CONFIG_HEADERS="$CONFIG_HEADERS $ac_optarg" ac_need_defaults=false;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil | --si | --s) ac_cs_silent=: ;; # This is an error. -*) { { echo "$as_me:$LINENO: error: unrecognized option: $1 Try \`$0 --help' for more information." >&5 echo "$as_me: error: unrecognized option: $1 Try \`$0 --help' for more information." >&2;} { (exit 1); exit 1; }; } ;; *) ac_config_targets="$ac_config_targets $1" ;; esac shift done ac_configure_extra_args= if $ac_cs_silent; then exec 6>/dev/null ac_configure_extra_args="$ac_configure_extra_args --silent" fi _ACEOF cat >>$CONFIG_STATUS <<_ACEOF if \$ac_cs_recheck; then echo "running $SHELL $0 " $ac_configure_args \$ac_configure_extra_args " --no-create --no-recursion" >&6 exec $SHELL $0 $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion fi _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF for ac_config_target in $ac_config_targets do case "$ac_config_target" in # Handling of arguments. "config.mk" ) CONFIG_FILES="$CONFIG_FILES config.mk" ;; "etc/init.d/omniorb-eventservice" ) CONFIG_FILES="$CONFIG_FILES etc/init.d/omniorb-eventservice" ;; "contrib/omniEvents.pc" ) CONFIG_FILES="$CONFIG_FILES contrib/omniEvents.pc" ;; "src/config.h" ) CONFIG_HEADERS="$CONFIG_HEADERS src/config.h" ;; *) { { echo "$as_me:$LINENO: error: invalid argument: $ac_config_target" >&5 echo "$as_me: error: invalid argument: $ac_config_target" >&2;} { (exit 1); exit 1; }; };; esac done # If the user did not use the arguments to specify the items to instantiate, # then the envvar interface is used. Set only those that are not. # We use the long form for the default assignment because of an extremely # bizarre bug on SunOS 4.1.3. if $ac_need_defaults; then test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers fi # Have a temporary directory for convenience. Make it in the build tree # simply because there is no reason to put it here, and in addition, # creating and moving files from /tmp can sometimes cause problems. # Create a temporary directory, and hook for its removal unless debugging. $debug || { trap 'exit_status=$?; rm -rf $tmp && exit $exit_status' 0 trap '{ (exit 1); exit 1; }' 1 2 13 15 } # Create a (secure) tmp directory for tmp files. { tmp=`(umask 077 && mktemp -d -q "./confstatXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" } || { tmp=./confstat$$-$RANDOM (umask 077 && mkdir $tmp) } || { echo "$me: cannot create a temporary directory in ." >&2 { (exit 1); exit 1; } } _ACEOF cat >>$CONFIG_STATUS <<_ACEOF # # CONFIG_FILES section. # # No need to generate the scripts if there are no CONFIG_FILES. # This happens for instance when ./config.status config.h if test -n "\$CONFIG_FILES"; then # Protect against being on the right side of a sed subst in config.status. sed 's/,@/@@/; s/@,/@@/; s/,;t t\$/@;t t/; /@;t t\$/s/[\\\\&,]/\\\\&/g; s/@@/,@/; s/@@/@,/; s/@;t t\$/,;t t/' >\$tmp/subs.sed <<\\CEOF s,@SHELL@,$SHELL,;t t s,@PATH_SEPARATOR@,$PATH_SEPARATOR,;t t s,@PACKAGE_NAME@,$PACKAGE_NAME,;t t s,@PACKAGE_TARNAME@,$PACKAGE_TARNAME,;t t s,@PACKAGE_VERSION@,$PACKAGE_VERSION,;t t s,@PACKAGE_STRING@,$PACKAGE_STRING,;t t s,@PACKAGE_BUGREPORT@,$PACKAGE_BUGREPORT,;t t s,@exec_prefix@,$exec_prefix,;t t s,@prefix@,$prefix,;t t s,@program_transform_name@,$program_transform_name,;t t s,@bindir@,$bindir,;t t s,@sbindir@,$sbindir,;t t s,@libexecdir@,$libexecdir,;t t s,@datadir@,$datadir,;t t s,@sysconfdir@,$sysconfdir,;t t s,@sharedstatedir@,$sharedstatedir,;t t s,@localstatedir@,$localstatedir,;t t s,@libdir@,$libdir,;t t s,@includedir@,$includedir,;t t s,@oldincludedir@,$oldincludedir,;t t s,@infodir@,$infodir,;t t s,@mandir@,$mandir,;t t s,@build_alias@,$build_alias,;t t s,@host_alias@,$host_alias,;t t s,@target_alias@,$target_alias,;t t s,@DEFS@,$DEFS,;t t s,@ECHO_C@,$ECHO_C,;t t s,@ECHO_N@,$ECHO_N,;t t s,@ECHO_T@,$ECHO_T,;t t s,@LIBS@,$LIBS,;t t s,@CXX@,$CXX,;t t s,@CXXFLAGS@,$CXXFLAGS,;t t s,@LDFLAGS@,$LDFLAGS,;t t s,@CPPFLAGS@,$CPPFLAGS,;t t s,@ac_ct_CXX@,$ac_ct_CXX,;t t s,@EXEEXT@,$EXEEXT,;t t s,@OBJEXT@,$OBJEXT,;t t s,@CC@,$CC,;t t s,@CFLAGS@,$CFLAGS,;t t s,@ac_ct_CC@,$ac_ct_CC,;t t s,@INSTALL_PROGRAM@,$INSTALL_PROGRAM,;t t s,@INSTALL_SCRIPT@,$INSTALL_SCRIPT,;t t s,@INSTALL_DATA@,$INSTALL_DATA,;t t s,@SET_MAKE@,$SET_MAKE,;t t s,@ALLOCA@,$ALLOCA,;t t s,@CXXCPP@,$CXXCPP,;t t s,@EGREP@,$EGREP,;t t s,@CXXFLAGS_PTR@,$CXXFLAGS_PTR,;t t s,@build@,$build,;t t s,@build_cpu@,$build_cpu,;t t s,@build_vendor@,$build_vendor,;t t s,@build_os@,$build_os,;t t s,@host@,$host,;t t s,@host_cpu@,$host_cpu,;t t s,@host_vendor@,$host_vendor,;t t s,@host_os@,$host_os,;t t s,@CXX_AR@,$CXX_AR,;t t s,@CXX_LINK_SO_LIB@,$CXX_LINK_SO_LIB,;t t s,@LD_LIBRARY_PATH_NAME@,$LD_LIBRARY_PATH_NAME,;t t s,@SOEXT@,$SOEXT,;t t s,@LIBOBJS@,$LIBOBJS,;t t s,@ETR_SOCKET_LIBS@,$ETR_SOCKET_LIBS,;t t s,@PTHREAD_CC@,$PTHREAD_CC,;t t s,@PTHREAD_LIBS@,$PTHREAD_LIBS,;t t s,@PTHREAD_CFLAGS@,$PTHREAD_CFLAGS,;t t s,@PLATFORM_NAME@,$PLATFORM_NAME,;t t s,@PLATFORM_DEFINITION@,$PLATFORM_DEFINITION,;t t s,@OSVERSION@,$OSVERSION,;t t s,@PROCESSOR_NAME@,$PROCESSOR_NAME,;t t s,@PROCESSOR_DEFINITION@,$PROCESSOR_DEFINITION,;t t s,@CORBA_ORB@,$CORBA_ORB,;t t s,@IDL_CPPFLAGS@,$IDL_CPPFLAGS,;t t s,@IDL@,$IDL,;t t s,@IDL_COS_DIR@,$IDL_COS_DIR,;t t s,@INSTALL_ETC@,$INSTALL_ETC,;t t s,@SYSCONFIG_DIR@,$SYSCONFIG_DIR,;t t s,@HAVE_GETHOSTNAME@,$HAVE_GETHOSTNAME,;t t s,@LTLIBOBJS@,$LTLIBOBJS,;t t CEOF _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF # Split the substitutions into bite-sized pieces for seds with # small command number limits, like on Digital OSF/1 and HP-UX. ac_max_sed_lines=48 ac_sed_frag=1 # Number of current file. ac_beg=1 # First line for current file. ac_end=$ac_max_sed_lines # Line after last line for current file. ac_more_lines=: ac_sed_cmds= while $ac_more_lines; do if test $ac_beg -gt 1; then sed "1,${ac_beg}d; ${ac_end}q" $tmp/subs.sed >$tmp/subs.frag else sed "${ac_end}q" $tmp/subs.sed >$tmp/subs.frag fi if test ! -s $tmp/subs.frag; then ac_more_lines=false else # The purpose of the label and of the branching condition is to # speed up the sed processing (if there are no `@' at all, there # is no need to browse any of the substitutions). # These are the two extra sed commands mentioned above. (echo ':t /@[a-zA-Z_][a-zA-Z_0-9]*@/!b' && cat $tmp/subs.frag) >$tmp/subs-$ac_sed_frag.sed if test -z "$ac_sed_cmds"; then ac_sed_cmds="sed -f $tmp/subs-$ac_sed_frag.sed" else ac_sed_cmds="$ac_sed_cmds | sed -f $tmp/subs-$ac_sed_frag.sed" fi ac_sed_frag=`expr $ac_sed_frag + 1` ac_beg=$ac_end ac_end=`expr $ac_end + $ac_max_sed_lines` fi done if test -z "$ac_sed_cmds"; then ac_sed_cmds=cat fi fi # test -n "$CONFIG_FILES" _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF for ac_file in : $CONFIG_FILES; do test "x$ac_file" = x: && continue # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in". case $ac_file in - | *:- | *:-:* ) # input from stdin cat >$tmp/stdin ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; * ) ac_file_in=$ac_file.in ;; esac # Compute @srcdir@, @top_srcdir@, and @INSTALL@ for subdirectories. ac_dir=`(dirname "$ac_file") 2>/dev/null || $as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$ac_file" : 'X\(//\)[^/]' \| \ X"$ac_file" : 'X\(//\)$' \| \ X"$ac_file" : 'X\(/\)' \| \ . : '\(.\)' 2>/dev/null || echo X"$ac_file" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } /^X\(\/\/\)[^/].*/{ s//\1/; q; } /^X\(\/\/\)$/{ s//\1/; q; } /^X\(\/\).*/{ s//\1/; q; } s/.*/./; q'` { if $as_mkdir_p; then mkdir -p "$ac_dir" else as_dir="$ac_dir" as_dirs= while test ! -d "$as_dir"; do as_dirs="$as_dir $as_dirs" as_dir=`(dirname "$as_dir") 2>/dev/null || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| \ . : '\(.\)' 2>/dev/null || echo X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } /^X\(\/\/\)[^/].*/{ s//\1/; q; } /^X\(\/\/\)$/{ s//\1/; q; } /^X\(\/\).*/{ s//\1/; q; } s/.*/./; q'` done test ! -n "$as_dirs" || mkdir $as_dirs fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5 echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;} { (exit 1); exit 1; }; }; } ac_builddir=. if test "$ac_dir" != .; then ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` # A "../" for each directory in $ac_dir_suffix. ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'` else ac_dir_suffix= ac_top_builddir= fi case $srcdir in .) # No --srcdir option. We are building in place. ac_srcdir=. if test -z "$ac_top_builddir"; then ac_top_srcdir=. else ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'` fi ;; [\\/]* | ?:[\\/]* ) # Absolute path. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ;; *) # Relative path. ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_builddir$srcdir ;; esac # Do not use `cd foo && pwd` to compute absolute paths, because # the directories may not exist. case `pwd` in .) ac_abs_builddir="$ac_dir";; *) case "$ac_dir" in .) ac_abs_builddir=`pwd`;; [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";; *) ac_abs_builddir=`pwd`/"$ac_dir";; esac;; esac case $ac_abs_builddir in .) ac_abs_top_builddir=${ac_top_builddir}.;; *) case ${ac_top_builddir}. in .) ac_abs_top_builddir=$ac_abs_builddir;; [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;; *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;; esac;; esac case $ac_abs_builddir in .) ac_abs_srcdir=$ac_srcdir;; *) case $ac_srcdir in .) ac_abs_srcdir=$ac_abs_builddir;; [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;; *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;; esac;; esac case $ac_abs_builddir in .) ac_abs_top_srcdir=$ac_top_srcdir;; *) case $ac_top_srcdir in .) ac_abs_top_srcdir=$ac_abs_builddir;; [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;; *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;; esac;; esac case $INSTALL in [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; *) ac_INSTALL=$ac_top_builddir$INSTALL ;; esac # Let's still pretend it is `configure' which instantiates (i.e., don't # use $as_me), people would be surprised to read: # /* config.h. Generated by config.status. */ if test x"$ac_file" = x-; then configure_input= else configure_input="$ac_file. " fi configure_input=$configure_input"Generated from `echo $ac_file_in | sed 's,.*/,,'` by configure." # First look for the input files in the build tree, otherwise in the # src tree. ac_file_inputs=`IFS=: for f in $ac_file_in; do case $f in -) echo $tmp/stdin ;; [\\/$]*) # Absolute (can't be DOS-style, as IFS=:) test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 echo "$as_me: error: cannot find input file: $f" >&2;} { (exit 1); exit 1; }; } echo "$f";; *) # Relative if test -f "$f"; then # Build tree echo "$f" elif test -f "$srcdir/$f"; then # Source tree echo "$srcdir/$f" else # /dev/null tree { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 echo "$as_me: error: cannot find input file: $f" >&2;} { (exit 1); exit 1; }; } fi;; esac done` || { (exit 1); exit 1; } if test x"$ac_file" != x-; then { echo "$as_me:$LINENO: creating $ac_file" >&5 echo "$as_me: creating $ac_file" >&6;} rm -f "$ac_file" fi _ACEOF cat >>$CONFIG_STATUS <<_ACEOF sed "$ac_vpsub $extrasub _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF :t /@[a-zA-Z_][a-zA-Z_0-9]*@/!b s,@configure_input@,$configure_input,;t t s,@srcdir@,$ac_srcdir,;t t s,@abs_srcdir@,$ac_abs_srcdir,;t t s,@top_srcdir@,$ac_top_srcdir,;t t s,@abs_top_srcdir@,$ac_abs_top_srcdir,;t t s,@builddir@,$ac_builddir,;t t s,@abs_builddir@,$ac_abs_builddir,;t t s,@top_builddir@,$ac_top_builddir,;t t s,@abs_top_builddir@,$ac_abs_top_builddir,;t t s,@INSTALL@,$ac_INSTALL,;t t " $ac_file_inputs | (eval "$ac_sed_cmds") >$tmp/out rm -f $tmp/stdin if test x"$ac_file" != x-; then mv $tmp/out $ac_file else cat $tmp/out rm -f $tmp/out fi done _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF # # CONFIG_HEADER section. # # These sed commands are passed to sed as "A NAME B NAME C VALUE D", where # NAME is the cpp macro being defined and VALUE is the value it is being given. # # ac_d sets the value in "#define NAME VALUE" lines. ac_dA='s,^\([ ]*\)#\([ ]*define[ ][ ]*\)' ac_dB='[ ].*$,\1#\2' ac_dC=' ' ac_dD=',;t' # ac_u turns "#undef NAME" without trailing blanks into "#define NAME VALUE". ac_uA='s,^\([ ]*\)#\([ ]*\)undef\([ ][ ]*\)' ac_uB='$,\1#\2define\3' ac_uC=' ' ac_uD=',;t' for ac_file in : $CONFIG_HEADERS; do test "x$ac_file" = x: && continue # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in". case $ac_file in - | *:- | *:-:* ) # input from stdin cat >$tmp/stdin ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; * ) ac_file_in=$ac_file.in ;; esac test x"$ac_file" != x- && { echo "$as_me:$LINENO: creating $ac_file" >&5 echo "$as_me: creating $ac_file" >&6;} # First look for the input files in the build tree, otherwise in the # src tree. ac_file_inputs=`IFS=: for f in $ac_file_in; do case $f in -) echo $tmp/stdin ;; [\\/$]*) # Absolute (can't be DOS-style, as IFS=:) test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 echo "$as_me: error: cannot find input file: $f" >&2;} { (exit 1); exit 1; }; } # Do quote $f, to prevent DOS paths from being IFS'd. echo "$f";; *) # Relative if test -f "$f"; then # Build tree echo "$f" elif test -f "$srcdir/$f"; then # Source tree echo "$srcdir/$f" else # /dev/null tree { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 echo "$as_me: error: cannot find input file: $f" >&2;} { (exit 1); exit 1; }; } fi;; esac done` || { (exit 1); exit 1; } # Remove the trailing spaces. sed 's/[ ]*$//' $ac_file_inputs >$tmp/in _ACEOF # Transform confdefs.h into two sed scripts, `conftest.defines' and # `conftest.undefs', that substitutes the proper values into # config.h.in to produce config.h. The first handles `#define' # templates, and the second `#undef' templates. # And first: Protect against being on the right side of a sed subst in # config.status. Protect against being in an unquoted here document # in config.status. rm -f conftest.defines conftest.undefs # Using a here document instead of a string reduces the quoting nightmare. # Putting comments in sed scripts is not portable. # # `end' is used to avoid that the second main sed command (meant for # 0-ary CPP macros) applies to n-ary macro definitions. # See the Autoconf documentation for `clear'. cat >confdef2sed.sed <<\_ACEOF s/[\\&,]/\\&/g s,[\\$`],\\&,g t clear : clear s,^[ ]*#[ ]*define[ ][ ]*\([^ (][^ (]*\)\(([^)]*)\)[ ]*\(.*\)$,${ac_dA}\1${ac_dB}\1\2${ac_dC}\3${ac_dD},gp t end s,^[ ]*#[ ]*define[ ][ ]*\([^ ][^ ]*\)[ ]*\(.*\)$,${ac_dA}\1${ac_dB}\1${ac_dC}\2${ac_dD},gp : end _ACEOF # If some macros were called several times there might be several times # the same #defines, which is useless. Nevertheless, we may not want to # sort them, since we want the *last* AC-DEFINE to be honored. uniq confdefs.h | sed -n -f confdef2sed.sed >conftest.defines sed 's/ac_d/ac_u/g' conftest.defines >conftest.undefs rm -f confdef2sed.sed # This sed command replaces #undef with comments. This is necessary, for # example, in the case of _POSIX_SOURCE, which is predefined and required # on some systems where configure will not decide to define it. cat >>conftest.undefs <<\_ACEOF s,^[ ]*#[ ]*undef[ ][ ]*[a-zA-Z_][a-zA-Z_0-9]*,/* & */, _ACEOF # Break up conftest.defines because some shells have a limit on the size # of here documents, and old seds have small limits too (100 cmds). echo ' # Handle all the #define templates only if necessary.' >>$CONFIG_STATUS echo ' if grep "^[ ]*#[ ]*define" $tmp/in >/dev/null; then' >>$CONFIG_STATUS echo ' # If there are no defines, we may have an empty if/fi' >>$CONFIG_STATUS echo ' :' >>$CONFIG_STATUS rm -f conftest.tail while grep . conftest.defines >/dev/null do # Write a limited-size here document to $tmp/defines.sed. echo ' cat >$tmp/defines.sed <>$CONFIG_STATUS # Speed up: don't consider the non `#define' lines. echo '/^[ ]*#[ ]*define/!b' >>$CONFIG_STATUS # Work around the forget-to-reset-the-flag bug. echo 't clr' >>$CONFIG_STATUS echo ': clr' >>$CONFIG_STATUS sed ${ac_max_here_lines}q conftest.defines >>$CONFIG_STATUS echo 'CEOF sed -f $tmp/defines.sed $tmp/in >$tmp/out rm -f $tmp/in mv $tmp/out $tmp/in ' >>$CONFIG_STATUS sed 1,${ac_max_here_lines}d conftest.defines >conftest.tail rm -f conftest.defines mv conftest.tail conftest.defines done rm -f conftest.defines echo ' fi # grep' >>$CONFIG_STATUS echo >>$CONFIG_STATUS # Break up conftest.undefs because some shells have a limit on the size # of here documents, and old seds have small limits too (100 cmds). echo ' # Handle all the #undef templates' >>$CONFIG_STATUS rm -f conftest.tail while grep . conftest.undefs >/dev/null do # Write a limited-size here document to $tmp/undefs.sed. echo ' cat >$tmp/undefs.sed <>$CONFIG_STATUS # Speed up: don't consider the non `#undef' echo '/^[ ]*#[ ]*undef/!b' >>$CONFIG_STATUS # Work around the forget-to-reset-the-flag bug. echo 't clr' >>$CONFIG_STATUS echo ': clr' >>$CONFIG_STATUS sed ${ac_max_here_lines}q conftest.undefs >>$CONFIG_STATUS echo 'CEOF sed -f $tmp/undefs.sed $tmp/in >$tmp/out rm -f $tmp/in mv $tmp/out $tmp/in ' >>$CONFIG_STATUS sed 1,${ac_max_here_lines}d conftest.undefs >conftest.tail rm -f conftest.undefs mv conftest.tail conftest.undefs done rm -f conftest.undefs cat >>$CONFIG_STATUS <<\_ACEOF # Let's still pretend it is `configure' which instantiates (i.e., don't # use $as_me), people would be surprised to read: # /* config.h. Generated by config.status. */ if test x"$ac_file" = x-; then echo "/* Generated by configure. */" >$tmp/config.h else echo "/* $ac_file. Generated by configure. */" >$tmp/config.h fi cat $tmp/in >>$tmp/config.h rm -f $tmp/in if test x"$ac_file" != x-; then if diff $ac_file $tmp/config.h >/dev/null 2>&1; then { echo "$as_me:$LINENO: $ac_file is unchanged" >&5 echo "$as_me: $ac_file is unchanged" >&6;} else ac_dir=`(dirname "$ac_file") 2>/dev/null || $as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$ac_file" : 'X\(//\)[^/]' \| \ X"$ac_file" : 'X\(//\)$' \| \ X"$ac_file" : 'X\(/\)' \| \ . : '\(.\)' 2>/dev/null || echo X"$ac_file" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } /^X\(\/\/\)[^/].*/{ s//\1/; q; } /^X\(\/\/\)$/{ s//\1/; q; } /^X\(\/\).*/{ s//\1/; q; } s/.*/./; q'` { if $as_mkdir_p; then mkdir -p "$ac_dir" else as_dir="$ac_dir" as_dirs= while test ! -d "$as_dir"; do as_dirs="$as_dir $as_dirs" as_dir=`(dirname "$as_dir") 2>/dev/null || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| \ . : '\(.\)' 2>/dev/null || echo X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } /^X\(\/\/\)[^/].*/{ s//\1/; q; } /^X\(\/\/\)$/{ s//\1/; q; } /^X\(\/\).*/{ s//\1/; q; } s/.*/./; q'` done test ! -n "$as_dirs" || mkdir $as_dirs fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5 echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;} { (exit 1); exit 1; }; }; } rm -f $ac_file mv $tmp/config.h $ac_file fi else cat $tmp/config.h rm -f $tmp/config.h fi done _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF { (exit 0); exit 0; } _ACEOF chmod +x $CONFIG_STATUS ac_clean_files=$ac_clean_files_save # configure is writing to config.log, and then calls config.status. # config.status does its own redirection, appending to config.log. # Unfortunately, on DOS this fails, as config.log is still kept open # by configure, so config.status won't be able to write to it; its # output is simply discarded. So we exec the FD to /dev/null, # effectively closing config.log, so it can be properly (re)opened and # appended to by config.status. When coming back to configure, we # need to make the FD available again. if test "$no_create" != yes; then ac_cs_success=: ac_config_status_args= test "$silent" = yes && ac_config_status_args="$ac_config_status_args --quiet" exec 5>/dev/null $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false exec 5>>config.log # Use ||, not &&, to avoid exiting from the if with $? = 1, which # would make configure fail if this is the last instruction. $ac_cs_success || { (exit 1); exit 1; } fi omniEvents-2_6_2/configure.ac0000644000076400001440000001037410260316165016421 0ustar alexusers00000000000000# Package : omniEvents # configure.ac Created : 2003/10/31 # Author : Alex Tingle # # Copyright (C) 2003-2005 Alex Tingle. # # This file is part of the omniEvents application. # # omniEvents is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either # version 2.1 of the License, or (at your option) any later version. # # omniEvents is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public # License along with this library; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # # Set up autoheader AH_BOTTOM([ /* Clean away the PACKAGE_* macros unless they are needed. */ #include "scour.h" ]) # Process this file with autoconf to produce a configure script. AC_INIT(omniEvents,2.6.2,alex.omnievents@firetree.net) AC_CONFIG_AUX_DIR(auto) AC_CONFIG_SRCDIR([src/omniEvents.cc]) AC_CONFIG_HEADER([src/config.h]) ac_omniorbbase="$OMNIORBBASE" # Checks for programs. AC_PROG_CXX AC_PROG_CC AC_PROG_INSTALL AC_PROG_MAKE_SET AC_LANG([C++]) # Checks for header files. AC_FUNC_ALLOCA AC_HEADER_STDC AC_CHECK_HEADERS([fcntl.h malloc.h stdlib.h string.h strings.h syslog.h sys/param.h unistd.h process.h signal.h libc.h sys/utsname.h]) # Checks for typedefs, structures, and compiler characteristics. AC_C_CONST AC_C_INLINE AC_TYPE_SIZE_T # Checks for C++ features AC_CXX_NAMESPACES AC_CXX_HAVE_STL AC_CXX_STD AC_CXX_BOOL AC_CXX_TEMPLATE_REPOSITORY AC_CXX_PIC_FLAG AC_CXX_RTTI_FLAG AC_PROG_CXX_AR AC_PROG_CXX_LINK_SO_LIB # Checks for library functions. AC_FUNC_MALLOC AC_TYPE_SIGNAL AC_FUNC_STAT AC_FUNC_SIGSET AC_CHECK_FUNCS([gethostname strchr strdup tzset uname getopt on_exit]) # Checks for libraries. # Corba (Needs to go last, as it sets some libraries that may not run without # LD_LIBRARY_PATH being set. AC_CORBA_ORB AC_CORBA_IDLCOS # Check for SysV-style init.d directory. AC_MSG_CHECKING([for SysV-style init.d directory]) if test -d /etc/init.d ; then AC_MSG_RESULT([/etc/init.d]) AC_SUBST(INSTALL_ETC,/etc) elif test -d /sbin/init.d ; then AC_MSG_RESULT([/sbin/init.d]) AC_SUBST(INSTALL_ETC,/sbin) else AC_MSG_RESULT([no. Using default /etc/init.d]) AC_SUBST(INSTALL_ETC,/etc) fi # Check for SysV-style /etc/default or BSD style /etc/sysconfig directories. AC_MSG_CHECKING([for SysV or BSD-style config directory]) if test -d /etc/default ; then AC_MSG_RESULT([/etc/default]) AC_SUBST(SYSCONFIG_DIR,/etc/default) elif test -d /etc/sysconfig ; then AC_MSG_RESULT([/etc/sysconfig]) AC_SUBST(SYSCONFIG_DIR,/etc/sysconfig) else AC_MSG_RESULT([no. Using default /etc/default]) AC_SUBST(SYSCONFIG_DIR,/etc/default) fi if test "x$ac_cv_func_gethostname" = x ; then AC_SUBST(HAVE_GETHOSTNAME,no) else AC_SUBST(HAVE_GETHOSTNAME,yes) fi # Write a summary of the most important results. echo "+-----------------------------------------------------------------------------+" echo "| C++ : $CXX" echo "| C++ STL : $ac_cv_cxx_have_stl" case "$CORBA_ORB" in omniORB3) echo "| CORBA ORB : $ac_cv_corba_omniorb3 (omniORB3)" ;; omniORB4) echo "| CORBA ORB : $ac_cv_corba_omniorb4 (omniORB4)" ;; *) echo "| CORBA ORB : NONE FOUND" ;; esac echo "| omniidl : $IDL" if test "x$OMNIORBBASE" != x; then echo "+-----------------------------------------------------------------------------+" if test "x$OMNIORBBASE" = "x$ac_omniorbbase"; then echo "| NOTE: omniORB search restricted by OMNIORBBASE=$ac_omniorbbase" echo "| To override, try 'unset OMNIORBBASE' or option '--with-omniorb'" else echo "| NOTE: omniORB search restricted by --with-omniorb=$OMNIORBBASE" fi fi echo "+-----------------------------------------------------------------------------+" AC_CONFIG_FILES([config.mk etc/init.d/omniorb-eventservice contrib/omniEvents.pc]) AC_OUTPUT omniEvents-2_6_2/meta.mk0000644000076400001440000001257210303643130015405 0ustar alexusers00000000000000# Package : omniEvents # meta.mk Created : 2003/11/01 # Author : Alex Tingle # # Copyright (C) 2003..2005 Alex Tingle. # # This file is part of the omniEvents application. # # omniEvents is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either # version 2.1 of the License, or (at your option) any later version. # # omniEvents is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public # License along with this library; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # # Description: # # A rag-bag of meta-actions. # # o `make -f meta.mk deps' - Update all deps.mk files. # # o `make -f meta.mk src' - Builds a 'release' tarball that contains all # non-generated files (and */deps.mk - for convenience). # # o `make -f meta.mk win32' - Builds a 'win32' zip that contains binary win32 # files and library headers. # include config.mk DIRNAME := $(shell basename `pwd`) SUBDIRS := idl src tools examples DEP_FILES := $(patsubst %,%/deps.mk,$(SUBDIRS)) TAR = cd ..; tar zcvf $(DIRNAME)-$@.tar.gz -X xfiles $(DIRNAME) MAKEDEPS := python $(OMNIEVENTS_BASE)/auto/makedeps.py MAKEDEPS_INCLUDES := $(filter-out -I$(prefix)/include,$(filter -I%,$(CPPFLAGS))) MAKEDEPS_FLAGS := $(MAKEDEPS_INCLUDES) --exclude=CosNaming EXCLUDE_FROM_RELEASE :=\ */.* *.bak *.o *.out *.so *.a *.rej *.orig *.pc *~ \ */CVS* \ */autom4te.cache* \ */templates.d* \ */aclocal.m4 \ */config.log \ */config.status \ *_SAVE \ */etc/init.d/omniorb-eventservice deps: compile_idl_files cleandeps $(DEP_FILES) cleandeps: rm -f $(DEP_FILES) compile_idl_files: make -C idl compile_idl_files $(DEP_FILES): echo "Remaking dependencies in $(@D)" cd $(@D) ; $(MAKEDEPS) $(MAKEDEPS_FLAGS) *.cc > $(@F) src: deps doc make clean mv config.mk config.mk_SAVE; mv src/config.h config.h_SAVE cp win32/config.mk config.mk; cp win32/config.h src/config.h echo "$(EXCLUDE_FROM_RELEASE)" | tr ' ' '\n' > ../xfiles $(TAR) rm -f ../xfiles mv config.mk_SAVE config.mk; mv config.h_SAVE src/config.h .PHONY: deps cleandeps compile_idl_files src # Builds a win32 binary release. # Precondition: make must already have been run. FindFiles = $(foreach ext, $(2), $(wildcard $(1)/*.$(ext))) WIN32_TEXT_FILES = README LICENSE $(wildcard CHANGES*) examples/python/README WIN32_FILES = \ $(patsubst %,%.txt,$(WIN32_TEXT_FILES)) \ omniEvents.exe \ $(call FindFiles,doc,html css) \ $(call FindFiles,tools,exe) \ $(call FindFiles,examples,hh cc exe) \ $(call FindFiles,examples/python,py) \ $(call FindFiles,examples/python/*,py) \ $(call FindFiles,idl,hh cc idl lib) \ .PHONY: win32 win32: README docbook $(DIRNAME) $(patsubst %,$(DIRNAME)/%,$(WIN32_FILES)) install src/getopt.h src/getopt.cc $(DIRNAME)/examples install src/naming.h src/naming.cc $(DIRNAME)/examples install src/config.h src/scour.h $(DIRNAME)/examples zip -r $(DIRNAME)-$@.zip $(DIRNAME) # rm -rf $(DIRNAME) $(DIRNAME): install -d $(DIRNAME) $(DIRNAME)/%.txt: % install -d `dirname $@` sed 's/$$/ /' $< > $@ $(DIRNAME)/omniEvents.exe: src/omniEvents.exe install -d `dirname $@` install $< $@ $(DIRNAME)/%: % install -d `dirname $@` install $< $@ ## ## DOCUMENTATION ## doc: doxygen README docbook manpages doxygen: doxygen doc/rc/doxygen.conf README: doc/omnievents.docbook.xml python doc/rc/docbook2text.py $< > $@ XSL := xsltproc XSLFLAGS := \ --stringparam make.valid.html 1 \ --stringparam chunker.output.indent yes \ --stringparam section.autolabel 1 \ --stringparam annotate.toc 1 \ --stringparam generate.section.toc.level 1 \ --stringparam chunk.first.sections 1 \ --stringparam html.stylesheet omnievents.docbook.css BaseDir = --stringparam base.dir $(1) docbook: doc/index.html doc/index.html: doc/omnievents.docbook.xml $(XSL) $(XSLFLAGS) $(call BaseDir,$(@D)/) $(DOCBOOK)/html/chunk.xsl $< manpages: doc/man/omniEvents.8 doc/man/omniEvents.8: doc/omnievents.docbook.xml cd doc/man; $(XSL) $(DOCBOOK)/manpages/docbook.xsl ../$(. # Please send patches to . Submit a context # diff and a properly formatted ChangeLog entry. # # This script attempts to guess a canonical system name similar to # config.sub. If it succeeds, it prints the system name on stdout, and # exits with 0. Otherwise, it exits with 1. # # The plan is that this can be called by configure scripts if you # don't specify an explicit build system type. me=`echo "$0" | sed -e 's,.*/,,'` usage="\ Usage: $0 [OPTION] Output the configuration name of the system \`$me' is run on. Operation modes: -h, --help print this help, then exit -t, --time-stamp print date of last modification, then exit -v, --version print version number, then exit Report bugs and patches to ." version="\ GNU config.guess ($timestamp) Originally written by Per Bothner. Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." help=" Try \`$me --help' for more information." # Parse command line while test $# -gt 0 ; do case $1 in --time-stamp | --time* | -t ) echo "$timestamp" ; exit 0 ;; --version | -v ) echo "$version" ; exit 0 ;; --help | --h* | -h ) echo "$usage"; exit 0 ;; -- ) # Stop option processing shift; break ;; - ) # Use stdin as input. break ;; -* ) echo "$me: invalid option $1$help" >&2 exit 1 ;; * ) break ;; esac done if test $# != 0; then echo "$me: too many arguments$help" >&2 exit 1 fi dummy=dummy-$$ trap 'rm -f $dummy.c $dummy.o $dummy.rel $dummy; exit 1' 1 2 15 # CC_FOR_BUILD -- compiler used by this script. # Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still # use `HOST_CC' if defined, but it is deprecated. set_cc_for_build='case $CC_FOR_BUILD,$HOST_CC,$CC in ,,) echo "int dummy(){}" > $dummy.c ; for c in cc gcc c89 c99 ; do ($c $dummy.c -c -o $dummy.o) >/dev/null 2>&1 ; if test $? = 0 ; then CC_FOR_BUILD="$c"; break ; fi ; done ; rm -f $dummy.c $dummy.o $dummy.rel ; if test x"$CC_FOR_BUILD" = x ; then CC_FOR_BUILD=no_compiler_found ; fi ;; ,,*) CC_FOR_BUILD=$CC ;; ,*,*) CC_FOR_BUILD=$HOST_CC ;; esac' # This is needed to find uname on a Pyramid OSx when run in the BSD universe. # (ghazi@noc.rutgers.edu 1994-08-24) if (test -f /.attbin/uname) >/dev/null 2>&1 ; then PATH=$PATH:/.attbin ; export PATH fi UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown # Note: order is significant - the case branches are not exclusive. case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in *:NetBSD:*:*) # NetBSD (nbsd) targets should (where applicable) match one or # more of the tupples: *-*-netbsdelf*, *-*-netbsdaout*, # *-*-netbsdecoff* and *-*-netbsd*. For targets that recently # switched to ELF, *-*-netbsd* would select the old # object file format. This provides both forward # compatibility and a consistent mechanism for selecting the # object file format. # # Note: NetBSD doesn't particularly care about the vendor # portion of the name. We always set it to "unknown". sysctl="sysctl -n hw.machine_arch" UNAME_MACHINE_ARCH=`(/sbin/$sysctl 2>/dev/null || \ /usr/sbin/$sysctl 2>/dev/null || echo unknown)` case "${UNAME_MACHINE_ARCH}" in arm*) machine=arm-unknown ;; sh3el) machine=shl-unknown ;; sh3eb) machine=sh-unknown ;; *) machine=${UNAME_MACHINE_ARCH}-unknown ;; esac # The Operating System including object format, if it has switched # to ELF recently, or will in the future. case "${UNAME_MACHINE_ARCH}" in arm*|i386|m68k|ns32k|sh3*|sparc|vax) eval $set_cc_for_build if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \ | grep __ELF__ >/dev/null then # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout). # Return netbsd for either. FIX? os=netbsd else os=netbsdelf fi ;; *) os=netbsd ;; esac # The OS release release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'` # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM: # contains redundant information, the shorter form: # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used. echo "${machine}-${os}${release}" exit 0 ;; amiga:OpenBSD:*:*) echo m68k-unknown-openbsd${UNAME_RELEASE} exit 0 ;; arc:OpenBSD:*:*) echo mipsel-unknown-openbsd${UNAME_RELEASE} exit 0 ;; hp300:OpenBSD:*:*) echo m68k-unknown-openbsd${UNAME_RELEASE} exit 0 ;; mac68k:OpenBSD:*:*) echo m68k-unknown-openbsd${UNAME_RELEASE} exit 0 ;; macppc:OpenBSD:*:*) echo powerpc-unknown-openbsd${UNAME_RELEASE} exit 0 ;; mvme68k:OpenBSD:*:*) echo m68k-unknown-openbsd${UNAME_RELEASE} exit 0 ;; mvme88k:OpenBSD:*:*) echo m88k-unknown-openbsd${UNAME_RELEASE} exit 0 ;; mvmeppc:OpenBSD:*:*) echo powerpc-unknown-openbsd${UNAME_RELEASE} exit 0 ;; pmax:OpenBSD:*:*) echo mipsel-unknown-openbsd${UNAME_RELEASE} exit 0 ;; sgi:OpenBSD:*:*) echo mipseb-unknown-openbsd${UNAME_RELEASE} exit 0 ;; sun3:OpenBSD:*:*) echo m68k-unknown-openbsd${UNAME_RELEASE} exit 0 ;; wgrisc:OpenBSD:*:*) echo mipsel-unknown-openbsd${UNAME_RELEASE} exit 0 ;; *:OpenBSD:*:*) echo ${UNAME_MACHINE}-unknown-openbsd${UNAME_RELEASE} exit 0 ;; alpha:OSF1:*:*) if test $UNAME_RELEASE = "V4.0"; then UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'` fi # A Vn.n version is a released version. # A Tn.n version is a released field test version. # A Xn.n version is an unreleased experimental baselevel. # 1.2 uses "1.2" for uname -r. cat <$dummy.s .data \$Lformat: .byte 37,100,45,37,120,10,0 # "%d-%x\n" .text .globl main .align 4 .ent main main: .frame \$30,16,\$26,0 ldgp \$29,0(\$27) .prologue 1 .long 0x47e03d80 # implver \$0 lda \$2,-1 .long 0x47e20c21 # amask \$2,\$1 lda \$16,\$Lformat mov \$0,\$17 not \$1,\$18 jsr \$26,printf ldgp \$29,0(\$26) mov 0,\$16 jsr \$26,exit .end main EOF eval $set_cc_for_build $CC_FOR_BUILD $dummy.s -o $dummy 2>/dev/null if test "$?" = 0 ; then case `./$dummy` in 0-0) UNAME_MACHINE="alpha" ;; 1-0) UNAME_MACHINE="alphaev5" ;; 1-1) UNAME_MACHINE="alphaev56" ;; 1-101) UNAME_MACHINE="alphapca56" ;; 2-303) UNAME_MACHINE="alphaev6" ;; 2-307) UNAME_MACHINE="alphaev67" ;; 2-1307) UNAME_MACHINE="alphaev68" ;; esac fi rm -f $dummy.s $dummy echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[VTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` exit 0 ;; Alpha\ *:Windows_NT*:*) # How do we know it's Interix rather than the generic POSIX subsystem? # Should we change UNAME_MACHINE based on the output of uname instead # of the specific Alpha model? echo alpha-pc-interix exit 0 ;; 21064:Windows_NT:50:3) echo alpha-dec-winnt3.5 exit 0 ;; Amiga*:UNIX_System_V:4.0:*) echo m68k-unknown-sysv4 exit 0;; *:[Aa]miga[Oo][Ss]:*:*) echo ${UNAME_MACHINE}-unknown-amigaos exit 0 ;; *:[Mm]orph[Oo][Ss]:*:*) echo ${UNAME_MACHINE}-unknown-morphos exit 0 ;; *:OS/390:*:*) echo i370-ibm-openedition exit 0 ;; arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*) echo arm-acorn-riscix${UNAME_RELEASE} exit 0;; SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*) echo hppa1.1-hitachi-hiuxmpp exit 0;; Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*) # akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE. if test "`(/bin/universe) 2>/dev/null`" = att ; then echo pyramid-pyramid-sysv3 else echo pyramid-pyramid-bsd fi exit 0 ;; NILE*:*:*:dcosx) echo pyramid-pyramid-svr4 exit 0 ;; sun4H:SunOS:5.*:*) echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit 0 ;; sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*) echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit 0 ;; i86pc:SunOS:5.*:*) echo i386-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit 0 ;; sun4*:SunOS:6*:*) # According to config.sub, this is the proper way to canonicalize # SunOS6. Hard to guess exactly what SunOS6 will be like, but # it's likely to be more like Solaris than SunOS4. echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit 0 ;; sun4*:SunOS:*:*) case "`/usr/bin/arch -k`" in Series*|S4*) UNAME_RELEASE=`uname -v` ;; esac # Japanese Language versions have a version number like `4.1.3-JL'. echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'` exit 0 ;; sun3*:SunOS:*:*) echo m68k-sun-sunos${UNAME_RELEASE} exit 0 ;; sun*:*:4.2BSD:*) UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null` test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3 case "`/bin/arch`" in sun3) echo m68k-sun-sunos${UNAME_RELEASE} ;; sun4) echo sparc-sun-sunos${UNAME_RELEASE} ;; esac exit 0 ;; aushp:SunOS:*:*) echo sparc-auspex-sunos${UNAME_RELEASE} exit 0 ;; # The situation for MiNT is a little confusing. The machine name # can be virtually everything (everything which is not # "atarist" or "atariste" at least should have a processor # > m68000). The system name ranges from "MiNT" over "FreeMiNT" # to the lowercase version "mint" (or "freemint"). Finally # the system name "TOS" denotes a system which is actually not # MiNT. But MiNT is downward compatible to TOS, so this should # be no problem. atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*) echo m68k-atari-mint${UNAME_RELEASE} exit 0 ;; atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*) echo m68k-atari-mint${UNAME_RELEASE} exit 0 ;; *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*) echo m68k-atari-mint${UNAME_RELEASE} exit 0 ;; milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*) echo m68k-milan-mint${UNAME_RELEASE} exit 0 ;; hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*) echo m68k-hades-mint${UNAME_RELEASE} exit 0 ;; *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*) echo m68k-unknown-mint${UNAME_RELEASE} exit 0 ;; powerpc:machten:*:*) echo powerpc-apple-machten${UNAME_RELEASE} exit 0 ;; RISC*:Mach:*:*) echo mips-dec-mach_bsd4.3 exit 0 ;; RISC*:ULTRIX:*:*) echo mips-dec-ultrix${UNAME_RELEASE} exit 0 ;; VAX*:ULTRIX*:*:*) echo vax-dec-ultrix${UNAME_RELEASE} exit 0 ;; 2020:CLIX:*:* | 2430:CLIX:*:*) echo clipper-intergraph-clix${UNAME_RELEASE} exit 0 ;; mips:*:*:UMIPS | mips:*:*:RISCos) eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #ifdef __cplusplus #include /* for printf() prototype */ int main (int argc, char *argv[]) { #else int main (argc, argv) int argc; char *argv[]; { #endif #if defined (host_mips) && defined (MIPSEB) #if defined (SYSTYPE_SYSV) printf ("mips-mips-riscos%ssysv\n", argv[1]); exit (0); #endif #if defined (SYSTYPE_SVR4) printf ("mips-mips-riscos%ssvr4\n", argv[1]); exit (0); #endif #if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD) printf ("mips-mips-riscos%sbsd\n", argv[1]); exit (0); #endif #endif exit (-1); } EOF $CC_FOR_BUILD $dummy.c -o $dummy \ && ./$dummy `echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` \ && rm -f $dummy.c $dummy && exit 0 rm -f $dummy.c $dummy echo mips-mips-riscos${UNAME_RELEASE} exit 0 ;; Motorola:PowerMAX_OS:*:*) echo powerpc-motorola-powermax exit 0 ;; Night_Hawk:Power_UNIX:*:*) echo powerpc-harris-powerunix exit 0 ;; m88k:CX/UX:7*:*) echo m88k-harris-cxux7 exit 0 ;; m88k:*:4*:R4*) echo m88k-motorola-sysv4 exit 0 ;; m88k:*:3*:R3*) echo m88k-motorola-sysv3 exit 0 ;; AViiON:dgux:*:*) # DG/UX returns AViiON for all architectures UNAME_PROCESSOR=`/usr/bin/uname -p` if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ] then if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \ [ ${TARGET_BINARY_INTERFACE}x = x ] then echo m88k-dg-dgux${UNAME_RELEASE} else echo m88k-dg-dguxbcs${UNAME_RELEASE} fi else echo i586-dg-dgux${UNAME_RELEASE} fi exit 0 ;; M88*:DolphinOS:*:*) # DolphinOS (SVR3) echo m88k-dolphin-sysv3 exit 0 ;; M88*:*:R3*:*) # Delta 88k system running SVR3 echo m88k-motorola-sysv3 exit 0 ;; XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3) echo m88k-tektronix-sysv3 exit 0 ;; Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD) echo m68k-tektronix-bsd exit 0 ;; *:IRIX*:*:*) echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'` exit 0 ;; ????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX. echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id exit 0 ;; # Note that: echo "'`uname -s`'" gives 'AIX ' i*86:AIX:*:*) echo i386-ibm-aix exit 0 ;; ia64:AIX:*:*) if [ -x /usr/bin/oslevel ] ; then IBM_REV=`/usr/bin/oslevel` else IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} fi echo ${UNAME_MACHINE}-ibm-aix${IBM_REV} exit 0 ;; *:AIX:2:3) if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #include main() { if (!__power_pc()) exit(1); puts("powerpc-ibm-aix3.2.5"); exit(0); } EOF $CC_FOR_BUILD $dummy.c -o $dummy && ./$dummy && rm -f $dummy.c $dummy && exit 0 rm -f $dummy.c $dummy echo rs6000-ibm-aix3.2.5 elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then echo rs6000-ibm-aix3.2.4 else echo rs6000-ibm-aix3.2 fi exit 0 ;; *:AIX:*:[45]) IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'` if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then IBM_ARCH=rs6000 else IBM_ARCH=powerpc fi if [ -x /usr/bin/oslevel ] ; then IBM_REV=`/usr/bin/oslevel` else IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} fi echo ${IBM_ARCH}-ibm-aix${IBM_REV} exit 0 ;; *:AIX:*:*) echo rs6000-ibm-aix exit 0 ;; ibmrt:4.4BSD:*|romp-ibm:BSD:*) echo romp-ibm-bsd4.4 exit 0 ;; ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and echo romp-ibm-bsd${UNAME_RELEASE} # 4.3 with uname added to exit 0 ;; # report: romp-ibm BSD 4.3 *:BOSX:*:*) echo rs6000-bull-bosx exit 0 ;; DPX/2?00:B.O.S.:*:*) echo m68k-bull-sysv3 exit 0 ;; 9000/[34]??:4.3bsd:1.*:*) echo m68k-hp-bsd exit 0 ;; hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*) echo m68k-hp-bsd4.4 exit 0 ;; 9000/[34678]??:HP-UX:*:*) HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` case "${UNAME_MACHINE}" in 9000/31? ) HP_ARCH=m68000 ;; 9000/[34]?? ) HP_ARCH=m68k ;; 9000/[678][0-9][0-9]) if [ -x /usr/bin/getconf ]; then sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null` sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null` case "${sc_cpu_version}" in 523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0 528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1 532) # CPU_PA_RISC2_0 case "${sc_kernel_bits}" in 32) HP_ARCH="hppa2.0n" ;; 64) HP_ARCH="hppa2.0w" ;; '') HP_ARCH="hppa2.0" ;; # HP-UX 10.20 esac ;; esac fi if [ "${HP_ARCH}" = "" ]; then eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #define _HPUX_SOURCE #include #include int main () { #if defined(_SC_KERNEL_BITS) long bits = sysconf(_SC_KERNEL_BITS); #endif long cpu = sysconf (_SC_CPU_VERSION); switch (cpu) { case CPU_PA_RISC1_0: puts ("hppa1.0"); break; case CPU_PA_RISC1_1: puts ("hppa1.1"); break; case CPU_PA_RISC2_0: #if defined(_SC_KERNEL_BITS) switch (bits) { case 64: puts ("hppa2.0w"); break; case 32: puts ("hppa2.0n"); break; default: puts ("hppa2.0"); break; } break; #else /* !defined(_SC_KERNEL_BITS) */ puts ("hppa2.0"); break; #endif default: puts ("hppa1.0"); break; } exit (0); } EOF (CCOPTS= $CC_FOR_BUILD $dummy.c -o $dummy 2>/dev/null) && HP_ARCH=`./$dummy` if test -z "$HP_ARCH"; then HP_ARCH=hppa; fi rm -f $dummy.c $dummy fi ;; esac echo ${HP_ARCH}-hp-hpux${HPUX_REV} exit 0 ;; ia64:HP-UX:*:*) HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` echo ia64-hp-hpux${HPUX_REV} exit 0 ;; 3050*:HI-UX:*:*) eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #include int main () { long cpu = sysconf (_SC_CPU_VERSION); /* The order matters, because CPU_IS_HP_MC68K erroneously returns true for CPU_PA_RISC1_0. CPU_IS_PA_RISC returns correct results, however. */ if (CPU_IS_PA_RISC (cpu)) { switch (cpu) { case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break; case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break; case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break; default: puts ("hppa-hitachi-hiuxwe2"); break; } } else if (CPU_IS_HP_MC68K (cpu)) puts ("m68k-hitachi-hiuxwe2"); else puts ("unknown-hitachi-hiuxwe2"); exit (0); } EOF $CC_FOR_BUILD $dummy.c -o $dummy && ./$dummy && rm -f $dummy.c $dummy && exit 0 rm -f $dummy.c $dummy echo unknown-hitachi-hiuxwe2 exit 0 ;; 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* ) echo hppa1.1-hp-bsd exit 0 ;; 9000/8??:4.3bsd:*:*) echo hppa1.0-hp-bsd exit 0 ;; *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*) echo hppa1.0-hp-mpeix exit 0 ;; hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* ) echo hppa1.1-hp-osf exit 0 ;; hp8??:OSF1:*:*) echo hppa1.0-hp-osf exit 0 ;; i*86:OSF1:*:*) if [ -x /usr/sbin/sysversion ] ; then echo ${UNAME_MACHINE}-unknown-osf1mk else echo ${UNAME_MACHINE}-unknown-osf1 fi exit 0 ;; parisc*:Lites*:*:*) echo hppa1.1-hp-lites exit 0 ;; C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*) echo c1-convex-bsd exit 0 ;; C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*) if getsysinfo -f scalar_acc then echo c32-convex-bsd else echo c2-convex-bsd fi exit 0 ;; C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*) echo c34-convex-bsd exit 0 ;; C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*) echo c38-convex-bsd exit 0 ;; C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*) echo c4-convex-bsd exit 0 ;; CRAY*Y-MP:*:*:*) echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit 0 ;; CRAY*[A-Z]90:*:*:*) echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \ | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \ -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \ -e 's/\.[^.]*$/.X/' exit 0 ;; CRAY*TS:*:*:*) echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit 0 ;; CRAY*T3D:*:*:*) echo alpha-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit 0 ;; CRAY*T3E:*:*:*) echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit 0 ;; CRAY*SV1:*:*:*) echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit 0 ;; F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*) FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'` echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" exit 0 ;; i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*) echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE} exit 0 ;; sparc*:BSD/OS:*:*) echo sparc-unknown-bsdi${UNAME_RELEASE} exit 0 ;; *:BSD/OS:*:*) echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE} exit 0 ;; *:FreeBSD:*:*) echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` exit 0 ;; i*:CYGWIN*:*) echo ${UNAME_MACHINE}-pc-cygwin exit 0 ;; i*:MINGW*:*) echo ${UNAME_MACHINE}-pc-mingw32 exit 0 ;; i*:PW*:*) echo ${UNAME_MACHINE}-pc-pw32 exit 0 ;; x86:Interix*:3*) echo i386-pc-interix3 exit 0 ;; i*:Windows_NT*:* | Pentium*:Windows_NT*:*) # How do we know it's Interix rather than the generic POSIX subsystem? # It also conflicts with pre-2.0 versions of AT&T UWIN. Should we # UNAME_MACHINE based on the output of uname instead of i386? echo i386-pc-interix exit 0 ;; i*:UWIN*:*) echo ${UNAME_MACHINE}-pc-uwin exit 0 ;; p*:CYGWIN*:*) echo powerpcle-unknown-cygwin exit 0 ;; prep*:SunOS:5.*:*) echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit 0 ;; *:GNU:*:*) echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'` exit 0 ;; i*86:Minix:*:*) echo ${UNAME_MACHINE}-pc-minix exit 0 ;; arm*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit 0 ;; ia64:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit 0 ;; m68*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit 0 ;; mips:Linux:*:*) eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #undef CPU #undef mips #undef mipsel #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) CPU=mipsel #else #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) CPU=mips #else CPU= #endif #endif EOF eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^CPU=` rm -f $dummy.c test x"${CPU}" != x && echo "${CPU}-pc-linux-gnu" && exit 0 ;; ppc:Linux:*:*) echo powerpc-unknown-linux-gnu exit 0 ;; ppc64:Linux:*:*) echo powerpc64-unknown-linux-gnu exit 0 ;; alpha:Linux:*:*) case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in EV5) UNAME_MACHINE=alphaev5 ;; EV56) UNAME_MACHINE=alphaev56 ;; PCA56) UNAME_MACHINE=alphapca56 ;; PCA57) UNAME_MACHINE=alphapca56 ;; EV6) UNAME_MACHINE=alphaev6 ;; EV67) UNAME_MACHINE=alphaev67 ;; EV68*) UNAME_MACHINE=alphaev68 ;; esac objdump --private-headers /bin/sh | grep ld.so.1 >/dev/null if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC} exit 0 ;; parisc:Linux:*:* | hppa:Linux:*:*) # Look for CPU level case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in PA7*) echo hppa1.1-unknown-linux-gnu ;; PA8*) echo hppa2.0-unknown-linux-gnu ;; *) echo hppa-unknown-linux-gnu ;; esac exit 0 ;; parisc64:Linux:*:* | hppa64:Linux:*:*) echo hppa64-unknown-linux-gnu exit 0 ;; s390:Linux:*:* | s390x:Linux:*:*) echo ${UNAME_MACHINE}-ibm-linux exit 0 ;; sh*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit 0 ;; sparc:Linux:*:* | sparc64:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit 0 ;; x86_64:Linux:*:*) echo x86_64-unknown-linux-gnu exit 0 ;; i*86:Linux:*:*) # The BFD linker knows what the default object file format is, so # first see if it will tell us. cd to the root directory to prevent # problems with other programs or directories called `ld' in the path. # Set LC_ALL=C to ensure ld outputs messages in English. ld_supported_targets=`cd /; LC_ALL=C ld --help 2>&1 \ | sed -ne '/supported targets:/!d s/[ ][ ]*/ /g s/.*supported targets: *// s/ .*// p'` case "$ld_supported_targets" in elf32-i386) TENTATIVE="${UNAME_MACHINE}-pc-linux-gnu" ;; a.out-i386-linux) echo "${UNAME_MACHINE}-pc-linux-gnuaout" exit 0 ;; coff-i386) echo "${UNAME_MACHINE}-pc-linux-gnucoff" exit 0 ;; "") # Either a pre-BFD a.out linker (linux-gnuoldld) or # one that does not give us useful --help. echo "${UNAME_MACHINE}-pc-linux-gnuoldld" exit 0 ;; esac # Determine whether the default compiler is a.out or elf eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #include #ifdef __ELF__ # ifdef __GLIBC__ # if __GLIBC__ >= 2 LIBC=gnu # else LIBC=gnulibc1 # endif # else LIBC=gnulibc1 # endif #else #ifdef __INTEL_COMPILER LIBC=gnu #else LIBC=gnuaout #endif #endif EOF eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^LIBC=` rm -f $dummy.c test x"${LIBC}" != x && echo "${UNAME_MACHINE}-pc-linux-${LIBC}" && exit 0 test x"${TENTATIVE}" != x && echo "${TENTATIVE}" && exit 0 ;; i*86:DYNIX/ptx:4*:*) # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there. # earlier versions are messed up and put the nodename in both # sysname and nodename. echo i386-sequent-sysv4 exit 0 ;; i*86:UNIX_SV:4.2MP:2.*) # Unixware is an offshoot of SVR4, but it has its own version # number series starting with 2... # I am not positive that other SVR4 systems won't match this, # I just have to hope. -- rms. # Use sysv4.2uw... so that sysv4* matches it. echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION} exit 0 ;; i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*) UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'` if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then echo ${UNAME_MACHINE}-univel-sysv${UNAME_REL} else echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL} fi exit 0 ;; i*86:*:5:[78]*) case `/bin/uname -X | grep "^Machine"` in *486*) UNAME_MACHINE=i486 ;; *Pentium) UNAME_MACHINE=i586 ;; *Pent*|*Celeron) UNAME_MACHINE=i686 ;; esac echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION} exit 0 ;; i*86:*:3.2:*) if test -f /usr/options/cb.name; then UNAME_REL=`sed -n 's/.*Version //p' /dev/null >/dev/null ; then UNAME_REL=`(/bin/uname -X|egrep Release|sed -e 's/.*= //')` (/bin/uname -X|egrep i80486 >/dev/null) && UNAME_MACHINE=i486 (/bin/uname -X|egrep '^Machine.*Pentium' >/dev/null) \ && UNAME_MACHINE=i586 (/bin/uname -X|egrep '^Machine.*Pent ?II' >/dev/null) \ && UNAME_MACHINE=i686 (/bin/uname -X|egrep '^Machine.*Pentium Pro' >/dev/null) \ && UNAME_MACHINE=i686 echo ${UNAME_MACHINE}-pc-sco$UNAME_REL else echo ${UNAME_MACHINE}-pc-sysv32 fi exit 0 ;; i*86:*DOS:*:*) echo ${UNAME_MACHINE}-pc-msdosdjgpp exit 0 ;; pc:*:*:*) # Left here for compatibility: # uname -m prints for DJGPP always 'pc', but it prints nothing about # the processor, so we play safe by assuming i386. echo i386-pc-msdosdjgpp exit 0 ;; Intel:Mach:3*:*) echo i386-pc-mach3 exit 0 ;; paragon:*:*:*) echo i860-intel-osf1 exit 0 ;; i860:*:4.*:*) # i860-SVR4 if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4 else # Add other i860-SVR4 vendors below as they are discovered. echo i860-unknown-sysv${UNAME_RELEASE} # Unknown i860-SVR4 fi exit 0 ;; mini*:CTIX:SYS*5:*) # "miniframe" echo m68010-convergent-sysv exit 0 ;; M68*:*:R3V[567]*:*) test -r /sysV68 && echo 'm68k-motorola-sysv' && exit 0 ;; 3[34]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0) OS_REL='' test -r /etc/.relid \ && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ && echo i486-ncr-sysv4.3${OS_REL} && exit 0 /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ && echo i586-ncr-sysv4.3${OS_REL} && exit 0 ;; 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*) /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ && echo i486-ncr-sysv4 && exit 0 ;; m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*) echo m68k-unknown-lynxos${UNAME_RELEASE} exit 0 ;; mc68030:UNIX_System_V:4.*:*) echo m68k-atari-sysv4 exit 0 ;; i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.0*:*) echo i386-unknown-lynxos${UNAME_RELEASE} exit 0 ;; TSUNAMI:LynxOS:2.*:*) echo sparc-unknown-lynxos${UNAME_RELEASE} exit 0 ;; rs6000:LynxOS:2.*:*) echo rs6000-unknown-lynxos${UNAME_RELEASE} exit 0 ;; PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.0*:*) echo powerpc-unknown-lynxos${UNAME_RELEASE} exit 0 ;; SM[BE]S:UNIX_SV:*:*) echo mips-dde-sysv${UNAME_RELEASE} exit 0 ;; RM*:ReliantUNIX-*:*:*) echo mips-sni-sysv4 exit 0 ;; RM*:SINIX-*:*:*) echo mips-sni-sysv4 exit 0 ;; *:SINIX-*:*:*) if uname -p 2>/dev/null >/dev/null ; then UNAME_MACHINE=`(uname -p) 2>/dev/null` echo ${UNAME_MACHINE}-sni-sysv4 else echo ns32k-sni-sysv fi exit 0 ;; PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort # says echo i586-unisys-sysv4 exit 0 ;; *:UNIX_System_V:4*:FTX*) # From Gerald Hewes . # How about differentiating between stratus architectures? -djm echo hppa1.1-stratus-sysv4 exit 0 ;; *:*:*:FTX*) # From seanf@swdc.stratus.com. echo i860-stratus-sysv4 exit 0 ;; *:VOS:*:*) # From Paul.Green@stratus.com. echo hppa1.1-stratus-vos exit 0 ;; mc68*:A/UX:*:*) echo m68k-apple-aux${UNAME_RELEASE} exit 0 ;; news*:NEWS-OS:6*:*) echo mips-sony-newsos6 exit 0 ;; R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*) if [ -d /usr/nec ]; then echo mips-nec-sysv${UNAME_RELEASE} else echo mips-unknown-sysv${UNAME_RELEASE} fi exit 0 ;; BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only. echo powerpc-be-beos exit 0 ;; BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only. echo powerpc-apple-beos exit 0 ;; BePC:BeOS:*:*) # BeOS running on Intel PC compatible. echo i586-pc-beos exit 0 ;; SX-4:SUPER-UX:*:*) echo sx4-nec-superux${UNAME_RELEASE} exit 0 ;; SX-5:SUPER-UX:*:*) echo sx5-nec-superux${UNAME_RELEASE} exit 0 ;; Power*:Rhapsody:*:*) echo powerpc-apple-rhapsody${UNAME_RELEASE} exit 0 ;; *:Rhapsody:*:*) echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE} exit 0 ;; *:Darwin:*:*) echo `uname -p`-apple-darwin${UNAME_RELEASE} exit 0 ;; *:procnto*:*:* | *:QNX:[0123456789]*:*) UNAME_PROCESSOR=`uname -p` if test "$UNAME_PROCESSOR" = "x86"; then UNAME_PROCESSOR=i386 UNAME_MACHINE=pc fi echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE} exit 0 ;; *:QNX:*:4*) echo i386-pc-qnx exit 0 ;; NSR-[GKLNPTVW]:NONSTOP_KERNEL:*:*) echo nsr-tandem-nsk${UNAME_RELEASE} exit 0 ;; *:NonStop-UX:*:*) echo mips-compaq-nonstopux exit 0 ;; BS2000:POSIX*:*:*) echo bs2000-siemens-sysv exit 0 ;; DS/*:UNIX_System_V:*:*) echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE} exit 0 ;; *:Plan9:*:*) # "uname -m" is not consistent, so use $cputype instead. 386 # is converted to i386 for consistency with other x86 # operating systems. if test "$cputype" = "386"; then UNAME_MACHINE=i386 else UNAME_MACHINE="$cputype" fi echo ${UNAME_MACHINE}-unknown-plan9 exit 0 ;; i*86:OS/2:*:*) # If we were able to find `uname', then EMX Unix compatibility # is probably installed. echo ${UNAME_MACHINE}-pc-os2-emx exit 0 ;; *:TOPS-10:*:*) echo pdp10-unknown-tops10 exit 0 ;; *:TENEX:*:*) echo pdp10-unknown-tenex exit 0 ;; KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*) echo pdp10-dec-tops20 exit 0 ;; XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*) echo pdp10-xkl-tops20 exit 0 ;; *:TOPS-20:*:*) echo pdp10-unknown-tops20 exit 0 ;; *:ITS:*:*) echo pdp10-unknown-its exit 0 ;; i*86:XTS-300:*:STOP) echo ${UNAME_MACHINE}-unknown-stop exit 0 ;; i*86:atheos:*:*) echo ${UNAME_MACHINE}-unknown-atheos exit 0 ;; esac #echo '(No uname command or uname output not recognized.)' 1>&2 #echo "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" 1>&2 eval $set_cc_for_build cat >$dummy.c < # include #endif main () { #if defined (sony) #if defined (MIPSEB) /* BFD wants "bsd" instead of "newsos". Perhaps BFD should be changed, I don't know.... */ printf ("mips-sony-bsd\n"); exit (0); #else #include printf ("m68k-sony-newsos%s\n", #ifdef NEWSOS4 "4" #else "" #endif ); exit (0); #endif #endif #if defined (__arm) && defined (__acorn) && defined (__unix) printf ("arm-acorn-riscix"); exit (0); #endif #if defined (hp300) && !defined (hpux) printf ("m68k-hp-bsd\n"); exit (0); #endif #if defined (NeXT) #if !defined (__ARCHITECTURE__) #define __ARCHITECTURE__ "m68k" #endif int version; version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`; if (version < 4) printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version); else printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version); exit (0); #endif #if defined (MULTIMAX) || defined (n16) #if defined (UMAXV) printf ("ns32k-encore-sysv\n"); exit (0); #else #if defined (CMU) printf ("ns32k-encore-mach\n"); exit (0); #else printf ("ns32k-encore-bsd\n"); exit (0); #endif #endif #endif #if defined (__386BSD__) printf ("i386-pc-bsd\n"); exit (0); #endif #if defined (sequent) #if defined (i386) printf ("i386-sequent-dynix\n"); exit (0); #endif #if defined (ns32000) printf ("ns32k-sequent-dynix\n"); exit (0); #endif #endif #if defined (_SEQUENT_) struct utsname un; uname(&un); if (strncmp(un.version, "V2", 2) == 0) { printf ("i386-sequent-ptx2\n"); exit (0); } if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */ printf ("i386-sequent-ptx1\n"); exit (0); } printf ("i386-sequent-ptx\n"); exit (0); #endif #if defined (vax) # if !defined (ultrix) # include # if defined (BSD) # if BSD == 43 printf ("vax-dec-bsd4.3\n"); exit (0); # else # if BSD == 199006 printf ("vax-dec-bsd4.3reno\n"); exit (0); # else printf ("vax-dec-bsd\n"); exit (0); # endif # endif # else printf ("vax-dec-bsd\n"); exit (0); # endif # else printf ("vax-dec-ultrix\n"); exit (0); # endif #endif #if defined (alliant) && defined (i860) printf ("i860-alliant-bsd\n"); exit (0); #endif exit (1); } EOF $CC_FOR_BUILD $dummy.c -o $dummy 2>/dev/null && ./$dummy && rm -f $dummy.c $dummy && exit 0 rm -f $dummy.c $dummy # Apollos put the system type in the environment. test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit 0; } # Convex versions that predate uname can use getsysinfo(1) if [ -x /usr/convex/getsysinfo ] then case `getsysinfo -f cpu_type` in c1*) echo c1-convex-bsd exit 0 ;; c2*) if getsysinfo -f scalar_acc then echo c32-convex-bsd else echo c2-convex-bsd fi exit 0 ;; c34*) echo c34-convex-bsd exit 0 ;; c38*) echo c38-convex-bsd exit 0 ;; c4*) echo c4-convex-bsd exit 0 ;; esac fi cat >&2 < in order to provide the needed information to handle your system. config.guess timestamp = $timestamp uname -m = `(uname -m) 2>/dev/null || echo unknown` uname -r = `(uname -r) 2>/dev/null || echo unknown` uname -s = `(uname -s) 2>/dev/null || echo unknown` uname -v = `(uname -v) 2>/dev/null || echo unknown` /usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null` /bin/uname -X = `(/bin/uname -X) 2>/dev/null` hostinfo = `(hostinfo) 2>/dev/null` /bin/universe = `(/bin/universe) 2>/dev/null` /usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null` /bin/arch = `(/bin/arch) 2>/dev/null` /usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null` /usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null` UNAME_MACHINE = ${UNAME_MACHINE} UNAME_RELEASE = ${UNAME_RELEASE} UNAME_SYSTEM = ${UNAME_SYSTEM} UNAME_VERSION = ${UNAME_VERSION} EOF exit 1 # Local variables: # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "timestamp='" # time-stamp-format: "%:y-%02m-%02d" # time-stamp-end: "'" # End: omniEvents-2_6_2/auto/config.sub0000755000076400001440000007054310227236242017072 0ustar alexusers00000000000000#! /bin/sh # Configuration validation subroutine script. # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, # 2000, 2001, 2002 Free Software Foundation, Inc. timestamp='2002-03-07' # This file is (in principle) common to ALL GNU software. # The presence of a machine in this file suggests that SOME GNU software # can handle that machine. It does not imply ALL GNU software can. # # This file is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, # Boston, MA 02111-1307, USA. # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # Please send patches to . Submit a context # diff and a properly formatted ChangeLog entry. # # Configuration subroutine to validate and canonicalize a configuration type. # Supply the specified configuration type as an argument. # If it is invalid, we print an error message on stderr and exit with code 1. # Otherwise, we print the canonical config type on stdout and succeed. # This file is supposed to be the same for all GNU packages # and recognize all the CPU types, system types and aliases # that are meaningful with *any* GNU software. # Each package is responsible for reporting which valid configurations # it does not support. The user should be able to distinguish # a failure to support a valid configuration from a meaningless # configuration. # The goal of this file is to map all the various variations of a given # machine specification into a single specification in the form: # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM # or in some cases, the newer four-part form: # CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM # It is wrong to echo any other type of specification. me=`echo "$0" | sed -e 's,.*/,,'` usage="\ Usage: $0 [OPTION] CPU-MFR-OPSYS $0 [OPTION] ALIAS Canonicalize a configuration name. Operation modes: -h, --help print this help, then exit -t, --time-stamp print date of last modification, then exit -v, --version print version number, then exit Report bugs and patches to ." version="\ GNU config.sub ($timestamp) Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." help=" Try \`$me --help' for more information." # Parse command line while test $# -gt 0 ; do case $1 in --time-stamp | --time* | -t ) echo "$timestamp" ; exit 0 ;; --version | -v ) echo "$version" ; exit 0 ;; --help | --h* | -h ) echo "$usage"; exit 0 ;; -- ) # Stop option processing shift; break ;; - ) # Use stdin as input. break ;; -* ) echo "$me: invalid option $1$help" exit 1 ;; *local*) # First pass through any local machine types. echo $1 exit 0;; * ) break ;; esac done case $# in 0) echo "$me: missing argument$help" >&2 exit 1;; 1) ;; *) echo "$me: too many arguments$help" >&2 exit 1;; esac # Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any). # Here we must recognize all the valid KERNEL-OS combinations. maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'` case $maybe_os in nto-qnx* | linux-gnu* | storm-chaos* | os2-emx* | windows32-* | rtmk-nova*) os=-$maybe_os basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'` ;; *) basic_machine=`echo $1 | sed 's/-[^-]*$//'` if [ $basic_machine != $1 ] then os=`echo $1 | sed 's/.*-/-/'` else os=; fi ;; esac ### Let's recognize common machines as not being operating systems so ### that things like config.sub decstation-3100 work. We also ### recognize some manufacturers as not being operating systems, so we ### can provide default operating systems below. case $os in -sun*os*) # Prevent following clause from handling this invalid input. ;; -dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \ -att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \ -unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \ -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\ -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \ -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \ -apple | -axis) os= basic_machine=$1 ;; -sim | -cisco | -oki | -wec | -winbond) os= basic_machine=$1 ;; -scout) ;; -wrs) os=-vxworks basic_machine=$1 ;; -chorusos*) os=-chorusos basic_machine=$1 ;; -chorusrdb) os=-chorusrdb basic_machine=$1 ;; -hiux*) os=-hiuxwe2 ;; -sco5) os=-sco3.2v5 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco4) os=-sco3.2v4 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco3.2.[4-9]*) os=`echo $os | sed -e 's/sco3.2./sco3.2v/'` basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco3.2v[4-9]*) # Don't forget version if it is 3.2v4 or newer. basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco*) os=-sco3.2v2 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -udk*) basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -isc) os=-isc2.2 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -clix*) basic_machine=clipper-intergraph ;; -isc*) basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -lynx*) os=-lynxos ;; -ptx*) basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'` ;; -windowsnt*) os=`echo $os | sed -e 's/windowsnt/winnt/'` ;; -psos*) os=-psos ;; -mint | -mint[0-9]*) basic_machine=m68k-atari os=-mint ;; esac # Decode aliases for certain CPU-COMPANY combinations. case $basic_machine in # Recognize the basic CPU types without company name. # Some are omitted here because they have special meanings below. 1750a | 580 \ | a29k \ | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \ | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \ | arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr \ | c4x | clipper \ | d10v | d30v | dsp16xx \ | fr30 \ | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ | i370 | i860 | i960 | ia64 \ | m32r | m68000 | m68k | m88k | mcore \ | mips | mips16 | mips64 | mips64el | mips64orion | mips64orionel \ | mips64vr4100 | mips64vr4100el | mips64vr4300 \ | mips64vr4300el | mips64vr5000 | mips64vr5000el \ | mipsbe | mipseb | mipsel | mipsle | mipstx39 | mipstx39el \ | mipsisa32 | mipsisa64 \ | mn10200 | mn10300 \ | ns16k | ns32k \ | openrisc | or32 \ | pdp10 | pdp11 | pj | pjl \ | powerpc | powerpc64 | powerpc64le | powerpcle | ppcbe \ | pyramid \ | sh | sh[34] | sh[34]eb | shbe | shle | sh64 \ | sparc | sparc64 | sparc86x | sparclet | sparclite | sparcv9 | sparcv9b \ | strongarm \ | tahoe | thumb | tic80 | tron \ | v850 | v850e \ | we32k \ | x86 | xscale | xstormy16 | xtensa \ | z8k) basic_machine=$basic_machine-unknown ;; m6811 | m68hc11 | m6812 | m68hc12) # Motorola 68HC11/12. basic_machine=$basic_machine-unknown os=-none ;; m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k) ;; # We use `pc' rather than `unknown' # because (1) that's what they normally are, and # (2) the word "unknown" tends to confuse beginning users. i*86 | x86_64) basic_machine=$basic_machine-pc ;; # Object if more than one company name word. *-*-*) echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 exit 1 ;; # Recognize the basic CPU types with company name. 580-* \ | a29k-* \ | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \ | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \ | alphapca5[67]-* | alpha64pca5[67]-* | arc-* \ | arm-* | armbe-* | armle-* | armv*-* \ | avr-* \ | bs2000-* \ | c[123]* | c30-* | [cjt]90-* | c54x-* \ | clipper-* | cydra-* \ | d10v-* | d30v-* \ | elxsi-* \ | f30[01]-* | f700-* | fr30-* | fx80-* \ | h8300-* | h8500-* \ | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \ | i*86-* | i860-* | i960-* | ia64-* \ | m32r-* \ | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \ | m88110-* | m88k-* | mcore-* \ | mips-* | mips16-* | mips64-* | mips64el-* | mips64orion-* \ | mips64orionel-* | mips64vr4100-* | mips64vr4100el-* \ | mips64vr4300-* | mips64vr4300el-* | mipsbe-* | mipseb-* \ | mipsle-* | mipsel-* | mipstx39-* | mipstx39el-* \ | none-* | np1-* | ns16k-* | ns32k-* \ | orion-* \ | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \ | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* | ppcbe-* \ | pyramid-* \ | romp-* | rs6000-* \ | sh-* | sh[34]-* | sh[34]eb-* | shbe-* | shle-* | sh64-* \ | sparc-* | sparc64-* | sparc86x-* | sparclet-* | sparclite-* \ | sparcv9-* | sparcv9b-* | strongarm-* | sv1-* | sx?-* \ | tahoe-* | thumb-* | tic30-* | tic54x-* | tic80-* | tron-* \ | v850-* | v850e-* | vax-* \ | we32k-* \ | x86-* | x86_64-* | xps100-* | xscale-* | xstormy16-* \ | xtensa-* \ | ymp-* \ | z8k-*) ;; # Recognize the various machine names and aliases which stand # for a CPU type and a company and sometimes even an OS. 386bsd) basic_machine=i386-unknown os=-bsd ;; 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) basic_machine=m68000-att ;; 3b*) basic_machine=we32k-att ;; a29khif) basic_machine=a29k-amd os=-udi ;; adobe68k) basic_machine=m68010-adobe os=-scout ;; alliant | fx80) basic_machine=fx80-alliant ;; altos | altos3068) basic_machine=m68k-altos ;; am29k) basic_machine=a29k-none os=-bsd ;; amdahl) basic_machine=580-amdahl os=-sysv ;; amiga | amiga-*) basic_machine=m68k-unknown ;; amigaos | amigados) basic_machine=m68k-unknown os=-amigaos ;; amigaunix | amix) basic_machine=m68k-unknown os=-sysv4 ;; apollo68) basic_machine=m68k-apollo os=-sysv ;; apollo68bsd) basic_machine=m68k-apollo os=-bsd ;; aux) basic_machine=m68k-apple os=-aux ;; balance) basic_machine=ns32k-sequent os=-dynix ;; c90) basic_machine=c90-cray os=-unicos ;; convex-c1) basic_machine=c1-convex os=-bsd ;; convex-c2) basic_machine=c2-convex os=-bsd ;; convex-c32) basic_machine=c32-convex os=-bsd ;; convex-c34) basic_machine=c34-convex os=-bsd ;; convex-c38) basic_machine=c38-convex os=-bsd ;; cray | j90) basic_machine=j90-cray os=-unicos ;; crds | unos) basic_machine=m68k-crds ;; cris | cris-* | etrax*) basic_machine=cris-axis ;; da30 | da30-*) basic_machine=m68k-da30 ;; decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn) basic_machine=mips-dec ;; decsystem10* | dec10*) basic_machine=pdp10-dec os=-tops10 ;; decsystem20* | dec20*) basic_machine=pdp10-dec os=-tops20 ;; delta | 3300 | motorola-3300 | motorola-delta \ | 3300-motorola | delta-motorola) basic_machine=m68k-motorola ;; delta88) basic_machine=m88k-motorola os=-sysv3 ;; dpx20 | dpx20-*) basic_machine=rs6000-bull os=-bosx ;; dpx2* | dpx2*-bull) basic_machine=m68k-bull os=-sysv3 ;; ebmon29k) basic_machine=a29k-amd os=-ebmon ;; elxsi) basic_machine=elxsi-elxsi os=-bsd ;; encore | umax | mmax) basic_machine=ns32k-encore ;; es1800 | OSE68k | ose68k | ose | OSE) basic_machine=m68k-ericsson os=-ose ;; fx2800) basic_machine=i860-alliant ;; genix) basic_machine=ns32k-ns ;; gmicro) basic_machine=tron-gmicro os=-sysv ;; go32) basic_machine=i386-pc os=-go32 ;; h3050r* | hiux*) basic_machine=hppa1.1-hitachi os=-hiuxwe2 ;; h8300hms) basic_machine=h8300-hitachi os=-hms ;; h8300xray) basic_machine=h8300-hitachi os=-xray ;; h8500hms) basic_machine=h8500-hitachi os=-hms ;; harris) basic_machine=m88k-harris os=-sysv3 ;; hp300-*) basic_machine=m68k-hp ;; hp300bsd) basic_machine=m68k-hp os=-bsd ;; hp300hpux) basic_machine=m68k-hp os=-hpux ;; hp3k9[0-9][0-9] | hp9[0-9][0-9]) basic_machine=hppa1.0-hp ;; hp9k2[0-9][0-9] | hp9k31[0-9]) basic_machine=m68000-hp ;; hp9k3[2-9][0-9]) basic_machine=m68k-hp ;; hp9k6[0-9][0-9] | hp6[0-9][0-9]) basic_machine=hppa1.0-hp ;; hp9k7[0-79][0-9] | hp7[0-79][0-9]) basic_machine=hppa1.1-hp ;; hp9k78[0-9] | hp78[0-9]) # FIXME: really hppa2.0-hp basic_machine=hppa1.1-hp ;; hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893) # FIXME: really hppa2.0-hp basic_machine=hppa1.1-hp ;; hp9k8[0-9][13679] | hp8[0-9][13679]) basic_machine=hppa1.1-hp ;; hp9k8[0-9][0-9] | hp8[0-9][0-9]) basic_machine=hppa1.0-hp ;; hppa-next) os=-nextstep3 ;; hppaosf) basic_machine=hppa1.1-hp os=-osf ;; hppro) basic_machine=hppa1.1-hp os=-proelf ;; i370-ibm* | ibm*) basic_machine=i370-ibm ;; # I'm not sure what "Sysv32" means. Should this be sysv3.2? i*86v32) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-sysv32 ;; i*86v4*) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-sysv4 ;; i*86v) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-sysv ;; i*86sol2) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-solaris2 ;; i386mach) basic_machine=i386-mach os=-mach ;; i386-vsta | vsta) basic_machine=i386-unknown os=-vsta ;; iris | iris4d) basic_machine=mips-sgi case $os in -irix*) ;; *) os=-irix4 ;; esac ;; isi68 | isi) basic_machine=m68k-isi os=-sysv ;; m88k-omron*) basic_machine=m88k-omron ;; magnum | m3230) basic_machine=mips-mips os=-sysv ;; merlin) basic_machine=ns32k-utek os=-sysv ;; mingw32) basic_machine=i386-pc os=-mingw32 ;; miniframe) basic_machine=m68000-convergent ;; *mint | -mint[0-9]* | *MiNT | *MiNT[0-9]*) basic_machine=m68k-atari os=-mint ;; mips3*-*) basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'` ;; mips3*) basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown ;; mmix*) basic_machine=mmix-knuth os=-mmixware ;; monitor) basic_machine=m68k-rom68k os=-coff ;; morphos) basic_machine=powerpc-unknown os=-morphos ;; msdos) basic_machine=i386-pc os=-msdos ;; mvs) basic_machine=i370-ibm os=-mvs ;; ncr3000) basic_machine=i486-ncr os=-sysv4 ;; netbsd386) basic_machine=i386-unknown os=-netbsd ;; netwinder) basic_machine=armv4l-rebel os=-linux ;; news | news700 | news800 | news900) basic_machine=m68k-sony os=-newsos ;; news1000) basic_machine=m68030-sony os=-newsos ;; news-3600 | risc-news) basic_machine=mips-sony os=-newsos ;; necv70) basic_machine=v70-nec os=-sysv ;; next | m*-next ) basic_machine=m68k-next case $os in -nextstep* ) ;; -ns2*) os=-nextstep2 ;; *) os=-nextstep3 ;; esac ;; nh3000) basic_machine=m68k-harris os=-cxux ;; nh[45]000) basic_machine=m88k-harris os=-cxux ;; nindy960) basic_machine=i960-intel os=-nindy ;; mon960) basic_machine=i960-intel os=-mon960 ;; nonstopux) basic_machine=mips-compaq os=-nonstopux ;; np1) basic_machine=np1-gould ;; nsr-tandem) basic_machine=nsr-tandem ;; op50n-* | op60c-*) basic_machine=hppa1.1-oki os=-proelf ;; or32 | or32-*) basic_machine=or32-unknown os=-coff ;; OSE68000 | ose68000) basic_machine=m68000-ericsson os=-ose ;; os68k) basic_machine=m68k-none os=-os68k ;; pa-hitachi) basic_machine=hppa1.1-hitachi os=-hiuxwe2 ;; paragon) basic_machine=i860-intel os=-osf ;; pbd) basic_machine=sparc-tti ;; pbb) basic_machine=m68k-tti ;; pc532 | pc532-*) basic_machine=ns32k-pc532 ;; pentium | p5 | k5 | k6 | nexgen | viac3) basic_machine=i586-pc ;; pentiumpro | p6 | 6x86 | athlon) basic_machine=i686-pc ;; pentiumii | pentium2) basic_machine=i686-pc ;; pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*) basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pentiumpro-* | p6-* | 6x86-* | athlon-*) basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pentiumii-* | pentium2-*) basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pn) basic_machine=pn-gould ;; power) basic_machine=power-ibm ;; ppc) basic_machine=powerpc-unknown ;; ppc-*) basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ppcle | powerpclittle | ppc-le | powerpc-little) basic_machine=powerpcle-unknown ;; ppcle-* | powerpclittle-*) basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ppc64) basic_machine=powerpc64-unknown ;; ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ppc64le | powerpc64little | ppc64-le | powerpc64-little) basic_machine=powerpc64le-unknown ;; ppc64le-* | powerpc64little-*) basic_machine=powerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ps2) basic_machine=i386-ibm ;; pw32) basic_machine=i586-unknown os=-pw32 ;; rom68k) basic_machine=m68k-rom68k os=-coff ;; rm[46]00) basic_machine=mips-siemens ;; rtpc | rtpc-*) basic_machine=romp-ibm ;; s390 | s390-*) basic_machine=s390-ibm ;; s390x | s390x-*) basic_machine=s390x-ibm ;; sa29200) basic_machine=a29k-amd os=-udi ;; sequent) basic_machine=i386-sequent ;; sh) basic_machine=sh-hitachi os=-hms ;; sparclite-wrs | simso-wrs) basic_machine=sparclite-wrs os=-vxworks ;; sps7) basic_machine=m68k-bull os=-sysv2 ;; spur) basic_machine=spur-unknown ;; st2000) basic_machine=m68k-tandem ;; stratus) basic_machine=i860-stratus os=-sysv4 ;; sun2) basic_machine=m68000-sun ;; sun2os3) basic_machine=m68000-sun os=-sunos3 ;; sun2os4) basic_machine=m68000-sun os=-sunos4 ;; sun3os3) basic_machine=m68k-sun os=-sunos3 ;; sun3os4) basic_machine=m68k-sun os=-sunos4 ;; sun4os3) basic_machine=sparc-sun os=-sunos3 ;; sun4os4) basic_machine=sparc-sun os=-sunos4 ;; sun4sol2) basic_machine=sparc-sun os=-solaris2 ;; sun3 | sun3-*) basic_machine=m68k-sun ;; sun4) basic_machine=sparc-sun ;; sun386 | sun386i | roadrunner) basic_machine=i386-sun ;; sv1) basic_machine=sv1-cray os=-unicos ;; symmetry) basic_machine=i386-sequent os=-dynix ;; t3d) basic_machine=alpha-cray os=-unicos ;; t3e) basic_machine=alphaev5-cray os=-unicos ;; t90) basic_machine=t90-cray os=-unicos ;; tic54x | c54x*) basic_machine=tic54x-unknown os=-coff ;; tx39) basic_machine=mipstx39-unknown ;; tx39el) basic_machine=mipstx39el-unknown ;; toad1) basic_machine=pdp10-xkl os=-tops20 ;; tower | tower-32) basic_machine=m68k-ncr ;; udi29k) basic_machine=a29k-amd os=-udi ;; ultra3) basic_machine=a29k-nyu os=-sym1 ;; v810 | necv810) basic_machine=v810-nec os=-none ;; vaxv) basic_machine=vax-dec os=-sysv ;; vms) basic_machine=vax-dec os=-vms ;; vpp*|vx|vx-*) basic_machine=f301-fujitsu ;; vxworks960) basic_machine=i960-wrs os=-vxworks ;; vxworks68) basic_machine=m68k-wrs os=-vxworks ;; vxworks29k) basic_machine=a29k-wrs os=-vxworks ;; w65*) basic_machine=w65-wdc os=-none ;; w89k-*) basic_machine=hppa1.1-winbond os=-proelf ;; windows32) basic_machine=i386-pc os=-windows32-msvcrt ;; xps | xps100) basic_machine=xps100-honeywell ;; ymp) basic_machine=ymp-cray os=-unicos ;; z8k-*-coff) basic_machine=z8k-unknown os=-sim ;; none) basic_machine=none-none os=-none ;; # Here we handle the default manufacturer of certain CPU types. It is in # some cases the only manufacturer, in others, it is the most popular. w89k) basic_machine=hppa1.1-winbond ;; op50n) basic_machine=hppa1.1-oki ;; op60c) basic_machine=hppa1.1-oki ;; romp) basic_machine=romp-ibm ;; rs6000) basic_machine=rs6000-ibm ;; vax) basic_machine=vax-dec ;; pdp10) # there are many clones, so DEC is not a safe bet basic_machine=pdp10-unknown ;; pdp11) basic_machine=pdp11-dec ;; we32k) basic_machine=we32k-att ;; sh3 | sh4 | sh3eb | sh4eb) basic_machine=sh-unknown ;; sh64) basic_machine=sh64-unknown ;; sparc | sparcv9 | sparcv9b) basic_machine=sparc-sun ;; cydra) basic_machine=cydra-cydrome ;; orion) basic_machine=orion-highlevel ;; orion105) basic_machine=clipper-highlevel ;; mac | mpw | mac-mpw) basic_machine=m68k-apple ;; pmac | pmac-mpw) basic_machine=powerpc-apple ;; c4x*) basic_machine=c4x-none os=-coff ;; *-unknown) # Make sure to match an already-canonicalized machine name. ;; *) echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 exit 1 ;; esac # Here we canonicalize certain aliases for manufacturers. case $basic_machine in *-digital*) basic_machine=`echo $basic_machine | sed 's/digital.*/dec/'` ;; *-commodore*) basic_machine=`echo $basic_machine | sed 's/commodore.*/cbm/'` ;; *) ;; esac # Decode manufacturer-specific aliases for certain operating systems. if [ x"$os" != x"" ] then case $os in # First match some system type aliases # that might get confused with valid system types. # -solaris* is a basic system type, with this one exception. -solaris1 | -solaris1.*) os=`echo $os | sed -e 's|solaris1|sunos4|'` ;; -solaris) os=-solaris2 ;; -svr4*) os=-sysv4 ;; -unixware*) os=-sysv4.2uw ;; -gnu/linux*) os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'` ;; # First accept the basic system types. # The portable systems comes first. # Each alternative MUST END IN A *, to match a version number. # -sysv* is not here because it comes later, after sysvr4. -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \ | -*vms* | -sco* | -esix* | -isc* | -aix* | -sunos | -sunos[34]*\ | -hpux* | -unos* | -osf* | -luna* | -dgux* | -solaris* | -sym* \ | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \ | -aos* \ | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \ | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \ | -hiux* | -386bsd* | -netbsd* | -openbsd* | -freebsd* | -riscix* \ | -lynxos* | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \ | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \ | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \ | -chorusos* | -chorusrdb* \ | -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \ | -mingw32* | -linux-gnu* | -uxpv* | -beos* | -mpeix* | -udk* \ | -interix* | -uwin* | -rhapsody* | -darwin* | -opened* \ | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \ | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \ | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \ | -morphos* | -superux* | -rtmk* | -rtmk-nova*) # Remember, each alternative MUST END IN *, to match a version number. ;; -qnx*) case $basic_machine in x86-* | i*86-*) ;; *) os=-nto$os ;; esac ;; -nto*) os=-nto-qnx ;; -sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \ | -windows* | -osx | -abug | -netware* | -os9* | -beos* \ | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*) ;; -mac*) os=`echo $os | sed -e 's|mac|macos|'` ;; -linux*) os=`echo $os | sed -e 's|linux|linux-gnu|'` ;; -sunos5*) os=`echo $os | sed -e 's|sunos5|solaris2|'` ;; -sunos6*) os=`echo $os | sed -e 's|sunos6|solaris3|'` ;; -opened*) os=-openedition ;; -wince*) os=-wince ;; -osfrose*) os=-osfrose ;; -osf*) os=-osf ;; -utek*) os=-bsd ;; -dynix*) os=-bsd ;; -acis*) os=-aos ;; -atheos*) os=-atheos ;; -386bsd) os=-bsd ;; -ctix* | -uts*) os=-sysv ;; -nova*) os=-rtmk-nova ;; -ns2 ) os=-nextstep2 ;; -nsk*) os=-nsk ;; # Preserve the version number of sinix5. -sinix5.*) os=`echo $os | sed -e 's|sinix|sysv|'` ;; -sinix*) os=-sysv4 ;; -triton*) os=-sysv3 ;; -oss*) os=-sysv3 ;; -svr4) os=-sysv4 ;; -svr3) os=-sysv3 ;; -sysvr4) os=-sysv4 ;; # This must come after -sysvr4. -sysv*) ;; -ose*) os=-ose ;; -es1800*) os=-ose ;; -xenix) os=-xenix ;; -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) os=-mint ;; -none) ;; *) # Get rid of the `-' at the beginning of $os. os=`echo $os | sed 's/[^-]*-//'` echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2 exit 1 ;; esac else # Here we handle the default operating systems that come with various machines. # The value should be what the vendor currently ships out the door with their # machine or put another way, the most popular os provided with the machine. # Note that if you're going to try to match "-MANUFACTURER" here (say, # "-sun"), then you have to tell the case statement up towards the top # that MANUFACTURER isn't an operating system. Otherwise, code above # will signal an error saying that MANUFACTURER isn't an operating # system, and we'll never get to this point. case $basic_machine in *-acorn) os=-riscix1.2 ;; arm*-rebel) os=-linux ;; arm*-semi) os=-aout ;; # This must come before the *-dec entry. pdp10-*) os=-tops20 ;; pdp11-*) os=-none ;; *-dec | vax-*) os=-ultrix4.2 ;; m68*-apollo) os=-domain ;; i386-sun) os=-sunos4.0.2 ;; m68000-sun) os=-sunos3 # This also exists in the configure program, but was not the # default. # os=-sunos4 ;; m68*-cisco) os=-aout ;; mips*-cisco) os=-elf ;; mips*-*) os=-elf ;; or32-*) os=-coff ;; *-tti) # must be before sparc entry or we get the wrong os. os=-sysv3 ;; sparc-* | *-sun) os=-sunos4.1.1 ;; *-be) os=-beos ;; *-ibm) os=-aix ;; *-wec) os=-proelf ;; *-winbond) os=-proelf ;; *-oki) os=-proelf ;; *-hp) os=-hpux ;; *-hitachi) os=-hiux ;; i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent) os=-sysv ;; *-cbm) os=-amigaos ;; *-dg) os=-dgux ;; *-dolphin) os=-sysv3 ;; m68k-ccur) os=-rtu ;; m88k-omron*) os=-luna ;; *-next ) os=-nextstep ;; *-sequent) os=-ptx ;; *-crds) os=-unos ;; *-ns) os=-genix ;; i370-*) os=-mvs ;; *-next) os=-nextstep3 ;; *-gould) os=-sysv ;; *-highlevel) os=-bsd ;; *-encore) os=-bsd ;; *-sgi) os=-irix ;; *-siemens) os=-sysv4 ;; *-masscomp) os=-rtu ;; f30[01]-fujitsu | f700-fujitsu) os=-uxpv ;; *-rom68k) os=-coff ;; *-*bug) os=-coff ;; *-apple) os=-macos ;; *-atari*) os=-mint ;; *) os=-none ;; esac fi # Here we handle the case where we know the os, and the CPU type, but not the # manufacturer. We pick the logical manufacturer. vendor=unknown case $basic_machine in *-unknown) case $os in -riscix*) vendor=acorn ;; -sunos*) vendor=sun ;; -aix*) vendor=ibm ;; -beos*) vendor=be ;; -hpux*) vendor=hp ;; -mpeix*) vendor=hp ;; -hiux*) vendor=hitachi ;; -unos*) vendor=crds ;; -dgux*) vendor=dg ;; -luna*) vendor=omron ;; -genix*) vendor=ns ;; -mvs* | -opened*) vendor=ibm ;; -ptx*) vendor=sequent ;; -vxsim* | -vxworks*) vendor=wrs ;; -aux*) vendor=apple ;; -hms*) vendor=hitachi ;; -mpw* | -macos*) vendor=apple ;; -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) vendor=atari ;; -vos*) vendor=stratus ;; esac basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"` ;; esac echo $basic_machine$os exit 0 # Local variables: # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "timestamp='" # time-stamp-format: "%:y-%02m-%02d" # time-stamp-end: "'" # End: omniEvents-2_6_2/auto/install.sh0000755000076400001440000001273610227236242017114 0ustar alexusers00000000000000#!/bin/sh # # install - install a program, script, or datafile # This comes from X11R5 (mit/util/scripts/install.sh). # # Copyright 1991 by the Massachusetts Institute of Technology # # Permission to use, copy, modify, distribute, and sell this software and its # documentation for any purpose is hereby granted without fee, provided that # the above copyright notice appear in all copies and that both that # copyright notice and this permission notice appear in supporting # documentation, and that the name of M.I.T. not be used in advertising or # publicity pertaining to distribution of the software without specific, # written prior permission. M.I.T. makes no representations about the # suitability of this software for any purpose. It is provided "as is" # without express or implied warranty. # # Calling this script install-sh is preferred over install.sh, to prevent # `make' implicit rules from creating a file called install from it # when there is no Makefile. # # This script is compatible with the BSD install script, but was written # from scratch. It can only install one file at a time, a restriction # shared with many OS's install programs. # set DOITPROG to echo to test this script # Don't use :- since 4.3BSD and earlier shells don't like it. doit="${DOITPROG-}" # put in absolute paths if you don't have them in your path; or use env. vars. mvprog="${MVPROG-mv}" cpprog="${CPPROG-cp}" chmodprog="${CHMODPROG-chmod}" chownprog="${CHOWNPROG-chown}" chgrpprog="${CHGRPPROG-chgrp}" stripprog="${STRIPPROG-strip}" rmprog="${RMPROG-rm}" mkdirprog="${MKDIRPROG-mkdir}" transformbasename="" transform_arg="" instcmd="$mvprog" chmodcmd="$chmodprog 0755" chowncmd="" chgrpcmd="" stripcmd="" rmcmd="$rmprog -f" mvcmd="$mvprog" src="" dst="" dir_arg="" while [ x"$1" != x ]; do case $1 in -c) instcmd="$cpprog" shift continue;; -d) dir_arg=true shift continue;; -m) chmodcmd="$chmodprog $2" shift shift continue;; -o) chowncmd="$chownprog $2" shift shift continue;; -g) chgrpcmd="$chgrpprog $2" shift shift continue;; -s) stripcmd="$stripprog" shift continue;; -t=*) transformarg=`echo $1 | sed 's/-t=//'` shift continue;; -b=*) transformbasename=`echo $1 | sed 's/-b=//'` shift continue;; *) if [ x"$src" = x ] then src=$1 else # this colon is to work around a 386BSD /bin/sh bug : dst=$1 fi shift continue;; esac done if [ x"$src" = x ] then echo "install: no input file specified" exit 1 else true fi if [ x"$dir_arg" != x ]; then dst=$src src="" if [ -d $dst ]; then instcmd=: chmodcmd="" else instcmd=mkdir fi else # Waiting for this to be detected by the "$instcmd $src $dsttmp" command # might cause directories to be created, which would be especially bad # if $src (and thus $dsttmp) contains '*'. if [ -f $src -o -d $src ] then true else echo "install: $src does not exist" exit 1 fi if [ x"$dst" = x ] then echo "install: no destination specified" exit 1 else true fi # If destination is a directory, append the input filename; if your system # does not like double slashes in filenames, you may need to add some logic if [ -d $dst ] then dst="$dst"/`basename $src` else true fi fi ## this sed command emulates the dirname command dstdir=`echo $dst | sed -e 's,[^/]*$,,;s,/$,,;s,^$,.,'` # Make sure that the destination directory exists. # this part is taken from Noah Friedman's mkinstalldirs script # Skip lots of stat calls in the usual case. if [ ! -d "$dstdir" ]; then defaultIFS=' ' IFS="${IFS-${defaultIFS}}" oIFS="${IFS}" # Some sh's can't handle IFS=/ for some reason. IFS='%' set - `echo ${dstdir} | sed -e 's@/@%@g' -e 's@^%@/@'` IFS="${oIFS}" pathcomp='' while [ $# -ne 0 ] ; do pathcomp="${pathcomp}${1}" shift if [ ! -d "${pathcomp}" ] ; then $mkdirprog "${pathcomp}" else true fi pathcomp="${pathcomp}/" done fi if [ x"$dir_arg" != x ] then $doit $instcmd $dst && if [ x"$chowncmd" != x ]; then $doit $chowncmd $dst; else true ; fi && if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dst; else true ; fi && if [ x"$stripcmd" != x ]; then $doit $stripcmd $dst; else true ; fi && if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dst; else true ; fi else # If we're going to rename the final executable, determine the name now. if [ x"$transformarg" = x ] then dstfile=`basename $dst` else dstfile=`basename $dst $transformbasename | sed $transformarg`$transformbasename fi # don't allow the sed command to completely eliminate the filename if [ x"$dstfile" = x ] then dstfile=`basename $dst` else true fi # Make a temp file name in the proper directory. dsttmp=$dstdir/#inst.$$# # Move or copy the file name to the temp name $doit $instcmd $src $dsttmp && trap "rm -f ${dsttmp}" 0 && # and set any options; do chmod last to preserve setuid bits # If any of these fail, we abort the whole thing. If we want to # ignore errors from any of these, just make sure not to ignore # errors from the above "$doit $instcmd $src $dsttmp" command. if [ x"$chowncmd" != x ]; then $doit $chowncmd $dsttmp; else true;fi && if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dsttmp; else true;fi && if [ x"$stripcmd" != x ]; then $doit $stripcmd $dsttmp; else true;fi && if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dsttmp; else true;fi && # Now rename the file to the real destination. $doit $rmcmd -f $dstdir/$dstfile && $doit $mvcmd $dsttmp $dstdir/$dstfile fi && exit 0 omniEvents-2_6_2/auto/makedeps.py0000644000076400001440000001341510240451203017234 0ustar alexusers00000000000000#! /bin/env python # Package : omniEvents # Makefile Created : 2004/08/04 # Author : Alex Tingle # # Copyright (C) 2004 Alex Tingle. # # This file is part of the omniEvents application. # # omniEvents is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either # version 2.1 of the License, or (at your option) any later version. # # omniEvents is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public # License along with this library; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # import sys import re import os.path import string import getopt class MakeDep: """Calculates a 'make' dependency rule for a single file. Sends the result to standard out.""" def __init__(self): self.targetExt=['.o'] self.objDir='' # found & visited are used as sets. The value is not really important. # However, we use the value to store the name of the file that contained # the #include - useful for diagnostics. self.found={} self.visited={} self.includedirs=[] # Only search for includes self.reInclude=re.compile('^\s*\#\s*include\s+"([^"]+)"') self.reExclude=None def process(self,srcfile): """Scans srcfile for #includes, and then follows all the links it finds. Builds a make format dependency list for the srcfile, and sends it to stdout.""" self.found={} self.visited={} self.readfile(srcfile) while(len(self.found)>0): fname=self.found.keys()[0] # set fname to first key self.visited[fname]=self.found[fname] del self.found[fname] self.readfile(fname) # Display the result srcDir,srcBase=os.path.split(srcfile) if not self.objDir: self.objDir=srcDir srcRoot,unused=os.path.splitext(srcBase) targets=[] for ext in self.targetExt: targets.append(os.path.join(self.objDir,srcRoot+ext)) print string.join(targets,' ')+': \\\n '+srcfile+' \\' for fname in self.visited.keys(): print ' ',fname,'\\' print '' # Add useful diagnostics to the end of the file. print '## Diagnostic information starts here' for fname in self.visited.keys(): print '# %s from %s'%(fname,self.visited[fname]) print '' def readfile(self,fname): """Scans fname for local #includes (system includes with <> are ignored). Searches for each included file in the includedirs. If a found file has not yet been visited, then it is added to the self.found set (to be scanned later). Missing files with simple names (no '/') are assumed to be generated files in the source directory - they are just added to the self.visited set, without being scanned.""" try: file=open(fname,'r') except: sys.stderr.write('Cannot open file %s\n'%fname) sys.exit(1) while 1: line=file.readline() if(not line): break ## <======================= loop exit point is here match=self.reInclude.match(line) if(match): found=match.group(1) # 'found' is now the filename: #include "found" if(self.reExclude and self.reExclude.search(found)): continue # skip #includes that match the exclude pattern incfile=self.findfile(found,os.path.dirname(fname)) if(incfile): if(not self.visited.has_key(incfile)): self.found[incfile]=fname elif(string.find(found,'/')==-1): # found does NOT contain '/'. self.visited[os.path.join(os.path.dirname(fname),found)]=fname else: self.visited[found]=fname file.close() def findfile(self,fname,sourcedir): """Searches self.includedirs and sourcedir for fname, and returns the full pathname if a file is found. Otherwise returns None.""" for includedir in [sourcedir]+self.includedirs: fullpath=os.path.join(includedir,fname) if(os.path.isfile(fullpath)): return os.path.normpath(fullpath) # strip off initial './' return None def usage(): """Emit help text.""" print sys.argv[0],"""[OPTIONS] [FILE] %s OPTIONS -I --include= add to the search list. -o --objsuffix=[,] set targets' extensions. [.o] -d --objdir= set target to be in directory . -x --exclude= ignore files that match regular expression. -h --help show this help text. """%MakeDep.__doc__ if(__name__=='__main__'): try: opts,args=getopt.getopt( sys.argv[1:], 'hI:o:d:x:', ['help','include=','objsuffix=','objdir=','exclude='] ) except getopt.error: # print help information and exit: usage() sys.exit(2) dep=MakeDep() for option, optarg in opts: if option in ("-h", "--help"): usage() sys.exit(0) elif option in ("-I", "--include"): dep.includedirs.append(optarg) elif option in ("-o", "--objsuffix"): dep.targetExt=string.split(optarg,',') elif option in ("-d", "--objdir"): dep.objDir=optarg elif option in ("-x", "--exclude"): dep.reExclude=re.compile(optarg) else: sys.stderr.write('Ignoring unknown option: %s\n'%option) sys.stderr.flush() for fname in args: dep.process(fname) omniEvents-2_6_2/doc/0000755000076400001440000000000010260316165014673 5ustar alexusers00000000000000omniEvents-2_6_2/doc/man/0000755000076400001440000000000010227236242015446 5ustar alexusers00000000000000omniEvents-2_6_2/doc/man/omniEvents.80000644000076400001440000001417410263502273017675 0ustar alexusers00000000000000.\"Generated by db2man.xsl. Don't modify this, modify the source. .de Sh \" Subsection .br .if t .Sp .ne 5 .PP \fB\\$1\fR .PP .. .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp .. .de Ip \" List item .br .ie \\n(.$>=3 .ne \\$3 .el .ne 3 .IP "\\$1" \\$2 .. .TH "OMNIEVENTS" 8 "" "" "" .SH NAME omniEvents \- CORBA Event Service daemon .SH "SYNOPSIS" .ad l .hy 0 .HP 11 \fBomniEvents\fR [\-p\ \fIport\fR] [\-a\ \fIendpoint\fR] [\-l\ \fIdirectory\fR] [\-P\ \fIpidfile\fR] [\-N\ \fIfactory\-name\fR] [\-f] [\-t\ \fIfile\fR] [\-vVh] [\-ORB\fIparameter\fR\ \fIvalue\fR] .ad .hy .SH "DESCRIPTION" .PP \fBomniEvents\fR is a CORBA Event Service server program\&. It is designed to be run as a standalone daemon process\&. .PP The server continuously saves its state to a file\&. Event channels are re\-created from this file each time the server restarts\&. The options \fB\-p\fR and \fB\-a\fR affect the identity of the server's event channels, so these options can only be set the first time the server is run\&. .PP Servers may be configured to operate in pairs \- if one fails then clients automatically switch over to the alternate\&. .SH "OPTIONS" .TP \fB\-p port\fR Sets the TCP port on which a new server will listen\&. The default is 11169 This value is stored in the new server's persistent state\&. There is no need to supply this option when a server is restarted, since the value is read from the file\&. If the option is supplied then it is simply compared with the stored value \- if the two do not match then the program exits with an error\&. .TP \fB\-a endpoint\fR Sets an alternate endPoint for a new server\&. All CORBA object references generated by the server include the alternate address\&. When clients cannot contact the server, they automatically fall back to trying the alternate address\&. This option is exactly equivalent to the ORB parameter \fBendPointNoListen\fR, except that the value is saved in the server's persistency file, so that it is remembered whenever omniEvents is restarted\&. The format for a TCP endpoint is giop:tcp:HOST:PORT, for example: \-a giop:tcp:secondary\&.host:11169 This value is stored in the server's persistent state\&. There is no need to supply this option when a server is restarted, since the value is read from the file\&. If the option is supplied then it is simply compared with the stored value \- if the two do not match then the program exits with an error\&. .TP \fB\-l directory\fR Full path to data directory, where omniEvents stores its persistent state\&. The default is \fI/var/lib/omniEvents\fR .TP \fB\-P pidfile\fR Keep track of the currently running omniEvents process in pidfile, which should usually be \fI/var/run/omniEvents\&.pid\fR\&. If pidfile already exists, then the server refuses to start\&. The default is to not write a PID file\&. .TP \fB\-N factory\-name\fR Sets the CORBA Name Service name for the EventChannelFactory CORBA object\&. Each time the server starts, it registers its channel factory object with factory\-name in the Name Service\&. Format for name: [CONTEXT\-ID[\&.CONTEXT\-KIND]/]*OBJECT\-ID[\&.OBJECT\-KIND] Examples: foo, foo\&.bar, foo\&.bar/baz/qux, foo/bar/baz\&.qux\&. The default is EventChannelFactory .TP \fB\-f\fR Run the server in the foreground (do not daemonize)\&. .TP \fB\-t file\fR Send trace messages to file instead of syslog\&. .TP \fB\-v\fR Output the CORBA IOR of the EventChannelFactory CORBA object when the server starts\&. This will go either to syslog or to the current trace file\&. .TP \fB\-V\fR Display version\&. .TP \fB\-h\fR Display a short summary of command\-line options\&. .TP \fB\-ORBparameter value\fR Standard omniORB options\&. see omniORB documentation for details\&. Do NOT use this option to set the endPoint or alternateEndPoint\&. This option is commonly used to set the omniORB traceLevel, in order to get more detailed output\&. Example: \fB\-ORBtraceLevel 5\fR .SH "EVENT CHANNEL PARAMETERS" .PP The omniEvents::EventChannelFactory object implements the standard CosLifeCycle::GenericFactory interface\&. An EventChannel object is created by a call to the create_object(key,the_criteria) operation\&. .PP The ``key'' parameter must be set to ``EventChannel''\&.``object interface''\&. The ``the_criteria'' parameter is a sequence of various service parameters\&. Supported parameters are listed below\&. .TP CyclePeriod_ns (long) Sets the cycle period of the channel (nanoseconds)\&. This is the time that the channel waits before transferring messages from the incoming queue to the outgoing queue\&. While messages are being transferred, incoming calls are queued\&. The default is 0\&.1 seconds\&. .TP FilterId (string) Only types whose RepositoryId matches the parameter are permitted to pass through the channel\&. Other events are silently ignored\&. .TP InsName (string) Sets the name by which the EventChannel is known in omniEvents' INSPOA\&. You can refer to the channel with a corbaloc string like this: corbaloc::HOST:11169/NAME .TP MaxNumProxies (long) The maximum number of ProxyPullSuppliers per channel\&. .TP MaxQueueLength (long) How many events are buffered by the ConsumerAdmin object\&. The discard policy is FIFO, meaning that the oldest events are discarded first in case of overflow\&. .TP PullRetryPeriod_ms (long) Period (milliseconds) between polls when in Pull Supplier \- Push Consumer mode\&. .SH "SIGNALS" .TP SIGTERM, SIGINT Shuts down the server\&. .TP SIGUSR1 You can change the traceLevel while the application is running\&. Send the server SIGUSR1 to bump its traceLevel up by 5\&. The traceLevel is wrapped at 45, so you can always get it back to where it started by repeatedly sending SIGUSR1\&. Example: \fBkill \-USR1 `cat /var/run/omniEvents\&.pid`\fR .SH "ENVIRONMENT VARIABLES" .TP OMNIEVENTS_LOGDIR Sets the directory where data files are kept by default\&. An alternative to the \fB\-l\fR option\&. .TP OMNIORB_CONFIG The location of the omniORB configuration file\&. .SH "COPYRIGHT" .PP Copyright © 2003\-2005 Alex Tingle, 1999 Paul Nader\&. .PP This is free software; see the source for copying conditions\&. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE\&. omniEvents-2_6_2/doc/man/omniEvents-win32.80000644000076400001440000001562410263502274020637 0ustar alexusers00000000000000.\"Generated by db2man.xsl. Don't modify this, modify the source. .de Sh \" Subsection .br .if t .Sp .ne 5 .PP \fB\\$1\fR .PP .. .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp .. .de Ip \" List item .br .ie \\n(.$>=3 .ne \\$3 .el .ne 3 .IP "\\$1" \\$2 .. .TH "OMNIEVENTS-WIN32" 8 "" "" "" .SH NAME omniEvents-win32 \- CORBA Event Service for Windows .SH "SYNOPSIS" .PP Command: .ad l .hy 0 .HP 11 \fBomniEvents\fR [\-p\ \fIport\fR] [\-a\ \fIendpoint\fR] [\-l\ \fIdirectory\fR] [\-N\ \fIfactory\-name\fR] [\-t\ \fIfile\fR] [\-vVh] [\-ORB\fIparameter\fR\ \fIvalue\fR] .ad .hy .PP Windows service control: .ad l .hy 0 .HP 11 \fBomniEvents\fR [\fBinstall\ [\fIOPTIONS\fR]\fR | \fBuninstall\fR | \fBsetoptions\ [\fIOPTIONS\fR]\fR | \fBgetoptions\fR] .ad .hy .SH "DESCRIPTION" .PP \fBomniEvents\fR is a CORBA Event Service server program\&. It is designed to be run as a Windows service\&. .PP The server continuously saves its state to a file\&. Event channels are re\-created from this file each time the server restarts\&. The options \fB\-p\fR and \fB\-a\fR affect the identity of the server's event channels, so these options can only be set the first time the server is run\&. .PP Servers may be configured to operate in pairs \- if one fails then clients automatically switch over to the alternate\&. .SH "SERVICE CONTROL" .PP \fBomniEvents\fR itself has four service set\-up commands\&. The command name must immediately follow the \fBomniEvents\fR\&. Any normal command\-line options which follow the command are stored in the Windows registry\&. They will be used when the service starts up\&. .TP \fBomniEvents install OPTIONS\fR Install the service with the specified options\&. The only option that will usually be useful is \fB\-t\fR, which instructs omniEvents to send trace logs to a file\&. Example: \fBomniEvents install \-t "C:\\omniEvents\\trace\&.out"\fR .TP \fBomniEvents uninstall\fR Uninstalls the service\&. .TP \fBomniEvents setoptions OPTIONS\fR Changes the service's stored options\&. .TP \fBomniEvents getoptions\fR Outputs the service's stored option to standard output\&. .PP Once the \fBomniEvents\fR is installed, you can control it from the command line, or from scripts with the \fBSc\&.exe\fR command\&. \fBSc\&.exe\fR is distributed with the ``Microsoft SDK''\&. .TP \fBsc start omniEvents\fR Starts the server\&. .TP \fBsc stop omniEvents\fR Shuts down the server\&. .TP \fBsc control omniEvents 128\fR You can change the traceLevel while the application is running\&. Send control signal 128 to the server to bump its traceLevel up by 5\&. The traceLevel is wrapped at 45, so you can always get it back to where it started by repeatedly sending signal 128\&. .SH "OPTIONS" .TP \fB\-p port\fR Sets the TCP port on which a new server will listen\&. The default is 11169 This value is stored in the new server's persistent state\&. There is no need to supply this option when a server is restarted, since the value is read from the file\&. If the option is supplied then it is simply compared with the stored value \- if the two do not match then the program exits with an error\&. .TP \fB\-a endpoint\fR Sets an alternate endPoint for a new server\&. All CORBA object references generated by the server include the alternate address\&. When clients cannot contact the server, they automatically fall back to trying the alternate address\&. This option is exactly equivalent to the ORB parameter \fBendPointNoListen\fR, except that the value is saved in the server's persistency file, so that it is remembered whenever omniEvents is restarted\&. The format for a TCP endpoint is giop:tcp:HOST:PORT, for example: \-a giop:tcp:secondary\&.host:11169 This value is stored in the server's persistent state\&. There is no need to supply this option when a server is restarted, since the value is read from the file\&. If the option is supplied then it is simply compared with the stored value \- if the two do not match then the program exits with an error\&. .TP \fB\-l directory\fR Full path to data directory, where omniEvents stores its persistent state\&. The default is \fIC:\\omniEvents\fR .TP \fB\-N factory\-name\fR Sets the CORBA Name Service name for the EventChannelFactory CORBA object\&. Each time the server starts, it registers its channel factory object with factory\-name in the Name Service\&. Format for name: [CONTEXT\-ID[\&.CONTEXT\-KIND]/]*OBJECT\-ID[\&.OBJECT\-KIND] Examples: foo, foo\&.bar, foo\&.bar/baz/qux, foo/bar/baz\&.qux\&. The default is EventChannelFactory .TP \fB\-t file\fR Send trace messages to file\&. .TP \fB\-v\fR Output the CORBA IOR of the EventChannelFactory CORBA object when the server starts\&. .TP \fB\-V\fR Display version\&. .TP \fB\-h\fR Display a short summary of command\-line options\&. .TP \fB\-ORBparameter value\fR Standard omniORB options\&. see omniORB documentation for details\&. Do NOT use this option to set the endPoint or alternateEndPoint\&. This option is commonly used to set the omniORB traceLevel, in order to get more detailed output\&. Example: \fB\-ORBtraceLevel 5\fR .SH "EVENT CHANNEL PARAMETERS" .PP The omniEvents::EventChannelFactory object implements the standard CosLifeCycle::GenericFactory interface\&. An EventChannel object is created by a call to the create_object(key,the_criteria) operation\&. .PP The ``key'' parameter must be set to ``EventChannel''\&.``object interface''\&. The ``the_criteria'' parameter is a sequence of various service parameters\&. Supported parameters are listed below\&. .TP CyclePeriod_ns (long) Sets the cycle period of the channel (nanoseconds)\&. This is the time that the channel waits before transferring messages from the incoming queue to the outgoing queue\&. While messages are being transferred, incoming calls are queued\&. The default is 0\&.1 seconds\&. .TP FilterId (string) Only types whose RepositoryId matches the parameter are permitted to pass through the channel\&. Other events are silently ignored\&. .TP InsName (string) Sets the name by which the EventChannel is known in omniEvents' INSPOA\&. You can refer to the channel with a corbaloc string like this: corbaloc::HOST:11169/NAME .TP MaxNumProxies (long) The maximum number of ProxyPullSuppliers per channel\&. .TP MaxQueueLength (long) How many events are buffered by the ConsumerAdmin object\&. The discard policy is FIFO, meaning that the oldest events are discarded first in case of overflow\&. .TP PullRetryPeriod_ms (long) Period (milliseconds) between polls when in Pull Supplier \- Push Consumer mode\&. .SH "ENVIRONMENT VARIABLES" .TP OMNIEVENTS_LOGDIR Sets the directory where data files are kept by default\&. An alternative to the \fB\-l\fR option\&. .TP OMNIORB_CONFIG The location of the omniORB configuration file\&. .SH "COPYRIGHT" .PP Copyright © 2003\-2005 Alex Tingle, 1999 Paul Nader\&. .PP This is free software; see the source for copying conditions\&. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE\&. omniEvents-2_6_2/doc/man/eventc.10000644000076400001440000000573510263502274017027 0ustar alexusers00000000000000.\"Generated by db2man.xsl. Don't modify this, modify the source. .de Sh \" Subsection .br .if t .Sp .ne 5 .PP \fB\\$1\fR .PP .. .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp .. .de Ip \" List item .br .ie \\n(.$>=3 .ne \\$3 .el .ne 3 .IP "\\$1" \\$2 .. .TH "EVENTC" 1 "" "" "" .SH NAME eventc \- create a CORBA EventChannel and register it in the naming service .SH "SYNOPSIS" .ad l .hy 0 .HP 7 \fBeventc\fR [\-n\ \fIchannel\-name\fR] [\-N\ \fIfactory\-name\fR] [\-c\ \fInanoseconds\fR] [\-i\ \fIid\fR] [\-p\ \fInum\fR] [\-q\ \fInum\fR] [\-R\ \fImilliseconds\fR] [\-t\ \fIrepository\-id\fR] [\-vh] [\-ORB\fIparameter\fR\ \fIvalue\fR] [\fIfactory\-uri\fR] .ad .hy .SH "DESCRIPTION" .PP eventc contacts the omniEvents server to request an Event Channel\&. The Event Channel is created within the the omniEvents process\&. eventc then registers the created Event Channel with the Naming Service, and exits\&. .PP \fBfactory\-uri\fR: The factory may be specified as a URI\&. This may be an IOR, or a corbaloc::: or corbaname::: URI\&. .PP Example: \fBeventc corbaloc::localhost:11169/omniEvents\fR .PP If the \fBfactory\-uri\fR argument is not supplied, then the \fB\-N factory\-name\fR option is used to look up the server in the CORBA Name Service\&. .SH "OPTIONS" .TP \fB\-n channel\-name\fR Sets the CORBA Name Service name for the new EventChannel CORBA object\&. Format for channel\-name: [CONTEXT\-ID[\&.CONTEXT\-KIND]/]*OBJECT\-ID[\&.OBJECT\-KIND] Examples: foo, foo\&.bar, foo\&.bar/baz/qux, foo/bar/baz\&.qux\&. The default is EventChannel .TP \fB\-N factory\-name\fR The CORBA Name Service name for the EventChannelFactory CORBA object\&. The default value is EventChannelFactory\&. This value is only used when the factory\-uri argument is not supplied\&. .TP \fB\-c nanoseconds\fR Sets the CyclePeriod_ns parameter of the new event channel\&. .TP \fB\-i id\fR Set the InsName of new event channel, to enable access via corbaloc\&. .TP \fB\-p num\fR Sets the MaxNumProxies parameter of the new event channel\&. .TP \fB\-q num\fR Sets the MaxQueueLength parameter of the new event channel\&. .TP \fB\-R milliseconds\fR Sets the PullRetryPeriod_ms parameter of the new event channel\&. .TP \fB\-t repository\-id\fR Sets the FilterId parameter of the new event channel\&. .TP \fB\-v\fR Output the CORBA IOR of the new EventChannel CORBA object\&. .TP \fB\-h\fR Display a short summary of command\-line options\&. .TP \fB\-ORBparameter value\fR Standard omniORB options\&. see omniORB documentation for details\&. This option is commonly used to set the omniORB traceLevel, in order to get more detailed output\&. Example: \fB\-ORBtraceLevel 5\fR .SH "ENVIRONMENT VARIABLES" .TP OMNIORB_CONFIG The location of the omniORB configuration file\&. .SH "COPYRIGHT" .PP Copyright © 2003\-2005 Alex Tingle, 1999 Paul Nader\&. .PP This is free software; see the source for copying conditions\&. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE\&. omniEvents-2_6_2/doc/man/eventf.10000644000076400001440000000251710263502274017025 0ustar alexusers00000000000000.\"Generated by db2man.xsl. Don't modify this, modify the source. .de Sh \" Subsection .br .if t .Sp .ne 5 .PP \fB\\$1\fR .PP .. .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp .. .de Ip \" List item .br .ie \\n(.$>=3 .ne \\$3 .el .ne 3 .IP "\\$1" \\$2 .. .TH "EVENTF" 1 "" "" "" .SH NAME eventf \- connect (federate) two CORBA EventChannels .SH "SYNOPSIS" .ad l .hy 0 .HP 7 \fBeventf\fR \fIfrom\-channel\-uri\fR \fIto\-channel\-uri\fR .ad .hy .SH "DESCRIPTION" .PP \fBeventf\fR establishes a connection between two event channels\&. The event channels must both already be in existence (perhaps created by the \fBeventc\fR command)\&. If both event channels are implemented by omniEvents, then the connection is persistent: it will be recreated if one or both of the channels is shut down and later restarted\&. .PP The from\- and to\-channels must be specified as URIs\&. This may be an IOR, or a corbaloc::: or corbaname::: URI\&. .PP Example: \fBeventf corbaname::#from\&.channel corbaname::#to\&.channel\fR .SH "ENVIRONMENT VARIABLES" .TP OMNIORB_CONFIG The location of the omniORB configuration file\&. .SH "COPYRIGHT" .PP Copyright © 2004,2005 Alex Tingle\&. .PP This is free software; see the source for copying conditions\&. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE\&. omniEvents-2_6_2/doc/man/events.10000644000076400001440000000411310263502274017034 0ustar alexusers00000000000000.\"Generated by db2man.xsl. Don't modify this, modify the source. .de Sh \" Subsection .br .if t .Sp .ne 5 .PP \fB\\$1\fR .PP .. .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp .. .de Ip \" List item .br .ie \\n(.$>=3 .ne \\$3 .el .ne 3 .IP "\\$1" \\$2 .. .TH "EVENTS" 1 "" "" "" .SH NAME events \- stream events from or to a CORBA EventChannel .SH "SYNOPSIS" .ad l .hy 0 .HP 7 \fBevents\fR [\-n\ \fIchannel\-name\fR] [\-s] [\-h] [\-ORB\fIparameter\fR\ \fIvalue\fR] [\fIchannel\-uri\fR] .ad .hy .SH "DESCRIPTION" .PP \fBevents\fR streams events from an event channel to standard output, or (\fB\-s\fR) from standard input to an event channel\&. .PP Events are streamed in raw binary form, accompanied by a timestamp\&. When the stream is played back into a channel, the timestamps are used the replicate the original delays between the messages\&. .PP The main use for this command it to record sets of events and play them back later for testing\&. .PP Recording example: \fBevents corbaname::#EventChannel > test\&.dat\fR .PP Playback example: \fBevents \-s corbaname::#EventChannel < test\&.dat\fR .SH "OPTIONS" .TP \fB\-n channel\-name\fR The CORBA Name Service name used to look up the EventChannel CORBA object\&. Format for channel\-name: [CONTEXT\-ID[\&.CONTEXT\-KIND]/]*OBJECT\-ID[\&.OBJECT\-KIND] Examples: foo, foo\&.bar, foo\&.bar/baz/qux, foo/bar/baz\&.qux\&. The default is EventChannel .TP \fB\-s\fR Supply mode\&. Read events from standard input\&. .TP \fB\-h\fR Display a short summary of command\-line options\&. .TP \fB\-ORBparameter value\fR Standard omniORB options\&. see omniORB documentation for details\&. This option is commonly used to set the omniORB traceLevel, in order to get more detailed output\&. Example: \fB\-ORBtraceLevel 5\fR .SH "ENVIRONMENT VARIABLES" .TP OMNIORB_CONFIG The location of the omniORB configuration file\&. .SH "COPYRIGHT" .PP Copyright © 2004,2005 Alex Tingle\&. .PP This is free software; see the source for copying conditions\&. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE\&. omniEvents-2_6_2/doc/man/rmeventc.10000644000076400001440000000324010263502274017353 0ustar alexusers00000000000000.\"Generated by db2man.xsl. Don't modify this, modify the source. .de Sh \" Subsection .br .if t .Sp .ne 5 .PP \fB\\$1\fR .PP .. .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp .. .de Ip \" List item .br .ie \\n(.$>=3 .ne \\$3 .el .ne 3 .IP "\\$1" \\$2 .. .TH "RMEVENTC" 1 "" "" "" .SH NAME rmeventc \- destroy a CORBA EventChannel .SH "SYNOPSIS" .ad l .hy 0 .HP 9 \fBrmeventc\fR [\-n\ \fIchannel\-name\fR] [\-h] [\-ORB\fIparameter\fR\ \fIvalue\fR] [\fIchannel\-uri\fR] .ad .hy .SH "DESCRIPTION" .PP \fBrmeventc\fR connects to an event channel and calls its destroy() operation\&. If the channel is located by the \fB\-n\fR option, then the name is unbound (removed) from the Name Service\&. .PP Example: \fBrmeventc \-nfoo/bar/baz\&.qux\fR .SH "OPTIONS" .TP \fB\-n channel\-name\fR The CORBA Name Service name used to look up the EventChannel CORBA object\&. Format for channel\-name: [CONTEXT\-ID[\&.CONTEXT\-KIND]/]*OBJECT\-ID[\&.OBJECT\-KIND] Examples: foo, foo\&.bar, foo\&.bar/baz/qux, foo/bar/baz\&.qux\&. The default is EventChannel .TP \fB\-h\fR Display a short summary of command\-line options\&. .TP \fB\-ORBparameter value\fR Standard omniORB options\&. see omniORB documentation for details\&. This option is commonly used to set the omniORB traceLevel, in order to get more detailed output\&. Example: \fB\-ORBtraceLevel 5\fR .SH "ENVIRONMENT VARIABLES" .TP OMNIORB_CONFIG The location of the omniORB configuration file\&. .SH "COPYRIGHT" .PP Copyright © 2003\-2005 Alex Tingle\&. .PP This is free software; see the source for copying conditions\&. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE\&. omniEvents-2_6_2/doc/rc/0000755000076400001440000000000010240451204015267 5ustar alexusers00000000000000omniEvents-2_6_2/doc/rc/docbook2text.py0000644000076400001440000003024310240451204020252 0ustar alexusers00000000000000# Package : omniEvents # docbook2text.py Created : 2004/08/13 # Author : Alex Tingle # # Copyright (C) 2004,2005 Alex Tingle. # # This file is part of the omniEvents application. # # omniEvents is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either # version 2.1 of the License, or (at your option) any later version. # # omniEvents is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public # License along with this library; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # import sys import string import getopt import xml.sax import xml.sax.handler def _db(message): pass class Element: def __init__(self,handler,name,attrs): self.handler=handler self.name=name self.attrs=attrs self.margin_left=0 if handler.stack: self.parent=handler.stack[-1] else: self.parent=None def characters(self,content): """Pass content to parent content, by default.""" if self.parent: self.parent.characters(content) def end(self): pass def ancestor(self,names): e=self.parent while e: if e.name in names: return e e=e.parent return None class Section(Element): def __init__(self,handler,name,attrs): Element.__init__(self,handler,name,attrs) self.depth=0 e=self.ancestor([name]) if e: self.depth=e.depth+1 if self.depthh.margin_left: h.outfile.write('\n'+' '*h.margin_left) else: h.outfile.write(' '*(h.margin_left-handler.cursor)) h.cursor=h.margin_left self.space=1 def addspace(self): """Add a space.""" if not self.space: h=self.handler if h.cursor=h.columns: self.tomargin() else: h.outfile.write(' ') h.cursor+=1 self.space=1 def addword(self,word): h=self.handler if h.cursorh.columns: self.tomargin() h.outfile.write(word) h.cursor+=len(word) self.space=0 def characters(self,content): h=self.handler if content[0] in string.whitespace: self.addspace() first=1 for word in string.split(content): if not first: self.addspace() first=0 self.addword(word) if content[-1] in string.whitespace: self.addspace() def end(self): self.handler.outfile.write('\n\n') self.handler.cursor=0 class Title(Para): def __init__(self,handler,name,attrs): Para.__init__(self,handler,name,attrs) self.width=0; self.titleof=self.ancestor(['section','example','refsect1']) if self.titleof and self.titleof.name=='section': if self.titleof.depth>0: x=[] for i in range(0,self.titleof.depth+1): x.append(str(handler.section[i])) Para.characters(self,string.join(x,'.')+' ') else: Para.characters(self,str(handler.section[0])+'. ') elif self.titleof and self.titleof.name=='example': Para.characters(self,'Example: ') elif self.titleof and self.titleof.name=='refsect1': handler.margin_left-=3 def characters(self,content): if self.titleof and self.titleof.name=='refsect1': content=string.upper(content) Para.characters(self,content) self.width=max(self.width,self.handler.cursor) def end(self): t=self.titleof if t and t.name=='section' and t.depth==0: self.tomargin() Para.characters(self,'='*self.width) elif t and t.name=='example': pass elif t and t.name=='refsect1': handler.margin_left+=3 else: self.tomargin() Para.characters(self,'-'*self.width) Para.end(self) class Span(Element): def __init__(self,handler,name,attrs): Element.__init__(self,handler,name,attrs) self.content='' def characters(self,content): self.content+=content def end(self): self.parent.characters(self.content) class Quote(Span): def __init__(self,handler,name,attrs): Span.__init__(self,handler,name,attrs) def end(self): self.parent.characters('"'+self.content+'"') class Command(Span): def __init__(self,handler,name,attrs): Span.__init__(self,handler,name,attrs) def end(self): self.parent.characters('`'+self.content+"'") class Replaceable(Span): def __init__(self,handler,name,attrs): Span.__init__(self,handler,name,attrs) def end(self): self.parent.characters('<'+self.content+'>') class OrderedList(Element): def __init__(self,handler,name,attrs): Element.__init__(self,handler,name,attrs) self.index=0 class ListItem(Para): def __init__(self,handler,name,attrs): Para.__init__(self,handler,name,attrs) self.tomargin() self.indent=3 if self.parent and self.parent.name=='itemizedlist': handler.outfile.write(' o ') elif self.parent and self.parent.name=='orderedlist': self.parent.index+=1 index=' %s) '%str(self.parent.index) handler.outfile.write(index) self.indent=len(index) else: handler.outfile.write(' ') handler.margin_left+=self.indent handler.cursor=handler.margin_left def end(self): handler.margin_left-=self.indent class Term(Para): def __init__(self,handler,name,attrs): Para.__init__(self,handler,name,attrs) handler.margin_left-=3 self.tomargin() #handler.outfile.write(' * ') #handler.margin_left+=3 #handler.cursor=handler.margin_left def end(self): self.characters(':') self.handler.margin_left+=3 class InformalTable(Para): def __init__(self,handler,name,attrs): Para.__init__(self,handler,name,attrs) self.content=[] self.columns=0 def characters(self,content): pass def end(self): colwidth=[0]*self.columns for row in self.content: for i in range(0,len(row)): colwidth[i]=max(colwidth[i],len(row[i])) # Emit table. for row in self.content: self.tomargin() for i in range(0,len(row)): self.handler.outfile.write(' '+string.ljust(row[i],colwidth[i])) self.handler.outfile.write('\n') self.handler.cursor=0 self.handler.outfile.write('\n') self.handler.cursor=0 class Row(Element): def __init__(self,handler,name,attrs): Element.__init__(self,handler,name,attrs) self.informaltable=self.ancestor(['informaltable']) self.informaltable.content.append([]) def end(self): if self.parent.name=='thead': divider=[] for e in self.informaltable.content[-1]: divider.append('-'*len(e)) self.informaltable.content.append(divider) class Entry(Element): def __init__(self,handler,name,attrs): Element.__init__(self,handler,name,attrs) self.informaltable=self.ancestor(['informaltable']) it=self.informaltable it.content[-1].append('') it.columns=max(it.columns,len(it.content[-1])) def characters(self,content): cleancontent=string.join(string.split(content)) if not cleancontent: return row=self.informaltable.content[-1] if cleancontent[0] not in ' )]' and \ row[-1] and row[-1][-1] not in ' ([': row[-1]+=' ' row[-1]+=cleancontent class RefNameDiv(Para): def __init__(self,handler,name,attrs): Para.__init__(self,handler,name,attrs) Para.characters(self,'-'*handler.columns) class RefName(Span): def __init__(self,handler,name,attrs): Span.__init__(self,handler,name,attrs) def end(self): self.parent.characters(self.content+' - ') class RefSect1(Element): def __init__(self,handler,name,attrs): Element.__init__(self,handler,name,attrs) handler.margin_left+=3 def end(self): handler.margin_left-=3 elementMap={ 'title' :Title, 'section' :Section, 'literallayout' :LiteralLayout, 'programlisting':LiteralLayout, 'para' :Para, 'quote' :Quote, 'command' :Command, 'literal' :Command, 'orderedlist' :OrderedList, 'listitem' :ListItem, 'term' :Term, 'informaltable' :InformalTable, 'row' :Row, 'entry' :Entry, 'refnamediv' :RefNameDiv, 'refname' :RefName, 'refsect1' :RefSect1, 'cmdsynopsis' :Para, 'replaceable' :Replaceable, 'variablelist' :VariableList } class Docbook2TextHandler(xml.sax.handler.ContentHandler): def __init__(self): self.outfile=sys.stdout self.columns=80 self.stack=[] self.margin_left=0 self.cursor=0 self.section=[0] def set_columns(self,c): self.columns=c def set_outfile(self,filename): self.outfile=open(filename) def startDocument(self): _db('startDocument') def endDocument(self): _db('endDocument') def startElement(self,name,attrs): _db('-'*len(self.stack)+name) element=None if elementMap.has_key(name): element=elementMap[name](self,name,attrs) else: element=Element(self,name,attrs) self.stack.append(element) self.margin_left+=self.stack[-1].margin_left def endElement(self,name): assert(self.stack) assert(name==self.stack[-1].name) self.stack[-1].end() self.margin_left-=self.stack[-1].margin_left del self.stack[-1] def characters(self,content): if isinstance(content,unicode): content=content.encode("iso-8859-1", "replace") self.stack[-1].characters(content) #end class Docbook2TextHandler def usage(): sys.stderr.write(""" Convert a DocBook XML file into text. syntax: python docbook2text.py OPTIONS FILES OPTIONS: DEFAULT: -c COLUMNS Width of the output. 80 -o FILE Filename for the output. standard output -v Be verbose. -h Show this text. """) ################################################################################ # If this file is executed directly, then we start here. if(__name__=="__main__"): handler=Docbook2TextHandler() try: opts,args=getopt.getopt(sys.argv[1:],"c:o:vh") except getopt.error: # print help information and exit: usage() sys.exit(-1) for option, optarg in opts: if option=='-c': handler.set_columns(optarg) elif option=='-o': handler.set_outfile(optarg) elif option=='-v': _db=lambda message: sys.stderr.write(message+'\n') elif option=='-h': usage() sys.exit(0) else: usage() sys.exit(-1) if args: for f in args: xml.sax.parse(f,handler) else: xml.sax.parse(sys.stdin,handler) omniEvents-2_6_2/doc/rc/doxygen.conf0000644000076400001440000011061710227236242017631 0ustar alexusers00000000000000# Doxyfile 1.2.15 # This file describes the settings to be used by the documentation system # doxygen (www.doxygen.org) for a project # # All text after a hash (#) is considered a comment and will be ignored # The format is: # TAG = value [value, ...] # For lists items can also be appended using: # TAG += value [value, ...] # Values that contain spaces should be placed between quotes (" ") #--------------------------------------------------------------------------- # General configuration options #--------------------------------------------------------------------------- # The PROJECT_NAME tag is a single word (or a sequence of words surrounded # by quotes) that should identify the project. PROJECT_NAME = OmniEvents # The PROJECT_NUMBER tag can be used to enter a project or revision number. # This could be handy for archiving the generated documentation or # if some version control system is used. PROJECT_NUMBER = # The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) # base path where the generated documentation will be put. # If a relative path is entered, it will be relative to the location # where doxygen was started. If left blank the current directory will be used. OUTPUT_DIRECTORY = # The OUTPUT_LANGUAGE tag is used to specify the language in which all # documentation generated by doxygen is written. Doxygen will use this # information to generate all constant output in the proper language. # The default language is English, other supported languages are: # Brazilian, Chinese, Croatian, Czech, Danish, Dutch, Finnish, French, # German, Greek, Hungarian, Italian, Japanese, Korean, Norwegian, Polish, # Portuguese, Romanian, Russian, Slovak, Slovene, Spanish and Swedish. OUTPUT_LANGUAGE = English # If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in # documentation are documented, even if no documentation was available. # Private class members and static file members will be hidden unless # the EXTRACT_PRIVATE and EXTRACT_STATIC tags are set to YES EXTRACT_ALL = YES # If the EXTRACT_PRIVATE tag is set to YES all private members of a class # will be included in the documentation. EXTRACT_PRIVATE = YES # If the EXTRACT_STATIC tag is set to YES all static members of a file # will be included in the documentation. EXTRACT_STATIC = YES # If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs) # defined locally in source files will be included in the documentation. # If set to NO only classes defined in header files are included. EXTRACT_LOCAL_CLASSES = YES # If the HIDE_UNDOC_MEMBERS tag is set to YES, Doxygen will hide all # undocumented members of documented classes, files or namespaces. # If set to NO (the default) these members will be included in the # various overviews, but no documentation section is generated. # This option has no effect if EXTRACT_ALL is enabled. HIDE_UNDOC_MEMBERS = NO # If the HIDE_UNDOC_CLASSES tag is set to YES, Doxygen will hide all # undocumented classes that are normally visible in the class hierarchy. # If set to NO (the default) these class will be included in the various # overviews. This option has no effect if EXTRACT_ALL is enabled. HIDE_UNDOC_CLASSES = NO # If the BRIEF_MEMBER_DESC tag is set to YES (the default) Doxygen will # include brief member descriptions after the members that are listed in # the file and class documentation (similar to JavaDoc). # Set to NO to disable this. BRIEF_MEMBER_DESC = YES # If the REPEAT_BRIEF tag is set to YES (the default) Doxygen will prepend # the brief description of a member or function before the detailed description. # Note: if both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the # brief descriptions will be completely suppressed. REPEAT_BRIEF = YES # If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then # Doxygen will generate a detailed section even if there is only a brief # description. ALWAYS_DETAILED_SEC = NO # If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all inherited # members of a class in the documentation of that class as if those members were # ordinary class members. Constructors, destructors and assignment operators of # the base classes will not be shown. INLINE_INHERITED_MEMB = NO # If the FULL_PATH_NAMES tag is set to YES then Doxygen will prepend the full # path before files name in the file list and in the header files. If set # to NO the shortest path that makes the file name unique will be used. FULL_PATH_NAMES = NO # If the FULL_PATH_NAMES tag is set to YES then the STRIP_FROM_PATH tag # can be used to strip a user defined part of the path. Stripping is # only done if one of the specified strings matches the left-hand part of # the path. It is allowed to use relative paths in the argument list. STRIP_FROM_PATH = # The INTERNAL_DOCS tag determines if documentation # that is typed after a \internal command is included. If the tag is set # to NO (the default) then the documentation will be excluded. # Set it to YES to include the internal documentation. INTERNAL_DOCS = NO # Setting the STRIP_CODE_COMMENTS tag to YES (the default) will instruct # doxygen to hide any special comment blocks from generated source code # fragments. Normal C and C++ comments will always remain visible. STRIP_CODE_COMMENTS = YES # If the CASE_SENSE_NAMES tag is set to NO then Doxygen will only generate # file names in lower case letters. If set to YES upper case letters are also # allowed. This is useful if you have classes or files whose names only differ # in case and if your file system supports case sensitive file names. Windows # users are adviced to set this option to NO. CASE_SENSE_NAMES = YES # If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter # (but less readable) file names. This can be useful is your file systems # doesn't support long names like on DOS, Mac, or CD-ROM. SHORT_NAMES = YES # If the HIDE_SCOPE_NAMES tag is set to NO (the default) then Doxygen # will show members with their full class and namespace scopes in the # documentation. If set to YES the scope will be hidden. HIDE_SCOPE_NAMES = NO # If the VERBATIM_HEADERS tag is set to YES (the default) then Doxygen # will generate a verbatim copy of the header file for each class for # which an include is specified. Set to NO to disable this. VERBATIM_HEADERS = YES # If the SHOW_INCLUDE_FILES tag is set to YES (the default) then Doxygen # will put list of the files that are included by a file in the documentation # of that file. SHOW_INCLUDE_FILES = YES # If the JAVADOC_AUTOBRIEF tag is set to YES then Doxygen # will interpret the first line (until the first dot) of a JavaDoc-style # comment as the brief description. If set to NO, the JavaDoc # comments will behave just like the Qt-style comments (thus requiring an # explict @brief command for a brief description. JAVADOC_AUTOBRIEF = YES # If the INHERIT_DOCS tag is set to YES (the default) then an undocumented # member inherits the documentation from any documented member that it # reimplements. INHERIT_DOCS = YES # If the INLINE_INFO tag is set to YES (the default) then a tag [inline] # is inserted in the documentation for inline members. INLINE_INFO = YES # If the SORT_MEMBER_DOCS tag is set to YES (the default) then doxygen # will sort the (detailed) documentation of file and class members # alphabetically by member name. If set to NO the members will appear in # declaration order. SORT_MEMBER_DOCS = YES # If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC # tag is set to YES, then doxygen will reuse the documentation of the first # member in the group (if any) for the other members of the group. By default # all members of a group must be documented explicitly. DISTRIBUTE_GROUP_DOC = NO # The TAB_SIZE tag can be used to set the number of spaces in a tab. # Doxygen uses this value to replace tabs by spaces in code fragments. TAB_SIZE = 8 # The GENERATE_TODOLIST tag can be used to enable (YES) or # disable (NO) the todo list. This list is created by putting \todo # commands in the documentation. GENERATE_TODOLIST = YES # The GENERATE_TESTLIST tag can be used to enable (YES) or # disable (NO) the test list. This list is created by putting \test # commands in the documentation. GENERATE_TESTLIST = YES # The GENERATE_BUGLIST tag can be used to enable (YES) or # disable (NO) the bug list. This list is created by putting \bug # commands in the documentation. GENERATE_BUGLIST = YES # This tag can be used to specify a number of aliases that acts # as commands in the documentation. An alias has the form "name=value". # For example adding "sideeffect=\par Side Effects:\n" will allow you to # put the command \sideeffect (or @sideeffect) in the documentation, which # will result in a user defined paragraph with heading "Side Effects:". # You can put \n's in the value part of an alias to insert newlines. ALIASES = # The ENABLED_SECTIONS tag can be used to enable conditional # documentation sections, marked by \if sectionname ... \endif. ENABLED_SECTIONS = # The MAX_INITIALIZER_LINES tag determines the maximum number of lines # the initial value of a variable or define consist of for it to appear in # the documentation. If the initializer consists of more lines than specified # here it will be hidden. Use a value of 0 to hide initializers completely. # The appearance of the initializer of individual variables and defines in the # documentation can be controlled using \showinitializer or \hideinitializer # command in the documentation regardless of this setting. MAX_INITIALIZER_LINES = 30 # Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C sources # only. Doxygen will then generate output that is more tailored for C. # For instance some of the names that are used will be different. The list # of all members will be omitted, etc. OPTIMIZE_OUTPUT_FOR_C = NO # Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java sources # only. Doxygen will then generate output that is more tailored for Java. # For instance namespaces will be presented as packages, qualified scopes # will look different, etc. OPTIMIZE_OUTPUT_JAVA = NO # Set the SHOW_USED_FILES tag to NO to disable the list of files generated # at the bottom of the documentation of classes and structs. If set to YES the # list will mention the files that were used to generate the documentation. SHOW_USED_FILES = YES #--------------------------------------------------------------------------- # configuration options related to warning and progress messages #--------------------------------------------------------------------------- # The QUIET tag can be used to turn on/off the messages that are generated # by doxygen. Possible values are YES and NO. If left blank NO is used. QUIET = NO # The WARNINGS tag can be used to turn on/off the warning messages that are # generated by doxygen. Possible values are YES and NO. If left blank # NO is used. WARNINGS = YES # If WARN_IF_UNDOCUMENTED is set to YES, then doxygen will generate warnings # for undocumented members. If EXTRACT_ALL is set to YES then this flag will # automatically be disabled. WARN_IF_UNDOCUMENTED = YES # The WARN_FORMAT tag determines the format of the warning messages that # doxygen can produce. The string should contain the $file, $line, and $text # tags, which will be replaced by the file and line number from which the # warning originated and the warning text. WARN_FORMAT = "$file:$line: $text" # The WARN_LOGFILE tag can be used to specify a file to which warning # and error messages should be written. If left blank the output is written # to stderr. WARN_LOGFILE = #--------------------------------------------------------------------------- # configuration options related to the input files #--------------------------------------------------------------------------- # The INPUT tag can be used to specify the files and/or directories that contain # documented source files. You may enter file names like "myfile.cpp" or # directories like "/usr/src/myproject". Separate the files or directories # with spaces. INPUT = src tools examples # If the value of the INPUT tag contains directories, you can use the # FILE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp # and *.h) to filter out the source-files in the directories. If left # blank the following patterns are tested: # *.c *.cc *.cxx *.cpp *.c++ *.java *.ii *.ixx *.ipp *.i++ *.inl *.h *.hh *.hxx *.hpp # *.h++ *.idl *.odl FILE_PATTERNS = # The RECURSIVE tag can be used to turn specify whether or not subdirectories # should be searched for input files as well. Possible values are YES and NO. # If left blank NO is used. RECURSIVE = NO # The EXCLUDE tag can be used to specify files and/or directories that should # excluded from the INPUT source files. This way you can easily exclude a # subdirectory from a directory tree whose root is specified with the INPUT tag. EXCLUDE = # The EXCLUDE_SYMLINKS tag can be used select whether or not files or directories # that are symbolic links (a Unix filesystem feature) are excluded from the input. EXCLUDE_SYMLINKS = NO # If the value of the INPUT tag contains directories, you can use the # EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude # certain files from those directories. EXCLUDE_PATTERNS = # The EXAMPLE_PATH tag can be used to specify one or more files or # directories that contain example code fragments that are included (see # the \include command). EXAMPLE_PATH = # If the value of the EXAMPLE_PATH tag contains directories, you can use the # EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp # and *.h) to filter out the source-files in the directories. If left # blank all files are included. EXAMPLE_PATTERNS = # If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be # searched for input files to be used with the \include or \dontinclude # commands irrespective of the value of the RECURSIVE tag. # Possible values are YES and NO. If left blank NO is used. EXAMPLE_RECURSIVE = NO # The IMAGE_PATH tag can be used to specify one or more files or # directories that contain image that are included in the documentation (see # the \image command). IMAGE_PATH = # The INPUT_FILTER tag can be used to specify a program that doxygen should # invoke to filter for each input file. Doxygen will invoke the filter program # by executing (via popen()) the command , where # is the value of the INPUT_FILTER tag, and is the name of an # input file. Doxygen will then use the output that the filter program writes # to standard output. INPUT_FILTER = # If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using # INPUT_FILTER) will be used to filter the input files when producing source # files to browse. FILTER_SOURCE_FILES = NO #--------------------------------------------------------------------------- # configuration options related to source browsing #--------------------------------------------------------------------------- # If the SOURCE_BROWSER tag is set to YES then a list of source files will # be generated. Documented entities will be cross-referenced with these sources. SOURCE_BROWSER = YES # Setting the INLINE_SOURCES tag to YES will include the body # of functions and classes directly in the documentation. INLINE_SOURCES = NO # If the REFERENCED_BY_RELATION tag is set to YES (the default) # then for each documented function all documented # functions referencing it will be listed. REFERENCED_BY_RELATION = YES # If the REFERENCES_RELATION tag is set to YES (the default) # then for each documented function all documented entities # called/used by that function will be listed. REFERENCES_RELATION = YES #--------------------------------------------------------------------------- # configuration options related to the alphabetical class index #--------------------------------------------------------------------------- # If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index # of all compounds will be generated. Enable this if the project # contains a lot of classes, structs, unions or interfaces. ALPHABETICAL_INDEX = NO # If the alphabetical index is enabled (see ALPHABETICAL_INDEX) then # the COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns # in which this list will be split (can be a number in the range [1..20]) COLS_IN_ALPHA_INDEX = 5 # In case all classes in a project start with a common prefix, all # classes will be put under the same header in the alphabetical index. # The IGNORE_PREFIX tag can be used to specify one or more prefixes that # should be ignored while generating the index headers. IGNORE_PREFIX = #--------------------------------------------------------------------------- # configuration options related to the HTML output #--------------------------------------------------------------------------- # If the GENERATE_HTML tag is set to YES (the default) Doxygen will # generate HTML output. GENERATE_HTML = YES # The HTML_OUTPUT tag is used to specify where the HTML docs will be put. # If a relative path is entered the value of OUTPUT_DIRECTORY will be # put in front of it. If left blank `html' will be used as the default path. HTML_OUTPUT = doc/doxygen # The HTML_FILE_EXTENSION tag can be used to specify the file extension for # each generated HTML page (for example: .htm,.php,.asp). If it is left blank # doxygen will generate files with .html extension. HTML_FILE_EXTENSION = .html # The HTML_HEADER tag can be used to specify a personal HTML header for # each generated HTML page. If it is left blank doxygen will generate a # standard header. HTML_HEADER = # The HTML_FOOTER tag can be used to specify a personal HTML footer for # each generated HTML page. If it is left blank doxygen will generate a # standard footer. HTML_FOOTER = # The HTML_STYLESHEET tag can be used to specify a user defined cascading # style sheet that is used by each HTML page. It can be used to # fine-tune the look of the HTML output. If the tag is left blank doxygen # will generate a default style sheet HTML_STYLESHEET = # If the HTML_ALIGN_MEMBERS tag is set to YES, the members of classes, # files or namespaces will be aligned in HTML using tables. If set to # NO a bullet list will be used. HTML_ALIGN_MEMBERS = YES # If the GENERATE_HTMLHELP tag is set to YES, additional index files # will be generated that can be used as input for tools like the # Microsoft HTML help workshop to generate a compressed HTML help file (.chm) # of the generated HTML documentation. GENERATE_HTMLHELP = NO # If the GENERATE_HTMLHELP tag is set to YES, the GENERATE_CHI flag # controls if a separate .chi index file is generated (YES) or that # it should be included in the master .chm file (NO). GENERATE_CHI = NO # If the GENERATE_HTMLHELP tag is set to YES, the BINARY_TOC flag # controls whether a binary table of contents is generated (YES) or a # normal table of contents (NO) in the .chm file. BINARY_TOC = NO # The TOC_EXPAND flag can be set to YES to add extra items for group members # to the contents of the Html help documentation and to the tree view. TOC_EXPAND = NO # The DISABLE_INDEX tag can be used to turn on/off the condensed index at # top of each HTML page. The value NO (the default) enables the index and # the value YES disables it. DISABLE_INDEX = NO # This tag can be used to set the number of enum values (range [1..20]) # that doxygen will group on one line in the generated HTML documentation. ENUM_VALUES_PER_LINE = 4 # If the GENERATE_TREEVIEW tag is set to YES, a side panel will be # generated containing a tree-like index structure (just like the one that # is generated for HTML Help). For this to work a browser that supports # JavaScript and frames is required (for instance Mozilla, Netscape 4.0+, # or Internet explorer 4.0+). Note that for large projects the tree generation # can take a very long time. In such cases it is better to disable this feature. # Windows users are probably better off using the HTML help feature. GENERATE_TREEVIEW = YES # If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be # used to set the initial width (in pixels) of the frame in which the tree # is shown. TREEVIEW_WIDTH = 250 #--------------------------------------------------------------------------- # configuration options related to the LaTeX output #--------------------------------------------------------------------------- # If the GENERATE_LATEX tag is set to YES (the default) Doxygen will # generate Latex output. GENERATE_LATEX = NO # The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put. # If a relative path is entered the value of OUTPUT_DIRECTORY will be # put in front of it. If left blank `latex' will be used as the default path. LATEX_OUTPUT = latex # The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be invoked. If left blank `latex' will be used as the default command name. LATEX_CMD_NAME = latex # The MAKEINDEX_CMD_NAME tag can be used to specify the command name to # generate index for LaTeX. If left blank `makeindex' will be used as the # default command name. MAKEINDEX_CMD_NAME = makeindex # If the COMPACT_LATEX tag is set to YES Doxygen generates more compact # LaTeX documents. This may be useful for small projects and may help to # save some trees in general. COMPACT_LATEX = NO # The PAPER_TYPE tag can be used to set the paper type that is used # by the printer. Possible values are: a4, a4wide, letter, legal and # executive. If left blank a4wide will be used. PAPER_TYPE = a4wide # The EXTRA_PACKAGES tag can be to specify one or more names of LaTeX # packages that should be included in the LaTeX output. EXTRA_PACKAGES = # The LATEX_HEADER tag can be used to specify a personal LaTeX header for # the generated latex document. The header should contain everything until # the first chapter. If it is left blank doxygen will generate a # standard header. Notice: only use this tag if you know what you are doing! LATEX_HEADER = # If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated # is prepared for conversion to pdf (using ps2pdf). The pdf file will # contain links (just like the HTML output) instead of page references # This makes the output suitable for online browsing using a pdf viewer. PDF_HYPERLINKS = NO # If the USE_PDFLATEX tag is set to YES, pdflatex will be used instead of # plain latex in the generated Makefile. Set this option to YES to get a # higher quality PDF documentation. USE_PDFLATEX = NO # If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \\batchmode. # command to the generated LaTeX files. This will instruct LaTeX to keep # running if errors occur, instead of asking the user for help. # This option is also used when generating formulas in HTML. LATEX_BATCHMODE = NO #--------------------------------------------------------------------------- # configuration options related to the RTF output #--------------------------------------------------------------------------- # If the GENERATE_RTF tag is set to YES Doxygen will generate RTF output # The RTF output is optimised for Word 97 and may not look very pretty with # other RTF readers or editors. GENERATE_RTF = NO # The RTF_OUTPUT tag is used to specify where the RTF docs will be put. # If a relative path is entered the value of OUTPUT_DIRECTORY will be # put in front of it. If left blank `rtf' will be used as the default path. RTF_OUTPUT = rtf # If the COMPACT_RTF tag is set to YES Doxygen generates more compact # RTF documents. This may be useful for small projects and may help to # save some trees in general. COMPACT_RTF = NO # If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated # will contain hyperlink fields. The RTF file will # contain links (just like the HTML output) instead of page references. # This makes the output suitable for online browsing using WORD or other # programs which support those fields. # Note: wordpad (write) and others do not support links. RTF_HYPERLINKS = NO # Load stylesheet definitions from file. Syntax is similar to doxygen's # config file, i.e. a series of assigments. You only have to provide # replacements, missing definitions are set to their default value. RTF_STYLESHEET_FILE = # Set optional variables used in the generation of an rtf document. # Syntax is similar to doxygen's config file. RTF_EXTENSIONS_FILE = #--------------------------------------------------------------------------- # configuration options related to the man page output #--------------------------------------------------------------------------- # If the GENERATE_MAN tag is set to YES (the default) Doxygen will # generate man pages GENERATE_MAN = NO # The MAN_OUTPUT tag is used to specify where the man pages will be put. # If a relative path is entered the value of OUTPUT_DIRECTORY will be # put in front of it. If left blank `man' will be used as the default path. MAN_OUTPUT = man # The MAN_EXTENSION tag determines the extension that is added to # the generated man pages (default is the subroutine's section .3) MAN_EXTENSION = .3 # If the MAN_LINKS tag is set to YES and Doxygen generates man output, # then it will generate one additional man file for each entity # documented in the real man page(s). These additional files # only source the real man page, but without them the man command # would be unable to find the correct page. The default is NO. MAN_LINKS = NO #--------------------------------------------------------------------------- # configuration options related to the XML output #--------------------------------------------------------------------------- # If the GENERATE_XML tag is set to YES Doxygen will # generate an XML file that captures the structure of # the code including all documentation. Note that this # feature is still experimental and incomplete at the # moment. GENERATE_XML = NO #--------------------------------------------------------------------------- # configuration options for the AutoGen Definitions output #--------------------------------------------------------------------------- # If the GENERATE_AUTOGEN_DEF tag is set to YES Doxygen will # generate an AutoGen Definitions (see autogen.sf.net) file # that captures the structure of the code including all # documentation. Note that this feature is still experimental # and incomplete at the moment. GENERATE_AUTOGEN_DEF = NO #--------------------------------------------------------------------------- # Configuration options related to the preprocessor #--------------------------------------------------------------------------- # If the ENABLE_PREPROCESSING tag is set to YES (the default) Doxygen will # evaluate all C-preprocessor directives found in the sources and include # files. ENABLE_PREPROCESSING = YES # If the MACRO_EXPANSION tag is set to YES Doxygen will expand all macro # names in the source code. If set to NO (the default) only conditional # compilation will be performed. Macro expansion can be done in a controlled # way by setting EXPAND_ONLY_PREDEF to YES. MACRO_EXPANSION = NO # If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES # then the macro expansion is limited to the macros specified with the # PREDEFINED and EXPAND_AS_PREDEFINED tags. EXPAND_ONLY_PREDEF = NO # If the SEARCH_INCLUDES tag is set to YES (the default) the includes files # in the INCLUDE_PATH (see below) will be search if a #include is found. SEARCH_INCLUDES = YES # The INCLUDE_PATH tag can be used to specify one or more directories that # contain include files that are not input files but should be processed by # the preprocessor. INCLUDE_PATH = # You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard # patterns (like *.h and *.hpp) to filter out the header-files in the # directories. If left blank, the patterns specified with FILE_PATTERNS will # be used. INCLUDE_FILE_PATTERNS = # The PREDEFINED tag can be used to specify one or more macro names that # are defined before the preprocessor is started (similar to the -D option of # gcc). The argument of the tag is a list of macros of the form: name # or name=definition (no spaces). If the definition and the = are # omitted =1 is assumed. PREDEFINED = # If the MACRO_EXPANSION and EXPAND_PREDEF_ONLY tags are set to YES then # this tag can be used to specify a list of macro names that should be expanded. # The macro definition that is found in the sources will be used. # Use the PREDEFINED tag if you want to use a different macro definition. EXPAND_AS_DEFINED = # If the SKIP_FUNCTION_MACROS tag is set to YES (the default) then # doxygen's preprocessor will remove all function-like macros that are alone # on a line and do not end with a semicolon. Such function macros are typically # used for boiler-plate code, and will confuse the parser if not removed. SKIP_FUNCTION_MACROS = YES #--------------------------------------------------------------------------- # Configuration::addtions related to external references #--------------------------------------------------------------------------- # The TAGFILES tag can be used to specify one or more tagfiles. TAGFILES = # When a file name is specified after GENERATE_TAGFILE, doxygen will create # a tag file that is based on the input files it reads. GENERATE_TAGFILE = # If the ALLEXTERNALS tag is set to YES all external classes will be listed # in the class index. If set to NO only the inherited external classes # will be listed. ALLEXTERNALS = NO # If the EXTERNAL_GROUPS tag is set to YES all external groups will be listed # in the modules index. If set to NO, only the current project's groups will # be listed. EXTERNAL_GROUPS = YES # The PERL_PATH should be the absolute path and name of the perl script # interpreter (i.e. the result of `which perl'). PERL_PATH = /usr/bin/perl #--------------------------------------------------------------------------- # Configuration options related to the dot tool #--------------------------------------------------------------------------- # If the CLASS_DIAGRAMS tag is set to YES (the default) Doxygen will # generate a inheritance diagram (in Html, RTF and LaTeX) for classes with base or # super classes. Setting the tag to NO turns the diagrams off. Note that this # option is superceded by the HAVE_DOT option below. This is only a fallback. It is # recommended to install and use dot, since it yield more powerful graphs. CLASS_DIAGRAMS = YES # If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is # available from the path. This tool is part of Graphviz, a graph visualization # toolkit from AT&T and Lucent Bell Labs. The other options in this section # have no effect if this option is set to NO (the default) HAVE_DOT = YES # If the CLASS_GRAPH and HAVE_DOT tags are set to YES then doxygen # will generate a graph for each documented class showing the direct and # indirect inheritance relations. Setting this tag to YES will force the # the CLASS_DIAGRAMS tag to NO. CLASS_GRAPH = YES # If the COLLABORATION_GRAPH and HAVE_DOT tags are set to YES then doxygen # will generate a graph for each documented class showing the direct and # indirect implementation dependencies (inheritance, containment, and # class references variables) of the class with other documented classes. COLLABORATION_GRAPH = YES # If set to YES, the inheritance and collaboration graphs will show the # relations between templates and their instances. TEMPLATE_RELATIONS = YES # If set to YES, the inheritance and collaboration graphs will hide # inheritance and usage relations if the target is undocumented # or is not a class. HIDE_UNDOC_RELATIONS = YES # If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDE_GRAPH, and HAVE_DOT # tags are set to YES then doxygen will generate a graph for each documented # file showing the direct and indirect include dependencies of the file with # other documented files. INCLUDE_GRAPH = YES # If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDED_BY_GRAPH, and # HAVE_DOT tags are set to YES then doxygen will generate a graph for each # documented header file showing the documented files that directly or # indirectly include this file. INCLUDED_BY_GRAPH = YES # If the GRAPHICAL_HIERARCHY and HAVE_DOT tags are set to YES then doxygen # will graphical hierarchy of all classes instead of a textual one. GRAPHICAL_HIERARCHY = YES # The DOT_IMAGE_FORMAT tag can be used to set the image format of the images # generated by dot. Possible values are png, jpg, or gif # If left blank png will be used. DOT_IMAGE_FORMAT = png # The tag DOT_PATH can be used to specify the path where the dot tool can be # found. If left blank, it is assumed the dot tool can be found on the path. DOT_PATH = # The DOTFILE_DIRS tag can be used to specify one or more directories that # contain dot files that are included in the documentation (see the # \dotfile command). DOTFILE_DIRS = # The MAX_DOT_GRAPH_WIDTH tag can be used to set the maximum allowed width # (in pixels) of the graphs generated by dot. If a graph becomes larger than # this value, doxygen will try to truncate the graph, so that it fits within # the specified constraint. Beware that most browsers cannot cope with very # large images. MAX_DOT_GRAPH_WIDTH = 1024 # The MAX_DOT_GRAPH_HEIGHT tag can be used to set the maximum allows height # (in pixels) of the graphs generated by dot. If a graph becomes larger than # this value, doxygen will try to truncate the graph, so that it fits within # the specified constraint. Beware that most browsers cannot cope with very # large images. MAX_DOT_GRAPH_HEIGHT = 1024 # If the GENERATE_LEGEND tag is set to YES (the default) Doxygen will # generate a legend page explaining the meaning of the various boxes and # arrows in the dot generated graphs. GENERATE_LEGEND = YES # If the DOT_CLEANUP tag is set to YES (the default) Doxygen will # remove the intermedate dot files that are used to generate # the various graphs. DOT_CLEANUP = YES #--------------------------------------------------------------------------- # Configuration::addtions related to the search engine #--------------------------------------------------------------------------- # The SEARCHENGINE tag specifies whether or not a search engine should be # used. If set to NO the values of all tags below this one will be ignored. SEARCHENGINE = NO # The CGI_NAME tag should be the name of the CGI script that # starts the search engine (doxysearch) with the correct parameters. # A script with this name will be generated by doxygen. CGI_NAME = search.cgi # The CGI_URL tag should be the absolute URL to the directory where the # cgi binaries are located. See the documentation of your http daemon for # details. CGI_URL = # The DOC_URL tag should be the absolute URL to the directory where the # documentation is located. If left blank the absolute path to the # documentation, with file:// prepended to it, will be used. DOC_URL = # The DOC_ABSPATH tag should be the absolute path to the directory where the # documentation is located. If left blank the directory on the local machine # will be used. DOC_ABSPATH = # The BIN_ABSPATH tag must point to the directory where the doxysearch binary # is installed. BIN_ABSPATH = /usr/local/bin/ # The EXT_DOC_PATHS tag can be used to specify one or more paths to # documentation generated for other projects. This allows doxysearch to search # the documentation for these projects as well. EXT_DOC_PATHS = omniEvents-2_6_2/doc/omnievents.docbook.css0000644000076400001440000000151310227236242021213 0ustar alexusers00000000000000body { font-family:trebuchet ms,helvetica,tahoma,sans-serif; font-size:10pt; margin:10px 10% 10px 10%; } h1, h2, h3, h4, h5 { color:maroon; font-family:garamond,times new roman,times,serif; font-style:italic; } h1,h2 { font-size:24pt; } h3 { font-size:18pt; } span.term { font-weight: bold; } div.sidebar { background: #F0F0F0; border: 1px solid gray; padding: 5px; margin: 20px; } pre.programlisting { background: #F0F0F0; border: 1px solid gray; padding: 2px; font-size: 10pt; white-space: pre; } .informaltable table { border:none; } .informaltable td, .informaltable th { border:none; padding:2pt; } .navheader, .navfooter, .copyright, .legalnotice, .abstract { font-family:arial,helvetica,sans-serif; font-size:smaller; } .abstract { font-weight:bold; } omniEvents-2_6_2/doc/omnievents.docbook.xml0000644000076400001440000026114410260316165021233 0ustar alexusers00000000000000
omniEvents Information on installing, building and using omniEvents, an implementation of the OMG Event Service Specification v1.1 for omniORB3 and omniORB4. 2003-2005 Alex Tingle 1999 Paul Nader This work is licensed under the Creative Commons Attribution License. To view a copy of this license, visit http://creativecommons.org/licenses/by/2.0/ or send a letter to Creative Commons, 559 Nathan Abbott Way, Stanford, California 94305, USA. We hope you find omniEvents useful. If you have any comments or suggestion for improvements you can email us at: alextingle@users.sourceforge.net naderp@users.sourceforge.net shamus13@users.sourceforge.net
Introduction omniEvents enables CORBA applications to communicate through asynchronous broadcast channels rather than direct method calls. The server runs on Windows, and most Unixes. It is a small, efficient implementation of the Object Management Group's Event Service specification designed to work with omniORB. We provide a number of example programs in C++, Python and Java, to help you get started with writing your own event service clients. If you want to get going quickly, then read the Quick Install section for Unix or Windows, and then refer to the Reference section.
Features Implements untyped event channels. Suppliers send events to the event channel as a CORBA any type. The channel then broadcasts the event to all of the consumers that have subscribed to the channel. Persistent state. Channels and connections are continuously saved to disk, so that they can be recreated when the server restarts. Scalable. Event channels can be federated, which allows multiple servers to share the load of delivering events to many clients across a wide area network. Fault tolerant. Implements a sub-set of the Fault-Tolerant CORBA specification. Servers may be configured to operate in pairs - if one fails then clients automatically switch over to the alternate. Easy to install. The server runs as a daemon on Unix or a service on Windows. A SysV style init file can be automatically installed on Unix, to get you up and running with minimum fuss. Events can be filtered by type. Event channels can be configured to only pass on events of a particular CORBA type. Combined with channel federation, this allows Consumers to choose which type of events to receive. Available as a library. You can create event channels within your own programs by linking to the shared library (on Unix).
Further Reading Information on the Event Service specification can be obtained from the CORBA services : Event Service Specification page at: http://www.omg.org/technology/documents/formal/event_service.htm For an introduction to the various communication models see OMG Event Object Service, SIGS Vol9, Num 2, February 1997 . You can download from http://www.iona.com/hyplan/vinoski/col9.pdf There is an excellent introduction to the Event Service in Chapter 20 of the book Advanced CORBA Programming with C++, by Michi Henning & Steve Vinoski.
Build and Installation This section provides a complete guide to building and installing omniEvents.
Prerequisites You need to install omniORB before you can start with omniEvents. The latest version of omniORB4 is strongly recommended. You can download it from here: http://omniorb.sourceforge.net/download.html The Unix install requires GNU Make. If you don't have it already, then you can download it from here: http://ftp.gnu.org/pub/gnu/make/ In order to install omniEvents as a Windows service, you need to be using a modern version of Windows. You need: NT, win2000 or XP. You cannot use: win95, 98 or ME (but you can just run the server manually).
Quick Install Guide - Unix omniEvents is distributed as source for Unix platforms. To install you must unpack the omniEvents-XXX-src.tar.gz file, build the code and then install the executables and init scripts into the correct locations on your system. Unpack the .tar.gz file: gzip -dc omniEvents-XXX-src.tar.gz | tar xvf -. Go down into the omniEvents diectory: cd omniEvents-XXX. Run the configure script. For a full list of available parameters, type ./configure --help. Common parameters are: install files in PREFIX [/usr/local]. set the path to the local omniORB installation [$OMNIORBBASE]. do not print checking... messages. Compile the executables: make. Get superuser privileges: su root. Install the executables: make install. Install the system init script: cd etc; make install. Set up SysV service omniorb-eventservice... The procedure for setting up a SysV service differs from platform to platform. You need to create symbolic links from the /etc/rcX.d directories to the /etc/init.d/omniorb-eventservice init script. (The paths to these files may be different on your system.) For example, on a Debian GNU/Linux system, the command update-rc.d omniorb-eventservice defaults would set up omniEvents to start at the default runlevels. Typical Unix build session % gzip -dc omniEvents-XXX-src.tar.gz | tar xvf - % cd omniEvents-XXX % ./configure % make % su root # make install # cd etc # make install #
Quick Install Guide - Windows omniEvents is distributed precompiled for Windows. To install you must unpack the omniEvents-XXX-win32.zip file, set up your system path and install the service. Unpack the .zip file using (for example) WinZip. We assume that you unpack it into C:\Program Files. If you choose to put it somewhere else, then just adjust the remainder of these instructions accordingly. Add the omniEvents directory to the system environment variable: Path. It's important to NOT use the local path. Only the system path is available at boot time when services start. Menu: Start -> Control Panel. Icon: System. Tab: Advanced. Click: Environment Variables. Add to System Path: ;C:\Program Files\omniEvents-XXX Create a data directory: C:\omniEvents. omniEvents will store its persistent state in this directory. Install the service: Open a command window, and type: omniEvents install -t "C:\omniEvents\trace.out" The service will start automatically when you next reboot, or you can start it manually now.
Building from Source on Windows It is not usually necessary to compile omniEvents for Windows, since it is available pre-compiled. Firstly make sure you have everything you need: Microsoft Visual C++ compiler. (Tested with version 6.0, service pack 3) The environment variables for command-line compiling must be set up. You can test this by trying to compile hello.cc (in the win32 directory) with the command: > cl -TP -GX -MD hello.cc omniORB4. Get it from http://omniorb.sourceforge.net/download.html You should set up your PATH environment to include: <omniORB Top-Level Directory>\bin\x86_win32 Test this by checking that this command prints out the omniidl help: > omniidl -u A fairly recent version of GNU Make for Windows (3.78.1 or above). Download it from http://unxutils.sourceforge.net/ or Google for gnu make windows. The make.exe also needs to be in the PATH. For example, you could copy it into your C:\winnt directory. The following command should show version text: > make --help Next make sure that the build files are correctly configured. Don't run the configure command on Windows, hand edit the files instead. When you unpack the omniEvents-XXX-src.tar.gz file, the Windows config.mk and src/config.h files should already be in the correct places. If not, then you can copy them from the win32/ directory. Edit config.mk to set the values of these variables: OMNIORB_BASE full path to omniORB top-level directory. OMNIORB_LIBS libraries provided by omniORB. OMNIEVENTS_BASE full path to omniEvents top-level directory. Compile omniEvents. Open a command window, and cd to the omniEvents top-level directory. The following command builds omniEvents: > make
Programs This section lists the programs that are bundled with the omniEvents distribution. Most importantly, the omniEvents daemon implements the EventChannelFactory and hosts the event channels. The daemon is built in the src/ directory. On Unix the daemon is installed into /usr/local/sbin, by default. Unix win32 Description omniEvents omniEvents.exe EventChannelFactory server. These tools enable management of event channels from the command line. They are built in the tools/ directory. On Unix, they are installed into /usr/local/bin, by default. Unix win32 Description eventc eventc.exe Command to create a channel. eventf eventf.exe Command to federate (link) two channels. events events.exe Command to stream events to or from a file. rmeventc rmeventc.exe Command to remove a channel. Finally, four example clients are provided. These enable you to test whether or not your omniEvents daemon is really working. They are built in the examples/ directory. Unix win32 Description pushsupp pushsupp.exe Push Supplier test client pushcons pushcons.exe Push Consumer test client pullsupp pullsupp.exe Pull Supplier test client pullcons pullcons.exe Pull Consumer test client
Supported Platforms omniEvents 2.6 has been tested with omniORB 3.0.5 & omniORB 4.0.4 on the following platforms. Platform omniORB3 omniORB4 AIX 5.1 / xlC_r 5.0 no yes HPUX 11.00 / aCC A.03.37 - yes Linux x86, Debian 3.1 / g++ 2.95.4 yes yes Macintosh OS X, 10.3.5 - yes Solaris 9 x86 / gcc-2.95.3 - yes Solaris 8 sparc / CC 5.3 yes yes Tru64 5.1B / cxx 6.5 yes yes Windows 2000 / Visual C++ 6.0 SP3 - yes Earlier versions of omniEvents have been tested on the following platforms. Platform omniORB3 omniORB4 Tru64 4.0F / cxx 6.2 yes yes HPUX 10.20 / aCC (B3910B A.01.21) yes - Windows NT 4.0 / Visual C++ 6.0 SP3 yes - Solaris 2.5 / gcc-2.8.1 yes - x86 Redhat linux 4.2 / gcc-2.7.2 yes - x86 Mandrake 7.2 / gcc-2.95.3 - yes
Directory Structure The directory structure of the omniEvents distribution looks as follows. auto/ various scripts used by AutoConf doc/ this documentation doc/doxygen/ source code documentation generated by Doxygen. examples/ source files for examples examples/java/ Java version of examples examples/python/ Python version of examples idl/ idl files src/ source files test/ test harness tools/ command line tools for manipulating the Event Service. win32/ build files for Windows
How to Set Configuration Options This section tells you how to set configuration options, not what options are available. For a detailed description of the available configuration options, see the omniEvents reference section. See also the eventc reference section, for a description of how to configure new event channels at run-time. omniEvents' default out of the box set-up is fit for most purposes. You only need to modify the configuration if you are interested in advanced features such as fault tolerant failover, or changing the default TCP port. In general, command-line parameters are stored somewhere, and retrieved each time the daemon is started. The method of storing parameters is different on Unix and Windows. In addition, there are a number of defaults that can be set at compile-time.
Unix SysV-style service. The SysV init program starts the omniEvents daemon from the script /etc/init.d/omniorb-eventservice. You can also use this script to start and stop the service manually: syntax: /etc/init.d/omniorb-eventservice [start|stop|restart] The script reads omniEvents' configuration options from the file /etc/default/omniorb-eventservice. Edit this file to change the options. See also: omniEvents reference.
Windows service. The omniEvents Windows service stores options in the Registry key HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\omniEvents. They are read each time the service starts. Usually the only option you should set is the option that directs trace output to the named file. You set the service options by listing them after the install or setoptions commands: syntax: omniEvents install OPTIONS syntax: omniEvents setoptions OPTIONS You can see the currently stored options with the getoptions command: syntax: omniEvents getoptions See also: omniEvents-win32 reference.
Compile-time customisation Some compile-time parameters may only be adjusted by manually editing the file src/defaults.h: the default data directory [/var/lib/omniEvents on Unix, C:\omniEvents on Windows.] the name of the environment variable that sets the data directory [OMNIEVENTS_LOGDIR] the period between data file checkpoints [900 seconds] Default event channel parameters: PullRetryPeriod_ms Time between pull() calls. [1 second] MaxQueueLength Number of events to queue. [1023] MaxNumProxies Limit on number of ProxyPullSuppliers. [1024] CyclePeriod_ns Time between batch transfer of events. [0.1 second] Please refer to the src/defaults.h file for descriptions of all parameters.
Running the examples The examples programs (eventc, pushsupp, pushcons, pullsupp, pullcons) are also available as Python and Java. Look in examples/python/* and examples/java/*. In these examples, we run omniEvents from the command line. A real installation would probably use a system service, as mentioned in the installation section.
Start the Naming Service (omniNames) You must start the naming service (omniNames) as the examples make use of the naming service to locate the event channel factory. Please refer to the omniORB documentation for information on how to set up the naming service.
Start the omniEvents daemon (<link linkend="reference_daemon">omniEvents</link>) omniEvents implements an Event Channel Factory server which clients can use to create Event Channels. The factory registers itself with the Naming Service to enable clients to locate it. Before you start, you may need to set the environment variable OMNIORB_CONFIG to contain the full path name of the file omniORB.cfg. The default is /etc/omniORB.cfg. For example: % OMNIORB_CONFIG=/wib/wob/omniORB.cfg; export OMNIORB_CONFIG Start omniEvents by running the executable. The binary is in PREFIX/sbin (if you used the configure --prefix parameter), or in /usr/local/sbin (by default). Once the service is correctly started up, it automatically backgrounds itself (Unix only). Startup from the command-line. % omniEvents -l $HOME % omniEvents supports the following options: cold start syntax: src/omniEvents [-pPORT] [-aENDPOINT] [OPTIONS] warm start syntax: src/omniEvents [OPTIONS] COLD START OPTIONS: -p PORT configure server port [11169] -a ENDPOINT set alternate endPoint for failover OPTIONS: -l PATH full path to data directory* [/var/lib/omniEvents] -P PIDFILE keep track of running instance in PIDFILE. -N ID factory naming service id ["EventChannelFactory"] -f Stay in the foreground. -t FILE Send trace messages to FILE instead of syslog. -v print the IOR of the new EventChannelFactory. -V display version -h display this help text *You can also set the environment variable OMNIEVENTS_LOGDIR to specify the directory where the data files are kept. The options provided allow you to override the default name used to register the Event Channel Factory with the Naming Service. omniEvents supports persistent channels by writing all state changes to a file. This persistency datafile is stored in /var/lib/omniEvents/ by default. Use the option or the OMNIEVENTS_LOGDIR environment variable to override the default.
Create an Event Channel (<link linkend="reference_eventc">eventc</link>) eventc resolves the factory name with the Naming Service and then contacts the factory to request an Event Channel. The Event Channel is created within the the omniEvents process. You can by-pass the factory completely and instantiate the event channel directly within your own process by linking your application directly with the omniEvents shared libraries. The src/main.cc file is a good starting point to find out how. eventc then registers the created Event Channel with the Naming Service, and exits. eventc has the following options: syntax: tools/eventc OPTIONS [FACTORY_URI] FACTORY_URI: The factory may be specified as a URI. This may be an IOR, or a corbaloc::: or corbaname::: URI. For example: corbaloc::localhost:11169/omniEvents OPTIONS: DEFAULT: -n channel name ["EventChannel"] -N factory name (if URI is not specified) ["EventChannelFactory"] -c override default CyclePeriod_ns of new channel (nanoseconds) -i set the InsName of new channel, to enable access via corbaloc -p override default MaxNumProxies of new channel -q override default MaxQueueLength of new channel -R override default PullRetryPeriod_ms for new channel (milliseconds) -t set an event type filter, FilterId=<RepositoryId> -v print the IOR of the new EventChannel to standard output. -h display this help text OLD OPTIONS: (only used by omniEvents v2.4 and earlier) -m override default MaxEventsPerConsumer for new channel The options provided allow you to override the default name used to register the Event Channel Factory and the created Event Channel with the Naming Service. eventc starts silently unless it encounters any problems or if you turn tracing on by supplying the omniORB specific option . eventc terminates once the event channel has been created: % eventc %
Run one or more example suppliers/consumers There are four example clients: pushsupp, pushcons, pullsupp and pullcons. When run, each supplier and consumer contacts the Naming Service to obtain a reference to the Event Channel created in step 2 above. They then connect themselves to the channel and do their bits. The data sent through the channel is always of type long in the examples. As per eventc, you can override the default name used to register the channel in the naming service. The option is used to exercise the disconnect functionality provided by the channel. syntax: examples/pushsupp OPTIONS [CHANNEL_URI] CHANNEL_URI: The event channel may be specified as a URI. This may be an IOR, or a corbaloc::: or corbaname::: URI. OPTIONS: DEFAULT: -d NUM disconnect after sending NUM events [0 - never disconnect] -r connect using a nil reference -s SECS sleep SECS seconds after disconnecting [0] -n NAME channel name (if URI is not specified) ["EventChannel"] -h display this help text syntax: examples/pushcons OPTIONS [CHANNEL_URI] CHANNEL_URI: The event channel may be specified as a URI. This may be an IOR, or a corbaloc::: or corbaname::: URI. OPTIONS: DEFAULT: -d NUM disconnect after receiving NUM events [0 - never disconnect] -s SECS sleep SECS seconds after disconnecting [0] -n NAME channel name (if URI is not specified) ["EventChannel"] -h display this help text syntax: examples/pullsupp OPTIONS [CHANNEL_URI] CHANNEL_URI: The event channel may be specified as a URI. This may be an IOR, or a corbaloc::: or corbaname::: URI. OPTIONS: DEFAULT: -d NUM disconnect after sending NUM events [0 - never disconnect] -s SECS sleep SECS seconds after disconnecting [0] -n NAME channel name (if URI is not specified) ["EventChannel"] -h display this help text syntax: examples/pullcons OPTIONS [CHANNEL_URI] CHANNEL_URI: The event channel may be specified as a URI. This may be an IOR, or a corbaloc::: or corbaname::: URI. OPTIONS: DEFAULT: -t enable try_pull mode -r connect using a nil reference -d NUM disconnect after receiving NUM events [0 - never disconnect] -s SECS sleep SECS seconds after disconnecting [0] -n NAME channel name (if URI is not specified) ["EventChannel"] -h display this help text The option in pullcons causes the pull consumer to issue non-blocking try_pull() invocations rather than blocking pull()s. Here is what to expect during a typical session % examples/pushsupp Looking for EventChannel Obtained SupplierAdmin. Obtained ProxyPushConsumer. Connected Push Supplier. Push Supplier: push() called. Data : 0 Push Supplier: push() called. Data : 1 Push Supplier: push() called. Data : 2 Push Supplier: push() called. Data : 3 Push Supplier: push() called. Data : 4 Push Supplier: push() called. Data : 5 ... % examples/pushcons Obtained ConsumerAdmin. Obtained ProxyPushSupplier. Connected Push Consumer. Push Consumer: push() called. Data : 0 Push Consumer: push() called. Data : 1 Push Consumer: push() called. Data : 2 Push Consumer: push() called. Data : 3 Push Consumer: push() called. Data : 4 Push Consumer: push() called. Data : 5 Push Consumer: push() called. Data : 6 ... Pull consumers cause the event channel to poll every pull supplier connected when they request an event (using pull(), not try_pull()) until an event enters the event channel (which could come from a push supplier). In order to prevent the Event Channel from consuming excessive CPU when polling for events the option of eventc can be used to specify a pull retry period QOS parameter. This parameter represents a timeout in seconds to wait for before each poll cycle. This parameter defaults to 1 second.
Writing an Event Service Client The examples are a great place to start learning about the event service. Feel free to use them as a starting point for your own clients. The same examples are available as C++, Python and Java. However, this section provides a few more general instructions.
Connecting Here's a list of all the ways clients can locate the omniEvents server's EventChannelFactory object: by IOR. (omniEvents -v) The option prints the EventChannelFactory's IOR. You can then use a straightforward string_to_object() method call to turn this into an object reference. by corbaloc::host:port/omniEvents The EventChannelFactory is registered in the omniORB INSPOA as omniEvents which means that you can use the human readable corbaloc string above instead of the IOR. Replace host with omniEvents' hostname and port with the TCP port: 11169 (or whatever you chose with the option). resolve_initial_references("EventService") If omniORB.cfg is properly configured, you can use resolve_initial_references() to find the event service, just as is usually done for the Naming Service. Just add a line like this: InitRef = EventService=corbaloc::host:port/omniEvents The naming service (omniEvents -N NAME) omniEvents always registers the EventChannelFactory as a top-level entry in the naming service. Use the option to control the context, id & kind. (EventChannelFactory by default).
Using <literal>any</literal> type The events pushed and pulled around by the Event Service are simply CORBA any values. The any type can hold any CORBA type. The examples simply send a long value, but a more realistic problem would employ a user-defined struct as the event. For user-defined types you first need to define the type in IDL, then compile the IDL. For omniORB with C++ you would use omniidl -bcxx -Wba. The generates the operators you will need to use your type with CORBA::Any. Here's a small example: module MyMessages { struct NVPair { NameType name; ValueType value; }; }; Assuming you compile this IDL correctly, you will have insertion & extraction methods: operator>>=() and operator<<=(). Here are examples of how to use them: CORBA::Any data; // Insert by value MyMessages::NVPair inputNvPair = ... data <<= inputNvPair; // takes a deep copy. // Insert by pointer MyMessages::NVPair* inputNvPairPtr = ... data <<= inputNvPairPtr; // does NOT copy - assumes ownership //XX delete inputNvPairPtr; <== NO!! . . . // Extract const MyMessages::NVPair* outputNvPairPtr = NULL; if(data >>= outputNvPairPtr) { // Use outputNvPairPtr BUT DON'T DELETE IT!! } else { cerr<<"Wrong type!!"<<endl; } Notice the memory ownership issues. It's best to double check each time you use <<= or >>= until you're confident you've got it right.
Disconnecting All Supplier and Consumer objects have a disconnect_*() method. This means that each connection has two disconnect methods, one at each end. Which method should you call to terminate the connection? The best approach is to call the Proxy's disconnect_*(), rather than your own. (Either will work, but instructing the Proxy to disconnect is more efficient.) The rule for implementing your own servant's disconnect_*() method is quite simple. Each disconnect_*() method should call the other disconnect_*() method. It is the responsibility of the Event Service end (the Proxy) to ensure that an infinite loop doesn't occur. So clients don't have to worry - they should always just call the Proxy's disconnect_*() when their own disconnect_*() is called. There is of course NO GUARANTEE that a disconnect_*() method will only be called once. You should never assume that your servants' methods will not be called until the object has actually been deactivated in the POA. It is possible to connect to ProxyPushConsumer & ProxyPullSupplier objects without providing an address for callbacks. When you do that, the proxies cannot call your disconnect method. If you choose to connect to these proxies without providing an address for callbacks, then you must clean up your own objects without help from the Event Service. These semantics only apply to Event Service v1.1 implementations such as omniEvents v2.6. Earlier specifications were vague about disconnection semantics, so you must be VERY careful if you want to interoperate with an older Event Service implementation (such as omniEvents v2.4 and earlier).
Notes for Windows Users If you are writing Event Service clients, you can use the omniEventsCl.lib library instead of compiling the Event Service IDL files yourself. BUT I DON'T RECOMMEND IT. There is no debug version of the omniEventsCl.lib library, so developing with it would be awkward. For serious work, you will be far better off compiling the IDL files yourself. If you do use the omniEventsCl.lib library, then make sure that you use the multithreadded DLL runtime with exceptions (options: ), otherwise it won't work.
Reference omniEvents 8 omniEvents CORBA Event Service daemon omniEvents -p port -a endpoint -l directory -P pidfile -N factory-name -f -t file -vVh -ORBparameter value Description omniEvents is a CORBA Event Service server program. It is designed to be run as a standalone daemon process. The server continuously saves its state to a file. Event channels are re-created from this file each time the server restarts. The options and affect the identity of the server's event channels, so these options can only be set the first time the server is run. Servers may be configured to operate in pairs - if one fails then clients automatically switch over to the alternate. Options Sets the TCP port on which a new server will listen. The default is 11169 This value is stored in the new server's persistent state. There is no need to supply this option when a server is restarted, since the value is read from the file. If the option is supplied then it is simply compared with the stored value - if the two do not match then the program exits with an error. Sets an alternate endPoint for a new server. All CORBA object references generated by the server include the alternate address. When clients cannot contact the server, they automatically fall back to trying the alternate address. This option is exactly equivalent to the ORB parameter , except that the value is saved in the server's persistency file, so that it is remembered whenever omniEvents is restarted. The format for a TCP endpoint is giop:tcp:HOST:PORT, for example: -a giop:tcp:secondary.host:11169 This value is stored in the server's persistent state. There is no need to supply this option when a server is restarted, since the value is read from the file. If the option is supplied then it is simply compared with the stored value - if the two do not match then the program exits with an error. Full path to data directory, where omniEvents stores its persistent state. The default is /var/lib/omniEvents Keep track of the currently running omniEvents process in pidfile, which should usually be /var/run/omniEvents.pid. If pidfile already exists, then the server refuses to start. The default is to not write a PID file. Sets the CORBA Name Service name for the EventChannelFactory CORBA object. Each time the server starts, it registers its channel factory object with factory-name in the Name Service. Format for name: [CONTEXT-ID[.CONTEXT-KIND]/]*OBJECT-ID[.OBJECT-KIND] Examples: foo, foo.bar, foo.bar/baz/qux, foo/bar/baz.qux. The default is EventChannelFactory Run the server in the foreground (do not daemonize). Send trace messages to file instead of syslog. Output the CORBA IOR of the EventChannelFactory CORBA object when the server starts. This will go either to syslog or to the current trace file. Display version. Display a short summary of command-line options. Standard omniORB options. see omniORB documentation for details. Do NOT use this option to set the endPoint or alternateEndPoint. This option is commonly used to set the omniORB traceLevel, in order to get more detailed output. Example: -ORBtraceLevel 5 Event Channel Parameters The omniEvents::EventChannelFactory object implements the standard CosLifeCycle::GenericFactory interface. An EventChannel object is created by a call to the create_object(key,the_criteria) operation. The key parameter must be set to EventChannel.object interface. The the_criteria parameter is a sequence of various service parameters. Supported parameters are listed below. CyclePeriod_ns (long) Sets the cycle period of the channel (nanoseconds). This is the time that the channel waits before transferring messages from the incoming queue to the outgoing queue. While messages are being transferred, incoming calls are queued. The default is 0.1 seconds. FilterId (string) Only types whose RepositoryId matches the parameter are permitted to pass through the channel. Other events are silently ignored. InsName (string) Sets the name by which the EventChannel is known in omniEvents' INSPOA. You can refer to the channel with a corbaloc string like this: corbaloc::HOST:11169/NAME MaxNumProxies (long) The maximum number of ProxyPullSuppliers per channel. MaxQueueLength (long) How many events are buffered by the ConsumerAdmin object. The discard policy is FIFO, meaning that the oldest events are discarded first in case of overflow. PullRetryPeriod_ms (long) Period (milliseconds) between polls when in Pull Supplier - Push Consumer mode. Signals SIGTERM, SIGINT Shuts down the server. SIGUSR1 You can change the traceLevel while the application is running. Send the server SIGUSR1 to bump its traceLevel up by 5. The traceLevel is wrapped at 45, so you can always get it back to where it started by repeatedly sending SIGUSR1. Example: kill -USR1 `cat /var/run/omniEvents.pid` Environment Variables OMNIEVENTS_LOGDIR Sets the directory where data files are kept by default. An alternative to the option. OMNIORB_CONFIG The location of the omniORB configuration file. Copyright Copyright © 2003-2005 Alex Tingle, 1999 Paul Nader. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. omniEvents-win32 8 omniEvents-win32 CORBA Event Service for Windows Command: omniEvents -p port -a endpoint -l directory -N factory-name -t file -vVh -ORBparameter value Windows service control: omniEvents install OPTIONS uninstall setoptions OPTIONS getoptions Description omniEvents is a CORBA Event Service server program. It is designed to be run as a Windows service. The server continuously saves its state to a file. Event channels are re-created from this file each time the server restarts. The options and affect the identity of the server's event channels, so these options can only be set the first time the server is run. Servers may be configured to operate in pairs - if one fails then clients automatically switch over to the alternate. Service Control omniEvents itself has four service set-up commands. The command name must immediately follow the omniEvents. Any normal command-line options which follow the command are stored in the Windows registry. They will be used when the service starts up. omniEvents install OPTIONS Install the service with the specified options. The only option that will usually be useful is , which instructs omniEvents to send trace logs to a file. Example: omniEvents install -t "C:\omniEvents\trace.out" omniEvents uninstall Uninstalls the service. omniEvents setoptions OPTIONS Changes the service's stored options. omniEvents getoptions Outputs the service's stored option to standard output. Once the omniEvents is installed, you can control it from the command line, or from scripts with the Sc.exe command. Sc.exe is distributed with the Microsoft SDK. sc start omniEvents Starts the server. sc stop omniEvents Shuts down the server. sc control omniEvents 128 You can change the traceLevel while the application is running. Send control signal 128 to the server to bump its traceLevel up by 5. The traceLevel is wrapped at 45, so you can always get it back to where it started by repeatedly sending signal 128. Options Sets the TCP port on which a new server will listen. The default is 11169 This value is stored in the new server's persistent state. There is no need to supply this option when a server is restarted, since the value is read from the file. If the option is supplied then it is simply compared with the stored value - if the two do not match then the program exits with an error. Sets an alternate endPoint for a new server. All CORBA object references generated by the server include the alternate address. When clients cannot contact the server, they automatically fall back to trying the alternate address. This option is exactly equivalent to the ORB parameter , except that the value is saved in the server's persistency file, so that it is remembered whenever omniEvents is restarted. The format for a TCP endpoint is giop:tcp:HOST:PORT, for example: -a giop:tcp:secondary.host:11169 This value is stored in the server's persistent state. There is no need to supply this option when a server is restarted, since the value is read from the file. If the option is supplied then it is simply compared with the stored value - if the two do not match then the program exits with an error. Full path to data directory, where omniEvents stores its persistent state. The default is C:\omniEvents Sets the CORBA Name Service name for the EventChannelFactory CORBA object. Each time the server starts, it registers its channel factory object with factory-name in the Name Service. Format for name: [CONTEXT-ID[.CONTEXT-KIND]/]*OBJECT-ID[.OBJECT-KIND] Examples: foo, foo.bar, foo.bar/baz/qux, foo/bar/baz.qux. The default is EventChannelFactory Send trace messages to file. Output the CORBA IOR of the EventChannelFactory CORBA object when the server starts. Display version. Display a short summary of command-line options. Standard omniORB options. see omniORB documentation for details. Do NOT use this option to set the endPoint or alternateEndPoint. This option is commonly used to set the omniORB traceLevel, in order to get more detailed output. Example: -ORBtraceLevel 5 Event Channel Parameters The omniEvents::EventChannelFactory object implements the standard CosLifeCycle::GenericFactory interface. An EventChannel object is created by a call to the create_object(key,the_criteria) operation. The key parameter must be set to EventChannel.object interface. The the_criteria parameter is a sequence of various service parameters. Supported parameters are listed below. CyclePeriod_ns (long) Sets the cycle period of the channel (nanoseconds). This is the time that the channel waits before transferring messages from the incoming queue to the outgoing queue. While messages are being transferred, incoming calls are queued. The default is 0.1 seconds. FilterId (string) Only types whose RepositoryId matches the parameter are permitted to pass through the channel. Other events are silently ignored. InsName (string) Sets the name by which the EventChannel is known in omniEvents' INSPOA. You can refer to the channel with a corbaloc string like this: corbaloc::HOST:11169/NAME MaxNumProxies (long) The maximum number of ProxyPullSuppliers per channel. MaxQueueLength (long) How many events are buffered by the ConsumerAdmin object. The discard policy is FIFO, meaning that the oldest events are discarded first in case of overflow. PullRetryPeriod_ms (long) Period (milliseconds) between polls when in Pull Supplier - Push Consumer mode. Environment Variables OMNIEVENTS_LOGDIR Sets the directory where data files are kept by default. An alternative to the option. OMNIORB_CONFIG The location of the omniORB configuration file. Copyright Copyright © 2003-2005 Alex Tingle, 1999 Paul Nader. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. eventc 1 eventc create a CORBA EventChannel and register it in the naming service eventc -n channel-name -N factory-name -c nanoseconds -i id -p num -q num -R milliseconds -t repository-id -vh -ORBparameter value factory-uri Description eventc contacts the omniEvents server to request an Event Channel. The Event Channel is created within the the omniEvents process. eventc then registers the created Event Channel with the Naming Service, and exits. : The factory may be specified as a URI. This may be an IOR, or a corbaloc::: or corbaname::: URI. Example: eventc corbaloc::localhost:11169/omniEvents If the argument is not supplied, then the option is used to look up the server in the CORBA Name Service. Options Sets the CORBA Name Service name for the new EventChannel CORBA object. Format for channel-name: [CONTEXT-ID[.CONTEXT-KIND]/]*OBJECT-ID[.OBJECT-KIND] Examples: foo, foo.bar, foo.bar/baz/qux, foo/bar/baz.qux. The default is EventChannel The CORBA Name Service name for the EventChannelFactory CORBA object. The default value is EventChannelFactory. This value is only used when the factory-uri argument is not supplied. Sets the CyclePeriod_ns parameter of the new event channel. Set the InsName of new event channel, to enable access via corbaloc. Sets the MaxNumProxies parameter of the new event channel. Sets the MaxQueueLength parameter of the new event channel. Sets the PullRetryPeriod_ms parameter of the new event channel. Sets the FilterId parameter of the new event channel. Output the CORBA IOR of the new EventChannel CORBA object. Display a short summary of command-line options. Standard omniORB options. see omniORB documentation for details. This option is commonly used to set the omniORB traceLevel, in order to get more detailed output. Example: -ORBtraceLevel 5 Environment Variables OMNIORB_CONFIG The location of the omniORB configuration file. Copyright Copyright © 2003-2005 Alex Tingle, 1999 Paul Nader. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. eventf 1 eventf connect (federate) two CORBA EventChannels eventf from-channel-uri to-channel-uri Description eventf establishes a connection between two event channels. The event channels must both already be in existence (perhaps created by the eventc command). If both event channels are implemented by omniEvents, then the connection is persistent: it will be recreated if one or both of the channels is shut down and later restarted. The from- and to-channels must be specified as URIs. This may be an IOR, or a corbaloc::: or corbaname::: URI. Example: eventf corbaname::#from.channel corbaname::#to.channel Environment Variables OMNIORB_CONFIG The location of the omniORB configuration file. Copyright Copyright © 2004,2005 Alex Tingle. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. events 1 events stream events from or to a CORBA EventChannel events -n channel-name -s -h -ORBparameter value channel-uri Description events streams events from an event channel to standard output, or () from standard input to an event channel. Events are streamed in raw binary form, accompanied by a timestamp. When the stream is played back into a channel, the timestamps are used the replicate the original delays between the messages. The main use for this command it to record sets of events and play them back later for testing. Recording example: events corbaname::#EventChannel > test.dat Playback example: events -s corbaname::#EventChannel < test.dat Options The CORBA Name Service name used to look up the EventChannel CORBA object. Format for channel-name: [CONTEXT-ID[.CONTEXT-KIND]/]*OBJECT-ID[.OBJECT-KIND] Examples: foo, foo.bar, foo.bar/baz/qux, foo/bar/baz.qux. The default is EventChannel Supply mode. Read events from standard input. Display a short summary of command-line options. Standard omniORB options. see omniORB documentation for details. This option is commonly used to set the omniORB traceLevel, in order to get more detailed output. Example: -ORBtraceLevel 5 Environment Variables OMNIORB_CONFIG The location of the omniORB configuration file. Copyright Copyright © 2004,2005 Alex Tingle. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. rmeventc 1 rmeventc destroy a CORBA EventChannel rmeventc -n channel-name -h -ORBparameter value channel-uri Description rmeventc connects to an event channel and calls its destroy() operation. If the channel is located by the option, then the name is unbound (removed) from the Name Service. Example: rmeventc -nfoo/bar/baz.qux Options The CORBA Name Service name used to look up the EventChannel CORBA object. Format for channel-name: [CONTEXT-ID[.CONTEXT-KIND]/]*OBJECT-ID[.OBJECT-KIND] Examples: foo, foo.bar, foo.bar/baz/qux, foo/bar/baz.qux. The default is EventChannel Display a short summary of command-line options. Standard omniORB options. see omniORB documentation for details. This option is commonly used to set the omniORB traceLevel, in order to get more detailed output. Example: -ORBtraceLevel 5 Environment Variables OMNIORB_CONFIG The location of the omniORB configuration file. Copyright Copyright © 2003-2005 Alex Tingle. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
omniEvents-2_6_2/doc/doxygen/0000755000076400001440000000000010303671741016352 5ustar alexusers00000000000000omniEvents-2_6_2/doc/doxygen/doxygen.png0000644000076400001440000000240110303671736020536 0ustar alexusers00000000000000‰PNG  IHDRd-ok>ÂgAMAÖØÔOX2tEXtSoftwareAdobe ImageReadyqÉe<]PLTEǾÏ"&©ÈÎï¶»ÖÓÚú“¢Þ ¬à¶Âõ‡§ÕÙêÉÊÎáâæ{ŽÔ¡ëˆ™× ²ø§¬¹ÀÀ±ÝÝÎùùéõõçëëåED9×ÖËhg]_X<@:#mhUÿÿÿÝÀ1tRNSÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÍvÿIDATxÚbC£: d#„„………h` @¡X",***LKˆ.–], ºX@t± €èb @ÑÅ€BµD„6–š%""´° € ˜% ˆ™B:H¢ˆ²Áf@• ˆRPy"K`\PbC(!II!h©…ëƒ(ñ„Ä!ꈬC„Ä…àl!0[X\J\$TMˆ(’>a$S„ Ù@ Ш@R.$‚¬LJBR¢‰AÌG1 ¬ Â(FȃÔPhhÁTÀ¢„%!`€&q°%u P ¹¢ ¬ € ¹CT$B¢à|‚ºW„¤Àl £!B`R$( …Ĉ‘’ž@AÅ%ĤÄ%@,(—ʂڱ%$ÁââRPmB U`1IˆYB  99€\1 yCCCÿf"[N 'Ü=TGÈ’øl8˜^Kû5<êSæRɤ”%î@@ à›Ê b1 qÅAXHˆ¸&ØB’R y n˜P„Ìã–4A €€j¹€€>Ü ˜ t!˜+(.ÈÅWQ±A2ÜÜMUÜ‚’’‚‚â `1 %`19€F< 3cZÄ`óe!\ˆ DÈ+. 83‹³Àä¸!lYYA -6‚EJŠ¢V €@©žXXX 4„å Ê@86Ð`RdB´€4I "Ý "–@xrÊŒ‚H€AÊ`—f ÉȰCŒ"XV0ɲ³C b@2…¬H ¬È“ p)!(ì‚ 0Ž4ˆ)(%RÁÎ ¶$€TÊ€¥Àþb‡b,säÐ@7À üѰ‚Òî?f¥Ö—\PIx!I´¦"”Ȉ’3¨ QY˜ÿt^^ÛØgv- }>WJOAV`$&#”¦8ùøø8€\FF ›SFJ$ÂÆ€ÐƊС䈉ÀÀ 4ª…Èäå -Á§‡ €H²…—ŸŸŸf ?ðâ5„ €k1Âd‰,ŒÃ ³ƒ“€.€"­F™ËË€àñ‚½ÁIÈ€"±Ù4ÉH gx|‚f©m)))9´. aMDƒ& ºX@t± €èb @ÑÅ€¢‹%DKˆ.–], ºX@t± €èb @€d`‚ɽSµOIEND®B`‚omniEvents-2_6_2/doc/doxygen/tree.js0000644000076400001440000002460610227236242017655 0ustar alexusers00000000000000foldersTree = gFld("OmniEvents", "", "") insDoc(foldersTree, gLnk("Main Page", "", "main.html")) aux1 = insFld(foldersTree, gFld("File List", "", "files.html")) insDoc(aux1, gLnk("Callback.h", "", "a00081.html")) insDoc(aux1, gLnk("config.h", "", "a00082.html")) insDoc(aux1, gLnk("ConsumerAdmin.cc", "", "a00083.html")) insDoc(aux1, gLnk("ConsumerAdmin.h", "", "a00084.html")) insDoc(aux1, gLnk("daemon.h", "", "a00085.html")) insDoc(aux1, gLnk("daemon_unix.cc", "", "a00086.html")) insDoc(aux1, gLnk("daemon_unix.h", "", "a00087.html")) insDoc(aux1, gLnk("daemon_windows.cc", "", "a00088.html")) insDoc(aux1, gLnk("daemon_windows.h", "", "a00089.html")) insDoc(aux1, gLnk("defaults.h", "", "a00090.html")) insDoc(aux1, gLnk("eventc.cc", "", "a00091.html")) insDoc(aux1, gLnk("EventChannel.cc", "", "a00092.html")) insDoc(aux1, gLnk("EventChannel.h", "", "a00093.html")) insDoc(aux1, gLnk("EventChannelFactory.cc", "", "a00094.html")) insDoc(aux1, gLnk("EventChannelFactory.h", "", "a00095.html")) insDoc(aux1, gLnk("eventf.cc", "", "a00096.html")) insDoc(aux1, gLnk("EventQueue.cc", "", "a00097.html")) insDoc(aux1, gLnk("EventQueue.h", "", "a00098.html")) insDoc(aux1, gLnk("events.cc", "", "a00099.html")) insDoc(aux1, gLnk("Filter.cc", "", "a00100.html")) insDoc(aux1, gLnk("Filter.h", "", "a00101.html")) insDoc(aux1, gLnk("gethostname.h", "", "a00102.html")) insDoc(aux1, gLnk("getopt.cc", "", "a00103.html")) insDoc(aux1, gLnk("getopt.h", "", "a00104.html")) insDoc(aux1, gLnk("main.cc", "", "a00105.html")) insDoc(aux1, gLnk("main.h", "", "a00106.html")) insDoc(aux1, gLnk("Mapper.h", "", "a00107.html")) insDoc(aux1, gLnk("naming.cc", "", "a00108.html")) insDoc(aux1, gLnk("naming.h", "", "a00109.html")) insDoc(aux1, gLnk("omniEvents.cc", "", "a00110.html")) insDoc(aux1, gLnk("omniEvents.h", "", "a00111.html")) insDoc(aux1, gLnk("omniEventsLog.cc", "", "a00112.html")) insDoc(aux1, gLnk("omniEventsLog.h", "", "a00113.html")) insDoc(aux1, gLnk("Orb.cc", "", "a00114.html")) insDoc(aux1, gLnk("Orb.h", "", "a00115.html")) insDoc(aux1, gLnk("PersistNode.cc", "", "a00116.html")) insDoc(aux1, gLnk("PersistNode.h", "", "a00117.html")) insDoc(aux1, gLnk("ProxyManager.cc", "", "a00118.html")) insDoc(aux1, gLnk("ProxyManager.h", "", "a00119.html")) insDoc(aux1, gLnk("ProxyPullConsumer.cc", "", "a00120.html")) insDoc(aux1, gLnk("ProxyPullConsumer.h", "", "a00121.html")) insDoc(aux1, gLnk("ProxyPullSupplier.cc", "", "a00122.html")) insDoc(aux1, gLnk("ProxyPullSupplier.h", "", "a00123.html")) insDoc(aux1, gLnk("ProxyPushConsumer.cc", "", "a00124.html")) insDoc(aux1, gLnk("ProxyPushConsumer.h", "", "a00125.html")) insDoc(aux1, gLnk("ProxyPushSupplier.cc", "", "a00126.html")) insDoc(aux1, gLnk("ProxyPushSupplier.h", "", "a00127.html")) insDoc(aux1, gLnk("pullcons.cc", "", "a00128.html")) insDoc(aux1, gLnk("pullsupp.cc", "", "a00129.html")) insDoc(aux1, gLnk("pushcons.cc", "", "a00130.html")) insDoc(aux1, gLnk("pushsupp.cc", "", "a00131.html")) insDoc(aux1, gLnk("rmeventc.cc", "", "a00132.html")) insDoc(aux1, gLnk("scour.h", "", "a00133.html")) insDoc(aux1, gLnk("Servant.cc", "", "a00134.html")) insDoc(aux1, gLnk("Servant.h", "", "a00135.html")) insDoc(aux1, gLnk("SupplierAdmin.cc", "", "a00136.html")) insDoc(aux1, gLnk("SupplierAdmin.h", "", "a00137.html")) aux1 = insFld(foldersTree, gFld("Compound List", "", "annotated.html")) insDoc(aux1, gLnk("OmniEvents::Callback", "", "a00041.html")) insDoc(aux1, gLnk("Consumer_i", "", "a00042.html")) insDoc(aux1, gLnk("OmniEvents::ConsumerAdmin_i", "", "a00043.html")) insDoc(aux1, gLnk("OmniEvents::Daemon", "", "a00044.html")) insDoc(aux1, gLnk("OmniEvents::DaemonImpl", "", "a00045.html")) insDoc(aux1, gLnk("OmniEvents::EventChannel_i", "", "a00046.html")) insDoc(aux1, gLnk("OmniEvents::EventChannelFactory_i", "", "a00047.html")) insDoc(aux1, gLnk("OmniEvents::EventChannelStore", "", "a00048.html")) insDoc(aux1, gLnk("OmniEvents::EventQueue", "", "a00049.html")) insDoc(aux1, gLnk("OmniEvents::EventQueue::Reader", "", "a00050.html")) insDoc(aux1, gLnk("OmniEvents::Filter", "", "a00051.html")) insDoc(aux1, gLnk("OmniEvents::FilterByRepositoryId", "", "a00052.html")) insDoc(aux1, gLnk("OmniEvents::FilterByTCKind", "", "a00053.html")) insDoc(aux1, gLnk("OmniEvents::Mapper", "", "a00054.html")) insDoc(aux1, gLnk("OmniEvents::omni_mutex_kcol", "", "a00055.html")) insDoc(aux1, gLnk("OmniEvents::omniEventsLog", "", "a00056.html")) insDoc(aux1, gLnk("OmniEvents::omniEventsLog::IOError", "", "a00057.html")) insDoc(aux1, gLnk("OmniEvents::omniEventsLogWorker", "", "a00058.html")) insDoc(aux1, gLnk("OmniEvents::Orb", "", "a00059.html")) insDoc(aux1, gLnk("OmniEvents::PersistNode", "", "a00060.html")) insDoc(aux1, gLnk("OmniEvents::Proxy", "", "a00061.html")) insDoc(aux1, gLnk("OmniEvents::ProxyManager", "", "a00062.html")) insDoc(aux1, gLnk("OmniEvents::ProxyPullConsumer_i", "", "a00063.html")) insDoc(aux1, gLnk("OmniEvents::ProxyPullConsumerManager", "", "a00064.html")) insDoc(aux1, gLnk("OmniEvents::ProxyPullSupplier_i", "", "a00065.html")) insDoc(aux1, gLnk("OmniEvents::ProxyPullSupplierManager", "", "a00066.html")) insDoc(aux1, gLnk("OmniEvents::ProxyPushConsumer_i", "", "a00067.html")) insDoc(aux1, gLnk("OmniEvents::ProxyPushConsumer_i::Connection", "", "a00068.html")) insDoc(aux1, gLnk("OmniEvents::ProxyPushSupplier_i", "", "a00069.html")) insDoc(aux1, gLnk("OmniEvents::ProxyPushSupplierManager", "", "a00070.html")) insDoc(aux1, gLnk("OmniEvents::ProxyPushSupplierManager::PauseThenWake", "", "a00071.html")) insDoc(aux1, gLnk("OmniEvents::RegistryKey", "", "a00072.html")) insDoc(aux1, gLnk("OmniEvents::Servant", "", "a00073.html")) insDoc(aux1, gLnk("OmniEvents::Service", "", "a00074.html")) insDoc(aux1, gLnk("Supplier_i", "", "a00075.html")) insDoc(aux1, gLnk("OmniEvents::SupplierAdmin_i", "", "a00076.html")) insDoc(aux1, gLnk("Time", "", "a00077.html")) insDoc(aux1, gLnk("OmniEvents::timestamp", "", "a00078.html")) insDoc(aux1, gLnk("OmniEvents::Win", "", "a00079.html")) insDoc(aux1, gLnk("OmniEvents::WriteLock", "", "a00080.html")) aux1 = insFld(foldersTree, gFld("Class Hierarchy", "", "hierarchy.html")) aux2 = insFld(aux1, gFld("OmniEvents::Callback", "", "a00041.html")) insDoc(aux2, gLnk("OmniEvents::ProxyPushConsumer_i::Connection", "", "a00068.html")) insDoc(aux2, gLnk("OmniEvents::ProxyPushSupplier_i", "", "a00069.html")) insDoc(aux1, gLnk("Consumer_i", "", "a00042.html")) insDoc(aux1, gLnk("OmniEvents::Daemon", "", "a00044.html")) insDoc(aux1, gLnk("OmniEvents::DaemonImpl", "", "a00045.html")) insDoc(aux1, gLnk("OmniEvents::EventChannelStore", "", "a00048.html")) insDoc(aux1, gLnk("OmniEvents::EventQueue", "", "a00049.html")) aux2 = insFld(aux1, gFld("OmniEvents::EventQueue::Reader", "", "a00050.html")) insDoc(aux2, gLnk("OmniEvents::ProxyPullSupplier_i", "", "a00065.html")) insDoc(aux2, gLnk("OmniEvents::ProxyPushSupplier_i", "", "a00069.html")) aux2 = insFld(aux1, gFld("OmniEvents::Filter", "", "a00051.html")) insDoc(aux2, gLnk("OmniEvents::FilterByRepositoryId", "", "a00052.html")) insDoc(aux2, gLnk("OmniEvents::FilterByTCKind", "", "a00053.html")) insDoc(aux1, gLnk("OmniEvents::omni_mutex_kcol", "", "a00055.html")) insDoc(aux1, gLnk("OmniEvents::omniEventsLog", "", "a00056.html")) insDoc(aux1, gLnk("OmniEvents::omniEventsLog::IOError", "", "a00057.html")) insDoc(aux1, gLnk("OmniEvents::omniEventsLogWorker", "", "a00058.html")) insDoc(aux1, gLnk("OmniEvents::Orb", "", "a00059.html")) insDoc(aux1, gLnk("OmniEvents::PersistNode", "", "a00060.html")) insDoc(aux1, gLnk("OmniEvents::ProxyPushSupplierManager::PauseThenWake", "", "a00071.html")) insDoc(aux1, gLnk("OmniEvents::RegistryKey", "", "a00072.html")) aux2 = insFld(aux1, gFld("OmniEvents::Servant", "", "a00073.html")) insDoc(aux2, gLnk("OmniEvents::ConsumerAdmin_i", "", "a00043.html")) insDoc(aux2, gLnk("OmniEvents::EventChannel_i", "", "a00046.html")) insDoc(aux2, gLnk("OmniEvents::EventChannelFactory_i", "", "a00047.html")) insDoc(aux2, gLnk("OmniEvents::Mapper", "", "a00054.html")) aux3 = insFld(aux2, gFld("OmniEvents::Proxy", "", "a00061.html")) insDoc(aux3, gLnk("OmniEvents::ProxyPullConsumer_i", "", "a00063.html")) insDoc(aux3, gLnk("OmniEvents::ProxyPullSupplier_i", "", "a00065.html")) insDoc(aux3, gLnk("OmniEvents::ProxyPushSupplier_i", "", "a00069.html")) aux3 = insFld(aux2, gFld("OmniEvents::ProxyManager", "", "a00062.html")) insDoc(aux3, gLnk("OmniEvents::ProxyPullConsumerManager", "", "a00064.html")) insDoc(aux3, gLnk("OmniEvents::ProxyPullSupplierManager", "", "a00066.html")) insDoc(aux3, gLnk("OmniEvents::ProxyPushSupplierManager", "", "a00070.html")) insDoc(aux2, gLnk("OmniEvents::ProxyPushConsumer_i", "", "a00067.html")) insDoc(aux2, gLnk("OmniEvents::SupplierAdmin_i", "", "a00076.html")) insDoc(aux1, gLnk("OmniEvents::Service", "", "a00074.html")) insDoc(aux1, gLnk("Supplier_i", "", "a00075.html")) insDoc(aux1, gLnk("Time", "", "a00077.html")) insDoc(aux1, gLnk("OmniEvents::timestamp", "", "a00078.html")) insDoc(aux1, gLnk("OmniEvents::Win", "", "a00079.html")) insDoc(aux1, gLnk("OmniEvents::WriteLock", "", "a00080.html")) insDoc(foldersTree, gLnk("Compound Members", "", "functions.html")) aux1 = insFld(foldersTree, gFld("Namespace List", "", "namespaces.html")) insDoc(aux1, gLnk("OmniEvents", "", "a00138.html")) insDoc(aux1, gLnk("omniORB", "", "a00139.html")) insDoc(aux1, gLnk("std", "", "a00140.html")) insDoc(foldersTree, gLnk("File Members", "", "globals.html")) insDoc(foldersTree, gLnk("Namespace Members", "", "namespacemembers.html")) insDoc(foldersTree, gLnk("Graphical Class Hierarchy", "", "inherits.html")) omniEvents-2_6_2/doc/doxygen/main.html0000644000076400001440000000226310303671736020173 0ustar alexusers00000000000000 OmniEvents: Main Page

OmniEvents Documentation


Generated on Fri Aug 26 20:56:13 2005 for OmniEvents by  doxygen 1.4.3-20050530
omniEvents-2_6_2/doc/doxygen/files.html0000644000076400001440000002370410303671736020354 0ustar alexusers00000000000000 OmniEvents: File Index

OmniEvents File List

Here is a list of all files with brief descriptions:
Callback.h [code]
channel.cc [code]
config.h [code]
ConsumerAdmin.cc [code]
ConsumerAdmin.h [code]
daemon.h [code]
daemon_unix.cc [code]
daemon_unix.h [code]
daemon_windows.cc [code]
daemon_windows.h [code]
defaults.h [code]
eventc.cc [code]
EventChannel.cc [code]
EventChannel.h [code]
EventChannelFactory.cc [code]
EventChannelFactory.h [code]
eventf.cc [code]
EventQueue.cc [code]
EventQueue.h [code]
events.cc [code]
Filter.cc [code]
Filter.h [code]
gethostname.h [code]
getopt.cc [code]
getopt.h [code]
main.cc [code]
main.h [code]
Mapper.h [code]
naming.cc [code]
naming.h [code]
omniEvents.cc [code]
omniEvents.h [code]
omniEventsLog.cc [code]
omniEventsLog.h [code]
Orb.cc [code]
Orb.h [code]
PersistNode.cc [code]
PersistNode.h [code]
ProxyManager.cc [code]
ProxyManager.h [code]
ProxyPullConsumer.cc [code]
ProxyPullConsumer.h [code]
ProxyPullSupplier.cc [code]
ProxyPullSupplier.h [code]
ProxyPushConsumer.cc [code]
ProxyPushConsumer.h [code]
ProxyPushSupplier.cc [code]
ProxyPushSupplier.h [code]
pullcons.cc [code]
pullsupp.cc [code]
pushcons.cc [code]
pushsupp.cc [code]
rmeventc.cc [code]
scour.h [code]
Servant.cc [code]
Servant.h [code]
SupplierAdmin.cc [code]
SupplierAdmin.h [code]
version.cc [code]
version.h [code]

Generated on Fri Aug 26 20:56:13 2005 for OmniEvents by  doxygen 1.4.3-20050530
omniEvents-2_6_2/doc/doxygen/a00141.html0000644000076400001440000010137210303671740020051 0ustar alexusers00000000000000 OmniEvents: OmniEvents Namespace Reference

OmniEvents Namespace Reference


Classes

class  Callback
 Interface for classes that wish to receive callbacks from deferred requests. More...
class  ConsumerAdmin_i
class  Daemon
 Interface class that contains various methods for running omniEvents as a background task. More...
class  DaemonImpl
 Utility class that contains various methods for running omniEvents as a Unix daemon. More...
class  Win
 Utility class, contains functions that Windows should have, but doesn't. More...
class  RegistryKey
 Opens a windows registry key, and closed it upon destruction. More...
class  Service
 Singleton class that contains various methods for running a Windows service. More...
class  EventChannel_i
 Servant for CosEventChannelAdmin::EventChannel objects, also inherits from omni_thread. More...
class  EventChannelStore
 Container for Event Channels. More...
class  EventChannelFactory_i
class  EventQueue
 The EventQueue is a circular buffer, that contains _size-1 events. More...
class  Filter
 Event filter interface. More...
class  FilterByTCKind
 The most basic event filter allows only events of a certain CORBA TCKind to pass. More...
class  FilterByRepositoryId
 Allows only events of a certain CORBA RepositoryId to pass. More...
class  Mapper
 A dummy servant that installs itself into the INSPOA and redirects all calls to the real destination. More...
class  timestamp
 This class can be used to generate timestamps. More...
class  omniEventsLog
class  omniEventsLogWorker
class  WriteLock
 Obtains an output stream to the active persistancy logfile, and locks it for exclusive access. More...
class  Orb
 Singleton class that owns the ORB and various initial references. More...
class  PersistNode
class  ProxyManager
 Base class for ServantActivator classes that manage Proxy servants. More...
class  Proxy
 Base class for three of the four Proxy servants. More...
class  ProxyPullConsumerManager
class  ProxyPullConsumer_i
 Implementation of the ProxyPullConsumer interface. More...
class  ProxyPullSupplierManager
class  ProxyPullSupplier_i
 Servant for ProxyPullSupplier interface. More...
class  ProxyPushConsumer_i
 Default servant for ProxyPushConsumer objects. More...
class  omni_mutex_kcol
 The opposite of omni_mutex_lock, unlocks the mutex upon construction and re-locks it upon destruction. More...
class  ProxyPushSupplierManager
class  ProxyPushSupplier_i
class  Servant
 Base class for servants. More...
class  SupplierAdmin_i

Functions

void shutdown0 (void)
 Param to atexit().
void shutdown2 (int s, void *)
 Param to on_exit().
void usage (int argc, char **argv)
void insertArgs (int &argc, char **&argv, int idx, int nargs)
 Utility function, used to manipulate argv when using omniORB3.
template<class T>
T::_ptr_type string_to_ (const char *oidStr)
 Converts a string to a narrowed reference.
CORBA::Object_ptr createReference (PortableServer::POA_ptr poa, const char *repositoryId)
 Helper method called by createNarrowedReference().
char * newUniqueId ()
 Generates a unique object ID string, based upon the current PID and time.
template<class T>
T::_ptr_type createNarrowedReference (PortableServer::POA_ptr poa, const char *repositoryId)
 Helper method that creates a new CORBA object and then narrows it to the appropriate type.
const char * version ()
 Returns the constant version ID and copyright string.

Variables

DaemonImpl daemon
 Singleton - only at file scope.
static Service service
 Singleton - only at file scope.
timestamp ts


Function Documentation

template<class T>
T::_ptr_type OmniEvents::createNarrowedReference PortableServer::POA_ptr  poa,
const char *  repositoryId
 

Helper method that creates a new CORBA object and then narrows it to the appropriate type.

Wrapper around POA::create_reference_with_id. The type T *must* match the repositoryId parameter. Called by a class' createObject() method.

Parameters:
poa POA to own new object.
repositoryId Identifies the type of object to make. e.g. _tc_ProxyPushSupplier->id().

Definition at line 96 of file Servant.h.

References createReference().

CORBA::Object_ptr OmniEvents::createReference PortableServer::POA_ptr  poa,
const char *  repositoryId
 

Helper method called by createNarrowedReference().

Parameters:
poa POA to own new object.
repositoryId Identifies the type of object to make. e.g. _tc_ProxyPushSupplier->id().

Definition at line 53 of file Servant.cc.

References newUniqueId().

Referenced by createNarrowedReference().

void OmniEvents::insertArgs int &  argc,
char **&  argv,
int  idx,
int  nargs
 

Utility function, used to manipulate argv when using omniORB3.

Definition at line 97 of file omniEvents.cc.

Referenced by main().

char * OmniEvents::newUniqueId  ) 
 

Generates a unique object ID string, based upon the current PID and time.

Definition at line 70 of file Servant.cc.

References mutex.

Referenced by OmniEvents::EventChannelFactory_i::create_object(), and createReference().

void OmniEvents::shutdown0 void   ) 
 

Param to atexit().

Definition at line 114 of file daemon_unix.cc.

References daemon, and OmniEvents::DaemonImpl::shutdown().

Referenced by OmniEvents::Service::daemonize(), and OmniEvents::DaemonImpl::daemonize().

void OmniEvents::shutdown2 int  s,
void * 
 

Param to on_exit().

Definition at line 115 of file daemon_unix.cc.

References daemon, and OmniEvents::DaemonImpl::shutdown().

Referenced by OmniEvents::DaemonImpl::daemonize().

template<class T>
T::_ptr_type OmniEvents::string_to_ const char *  oidStr  ) 
 

Converts a string to a narrowed reference.

Definition at line 132 of file Orb.h.

References OmniEvents::Orb::_orb, and OmniEvents::Orb::inst().

void OmniEvents::usage int  argc,
char **  argv
 

Definition at line 49 of file omniEvents.cc.

References OMNIEVENTS_LOG_DEFAULT_LOCATION, OMNIEVENTS_LOGDIR_ENV_VAR, and PACKAGE_NAME.

Referenced by main().

const char * OmniEvents::version  ) 
 

Returns the constant version ID and copyright string.

Definition at line 32 of file version.cc.

References PACKAGE_STRING.

Referenced by main().


Variable Documentation

DaemonImpl OmniEvents::daemon
 

Singleton - only at file scope.

Although we initialize the value to NULL, we don't trust that the runtime will actually initialise it.

Definition at line 94 of file daemon_unix.cc.

Referenced by OmniEvents::Daemon::Daemon(), OmniEvents::Daemon::daemonize(), OmniEvents::Daemon::foreground(), OmniEvents::DaemonImpl::log(), main(), OmniEvents::Daemon::pidfile(), OmniEvents::Daemon::runningOk(), shutdown0(), shutdown2(), OmniEvents::Daemon::tracefile(), and OmniEvents::Daemon::~Daemon().

Service OmniEvents::service [static]
 

Singleton - only at file scope.

Definition at line 166 of file daemon_windows.cc.

Referenced by OmniEvents::Service::ctrlHandler(), OmniEvents::Service::install(), OmniEvents::Service::log(), and OmniEvents::Service::uninstall().

timestamp OmniEvents::ts
 

Definition at line 275 of file omniEventsLog.cc.

Referenced by OmniEvents::omniEventsLog::checkpoint().


Generated on Fri Aug 26 20:56:16 2005 for OmniEvents by  doxygen 1.4.3-20050530
omniEvents-2_6_2/doc/doxygen/a00142.html0000644000076400001440000000515710303671741020057 0ustar alexusers00000000000000 OmniEvents: omniORB Namespace Reference

omniORB Namespace Reference


Functions

void setLogFunction (void(*logFunction)(const char *))


Function Documentation

void omniORB::setLogFunction void(*)(const char *)  logFunction  ) 
 

Referenced by OmniEvents::Service::daemonize(), and OmniEvents::DaemonImpl::daemonize().


Generated on Fri Aug 26 20:56:17 2005 for OmniEvents by  doxygen 1.4.3-20050530
omniEvents-2_6_2/doc/doxygen/a00143.html0000644000076400001440000000241510303671741020052 0ustar alexusers00000000000000 OmniEvents: std Namespace Reference

std Namespace Reference


Generated on Fri Aug 26 20:56:17 2005 for OmniEvents by  doxygen 1.4.3-20050530
omniEvents-2_6_2/doc/doxygen/a00144.html0000644000076400001440000001454710303671736020070 0ustar alexusers00000000000000 OmniEvents: Callback.h Source File

Callback.h

Go to the documentation of this file.
00001 //                            Package   : omniEvents
00002 // Callback.h                 Created   : 2004/07/10
00003 //                            Author    : Alex Tingle
00004 //
00005 //    Copyright (C) 2004-2005 Alex Tingle.
00006 //
00007 //    This file is part of the omniEvents application.
00008 //
00009 //    omniEvents is free software; you can redistribute it and/or
00010 //    modify it under the terms of the GNU Lesser General Public
00011 //    License as published by the Free Software Foundation; either
00012 //    version 2.1 of the License, or (at your option) any later version.
00013 //
00014 //    omniEvents is distributed in the hope that it will be useful,
00015 //    but WITHOUT ANY WARRANTY; without even the implied warranty of
00016 //    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00017 //    Lesser General Public License for more details.
00018 //
00019 //    You should have received a copy of the GNU Lesser General Public
00020 //    License along with this library; if not, write to the Free Software
00021 //    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
00022 //
00023 
00024 #ifndef OMNIEVENTS__CALLBACK_H
00025 #define OMNIEVENTS__CALLBACK_H
00026 
00027 #ifdef HAVE_CONFIG_H
00028 #  include "config.h"
00029 #endif
00030 
00031 #ifdef HAVE_OMNIORB3
00032 #  include <omniORB3/CORBA.h>
00033 #endif
00034 
00035 #ifdef HAVE_OMNIORB4
00036 #  include <omniORB4/CORBA.h>
00037 #endif
00038 
00039 namespace OmniEvents {
00040 
00043 class Callback:
00044   public virtual PortableServer::ServantBase,
00045   public PortableServer::RefCountServantBase
00046 {
00047 public:
00050   virtual void callback(CORBA::Request_ptr req) =0;
00051 
00052   Callback():PortableServer::RefCountServantBase()
00053     {}
00054   virtual ~Callback()
00055     {}
00056 };
00057 
00058 }; // end namespace OmniEvents
00059 
00060 #endif // OMNIEVENTS__CALLBACK_H

Generated on Fri Aug 26 20:56:13 2005 for OmniEvents by  doxygen 1.4.3-20050530
omniEvents-2_6_2/doc/doxygen/a00145.html0000644000076400001440000003226710303671736020070 0ustar alexusers00000000000000 OmniEvents: channel.cc Source File

channel.cc

Go to the documentation of this file.
00001 //                            Package   : omniEvents
00002 //   channel.cc               Created   : 2005/04/23
00003 //                            Author    : Alex Tingle
00004 //
00005 //    Copyright (C) 2005 Alex Tingle
00006 //
00007 //    This file is part of the omniEvents application.
00008 //
00009 //    omniEvents is free software; you can redistribute it and/or
00010 //    modify it under the terms of the GNU Lesser General Public
00011 //    License as published by the Free Software Foundation; either
00012 //    version 2.1 of the License, or (at your option) any later version.
00013 //
00014 //    omniEvents is distributed in the hope that it will be useful,
00015 //    but WITHOUT ANY WARRANTY; without even the implied warranty of
00016 //    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00017 //    Lesser General Public License for more details.
00018 //
00019 //    You should have received a copy of the GNU Lesser General Public
00020 //    License along with this library; if not, write to the Free Software
00021 //    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
00022 //
00023 // Description:
00024 //    Demonstates how to make a standalone EventChannel in your own
00025 //    application, using libomniEvents.
00026 //      
00027 
00028 
00029 #ifdef HAVE_CONFIG_H
00030 #  include "config.h"
00031 #endif
00032 
00033 #include <stdlib.h>
00034 #include <signal.h>
00035 
00036 #ifdef HAVE_IOSTREAM
00037 #  include <iostream>
00038 #else
00039 #  include <iostream.h>
00040 #endif
00041 
00042 #ifdef HAVE_STD_IOSTREAM
00043 using namespace std;
00044 #endif
00045 
00046 #include <omniEvents/EventChannel.h>
00047 
00049 void myShutdown(int signum)
00050 {
00051   OmniEvents::Orb::inst().shutdown(signum);
00052 }
00053 
00054 int main(int argc, char **argv)
00055 {
00056   //
00057   // Start orb.
00058   CORBA::ORB_var orb = CORBA::ORB_init(argc,argv);
00059 
00060   const char* action=""; // Use this variable to help report errors.
00061   try {
00062 
00063     action="initialise OmniEvents::Orb";
00064     // Your code MUST include these two lines.
00065     OmniEvents::Orb::inst()._orb=orb;
00066     OmniEvents::Orb::inst().resolveInitialReferences();
00067 
00068     action="activate the RootPOA's POAManager";
00069     // You MUST activate the RootPOA's POAManager. You can do this yourself
00070     // in the normal way, or you can use the reference that OmniEvents::Orb
00071     // has resolved for you.
00072     PortableServer::POAManager_var pman;
00073     pman=OmniEvents::Orb::inst()._RootPOA->the_POAManager();
00074     pman->activate();
00075 
00076     action="create EventChannel servant";
00077     // The constructor just allocates memory.
00078     OmniEvents::EventChannel_i* channelSrv =new OmniEvents::EventChannel_i();
00079 
00080     action="activate EventChannel servant";
00081     // activate() creates & activates the EventChannel's POA and CORBA objects.
00082     channelSrv->activate("MyChannel");
00083 
00084     // From this point, clients may invoke EventChannel operations.
00085     
00086     action="obtain an object reference to the EventChannel";
00087     CosEventChannelAdmin::EventChannel_var channelRef =channelSrv->_this();
00088 
00089     // The user interface of this example is simple: The EventChannel's IOR
00090     // is dumped to the standard output stream.
00091     action="stringify the EventChannel reference";
00092     CORBA::String_var sior =orb->object_to_string(channelRef.in());
00093     cout<<sior.in()<<endl;
00094 
00095     action="set signal handlers";
00096     ::signal(SIGINT , ::myShutdown);
00097     ::signal(SIGTERM, ::myShutdown);
00098  
00099     action="collect orphan requests";
00100     // You MUST call this method, it processes orphan (asynchronous) method
00101     // calls made by the EventChannel.
00102     // You can safely call it instead of CORBA::ORB::run(). If you do not
00103     // want to park the main thread, then you must create a new thread for this
00104     // method.
00105     OmniEvents::Orb::inst().run();
00106 
00107     // OmniEvents::Orb::shutdown() has been called by the myShutdown() signal
00108     // handler. (The user pressed Ctrl-C or killed the process.)
00109 
00110     // In order to make run() return, you MUST call OmniEvents::Orb::shutdown().
00111 
00112     action="destroy orb";
00113     orb->destroy();
00114 
00115   }
00116   catch(CORBA::SystemException& ex) {
00117      cerr<<"Failed to "<<action<<".";
00118 #if defined(HAVE_OMNIORB4)
00119      cerr<<" "<<ex._name();
00120      if(ex.NP_minorString())
00121          cerr<<" ("<<ex.NP_minorString()<<")";
00122 #endif
00123      cerr<<endl;
00124      ::exit(1);
00125   }
00126   catch(CORBA::Exception& ex) {
00127      cerr<<"Failed to "<<action<<"."
00128 #if defined(HAVE_OMNIORB4)
00129        " "<<ex._name()
00130 #endif
00131        <<endl;
00132      ::exit(1);
00133   }
00134 
00135   return 0;
00136 }

Generated on Fri Aug 26 20:56:13 2005 for OmniEvents by  doxygen 1.4.3-20050530
omniEvents-2_6_2/doc/doxygen/a00146.html0000644000076400001440000006200710303671736020064 0ustar alexusers00000000000000 OmniEvents: config.h Source File

config.h

Go to the documentation of this file.
00001 /* src/config.h.  Generated by configure.  */
00002 /* src/config.h.in.  Generated from configure.ac by autoheader.  */
00003 
00004 /* Define to one of `_getb67', `GETB67', `getb67' for Cray-2 and Cray-YMP
00005    systems. This function is required for `alloca.c' support on those systems.
00006    */
00007 /* #undef CRAY_STACKSEG_END */
00008 
00009 /* Define to 1 if using `alloca.c'. */
00010 /* #undef C_ALLOCA */
00011 
00012 /* define if fstream::open() accepts third parameter. */
00013 /* #undef FSTREAM_OPEN_PROT */
00014 
00015 /* Define to 1 if you have `alloca', as a function or macro. */
00016 #define HAVE_ALLOCA 1
00017 
00018 /* Define to 1 if you have <alloca.h> and it should be used (not on Ultrix).
00019    */
00020 #define HAVE_ALLOCA_H 1
00021 
00022 /* define if bool is a built-in type */
00023 #define HAVE_BOOL 
00024 
00025 /* Define to 1 if you have the <cmath> header file. */
00026 #define HAVE_CMATH 1
00027 
00028 /* Define to 1 if you have the <fcntl.h> header file. */
00029 #define HAVE_FCNTL_H 1
00030 
00031 /* define if we have fstream::attach(). */
00032 /* #undef HAVE_FSTREAM_ATTACH */
00033 
00034 /* define if we have fstream::open(). */
00035 #define HAVE_FSTREAM_OPEN 1
00036 
00037 /* Define to 1 if you have the `gethostname' function. */
00038 #define HAVE_GETHOSTNAME 1
00039 
00040 /* Define to 1 if you have the `getopt' function. */
00041 #define HAVE_GETOPT 1
00042 
00043 /* Define to 1 if you have the <inttypes.h> header file. */
00044 #define HAVE_INTTYPES_H 1
00045 
00046 /* Define to 1 if you have the <iomanip> header file. */
00047 #define HAVE_IOMANIP 1
00048 
00049 /* Define to 1 if you have the <iomanip.h> header file. */
00050 /* #undef HAVE_IOMANIP_H */
00051 
00052 /* Define to 1 if you have the <iostream> header file. */
00053 #define HAVE_IOSTREAM 1
00054 
00055 /* Define to 1 if you have the <iostream.h> header file. */
00056 /* #undef HAVE_IOSTREAM_H */
00057 
00058 /* Define to 1 if you have the <libc.h> header file. */
00059 /* #undef HAVE_LIBC_H */
00060 
00061 /* Define to 1 if your system has a GNU libc compatible `malloc' function, and
00062    to 0 otherwise. */
00063 #define HAVE_MALLOC 1
00064 
00065 /* Define to 1 if you have the <malloc.h> header file. */
00066 #define HAVE_MALLOC_H 1
00067 
00068 /* Define to 1 if you have the <memory.h> header file. */
00069 #define HAVE_MEMORY_H 1
00070 
00071 /* define if the compiler implements namespaces */
00072 #define HAVE_NAMESPACES 
00073 
00074 /* "define if omniORB3 is available." */
00075 /* #undef HAVE_OMNIORB3 */
00076 
00077 /* "define if omniORB4 is available." */
00078 #define HAVE_OMNIORB4 1
00079 
00080 /* Define to 1 if you have the `on_exit' function. */
00081 #define HAVE_ON_EXIT 1
00082 
00083 /* Define to 1 if you have the <process.h> header file. */
00084 /* #undef HAVE_PROCESS_H */
00085 
00086 /* Define if you have POSIX threads libraries and header files. */
00087 #define HAVE_PTHREAD 1
00088 
00089 /* Define to 1 if you have the <signal.h> header file. */
00090 #define HAVE_SIGNAL_H 1
00091 
00092 /* Define to 1 if you have the `sigset' function. */
00093 /* #undef HAVE_SIGSET */
00094 
00095 /* Define to 1 if `stat' has the bug that it succeeds when given the
00096    zero-length file name argument. */
00097 /* #undef HAVE_STAT_EMPTY_STRING_BUG */
00098 
00099 /* Define to 1 if you have the <stdint.h> header file. */
00100 #define HAVE_STDINT_H 1
00101 
00102 /* Define to 1 if you have the <stdlib.h> header file. */
00103 #define HAVE_STDLIB_H 1
00104 
00105 /* define if C++ iostream is in namespace std. */
00106 #define HAVE_STD_IOSTREAM 1
00107 
00108 /* define if C++ Standard Template Library is in namespace std */
00109 #define HAVE_STD_STL 1
00110 
00111 /* define if the compiler supports Standard Template Library */
00112 #define HAVE_STL 
00113 
00114 /* Define to 1 if you have the `strchr' function. */
00115 #define HAVE_STRCHR 1
00116 
00117 /* Define to 1 if you have the `strdup' function. */
00118 #define HAVE_STRDUP 1
00119 
00120 /* Define to 1 if you have the <strings.h> header file. */
00121 #define HAVE_STRINGS_H 1
00122 
00123 /* Define to 1 if you have the <string.h> header file. */
00124 #define HAVE_STRING_H 1
00125 
00126 /* Define to 1 if you have the <syslog.h> header file. */
00127 #define HAVE_SYSLOG_H 1
00128 
00129 /* Define to 1 if you have the <sys/param.h> header file. */
00130 #define HAVE_SYS_PARAM_H 1
00131 
00132 /* Define to 1 if you have the <sys/stat.h> header file. */
00133 #define HAVE_SYS_STAT_H 1
00134 
00135 /* Define to 1 if you have the <sys/types.h> header file. */
00136 #define HAVE_SYS_TYPES_H 1
00137 
00138 /* Define to 1 if you have the <sys/utsname.h> header file. */
00139 #define HAVE_SYS_UTSNAME_H 1
00140 
00141 /* Define to 1 if you have the `tzset' function. */
00142 #define HAVE_TZSET 1
00143 
00144 /* Define to 1 if you have the `uname' function. */
00145 #define HAVE_UNAME 1
00146 
00147 /* Define to 1 if you have the <unistd.h> header file. */
00148 #define HAVE_UNISTD_H 1
00149 
00150 /* Define to 1 if `lstat' dereferences a symlink specified with a trailing
00151    slash. */
00152 #define LSTAT_FOLLOWS_SLASHED_SYMLINK 1
00153 
00154 /* Define to the address where bug reports for this package should be sent. */
00155 #define PACKAGE_BUGREPORT "alex.omnievents@firetree.net"
00156 
00157 /* Define to the full name of this package. */
00158 #define PACKAGE_NAME "omniEvents"
00159 
00160 /* Define to the full name and version of this package. */
00161 #define PACKAGE_STRING "omniEvents 2.6.2"
00162 
00163 /* Define to the one symbol short name of this package. */
00164 #define PACKAGE_TARNAME "omnievents"
00165 
00166 /* Define to the version of this package. */
00167 #define PACKAGE_VERSION "2.6.2"
00168 
00169 /* Define to the necessary symbol if this constant
00170  uses a non-standard name
00171    on your system. */
00172 /* #undef PTHREAD_CREATE_JOINABLE */
00173 
00174 /* Define as the return type of signal handlers (`int' or `void'). */
00175 #define RETSIGTYPE void
00176 
00177 /* If using the C implementation of alloca, define if you know the
00178    direction of stack growth for your system; otherwise it will be
00179    automatically deduced at run-time.
00180         STACK_DIRECTION > 0 => grows toward higher addresses
00181         STACK_DIRECTION < 0 => grows toward lower addresses
00182         STACK_DIRECTION = 0 => direction of growth unknown */
00183 /* #undef STACK_DIRECTION */
00184 
00185 /* Define to 1 if you have the ANSI C header files. */
00186 #define STDC_HEADERS 1
00187 
00188 /* for omniORB */
00189 #define __OSVERSION__ 2
00190 
00191 /* needed by DEC/Compaq/HP cxx to activate ANSI standard iostream. */
00192 #define __USE_STD_IOSTREAM 1
00193 
00194 /* for OmniORB on AIX */
00195 /* #undef __aix__ */
00196 
00197 /* for OmniORB on AlphaProcessor */
00198 /* #undef __alpha__ */
00199 
00200 /* for OmniORB on ArmProcessor */
00201 /* #undef __arm__ */
00202 
00203 /* for OmniORB on Darwin */
00204 /* #undef __darwin__ */
00205 
00206 /* for OmniORB on FreeBSD */
00207 /* #undef __freebsd__ */
00208 
00209 /* for OmniORB on HppaProcessor */
00210 /* #undef __hppa__ */
00211 
00212 /* for OmniORB on HPUX */
00213 /* #undef __hpux__ */
00214 
00215 /* for OmniORB on ia64Processor */
00216 /* #undef __ia64__ */
00217 
00218 /* for OmniORB on IRIX */
00219 /* #undef __irix__ */
00220 
00221 /* for OmniORB on Linux, Cygwin */
00222 #define __linux__ 1
00223 
00224 /* for OmniORB on m68kProcessor */
00225 /* #undef __m68k__ */
00226 
00227 /* for OmniORB on IndigoProcessor */
00228 /* #undef __mips__ */
00229 
00230 /* for OmniORB on NextStep */
00231 /* #undef __nextstep__ */
00232 
00233 /* for OmniORB on OSF1 (Tru64) */
00234 /* #undef __osf1__ */
00235 
00236 /* for OmniORB on OSR5 */
00237 /* #undef __osr5__ */
00238 
00239 /* for OmniORB on PowerPCProcessor */
00240 /* #undef __powerpc__ */
00241 
00242 /* for OmniORB on s390Processor */
00243 /* #undef __s390__ */
00244 
00245 /* for OmniORB on SparcProcessor */
00246 /* #undef __sparc__ */
00247 
00248 /* for OmniORB on SunOS (Solaris) */
00249 /* #undef __sunos__ */
00250 
00251 /* for OmniORB on x86Processor */
00252 #define __x86__ 1
00253 
00254 /* Define to empty if `const' does not conform to ANSI C. */
00255 /* #undef const */
00256 
00257 /* Define to `__inline__' or `__inline' if that's what the C compiler
00258    calls it, or to nothing if 'inline' is not supported under any name.  */
00259 #ifndef __cplusplus
00260 /* #undef inline */
00261 #endif
00262 
00263 /* Define to rpl_malloc if the replacement function should be used. */
00264 /* #undef malloc */
00265 
00266 /* Define to `unsigned' if <sys/types.h> does not define. */
00267 /* #undef size_t */
00268 
00269 
00270 /* Clean away the PACKAGE_* macros unless they are needed. */
00271 #include "scour.h"
00272 

Generated on Fri Aug 26 20:56:13 2005 for OmniEvents by  doxygen 1.4.3-20050530
omniEvents-2_6_2/doc/doxygen/a00147.html0000644000076400001440000004040210303671736020060 0ustar alexusers00000000000000 OmniEvents: ConsumerAdmin.cc Source File

ConsumerAdmin.cc

Go to the documentation of this file.
00001 //                            Package   : omniEvents
00002 // ConsumerAdmin.cc           Created   : 2003/12/04
00003 //                            Author    : Alex Tingle
00004 //
00005 //    Copyright (C) 2003-2005 Alex Tingle.
00006 //
00007 //    This file is part of the omniEvents application.
00008 //
00009 //    omniEvents is free software; you can redistribute it and/or
00010 //    modify it under the terms of the GNU Lesser General Public
00011 //    License as published by the Free Software Foundation; either
00012 //    version 2.1 of the License, or (at your option) any later version.
00013 //
00014 //    omniEvents is distributed in the hope that it will be useful,
00015 //    but WITHOUT ANY WARRANTY; without even the implied warranty of
00016 //    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00017 //    Lesser General Public License for more details.
00018 //
00019 //    You should have received a copy of the GNU Lesser General Public
00020 //    License along with this library; if not, write to the Free Software
00021 //    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
00022 //
00023 
00024 #include "ConsumerAdmin.h"
00025 
00026 #include "EventChannel.h"
00027 #include "ProxyPushSupplier.h"
00028 #include "ProxyPullSupplier.h"
00029 #include "Orb.h"
00030 #include "PersistNode.h"
00031 #include "Filter.h"
00032 
00033 namespace OmniEvents {
00034 
00035 
00036 CosEventChannelAdmin::ProxyPushSupplier_ptr
00037 ConsumerAdmin_i::obtain_push_supplier()
00038 {
00039   if(!_pushSupplier)
00040       _pushSupplier=new ProxyPushSupplierManager(_poa,_queue);
00041   return _pushSupplier->createObject();
00042 }
00043 
00044 
00045 CosEventChannelAdmin::ProxyPullSupplier_ptr
00046 ConsumerAdmin_i::obtain_pull_supplier()
00047 {
00048   if(!_pullSupplier)
00049       _pullSupplier=new ProxyPullSupplierManager(_channel,_poa,_queue);
00050   return _pullSupplier->createObject();
00051 }
00052 
00053 
00054 ConsumerAdmin_i::ConsumerAdmin_i(
00055   const EventChannel_i&   channel,
00056   PortableServer::POA_ptr poa
00057 )
00058 : Servant(poa),
00059   _channel(channel),
00060   _queue(channel.maxQueueLength()),
00061   _pushSupplier(NULL),
00062   _pullSupplier(NULL)
00063 {
00064   if(_channel.properties().hasAttr("FilterId"))
00065   {
00066     string rid =_channel.properties().attrString("FilterId");
00067     _queue.setFilter(new FilterByRepositoryId(rid.c_str()));
00068   }
00069   else if(_channel.properties().hasAttr("FilterKind"))
00070   {
00071     CORBA::TCKind kind =
00072       CORBA::TCKind(_channel.properties().attrLong("FilterKind"));
00073     _queue.setFilter(new FilterByTCKind(kind));
00074   }
00075 
00076   activateObjectWithId("ConsumerAdmin");
00077 }
00078 
00079 
00080 ConsumerAdmin_i::~ConsumerAdmin_i()
00081 {
00082   DB(20,"~ConsumerAdmin_i()")
00083   if(_pushSupplier)
00084   {
00085     _pushSupplier->_remove_ref(); // terminates thread.
00086     _pushSupplier=NULL;
00087   }
00088   if(_pullSupplier)
00089   {
00090     _pullSupplier->_remove_ref();
00091     _pullSupplier=NULL;
00092   }
00093 }
00094 
00095 
00096 OMNIEVENTS__DEBUG_REF_COUNTS__DEFN(ConsumerAdmin_i)
00097 
00098 
00099 void ConsumerAdmin_i::send(CORBA::Any* event)
00100 {
00101   ProxyPushSupplierManager::PauseThenWake p(_pushSupplier);
00102   _queue.append(event);
00103 }
00104 
00105 
00106 void ConsumerAdmin_i::send(list<CORBA::Any*>& events)
00107 {
00108   if(!events.empty())
00109   {
00110     ProxyPushSupplierManager::PauseThenWake p(_pushSupplier);
00111     for(list<CORBA::Any*>::iterator i=events.begin(); i!=events.end(); ++i)
00112         _queue.append( *i );
00113     events.clear();
00114   }
00115 }
00116 
00117 
00118 void ConsumerAdmin_i::disconnect()
00119 {
00120   if(_pushSupplier)
00121      _pushSupplier->disconnect();
00122   if(_pullSupplier)
00123      _pullSupplier->disconnect();
00124 }
00125 
00126 
00127 void ConsumerAdmin_i::reincarnate(const PersistNode& node)
00128 {
00129   // Build Push Supplier proxies
00130   PersistNode* pushsNode =node.child("ProxyPushSupplier");
00131   if(pushsNode && !pushsNode->_child.empty())
00132   {
00133     _pushSupplier=new ProxyPushSupplierManager(_poa,_queue);
00134     _pushSupplier->reincarnate(*pushsNode);
00135   }
00136 
00137   // Build Pull Supplier proxies
00138   PersistNode* pullsNode =node.child("ProxyPullSupplier");
00139   if(pullsNode && !pullsNode->_child.empty())
00140   {
00141     _pullSupplier=new ProxyPullSupplierManager(_channel,_poa,_queue);
00142     _pullSupplier->reincarnate(*pullsNode);
00143   }
00144 }
00145 
00146 
00147 void ConsumerAdmin_i::output(ostream& os)
00148 {
00149   if(_pushSupplier)
00150   {
00151     omni_mutex_lock l(_pushSupplier->_lock);
00152     _pushSupplier->output(os);
00153   }
00154   if(_pullSupplier)
00155   {
00156     _pullSupplier->output(os);
00157   }
00158 }
00159 
00160 
00161 }; // end namespace OmniEvents

Generated on Fri Aug 26 20:56:13 2005 for OmniEvents by  doxygen 1.4.3-20050530
omniEvents-2_6_2/doc/doxygen/a00148.html0000644000076400001440000002276710303671736020077 0ustar alexusers00000000000000 OmniEvents: ConsumerAdmin.h Source File

ConsumerAdmin.h

Go to the documentation of this file.
00001 //                            Package   : omniEvents
00002 // src/ConsumerAdmin.h        Created   : 2003/12/04
00003 //                            Author    : Alex Tingle
00004 //
00005 //    Copyright (C) 2003-2005 Alex Tingle.
00006 //
00007 //    This file is part of the omniEvents application.
00008 //
00009 //    omniEvents is free software; you can redistribute it and/or
00010 //    modify it under the terms of the GNU Lesser General Public
00011 //    License as published by the Free Software Foundation; either
00012 //    version 2.1 of the License, or (at your option) any later version.
00013 //
00014 //    omniEvents is distributed in the hope that it will be useful,
00015 //    but WITHOUT ANY WARRANTY; without even the implied warranty of
00016 //    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00017 //    Lesser General Public License for more details.
00018 //
00019 //    You should have received a copy of the GNU Lesser General Public
00020 //    License along with this library; if not, write to the Free Software
00021 //    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
00022 //
00023 
00024 #ifndef OMNIEVENTS__CONSUMERADMIN_H
00025 #define OMNIEVENTS__CONSUMERADMIN_H
00026 
00027 #ifdef HAVE_CONFIG_H
00028 #  include "config.h"
00029 #endif
00030 
00031 #include <list>
00032 
00033 #ifdef HAVE_IOSTREAM
00034 #  include <iostream>
00035 #else
00036 #  include <iostream.h>
00037 #endif
00038 
00039 #include "Servant.h"
00040 #include "EventQueue.h"
00041 #include "CosEventChannelAdmin.hh"
00042 
00043 #ifdef HAVE_STD_IOSTREAM
00044 using namespace std;
00045 #endif
00046 
00047 namespace OmniEvents {
00048 
00049 class EventChannel_i;
00050 class ProxyPushSupplierManager;
00051 class ProxyPullSupplierManager;
00052 class PersistNode;
00053 
00054 class ConsumerAdmin_i
00055 : public virtual POA_CosEventChannelAdmin::ConsumerAdmin,
00056   public PortableServer::RefCountServantBase,
00057   public Servant
00058 {
00059 public: // CORBA interface methods
00060   CosEventChannelAdmin::ProxyPushSupplier_ptr obtain_push_supplier();
00061   CosEventChannelAdmin::ProxyPullSupplier_ptr obtain_pull_supplier();
00062 
00063 public:
00064   ConsumerAdmin_i(const EventChannel_i& channel, PortableServer::POA_ptr poa);
00065   virtual ~ConsumerAdmin_i();
00066   OMNIEVENTS__DEBUG_REF_COUNTS__DECL
00067 
00071   void send(CORBA::Any* event);
00072 
00076   void send(list<CORBA::Any*>& events);
00077 
00079   void disconnect();
00080 
00082   void reincarnate(const PersistNode& node);
00083 
00085   void output(ostream& os);
00086 
00087 private:
00088   const EventChannel_i&     _channel;
00089   EventQueue                _queue;
00090   ProxyPushSupplierManager* _pushSupplier;
00091   ProxyPullSupplierManager* _pullSupplier;
00092 };
00093 
00094 }; // end namespace OmniEvents
00095 
00096 #endif // OMNIEVENTS__CONSUMERADMIN_H

Generated on Fri Aug 26 20:56:13 2005 for OmniEvents by  doxygen 1.4.3-20050530
omniEvents-2_6_2/doc/doxygen/a00149.html0000644000076400001440000001355610303671736020074 0ustar alexusers00000000000000 OmniEvents: daemon.h Source File

daemon.h

Go to the documentation of this file.
00001 //                            Package   : omniEvents
00002 // service.h                  Created   : 2004/07/25
00003 //                            Author    : Alex Tingle
00004 //
00005 //    Copyright (C) 2004 Alex Tingle.
00006 //
00007 //    This file is part of the omniEvents application.
00008 //
00009 //    omniEvents is free software; you can redistribute it and/or
00010 //    modify it under the terms of the GNU Lesser General Public
00011 //    License as published by the Free Software Foundation; either
00012 //    version 2.1 of the License, or (at your option) any later version.
00013 //
00014 //    omniEvents is distributed in the hope that it will be useful,
00015 //    but WITHOUT ANY WARRANTY; without even the implied warranty of
00016 //    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00017 //    Lesser General Public License for more details.
00018 //
00019 //    You should have received a copy of the GNU Lesser General Public
00020 //    License along with this library; if not, write to the Free Software
00021 //    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
00022 //
00023 
00024 #ifndef OMNIEVENTS__SERVICE_H
00025 #define OMNIEVENTS__SERVICE_H
00026 
00027 namespace OmniEvents {
00028 
00032 class Daemon
00033 {
00034   Daemon(); 
00035 
00036 public:
00037   Daemon(int& argc,char**& argv);
00038   virtual ~Daemon();
00039 
00040   void tracefile(const char* val); 
00041   void pidfile(const char* val);   
00042   void foreground(bool val);       
00043 
00045   void daemonize();
00046 
00048   void runningOk();
00049 
00050 }; // class Daemon
00051 
00052 } // end namespace OmniEvents
00053 
00054 #endif // OMNIEVENTS__DAEMON_H
00055 

Generated on Fri Aug 26 20:56:13 2005 for OmniEvents by  doxygen 1.4.3-20050530
omniEvents-2_6_2/doc/doxygen/a00150.html0000644000076400001440000013013710303671736020057 0ustar alexusers00000000000000 OmniEvents: daemon_unix.cc Source File

daemon_unix.cc

Go to the documentation of this file.
00001 //                            Package   : omniEvents
00002 // daemon_unix.h              Created   : 2004/06/29
00003 //                            Author    : Alex Tingle
00004 //
00005 //    Copyright (C) 2004 Alex Tingle.
00006 //
00007 //    This file is part of the omniEvents application.
00008 //
00009 //    omniEvents is free software; you can redistribute it and/or
00010 //    modify it under the terms of the GNU Lesser General Public
00011 //    License as published by the Free Software Foundation; either
00012 //    version 2.1 of the License, or (at your option) any later version.
00013 //
00014 //    omniEvents is distributed in the hope that it will be useful,
00015 //    but WITHOUT ANY WARRANTY; without even the implied warranty of
00016 //    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00017 //    Lesser General Public License for more details.
00018 //
00019 //    You should have received a copy of the GNU Lesser General Public
00020 //    License along with this library; if not, write to the Free Software
00021 //    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
00022 //
00023 
00024 #include "daemon.h"
00025 #include "main.h"
00026 #include "daemon_unix.h"
00027 
00028 #define NEED_PACKAGE_INFO
00029 #ifdef HAVE_CONFIG_H
00030 #  include "config.h"
00031 #endif
00032 
00033 #ifdef HAVE_IOSTREAM
00034 #  include <iostream>
00035 #  include <fstream>
00036 #else
00037 #  include <iostream.h>
00038 #  include <fstream.h>
00039 #endif
00040 
00041 #ifdef HAVE_STD_IOSTREAM
00042 using namespace std;
00043 #endif
00044 
00045 #include <stdlib.h> // exit, on_exit
00046 #include <errno.h> // errno
00047 
00048 #ifdef HAVE_UNISTD_H
00049 #  include <unistd.h> // fork, umask, setsid, dup2, chdir, close
00050 #endif
00051 
00052 #ifdef HAVE_SYS_TYPES_H
00053 #  include <sys/types.h> // fork, umask, open
00054 #endif
00055 
00056 #ifdef HAVE_SYS_STAT_H
00057 #  include <sys/stat.h> //open
00058 #endif
00059 
00060 #ifdef HAVE_FCNTL_H
00061 #  include <fcntl.h> // open
00062 #endif
00063 
00064 #ifdef HAVE_SYSLOG_H
00065 #  include <syslog.h> // openlog, syslog
00066 #endif
00067 
00068 #ifdef HAVE_STRING_H
00069 #  include <string.h> // strerror
00070 #endif
00071 
00072 #ifdef HAVE_SIGNAL_H
00073 #include <signal.h> // kill
00074 #endif
00075 
00076 #include <string>
00077 
00078 // Forward declaration of omniORB::setLogFunction()
00079 namespace omniORB {
00080   void setLogFunction(void (*logFunction)(const char*));
00081 }
00082 
00083 namespace OmniEvents {
00084 
00085 #define STRERR_FILE_LINE strerror(errno)<<" "<<__FILE__<<":"<<__LINE__
00086 
00087 #define PIPE_READ  0
00088 #define PIPE_WRITE 1
00089 
00090 
00094 DaemonImpl daemon;
00095 
00096 Daemon::Daemon(int&,char**&)
00097 {
00098   // Initialise the DaemonImpl singleton.
00099   daemon._tracefile=NULL;
00100   daemon._foreground=false;
00101   daemon._pidfile=NULL;
00102   daemon._pipe[0]=daemon._pipe[1]=-1;
00103   daemon._havePidfile=false;
00104   daemon._haveParent=false;
00105   daemon._haveSyslog=false;
00106 }
00107 void Daemon::tracefile(const char* val) { daemon.tracefile(val); }
00108 void Daemon::pidfile(const char* val)   { daemon.pidfile(val); }
00109 void Daemon::foreground(bool val)       { daemon.foreground(val); }
00110 void Daemon::daemonize()                { daemon.daemonize(); }
00111 void Daemon::runningOk()                { daemon.runningOk(); }
00112 Daemon::~Daemon()                       { daemon.shutdown(0); }
00113 
00114 void shutdown0(void)       { daemon.shutdown(0); } 
00115 void shutdown2(int s,void*){ daemon.shutdown(s); } 
00116 
00118 
00119 DaemonImpl::DaemonImpl(){}
00120 
00121 
00122 DaemonImpl::~DaemonImpl()
00123 {
00124   delete[] _pidfile;
00125   delete[] _tracefile;
00126   _pidfile=NULL;
00127   _tracefile=NULL;
00128 }
00129 
00130 
00131 void DaemonImpl::tracefile(const char* val)
00132 {
00133   _tracefile=::strdup(val);
00134 }
00135 
00136 
00137 void DaemonImpl::foreground(bool val)
00138 {
00139   _foreground=val;
00140 }
00141 
00142 
00143 void DaemonImpl::pidfile(const char* val)
00144 {
00145   string pidfileStr =val;
00146   if(pidfileStr[0]!='/')
00147       pidfileStr=string("/var/run/")+pidfileStr;
00148   DaemonImpl::_pidfile=::strdup(pidfileStr.c_str());
00149 }
00150 
00151 
00152 void DaemonImpl::initialize(int&,char**&)
00153 {
00154   // Does nothing on Unix
00155 }
00156 
00157 
00158 void DaemonImpl::daemonize()
00159 {
00160   // Register the shutdown function.
00161 #ifdef HAVE_ON_EXIT
00162   if( ::on_exit(shutdown2,NULL) <0)
00163 #else
00164   if( ::atexit(shutdown0) <0)
00165 #endif
00166   {
00167     cerr<<"Failed to set exit handler."<<endl;
00168     ::exit(-1);
00169   }
00170 
00171   if(!_foreground)
00172   {
00173     this->fork();
00174     // ...now in the CHILD.
00175   }
00176 
00177   // Check & write the pidfile (if _pidfile is set).
00178   checkPidfileOrShutdown();
00179   writePidfile();
00180 
00181   // Change the file mode mask
00182   ::umask(0);
00183   
00184   // Change the current working directory
00185   if(::chdir("/")!=0)
00186   {
00187     cerr<<STRERR_FILE_LINE<<endl;
00188     ::exit(-1);
00189   }
00190 
00191   // If _tracefile is not set, then use syslog.
00192   if(_tracefile && _tracefile[0]!='\0')
00193   {
00194     redirectStreamsTo(_tracefile);
00195   }
00196   else
00197   {
00198 #ifndef HAVE_OMNIORB3
00199 #  ifdef LOG_PERROR
00200     ::openlog(PACKAGE_NAME ": ",LOG_PID|LOG_PERROR,LOG_DAEMON);
00201 #  else
00202     ::openlog(PACKAGE_NAME ": ",LOG_PID,LOG_DAEMON);
00203 #  endif
00204     _haveSyslog=true;
00205     omniORB::setLogFunction(DaemonImpl::log);
00206 #else
00207     cerr<<"You must use option -t to set the file for trace messages."
00208       "\n(This is because omniORB3 cannot redirect messages to syslog.)"<<endl;
00209     ::exit(-1);
00210 #endif
00211   }
00212 } // end daemonize()
00213 
00214 
00215 void DaemonImpl::runningOk()
00216 {
00217   if(_haveParent)
00218   {
00219     _haveParent=false;
00220     notifyParent(0);
00221   }
00222 
00223   // No longer send syslog messages to stderr.
00224   if(_haveSyslog)
00225   {
00226 #ifdef LOG_PERROR
00227     ::closelog();
00228     // FIXME: Possible race here? If a log message is sent right now.
00229     ::openlog(PACKAGE_NAME ": ",LOG_PID,LOG_DAEMON);
00230 #endif
00231     redirectStreamsTo("/dev/null");
00232   }
00233 }
00234 
00235 
00236 void DaemonImpl::shutdown(int status)
00237 {
00238   // Remove the pidfile.
00239   if(_havePidfile && _pidfile && 0!=::unlink(_pidfile))
00240   {
00241     cerr<<"Failed to remove pidfile '"<<_pidfile<<"': "
00242         <<STRERR_FILE_LINE<<endl;
00243     status=-1;
00244   }
00245   _havePidfile=false;
00246 
00247   // Close syslog.
00248   if(_haveSyslog)
00249   {
00250     _haveSyslog=false;
00251     ::closelog();
00252   }
00253   
00254   // Notify the parent.
00255   if(_haveParent)
00256   {
00257     _haveParent=false;
00258     notifyParent(status);
00259   }
00260 
00261   // outtahere...
00262 }
00263 
00264 
00265 void DaemonImpl::log(const char* message)
00266 {
00267   int priority =LOG_INFO;
00268   // Cut off the redundant package name prefix.
00269   //  "omniEvents: " --> stripped off
00270   //  "omniEvents! " --> stripped off and sets priority to LOG_ERR
00271   const char* mPos( message );
00272   const char* pPos( "omniEvents: " );
00273   while(*mPos && (*mPos==*pPos || *pPos==':'))
00274   {
00275     ++mPos;
00276     ++pPos;
00277     if(!*pPos)
00278     {
00279       switch(message[10])
00280       {
00281         case '!':  priority=LOG_ERR; // ...AND DROPS THROUGH...
00282         case ':':  message=mPos;
00283       }
00284       break; // loop exit
00285     }
00286   }
00287   // Send the message.
00288   ::syslog(priority,message);
00289 #ifndef LOG_PERROR
00290   // If we don't have LOG_PERROR, then we'll have to manually send
00291   // log messages to stderr.
00292   if(daemon._haveParent)
00293       cerr<<message<<flush;
00294 #endif
00295 }
00296 
00297 
00298 void DaemonImpl::checkPidfileOrShutdown()
00299 {
00300   if(!_pidfile)
00301       return;
00302 
00303   // Try to read pidfile.
00304   pid_t pidFromFile =0;
00305   struct stat buf;
00306   if(0==::stat(_pidfile,&buf))
00307   {
00308     if(!S_ISREG(buf.st_mode))
00309     {
00310       cerr<<"Pidfile '"<<_pidfile<<"' is not a regular file."<<endl;
00311       ::exit(-1);
00312     }
00313     try
00314     {
00315       ifstream infile(_pidfile);
00316       infile>>pidFromFile;
00317       infile.close();
00318     }
00319     catch(...)
00320     {
00321       cerr<<"Failed to read pidfile'"<<_pidfile<<"'."<<endl;
00322       ::exit(-1);
00323     }
00324   }
00325   else if(errno!=ENOENT)
00326   {
00327     cerr<<"Failed to stat pidfile '"<<_pidfile<<"': "
00328         <<STRERR_FILE_LINE<<endl;
00329     ::exit(-1);
00330   }
00331 
00332   // If process 'pidFromFile' is running then exit, else remove pidfile.
00333   if(pidFromFile>0)
00334   {
00335     if(0==::kill(pidFromFile,0)) // tests for running 'pidFromFile'.
00336     {
00337       cerr<<"Quitting because process "<<pidFromFile
00338           <<" defined in pidfile '"<<_pidfile<<"'"
00339           <<" is already running."<<endl;
00340       ::exit(-1);
00341     }
00342     else if(errno!=ESRCH)
00343     {
00344       cerr<<"Failed to test for process "<<pidFromFile
00345           <<" defined in pidfile '"<<_pidfile<<"': "
00346           <<STRERR_FILE_LINE<<endl;
00347       ::exit(-1);
00348     }
00349   }
00350 }
00351 
00352 
00353 void DaemonImpl::writePidfile()
00354 {
00355   if(_pidfile)
00356   {
00357     try
00358     {
00359 #ifdef FSTREAM_OPEN_PROT
00360       ofstream outfile(_pidfile,ios::out|ios::trunc,0644);
00361 #else
00362       ofstream outfile(_pidfile,ios::out|ios::trunc);
00363 #endif
00364       outfile<<::getpid()<<endl;
00365       outfile.close();
00366       // Tell shutdown() that the pidfile needs to be cleared away.
00367       _havePidfile=true;
00368     }
00369     catch(...)
00370     {
00371       cerr<<"Failed to write pidfile '"<<_pidfile<<"'."<<endl;
00372       ::exit(-1);
00373     }
00374   }
00375 }
00376 
00377 
00378 void DaemonImpl::fork()
00379 {
00380   if( ::pipe(_pipe) <0)
00381   {
00382     cerr<<"Failed to open pipe: "<<STRERR_FILE_LINE<<endl;
00383     ::exit(-1);
00384   }
00385 
00386   // Fork off from the parent process
00387   pid_t pid =::fork();
00388   if(pid<0)
00389   {
00390     cerr<<STRERR_FILE_LINE<<endl;
00391     ::exit(-1);
00392   }
00393   else if(pid>0)
00394   {
00395     //
00396     // Now in the PARENT
00397     //
00398 
00399     // Close the write end of the pipe.
00400     if( ::close(_pipe[PIPE_WRITE]) <0)
00401         cerr<<"Failed to close pipe: "<<STRERR_FILE_LINE<<endl;
00402 
00403     ::_exit(waitForChild()); // Exit without flushing buffers
00404   }
00405 
00406   //
00407   // ...now in the CHILD.
00408   //
00409 
00410   _haveParent=true;
00411 
00412   // Close the read end of the pipe
00413   if( ::close(_pipe[PIPE_READ]) <0)
00414       cerr<<"Failed to close pipe: "<<STRERR_FILE_LINE<<endl;
00415 
00416   // Create a new SID for the child process
00417   pid_t sid =::setsid();
00418   if(sid<0)
00419   {
00420     cerr<<STRERR_FILE_LINE<<endl;
00421     ::exit(-1);
00422   }
00423 }
00424 
00425 
00426 void DaemonImpl::redirectStreamsTo(const char* filename)
00427 {
00428   if(openFileFor(STDIN_FILENO,"/dev/null",O_RDONLY)<0)
00429   {
00430     cerr<<"Failed to open /dev/null for STDIN: "<<STRERR_FILE_LINE<<endl;
00431     ::exit(-1);
00432   }
00433   if(openFileFor(STDOUT_FILENO,filename,O_WRONLY|O_CREAT|O_APPEND)<0)
00434   {
00435     cerr<<"Failed to open "<<filename<<" for STDOUT: "<<STRERR_FILE_LINE<<endl;
00436     ::exit(-1);
00437   }
00438   if(openFileFor(STDERR_FILENO,filename,O_WRONLY|O_CREAT|O_APPEND)<0)
00439   {
00440     cerr<<"Failed to open "<<filename<<" for STDERR: "<<STRERR_FILE_LINE<<endl;
00441     ::exit(-1);
00442   }
00443 }
00444 
00445 
00446 int DaemonImpl::openFileFor(int fd, const char* filename, int flags)
00447 {
00448   int newfd =::open(filename,flags,0644);
00449   if(newfd<0)
00450       return -1;
00451   if(newfd==fd)
00452       return fd;
00453   if(::dup2(newfd,fd)<0) // replace fd with a copy of newfd
00454       return -1;
00455   ::close(newfd);
00456   return fd;
00457 }
00458 
00459 
00460 int DaemonImpl::waitForChild()
00461 {
00462   int status =-1;
00463   ssize_t bytes =::read(_pipe[PIPE_READ],&status,sizeof(status));
00464   if(bytes<sizeof(status))
00465   {
00466     status=-1;
00467     if(bytes<0)
00468        cerr<<"Parent failed to read result from pipe: "<<STRERR_FILE_LINE<<endl;
00469   }
00470   if( ::close(_pipe[PIPE_READ]) !=0)
00471       cerr<<"Failed to close pipe: "<<STRERR_FILE_LINE<<endl;
00472 
00473   return status;
00474 }
00475 
00476 
00477 void DaemonImpl::notifyParent(int status)
00478 {
00479   ssize_t r =::write(_pipe[PIPE_WRITE],&status,sizeof(status));
00480   if(r<sizeof(status))
00481   {
00482     if(r<0)
00483         cerr<<"read() failed while writing return value to pipe: "
00484             <<STRERR_FILE_LINE<<endl;
00485     else
00486         cerr<<"write() too short while writing return value from pipe: "
00487             <<STRERR_FILE_LINE<<endl;
00488   }
00489   if( ::close(_pipe[PIPE_WRITE]) !=0)
00490       cerr<<"Failed to close pipe: "<<STRERR_FILE_LINE<<endl;
00491 }
00492 
00493 } // end namespace OmniEvents

Generated on Fri Aug 26 20:56:13 2005 for OmniEvents by  doxygen 1.4.3-20050530
omniEvents-2_6_2/doc/doxygen/a00151.html0000644000076400001440000002257610303671736020067 0ustar alexusers00000000000000 OmniEvents: daemon_unix.h Source File

daemon_unix.h

Go to the documentation of this file.
00001 //                            Package   : omniEvents
00002 // daemon_unix.h              Created   : 2004/06/26
00003 //                            Author    : Alex Tingle
00004 //
00005 //    Copyright (C) 2004 Alex Tingle.
00006 //
00007 //    This file is part of the omniEvents application.
00008 //
00009 //    omniEvents is free software; you can redistribute it and/or
00010 //    modify it under the terms of the GNU Lesser General Public
00011 //    License as published by the Free Software Foundation; either
00012 //    version 2.1 of the License, or (at your option) any later version.
00013 //
00014 //    omniEvents is distributed in the hope that it will be useful,
00015 //    but WITHOUT ANY WARRANTY; without even the implied warranty of
00016 //    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00017 //    Lesser General Public License for more details.
00018 //
00019 //    You should have received a copy of the GNU Lesser General Public
00020 //    License along with this library; if not, write to the Free Software
00021 //    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
00022 //
00023 
00024 #ifndef OMNIEVENTS__DAEMON_UNIX_H
00025 #define OMNIEVENTS__DAEMON_UNIX_H
00026 
00027 #ifdef __WIN32__
00028 #  error("This file is not intended for Windows.")
00029 #endif
00030 
00031 namespace OmniEvents {
00032 
00037 class DaemonImpl
00038 {
00039 public:
00040   static DaemonImpl _inst;
00041 
00042   char* _tracefile;   
00043   bool  _foreground;  
00044   char* _pidfile;     
00045   int   _pipe[2];     
00046   bool  _havePidfile; 
00047   bool  _haveParent;  
00048   bool  _haveSyslog;  
00049 
00050   DaemonImpl();
00051   ~DaemonImpl();
00052 
00053   void tracefile(const char* val); 
00054   void pidfile(const char* val);   
00055   void foreground(bool val);       
00056 
00058   void initialize(int&,char**&);
00059 
00063   void daemonize();
00064 
00069   void runningOk();
00070 
00074   void shutdown(int status);
00075 
00081   static void log(const char* message);
00082 
00083 private:
00085   void fork();
00086 
00090   void redirectStreamsTo(const char* filename);
00091 
00095   int openFileFor(int fd, const char* filename, int flags);
00096 
00100   void checkPidfileOrShutdown();
00101 
00102   void writePidfile();
00103 
00108   int waitForChild();
00109   
00111   void notifyParent(int status);
00112 };
00113 
00114 } // end namespace OmniEvents
00115 
00116 #endif // OMNIEVENTS__DAEMON_UNIX_H

Generated on Fri Aug 26 20:56:13 2005 for OmniEvents by  doxygen 1.4.3-20050530
omniEvents-2_6_2/doc/doxygen/a00152.html0000644000076400001440000013344110303671736020062 0ustar alexusers00000000000000 OmniEvents: daemon_windows.cc Source File

daemon_windows.cc

Go to the documentation of this file.
00001 //                            Package   : omniEvents
00002 //  daemon_windows.cc         Created   : 2004/07/23
00003 //                            Author    : Alex Tingle
00004 //
00005 //    Copyright (C) 2004 Alex Tingle
00006 //
00007 //    This file is part of the omniEvents application.
00008 //
00009 //    omniEvents is free software; you can redistribute it and/or
00010 //    modify it under the terms of the GNU Lesser General Public
00011 //    License as published by the Free Software Foundation; either
00012 //    version 2.1 of the License, or (at your option) any later version.
00013 //
00014 //    omniEvents is distributed in the hope that it will be useful,
00015 //    but WITHOUT ANY WARRANTY; without even the implied warranty of
00016 //    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00017 //    Lesser General Public License for more details.
00018 //
00019 //    You should have received a copy of the GNU Lesser General Public
00020 //    License along with this library; if not, write to the Free Software
00021 //    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
00022 //
00023 
00024 #include "daemon.h"
00025 #include "daemon_windows.h"
00026 #include "main.h"
00027 
00028 #define NEED_PACKAGE_INFO
00029 #ifdef HAVE_CONFIG_H
00030 #  include "config.h"
00031 #endif
00032 
00033 using namespace std;
00034 
00035 #include <fstream>
00036 #include <stdlib.h> // exit, on_exit
00037 #include <errno.h> // errno
00038 #include <string>
00039 #include <vector>
00040 
00041 #define AS_STR_2(x) #x
00042 #define AS_STR_1(x) AS_STR_2(x)
00043 
00044 #define HERE __FILE__ ":" AS_STR_1(__LINE__)
00045 
00046 // Forward declaration of omniORB::setLogFunction()
00047 namespace omniORB {
00048   void setLogFunction(void (*logFunction)(const char*));
00049 }
00050 
00051 namespace OmniEvents {
00052 
00054 class Win
00055 {
00056 public:
00057   static const char* strerror(DWORD e)
00058   {
00059     LPVOID buf;
00060     ::FormatMessage(
00061       FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM,
00062       NULL,
00063       e,
00064       MAKELANGID(LANG_NEUTRAL,SUBLANG_DEFAULT),
00065       (LPTSTR)&buf,
00066       0, NULL
00067     );
00068     return (const char*)(buf);
00069   }
00070 
00071   static void perror(const char* s=NULL)
00072   {
00073     if(s)
00074     {
00075       Service::log(s);
00076       Service::log(": ");
00077     }
00078     Service::log(Win::strerror(::GetLastError()));
00079   }
00080 };
00081 
00086 class RegistryKey
00087 {
00088   HKEY _hkey;
00089   bool _open;
00090 private:
00091   RegistryKey(); 
00092   RegistryKey(HKEY hkey, bool open=true):_hkey(hkey),_open(open){}
00093 public:
00094   RegistryKey(RegistryKey& right);
00095   RegistryKey(HKEY hkey, const char* subkey, REGSAM samDesired=KEY_QUERY_VALUE);
00096   ~RegistryKey();
00097   operator bool() const { return _open; }
00098   int setValueStr(const char* name, const char* data);
00099   char* queryValueStr(const char* name, const int maxlen=2048) const;
00100 };
00101 
00103 RegistryKey::RegistryKey(RegistryKey& right):
00104   _hkey(right._hkey),_open(right._open)
00105 {
00106   right._open=false;
00107 }
00108 
00110 RegistryKey::RegistryKey(
00111   HKEY hkey,
00112   const char* subkey,
00113   REGSAM samDesired
00114 ):_hkey(), _open(false)
00115 {
00116   long ret=::RegOpenKeyEx(hkey,subkey,0,samDesired,&_hkey);
00117   ::SetLastError(ret);
00118   if(ret==ERROR_SUCCESS)
00119       _open=true;
00120 }
00121 
00123 RegistryKey::~RegistryKey()
00124 {
00125   // Windows - why use two lines, when seven will do??
00126   // RegCloseKey() does not set last error, so complexity ensues...
00127   if(_open)
00128   {
00129     long ret =::RegCloseKey(_hkey);
00130     ::SetLastError(ret);
00131     if(ret!=ERROR_SUCCESS)
00132         Win::perror("Warning at " HERE);
00133   }
00134 }
00135 
00136 int RegistryKey::setValueStr(const char* name, const char* data)
00137 {
00138   long ret=::RegSetValueEx(
00139       _hkey,name,0,REG_SZ,
00140       (const BYTE*)(data),
00141       1+::strlen(data)
00142     );
00143   ::SetLastError(ret);
00144   if(ret==ERROR_SUCCESS)
00145       return 0;
00146   else
00147       return 1;
00148 }
00149 
00150 char* RegistryKey::queryValueStr(const char* name, const int maxlen) const
00151 {
00152   char* result =NULL;
00153   char* buf =new char[maxlen];
00154   DWORD len =maxlen;
00155 
00156   long ret=::RegQueryValueEx(_hkey,name,NULL,NULL,(LPBYTE)buf,&len);
00157   ::SetLastError(ret);
00158   if(ret==ERROR_SUCCESS && len<=maxlen)
00159       result=::strdup(buf); // MSVC6 has no strndup()!!
00160   delete[] buf;
00161   return result;
00162 }
00164 
00166 static Service service;
00167 
00168 Daemon::Daemon(int& argc,char**& argv)  { service.start(argc,argv); }
00169 void Daemon::tracefile(const char* val) { service.tracefile(val); }
00170 void Daemon::pidfile(const char* val)   { service.pidfile(val); }
00171 void Daemon::foreground(bool val)       { service.foreground(val); }
00172 void Daemon::daemonize()                { service.daemonize(); }
00173 void Daemon::runningOk()                { service.runningOk(); }
00174 Daemon::~Daemon()                       { service.shutdown(); }
00175 
00176 void shutdown0(void){ service.shutdown(); } 
00177 
00179 
00180 Service::Service():
00181   _tracefile(NULL),
00182   _regSubKey("SYSTEM\\CurrentControlSet\\Services\\" PACKAGE_NAME),
00183   _serviceRunning(false),
00184   _callCount(0),
00185   _parameters(NULL),
00186   _argv(NULL),
00187   _logstream(&cerr),
00188   _serviceStatusHandle()
00189 {}
00190 
00191 
00192 Service::~Service()
00193 {
00194   delete[] _tracefile;
00195   delete[] _parameters;
00196   delete[] _argv;
00197   if(_logstream!=&cerr)
00198       delete _logstream;
00199 }
00200 
00201 
00202 void Service::tracefile(const char* val)
00203 {
00204   delete[] _tracefile;
00205   _tracefile=::strdup(val);
00206 }
00207 
00208 
00209 void Service::pidfile(const char* val)
00210 {
00211   Service::log("Option -P not supported on windows.\n");
00212   ::exit(1);
00213 }
00214 
00215 
00216 void Service::foreground(bool val)
00217 {
00218   Service::log("Option -f not supported on windows.\n");
00219   ::exit(1);
00220 }
00221 
00222 
00223 void Service::start(int& argc,char**& argv)
00224 {
00225   ++_callCount;
00226   if(_callCount>1)
00227   {
00228     // This is a re-entrant call. We are inside 'ServiceMain()'.
00229     setArgcArgv(argc,argv); // Set argv & argc from the registry.
00230     _serviceStatusHandle=
00231       ::RegisterServiceCtrlHandler(
00232         PACKAGE_NAME,
00233         (LPHANDLER_FUNCTION)Service::ctrlHandler
00234       );
00235     if(!_serviceStatusHandle)
00236         ::exit(1);
00237     if(! setServiceStatus(SERVICE_START_PENDING,NO_ERROR,0,1,3000) )
00238         ::exit(1);
00239     _serviceRunning=true;
00240     // ...and return to main().
00241   }
00242   else if(argc>=2 && 0==::strcmp(argv[1],"service"))
00243   {
00244     // Start service.
00245     char* name =::strdup(PACKAGE_NAME);
00246     SERVICE_TABLE_ENTRY servicetable[]=
00247     {
00248       {name,(LPSERVICE_MAIN_FUNCTION)::main},
00249       {NULL,NULL}
00250     };
00251     if(! ::StartServiceCtrlDispatcher(servicetable) )
00252     {
00253       Win::perror(HERE);
00254       ::exit(1);
00255     }
00256     ::exit(0);
00257   }
00258   else if(argc>=2 && 0==::strcmp(argv[1],"install"))
00259   {
00260     install(argc,argv);
00261     cout<<"Service '" PACKAGE_NAME "' installed OK."<<endl;
00262     ::exit(0);
00263   }
00264   else if(argc>=2 && 0==::strcmp(argv[1],"uninstall"))
00265   {
00266     uninstall();
00267     cout<<"Service '" PACKAGE_NAME "' removed."<<endl;
00268     ::exit(0);
00269   }
00270   else if(argc>=2 && 0==::strcmp(argv[1],"getoptions"))
00271   {
00272     readParameters();
00273     cout<<_parameters<<endl;
00274     ::exit(0);
00275   }
00276   else if(argc>=2 && 0==::strcmp(argv[1],"setoptions"))
00277   {
00278     writeParameters(argc,argv);
00279     ::exit(0);
00280   }
00281   else if(argc>=2 && 0==::strcmp(argv[1],"run"))
00282   {
00283     setArgcArgv(argc,argv); // Set argv & argc from the registry.
00284   }
00285   else
00286   {
00287     ; // Just run the program in the foreground.
00288   }
00289 }
00290 
00291 
00292 void Service::daemonize()
00293 {
00294   if(_tracefile && _tracefile[0]!='\0')
00295   {
00296     _logstream=new ofstream(_tracefile,ios::out|ios::app);
00297     omniORB::setLogFunction(Service::log);
00298   }
00299 
00300   // Register the shutdown function.
00301   if( ::atexit(shutdown0) <0) // Windows has atexit()
00302   {
00303     Service::log("Failed to set exit handler.");
00304     ::exit(-1);
00305   }
00306 }
00307 
00308 
00309 void Service::runningOk()
00310 {
00311   if(_serviceRunning)
00312   {
00313     if(! setServiceStatus(SERVICE_RUNNING,NO_ERROR,0,0,0) )
00314         ::exit(1);
00315   }
00316 }
00317 
00318 
00319 void Service::shutdown()
00320 {
00321   if(_logstream!=&cerr)
00322   {
00323     delete _logstream;
00324     _logstream=&cerr;
00325   }
00326   if(_serviceRunning)
00327   {
00328     setServiceStatus(SERVICE_STOPPED,NO_ERROR,0,0,0);
00329     _serviceRunning=false;
00330   }
00331 }
00332 
00333 // static callback
00334 void Service::log(const char* message)
00335 {
00336   (*service._logstream)<<message<<flush;
00337 }
00338 
00339 // static callback
00340 void Service::ctrlHandler(DWORD controlCode)
00341 {
00342   switch(controlCode)
00343   {  
00344   case SERVICE_CONTROL_SHUTDOWN:
00345   case SERVICE_CONTROL_STOP:
00346       ::OmniEvents_Orb_shutdown(controlCode);
00347       service.setServiceStatus(SERVICE_STOP_PENDING,NO_ERROR,0,1,6000);
00348       break;
00349   case 128: // User defined code.
00350       ::OmniEvents_Orb_bumpTraceLevel(controlCode);
00351       break;
00352   default:
00353       break;
00354   }
00355 }
00356 
00357 
00358 void Service::setArgcArgv(int& argc,char**& argv)
00359 {
00360   readParameters();
00361   vector<char*> args;
00362   char* param =::strtok(_parameters,"\t ");
00363   while(param)
00364   {
00365     args.push_back(param);
00366     param=::strtok(NULL,"\t ");
00367   }
00368   if(!args.empty())
00369   {
00370     _argv=new char*[argc+args.size()]; // deleted by ~Service()
00371     int i=0;
00372     _argv[i++]=argv[0];
00373     for(int j=0; j<args.size(); ++j)
00374         _argv[i++]=args[j];
00375     for(int k=1; k<argc; ++k)
00376         _argv[i++]=argv[k];
00377     argv=_argv;
00378     argc=i;
00379   }
00380 }
00381 
00382 
00383 void Service::install(int argc,char** argv) const
00384 {
00385   //
00386   // Install service
00387   char exe_file_name[MAX_PATH];
00388   if(0== ::GetModuleFileName(0, exe_file_name, MAX_PATH) )
00389   {
00390     Win::perror(HERE);
00391     ::exit(1);
00392   }
00393 
00394   string command =string(exe_file_name)+" service";
00395 
00396   SC_HANDLE scmanager =::OpenSCManager(0,0,SC_MANAGER_CREATE_SERVICE);
00397   if(!scmanager)
00398   {
00399     Win::perror(HERE);
00400     ::exit(1);
00401   }
00402   SC_HANDLE service =
00403     ::CreateService(
00404       scmanager,
00405       PACKAGE_NAME,
00406       "CORBA Event Daemon",
00407       SERVICE_ALL_ACCESS,
00408       SERVICE_WIN32_OWN_PROCESS,
00409       SERVICE_AUTO_START,
00410       SERVICE_ERROR_NORMAL,
00411       command.c_str(),
00412       0,0,0,0,0
00413     );
00414   if(!service)
00415   {
00416     Win::perror(HERE);
00417     ::exit(1);
00418   }
00419   if(0== ::CloseServiceHandle(service) )
00420   {
00421     Win::perror(HERE);
00422     ::exit(1);
00423   }
00424   if(0== ::CloseServiceHandle(scmanager) )
00425   {
00426     Win::perror(HERE);
00427     ::exit(1);
00428   }
00429 
00430   //
00431   // Set the service's parameters & description.
00432   writeParameters(argc,argv);
00433   RegistryKey rkey(HKEY_LOCAL_MACHINE,_regSubKey,KEY_SET_VALUE);
00434   if(!rkey)
00435   {
00436     Win::perror("Can't open registry key at " HERE);
00437     ::exit(1);
00438   }
00439   if(0!= rkey.setValueStr("Description",
00440            "Asynchronous broadcast channels for CORBA applications.") )
00441   {
00442     Win::perror("Can't set registry value 'Description' at " HERE);
00443     ::exit(1);
00444   }
00445 }
00446 
00447 
00448 void Service::uninstall() const
00449 {
00450   SC_HANDLE scmanager =::OpenSCManager(0,0,SC_MANAGER_CREATE_SERVICE);
00451   if(!scmanager)
00452   {
00453     Win::perror(HERE);
00454     ::exit(1);
00455   }
00456   SC_HANDLE service =
00457     ::OpenService(
00458       scmanager,
00459       PACKAGE_NAME,
00460       SC_MANAGER_ALL_ACCESS
00461     );
00462   if(!service)
00463   {
00464     Win::perror(HERE);
00465     ::exit(1);
00466   }
00467   if(0== ::DeleteService(service) )
00468   {
00469     Win::perror(HERE);
00470     ::exit(1);
00471   }
00472   if(0== ::CloseServiceHandle(service) )
00473   {
00474     Win::perror(HERE);
00475     ::exit(1);
00476   }
00477   if(0== ::CloseServiceHandle(scmanager) )
00478   {
00479     Win::perror(HERE);
00480     ::exit(1);
00481   }
00482 }
00483 
00484 
00485 void Service::readParameters()
00486 {
00487   RegistryKey rkey(HKEY_LOCAL_MACHINE,_regSubKey);
00488   if(!rkey)
00489   {
00490     Win::perror("Can't open registry key at " HERE);
00491     ::exit(1);
00492   }
00493   _parameters=rkey.queryValueStr("Parameters"); // deleted by ~Service()
00494   if(_parameters==NULL)
00495   {
00496     Win::perror("Can't get Parameters at " HERE);
00497     ::exit(1);
00498   }
00499 }
00500 
00501 
00502 void Service::writeParameters(int argc, char** argv) const
00503 {
00504   RegistryKey rkey(HKEY_LOCAL_MACHINE,_regSubKey,KEY_SET_VALUE);
00505   if(!rkey)
00506   {
00507     Win::perror("Can't open registry key at " HERE);
00508     ::exit(1);
00509   }
00510   string parameters ="";
00511   for(int i=2; i<argc; ++i)
00512   {
00513     if(!parameters.empty())
00514         parameters+=" ";
00515     parameters+=argv[i];
00516   }
00517   if(0!= rkey.setValueStr("Parameters",parameters.c_str()) )
00518   {
00519     Win::perror("Can't set registry value 'Parameters' at " HERE);
00520     ::exit(1);
00521   }
00522 }
00523 
00524 
00525 bool Service::setServiceStatus(
00526   DWORD currentState,
00527   DWORD win32ExitCode,
00528   DWORD serviceSpecificExitCode,
00529   DWORD checkPoint,
00530   DWORD waitHint)
00531 {
00532   SERVICE_STATUS s;
00533   s.dwServiceType            =SERVICE_WIN32_OWN_PROCESS;
00534   s.dwCurrentState           =currentState;
00535   s.dwServiceSpecificExitCode=serviceSpecificExitCode;
00536   s.dwCheckPoint             =checkPoint;
00537   s.dwWaitHint               =waitHint;
00538 
00539   if(currentState==SERVICE_START_PENDING)
00540       s.dwControlsAccepted=0;
00541   else
00542       s.dwControlsAccepted=SERVICE_ACCEPT_STOP|SERVICE_ACCEPT_SHUTDOWN;
00543 
00544   if(serviceSpecificExitCode==0)
00545       s.dwWin32ExitCode=win32ExitCode;
00546   else
00547       s.dwWin32ExitCode=ERROR_SERVICE_SPECIFIC_ERROR;
00548 
00549   return (0!= ::SetServiceStatus(_serviceStatusHandle,&s) );
00550 }
00551 
00552 } // end namespace OmniEvents

Generated on Fri Aug 26 20:56:14 2005 for OmniEvents by  doxygen 1.4.3-20050530
omniEvents-2_6_2/doc/doxygen/a00153.html0000644000076400001440000002424710303671736020066 0ustar alexusers00000000000000 OmniEvents: daemon_windows.h Source File

daemon_windows.h

Go to the documentation of this file.
00001 //                            Package   : omniEvents
00002 // daemon_windows.h           Created   : 2004/07/30
00003 //                            Author    : Alex Tingle
00004 //
00005 //    Copyright (C) 2004 Alex Tingle.
00006 //
00007 //    This file is part of the omniEvents application.
00008 //
00009 //    omniEvents is free software; you can redistribute it and/or
00010 //    modify it under the terms of the GNU Lesser General Public
00011 //    License as published by the Free Software Foundation; either
00012 //    version 2.1 of the License, or (at your option) any later version.
00013 //
00014 //    omniEvents is distributed in the hope that it will be useful,
00015 //    but WITHOUT ANY WARRANTY; without even the implied warranty of
00016 //    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00017 //    Lesser General Public License for more details.
00018 //
00019 //    You should have received a copy of the GNU Lesser General Public
00020 //    License along with this library; if not, write to the Free Software
00021 //    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
00022 //
00023 
00024 #ifndef OMNIEVENTS__DAEMON_WINDOWS_H
00025 #define OMNIEVENTS__DAEMON_WINDOWS_H
00026 
00027 #ifndef __WIN32__
00028 #  error("This file is only intended for Windows.")
00029 #endif
00030 
00031 #include <windows.h>
00032 #include <winsvc.h>
00033 #include <iostream>
00034 
00035 namespace OmniEvents {
00036 
00040 class Service
00041 {
00042 public:
00043   Service();
00044   ~Service();
00045 
00046   void start(int& argc,char**& argv);
00047 
00048   void tracefile(const char* val); 
00049   void pidfile(const char* val);   
00050   void foreground(bool val);       
00051 
00053   void daemonize();
00054 
00056   void runningOk();
00057 
00059   void shutdown();
00060 
00061   // Callbacks.
00062 
00064   static void log(const char* message);
00065 
00067   static void ctrlHandler(DWORD controlCode);
00068 
00069 private:
00070   char*         _tracefile;   
00071   const char*   _regSubKey;
00072   bool          _serviceRunning;
00073   int           _callCount;
00074   char*         _parameters; 
00075   char**        _argv; 
00076   std::ostream* _logstream;
00077   SERVICE_STATUS_HANDLE _serviceStatusHandle; 
00078 
00079   void Service::setArgcArgv(int& argc,char**& argv);
00080   void install(int argc,char** argv) const;
00081   void uninstall() const;
00082 
00084   void readParameters();
00086   void writeParameters(int argc, char** argv) const;
00087 
00088   bool Service::setServiceStatus(
00089     DWORD currentState,
00090     DWORD win32ExitCode,
00091     DWORD serviceSpecificExitCode,
00092     DWORD checkPoint,
00093     DWORD waitHint
00094   );
00095 
00096 }; // class Service
00097 
00098 } // end namespace OmniEvents
00099 
00100 #endif // OMNIEVENTS__DAEMON_WINDOWS_H
00101 

Generated on Fri Aug 26 20:56:14 2005 for OmniEvents by  doxygen 1.4.3-20050530
omniEvents-2_6_2/doc/doxygen/a00154.html0000644000076400001440000002465410303671736020071 0ustar alexusers00000000000000 OmniEvents: defaults.h Source File

defaults.h

Go to the documentation of this file.
00001 // -*- Mode: C++; -*-
00002 //                            Package   : omniEvents
00003 // defaults.h                 Created   : 1/10/99
00004 //                            Author    : Paul Nader (pwn)
00005 //
00006 //    Copyright (C) 1998 Paul Nader, 2004 Alex Tingle.
00007 //
00008 //    This file is part of the omniEvents application.
00009 //
00010 //    omniEvents is free software; you can redistribute it and/or
00011 //    modify it under the terms of the GNU Lesser General Public
00012 //    License as published by the Free Software Foundation; either
00013 //    version 2.1 of the License, or (at your option) any later version.
00014 //
00015 //    omniEvents is distributed in the hope that it will be useful,
00016 //    but WITHOUT ANY WARRANTY; without even the implied warranty of
00017 //    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00018 //    Lesser General Public License for more details.
00019 //
00020 //    You should have received a copy of the GNU Lesser General Public
00021 //    License along with this library; if not, write to the Free Software
00022 //    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
00023 //
00024 // Description:
00025 //
00026 // Contains definitions of default values.
00027 
00028 /*
00029   $Log: defaults.h,v $
00030   Revision 1.7.2.2  2005/05/10 14:28:10  alextingle
00031   Updated copyrights to 2005.
00032 
00033   Revision 1.7.2.1  2004/11/01 12:27:12  alextingle
00034   New EventChannel parameter `PullRetryPeriod_ms' supercedes `PullRetryPeriod'.
00035   The new parameter is set by `eventc -R'. The old parameter and its `-r'
00036   option still work as before, for backwards compatibility.
00037 
00038   Revision 1.7  2004/07/26 20:50:39  alextingle
00039   Version --> 2.5.4
00040 
00041   Revision 1.6  2004/07/06 12:46:34  alextingle
00042   Moved default macros into defaults.h
00043 
00044   Revision 1.5  2004/05/28 10:11:37  alextingle
00045   Added a comment.
00046 
00047   Revision 1.4  2004/04/19 22:04:29  alextingle
00048   Corrected default CyclePeriod to 0.1s
00049 
00050   Revision 1.3  2004/03/28 01:01:21  alextingle
00051   New QoS parameters: CyclePeriod_ns and InsName.
00052 
00053   Revision 1.2  2004/01/11 16:57:26  alextingle
00054   New persistancy log file format, implemented by PersistNode.h/cc. The new format enables new nodes to be added and old ones erased by appending a single line to the file, rather than by re-persisting the whole application. This is much more efficient when lots of proxies are being created all at once. It's also a much simpler solution, with far fewer lines of code.
00055 
00056   Revision 1.1  2003/12/21 16:19:49  alextingle
00057   Moved into 'src' directory as part of the change to POA implementation.
00058 
00059   Revision 1.2  2003/11/03 22:36:48  alextingle
00060   Updated License to GNU Lesser General Public v2.1
00061 
00062   Revision 1.1.1.1  2002/09/25 19:00:32  shamus13
00063   Import of OmniEvents source tree from release 2.1.1
00064 
00065   Revision 1.1  2000/09/05 01:07:40  naderp
00066   Added MaxQueueLength QOS.
00067 
00068   Revision 1.0  1999/11/01 16:48:08  naderp
00069   Initial revision
00070 
00071 */
00072 
00073 #ifndef _DEFAULTS_H_
00074 #define _DEFAULTS_H_
00075 
00076 #define PULL_RETRY_PERIOD_MS 1000 
00077 #define MAX_QUEUE_LENGTH     1023
00078 #define MAX_NUM_PROXIES      1024 
00079 #define CYCLE_PERIOD_NS      100000000 
00080 
00081 
00088 #if defined(__WIN32__)
00089 #  define OMNIEVENTS_LOG_DEFAULT_LOCATION "C:\\omniEvents"
00090 #elif defined(__VMS) // What is a good default for VMS?
00091 #  define OMNIEVENTS_LOG_DEFAULT_LOCATION "[]"
00092 #else // Unix
00093 #  define OMNIEVENTS_LOG_DEFAULT_LOCATION "/var/lib/omniEvents"
00094 #endif
00095 
00100 #define OMNIEVENTS_LOGDIR_ENV_VAR "OMNIEVENTS_LOGDIR"
00101 
00111 #define OMNIEVENTS_LOG_CHECKPOINT_PERIOD (15*60)
00112 
00113 #endif // _DEFAULTS_H_

Generated on Fri Aug 26 20:56:14 2005 for OmniEvents by  doxygen 1.4.3-20050530
omniEvents-2_6_2/doc/doxygen/a00155.html0000644000076400001440000012533610303671736020071 0ustar alexusers00000000000000 OmniEvents: eventc.cc Source File

eventc.cc

Go to the documentation of this file.
00001 // -*- Mode: C++; -*-
00002 //                            Package   : omniEvents
00003 // eventc.cc                  Created   : 1/4/98
00004 //                            Author    : Paul Nader (pwn)
00005 //
00006 //    Copyright (C) 1998 Paul Nader.
00007 //
00008 //    This file is part of the omniEvents application.
00009 //
00010 //    omniEvents is free software; you can redistribute it and/or
00011 //    modify it under the terms of the GNU Lesser General Public
00012 //    License as published by the Free Software Foundation; either
00013 //    version 2.1 of the License, or (at your option) any later version.
00014 //
00015 //    omniEvents is distributed in the hope that it will be useful,
00016 //    but WITHOUT ANY WARRANTY; without even the implied warranty of
00017 //    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00018 //    Lesser General Public License for more details.
00019 //
00020 //    You should have received a copy of the GNU Lesser General Public
00021 //    License along with this library; if not, write to the Free Software
00022 //    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
00023 //
00024 // Description:
00025 //    Client to the event channel factory. Requests creation of an event
00026 //    channel and registers it with the Naming service.
00027 //      
00028 
00029 /*
00030   $Log: eventc.cc,v $
00031   Revision 1.4.2.2  2005/04/27 20:49:32  alextingle
00032   Merge across changes from HEAD branch (see CHANGES_262. Change version number ready for release 2.6.2.
00033 
00034   Revision 1.4.2.1  2004/11/01 12:27:12  alextingle
00035   New EventChannel parameter `PullRetryPeriod_ms' supercedes `PullRetryPeriod'.
00036   The new parameter is set by `eventc -R'. The old parameter and its `-r'
00037   option still work as before, for backwards compatibility.
00038 
00039   Revision 1.4  2004/10/08 09:06:19  alextingle
00040   More robust exception minor code handling.
00041 
00042   Revision 1.3  2004/08/06 16:16:40  alextingle
00043   Simplified call to ORB_init().
00044 
00045   Revision 1.2  2004/08/04 21:52:52  alextingle
00046   'n' & 'N' options now take a full name path. No more 'k' or 'K' options.
00047 
00048   Revision 1.1  2004/05/31 10:29:37  alextingle
00049   New 'tools' directory. Contains useful command line tools that previously lived in the 'examples' directory.
00050 
00051   Revision 1.14  2004/05/28 10:38:23  alextingle
00052   Now uses new omniEvents.idl header. Properly this time!
00053 
00054   Revision 1.13  2004/05/28 10:16:54  alextingle
00055   Now uses new omniEvents.idl header.
00056 
00057   Revision 1.12  2004/04/30 17:48:02  alextingle
00058   New 'real time push' feature: -t option.
00059 
00060   Revision 1.11  2004/04/21 10:23:46  alextingle
00061   If there is no Naming Service, eventc only issues a warning unless it is needed to find the factory, or options -n or -k are set.
00062 
00063   Revision 1.10  2004/04/20 16:51:59  alextingle
00064   All examples updated for latest version on omniEvents. Server may now be
00065   specified as a 'corbaloc' string or IOR, instead of as naming service id/kind.
00066 
00067   Revision 1.9  2004/03/28 00:58:05  alextingle
00068   New options. -c sets CyclePeriod_ns. -i sets the Channel's InsName.
00069 
00070   Revision 1.8  2004/03/26 16:06:30  alextingle
00071   Added verbose (-v) option that prints the new channel's IOR to standard out.
00072 
00073   Revision 1.7  2004/02/20 17:41:40  alextingle
00074   Moved 'endl;' to the actual end!!
00075 
00076   Revision 1.6  2004/02/20 14:01:54  alextingle
00077   New param: -p sets MaxNumProxies for omniEvents 2.5+.
00078   No longer sends parameters that are not explicitly set on
00079   the command line. This leaves the server to decide upon
00080   default values.
00081 
00082   Revision 1.5  2004/02/04 22:29:55  alextingle
00083   Reworked all C++ examples.
00084   Removed catch(...) as it tends to make it harder to see what's going on.
00085   Now uses POA instead of BOA.
00086   Uses omniORB4's Exception name probing.
00087   No longer uses 'naming.h/cc' utility code.
00088 
00089   Revision 1.4  2003/12/21 11:12:01  alextingle
00090   Most exceptions are now caught by a unified catch block.
00091 
00092   Revision 1.3  2003/11/03 22:21:21  alextingle
00093   Removed all platform specific switches. Now uses autoconf, config.h.
00094   Removed stub header in order to allow makefile dependency checking to work
00095   correctly.
00096 
00097   Revision 1.1.1.1.2.1  2002/09/28 22:20:51  shamus13
00098   Added ifdefs to enable omniEvents to compile
00099   with both omniORB3 and omniORB4. If __OMNIORB4__
00100   is defined during compilation, omniORB4 headers
00101   and command line option syntax is used, otherwise
00102   fall back to omniORB3 style.
00103 
00104   Revision 1.1.1.1  2002/09/25 19:00:25  shamus13
00105   Import of OmniEvents source tree from release 2.1.1
00106 
00107   Revision 1.6  2000/09/05 01:05:38  naderp
00108   Added MaxQueueLength QOS.
00109 
00110   Revision 1.5  2000/08/30 04:39:20  naderp
00111   Port to omniORB 3.0.1.
00112 
00113   Revision 1.4  2000/03/16 05:34:30  naderp
00114   Added stdlib.h for solaris getopt()
00115 
00116   Revision 1.3  2000/03/16 02:44:13  naderp
00117   Added iostream and signal headers.
00118 
00119   Revision 1.2  2000/03/06 13:23:50  naderp
00120   Using util getRootNamingContext function.
00121   Using stub headers.
00122 
00123   Revision 1.1  1999/11/01 20:37:42  naderp
00124   Updated usage statement.
00125 
00126 Revision 1.0  99/11/01  17:05:13  17:05:13  naderp (Paul Nader)
00127 omniEvents 2.0.
00128 Added -m switch to support MaxEventsPerConsumer criteria.
00129 
00130 Revision 0.6  99/08/27  11:48:22  11:48:22  naderp (Paul Nader)
00131 Partitioned EventChannelFactory_i from CosEvent_i.
00132 
00133 Revision 0.5  99/05/10  11:27:50  11:27:50  naderp (Paul Nader)
00134 Initialised rootContext.
00135 
00136 Revision 0.4  99/04/23  16:02:22  16:02:22  naderp (Paul Nader)
00137 gcc port.
00138 
00139 Revision 0.3  99/04/23  09:32:58  09:32:58  naderp (Paul Nader)
00140 Windows Port.
00141 
00142 Revision 0.2  99/04/21  18:06:23  18:06:23  naderp (Paul Nader)
00143 *** empty log message ***
00144 
00145 Revision 0.1.1.1  98/11/27  17:01:51  17:01:51  naderp (Paul Nader)
00146 Enclosed supports call in try block to avoid core dump.
00147 Added information messages for exceptions.
00148 
00149 Revision 0.1  98/11/25  14:07:22  14:07:22  naderp (Paul Nader)
00150 Initial Revision
00151 
00152 */
00153 
00154 //
00155 //
00156 
00157 #ifdef HAVE_CONFIG_H
00158 #  include "config.h"
00159 #endif
00160 
00161 #ifdef HAVE_GETOPT
00162 #  include <unistd.h>
00163 extern char* optarg;
00164 extern int optind;
00165 #else
00166 #  include "getopt.h"
00167 #endif
00168 
00169 #ifdef HAVE_IOSTREAM
00170 #  include <iostream>
00171 #else
00172 #  include <iostream.h>
00173 #endif
00174 
00175 #ifdef HAVE_STD_IOSTREAM
00176 using namespace std;
00177 #endif
00178 
00179 #ifdef HAVE_STDLIB_H
00180 #  include <stdlib.h>
00181 #endif
00182 
00183 #ifdef HAVE_SIGNAL_H
00184 #  include <signal.h>
00185 #endif
00186 
00187 #include "omniEvents.hh"
00188 #include "naming.h"
00189 
00190 static void usage(int argc, char **argv);
00191 static void appendCriterion(   CosLifeCycle::Criteria&,const char*,const char*);
00192 static void appendCriterionStr(CosLifeCycle::Criteria&,const char*,const char*);
00193 
00194 int
00195 main(int argc, char **argv)
00196 {
00197   int result =1;
00198 
00199   //
00200   // Start orb.
00201   CORBA::ORB_var orb = CORBA::ORB_init(argc,argv);
00202 
00203   // Process Options
00204   bool verbose =false;
00205   bool needNameService =false;
00206   const char* channelName ="EventChannel";
00207   const char* factoryName ="EventChannelFactory";
00208   CosLifeCycle::Criteria criteria;
00209 
00210   int c;
00211   while ((c = getopt(argc,argv,"n:N:m:c:i:p:q:R:r:t:vh")) != EOF)
00212   {
00213      switch (c)
00214      {
00215      case 'n':
00216        channelName=optarg;
00217        needNameService=true;       
00218        break;
00219 
00220      case 'N':
00221        factoryName=optarg;
00222        break;
00223 
00224      case 'm': // OLD OPTION
00225        appendCriterion(criteria,"MaxEventsPerConsumer",optarg);
00226        break;
00227 
00228      case 'c':
00229        appendCriterion(criteria,"CyclePeriod_ns",optarg);
00230        break;
00231 
00232      case 'i':
00233        appendCriterionStr(criteria,"InsName",optarg);
00234        break;
00235 
00236      case 'p':
00237        appendCriterion(criteria,"MaxNumProxies",optarg);
00238        break;
00239 
00240      case 'q':
00241        appendCriterion(criteria,"MaxQueueLength",optarg);
00242        break;
00243 
00244      case 'R':
00245        appendCriterion(criteria,"PullRetryPeriod_ms",optarg);
00246        break;
00247 
00248      case 'r': // This option is deprecated in favour of -R:
00249        appendCriterion(criteria,"PullRetryPeriod",optarg);
00250        break;
00251 
00252      case 't':
00253        appendCriterionStr(criteria,"FilterId",optarg);
00254        break;
00255 
00256      case 'v':
00257        verbose=true;
00258        break;
00259 
00260      case 'h':
00261        usage(argc,argv);
00262        exit(0);
00263 
00264      default :
00265        usage(argc,argv);
00266        exit(-1);
00267      }
00268   }
00269   // Need the naming service to find the factory if there is no URI argument.
00270   needNameService=(needNameService || optind>=argc);
00271 
00272   //
00273   // Use one big try...catch block.
00274   // 'action' variable keeps track of what we're doing.
00275   const char* action ="start";
00276   try
00277   {
00278     CORBA::Object_var obj;
00279 
00280     //
00281     // Get Name Service root context.(we can carry on without it though)
00282     CosNaming::NamingContext_var rootContext=CosNaming::NamingContext::_nil();
00283     try {
00284       action="resolve initial reference 'NameService'";
00285       obj=orb->resolve_initial_references("NameService");
00286       rootContext=CosNaming::NamingContext::_narrow(obj);
00287       if(CORBA::is_nil(rootContext))
00288           throw CORBA::OBJECT_NOT_EXIST();
00289     }
00290     catch (CORBA::Exception& ex) {
00291        if(needNameService)
00292            throw;
00293        else
00294            cerr<<"Warning - failed to "<<action<<"."<<endl;
00295     }
00296 
00297     //
00298     // Obtain reference to the Event Channel Factory implementation.
00299     // (from command-line argument or from the Naming Service).
00300     if(optind<argc)
00301     {
00302       action="convert URI from command line into object reference";
00303       obj=orb->string_to_object(argv[optind]);
00304     }
00305     else
00306     {
00307       action="find Event Channel Factory in naming service";
00308       obj=rootContext->resolve(str2name(factoryName));
00309     }
00310 
00311     action="narrow object reference to event channel factory";
00312     omniEvents::EventChannelFactory_var factory =
00313       omniEvents::EventChannelFactory::_narrow(obj);
00314     if(CORBA::is_nil(factory))
00315     {
00316        cerr << "Failed to narrow Event Channel Factory reference." << endl;
00317        exit(1);
00318     }
00319 
00320     // Check that the factory is of the right type
00321     action="check factory supports EventChannel object interface";
00322     CosLifeCycle::Key key;
00323     key.length (1);
00324     key[0].id = CORBA::string_dup("EventChannel");
00325     key[0].kind = CORBA::string_dup("object interface");
00326 
00327     if(!factory->supports(key))
00328     {
00329       cerr << "Factory does not support Event Channel Interface! [\""
00330            << factoryName << "\"]" << endl;
00331       exit(1);
00332     }
00333 
00334     //
00335     // Create Event Channel Object.
00336     action="create EventChannel object";
00337     CORBA::Object_var channelObj =factory->create_object(key, criteria);
00338     if (CORBA::is_nil(channelObj))
00339     {
00340        cerr << "Channel Factory returned nil reference! [\""
00341             << channelName << "\"]" << endl;
00342        exit(1);
00343     }
00344 
00345     // Narrow object returned to an Event Channel
00346     CosEventChannelAdmin::EventChannel_var channel =
00347       CosEventChannelAdmin::EventChannel::_narrow(channelObj);
00348     if (CORBA::is_nil(channel))
00349     {
00350        cerr << "Failed to narrow Event Channel! [\""
00351             << channelName << "\"]" << endl;
00352        exit(1);
00353     }
00354     
00355     // Print the new EventChannel's IOR to standard output.
00356     if(verbose)
00357     {
00358       CORBA::String_var sior =orb->object_to_string(channel);
00359       cout<<sior.in()<<endl;
00360     }
00361 
00362     //
00363     // Register event channel with naming service
00364     if(!CORBA::is_nil(rootContext))
00365     {
00366       CosNaming::Name name =str2name(channelName);
00367       try{
00368         action="register (bind) EventChannel with the naming service";
00369         rootContext->bind(name,channel.in());
00370       }
00371       catch(CosNaming::NamingContext::AlreadyBound& ex) {
00372         action="register (rebind) EventChannel with the naming service";
00373         rootContext->rebind(name,channel.in());
00374       }
00375     }
00376     
00377     //
00378     // Clean up nicely.
00379     action="destroy orb";
00380     orb->destroy();
00381     
00382     //
00383     // If we get here, then everything has worked OK.
00384     result=0;
00385 
00386   }
00387   catch (CosLifeCycle::NoFactory& ex) /* create_object() */ {
00388      cerr<<"Failed to create Event Channel: NoFactory"
00389        " (interface not supported) "<<endl;
00390   }
00391   catch (CosLifeCycle::CannotMeetCriteria& ex) /* create_object() */ {
00392      cerr<<"Failed to create Event Channel: CannotMeetCriteria "<<endl;
00393   }
00394   catch (CosLifeCycle::InvalidCriteria& ex) /* create_object() */ {
00395      cerr<<"Failed to create Event Channel: InvalidCriteria "<<endl;
00396   }
00397   catch (CORBA::COMM_FAILURE& ex) {
00398      cerr<<"System exception, unable to "<<action<<": COMM_FAILURE"<<endl;
00399   }
00400   catch (CORBA::SystemException& ex) {
00401      cerr<<"System exception, unable to "<<action;
00402 #if defined(HAVE_OMNIORB4)
00403      cerr<<" "<<ex._name();
00404      if(ex.NP_minorString())
00405          cerr<<" ("<<ex.NP_minorString()<<")";
00406 #endif
00407      cerr<<endl;
00408   }
00409   catch (CORBA::Exception& ex) {
00410      cerr<<"CORBA exception, unable to "<<action
00411 #ifdef HAVE_OMNIORB4
00412          <<": "<<ex._name()
00413 #endif
00414          << endl;
00415   }
00416   catch (omniORB::fatalException& ex) {
00417      cerr<<"Fatal Exception, unable to "<<action<<endl;
00418   }
00419 
00420   return result;
00421 }
00422 
00423 static void
00424 usage(int argc, char **argv)
00425 {
00426   cerr<<
00427 "\nCreate an EventChannel and register it in the naming service.\n"
00428 "syntax: "<<(argc?argv[0]:"eventc")<<" OPTIONS [FACTORY_URI]\n"
00429 "\n"
00430 "FACTORY_URI: The factory may be specified as a URI.\n"
00431 " This may be an IOR, or a corbaloc::: or corbaname::: URI.\n"
00432 " For example: corbaloc::localhost:11169/omniEvents\n"
00433 "\n"
00434 "OPTIONS:                                         DEFAULT:\n"
00435 " -n channel name                                  [\"EventChannel\"]\n"
00436 " -N factory name (if URI is not specified)        [\"EventChannelFactory\"]\n"
00437 " -c override default CyclePeriod_ns of new channel (nanoseconds)\n"
00438 " -i set the InsName of new channel, to enable access via corbaloc\n"
00439 " -p override default MaxNumProxies of new channel\n"
00440 " -q override default MaxQueueLength of new channel\n"
00441 " -R override default PullRetryPeriod_ms for new channel (milliseconds)\n"
00442 " -t set an event type filter, FilterId=<RepositoryId>\n"
00443 " -v print the IOR of the new EventChannel to standard output.\n"
00444 " -h display this help text\n"
00445 "OLD OPTIONS: (only used by omniEvents v2.4 and earlier)\n"
00446 " -m override default MaxEventsPerConsumer for new channel\n" << endl;
00447 }
00448 
00449 static void appendCriterion(
00450   CosLifeCycle::Criteria& criteria,
00451   const char* name,
00452   const char* value
00453 )
00454 {
00455   CORBA::ULong criteriaLen =criteria.length();
00456   ++criteriaLen;
00457   criteria.length(criteriaLen);
00458   criteria[criteriaLen-1].name=CORBA::string_dup(name);
00459   criteria[criteriaLen-1].value<<=CORBA::ULong(atol(value));
00460 }
00461 
00462 static void appendCriterionStr(
00463   CosLifeCycle::Criteria& criteria,
00464   const char* name,
00465   const char* value
00466 )
00467 {
00468   CORBA::ULong criteriaLen =criteria.length();
00469   ++criteriaLen;
00470   criteria.length(criteriaLen);
00471   criteria[criteriaLen-1].name=CORBA::string_dup(name);
00472   criteria[criteriaLen-1].value<<=value;
00473 }

Generated on Fri Aug 26 20:56:14 2005 for OmniEvents by  doxygen 1.4.3-20050530
omniEvents-2_6_2/doc/doxygen/a00156.html0000644000076400001440000011061710303671736020066 0ustar alexusers00000000000000 OmniEvents: EventChannel.cc Source File

EventChannel.cc

Go to the documentation of this file.
00001 //                            Package   : omniEvents
00002 // EventChannel.cc            Created   : 2003/12/04
00003 //                            Author    : Alex Tingle
00004 //
00005 //    Copyright (C) 2003-2005 Alex Tingle.
00006 //
00007 //    This file is part of the omniEvents application.
00008 //
00009 //    omniEvents is free software; you can redistribute it and/or
00010 //    modify it under the terms of the GNU Lesser General Public
00011 //    License as published by the Free Software Foundation; either
00012 //    version 2.1 of the License, or (at your option) any later version.
00013 //
00014 //    omniEvents is distributed in the hope that it will be useful,
00015 //    but WITHOUT ANY WARRANTY; without even the implied warranty of
00016 //    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00017 //    Lesser General Public License for more details.
00018 //
00019 //    You should have received a copy of the GNU Lesser General Public
00020 //    License along with this library; if not, write to the Free Software
00021 //    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
00022 //
00023 
00024 #include "EventChannel.h"
00025 #include "ConsumerAdmin.h"
00026 #include "SupplierAdmin.h"
00027 #include "omniEventsLog.h"
00028 #include "Orb.h"
00029 
00030 #include <list>
00031 
00032 namespace OmniEvents {
00033 
00034 // CORBA interface methods
00035 CosEventChannelAdmin::ConsumerAdmin_ptr EventChannel_i::for_consumers()
00036 {
00037   if(!_consumerAdmin || _shutdownRequested)
00038       throw CORBA::OBJECT_NOT_EXIST();
00039   return _consumerAdmin->_this();
00040 }
00041 
00042 
00043 CosEventChannelAdmin::SupplierAdmin_ptr EventChannel_i::for_suppliers()
00044 {
00045   if(!_supplierAdmin || _shutdownRequested)
00046       throw CORBA::OBJECT_NOT_EXIST();
00047   return _supplierAdmin->_this();
00048 }
00049 
00050 
00051 void EventChannel_i::destroy()
00052 {
00053   if(_shutdownRequested)
00054       throw CORBA::OBJECT_NOT_EXIST();
00055 
00056   // Prevent further incoming connections.
00057   _shutdownRequested=true;
00058 
00059   DB(5,"EventChannel_i::destroy()")
00060 
00061   // Send disconnect messages to connected clients.
00062   if(_consumerAdmin)
00063      _consumerAdmin->disconnect();
00064   if(_supplierAdmin)
00065      _supplierAdmin->disconnect();
00066 }
00067 
00068 
00069 EventChannel_i::EventChannel_i(EventChannelStore* store)
00070 : Servant(PortableServer::POA::_nil()),
00071   _eventChannelStore(store),
00072   _consumerAdmin(NULL),
00073   _supplierAdmin(NULL),
00074   _poaManager(),
00075   _shutdownRequested(false),
00076   _properties(),
00077   _mapper(NULL),
00078   _lock(),
00079   _refCount(1)
00080 {}
00081 
00082 
00083 void EventChannel_i::activate(
00084   const char*        channelName,
00085   const PersistNode* node
00086 )
00087 {
00088   // The order of these various initialization methods is very important.
00089   // I've documented dependencies as 'REQUIRES' comments.
00090 
00091   createPoa(channelName);
00092 
00093   if(node)
00094       _properties._attr=node->_attr;
00095 
00096   // REQUIRES: _properties
00097   _consumerAdmin=new ConsumerAdmin_i(*this,_poa);
00098 
00099   // REQUIRES: _consumerAdmin, _properties
00100   _supplierAdmin=new SupplierAdmin_i(*this,_poa);
00101 
00102   if(node)
00103   {
00104     PersistNode* saNode =node->child("SupplierAdmin");
00105     if(saNode)
00106         _supplierAdmin->reincarnate(*saNode);
00107 
00108     PersistNode* caNode =node->child("ConsumerAdmin");
00109     if(caNode)
00110         _consumerAdmin->reincarnate(*caNode);
00111   }
00112 
00113   activateObjectWithId("EventChannel");
00114   
00115   // Remove the constructor's reference. This object will now be destroyed when
00116   // the POA releases it.
00117   _remove_ref();
00118 
00119   // REQUIRES: activate() ...since it uses _this().
00120   setInsName(_properties.attrString("InsName"));
00121 
00122   // Start the channel's thread running.
00123   start_undetached();
00124 }
00125 
00126 
00127 EventChannel_i::~EventChannel_i()
00128 {
00129   DB(20,"~EventChannel_i()")
00130   // Destroy the mapper object, even when the EventChannel is being shut down
00131   // without a call to destroy(). This can happen if the channel is
00132   // implemented through libomniEvents - the channel could be shut down and
00133   // later reincarnated in the same process. The Mapper's lifecycle should
00134   // match that of the EventChannel.
00135   if(_mapper)
00136   {
00137     _mapper->destroy();
00138     _mapper=NULL;
00139   }
00140   if(_consumerAdmin)
00141   {
00142     _consumerAdmin->_remove_ref();
00143     _consumerAdmin=NULL;
00144   }
00145   if(_supplierAdmin)
00146   {
00147     _supplierAdmin->_remove_ref();
00148     _supplierAdmin=NULL;
00149   }
00150 }
00151 
00152 
00153 void* EventChannel_i::run_undetached(void*)
00154 {
00155   // Ensure that activate() is called before start()/run().
00156   assert(!CORBA::is_nil(_poa));
00157 
00158   const char* action="";
00159   try
00160   {
00161     if(_eventChannelStore)
00162     {
00163       action="add this object to the store";
00164       _eventChannelStore->insert(this);
00165     }
00166 
00167     if(omniEventsLog::exists())
00168     {
00169       action="create this object in the persistency database";
00170       WriteLock log;
00171       output(log.os);
00172     }
00173 
00174     // Process events until the channel is destroyed.
00175     action="run main loop";
00176     mainLoop();
00177 
00178     if(_eventChannelStore)
00179     {
00180       action="remove this object from the store";
00181       _eventChannelStore->erase(this);
00182     }
00183 
00184     if(_shutdownRequested)
00185     {
00186       if(omniEventsLog::exists())
00187       {
00188         action="remove record from persistency database";
00189         CORBA::String_var poaName =_poa->the_name();
00190         WriteLock log;
00191         log.os<<"-ecf/"<<poaName.in()<<'\n';
00192       }
00193       action="destroy POA";
00194       _poa->destroy(
00195         CORBA::Boolean(1) /* etherealize_objects */,
00196         CORBA::Boolean(0) /* wait_for_completion */
00197       );
00198       _poa=PortableServer::POA::_nil();
00199 
00200     } // end if(_shutdownRequested)
00201 
00202   }
00203   catch(PortableServer::POAManager::AdapterInactive& ex) {
00204     DB(0,"EventChannel_i::run_undetached() - failed to "<<action<<
00205        ", POA deactivated from the outside.")
00206   }
00207   catch (CORBA::SystemException& ex) {
00208     DB(0,"EventChannel_i::run_undetached() - failed to "<<action<<
00209        ", System exception: "<<ex._name()<<" ("<<NP_MINORSTRING(ex)<<")")
00210   }
00211   catch (CORBA::Exception& ex) {
00212     DB(0,"EventChannel_i::run_undetached() - failed to "<<action<<
00213        ", CORBA exception: "<<ex._name())
00214   }
00215 
00216   // Thread now exits, and this object is deleted.
00217   return NULL;
00218 }
00219 
00220 
00221 void EventChannel_i::mainLoop()
00222 {
00223   _poaManager->activate();
00224   unsigned long localCyclePeriod_ns=cyclePeriod_ns();
00225   while(_refCount>0 && !_shutdownRequested)
00226   {
00227     //
00228     // TRANSFER PHASE - transfer events from SupplierAdmin to ConsumerAdmin.
00229     _poaManager->hold_requests(CORBA::Boolean(1) /* wait_for_completion */);
00230 
00231     if(_shutdownRequested) break;
00232 
00233     list<CORBA::Any*> events;
00234     _supplierAdmin->collect(events);
00235     _consumerAdmin->send(events);
00236     assert(events.empty());
00237 
00238     _poaManager->activate();
00239     
00240     //
00241     // COMMUNICATION PHASE - talk with clients' suppliers & consumers.
00242     // Note: On Linux the resolution of nanosleep is a huge 10ms.
00243     omni_thread::sleep(0,localCyclePeriod_ns);
00244   }
00245 }
00246 
00247 
00248 void EventChannel_i::_add_ref()
00249 {
00250 #if OMNIEVENTS__DEBUG_REF_COUNTS
00251   DB(20,"EventChannel_i::_add_ref()")
00252 #endif
00253   omni_mutex_lock pause(_lock);
00254   ++_refCount;
00255 }
00256 
00257 
00258 void EventChannel_i::_remove_ref()
00259 {
00260 #if OMNIEVENTS__DEBUG_REF_COUNTS
00261   DB(20,"EventChannel_i::_remove_ref()")
00262 #endif
00263   int myref;
00264   {
00265     omni_mutex_lock pause(_lock);
00266     myref = --_refCount;
00267   }
00268 
00269   if(myref<0)
00270   {
00271     DB(2,"EventChannel has negative ref count! "<<myref)
00272   }
00273   else if(myref==0)
00274   {
00275     DB(15,"EventChannel has zero ref count -- shutdown.")
00276     join(NULL);
00277   }
00278 }
00279 
00280 
00281 void EventChannel_i::output(ostream& os)
00282 {
00283   CORBA::String_var poaName =_poa->the_name();
00284   string name =string("ecf/")+poaName.in();
00285   _properties.output(os,name);
00286   if(_supplierAdmin)
00287      _supplierAdmin->output(os);
00288   if(_consumerAdmin)
00289      _consumerAdmin->output(os);
00290 }
00291 
00292 
00293 void EventChannel_i::setInsName(const string v)
00294 {
00295   Mapper* newMapper =NULL;
00296   try
00297   {
00298 
00299     // If _insName is set, then create a mapper object to allow clients to
00300     // find this object with a `corbaloc' string.
00301     if(!v.empty())
00302     {
00303       // !! Throws when there is already an object named 'v' in the INSPOA.
00304       CORBA::Object_var obj( _this() );
00305       newMapper=new Mapper(v.c_str(),obj.in());
00306     }
00307     // Deactivate the old _mapper object.
00308     if(_mapper)
00309        _mapper->destroy();
00310     _mapper=newMapper;
00311 
00312   }
00313   catch(...)
00314   {
00315     // Can't use an auto_ptr, because MS VC++ 6 has no auto_ptr::reset()
00316     delete newMapper;
00317     throw;
00318   }
00319 }
00320 
00321 
00322 void EventChannel_i::createPoa(const char* channelName)
00323 {
00324   using namespace PortableServer;
00325   POA_ptr p=Orb::inst()._RootPOA.in();
00326 
00327   // POLICIES:
00328   //  Lifespan          =PERSISTENT             // we can persist
00329   //  Assignment        =USER_ID                // write our own oid
00330   //  Uniqueness        =[default] UNIQUE_ID    // one servant per object
00331   //  ImplicitActivation=[default] IMPLICIT_ACTIVATION // auto activation
00332   //  RequestProcessing =[default] USE_ACTIVE_OBJECT_MAP_ONLY
00333   //  ServantRetention  =[default] RETAIN       // stateless POA
00334   //  Thread            =SINGLE_THREAD_MODEL    // keep it simple
00335 
00336   CORBA::PolicyList policies;
00337   policies.length(3);
00338   policies[0]=p->create_lifespan_policy(PERSISTENT);
00339   policies[1]=p->create_id_assignment_policy(USER_ID);
00340   policies[2]=p->create_thread_policy(SINGLE_THREAD_MODEL);
00341 
00342   try // finally
00343   {
00344       try
00345       {
00346         // Create a new POA (and new POAManager) for this channel.
00347         // The POAManager will be used for all of this channel's POAs.
00348         _poa=p->create_POA(channelName,POAManager::_nil(),policies);
00349         _poaManager=_poa->the_POAManager();
00350       }
00351       catch(POA::AdapterAlreadyExists& ex) // create_POA
00352       {
00353         DB(0,"EventChannel_i::createPoa() - POA::AdapterAlreadyExists")
00354         throw;
00355       }
00356       catch(POA::InvalidPolicy& ex) // create_POA
00357       {
00358         DB(0,"EventChannel_i::createPoa() - POA::InvalidPolicy: "<<ex.index)
00359         throw;
00360       }
00361   }
00362   catch(...) // finally
00363   {
00364     // Destroy the policy objects (Not strictly necessary in omniORB)
00365     for(CORBA::ULong i=0; i<policies.length(); ++i)
00366         policies[i]->destroy();
00367     throw;
00368   }
00369 
00370   // Destroy the policy objects (Not strictly necessary in omniORB)
00371   for(CORBA::ULong i=0; i<policies.length(); ++i)
00372       policies[i]->destroy();
00373 }
00374 
00375 
00376 //
00377 // class EventChannelStore
00378 //
00379 
00380 
00381 EventChannelStore::EventChannelStore()
00382 :_channels(),_lock()
00383 {}
00384 
00385 EventChannelStore::~EventChannelStore()
00386 {
00387   // ?? IMPLEMENT ME
00388 }
00389 
00390 void EventChannelStore::insert(EventChannel_i* channel)
00391 {
00392   omni_mutex_lock l(_lock);
00393   bool insertOK =_channels.insert(channel).second;
00394   if(!insertOK)
00395       DB(2,"Attempted to store an EventChannel, when it is already stored.");
00396 }
00397 
00398 void EventChannelStore::erase(EventChannel_i* channel)
00399 {
00400   omni_mutex_lock l(_lock);
00401   set<EventChannel_i*>::iterator pos =_channels.find(channel);
00402   if(pos==_channels.end())
00403       DB(2,"Failed to erase unknown EventChannel.")
00404   else
00405       _channels.erase(pos);
00406 }
00407 
00408 void EventChannelStore::output(ostream &os)
00409 {
00410   omni_mutex_lock l(_lock);
00411   for(set<EventChannel_i*>::iterator i=_channels.begin();
00412       i!=_channels.end();
00413       ++i)
00414   {
00415     (*i)->output(os);
00416   }
00417 }
00418 
00419 
00420 }; // end namespace OmniEvents
00421 

Generated on Fri Aug 26 20:56:14 2005 for OmniEvents by  doxygen 1.4.3-20050530
omniEvents-2_6_2/doc/doxygen/a00157.html0000644000076400001440000004042610303671736020067 0ustar alexusers00000000000000 OmniEvents: EventChannel.h Source File

EventChannel.h

Go to the documentation of this file.
00001 //                            Package   : omniEvents
00002 // EventsChannel.h            Created   : 2003/12/04
00003 //                            Author    : Alex Tingle
00004 //
00005 //    Copyright (C) 2003-2005 Alex Tingle.
00006 //
00007 //    This file is part of the omniEvents application.
00008 //
00009 //    omniEvents is free software; you can redistribute it and/or
00010 //    modify it under the terms of the GNU Lesser General Public
00011 //    License as published by the Free Software Foundation; either
00012 //    version 2.1 of the License, or (at your option) any later version.
00013 //
00014 //    omniEvents is distributed in the hope that it will be useful,
00015 //    but WITHOUT ANY WARRANTY; without even the implied warranty of
00016 //    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00017 //    Lesser General Public License for more details.
00018 //
00019 //    You should have received a copy of the GNU Lesser General Public
00020 //    License along with this library; if not, write to the Free Software
00021 //    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
00022 //
00023 
00024 #ifndef OMNIEVENTS__EVENTCHANNEL_H
00025 #define OMNIEVENTS__EVENTCHANNEL_H
00026 
00027 #ifdef HAVE_CONFIG_H
00028 #  include "config.h"
00029 #endif
00030 
00031 #ifdef HAVE_IOSTREAM
00032 #  include <iostream>
00033 #else
00034 #  include <iostream.h>
00035 #endif
00036 
00037 #include "Servant.h"
00038 #include "PersistNode.h"
00039 #include "omniEvents.hh"
00040 #include "Mapper.h"
00041 #include "defaults.h"
00042 
00043 #include <set>
00044 #include <assert.h>
00045 
00046 #ifdef HAVE_STD_IOSTREAM
00047 using namespace std;
00048 #endif
00049 
00050 namespace OmniEvents {
00051 
00052 class SupplierAdmin_i;
00053 class ConsumerAdmin_i;
00054 class EventChannelStore;
00055 
00111 class EventChannel_i
00112 : public POA_omniEvents::EventChannel,
00113   public Servant,
00114   public omni_thread
00115 {
00116 public: // CORBA interface methods
00117   CosEventChannelAdmin::ConsumerAdmin_ptr for_consumers();
00118   CosEventChannelAdmin::SupplierAdmin_ptr for_suppliers();
00119   void destroy();
00121   CORBA::Boolean is_alive() { return 1; }
00122 
00123 public:
00124   EventChannel_i(EventChannelStore* store=NULL);
00125 
00127   ~EventChannel_i();
00128 
00132   void activate(const char* channelName, const PersistNode* node =NULL);
00133 
00135   void start(){DB(0,"It is no longer necessary to call EventChannel::start().")}
00136 
00141   void* run_undetached(void*);
00142 
00159   void mainLoop();
00160 
00161   void _add_ref();
00162   void _remove_ref(); 
00163   
00164   void output(ostream& os);
00165 
00166   //
00167   // Accessors
00168   ConsumerAdmin_i& consumerAdmin() const
00169     {assert(_consumerAdmin!=NULL);return *_consumerAdmin;}
00170   const PersistNode& properties() const
00171     {return _properties;}
00172 
00173   //
00174   // Values stored in _properties member.
00175   CORBA::ULong  pullRetryPeriod_ms() const
00176     {return _properties.attrLong("PullRetryPeriod_ms",PULL_RETRY_PERIOD_MS);}
00177   CORBA::ULong  maxQueueLength() const
00178     {return _properties.attrLong("MaxQueueLength",MAX_QUEUE_LENGTH);}
00179   CORBA::ULong  maxNumProxies() const
00180     {return _properties.attrLong("MaxNumProxies",MAX_NUM_PROXIES);}
00181   unsigned long cyclePeriod_ns() const
00182     {return _properties.attrLong("CyclePeriod_ns",CYCLE_PERIOD_NS);}
00183   
00184 
00185 private:
00187   void setInsName(const string v);
00188 
00193   void createPoa(const char* channelName);
00194   
00195 private:
00196   EventChannelStore*             _eventChannelStore;
00197   SupplierAdmin_i*               _supplierAdmin;
00198   ConsumerAdmin_i*               _consumerAdmin;
00199   PortableServer::POAManager_var _poaManager;
00200   bool                           _shutdownRequested;
00201   PersistNode                    _properties;
00202   Mapper*                        _mapper;
00203   omni_mutex                     _lock; //< Protects _refCount
00204   int                            _refCount;
00205 };
00206 
00207 
00209 class EventChannelStore
00210 {
00211 public:
00212   EventChannelStore();
00213   ~EventChannelStore();
00214   void insert(EventChannel_i* channel);
00215   void erase(EventChannel_i* channel);
00216   void output(ostream &os);
00217 private:
00218   set<EventChannel_i*> _channels;
00219   omni_mutex           _lock;
00220 };
00221 
00222 }; // end namespace OmniEvents
00223 
00224 #endif // OMNIEVENTS__EVENTCHANNEL_H

Generated on Fri Aug 26 20:56:14 2005 for OmniEvents by  doxygen 1.4.3-20050530
omniEvents-2_6_2/doc/doxygen/a00158.html0000644000076400001440000007376510303671736020104 0ustar alexusers00000000000000 OmniEvents: EventChannelFactory.cc Source File

EventChannelFactory.cc

Go to the documentation of this file.
00001 // -*- Mode: C++; -*-
00002 //                            Package   : omniEvents
00003 // EventChannelFactory_i.cc   Created   : 1/4/98
00004 //                            Author    : Paul Nader (pwn)
00005 //
00006 //    Copyright (C) 1998 Paul Nader, 2003-2004 Alex Tingle.
00007 //
00008 //    This file is part of the omniEvents application.
00009 //
00010 //    omniEvents is free software; you can redistribute it and/or
00011 //    modify it under the terms of the GNU Lesser General Public
00012 //    License as published by the Free Software Foundation; either
00013 //    version 2.1 of the License, or (at your option) any later version.
00014 //
00015 //    omniEvents is distributed in the hope that it will be useful,
00016 //    but WITHOUT ANY WARRANTY; without even the implied warranty of
00017 //    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00018 //    Lesser General Public License for more details.
00019 //
00020 //    You should have received a copy of the GNU Lesser General Public
00021 //    License along with this library; if not, write to the Free Software
00022 //    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
00023 //
00024 // Description:
00025 //      Implementation of the COSS Event Services Event Channel Factory
00026 //      
00027 
00028 #include "EventChannelFactory.h"
00029 
00030 #include "Orb.h"
00031 #include "EventChannel.h"
00032 #include "PersistNode.h"
00033 
00034 #include <memory>
00035 
00036 #ifdef HAVE_OMNIORB4
00037 #  define STR_MATCH(s1,s2) omni::strMatch((s1),(s2))
00038 #else
00039 #  define STR_MATCH(s1,s2) (0==::strcmp((s1),(s2)))
00040 #endif
00041 
00042 namespace OmniEvents {
00043 
00044 //------------------------------------------------------------------------
00045 //           Event Channel Factory Interface Implementation
00046 //------------------------------------------------------------------------
00047 EventChannelFactory_i::EventChannelFactory_i(const PersistNode& node)
00048 : Servant(Orb::inst()._omniINSPOA.in()),
00049   _port(node.attrLong("port",11169)),
00050   _endPointNoListen(node.attrString("endPointNoListen")),
00051   _channels()
00052 {
00053   // Create event channels
00054   for(map<string,PersistNode*>::const_iterator i=node._child.begin();
00055       i!=node._child.end();
00056       ++i)
00057   {
00058     EventChannel_i* channel =new EventChannel_i(&_channels);
00059     channel->activate(
00060       i->first.c_str(), // channelName
00061       i->second         // node
00062     );
00063   }
00064   activateObjectWithId("omniEvents");
00065 }
00066 
00067 
00068 EventChannelFactory_i::~EventChannelFactory_i()
00069 {
00070   DB(20, "EventChannelFactory_i::~EventChannelFactory_i()");
00071 }
00072 
00073 
00074 CORBA::Boolean
00075 EventChannelFactory_i::supports(const CosLifeCycle::Key &k)
00076 {
00077   if((k.length() == 1) &&
00078      (strcmp(k[0].id, "EventChannel") == 0) &&
00079      (strcmp(k[0].kind, "object interface") == 0))
00080     return 1;
00081   else
00082     return 0;
00083 }
00084 
00085 
00086 CORBA::Object_ptr
00087 EventChannelFactory_i::create_object(
00088   const CosLifeCycle::Key& k,
00089   const CosLifeCycle::Criteria& criteria
00090 )
00091 {
00092   // Check the key
00093   if(!this->supports(k))
00094       throw CosLifeCycle::NoFactory(k);
00095 
00096   // Process criteria !! MAY THROW !!
00097   auto_ptr<PersistNode> criteriaNode( parseCriteria(criteria) );
00098 
00099   CORBA::String_var channelId;
00100   if(criteriaNode->hasAttr("InsName"))
00101       channelId=criteriaNode->attrString("InsName").c_str();
00102   else
00103       channelId=newUniqueId();
00104 
00105   // Create the channel.
00106   // We place it into an auto_ptr - this will automatically clean up if anything
00107   // goes wrong.
00108   auto_ptr<EventChannel_i> channel( new EventChannel_i(&_channels) );
00109   try
00110   {
00111     channel->activate(channelId.in(),criteriaNode.get()); // !! MAY THROW !!
00112   }
00113   catch(PortableServer::POA::ObjectAlreadyActive& ex)
00114   {
00115     throw CosLifeCycle::InvalidCriteria(criteria); //??
00116   }
00117   catch(PortableServer::POA::AdapterAlreadyExists& ex) // create_POA
00118   {
00119     throw CosLifeCycle::InvalidCriteria(criteria); //??
00120   }
00121 
00122   // We release() the pointer, as the thread will delete it when it stops.
00123   return channel.release()->_this();
00124 }
00125 
00126 
00127 CosEventChannelAdmin::EventChannel_ptr
00128 EventChannelFactory_i::create_channel(const char* channel_name)
00129 {
00130   CosEventChannelAdmin::EventChannel_var result;
00131 
00132   CosLifeCycle::Key key;
00133   key.length(1);
00134   key[0].id  ="EventChannel";
00135   key[0].kind="object interface";
00136 
00137   CosLifeCycle::Criteria criteria;
00138   criteria.length(1);
00139   criteria[0].name    = "InsName";
00140   criteria[0].value <<= channel_name;
00141 
00142   try
00143   {
00144     CORBA::Object_var obj=create_object(key,criteria);
00145     result=CosEventChannelAdmin::EventChannel::_narrow(obj.in());
00146   }
00147   catch(CosLifeCycle::InvalidCriteria& ex)
00148   {
00149     if(ex.invalid_criteria.length()>0 &&
00150        STR_MATCH(ex.invalid_criteria[0].name,"InsName"))
00151     {
00152       throw event::NameAlreadyUsed();
00153     }
00154     else
00155     {
00156       DB(10,"Failed to create_channel."
00157         " Converting InvalidCriteria exception into UNKNOWN.")
00158       throw CORBA::UNKNOWN();
00159     }
00160   }
00161   catch(CORBA::UserException& ex)
00162   {
00163     DB(2,"Failed to create_channel. Converting UserException"
00164       IFELSE_OMNIORB4(" '"<<ex._name()<<"'",<<) " into UNKNOWN.")
00165     throw CORBA::UNKNOWN();
00166   }
00167   return result._retn();
00168 }
00169 
00170 
00171 CosEventChannelAdmin::EventChannel_ptr
00172 EventChannelFactory_i::join_channel(const char* channel_name)
00173 {
00174   using namespace PortableServer;
00175   CosEventChannelAdmin::EventChannel_var result;
00176   try
00177   {
00178     ObjectId_var oid =PortableServer::string_to_ObjectId(channel_name);
00179     CORBA::Object_var obj =Orb::inst()._omniINSPOA->id_to_reference(oid.in());
00180     result=CosEventChannelAdmin::EventChannel::_narrow(obj.in());
00181   }
00182   catch(POA::ObjectNotActive&)
00183   {
00184     DB(10,"Failed to join_channel. Object not active.")
00185     throw event::EventChannelNotFound();
00186   }
00187   catch(CORBA::UserException& ex)
00188   {
00189     DB(2,"Failed to join_channel. Converting UserException"
00190       IFELSE_OMNIORB4(" '"<<ex._name()<<"'",<<) " into UNKNOWN.")
00191     throw CORBA::UNKNOWN();
00192   }
00193   return result._retn();
00194 }
00195 
00196 
00197 PersistNode* EventChannelFactory_i::parseCriteria(
00198   const CosLifeCycle::Criteria &criteria
00199 ) const
00200 {
00201   using namespace CosLifeCycle;
00202   auto_ptr<PersistNode> result( new PersistNode() );
00203 
00204   for(CORBA::ULong i=0; i<criteria.length(); i++)
00205   {
00206     if(strcmp(criteria[i].name, "PullRetryPeriod_ms") == 0)
00207     {
00208       CORBA::ULong pullRetryPeriod_ms;
00209       if(! (criteria[i].value >>= pullRetryPeriod_ms))
00210           throw InvalidCriteria(extract("PullRetryPeriod_ms",criteria));
00211       if(pullRetryPeriod_ms <= 0)
00212           throw CannotMeetCriteria(extract("PullRetryPeriod_ms",criteria));
00213       result->addattr("PullRetryPeriod_ms",pullRetryPeriod_ms);
00214     }
00215     else if(strcmp(criteria[i].name, "PullRetryPeriod") == 0)
00216     {
00217       // This criterion has been deprecated in favour of PullRetryPeriod_ms.
00218       // Don't overwrite any value provided by the latter.
00219       if(!result->hasAttr("PullRetryPeriod_ms"))
00220       {
00221         CORBA::ULong pullRetryPeriod;
00222         if(! (criteria[i].value >>= pullRetryPeriod))
00223             throw InvalidCriteria(extract("PullRetryPeriod",criteria));
00224         if(pullRetryPeriod <= 0)
00225             throw CannotMeetCriteria(extract("PullRetryPeriod",criteria));
00226         result->addattr("PullRetryPeriod_ms",pullRetryPeriod*1000);
00227       }
00228     }
00229     else if(strcmp(criteria[i].name, "MaxQueueLength") == 0)
00230     {
00231       CORBA::ULong maxQueueLength;
00232       if(! (criteria[i].value >>= maxQueueLength))
00233           throw InvalidCriteria(extract("MaxQueueLength",criteria));
00234       if(maxQueueLength > 0)
00235           result->addattr("MaxQueueLength",maxQueueLength);
00236       else
00237           DB(10,"Ignoring CosLifeCycle criterion: MaxQueueLength=0");
00238     }
00239     else if(strcmp(criteria[i].name, "MaxNumProxies") == 0)
00240     {
00241       CORBA::ULong maxNumProxies;
00242       if(! (criteria[i].value >>= maxNumProxies))
00243           throw InvalidCriteria(extract("MaxNumProxies",criteria));
00244       if(maxNumProxies > 0)
00245           result->addattr("MaxNumProxies",maxNumProxies);
00246       else
00247           DB(10,"Ignoring CosLifeCycle criterion: MaxNumProxies=0");
00248     }
00249     else if(strcmp(criteria[i].name, "CyclePeriod_ns") == 0)
00250     {
00251       CORBA::ULong cyclePeriod_ns;
00252       if(! (criteria[i].value >>= cyclePeriod_ns))
00253           throw InvalidCriteria(extract("CyclePeriod_ns",criteria));
00254       if(cyclePeriod_ns > 0)
00255           result->addattr("CyclePeriod_ns",cyclePeriod_ns);
00256       else
00257           DB(10,"Ignoring CosLifeCycle criterion: CyclePeriod_ns=0");
00258     }
00259     else if(strcmp(criteria[i].name, "InsName") == 0)
00260     {
00261       const char* insName;
00262       if(! (criteria[i].value >>= insName))
00263           throw InvalidCriteria(extract("InsName",criteria));
00264       if(insName && insName[0])
00265           result->addattr(string("InsName=")+insName);
00266       else
00267           DB(10,"Ignoring empty CosLifeCycle criterion: InsName");
00268     }
00269     else if(strcmp(criteria[i].name, "FilterId") == 0)
00270     {
00271       const char* repositoryId;
00272       if(! (criteria[i].value >>= repositoryId))
00273           throw InvalidCriteria(extract("FilterId",criteria));
00274       if(repositoryId && repositoryId[0])
00275           result->addattr(string("FilterId=")+repositoryId);
00276       else
00277           DB(10,"Ignoring empty CosLifeCycle criterion: FilterId");
00278     }
00279     else if(strcmp(criteria[i].name, "MaxEventsPerConsumer") == 0)
00280     {
00281       DB(10,"Ignoring obsolete CosLifeCycle criterion: MaxEventsPerConsumer");
00282     }
00283     else
00284     {
00285       DB(10,"Ignoring unknown CosLifeCycle criterion: "<<criteria[i].name);
00286     }
00287   } // end loop for(i)
00288   
00289   return result.release();
00290 }
00291 
00292 
00293 CosLifeCycle::Criteria EventChannelFactory_i::extract(
00294   const char*                   name,
00295   const CosLifeCycle::Criteria& from
00296 ) const
00297 {
00298   CosLifeCycle::Criteria result;
00299   result.length(0);
00300   for(CORBA::ULong i=0; i<from.length(); i++)
00301   {
00302     if(strcmp(from[i].name,name) == 0)
00303     {
00304       result.length(1);
00305       result[0]=from[i];
00306       break;
00307     }
00308   }
00309   return result;
00310 }
00311 
00312 
00313 void
00314 EventChannelFactory_i::output(ostream &os)
00315 {
00316   os<<"ecf port="<<_port;
00317   if(!_endPointNoListen.empty())
00318       os<<" endPointNoListen="<<_endPointNoListen;
00319   os<<" ;;\n";
00320   _channels.output(os);
00321 }
00322 
00323 
00324 }; // end namespace OmniEvents

Generated on Fri Aug 26 20:56:14 2005 for OmniEvents by  doxygen 1.4.3-20050530
omniEvents-2_6_2/doc/doxygen/a00159.html0000644000076400001440000002406410303671736020071 0ustar alexusers00000000000000 OmniEvents: EventChannelFactory.h Source File

EventChannelFactory.h

Go to the documentation of this file.
00001 // -*- Mode: C++; -*-
00002 //                            Package   : omniEvents
00003 // EventChannelFactory_i.h    Created   : 1/4/98
00004 //                            Author    : Paul Nader (pwn)
00005 //
00006 //    Copyright (C) 1998 Paul Nader, 2004-2005 Alex Tingle.
00007 //
00008 //    This file is part of the omniEvents application.
00009 //
00010 //    omniEvents is free software; you can redistribute it and/or
00011 //    modify it under the terms of the GNU Lesser General Public
00012 //    License as published by the Free Software Foundation; either
00013 //    version 2.1 of the License, or (at your option) any later version.
00014 //
00015 //    omniEvents is distributed in the hope that it will be useful,
00016 //    but WITHOUT ANY WARRANTY; without even the implied warranty of
00017 //    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00018 //    Lesser General Public License for more details.
00019 //
00020 //    You should have received a copy of the GNU Lesser General Public
00021 //    License along with this library; if not, write to the Free Software
00022 //    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
00023 //
00024 
00025 #ifndef OMNIEVENTS_EVENTCHANNELFACTORY_H
00026 #define OMNIEVENTS_EVENTCHANNELFACTORY_H
00027 
00028 #ifdef HAVE_CONFIG_H
00029 #  include "config.h"
00030 #endif
00031 
00032 #ifdef HAVE_IOSTREAM
00033 #  include <iostream>
00034 #else
00035 #  include <iostream.h>
00036 #endif
00037 
00038 #include "omniEvents.hh"
00039 #include "Servant.h"
00040 #include "EventChannel.h"
00041 
00042 #ifdef HAVE_STD_STL
00043 using namespace std;
00044 #endif
00045 
00046 namespace OmniEvents {
00047 
00048 class PersistNode;
00049 
00050 // Event Channel Factory
00051 
00052 class EventChannelFactory_i :
00053   public virtual POA_omniEvents::EventChannelFactory,
00054   public PortableServer::RefCountServantBase,
00055   public Servant
00056 {
00057 public: // CORBA METHODS
00063   CORBA::Boolean supports(const CosLifeCycle::Key& k);
00064   CORBA::Object_ptr create_object(
00065     const CosLifeCycle::Key &k,
00066     const CosLifeCycle::Criteria &the_criteria
00067   );
00068   
00070   CORBA::Boolean is_alive() { return 1; }
00071   
00073   CosEventChannelAdmin::EventChannel_ptr create_channel(
00074     const char* channel_name
00075   );
00076 
00078   CosEventChannelAdmin::EventChannel_ptr join_channel(
00079     const char* channel_name
00080   );
00081    
00082 
00083 public:
00085   EventChannelFactory_i(const PersistNode& node);
00086   virtual ~EventChannelFactory_i();
00087 
00091   PersistNode* parseCriteria(const CosLifeCycle::Criteria& criteria) const;
00092   
00096   CosLifeCycle::Criteria extract(
00097     const char*                   name,
00098     const CosLifeCycle::Criteria& from
00099   ) const;
00100 
00101   void output(ostream& os);
00102 
00103 private:
00107   unsigned int      _port;
00108 
00112   string            _endPointNoListen;
00113 
00114   EventChannelStore _channels;
00115 };
00116 
00117 }; // namespace OmniEvents
00118 
00119 #endif // OMNIEVENTS_EVENTCHANNELFACTORY_H

Generated on Fri Aug 26 20:56:14 2005 for OmniEvents by  doxygen 1.4.3-20050530
omniEvents-2_6_2/doc/doxygen/a00160.html0000644000076400001440000004326210303671736020062 0ustar alexusers00000000000000 OmniEvents: eventf.cc Source File

eventf.cc

Go to the documentation of this file.
00001 //                            Package   : omniEvents
00002 // eventf.cc                  Created   : 2004-05-30
00003 //                            Author    : Alex Tingle
00004 //
00005 //    Copyright (C) 2004 Alex Tingle
00006 //
00007 //    This file is part of the omniEvents application.
00008 //
00009 //    omniEvents is free software; you can redistribute it and/or
00010 //    modify it under the terms of the GNU Lesser General Public
00011 //    License as published by the Free Software Foundation; either
00012 //    version 2.1 of the License, or (at your option) any later version.
00013 //
00014 //    omniEvents is distributed in the hope that it will be useful,
00015 //    but WITHOUT ANY WARRANTY; without even the implied warranty of
00016 //    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00017 //    Lesser General Public License for more details.
00018 //
00019 //    You should have received a copy of the GNU Lesser General Public
00020 //    License along with this library; if not, write to the Free Software
00021 //    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
00022 //
00023 // Description:
00024 //    Destroys the named EventChannel.
00025 //      
00026 
00027 #ifdef HAVE_CONFIG_H
00028 #  include "config.h"
00029 #endif
00030 
00031 #ifdef HAVE_GETOPT
00032 #  include <unistd.h>
00033 extern char* optarg;
00034 extern int optind;
00035 #else
00036 #  include "getopt.h"
00037 #endif
00038 
00039 #ifdef HAVE_STDLIB_H
00040 #  include <stdlib.h> // exit()
00041 #endif
00042 
00043 #ifdef HAVE_IOSTREAM
00044 #  include <iostream>
00045 #else
00046 #  include <iostream.h>
00047 #endif
00048 
00049 #ifdef HAVE_STD_IOSTREAM
00050 using namespace std;
00051 #endif
00052 
00053 #include "CosEventChannelAdmin.hh"
00054 
00055 static void usage(int argc, char **argv);
00056 static CosEventChannelAdmin::EventChannel_ptr getChannel(const char* sior);
00057 
00058 CORBA::ORB_ptr orb;
00059 
00060 int
00061 main(int argc, char **argv)
00062 {
00063   int result =1;
00064 
00065   //
00066   // Start orb.
00067 #if defined(HAVE_OMNIORB4)
00068   orb=CORBA::ORB_init(argc,argv,"omniORB4");
00069 #else
00070   orb=CORBA::ORB_init(argc,argv,"omniORB3");
00071 #endif
00072 
00073   // Process Options
00074   int c;
00075 
00076   while((c = getopt(argc,argv,"h")) != EOF)
00077   {
00078     switch (c)
00079     {
00080       case 'h': usage(argc,argv);
00081                 exit(0);
00082 
00083       default : usage(argc,argv);
00084                 exit(-1);
00085     }
00086   }
00087 
00088   if(optind!=argc-2)
00089   {
00090     usage(argc,argv);
00091     exit(-1);
00092   }
00093 
00094   //
00095   // Use one big try...catch block.
00096   // 'action' variable keeps track of what we're doing.
00097   const char* action ="start";
00098   try
00099   {
00100     using namespace CosEventChannelAdmin;
00101 
00102     action="convert URI into reference to source channel";
00103     EventChannel_var from_channel =getChannel(argv[optind]);
00104 
00105     action="convert URI into reference to destination channel";
00106     EventChannel_var to_channel   =getChannel(argv[optind+1]);
00107 
00108     action="obtain ConsumerAdmin";
00109     ConsumerAdmin_var cadmin =from_channel->for_consumers();
00110 
00111     action="obtain ProxyPushSupplier";
00112     ProxyPushSupplier_var supplier =cadmin->obtain_push_supplier();
00113 
00114     action="obtain SupplierAdmin";
00115     SupplierAdmin_var sadmin =to_channel->for_suppliers();
00116 
00117     action="obtain ProxyPushConsumer";
00118     ProxyPushConsumer_var consumer =sadmin->obtain_push_consumer();
00119 
00120     action="connect PushConsumer";
00121     consumer->connect_push_supplier(supplier.in());
00122 
00123     action="connect PushSupplier";
00124     supplier->connect_push_consumer(consumer.in());
00125 
00126     //
00127     // Clean up nicely.
00128     action="destroy orb";
00129     orb->destroy();
00130 
00131     //
00132     // If we get here, then everything has worked OK.
00133     result=0;
00134 
00135   }
00136   catch(CORBA::TRANSIENT& ex) { // _narrow()
00137      cerr<<"Failed to "<<action<<". TRANSIENT"<<endl;
00138   }
00139   catch(CORBA::OBJECT_NOT_EXIST& ex) { // _narrow()
00140      cerr<<"Failed to "<<action<<". OBJECT_NOT_EXIST"<<endl;
00141   }
00142   catch(CORBA::SystemException& ex) {
00143      cerr<<"Failed to "<<action<<".";
00144 #if defined(HAVE_OMNIORB4)
00145      cerr<<" "<<ex._name();
00146      if(ex.NP_minorString())
00147          cerr<<" ("<<ex.NP_minorString()<<")";
00148 #endif
00149      cerr<<endl;
00150   }
00151   catch(CORBA::Exception& ex) {
00152      cerr<<"Failed to "<<action<<"."
00153 #if defined(HAVE_OMNIORB4)
00154        " "<<ex._name()
00155 #endif
00156        <<endl;
00157   }
00158 
00159   return result;
00160 }
00161 
00162 
00163 static void
00164 usage(int argc, char **argv)
00165 {
00166   cerr<<
00167 "\nConnect (federate) two event channels.\n"
00168 "syntax: "<<(argc?argv[0]:"eventf")<<" OPTIONS [FROM_CHANNEL] [TO_CHANNEL]\n"
00169 "\n"
00170 "FROM/TO_CHANNEL: The event channels must be specified as a URI.\n"
00171 " This may be an IOR, or a corbaloc::: or corbaname::: URI.\n"
00172 "\n"
00173 "OPTIONS:\n"
00174 " -h  display this help text\n" << endl;
00175 }
00176 
00177 
00178 //
00179 // Obtain object reference to EventChannel
00180 static CosEventChannelAdmin::EventChannel_ptr
00181 getChannel(const char* sior)
00182 {
00183   // convert URI from command line into object reference";
00184   CORBA::Object_var obj =orb->string_to_object(sior);
00185 
00186   // narrow object reference to event channel";
00187   CosEventChannelAdmin::EventChannel_var channel =
00188     CosEventChannelAdmin::EventChannel::_narrow(obj);
00189   if(CORBA::is_nil(channel))
00190       throw CORBA::OBJECT_NOT_EXIST();
00191   
00192   return channel._retn();
00193 }

Generated on Fri Aug 26 20:56:14 2005 for OmniEvents by  doxygen 1.4.3-20050530
omniEvents-2_6_2/doc/doxygen/a00161.html0000644000076400001440000002211410303671736020054 0ustar alexusers00000000000000 OmniEvents: EventQueue.cc Source File

EventQueue.cc

Go to the documentation of this file.
00001 //                            Package   : omniEvents
00002 // EventQueue.cc              Created   : 2003/12/04
00003 //                            Author    : Alex Tingle
00004 //
00005 //    Copyright (C) 2003 Alex Tingle.
00006 //
00007 //    This file is part of the omniEvents application.
00008 //
00009 //    omniEvents is free software; you can redistribute it and/or
00010 //    modify it under the terms of the GNU Lesser General Public
00011 //    License as published by the Free Software Foundation; either
00012 //    version 2.1 of the License, or (at your option) any later version.
00013 //
00014 //    omniEvents is distributed in the hope that it will be useful,
00015 //    but WITHOUT ANY WARRANTY; without even the implied warranty of
00016 //    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00017 //    Lesser General Public License for more details.
00018 //
00019 //    You should have received a copy of the GNU Lesser General Public
00020 //    License along with this library; if not, write to the Free Software
00021 //    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
00022 //
00023 
00024 #include "EventQueue.h"
00025 #include <string.h> // memset
00026 #include <assert.h>
00027 
00028 #ifdef HAVE_CONFIG_H
00029 #  include "config.h"
00030 #endif
00031 
00032 #ifdef HAVE_OMNIORB3
00033 #  include <omniORB3/CORBA.h>
00034 #endif
00035 
00036 #ifdef HAVE_OMNIORB4
00037 #  include <omniORB4/CORBA.h>
00038 #endif
00039 
00040 namespace OmniEvents {
00041 
00042 
00043 EventQueue::EventQueue(long size)
00044 : _next(0),
00045   _size(size+1), // Always need an `empty' entry at the head of the buffer.
00046   _queue(new CORBA::Any*[_size]),
00047   _filter(NULL)
00048 {
00049   DB(5,"MaxQueueLength="<<size)
00050   assert(_size>1);
00051   // Explicitly clear the queue with memset, because MS VC++ doesn't like
00052   // it as an array initializer.
00053   memset(_queue,0,_size*sizeof(CORBA::Any*));
00054 }
00055 
00056 
00057 EventQueue::~EventQueue()
00058 {
00059   for(long i=0; i<_size; ++i)
00060       delete _queue[i];
00061   delete[] _queue;
00062 }
00063 
00064 
00065 //
00066 //  EventQueue::Reader
00067 //
00068 
00069 
00070 EventQueue::Reader::Reader(EventQueue& eventQueue)
00071 : _eventQueue(eventQueue),
00072   _next(eventQueue._next)
00073 {
00074   // pass
00075 }
00076 
00077 
00078 bool EventQueue::Reader::moreEvents() const
00079 {
00080   return( _next!=_eventQueue._next );
00081 }
00082 
00083 
00084 CORBA::Any* EventQueue::Reader::nextEvent()
00085 {
00086   CORBA::Any* result =_eventQueue._queue[_next];
00087   _next=(_next+1)%_eventQueue._size;
00088   return result;
00089 }
00090 
00091 
00092 }; // end namespace OmniEvents

Generated on Fri Aug 26 20:56:14 2005 for OmniEvents by  doxygen 1.4.3-20050530
omniEvents-2_6_2/doc/doxygen/a00162.html0000644000076400001440000002257610303671736020071 0ustar alexusers00000000000000 OmniEvents: EventQueue.h Source File

EventQueue.h

Go to the documentation of this file.
00001 //                            Package   : omniEvents
00002 // EventQueue.h               Created   : 2003/12/04
00003 //                            Author    : Alex Tingle
00004 //
00005 //    Copyright (C) 2003 Alex Tingle.
00006 //
00007 //    This file is part of the omniEvents application.
00008 //
00009 //    omniEvents is free software; you can redistribute it and/or
00010 //    modify it under the terms of the GNU Lesser General Public
00011 //    License as published by the Free Software Foundation; either
00012 //    version 2.1 of the License, or (at your option) any later version.
00013 //
00014 //    omniEvents is distributed in the hope that it will be useful,
00015 //    but WITHOUT ANY WARRANTY; without even the implied warranty of
00016 //    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00017 //    Lesser General Public License for more details.
00018 //
00019 //    You should have received a copy of the GNU Lesser General Public
00020 //    License along with this library; if not, write to the Free Software
00021 //    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
00022 //
00023 
00024 #ifndef OMNIEVENTS__EVENTQUEUE_H
00025 #define OMNIEVENTS__EVENTQUEUE_H
00026 
00027 #ifdef HAVE_CONFIG_H
00028 #  include "config.h"
00029 #endif
00030 
00031 #include "Orb.h"
00032 #include "Filter.h"
00033 
00034 #include <memory>
00035 
00036 #ifdef HAVE_STD_STL
00037 using namespace std;
00038 #endif
00039 
00040 
00041 namespace OmniEvents {
00042 
00043 
00056 class EventQueue
00057 {
00058 public:
00059   class Reader
00060   {
00061   public:
00062     Reader(EventQueue& eventQueue);
00063     bool moreEvents() const;
00064     CORBA::Any* nextEvent();
00065   private:
00066     EventQueue& _eventQueue;
00067     int         _next; 
00068   };
00069 
00070   EventQueue(long size=1023);
00071   virtual ~EventQueue();
00072   void setFilter(Filter* filter)
00073   {
00074     auto_ptr<Filter> f(filter);
00075     _filter=f; // MS VC++ 6 has no auto_ptr::reset()
00076   }
00077 
00078   inline void append(CORBA::Any* event)
00079   {
00080     if(!_filter.get() || _filter->keep(*event))
00081     {
00082       delete _queue[_next];
00083       _queue[_next]=event;
00084       _next=(_next+1)%_size;
00085     }
00086   }
00087 
00088 private:
00090   long             _next;
00091   long             _size;
00092   CORBA::Any**     _queue;
00093   auto_ptr<Filter> _filter;
00094 
00095   friend class Reader;
00096 };
00097 
00098 }; // end namespace OmniEvents
00099 
00100 #endif // OMNIEVENTS__EVENTQUEUE_H

Generated on Fri Aug 26 20:56:14 2005 for OmniEvents by  doxygen 1.4.3-20050530
omniEvents-2_6_2/doc/doxygen/a00163.html0000644000076400001440000012436410303671736020070 0ustar alexusers00000000000000 OmniEvents: events.cc Source File

events.cc

Go to the documentation of this file.
00001 // -*- Mode: C++; -*-
00002 //                            Package   : omniEvents
00003 //   events.cc                Created   : 2004/05/02
00004 //                            Author    : Alex Tingle
00005 //
00006 //    Copyright (C) 2004 Alex Tingle
00007 //
00008 //    This file is part of the omniEvents application.
00009 //
00010 //    omniEvents is free software; you can redistribute it and/or
00011 //    modify it under the terms of the GNU Lesser General Public
00012 //    License as published by the Free Software Foundation; either
00013 //    version 2.1 of the License, or (at your option) any later version.
00014 //
00015 //    omniEvents is distributed in the hope that it will be useful,
00016 //    but WITHOUT ANY WARRANTY; without even the implied warranty of
00017 //    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00018 //    Lesser General Public License for more details.
00019 //
00020 //    You should have received a copy of the GNU Lesser General Public
00021 //    License along with this library; if not, write to the Free Software
00022 //    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
00023 //
00024 // Description:
00025 //    Push Model streamer.
00026 //      
00027 
00028 #ifdef HAVE_CONFIG_H
00029 #  include "config.h"
00030 #endif
00031 
00032 #ifdef HAVE_GETOPT
00033 #  include <unistd.h>
00034 extern char* optarg;
00035 extern int optind;
00036 #else
00037 #  include "getopt.h"
00038 #endif
00039 
00040 #ifdef HAVE_IOSTREAM
00041 #  include <iostream>
00042 #else
00043 #  include <iostream.h>
00044 #endif
00045 
00046 #ifdef HAVE_STD_IOSTREAM
00047 using namespace std;
00048 #endif
00049 
00050 #ifdef HAVE_STDLIB_H
00051 #  include <stdlib.h>
00052 #endif
00053 
00054 #include <stdio.h>
00055 
00056 #if defined HAVE_UNISTD_H
00057 #  include <unistd.h> // read(), write()
00058 #elif defined __WIN32__
00059 #  include <io.h>
00060 #  define write(fd,buf,count) _write(fd,buf,count)
00061 #  define read(fd,buf,count)  _read(fd,buf,count)
00062 #  define ssize_t int
00063 #endif
00064 
00065 #ifdef HAVE_SIGNAL_H
00066 #  include <signal.h>
00067 #endif
00068 
00069 #include "CosEventComm.hh"
00070 #include "CosEventChannelAdmin.hh"
00071 #include "naming.h"
00072 
00073 #ifndef STDIN_FILENO
00074 # define STDIN_FILENO 0
00075 # define STDOUT_FILENO 1
00076 #endif
00077 
00078 CORBA::ORB_ptr orb;
00079 
00080 static void usage(int argc, char **argv);
00081 
00082 //
00083 // Time
00084 //
00085 
00086 #define BILLION 1000000000
00087 
00088 class Time;
00089 class Time
00090 {
00091 private:
00092   CORBA::ULong _sec;
00093   CORBA::ULong _nano;
00094 public:
00095   static Time current()
00096   {
00097     Time result;
00098     unsigned long sec,nano;
00099     omni_thread::get_time(&sec,&nano);
00100     result._sec=sec;
00101     result._nano=nano;
00102     return result;
00103   }
00104   static void sleepUntil(const Time& futureTime)
00105   {
00106     Time now =current();
00107     if(now<futureTime)
00108     {
00109       Time offset=futureTime-now;
00110       omni_thread::sleep(offset._sec,offset._nano);
00111     }
00112   }
00113   //
00114   Time():_sec(0),_nano(0){}
00115   Time(CORBA::ULong sec,CORBA::ULong nano):_sec(sec),_nano(nano){}
00116   Time(const Time& right):_sec(right._sec),_nano(right._nano){}
00117   Time& operator=(const Time& right)
00118   {
00119     if(this!=&right)
00120     {
00121       _sec =right._sec;
00122       _nano=right._nano;
00123     }
00124     return *this;
00125   }
00126   bool operator<(const Time& right) const
00127   {
00128     if(_sec==right._sec)
00129         return _nano<right._nano;
00130     else
00131         return _sec<right._sec;
00132   }
00133   Time& operator+=(const Time& right)
00134   {
00135     _sec +=right._sec;
00136     _nano+=right._nano;
00137     if(_nano>BILLION)
00138     {
00139       _nano=_nano%BILLION;
00140       ++_sec;
00141     }
00142     return *this;
00143   }
00144   Time operator+(const Time& right) const
00145   {
00146     Time result(*this);
00147     result+=right;
00148     return result;
00149   }
00150   Time& operator-=(const Time& right)
00151   {
00152     if(operator<(right))
00153     {
00154       cerr<<"Negative time!"<<endl;
00155       throw CORBA::BAD_PARAM();
00156     }
00157     _sec-=right._sec;
00158     if(_nano<right._nano)
00159     {
00160       _nano+=BILLION;
00161       --_sec;
00162     }
00163     _nano-=right._nano;
00164     return *this;
00165   }
00166   Time operator-(const Time& right) const
00167   {
00168     Time result(*this);
00169     result-=right;
00170     return result;
00171   }
00172   void operator>>=(cdrMemoryStream& s) const
00173   {
00174     _sec>>=s;
00175     _nano>>=s;
00176   }
00177   void operator<<=(cdrMemoryStream& s)
00178   {
00179     _sec<<=s;
00180     _nano<<=s;
00181   }
00182   bool is_nil() const { return(_sec==0 && _nano==0); }
00183 }; // end class Time
00184 
00185 
00186 //
00187 // Consumer_i
00188 //
00189 
00190 class Consumer_i : virtual public POA_CosEventComm::PushConsumer
00191 {
00192 public:
00193   Consumer_i(long disconnect=0): _memstream() {}
00194   void push(const CORBA::Any& data)
00195   {
00196     // Record the event timestamp.
00197     Time now=Time::current();
00198     now>>=_memstream;
00199     // stream event data.
00200     data>>=_memstream;
00201     // Write to file.
00202     write(STDOUT_FILENO,_memstream.bufPtr(),_memstream.bufSize());
00203     // Reset.
00204     _memstream.rewindPtrs();
00205   }
00206   void disconnect_push_consumer()
00207   {
00208     cout<<"disconnected"<<endl;
00209     orb->shutdown(0);
00210   }
00211   void consume(
00212     CosEventChannelAdmin::EventChannel_ptr channel,
00213     const char*& action)
00214   {
00215     action="get ConsumerAdmin";
00216     CosEventChannelAdmin::ConsumerAdmin_var consumer_admin =
00217       channel->for_consumers();
00218 
00219     action="get ProxyPushSupplier";
00220     CosEventChannelAdmin::ProxyPushSupplier_var proxy_supplier =
00221       consumer_admin->obtain_push_supplier();
00222 
00223     action="connect to ProxyPushSupplier";
00224     proxy_supplier->connect_push_consumer(_this());
00225   }
00226 private:
00227   cdrMemoryStream _memstream;
00228 };
00229 
00230 
00231 //
00232 // Supplier_i
00233 //
00234 
00235 class Supplier_i : virtual public POA_CosEventComm::PushSupplier
00236 {
00237 public:
00238   Supplier_i(): _connected(true) {}
00239   void disconnect_push_supplier()
00240   {
00241     cout<<"disconnected"<<endl;
00242     _connected=false;
00243   }
00244   void supply(
00245     CosEventChannelAdmin::EventChannel_ptr channel,
00246     const char*& action)
00247   {
00248     action="get SupplierAdmin";
00249     CosEventChannelAdmin::SupplierAdmin_var supplier_admin =
00250       channel->for_suppliers();
00251 
00252     action="get ProxyPushConsumer";
00253     CosEventChannelAdmin::ProxyPushConsumer_var proxy_consumer =
00254       supplier_admin->obtain_push_consumer();
00255 
00256     action="connect to ProxyPushConsumer";
00257     proxy_consumer->connect_push_supplier(_this());
00258 
00259     char buf[1024];
00260     ssize_t len;
00261     action="read standard input";
00262     // Stream start time (seconds,nanoseconds)
00263     Time offsetTime;
00264     while(_connected && (len=read(STDIN_FILENO,buf,1024)))
00265     {
00266       CORBA::Any any;
00267       cdrMemoryStream memstr;
00268       action="put_octet_array";
00269       memstr.put_octet_array( (_CORBA_Octet*)buf, (int)len );
00270       while(_connected && memstr.currentInputPtr()<memstr.bufSize())
00271       {
00272         action="unmarshal";
00273         Time eventTime;
00274         eventTime<<=memstr;
00275         any<<=memstr;
00276 
00277         if(offsetTime.is_nil()) // first time special.
00278            offsetTime=Time::current()-eventTime;
00279         Time::sleepUntil(eventTime+offsetTime);
00280 
00281         action="push";
00282         proxy_consumer->push(any);
00283       }
00284     }
00285   }
00286 private:
00287   bool _connected;
00288 };
00289 
00290 
00291 //
00292 // main()
00293 //
00294 
00295 int main(int argc, char **argv)
00296 {
00297   //
00298   // Start orb.
00299 #if defined(HAVE_OMNIORB4)
00300   orb=CORBA::ORB_init(argc,argv,"omniORB4");
00301 #else
00302   orb=CORBA::ORB_init(argc,argv,"omniORB3");
00303 #endif
00304 
00305   // Process Options
00306   bool supplierMode =false;
00307   const char* channelName ="EventChannel";
00308 
00309   int c;
00310   while ((c = getopt(argc,argv,"shn:")) != EOF)
00311   {
00312      switch (c)
00313      {
00314         case 's': supplierMode=true;
00315                   break;
00316 
00317         case 'n': channelName = optarg;
00318                   break;
00319 
00320         case 'h': usage(argc,argv);
00321                   exit(0);
00322         default : usage(argc,argv);
00323                   exit(-1);
00324      }
00325   }
00326 
00327 #if defined(HAVE_SIGNAL_H) && defined(SIGPIPE)
00328   // Ignore broken pipes
00329   signal(SIGPIPE, SIG_IGN);
00330 #endif
00331 
00332   const char* action=""; // Use this variable to help report errors.
00333   try {
00334     CORBA::Object_var obj;
00335 
00336     action="resolve initial reference 'RootPOA'";
00337     obj=orb->resolve_initial_references("RootPOA");
00338     PortableServer::POA_var rootPoa =PortableServer::POA::_narrow(obj);
00339     if(CORBA::is_nil(rootPoa))
00340         throw CORBA::OBJECT_NOT_EXIST();
00341 
00342     action="activate the RootPOA's POAManager";
00343     PortableServer::POAManager_var pman =rootPoa->the_POAManager();
00344     pman->activate();
00345 
00346     //
00347     // Obtain object reference to EventChannel
00348     // (from command-line argument or from the Naming Service).
00349     if(optind<argc)
00350     {
00351       action="convert URI from command line into object reference";
00352       obj=orb->string_to_object(argv[optind]);
00353     }
00354     else
00355     {
00356       action="resolve initial reference 'NameService'";
00357       obj=orb->resolve_initial_references("NameService");
00358       CosNaming::NamingContext_var rootContext=
00359         CosNaming::NamingContext::_narrow(obj);
00360       if(CORBA::is_nil(rootContext))
00361           throw CORBA::OBJECT_NOT_EXIST();
00362 
00363       action="find EventChannel in NameService";
00364       cout << action << endl;
00365       obj=rootContext->resolve(str2name(channelName));
00366     }
00367 
00368     action="narrow object reference to event channel";
00369     CosEventChannelAdmin::EventChannel_var channel =
00370       CosEventChannelAdmin::EventChannel::_narrow(obj);
00371     if(CORBA::is_nil(channel))
00372     {
00373        cerr << "Failed to narrow Event Channel reference." << endl;
00374        exit(1);
00375     }
00376 
00377     if(supplierMode)
00378     {
00379       action="construct PushSupplier";
00380       Supplier_i* supplier =new Supplier_i();
00381       supplier->supply(channel,action);
00382     }
00383     else
00384     {
00385       action="construct PushConsumer";
00386       Consumer_i* consumer =new Consumer_i();
00387       consumer->consume(channel,action);
00388 
00389       action="run ORB";
00390       orb->run();
00391     }
00392 
00393     return 0;
00394 
00395   }
00396   catch(CORBA::ORB::InvalidName& ex) { // resolve_initial_references
00397      cerr<<"Failed to "<<action<<". ORB::InvalidName"<<endl;
00398   }
00399   catch(CosNaming::NamingContext::InvalidName& ex) { // resolve
00400      cerr<<"Failed to "<<action<<". NamingContext::InvalidName"<<endl;
00401   }
00402   catch(CosNaming::NamingContext::NotFound& ex) { // resolve
00403      cerr<<"Failed to "<<action<<". NamingContext::NotFound"<<endl;
00404   }
00405   catch(CosNaming::NamingContext::CannotProceed& ex) { // resolve
00406      cerr<<"Failed to "<<action<<". NamingContext::CannotProceed"<<endl;
00407   }
00408   catch(CORBA::TRANSIENT& ex) { // _narrow()
00409      cerr<<"Failed to "<<action<<". TRANSIENT"<<endl;
00410   }
00411   catch(CORBA::OBJECT_NOT_EXIST& ex) { // _narrow()
00412      cerr<<"Failed to "<<action<<". OBJECT_NOT_EXIST"<<endl;
00413   }
00414   catch(CORBA::SystemException& ex) {
00415      cerr<<"Failed to "<<action<<"."
00416 #if defined(HAVE_OMNIORB4)
00417        " "<<ex._name()<<" ("<<ex.NP_minorString()<<")"
00418 #endif
00419        <<endl;
00420   }
00421   catch(CORBA::Exception& ex) {
00422      cerr<<"Failed to "<<action<<"."
00423 #if defined(HAVE_OMNIORB4)
00424        " "<<ex._name()
00425 #endif
00426        <<endl;
00427   }
00428 
00429   return 1;
00430 }
00431 
00432 static void usage(int argc, char **argv)
00433 {
00434   cerr<<
00435 "\nStream events from a channel to stdout, or (-s) from stdin to a channel.\n"
00436 "syntax: "<<(argc?argv[0]:"events")<<" OPTIONS [CHANNEL_URI]\n"
00437 "\n"
00438 "CHANNEL_URI: The event channel may be specified as a URI.\n"
00439 " This may be an IOR, or a corbaloc::: or corbaname::: URI.\n"
00440 "\n"
00441 "OPTIONS:                                         DEFAULT:\n"
00442 " -s       supply mode. Read events from stdin.\n"
00443 " -n NAME  channel name (if URI is not specified)  [\"EventChannel\"]\n"
00444 " -h       display this help text\n" << endl;
00445 }

Generated on Fri Aug 26 20:56:14 2005 for OmniEvents by  doxygen 1.4.3-20050530
omniEvents-2_6_2/doc/doxygen/a00164.html0000644000076400001440000002430310303671736020061 0ustar alexusers00000000000000 OmniEvents: Filter.cc Source File

Filter.cc

Go to the documentation of this file.
00001 //                            Package   : omniEvents
00002 // Filter.cc                  Created   : 2004/04/30
00003 //                            Author    : Alex Tingle
00004 //
00005 //    Copyright (C) 2004 Alex Tingle.
00006 //
00007 //    This file is part of the omniEvents application.
00008 //
00009 //    omniEvents is free software; you can redistribute it and/or
00010 //    modify it under the terms of the GNU Lesser General Public
00011 //    License as published by the Free Software Foundation; either
00012 //    version 2.1 of the License, or (at your option) any later version.
00013 //
00014 //    omniEvents is distributed in the hope that it will be useful,
00015 //    but WITHOUT ANY WARRANTY; without even the implied warranty of
00016 //    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00017 //    Lesser General Public License for more details.
00018 //
00019 //    You should have received a copy of the GNU Lesser General Public
00020 //    License along with this library; if not, write to the Free Software
00021 //    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
00022 //
00023 
00024 #include "Filter.h"
00025 
00026 #include <assert.h>
00027 
00028 #ifdef HAVE_OMNIORB4
00029 #  define STR_MATCH(s1,s2) omni::strMatch((s1),(s2))
00030 #else
00031 #  define STR_MATCH(s1,s2) (0==::strcmp((s1),(s2)))
00032 #endif
00033 
00034 namespace OmniEvents {
00035 
00036 bool FilterByRepositoryId::keep(const CORBA::Any& event) const
00037 {
00038   using namespace CORBA;
00039   CORBA::TypeCode_var tc=event.type();
00040   switch( tc->kind() )
00041   {
00042 #ifdef HAVE_OMNIORB4
00043     case _np_tk_indirect: // Internal to omniORB. We should never get this.
00044       assert(0);
00045 #endif
00046 
00047     // TCs with Repository ID:
00048     case tk_objref:
00049     case tk_struct:
00050     case tk_union:
00051     case tk_enum:
00052     case tk_alias:
00053     case tk_except:
00054       return STR_MATCH( _rid.in(), tc->id() );
00055 
00056     // Collections
00057     case tk_sequence:
00058     case tk_array:
00059 
00060     // Primitives
00061     case tk_null:
00062     case tk_void:
00063     case tk_short:
00064     case tk_long:
00065     case tk_ushort:
00066     case tk_ulong:
00067     case tk_float:
00068     case tk_double:
00069     case tk_boolean:
00070     case tk_char:
00071     case tk_octet:
00072     case tk_any:
00073     case tk_TypeCode:
00074     case tk_Principal:
00075     case tk_string:
00076 #ifdef HAS_LongLong
00077     case tk_longlong:
00078     case tk_ulonglong:
00079 #endif
00080 #ifdef HAS_LongDouble
00081     case tk_longdouble:
00082 #endif
00083 #ifndef HAVE_OMNIORB3
00084     case tk_wchar:
00085     case tk_wstring:
00086     case tk_fixed:
00087 
00088     // WTF? Not implemented in omniORB?
00089     case tk_value:
00090     case tk_value_box:
00091     case tk_native:
00092     case tk_abstract_interface:
00093     case tk_local_interface:
00094 #else
00095     default:
00096 #endif
00097       break;
00098   } // end case. Note: no default, so that missing options are flagged by GCC.
00099   return false;
00100 }
00101 
00102 }; // end namespace OmniEvents

Generated on Fri Aug 26 20:56:14 2005 for OmniEvents by  doxygen 1.4.3-20050530
omniEvents-2_6_2/doc/doxygen/a00165.html0000644000076400001440000002411610303671736020064 0ustar alexusers00000000000000 OmniEvents: Filter.h Source File

Filter.h

Go to the documentation of this file.
00001 //                            Package   : omniEvents
00002 // Filter.h                   Created   : 2004/04/30
00003 //                            Author    : Alex Tingle
00004 //
00005 //    Copyright (C) 2004 Alex Tingle.
00006 //
00007 //    This file is part of the omniEvents application.
00008 //
00009 //    omniEvents is free software; you can redistribute it and/or
00010 //    modify it under the terms of the GNU Lesser General Public
00011 //    License as published by the Free Software Foundation; either
00012 //    version 2.1 of the License, or (at your option) any later version.
00013 //
00014 //    omniEvents is distributed in the hope that it will be useful,
00015 //    but WITHOUT ANY WARRANTY; without even the implied warranty of
00016 //    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00017 //    Lesser General Public License for more details.
00018 //
00019 //    You should have received a copy of the GNU Lesser General Public
00020 //    License along with this library; if not, write to the Free Software
00021 //    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
00022 //
00023 
00024 #ifndef OMNIEVENTS__FILTER_H
00025 #define OMNIEVENTS__FILTER_H
00026 
00027 #ifdef HAVE_CONFIG_H
00028 #  include "config.h"
00029 #endif
00030 
00031 #include "Orb.h"
00032 
00033 #include <string.h>
00034 
00035 #ifdef HAVE_IOSTREAM
00036 #  include <iostream>
00037 #else
00038 #  include <iostream.h>
00039 #endif
00040 
00041 #ifdef HAVE_STD_IOSTREAM
00042 using namespace std;
00043 #endif
00044 
00045 
00046 namespace OmniEvents {
00047 
00049 class Filter
00050 {
00051 public:
00052   Filter(){}
00053   virtual ~Filter(){}
00054 
00058   virtual bool keep(const CORBA::Any& event) const =0;
00059 
00060   virtual void output(ostream& os) const =0;
00061 };
00062 
00066 class FilterByTCKind: public Filter
00067 {
00068 public:
00069   FilterByTCKind(CORBA::TCKind kind):_kind(kind){}
00070   virtual ~FilterByTCKind(){}
00071   bool keep(const CORBA::Any& event) const
00072   {
00073     CORBA::TypeCode_var tc=event.type();
00074     return( tc->kind()==_kind );
00075   }
00076   void output(ostream& os) const { os<<"\n FilterKind="<<_kind; }
00077 private:
00078   CORBA::TCKind _kind;
00079 };
00080 
00084 class FilterByRepositoryId: public Filter
00085 {
00086 public:
00087   FilterByRepositoryId(const char* rid):_rid(rid){}
00088   virtual ~FilterByRepositoryId(){}
00089   bool keep(const CORBA::Any& event) const;
00090   void output(ostream& os) const { os<<"\n FilterId="<<_rid; }
00091 private:
00092   CORBA::RepositoryId_var _rid;
00093 };
00094 
00095 }; // end namespace OmniEvents
00096 
00097 #endif // OMNIEVENTS__FILTER_H

Generated on Fri Aug 26 20:56:14 2005 for OmniEvents by  doxygen 1.4.3-20050530
omniEvents-2_6_2/doc/doxygen/a00166.html0000644000076400001440000002464510303671736020074 0ustar alexusers00000000000000 OmniEvents: gethostname.h Source File

gethostname.h

Go to the documentation of this file.
00001 /*                            Package   : omniEvents
00002  * gethostname.h              Created   : 2003/10/31
00003  *                            Author    : Alex Tingle
00004  *
00005  *    Copyright (C) 2003 Alex Tingle.
00006  *
00007  *    This file is part of the omniEvents application.
00008  *
00009  *    omniEvents is free software; you can redistribute it and/or
00010  *    modify it under the terms of the GNU Lesser General Public
00011  *    License as published by the Free Software Foundation; either
00012  *    version 2.1 of the License, or (at your option) any later version.
00013  *
00014  *    omniEvents is distributed in the hope that it will be useful,
00015  *    but WITHOUT ANY WARRANTY; without even the implied warranty of
00016  *    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00017  *    Lesser General Public License for more details.
00018  *
00019  *    You should have received a copy of the GNU Lesser General Public
00020  *    License along with this library; if not, write to the Free Software
00021  *    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
00022  */
00023 
00030 #ifndef __GETHOSTNAME_H
00031 #define __GETHOSTNAME_H
00032 
00033 #ifdef HAVE_CONFIG_H
00034 #  include "config.h"
00035 #endif
00036 
00037 #ifdef HAVE_UNISTD_H
00038 #  include <unistd.h>
00039 #endif
00040 
00041 #ifdef SYS_UTSNAME_H
00042 #  include <sys/utsname.h>
00043 #endif
00044 
00045 #ifdef __WIN32__
00046 #  include <winbase.h>
00047 #endif
00048 
00049 #if defined(__VMS) && __CRTL_VER < 70000000
00050 #  include <omniVMS/utsname.hxx>
00051 #endif
00052 
00053 #include <errno.h>
00054 
00055 /*
00056  * Ensure that MAXHOSTNAMELEN is defined correctly.
00057  */
00058 
00059 #if defined(__WIN32__) && !defined(MAXHOSTNAMELEN)
00060 #  define MAXHOSTNAMELEN MAX_COMPUTERNAME_LENGTH
00061 #elif defined(__WIN32__) && defined(MAXHOSTNAMELEN)
00062 #  undef  MAXHOSTNAMELEN
00063 #  define MAXHOSTNAMELEN MAX_COMPUTERNAME_LENGTH
00064 #elif !defined(MAXHOSTNAMELEN)
00065 #  define MAXHOSTNAMELEN 256
00066 /* Apparently on some AIX versions, MAXHOSTNAMELEN is too small (32) to
00067  * reflect the true size a hostname can be. Check and fix the value. */
00068 #elif defined(MAXHOSTNAMELEN) && (MAXHOSTNAMELEN < 64)
00069 #  undef  MAXHOSTNAMELEN
00070 #  define MAXHOSTNAMELEN 256
00071 #endif
00072 
00073 
00074 #ifndef HAVE_GETHOSTNAME
00075 inline int
00076 gethostname(char* hostname, size_t len)
00077 {
00078   int result =-1;
00079   if(len<1)
00080   {
00081     errno=EINVAL;
00082     return result;
00083   }
00084   if(len>MAXHOSTNAMELEN)
00085   {
00086     len=MAXHOSTNAMELEN;
00087   }
00088 
00089 #if defined(__WIN32__)
00090   DWORD dwordlen = len;
00091   if( GetComputerName((LPTSTR) hostname, &dwordlen) )
00092   {
00093     result=0;
00094   }
00095   else
00096   {
00097     errno=EFAULT;
00098   }
00099 #else
00100   struct utsname un;
00101   if( uname(&un)==0 && strlen(un.nodename)<len)
00102   {
00103     strcpy(hostname,un.nodename);
00104     result=0;
00105   }
00106   else
00107   {
00108     errno=EFAULT;
00109   }
00110 #endif
00111   return result;
00112 }
00113 #endif /* HAVE_GETHOSTNAME */
00114 
00115 #endif /* __GETHOSTNAME_H */

Generated on Fri Aug 26 20:56:14 2005 for OmniEvents by  doxygen 1.4.3-20050530
omniEvents-2_6_2/doc/doxygen/a00167.html0000644000076400001440000004013310303671736020063 0ustar alexusers00000000000000 OmniEvents: getopt.cc Source File

getopt.cc

Go to the documentation of this file.
00001 // -*- Mode: C++; -*-
00002 //                            Package   : omniEvents
00003 // getopt.cc                  Created   : 1/4/98
00004 //                            Author    : Paul Nader (pwn)
00005 //
00006 //    Copyright (C) 1998 Paul Nader.
00007 //
00008 //    This file is part of the omniEvents application.
00009 //
00010 //    omniEvents is free software; you can redistribute it and/or
00011 //    modify it under the terms of the GNU Lesser General Public
00012 //    License as published by the Free Software Foundation; either
00013 //    version 2.1 of the License, or (at your option) any later version.
00014 //
00015 //    omniEvents is distributed in the hope that it will be useful,
00016 //    but WITHOUT ANY WARRANTY; without even the implied warranty of
00017 //    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00018 //    Lesser General Public License for more details.
00019 //
00020 //    You should have received a copy of the GNU Lesser General Public
00021 //    License along with this library; if not, write to the Free Software
00022 //    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
00023 //
00024 // Description:
00025 //
00026 //    getopt implementation for WIN32 platforms.
00027 //
00028 
00029 /*
00030   $Log: getopt.cc,v $
00031   Revision 1.4  2004/08/04 08:13:44  alextingle
00032   Unix daemon & Windows service now both working. Accessed through interface class Daemon (in daemon.h).
00033 
00034   Revision 1.3  2004/07/15 14:34:31  alextingle
00035   Global variables are now declared extern "C".
00036 
00037   Revision 1.2  2004/02/22 00:37:35  alextingle
00038   Now does nothing if it isn't needed. Fixes link errors
00039 
00040   Revision 1.1  2003/12/21 16:19:49  alextingle
00041   Moved into 'src' directory as part of the change to POA implementation.
00042 
00043   Revision 1.2  2003/11/03 22:46:54  alextingle
00044   This implementation of getopt() seems to be needed on AIX as well as
00045   windows. It therefore needs to be able to compile on Unix. Changed
00046   _tzset() to tzset() in order to achieve this.
00047 
00048   Revision 1.1.1.1  2002/09/25 19:00:35  shamus13
00049   Import of OmniEvents source tree from release 2.1.1
00050 
00051   Revision 1.3  1999/11/01 16:59:38  naderp
00052   *** empty log message ***
00053 
00054 Revision 1.2  99/04/23  12:11:18  12:11:18  naderp (Paul Nader)
00055 *** empty log message ***
00056 
00057 Revision 1.1  99/04/23  09:33:35  09:33:35  naderp (Paul Nader)
00058 Initial revision
00059 */
00060 
00061 #ifdef HAVE_CONFIG_H
00062 #  include "config.h"
00063 #endif
00064 
00065 #ifdef HAVE_GETOPT
00066 void omniEventsDummyGetopt(){}
00067 #else
00068 
00069 #include "getopt.h"
00070 #include <errno.h>
00071 #include <stdio.h>
00072 #include <string.h>
00073 
00074 static char* letP =NULL;    // Speichert den Ort des Zeichens der
00075                                 // naechsten Option
00076 static char SW ='-';       // DOS-Schalter, entweder '-' oder '/'
00077 
00078 // -------------------------------------------------------------- exports ----
00079 
00080 extern "C"
00081 {
00082   int   optind  = 1;    // Index: welches Argument ist das naechste
00083   char* optarg;         // Zeiger auf das Argument der akt. Option
00084   int   opterr  = 1;    // erlaubt Fehlermeldungen
00085 }
00086 
00087 // ===========================================================================
00088 int getopt(int argc, char *argv[], const char *optionS)
00089 {
00090    unsigned char ch;
00091    char *optP;
00092 
00093    if(argc>optind)
00094    {
00095       if(letP==NULL)
00096       {
00097         // Initialize letP
00098          if( (letP=argv[optind])==NULL || *(letP++)!=SW )
00099             goto gopEOF;
00100          if(*letP == SW)
00101          {
00102             // "--" is end of options.
00103             optind++;
00104             goto gopEOF;
00105          }
00106       }
00107 
00108       if((ch=*(letP++))== '\0')
00109       {
00110          // "-" is end of options.
00111          optind++;
00112          goto gopEOF;
00113       }
00114       if(':'==ch || (optP=(char*)strchr(optionS,ch)) == NULL)
00115       {
00116          goto gopError;
00117       }
00118       // 'ch' is a valid option
00119       // 'optP' points to the optoin char in optionS
00120       if(':'==*(++optP))
00121       {
00122          // Option needs a parameter.
00123          optind++;
00124          if('\0'==*letP)
00125          {
00126             // parameter is in next argument
00127             if(argc <= optind)
00128                goto gopError;
00129             letP = argv[optind++];
00130          }
00131          optarg = letP;
00132          letP = NULL;
00133       }
00134       else
00135       {
00136          // Option needs no parameter.
00137          if('\0'==*letP)
00138          {
00139             // Move on to next argument.
00140             optind++;
00141             letP = NULL;
00142          }
00143          optarg = NULL;
00144       }
00145       return ch;
00146    }
00147 gopEOF:
00148    optarg=letP=NULL;
00149    return EOF;
00150     
00151 gopError:
00152    optarg = NULL;
00153    errno  = EINVAL;
00154    if(opterr)
00155       perror ("error in command line");
00156    return ('?');
00157 }
00158 // ===========================================================================
00159 //                      Ende von getopt ()
00160 // ===========================================================================
00161 
00162 #endif // HAVE_GETOPT
00163 

Generated on Fri Aug 26 20:56:14 2005 for OmniEvents by  doxygen 1.4.3-20050530
omniEvents-2_6_2/doc/doxygen/a00168.html0000644000076400001440000001711110303671736020064 0ustar alexusers00000000000000 OmniEvents: getopt.h Source File

getopt.h

Go to the documentation of this file.
00001 // -*- Mode: C++; -*-
00002 //                            Package   : omniEvents
00003 // getopt.h                   Created   : 1/4/98
00004 //                            Author    : Paul Nader (pwn)
00005 //
00006 //    Copyright (C) 1998 Paul Nader.
00007 //
00008 //    This file is part of the omniEvents application.
00009 //
00010 //    omniEvents is free software; you can redistribute it and/or
00011 //    modify it under the terms of the GNU Lesser General Public
00012 //    License as published by the Free Software Foundation; either
00013 //    version 2.1 of the License, or (at your option) any later version.
00014 //
00015 //    omniEvents is distributed in the hope that it will be useful,
00016 //    but WITHOUT ANY WARRANTY; without even the implied warranty of
00017 //    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00018 //    Lesser General Public License for more details.
00019 //
00020 //    You should have received a copy of the GNU Lesser General Public
00021 //    License along with this library; if not, write to the Free Software
00022 //    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
00023 //
00024 // Description:
00025 //      
00026 
00027 /*
00028   $Log: getopt.h,v $
00029   Revision 1.2  2004/07/15 14:34:31  alextingle
00030   Global variables are now declared extern "C".
00031 
00032   Revision 1.1  2003/12/21 16:19:49  alextingle
00033   Moved into 'src' directory as part of the change to POA implementation.
00034 
00035   Revision 1.2  2003/11/03 22:36:48  alextingle
00036   Updated License to GNU Lesser General Public v2.1
00037 
00038   Revision 1.1.1.1  2002/09/25 19:00:32  shamus13
00039   Import of OmniEvents source tree from release 2.1.1
00040 
00041   Revision 1.4  2000/09/24 07:17:12  naderp
00042   Fixed file comment.
00043 
00044   Revision 1.3  1999/04/23 16:04:53  naderp
00045   *** empty log message ***
00046 
00047  * Revision 1.2  99/04/23  12:11:20  12:11:20  naderp (Paul Nader)
00048  * *** empty log message ***
00049  * 
00050  * Revision 1.1  99/04/23  09:36:25  09:36:25  naderp (Paul Nader)
00051  * Initial revision
00052  * 
00053 */
00054 
00055 #ifndef __GETOPT_H
00056 #define __GETOPT_H
00057 
00058 extern "C"
00059 {
00060   extern int   optind;    // Index: welches Argument ist das naechste
00061   extern char* optarg;    // Zeiger auf das Argument der akt. Option
00062   extern int   opterr;    // erlaubt Fehlermeldungen
00063 }
00064 
00065 int getopt(int argc, char *argv[], const char *optionS);
00066 
00067 #endif /* __GETOPT_H */

Generated on Fri Aug 26 20:56:14 2005 for OmniEvents by  doxygen 1.4.3-20050530
omniEvents-2_6_2/doc/doxygen/a00169.html0000644000076400001440000007501210303671736020071 0ustar alexusers00000000000000 OmniEvents: main.cc Source File

main.cc

Go to the documentation of this file.
00001 //                            Package   : omniEvents
00002 //  main.cc                   Created   : 2004/08/01
00003 //                            Author    : Alex Tingle.
00004 //
00005 //    Copyright (C) 1998 Paul Nader, 2004-2005 Alex Tingle.
00006 //
00007 //    This file is part of the omniEvents application.
00008 //
00009 //    omniEvents is free software; you can redistribute it and/or
00010 //    modify it under the terms of the GNU Lesser General Public
00011 //    License as published by the Free Software Foundation; either
00012 //    version 2.1 of the License, or (at your option) any later version.
00013 //
00014 //    omniEvents is distributed in the hope that it will be useful,
00015 //    but WITHOUT ANY WARRANTY; without even the implied warranty of
00016 //    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00017 //    Lesser General Public License for more details.
00018 //
00019 //    You should have received a copy of the GNU Lesser General Public
00020 //    License along with this library; if not, write to the Free Software
00021 //    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
00022 //
00023 // Description:
00024 //    Event Services Channel Factory implementation. The factory registers
00025 //    itself with the naming service. Clients wishing to create event
00026 //    channels can either use the factory by resolving its name with the
00027 //    naming service or create in-process channels.
00028 //
00029 
00030 #ifdef HAVE_CONFIG_H
00031 #  include "config.h"
00032 #endif
00033 
00034 #ifdef HAVE_GETOPT
00035 #  include <unistd.h>
00036 extern char* optarg;
00037 extern int optind;
00038 #else
00039 #  include "getopt.h"
00040 #endif
00041 
00042 #include "main.h"
00043 #include "omniEvents.h"
00044 #include "naming.h"
00045 #include "omniEventsLog.h"
00046 #include "EventChannelFactory.h"
00047 #include "Orb.h"
00048 #include "daemon.h"
00049 #include "version.h"
00050 
00051 #if defined(HAVE_SIGNAL_H) && defined(HAVE_SIGSET)
00052 #  include <signal.h>
00053 #  define SIGSET(sig,func) ::sigset(sig,func)
00054 #elif defined(HAVE_SIGNAL_H)
00055 #  include <signal.h>
00056 #  define SIGSET(sig,func) ::signal(sig,func)
00057 #endif
00058 
00059 #ifdef HAVE_OMNIORB4
00060 #  include <omniORB4/internal/orbOptions.h>
00061 #endif
00062 
00063 #include <stdio.h> // for sprintf
00064 
00065 int main(int argc, char** argv)
00066 {
00067   OmniEvents::Daemon daemon(argc,argv);
00068 
00069 #ifdef HAVE_OMNIORB4
00070   try
00071   {
00072     // Duplicate argv & argc.
00073     int    originalArgc =argc;
00074     char** originalArgv =new char*[originalArgc];
00075     for(int i=0; i<originalArgc; ++i)
00076         originalArgv[i]=strdup(argv[i]);
00077 
00078     // Remove ORB arguments from argc & argv.
00079     try {
00080       omni::orbOptions::singleton().extractInitOptions(argc,argv);
00081     }
00082     catch(...) {
00083       argc=originalArgc;
00084       argv=originalArgv;
00085     }
00086 #endif
00087 
00088   using namespace OmniEvents;
00089 
00090   //
00091   // Process Options
00092   const char* endPointNoListen =NULL;
00093   int         port             =0;
00094   const char* logDir           =NULL;
00095   const char* factoryName      ="EventChannelFactory";
00096   bool        verbose          =false;
00097 
00098   int c;
00099   while ((c = getopt(argc,argv,"O:a:p:l:P:N:dft:vVh")) != EOF)
00100   {
00101      switch (c)
00102      {
00103         case 'O': break; // Helps protect us from -ORB arguments.
00104         
00105      // Initialisation options (only useful on first run)
00106         case 'a': endPointNoListen=optarg;
00107                   break;
00108 
00109         case 'p': port=atoi(optarg);
00110                   if (port <= 0)
00111                   {
00112                      cerr<<"\nError: port must be a positive integer"<<endl;
00113                      usage(argc,argv);
00114                   }
00115                   break;
00116 
00117      // Other options
00118         case 'l': logDir=optarg;
00119                   break;
00120 
00121         case 'P': daemon.pidfile(optarg);
00122                   break;
00123 
00124         case 'N': factoryName=optarg;
00125                   break;
00126 
00127         case 'd': cerr<<"Option '-d' is deprecated. Use '-f' instead."<<endl;
00128                   daemon.foreground(true);
00129                   break;
00130 
00131         case 'f': daemon.foreground(true);
00132                   break;
00133 
00134      // Informational options
00135         case 't': daemon.tracefile(optarg);
00136                   break;
00137 
00138         case 'v': verbose=true;
00139                   break;
00140         
00141         case 'V': cout<<OmniEvents::version()<<endl;
00142                   ::exit(0);
00143 
00144         case 'h':
00145         default : usage(argc,argv);
00146                   break;
00147      }
00148   }
00149 
00150   //
00151   // Create database instance.
00152   omniEventsLog logfile(logDir);
00153   PersistNode* initialState =NULL;
00154   if(logfile.fileExists(logfile.activeFilename()))
00155   {
00156     // Read library file.
00157     initialState=logfile.parse();
00158     // Check for incompatibilities between options and the file.
00159     if(port && port!=initialState->child("ecf")->attrLong("port"))
00160     {
00161       cerr<<
00162         "Error: Option '-p "<<port<<"' conflicts with value '"<<
00163         initialState->child("ecf")->attrLong("port")<<"'\n stored in"
00164         " database file '"<<logfile.activeFilename()<<"'.\n"
00165         " Either delete the file to clear the database, or do not use the"
00166         " '-p' option."<<endl;
00167       exit(1);
00168     }
00169     if(endPointNoListen && string(endPointNoListen)!=
00170          initialState->child("ecf")->attrString("endPointNoListen"))
00171     {
00172       cerr<<
00173         "Error: Option '-a "<<endPointNoListen<<"' conflicts with value '"<<
00174         initialState->child("ecf")->attrString("endPointNoListen")<<"'\n"
00175         " stored in database file '"<<logfile.activeFilename()<<"'.\n"
00176         " Either delete the file to clear the database, or do not use the"
00177         " '-a' option."<<endl;
00178       exit(1);
00179     }
00180   }
00181   else if(logfile.fileExists(logfile.backupFilename()))
00182   {
00183     // Quit with an error.
00184     cerr <<
00185       "Error: backup file '" << logfile.backupFilename() << "' exists.\n"
00186       " Rename it to '" << logfile.activeFilename() << "'\n"
00187       " to recover the server's state, or delete it to create a new\n"
00188       " database file." << endl;
00189     exit(1);
00190   }
00191   else
00192   {
00193     // Create initial state without a library file.
00194     initialState=logfile.bootstrap(port?port:11169,endPointNoListen);
00195   }
00196   port=initialState->child("ecf")->attrLong("port",port);
00197   string endPoint2=initialState->child("ecf")->attrString("endPointNoListen");
00198 
00199   //
00200   // Daemonise
00201   daemon.daemonize();
00202 
00203   //
00204   // Initialise orb & POAs.
00205 #ifdef HAVE_OMNIORB4
00206   char endPoint[64];
00207   sprintf(endPoint,"giop:::%d",port);
00208   if(endPoint2.empty())
00209   {
00210     const char* opts[][2] ={ {"endPoint",endPoint}, {0,0} };
00211     Orb::inst()._orb=CORBA::ORB_init(originalArgc,originalArgv,"omniORB4",opts);
00212   }
00213   else
00214   {
00215     const char* opts[][2] ={
00216       {"endPoint",endPoint},
00217       {"endPointNoListen",endPoint2.c_str()},
00218       {0,0} };
00219     Orb::inst()._orb=CORBA::ORB_init(originalArgc,originalArgv,"omniORB4",opts);
00220   }
00221 #else
00222   insertArgs(argc, argv, 1, 2);
00223   argv[1] = strdup("-ORBpoa_iiop_port");
00224   argv[2] = new char[32 + 1];
00225   sprintf(argv[2], "%d", port);
00226   Orb::inst()._orb=CORBA::ORB_init(argc,argv);
00227 #endif
00228   Orb::inst().resolveInitialReferences();
00229   {
00230     PortableServer::POAManager_var pman;
00231     pman=Orb::inst()._RootPOA->the_POAManager();
00232     pman->activate();
00233     pman=Orb::inst()._omniINSPOA->the_POAManager();
00234     pman->activate();
00235   }
00236 
00237   //
00238   // If omniEvents is restarting then the omniEventsLog object
00239   // will take care of creating the factory and any subordinate
00240   // event channels, proxies, etc under it.
00241   logfile.incarnateFactory(initialState);
00242   delete initialState; // Tidy up.
00243   initialState=NULL;
00244 
00245   {
00246     //
00247     // Register factory with the Naming Service.
00248     omniEvents::EventChannelFactory_var factory( logfile.factory()->_this() );
00249     bindName2Object(
00250       Orb::inst()._NameService.in(), 
00251       str2name(factoryName),
00252       factory.in()
00253     );
00254 
00255     //
00256     // Print the factory IOR.
00257     if(verbose)
00258     {
00259       DB(1,"Starting omniEvents on port "<<port)
00260       if(!endPoint2.empty())
00261           DB(1,"Alternate endPoint "<<endPoint2.c_str())
00262       CORBA::String_var iorstr =
00263         Orb::inst()._orb->object_to_string(factory.in());
00264       DB(1,iorstr.in())
00265     }
00266   } // factory reference is released.
00267 
00268 #ifdef HAVE_SIGNAL_H
00269   SIGSET(SIGINT , ::OmniEvents_Orb_shutdown);
00270   SIGSET(SIGTERM, ::OmniEvents_Orb_shutdown);
00271 #  ifdef SIGUSR1
00272   SIGSET(SIGUSR1, ::OmniEvents_Orb_bumpTraceLevel);
00273 #  endif
00274 #  ifdef SIGPIPE
00275   SIGSET(SIGPIPE, SIG_IGN); // Ignore broken pipes
00276 #  endif
00277 #endif
00278 
00279   daemon.runningOk();
00280 
00281   //
00282   // Start the background tasks.
00283   logfile.runWorker(); // Logfile's worker thread.
00284   Orb::inst().run();   // Use the main thread to collect orphaned responses.
00285 
00286   DB(1,"Shutdown requested.")
00287   Orb::inst()._orb->shutdown(1); // Synchronous shutdown
00288   Orb::inst()._orb->destroy(); // clean up
00289 
00290   return 0; // Delete any pidfile & exit.
00291 
00292 #ifdef HAVE_OMNIORB4
00293   }
00294   catch (CORBA::SystemException& ex) {
00295     DB(0,"System exception: "<<ex._name()<<" ("<<NP_MINORSTRING(ex)<<")")
00296   }
00297   catch (CORBA::Exception& ex) {
00298     DB(0,"CORBA exception: "<<ex._name())
00299   }
00300   return 1;
00301 #endif
00302 } // end main()
00303 
00304 
00305 //
00306 // Signal handlers.
00307 //
00308 
00309 extern "C"
00310 {
00311   void OmniEvents_Orb_shutdown(int signum)
00312   {
00313     OmniEvents::Orb::inst().shutdown(signum);
00314   }
00315 
00316   void OmniEvents_Orb_bumpTraceLevel(int signum)
00317   {
00318     omniORB::traceLevel=(omniORB::traceLevel+5)%45;
00319     DB(0,"TRACE LEVEL BUMPED TO "<<omniORB::traceLevel<<" BY SIGNAL "<<signum)
00320   }
00321 }

Generated on Fri Aug 26 20:56:14 2005 for OmniEvents by  doxygen 1.4.3-20050530
omniEvents-2_6_2/doc/doxygen/a00170.html0000644000076400001440000001134510303671736020060 0ustar alexusers00000000000000 OmniEvents: main.h Source File

main.h

Go to the documentation of this file.
00001 //                            Package   : omniEvents
00002 //  main.h                    Created   : 2004/08/01
00003 //                            Author    : Alex Tingle.
00004 //
00005 //    Copyright (C) 2004 Alex Tingle.
00006 //
00007 //    This file is part of the omniEvents application.
00008 //
00009 //    omniEvents is free software; you can redistribute it and/or
00010 //    modify it under the terms of the GNU Lesser General Public
00011 //    License as published by the Free Software Foundation; either
00012 //    version 2.1 of the License, or (at your option) any later version.
00013 //
00014 //    omniEvents is distributed in the hope that it will be useful,
00015 //    but WITHOUT ANY WARRANTY; without even the implied warranty of
00016 //    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00017 //    Lesser General Public License for more details.
00018 //
00019 //    You should have received a copy of the GNU Lesser General Public
00020 //    License along with this library; if not, write to the Free Software
00021 //    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
00022 //
00023 
00024 #ifndef OMNIEVENTS__MAIN_H
00025 #define OMNIEVENTS__MAIN_H
00026 
00030 int main(int argc, char** argv);
00031 
00032 extern "C"
00033 {
00037   void OmniEvents_Orb_shutdown(int signum);
00038 
00042   void OmniEvents_Orb_bumpTraceLevel(int signum);
00043 }
00044 
00045 #endif // OMNIEVENTS__MAIN_H

Generated on Fri Aug 26 20:56:14 2005 for OmniEvents by  doxygen 1.4.3-20050530
omniEvents-2_6_2/doc/doxygen/a00171.html0000644000076400001440000002204710303671736020062 0ustar alexusers00000000000000 OmniEvents: Mapper.h Source File

Mapper.h

Go to the documentation of this file.
00001 //                          Package   : omniMapper
00002 // Mapper.h                 Author    : Duncan Grisby (dpg1)
00003 //
00004 //    Copyright (C) 2000 AT&T Laboratories Cambridge
00005 //    Copyright (C) 2004 Alex Tingle
00006 //
00007 //  This file is part of omniEvents. It is based upon omniMapper.
00008 //
00009 //    omniEvents is free software; you can redistribute it and/or
00010 //    modify it under the terms of the GNU Lesser General Public
00011 //    License as published by the Free Software Foundation; either
00012 //    version 2.1 of the License, or (at your option) any later version.
00013 //
00014 //    omniEvents is distributed in the hope that it will be useful,
00015 //    but WITHOUT ANY WARRANTY; without even the implied warranty of
00016 //    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00017 //    Lesser General Public License for more details.
00018 //
00019 //    You should have received a copy of the GNU Lesser General Public
00020 //    License along with this library; if not, write to the Free Software
00021 //    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
00022 //
00023 
00024 #include "Servant.h"
00025 #include "Orb.h"
00026 #include <string.h>
00027 
00028 namespace OmniEvents {
00029 
00033 class Mapper :
00034   public Servant,
00035   public PortableServer::RefCountServantBase
00036 {
00037 public:
00038 
00039   Mapper(const char* id, CORBA::Object_ptr obj)
00040     : Servant(Orb::inst()._omniINSPOA.in()),
00041       id_( CORBA::string_dup(id) ),
00042       obj_( CORBA::Object::_duplicate(obj) )
00043   {
00044     DB(1,"Initialising Mapper `"<<id<<"'.")
00045     activateObjectWithId(id);
00046     _remove_ref();
00047   }
00048   ~Mapper() { DB(20,"~Mapper()") }
00049   void destroy() { deactivateObject(); }
00050   CORBA::Boolean _is_a(const char* id) { do_redir(); return 1; }
00051 
00052 #ifdef HAVE_OMNIORB4
00053   CORBA::Boolean _dispatch(omniCallHandle&) { do_redir(); return 1; }
00054 #else
00055   CORBA::Boolean _dispatch(GIOP_S&        ) { do_redir(); return 1; }
00056 #endif
00057 
00058   void do_redir()
00059   {
00060     DB(20,"Mapping `"<<id_.in()<<"'")
00061 #ifdef HAVE_OMNIORB4
00062     throw omniORB::LOCATION_FORWARD(CORBA::Object::_duplicate(obj_),0);
00063 #else
00064     throw omniORB::LOCATION_FORWARD(CORBA::Object::_duplicate(obj_)  );
00065 #endif
00066   }
00067   
00068   string id() const {return string(id_.in());}
00069 
00070 private:
00071   CORBA::String_var id_;
00072   CORBA::Object_var obj_;
00073 };
00074 
00075 }; // end namespace OmniEvents

Generated on Fri Aug 26 20:56:14 2005 for OmniEvents by  doxygen 1.4.3-20050530
omniEvents-2_6_2/doc/doxygen/a00172.html0000644000076400001440000004667210303671736020075 0ustar alexusers00000000000000 OmniEvents: naming.cc Source File

naming.cc

Go to the documentation of this file.
00001 // -*- Mode: C++; -*-
00002 //                            Package   : omniEvents
00003 // naming.cc                  Created   : 1/10/99
00004 //                            Author    : Paul Nader (pwn)
00005 //
00006 //    Copyright (C) 1998 Paul Nader, 2003-2005 Alex Tingle.
00007 //
00008 //    This file is part of the omniEvents application.
00009 //
00010 //    omniEvents is free software; you can redistribute it and/or
00011 //    modify it under the terms of the GNU Lesser General Public
00012 //    License as published by the Free Software Foundation; either
00013 //    version 2.1 of the License, or (at your option) any later version.
00014 //
00015 //    omniEvents is distributed in the hope that it will be useful,
00016 //    but WITHOUT ANY WARRANTY; without even the implied warranty of
00017 //    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00018 //    Lesser General Public License for more details.
00019 //
00020 //    You should have received a copy of the GNU Lesser General Public
00021 //    License along with this library; if not, write to the Free Software
00022 //    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
00023 //
00024 // Description:
00025 //
00026 //    naming Service Utility functions.
00027 //
00028 
00029 /*
00030   $Log: naming.cc,v $
00031   Revision 1.8.2.2  2005/05/10 14:28:11  alextingle
00032   Updated copyrights to 2005.
00033 
00034   Revision 1.8.2.1  2005/04/27 20:49:31  alextingle
00035   Merge across changes from HEAD branch (see CHANGES_262. Change version number ready for release 2.6.2.
00036 
00037   Revision 1.9  2005/04/13 14:04:02  alextingle
00038   Fixed bug in str2name() naming.cc, that causes a SEGV on HP-UX.
00039 
00040   Revision 1.8  2004/10/08 14:27:59  alextingle
00041   Changed local variable initialisation style back to using '=' in order to please MS VC++.
00042 
00043   Revision 1.7  2004/09/25 23:12:28  alextingle
00044   New method: Orb::reportObjectFailure() - flags unexpected failures at a higher
00045   priority than normal non-fatal exceptions.
00046 
00047   New macro: NP_MINORSTRING() - a safe interface to
00048   CORBA::SystemException::NP_minorString() that returns "??" when there is no
00049   mapping for the exception's minor code.
00050 
00051   Revision 1.6  2004/08/04 08:13:44  alextingle
00052   Unix daemon & Windows service now both working. Accessed through interface class Daemon (in daemon.h).
00053 
00054   Revision 1.5  2004/07/26 21:17:49  alextingle
00055   Added missing #include <string>
00056 
00057   Revision 1.4  2004/07/26 16:22:25  alextingle
00058   New method: str2name() parses a stringified naming service name info a CosNaming::Name.
00059 
00060   Revision 1.3  2004/07/02 15:20:39  alextingle
00061   Added daemonization, syslog & pidfile support on Unix.
00062   Corrected trace levels for consistency with omniORB.
00063 
00064   Revision 1.2  2004/04/21 10:01:42  alextingle
00065   Removed unused code. Now silently fails if the Orb has no naming service ref.
00066 
00067   Revision 1.1  2003/12/21 16:19:49  alextingle
00068   Moved into 'src' directory as part of the change to POA implementation.
00069 
00070   Revision 1.3  2003/12/01 09:03:13  alextingle
00071   Now reports more specific exceptions (only with omniORB4).
00072 
00073   Revision 1.2  2003/11/03 22:45:31  alextingle
00074   Removed all platform specific switches. Now uses autoconf, config.h.
00075 
00076   Revision 1.1.1.1  2002/09/25 19:00:35  shamus13
00077   Import of OmniEvents source tree from release 2.1.1
00078 
00079   Revision 1.3  2000/09/26 08:44:58  naderp
00080   Added stdlib.h include for exit function.
00081 
00082   Revision 1.2  2000/09/04 03:45:52  naderp
00083   Changed headers.
00084 
00085   Revision 1.1  1999/11/01 17:00:16  naderp
00086   Initial revision
00087 
00088 */
00089 
00090 #include "naming.h"
00091 
00092 #include <string>
00093 
00094 #ifdef HAVE_IOMANIP
00095 #  include <iomanip>
00096 #else
00097 #  include <iomanip.h>
00098 #endif
00099 
00100 #ifdef HAVE_STDLIB_H
00101 #  include <stdlib.h> // for exit
00102 #endif
00103 
00104 ostream& operator<<(ostream& os, const CosNaming::Name &n)
00105 {
00106   for(CORBA::ULong i=0; i<n.length(); i++)
00107   {
00108     os<<"/"<<n[i].id.in();
00109     const char* kind =n[i].kind.in();
00110     if(kind && kind[0])
00111         os<<"."<<kind;
00112   }
00113   return os;
00114 }
00115 
00116 
00117 CosNaming::Name str2name(const char* namestr)
00118 {
00119   CosNaming::Name name;
00120   CORBA::ULong nameLen=0;
00121   name.length(nameLen);
00122 
00123   string n =namestr;
00124   string::size_type pos=0;
00125   char last='/';
00126   while(true)
00127   {
00128     pos=n.find_first_not_of("/.",pos);
00129     if(string::npos==pos) break;
00130     string::size_type sep =n.find_first_of("/.",pos);
00131     string piece =n.substr(pos, (string::npos==sep? sep: sep-pos) );
00132     if(last=='/')
00133     {
00134       name.length(++nameLen);
00135       name[nameLen-1].id=CORBA::string_dup(piece.c_str());
00136     }
00137     else
00138     {
00139       name[nameLen-1].kind=CORBA::string_dup(piece.c_str());
00140     }
00141     if(string::npos==sep) break;
00142     pos=sep;
00143     last=n[sep];
00144   }
00145   return name;
00146 }
00147 
00148 
00149 int bindName2Object(
00150   CosNaming::NamingContext_ptr namingContext,
00151   const CosNaming::Name& name,
00152   CORBA::Object_ptr obj
00153 )
00154 {
00155   // If there is no naming service, then ignore this call.
00156   if(CORBA::is_nil(namingContext))
00157       return 1;
00158 
00159   try
00160   {
00161 
00162       CosNaming::Name n;
00163       n.length(1);
00164       // Drill down through contexts.
00165       for(CORBA::ULong i=0; i<(name.length()-1); ++i)
00166       {
00167         n[0]=name[i];
00168         try
00169         {
00170           namingContext=namingContext->bind_new_context(n);
00171         }
00172         catch(CosNaming::NamingContext::AlreadyBound&)
00173         {
00174           CORBA::Object_var obj2 =namingContext->resolve(n);
00175           namingContext=CosNaming::NamingContext::_narrow(obj2);
00176         }
00177         // One of the context names is already bound to an object. Bail out!
00178         if(CORBA::is_nil(namingContext))
00179             return 2;
00180       }
00181       // Bind the object
00182       n[0]=name[name.length()-1];
00183       try
00184       {
00185         namingContext->bind(n,obj);
00186       }
00187       catch(CosNaming::NamingContext::AlreadyBound& ex)
00188       {
00189         // overwrite previously bound object
00190         namingContext->rebind(n,obj);
00191       }
00192       return 0;
00193 
00194   }
00195   catch (CORBA::COMM_FAILURE& ex)
00196   {
00197      cerr << "Caught system exception COMM_FAILURE, unable to contact the "
00198           << "naming service." << endl;
00199   }
00200   catch (omniORB::fatalException& ex)
00201   {
00202      cerr << "Caught omniORB fatal exception binding " << name << endl;
00203      throw;
00204   }
00205   catch (CORBA::SystemException& ex)
00206   {
00207      const char* exName  =NULL;
00208      const char* exMinor =NULL;
00209 #ifdef HAVE_OMNIORB4
00210      exName =ex.NP_minorString();
00211      exMinor=ex.NP_minorString();
00212 #endif
00213      cerr<<"System exception binding "<<name;
00214      if(exName)
00215        cerr<<": "<<exName;
00216      if(exMinor)
00217        cerr<<" ("<<exMinor<<")";
00218      cerr<<endl;
00219   }
00220   catch (CORBA::Exception& ex)
00221   {
00222      cerr<<"CORBA exception binding "<<name
00223 #ifdef HAVE_OMNIORB4
00224          <<": "<<ex._name()
00225 #endif
00226          << endl;
00227   }
00228   ::exit(1);
00229 }

Generated on Fri Aug 26 20:56:14 2005 for OmniEvents by  doxygen 1.4.3-20050530
omniEvents-2_6_2/doc/doxygen/a00173.html0000644000076400001440000002232510303671736020063 0ustar alexusers00000000000000 OmniEvents: naming.h Source File

naming.h

Go to the documentation of this file.
00001 // -*- Mode: C++; -*-
00002 //                            Package   : omniEvents
00003 // naming.h                   Created   : 1/10/99
00004 //                            Author    : Paul Nader (pwn)
00005 //
00006 //    Copyright (C) 1998 Paul Nader, 2003-2004 Alex Tingle.
00007 //
00008 //    This file is part of the omniEvents application.
00009 //
00010 //    omniEvents is free software; you can redistribute it and/or
00011 //    modify it under the terms of the GNU Lesser General Public
00012 //    License as published by the Free Software Foundation; either
00013 //    version 2.1 of the License, or (at your option) any later version.
00014 //
00015 //    omniEvents is distributed in the hope that it will be useful,
00016 //    but WITHOUT ANY WARRANTY; without even the implied warranty of
00017 //    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00018 //    Lesser General Public License for more details.
00019 //
00020 //    You should have received a copy of the GNU Lesser General Public
00021 //    License along with this library; if not, write to the Free Software
00022 //    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
00023 //
00024 // Description:
00025 //
00026 
00027 /*
00028   $Log: naming.h,v $
00029   Revision 1.3.2.1  2005/05/10 14:28:11  alextingle
00030   Updated copyrights to 2005.
00031 
00032   Revision 1.3  2004/07/26 16:22:25  alextingle
00033   New method: str2name() parses a stringified naming service name info a CosNaming::Name.
00034 
00035   Revision 1.2  2004/04/21 10:01:34  alextingle
00036   Removed unused code. Now silently fails if the Orb has no naming service ref.
00037 
00038   Revision 1.1  2003/12/21 16:19:49  alextingle
00039   Moved into 'src' directory as part of the change to POA implementation.
00040 
00041   Revision 1.2  2003/11/03 22:33:49  alextingle
00042   Removed all platform specific switches. Now uses autoconf, config.h.
00043 
00044   Revision 1.1.1.1  2002/09/25 19:00:32  shamus13
00045   Import of OmniEvents source tree from release 2.1.1
00046 
00047   Revision 1.1  2000/09/04 03:41:20  naderp
00048   Changed headers.
00049 
00050   Revision 1.0  1999/11/01 16:48:11  naderp
00051   Initial revision
00052 
00053 */
00054 
00055 #ifndef _NAMING_H_
00056 #define _NAMING_H_
00057 
00058 #ifdef HAVE_CONFIG_H
00059 #  include "config.h"
00060 #endif
00061 
00062 #ifdef HAVE_IOSTREAM
00063 #  include <iostream>
00064 #else
00065 #  include <iostream.h>
00066 #endif
00067 
00068 #ifdef HAVE_STD_IOSTREAM
00069 using namespace std;
00070 #endif
00071 
00072 #ifdef HAVE_OMNIORB3
00073 #  include <omniORB3/CORBA.h>
00074 #endif
00075 
00076 #ifdef HAVE_OMNIORB4
00077 #  include <omniORB4/CORBA.h>
00078 #endif
00079 
00080 ostream& operator<<(ostream& os, const CosNaming::Name &n);
00081 
00088 CosNaming::Name str2name(const char* namestr);
00089 
00091 int bindName2Object(
00092   CosNaming::NamingContext_ptr  namingContext,
00093   const CosNaming::Name &       name,
00094   CORBA::Object_ptr             obj
00095 );
00096 
00097 #endif /* _NAMING_H_ */

Generated on Fri Aug 26 20:56:14 2005 for OmniEvents by  doxygen 1.4.3-20050530
omniEvents-2_6_2/doc/doxygen/a00174.html0000644000076400001440000003043610303671736020066 0ustar alexusers00000000000000 OmniEvents: omniEvents.cc Source File

omniEvents.cc

Go to the documentation of this file.
00001 //                            Package   : omniEvents
00002 //  omniEvents.cc             Created   : 1/4/98
00003 //                            Author    : Paul Nader (pwn)
00004 //
00005 //    Copyright (C) 1998 Paul Nader, 2003-2005 Alex Tingle
00006 //
00007 //    This file is part of the omniEvents application.
00008 //
00009 //    omniEvents is free software; you can redistribute it and/or
00010 //    modify it under the terms of the GNU Lesser General Public
00011 //    License as published by the Free Software Foundation; either
00012 //    version 2.1 of the License, or (at your option) any later version.
00013 //
00014 //    omniEvents is distributed in the hope that it will be useful,
00015 //    but WITHOUT ANY WARRANTY; without even the implied warranty of
00016 //    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00017 //    Lesser General Public License for more details.
00018 //
00019 //    You should have received a copy of the GNU Lesser General Public
00020 //    License along with this library; if not, write to the Free Software
00021 //    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
00022 //
00023 
00024 #include "omniEvents.h"
00025 
00026 #define NEED_PACKAGE_INFO
00027 #ifdef HAVE_CONFIG_H
00028 #  include "config.h"
00029 #endif
00030 
00031 #ifdef HAVE_IOSTREAM
00032 #  include <iostream>
00033 #else
00034 #  include <iostream.h>
00035 #endif
00036 
00037 #ifdef HAVE_STDLIB_H
00038 #  include <stdlib.h> // exit()
00039 #endif
00040 
00041 #ifdef HAVE_STD_IOSTREAM
00042 using namespace std;
00043 #endif
00044 
00045 #include "defaults.h"
00046 
00047 namespace OmniEvents {
00048 
00049 void usage(int argc, char **argv)
00050 {
00051   const char* command =(argc?argv[0]:PACKAGE_NAME);
00052   cout<<
00053   "\n"
00054 #ifdef __WIN32__
00055   "just run it:         "<<command<<" [OPTIONS]\n"
00056   "install service:     "<<command<<" install [OPTIONS]\n"
00057   "uninstall service:   "<<command<<" uninstall\n"
00058   "set service options: "<<command<<" setoptions [OPTIONS]\n"
00059   "get service options: "<<command<<" getoptions\n"
00060 #else
00061   "Run the " PACKAGE_NAME " daemon.\n"
00062   "\n"
00063   "cold start syntax: "<<command<<" [-pPORT] "
00064 #  ifdef HAVE_OMNIORB4
00065     "[-aENDPOINT] "
00066 #  endif
00067     "[OPTIONS]\n"
00068   "warm start syntax: "<<command<<" [OPTIONS]\n"
00069 #endif
00070   "\n"
00071   "COLD START OPTIONS:\n"
00072   " -p PORT      configure server port [11169]\n"
00073 #ifdef HAVE_OMNIORB4
00074   " -a ENDPOINT  set alternate endPoint for failover\n"
00075 #endif
00076   "\n"
00077   "OPTIONS:\n"
00078   " -l PATH      full path to data directory* [" OMNIEVENTS_LOG_DEFAULT_LOCATION "]\n"
00079 #ifndef __WIN32__
00080   " -P PIDFILE   keep track of running instance in PIDFILE.\n"
00081 #endif
00082   " -N ID        factory naming service id   [\"EventChannelFactory\"]\n"
00083 #ifndef __WIN32__
00084   " -f           Stay in the foreground.\n"
00085 #endif
00086   " -t FILE      Send trace messages to FILE instead of syslog.\n"
00087   " -v           print the IOR of the new EventChannelFactory.\n"
00088   " -V           display version\n"
00089   " -h           display this help text\n"
00090   "\n"
00091   "*You can also set the environment variable "<<OMNIEVENTS_LOGDIR_ENV_VAR<<"\n"
00092   "to specify the directory where the data files are kept.\n" << endl;
00093   exit(0);
00094 }
00095 
00096 
00097 void insertArgs(int& argc, char**& argv, int idx, int nargs)
00098 {
00099   char** newArgv = new char*[argc+nargs];
00100   int i;
00101   for (i = 0; i < idx; i++) {
00102     newArgv[i] = argv[i];
00103   }
00104   for (i = idx; i < argc; i++) {
00105     newArgv[i+nargs] = argv[i];
00106   }
00107   argv = newArgv;
00108   argc += nargs;
00109 }
00110 
00111 } // end namespace OmniEvents
00112 

Generated on Fri Aug 26 20:56:14 2005 for OmniEvents by  doxygen 1.4.3-20050530
omniEvents-2_6_2/doc/doxygen/a00175.html0000644000076400001440000001117410303671736020065 0ustar alexusers00000000000000 OmniEvents: omniEvents.h Source File

omniEvents.h

Go to the documentation of this file.
00001 //                            Package   : omniEvents
00002 //  omniEvents.h              Created   : 2004/08/01
00003 //                            Author    : Alex Tingle.
00004 //
00005 //    Copyright (C) 2004 Alex Tingle.
00006 //
00007 //    This file is part of the omniEvents application.
00008 //
00009 //    omniEvents is free software; you can redistribute it and/or
00010 //    modify it under the terms of the GNU Lesser General Public
00011 //    License as published by the Free Software Foundation; either
00012 //    version 2.1 of the License, or (at your option) any later version.
00013 //
00014 //    omniEvents is distributed in the hope that it will be useful,
00015 //    but WITHOUT ANY WARRANTY; without even the implied warranty of
00016 //    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00017 //    Lesser General Public License for more details.
00018 //
00019 //    You should have received a copy of the GNU Lesser General Public
00020 //    License along with this library; if not, write to the Free Software
00021 //    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
00022 //
00023 
00024 #ifndef OMNIEVENTS__OMNIEVENTS_H
00025 #define OMNIEVENTS__OMNIEVENTS_H
00026 
00027 namespace OmniEvents
00028 {
00030   void insertArgs(int& argc, char**& argv, int idx, int nargs);
00031   void usage(int argc, char** argv);
00032 }
00033 
00034 #endif // OMNIEVENTS__OMNIEVENTS_H

Generated on Fri Aug 26 20:56:14 2005 for OmniEvents by  doxygen 1.4.3-20050530
omniEvents-2_6_2/doc/doxygen/a00176.html0000644000076400001440000021123410303671736020065 0ustar alexusers00000000000000 OmniEvents: omniEventsLog.cc Source File

omniEventsLog.cc

Go to the documentation of this file.
00001 // -*- Mode: C++; -*-
00002 //                            Package   : omniEvents
00003 //  omniEventsLog.cc          Created   : 1/10/99
00004 //                            Author    : Paul Nader (pwn)
00005 //
00006 //    Copyright (C) 1998 Paul Nader, 2003-2005 Alex Tingle.
00007 //
00008 //    This file is part of the omniEvents application.
00009 //
00010 //    omniEvents is free software; you can redistribute it and/or
00011 //    modify it under the terms of the GNU Lesser General Public
00012 //    License as published by the Free Software Foundation; either
00013 //    version 2.1 of the License, or (at your option) any later version.
00014 //
00015 //    omniEvents is distributed in the hope that it will be useful,
00016 //    but WITHOUT ANY WARRANTY; without even the implied warranty of
00017 //    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00018 //    Lesser General Public License for more details.
00019 //
00020 //    You should have received a copy of the GNU Lesser General Public
00021 //    License along with this library; if not, write to the Free Software
00022 //    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
00023 //
00024 // Description:
00025 //      
00026 
00027 /*
00028   $Log: omniEventsLog.cc,v $
00029   Revision 1.20.2.3  2005/05/10 14:28:11  alextingle
00030   Updated copyrights to 2005.
00031 
00032   Revision 1.20.2.2  2005/05/04 23:06:02  alextingle
00033   Fixed reference leak. Releases ref to factory servant.
00034 
00035   Revision 1.20.2.1  2004/11/16 21:46:11  alextingle
00036   Made several methods virtual to allow users of libomniEvents to override
00037   the default persistency behaviour. (Dirk O. Siebnich)
00038 
00039   Revision 1.20  2004/09/25 23:12:28  alextingle
00040   New method: Orb::reportObjectFailure() - flags unexpected failures at a higher
00041   priority than normal non-fatal exceptions.
00042 
00043   New macro: NP_MINORSTRING() - a safe interface to
00044   CORBA::SystemException::NP_minorString() that returns "??" when there is no
00045   mapping for the exception's minor code.
00046 
00047   Revision 1.19  2004/07/26 16:27:08  alextingle
00048   Support for NT service on windows: main() moved into daemon.cc.
00049   New (laxer) start up syntax. Port is now set with -p (not -s). There is no
00050   special cold start mode.
00051   More flexible naming service name option -N. (No more -K option).
00052 
00053   Revision 1.18  2004/07/16 08:45:46  alextingle
00054   New macro: IF_OMNIORB4(). Fixes warnings on AIX xlC_r.
00055 
00056   Revision 1.17  2004/07/15 16:18:45  alextingle
00057   Fixed casting warnings on Tru64.
00058 
00059   Revision 1.16  2004/07/06 12:46:34  alextingle
00060   Moved default macros into defaults.h
00061 
00062   Revision 1.15  2004/07/06 10:59:39  alextingle
00063   Tightened privileges on created files.
00064 
00065   Revision 1.14  2004/07/05 13:52:37  alextingle
00066   Improved iostream portability (again).
00067 
00068   Revision 1.13  2004/07/02 15:20:39  alextingle
00069   Added daemonization, syslog & pidfile support on Unix.
00070   Corrected trace levels for consistency with omniORB.
00071 
00072   Revision 1.12  2004/05/14 14:44:48  alextingle
00073   Explicitly cast 'flags' to type ios::openmode for platforms where this type is an enum.
00074 
00075   Revision 1.11  2004/04/20 20:23:03  alextingle
00076   Cross-platform friendly use of std:ifstream.
00077 
00078   Revision 1.10  2004/04/20 17:16:16  alextingle
00079   Corrected openOfstream() arg name/comments.
00080 
00081   Revision 1.9  2004/03/30 17:31:00  alextingle
00082   Added exception handlers to thread methods.
00083 
00084   Revision 1.8  2004/03/28 01:03:58  alextingle
00085   Refactored class omniEventsLog to allow for more EventChannelFactory parameters.\nNew omniEvents params: -v, -a (alternate endPoint).
00086 
00087   Revision 1.7  2004/03/23 13:29:34  alextingle
00088   Fixed bizarre compilation errors on Sun's CC.
00089 
00090   Revision 1.6  2004/01/11 16:57:26  alextingle
00091   New persistancy log file format, implemented by PersistNode.h/cc. The new format enables new nodes to be added and old ones erased by appending a single line to the file, rather than by re-persisting the whole application. This is much more efficient when lots of proxies are being created all at once. It's also a much simpler solution, with far fewer lines of code.
00092 
00093   Revision 1.5  2003/12/21 16:17:19  alextingle
00094   Added OmniEvents namespace. Now uses POA implementations.
00095 
00096   Revision 1.4  2003/11/14 14:05:21  alextingle
00097   New output() members functions. Eliminates the need for friend ostream
00098   functions that are problematic on earlier versions of Microsoft
00099   VisualC++. Improved helpfulness of usage and error messages.
00100 
00101   Revision 1.3  2003/11/03 22:41:00  alextingle
00102   Oops! Removed excess log comments.
00103 
00104   Revision 1.2  2003/11/03 22:38:39  alextingle
00105   Removed many platform specific switches, alas many remain. Now uses
00106     autoconf,config.h wherever possible.
00107   Removed local definition of strdup() - omniEvents.cc manages to get
00108     along without it, so it can't be needed here.
00109   Moved convoluted code to obtain hostname into its own header file:
00110     gethostname.h
00111   Moved code that constructs logfile names into its own private method,
00112     omniEventsLog::initializeFileNames()
00113   Added explicit initialisation for all `class omniEventsLog' members.
00114   Moved code that opens file stream into its own private method,
00115     omniEventsLog::openOfstream()
00116 
00117   Revision 1.1.1.1  2002/09/25 19:00:35  shamus13
00118   Import of OmniEvents source tree from release 2.1.1
00119 
00120   Revision 1.8  2000/09/26 09:20:26  naderp
00121   STL Default parameters rework.
00122   Configurable checkpoint period.
00123 
00124   Revision 1.7  2000/09/04 05:05:22  naderp
00125   Fixed problem with triggering multiple checkpoints.
00126 
00127   Revision 1.6  2000/08/30 04:38:24  naderp
00128   Fix to prevent recorder thread from terminating.
00129 
00130   Revision 1.5  2000/08/30 00:57:29  naderp
00131   Fixed broken persist method exiting after first checkpoint.
00132 
00133   Revision 1.4  2000/03/06 13:19:58  naderp
00134   Moved port from global to factory persistency data.
00135 
00136   Revision 1.3  2000/03/06 04:15:09  naderp
00137   Removed internal dependency between factory and Naming Service.
00138 
00139   Revision 1.2  2000/03/02 04:20:09  naderp
00140   Initialising factory refernce in init().
00141 
00142   Revision 1.1  2000/03/02 02:00:25  naderp
00143   Re-open active logfile during re-start.
00144 
00145   Revision 1.0  1999/11/01 17:04:08  naderp
00146   Initial revision
00147 
00148 */
00149 
00150 #include "omniEventsLog.h"
00151 
00152 #ifdef HAVE_CONFIG_H
00153 #  include "config.h"
00154 #endif
00155 
00156 #include <stdio.h>
00157 
00158 #ifdef HAVE_STDLIB_H
00159 #  include <stdlib.h>
00160 #endif
00161 
00162 #ifdef HAVE_SYS_TYPES_H
00163 #  include <sys/types.h>
00164 #endif
00165 
00166 #ifdef HAVE_SYS_STAT_H
00167 #  include <sys/stat.h>
00168 #endif
00169 
00170 #ifdef HAVE_FCNTL_H
00171 #  include <fcntl.h>
00172 #endif
00173 
00174 #if defined(__VMS) && __CRTL_VER < 70000000
00175 #  include <omniVMS/unlink.hxx>
00176 #endif
00177 
00178 #ifdef __WIN32__
00179 #  include <io.h>
00180 #  include <winbase.h>
00181 #  define stat(x,y) _stat(x,y)
00182 #  define unlink(x) _unlink(x)
00183 #  define STRUCT_STAT struct _stat
00184 #else
00185 #  define STRUCT_STAT struct stat
00186 #endif // __WIN32__
00187 
00188 #ifdef HAVE_UNISTD_H
00189 #  include <unistd.h>
00190 #endif
00191 
00192 #ifdef HAVE_LIBC_H
00193 #  include <libc.h>
00194 #endif
00195 
00196 #ifdef HAVE_SYS_PARAM_H
00197 #  include <sys/param.h>
00198 #endif
00199 
00200 #include <errno.h>
00201 #include <time.h>
00202 #include <assert.h>
00203 #include "gethostname.h"
00204 
00205 #include "EventChannelFactory.h"
00206 #include "Orb.h"
00207 #include "defaults.h"
00208 
00209 //
00210 // Set flags for use in calls to omniEventsLog::openOfstream()
00211 //
00212 
00213 #if defined(HAVE_FSTREAM_OPEN)
00214 #  define FLAG_TRUNCATE ios::trunc
00215 #  define FLAG_APPEND   ios::app
00216 #  define FLAG_SYNC     0
00217 #elif defined(HAVE_FSTREAM_ATTACH)
00218 #  if defined(__WIN32__)
00219 #    define FLAG_SYNC 0
00220 #  elif defined(O_SYNC)
00221 #    define FLAG_SYNC O_SYNC
00222 #  else
00223 #    define FLAG_SYNC O_FSYNC // FreeBSD 3.2 does not have O_SYNC???
00224 #  endif
00225 #  define FLAG_TRUNCATE O_CREAT|O_TRUNC
00226 #  define FLAG_APPEND   O_APPEND
00227 #else
00228 #  error "Can't open a file without ofstream::open() or ofstream::attach()"
00229 #endif
00230 
00231 //
00232 // Append ';' to VMS filenames to force the latest version.
00233 //
00234 
00235 #ifdef __VMS
00236 #  define VMS_SEMICOLON ";"
00237 #else
00238 #  define VMS_SEMICOLON
00239 #endif
00240 
00241 extern int yyparse();
00242 extern int yydebug;
00243 extern FILE *yyin;
00244 
00245 namespace OmniEvents {
00246 
00252 class timestamp
00253 {
00254   char str[29];
00255 public:
00256   timestamp(void)
00257   {
00258     str[0] = '[';
00259     str[1] = str[28] = '\0';
00260   }
00261   const char* t(void)
00262   {
00263     time_t t =time(NULL);
00264     char*  p =ctime(&t);
00265     if(strncmp(p, &str[1], 24) == 0)
00266         return "";
00267     strncpy(&str[1], p, 24);
00268     str[25] = ']';
00269     str[26] = ' ';
00270     str[27] = ' ';
00271     return str;
00272   }
00273 };
00274 
00275 timestamp ts;
00276 
00277 //------------------------------------------------------------------------
00278 //           omniEvents Log Implementation
00279 //------------------------------------------------------------------------
00280 
00281 omniEventsLog *omniEventsLog::theLog = NULL;
00282 
00283 omniEventsLog::omniEventsLog(const char* logdir) :
00284   _logstream(),
00285   _activeFilename(NULL),
00286   _backupFilename(NULL),
00287   _checkpointFilename(NULL),
00288   _workerThread(NULL),
00289   _factory(NULL),
00290   _checkpointNeeded(true),
00291   _lock()
00292 {
00293   omniEventsLog::theLog = this;
00294   initializeFileNames(logdir);
00295 }
00296 
00297 
00298 omniEventsLog::~omniEventsLog()
00299 {
00300   DB(20, "omniEventsLog::~omniEventsLog()");
00301 /*
00302   if(NULL != _workerThread)
00303   {
00304     _workerThread->join(0);
00305     _workerThread = NULL;
00306   }
00307 */
00308   if(NULL != _factory)
00309   {
00310     _factory->_remove_ref();
00311     _factory = NULL;
00312   }
00313   omniEventsLog::theLog = NULL;
00314 }
00315 
00316 
00317 bool omniEventsLog::fileExists(const char* filename) const
00318 {
00319   STRUCT_STAT sb;
00320   return(::stat(filename,&sb) == 0);
00321 }
00322 
00323 
00324 PersistNode* omniEventsLog::bootstrap(int port, const char* endPointNoListen)
00325 {
00326   //
00327   // Construct a new initialState, from the arguments.
00328   PersistNode* initialState=new PersistNode();
00329   PersistNode* ecf =initialState->addnode("ecf");
00330   ecf->addattr("port",port);
00331   if(endPointNoListen && endPointNoListen[0])
00332       ecf->addattr(string("endPointNoListen=")+endPointNoListen);
00333   return initialState;
00334 } // bootstrap()
00335 
00336 
00337 PersistNode* omniEventsLog::parse()
00338 {
00339   //
00340   // Restart - parse log file.
00341   ifstream persiststream(_activeFilename);
00342   if(!persiststream)
00343   {
00344     cerr << "Error: cannot read database file '"
00345          << _activeFilename << "'." << endl;
00346     if( fileExists(_backupFilename) ) 
00347     {
00348       cerr <<
00349         " Backup file '" << _backupFilename << "' exists.\n"
00350         " Either rename it to '" << _activeFilename << "' to\n"
00351         " to recover the server's state, or delete it to create a new\n"
00352         " database file." << endl;
00353     }
00354     exit(1);
00355   }
00356   PersistNode* initialState=new PersistNode(persiststream);
00357   persiststream.close();
00358   
00359   //
00360   // Check that the file contains a valid EventChannelFactory.
00361   const char* errorStr =NULL;
00362   PersistNode* ecf=initialState->child("ecf");
00363   if(!ecf)
00364       errorStr="Can't find EventChannelFactory.";
00365   else if(ecf->attrLong("port",-1)<=0)
00366       errorStr="EventChannelFactory is not assigned a valid port.";
00367 
00368   if(errorStr)
00369   {
00370     cerr<<"Error parsing database '"<<_activeFilename<<"'.\n"
00371         <<errorStr<<" Try deleting the file (and any backup)."<<endl;
00372     exit(1);
00373   }
00374 
00375   return initialState;
00376 } // parse()
00377 
00378 
00379 void omniEventsLog::incarnateFactory(PersistNode* initialState)
00380 {
00381   assert(initialState!=NULL);
00382 
00383   //
00384   // Open the logstream (The EventChannelFactory might want to write to it).
00385   try
00386   {
00387     openOfstream(_logstream,_activeFilename,FLAG_APPEND);
00388   }
00389   catch (IOError& ex)
00390   {
00391     cerr << "Error: cannot "
00392          << (fileExists(_activeFilename)?"write to":"create new")
00393          << " database file '" << _activeFilename
00394          << "': " << strerror(errno) << endl;
00395     cerr << "\nUse option '-l' or set the environment variable "
00396          << OMNIEVENTS_LOGDIR_ENV_VAR
00397          << "\nto specify the directory where the files are kept.\n"
00398          << endl;
00399     _logstream.close();
00400     unlink(_activeFilename);
00401     exit(1);
00402   }
00403 
00404   //
00405   // Recreate the persisted factory.
00406   PersistNode* ecf=initialState->child("ecf");
00407   assert(ecf!=NULL);
00408   _factory =new EventChannelFactory_i(*ecf);
00409   CORBA::Object_var obj;
00410   assert(!CORBA::is_nil(obj = _factory->_this()));
00411 } // incarnateFactory
00412 
00413 
00414 void omniEventsLog::runWorker()
00415 {
00416   assert(_factory!=NULL);
00417 
00418   _workerThread=new omniEventsLogWorker(
00419       this,
00420       &omniEventsLog::checkpoint, // member function pointer
00421       omni_thread::PRIORITY_NORMAL
00422     );
00423 }
00424 
00425 
00426 void omniEventsLog::output(ostream& os)
00427 {
00428   _factory->output(os);
00429   os<<endl;
00430 }
00431 
00432 
00433 void omniEventsLog::checkpoint(void)
00434 {
00435   int idle_time_btw_chkpt;
00436   static int firstCheckPoint = 1;
00437   char *itbc = getenv("OMNIEVENTS_ITBC");
00438   if (itbc == NULL || sscanf(itbc,"%d",&idle_time_btw_chkpt) != 1)
00439   {
00440     idle_time_btw_chkpt=OMNIEVENTS_LOG_CHECKPOINT_PERIOD;
00441   }
00442 
00443   omni_mutex mutex;
00444   omni_condition cond(&mutex);
00445 
00446   mutex.lock();
00447   while (1) {
00448 
00449     // Take an initial checkpoint the first time. All subsequent
00450     // checkpoints are conditionally tested on whether they are
00451     // needed or not.
00452 
00453     if (! firstCheckPoint)
00454     {
00455        unsigned long s, n;
00456        omni_thread::get_time(&s, &n, idle_time_btw_chkpt);
00457        cond.timedwait(s,n);
00458 
00459        _lock.lock();
00460        if(!_checkpointNeeded)
00461        {
00462           _lock.unlock();
00463           continue;
00464        }
00465     }
00466     else
00467     {
00468        _lock.lock();
00469        firstCheckPoint = 0;
00470     }
00471   
00472     DB(1,ts.t() << "Checkpointing Phase 1: Prepare.")
00473   
00474     ofstream ckpf;
00475     int fd = -1;
00476   
00477     try
00478     {
00479       try
00480       {
00481         openOfstream(ckpf,_checkpointFilename,FLAG_TRUNCATE|FLAG_SYNC,&fd);
00482       }
00483       catch(IOError& ex)
00484       {
00485         DB(0,ts.t() << "Error: cannot open checkpoint file '"
00486              << _checkpointFilename << "' for writing.")
00487         throw;
00488       }
00489   
00490       output(ckpf);
00491   
00492       ckpf.close();
00493       if(!ckpf)
00494           throw IOError();
00495   
00496   // a bug in sparcworks C++ means that the fd doesn't get closed.
00497 #if defined(__sunos__) && defined(__SUNPRO_CC) && __SUNPRO_CC < 0x500
00498       if(close(fd) < 0)
00499           throw IOError();
00500 #endif
00501   
00502     }
00503     catch(IOError& ex)
00504     {
00505       DB(0,ts.t()<<"I/O error writing checkpoint file: "<<strerror(errno)
00506            <<"\nAbandoning checkpoint")
00507       ckpf.close();
00508   // a bug in sparcworks C++ means that the fd doesn't get closed.
00509 #if defined(__sunos__) && defined(__SUNPRO_CC) && __SUNPRO_CC < 0x500
00510       close(fd);
00511 #endif
00512       unlink(_checkpointFilename);
00513       _lock.unlock();
00514       continue;
00515     }
00516   
00517     //
00518     // Now commit the checkpoint to become the active log.
00519     //
00520   
00521     DB(1,ts.t() << "Checkpointing Phase 2: Commit.")
00522 
00523   // a bug in sparcworks C++ means that the fd doesn't get closed.
00524 #if defined(__sunos__) && defined(__SUNPRO_CC) && __SUNPRO_CC < 0x500
00525     close(_logstream.rdbuf()->fd());
00526 #endif
00527   
00528     _logstream.close();
00529   
00530     unlink(_backupFilename);
00531   
00532 #if defined(__WIN32__)
00533     if(rename(_activeFilename, _backupFilename) != 0)
00534 #elif defined(__VMS)
00535     if(rename(_activeFilename, _backupFilename) < 0)
00536 #else
00537     if(link(_activeFilename,_backupFilename) < 0)
00538 #endif
00539     {
00540       // Failure here leaves old active and checkpoint file.
00541       DB(0,ts.t() << "Error: failed to link backup file '"
00542            << _backupFilename << "' to old log file '"
00543            << _activeFilename << "'.")
00544       exit(1);
00545     }
00546   
00547 #if !defined( __VMS) && !defined(__WIN32__)
00548     if(unlink(_activeFilename) < 0)
00549     {
00550       // Failure here leaves active and backup pointing to the same (old) file.
00551       DB(0,ts.t() << "Error: failed to unlink old log file '"
00552            << _activeFilename << "': " << strerror(errno))
00553       exit(1);
00554     }
00555 #endif
00556   
00557 #if defined(__WIN32__)
00558     if(rename(_checkpointFilename,_activeFilename) != 0)
00559 #elif defined(__VMS)
00560     if(rename(_checkpointFilename,_activeFilename) < 0)
00561 #else
00562     if(link(_checkpointFilename,_activeFilename) < 0)
00563 #endif
00564     {
00565       // Failure here leaves no active but backup points to the old file.
00566       DB(0,ts.t() << "Error: failed to link log file '" << _activeFilename
00567            << "' to checkpoint file '" << _checkpointFilename << "'.")
00568       exit(1);
00569     }
00570   
00571 #if !defined( __VMS) && !defined(__WIN32__)
00572     if (unlink(_checkpointFilename) < 0)
00573     {
00574       // Failure here leaves active and checkpoint pointing to the same file.
00575       DB(0,ts.t() << "Error: failed to unlink checkpoint file '"
00576            << _checkpointFilename << "'.")
00577       exit(1);
00578     }
00579 #endif
00580   
00581     try
00582     {
00583       openOfstream(_logstream,_activeFilename,FLAG_APPEND|FLAG_SYNC,&fd);
00584     }
00585     catch (IOError& ex)
00586     {
00587       DB(0,ts.t() << "Error: cannot open new log file '" << _activeFilename
00588            << "' for writing.")
00589       exit(1);
00590     }
00591   
00592     DB(1,ts.t() << "Checkpointing completed.")
00593   
00594     _checkpointNeeded=false;
00595     _lock.unlock();
00596   }
00597   mutex.unlock();
00598 } // checkpoint
00599 
00600 
00611 void omniEventsLog::initializeFileNames(const char* logdir)
00612 {
00613   if(!logdir)
00614       logdir=getenv(OMNIEVENTS_LOGDIR_ENV_VAR);
00615   if(!logdir)
00616       logdir=OMNIEVENTS_LOG_DEFAULT_LOCATION;
00617 
00618   const char* logname ="omnievents-";
00619   char hostname[MAXHOSTNAMELEN];
00620   if (0!=gethostname(hostname,MAXHOSTNAMELEN))
00621   {
00622     cerr << "Error: cannot get the name of this host." << endl;
00623     exit(1);
00624   }
00625   const char* sep ="";
00626 
00627 #if defined(__WIN32__)
00628   sep="\\";
00629 #elif defined(__VMS)
00630   char last( logdir[strlen(logdir)-1] );
00631   if (last != ':' && last != ']')
00632   {
00633     cerr << "Error: " << OMNIEVENTS_LOGDIR_ENV_VAR << " (" << logdir
00634          << ") is not a directory name." << endl;
00635     exit(1);
00636   }
00637 #else // Unix
00638   if (logdir[0] != '/')
00639   {
00640     cerr << "Error: " << OMNIEVENTS_LOGDIR_ENV_VAR << " (" << logdir
00641          << ") is not an absolute path name." << endl;
00642     exit(1);
00643   }
00644   if (logdir[strlen(logdir)-1] != '/')
00645       sep="/";
00646 #endif
00647 
00648   // VMS_SEMICOLON specifies latest version of the file on VMS
00649   // (essentially, we're saying we don't want to use VMS file versioning).
00650 
00651   setFilename(_activeFilename,logdir,sep,logname,hostname,".log" VMS_SEMICOLON);
00652   setFilename(_backupFilename,logdir,sep,logname,hostname,".bak" VMS_SEMICOLON);
00653   setFilename(
00654           _checkpointFilename,logdir,sep,logname,hostname,".ckp" VMS_SEMICOLON);
00655 }
00656 
00657 
00661 void omniEventsLog::setFilename(
00662   char*& filename,     const char* logdir,   const char* sep,
00663   const char* logname, const char* hostname, const char* ext)
00664 {
00665   size_t len=1+
00666     strlen(logdir)+strlen(sep)+strlen(logname)+strlen(hostname)+strlen(ext);
00667   filename=new char[len];
00668   sprintf(filename,"%s%s%s%s%s",logdir,sep,logname,hostname,ext);
00669 }
00670 
00671 
00685 void omniEventsLog::openOfstream(
00686   ofstream& s, const char* filename, int flags, int* fd)
00687 {
00688 #if defined(HAVE_FSTREAM_OPEN)
00689 #  ifdef HAVE_STD_IOSTREAM
00690       ios::openmode openmodeflags =ios::out|ios::openmode(flags);
00691 #  else
00692       int           openmodeflags =ios::out|flags;
00693 #  endif
00694 
00695 #  ifdef FSTREAM_OPEN_PROT
00696       s.open(filename,openmodeflags,0644);
00697 #  else
00698       s.open(filename,openmodeflags);
00699 #  endif
00700       if (!s)
00701           throw IOError();
00702 
00703 #elif defined(HAVE_FSTREAM_ATTACH)
00704 #  ifdef __WIN32__
00705       int localFd = _open(filename, O_WRONLY | flags, _S_IWRITE);
00706 #  else
00707       int localFd = open(filename, O_WRONLY | flags, 0644);
00708 #  endif /* __WIN32__ */
00709       if (localFd < 0)
00710           throw IOError();
00711       if(fd)
00712           (*fd)=localFd;
00713       s.attach(localFd);
00714 #endif
00715 }
00716 
00717 
00718 //------------------------------------------------------------------------
00719 //           OmniEvents Log Worker Implementation
00720 //------------------------------------------------------------------------
00721 omniEventsLogWorker::omniEventsLogWorker(
00722   omniEventsLog* object,
00723   Method         method,
00724   priority_t     priority
00725 ):omni_thread(NULL,priority)
00726 {
00727   DB(15, "omniEventsLogWorker::omniEventsLogWorker()");
00728 
00729   _method=method;
00730   _object=object;
00731 
00732   start_undetached();
00733 }
00734 
00735 
00736 void* omniEventsLogWorker::run_undetached(void *)
00737 {
00738   try {
00739     DB(15, "omniEventsLogWorker : run_undetached Start");
00740     (_object->*_method)();
00741     DB(15, "omniEventsLogWorker : run_undetached End");
00742   }
00743   catch (CORBA::SystemException& ex) {
00744     DB(0,"omniEventsLogWorker killed by CORBA system exception"
00745        IF_OMNIORB4(": "<<ex._name()<<" ("<<NP_MINORSTRING(ex)<<")") ".")
00746   }
00747   catch (CORBA::Exception& ex) {
00748     DB(0,"omniEventsLogWorker killed by CORBA exception"
00749        IF_OMNIORB4(": "<<ex._name()<<) ".")
00750   }
00751   catch(...) {
00752     DB(0,"omniEventsLogWorker killed by unknown exception.")
00753   }
00754   return NULL;
00755 }
00756 
00757 omniEventsLogWorker::~omniEventsLogWorker()
00758 {
00759   DB(20, "omniEventsLogWorker::~omniEventsLogWorker()");
00760 }
00761 
00762 
00763 }; // end namespace OmniEvents

Generated on Fri Aug 26 20:56:14 2005 for OmniEvents by  doxygen 1.4.3-20050530
omniEvents-2_6_2/doc/doxygen/a00177.html0000644000076400001440000006137210303671736020074 0ustar alexusers00000000000000 OmniEvents: omniEventsLog.h Source File

omniEventsLog.h

Go to the documentation of this file.
00001 // -*- Mode: C++; -*-
00002 //                            Package   : omniEvents
00003 // omniEventsLog.h            Created   : 1/10/99
00004 //                            Author    : Paul Nader (pwn)
00005 //
00006 //    Copyright (C) 1998 Paul Nader, 2003-2005 Alex Tingle.
00007 //
00008 //    This file is part of the omniEvents application.
00009 //
00010 //    omniEvents is free software; you can redistribute it and/or
00011 //    modify it under the terms of the GNU Lesser General Public
00012 //    License as published by the Free Software Foundation; either
00013 //    version 2.1 of the License, or (at your option) any later version.
00014 //
00015 //    omniEvents is distributed in the hope that it will be useful,
00016 //    but WITHOUT ANY WARRANTY; without even the implied warranty of
00017 //    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00018 //    Lesser General Public License for more details.
00019 //
00020 //    You should have received a copy of the GNU Lesser General Public
00021 //    License along with this library; if not, write to the Free Software
00022 //    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
00023 //
00024 // Description:
00025 //
00026 
00027 /*
00028   $Log: omniEventsLog.h,v $
00029   Revision 1.6.2.4  2005/05/10 14:56:06  alextingle
00030   All private members are now protected. Allows for flexible subclassing.
00031 
00032   Revision 1.6.2.3  2005/05/10 14:28:13  alextingle
00033   Updated copyrights to 2005.
00034 
00035   Revision 1.6.2.2  2005/04/27 20:49:31  alextingle
00036   Merge across changes from HEAD branch (see CHANGES_262. Change version number ready for release 2.6.2.
00037 
00038   Revision 1.6.2.1  2004/11/16 21:46:11  alextingle
00039   Made several methods virtual to allow users of libomniEvents to override
00040   the default persistency behaviour. (Dirk O. Siebnich)
00041 
00042   Revision 1.6  2004/09/11 23:08:39  alextingle
00043   WriteLock now non-copyable.
00044 
00045   Revision 1.5  2004/07/26 16:27:08  alextingle
00046   Support for NT service on windows: main() moved into daemon.cc.
00047   New (laxer) start up syntax. Port is now set with -p (not -s). There is no
00048   special cold start mode.
00049   More flexible naming service name option -N. (No more -K option).
00050 
00051   Revision 1.4  2004/04/20 17:16:17  alextingle
00052   Corrected openOfstream() arg name/comments.
00053 
00054   Revision 1.3  2004/03/28 01:03:58  alextingle
00055   Refactored class omniEventsLog to allow for more EventChannelFactory parameters.\nNew omniEvents params: -v, -a (alternate endPoint).
00056 
00057   Revision 1.2  2004/01/11 16:57:26  alextingle
00058   New persistancy log file format, implemented by PersistNode.h/cc. The new format enables new nodes to be added and old ones erased by appending a single line to the file, rather than by re-persisting the whole application. This is much more efficient when lots of proxies are being created all at once. It's also a much simpler solution, with far fewer lines of code.
00059 
00060   Revision 1.1  2003/12/21 16:19:49  alextingle
00061   Moved into 'src' directory as part of the change to POA implementation.
00062 
00063   Revision 1.4  2003/11/14 13:54:48  alextingle
00064   New output() members functions. Eliminates the need for friend ostream
00065   functions that are problematic on earlier versions of Microsoft
00066   VisualC++.
00067 
00068   Revision 1.3  2003/11/03 22:35:08  alextingle
00069   Removed all platform specific switches. Now uses autoconf, config.h.
00070   Added private helper functions initializeFileNames(), setFilename() &
00071   openOfstream() to simplify the implementation.
00072   Removed member `logdir', as it's only used during object construction.
00073   Renamed configuration macro LOGDIR_ENV_VAR to OMNIEVENTS_LOGDIR_ENV_VAR
00074   for consistency with other configuration macros.
00075 
00076   Revision 1.1.1.1.2.1  2002/09/28 22:20:51  shamus13
00077   Added ifdefs to enable omniEvents to compile
00078   with both omniORB3 and omniORB4. If __OMNIORB4__
00079   is defined during compilation, omniORB4 headers
00080   and command line option syntax is used, otherwise
00081   fall back to omniORB3 style.
00082 
00083   Revision 1.1.1.1  2002/09/25 19:00:32  shamus13
00084   Import of OmniEvents source tree from release 2.1.1
00085 
00086   Revision 1.3  2000/08/30 04:21:56  naderp
00087   Port to omniORB 3.0.1.
00088 
00089   Revision 1.2  2000/03/02 04:19:17  naderp
00090   Passing factory by reference to init() for initialisation.
00091 
00092   Revision 1.1  1999/11/02 13:40:56  naderp
00093   Rearranged data member definitions to avoid compiler warnings during
00094   initialisation.
00095 
00096   Revision 1.0  1999/11/01 16:48:21  naderp
00097   Initial revision
00098 
00099 */
00100 
00101 #ifndef _OMNIEVENTSLOG_H_
00102 #define _OMNIEVENTSLOG_H_
00103 
00104 #ifdef HAVE_CONFIG_H
00105 #  include "config.h"
00106 #endif
00107 
00108 #ifdef HAVE_IOSTREAM
00109 #  include <iostream>
00110 #  include <fstream>
00111 #else
00112 #  include <iostream.h>
00113 #  include <fstream.h>
00114 #endif
00115 
00116 #ifdef HAVE_STD_IOSTREAM
00117 using namespace std;
00118 #endif
00119 
00120 #ifdef HAVE_OMNIORB3
00121 #  include <omniORB3/CORBA.h>
00122 #endif
00123 
00124 #ifdef HAVE_OMNIORB4
00125 #  include <omniORB4/CORBA.h>
00126 #endif
00127 
00128 namespace OmniEvents {
00129 
00130 class EventChannelFactory_i;
00131 class PersistNode;
00132 
00133 #ifndef OMNIEVENTS_LOGDIR_ENV_VAR
00134 #  define OMNIEVENTS_LOGDIR_ENV_VAR "OMNIEVENTS_LOGDIR"
00135 #endif
00136 
00137 class omniEventsLog
00138 {
00139 public:
00144    static bool exists() { return NULL!=omniEventsLog::theLog; }
00145 
00146    omniEventsLog(const char* logdir=NULL);
00147    virtual ~omniEventsLog();
00148 
00149    bool fileExists(const char* filename) const;
00150    const char* activeFilename() const { return _activeFilename; }
00151    const char* backupFilename() const { return _backupFilename; }
00152 
00157    PersistNode* bootstrap(int port, const char* endPointNoListen);
00158 
00163    virtual PersistNode* parse();
00164    
00168    void incarnateFactory(PersistNode* initialState);
00169 
00173    virtual void runWorker();
00174    
00176    EventChannelFactory_i* factory() {return _factory;}
00177    
00182    void checkpoint(void);
00183 
00184    virtual void output(ostream& os);
00185 
00186 public:
00187   class IOError {};
00188 
00189 protected:
00190   virtual void initializeFileNames(const char* logdir);
00191   void setFilename(
00192     char*&      filename, 
00193     const char* logdir,
00194     const char* sep,
00195     const char* logname,
00196     const char* hostname,
00197     const char* ext
00198   );
00199   virtual void openOfstream(
00200     ofstream&   s,
00201     const char* filename,
00202     int         flags=0,
00203     int*        fd=NULL
00204   );
00205 
00206   static omniEventsLog*  theLog;
00207 
00208   ofstream               _logstream;
00209   char*                  _activeFilename;
00210   char*                  _backupFilename;
00211   char*                  _checkpointFilename;
00212   omni_thread*           _workerThread;       
00213   EventChannelFactory_i* _factory;
00214   bool                   _checkpointNeeded;
00215   omni_mutex             _lock;
00216   
00217   friend class WriteLock;
00218 };
00219 
00220 class omniEventsLogWorker : public omni_thread
00221 {
00222 public:
00223     typedef void (omniEventsLog::*Method)(void);
00224     omniEventsLogWorker(
00225       omniEventsLog* object,
00226       Method         method,
00227       priority_t     priority=PRIORITY_NORMAL
00228     );
00229     void* run_undetached(void *);
00230     ~omniEventsLogWorker();
00231 private:
00232     omniEventsLog* _object;
00233     Method         _method;
00234     omniEventsLogWorker(); 
00235 };
00236 
00237 
00242 class WriteLock
00243 {
00244 public:
00245   WriteLock():
00246     os(omniEventsLog::theLog->_logstream),
00247     l(omniEventsLog::theLog->_lock)
00248   {}
00249   ~WriteLock()
00250   {
00251     os.flush();
00252     omniEventsLog::theLog->_checkpointNeeded=true;
00253   }
00254   ostream& os;
00255 private:
00256   omni_mutex_lock l;
00257   WriteLock(const WriteLock&); 
00258 };
00259 
00260 }; // end namespace OmniEvents
00261 
00262 #endif /* _OMNIEVENTSLOG_H_ */

Generated on Fri Aug 26 20:56:14 2005 for OmniEvents by  doxygen 1.4.3-20050530
omniEvents-2_6_2/doc/doxygen/a00178.html0000644000076400001440000005773210303671736020102 0ustar alexusers00000000000000 OmniEvents: Orb.cc Source File

Orb.cc

Go to the documentation of this file.
00001 //                            Package   : omniEvents
00002 // Orb.cc                     Created   : 2003/12/04
00003 //                            Author    : Alex Tingle
00004 //
00005 //    Copyright (C) 2003-2005 Alex Tingle.
00006 //
00007 //    This file is part of the omniEvents application.
00008 //
00009 //    omniEvents is free software; you can redistribute it and/or
00010 //    modify it under the terms of the GNU Lesser General Public
00011 //    License as published by the Free Software Foundation; either
00012 //    version 2.1 of the License, or (at your option) any later version.
00013 //
00014 //    omniEvents is distributed in the hope that it will be useful,
00015 //    but WITHOUT ANY WARRANTY; without even the implied warranty of
00016 //    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00017 //    Lesser General Public License for more details.
00018 //
00019 //    You should have received a copy of the GNU Lesser General Public
00020 //    License along with this library; if not, write to the Free Software
00021 //    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
00022 //
00023 
00024 #include "Orb.h"
00025 
00026 #ifdef HAVE_IOSTREAM
00027 #  include <iostream>
00028 #else
00029 #  include <iostream.h>
00030 #endif
00031 
00032 #include <stdlib.h>
00033 #include <assert.h>
00034 
00035 #include "Callback.h"
00036 
00037 namespace OmniEvents {
00038 
00039 Orb Orb::_inst;
00040 
00041 
00042 Orb::~Orb()
00043 {
00044   omni_mutex_lock l(_deferredRequestsLock);
00045   list<RequestCallback_t>::iterator curr, next=_deferredRequests.begin();
00046   while(next!=_deferredRequests.end())
00047   {
00048     curr=next++;
00049     CORBA::release(curr->first);
00050     _deferredRequests.erase(curr);
00051   }
00052 }
00053 
00054 
00055 void Orb::resolveInitialReferences()
00056 {
00057   assert(!CORBA::is_nil(_orb));
00058 
00059   const char* action=""; // Use this variable to help report errors.
00060   try
00061   {
00062     CORBA::Object_var obj;
00063 
00064     action="resolve initial reference 'RootPOA'";
00065     obj=_orb->resolve_initial_references("RootPOA");
00066     _RootPOA=PortableServer::POA::_narrow(obj);
00067     if(CORBA::is_nil(_RootPOA))
00068         throw CORBA::OBJECT_NOT_EXIST();
00069 
00070     action="resolve initial reference 'omniINSPOA'";
00071     obj=_orb->resolve_initial_references("omniINSPOA");
00072     _omniINSPOA=PortableServer::POA::_narrow(obj);
00073     if(CORBA::is_nil(_omniINSPOA))
00074         throw CORBA::OBJECT_NOT_EXIST();
00075 
00076     // The naming service is optional.
00077     try
00078     {
00079       action="resolve initial reference 'NameService'";
00080       obj=_orb->resolve_initial_references("NameService");
00081       _NameService=CosNaming::NamingContext::_narrow(obj);
00082     }
00083     catch(CORBA::Exception& ex)
00084     {
00085       DB(1,"Warning - failed to "<<action<<
00086          IFELSE_OMNIORB4(". Exception: "<<ex._name(),"."))
00087     }
00088   
00089 #ifdef HAVE_OMNIORB4
00090     action="resolve initial reference 'POACurrent'";
00091     obj=_orb->resolve_initial_references("POACurrent");
00092     _POACurrent=PortableServer::Current::_narrow(obj);
00093     if(CORBA::is_nil(_POACurrent))
00094         throw CORBA::OBJECT_NOT_EXIST();
00095 #endif
00096 
00097     return;
00098   }
00099   catch(CORBA::ORB::InvalidName& ex) // resolve_initial_references
00100   {
00101     DB(0,"Failed to "<<action<<". InvalidName")
00102   }
00103   catch(CORBA::TRANSIENT& ex) // _narrow()
00104   {
00105     DB(0,"Failed to "<<action<<". TRANSIENT")
00106   }
00107   catch(CORBA::OBJECT_NOT_EXIST& ex) // _narrow()
00108   {
00109     DB(0,"Failed to "<<action<<". OBJECT_NOT_EXIST")
00110   }
00111   catch(CORBA::SystemException& ex)
00112   {
00113     DB(0,"Failed to "<<action<<"."
00114       IF_OMNIORB4(" "<<ex._name()<<" ("<<NP_MINORSTRING(ex)<<")") )
00115   }
00116   catch(CORBA::Exception& ex)
00117   {
00118     DB(0,"Failed to "<<action<<"." IF_OMNIORB4(" "<<ex._name()) )
00119   }
00120   exit(1);
00121 }
00122 
00123 
00124 void Orb::run()
00125 {
00126   while(!_shutdownRequested)
00127   {
00128     omni_thread::sleep(5);
00129 
00130     list<Callback*> usedCallbacks;
00131     {
00132       omni_mutex_lock l(_deferredRequestsLock);
00133       DB(20,"Polling "<<_deferredRequests.size()<<" deferred requests.")
00134       list<RequestCallback_t>::iterator curr, next=_deferredRequests.begin();
00135       while(next!=_deferredRequests.end())
00136       {
00137         curr=next++;
00138         if(curr->first->poll_response())
00139         {
00140           CORBA::Environment_ptr env=curr->first->env();// No need to release.
00141           if(!CORBA::is_nil(env) && env->exception())
00142           {
00143             CORBA::Exception* ex =env->exception(); // No need to free exception
00144             DB(10,"Deferred call to "<<curr->first->operation()
00145               <<"() got exception" IF_OMNIORB4(<<": "<<ex->_name()))
00146           }
00147           else if(curr->second)
00148           {
00149             DB(15,"Deferred call to "<<curr->first->operation()<<"() returned.")
00150             curr->second->callback(curr->first);
00151           }
00152           else
00153           {
00154             DB(15,"Orphan call to "<<curr->first->operation()<<"() returned.")
00155           }
00156           CORBA::release(curr->first);
00157           if(curr->second)
00158              usedCallbacks.push_back( curr->second );
00159           _deferredRequests.erase(curr);
00160         }
00161       } // end loop while()
00162     }
00163     // _deferredRequestsLock is now unlocked: clear away used callbacks.
00164     // (Cannot do this while _deferredRequestsLock is held, because of the
00165     // following deadlock:
00166     //  _remove_ref() -> ~Proxy() -> Orb::deferredRequest()
00167     while(!usedCallbacks.empty())
00168     {
00169       usedCallbacks.front()->_remove_ref();
00170       usedCallbacks.pop_front();
00171     }
00172   } // end loop while(!_shutdownRequested)
00173   
00174   // Clean up all outstanding requests.
00175   omni_mutex_lock l(_deferredRequestsLock);
00176   while(!_deferredRequests.empty())
00177   {
00178     _deferredRequests.front().first->get_response();
00179     CORBA::release(_deferredRequests.front().first);
00180     if(_deferredRequests.front().second)
00181        _deferredRequests.front().second->_remove_ref();
00182     _deferredRequests.pop_front();
00183   }
00184 }
00185 
00186 
00187 void Orb::deferredRequest(CORBA::Request_ptr req, Callback* callback)
00188 {
00189   if(_shutdownRequested)
00190      callback=NULL;
00191   // If _shutdownRequested and Orb::run() has already terminated, then
00192   // the request (req) will never be collected or released. This is sad, and it
00193   // makes omniORB complain - but at least it works:
00194   // Attempting to get_response() here can cause deadlock. Just releasing the
00195   // Request causes a SEGV when the call returns.
00196 
00197   if(callback)
00198      callback->_add_ref();
00199   omni_mutex_lock l(_deferredRequestsLock);
00200   _deferredRequests.push_back(RequestCallback_t(req,callback));
00201 }
00202 
00203 
00204 void Orb::reportObjectFailure(
00205   const char*       here,
00206   CORBA::Object_ptr obj,
00207   CORBA::Exception* ex
00208 )
00209 {
00210   assert(!CORBA::is_nil(obj));
00211 #ifdef HAVE_OMNIORB4
00212   {
00213     // Hack! The '!' signals object failure.
00214     // See DaemonImpl::log() in daemon_unix.cc.
00215     omniORB::logger log("omniEvents! Object failure: ");
00216     omniIOR* ior =obj->_PR_getobj()->_getIOR();
00217     // Log Repository ID.
00218     log<<ior->repositoryID();
00219     // Log Object ID. (Limitation: only display the first TAG_INTERNET_IOP)
00220     for(CORBA::ULong i=0; i<ior->iopProfiles().length(); i++)
00221     {
00222       if (ior->iopProfiles()[i].tag == IOP::TAG_INTERNET_IOP)
00223       {
00224         IIOP::ProfileBody pBody;
00225         IIOP::unmarshalProfile(ior->iopProfiles()[i],pBody);
00226         log<<" \"";
00227         for(CORBA::ULong j=0; j<pBody.object_key.length(); ++j)
00228         {
00229           char c=(char)pBody.object_key[j];
00230           log<<( (c>=' '&&c<='~')? c: '.' ); // Log object key as text
00231         }
00232         log<<"\" at "<<(const char*)pBody.address.host<<":"<<pBody.address.port;
00233         break; // ONLY DISPLAY FIRST!
00234       }
00235     }
00236     // Log exception.
00237     if(!ex)
00238     {
00239       log<<" threw unknown exception\n";
00240     }
00241     else
00242     {
00243       log<<" threw "<<ex->_name();
00244       CORBA::SystemException* sysex =CORBA::SystemException::_downcast(ex);
00245       if(sysex)
00246           log<<" ("<<NP_MINORSTRING(*sysex)<<")";
00247       log<<"\n";
00248     }
00249   }
00250 #endif
00251   {
00252     omniORB::logger log("omniEvents! Object failure detail: ");
00253     CORBA::String_var sior( Orb::inst()._orb->object_to_string(obj) );
00254     log<<sior<<" at "<<here<<"\n";
00255   }
00256 }
00257 
00258 
00259 }; // end namespace OmniEvents

Generated on Fri Aug 26 20:56:14 2005 for OmniEvents by  doxygen 1.4.3-20050530
omniEvents-2_6_2/doc/doxygen/a00179.html0000644000076400001440000003424210303671736020072 0ustar alexusers00000000000000 OmniEvents: Orb.h Source File

Orb.h

Go to the documentation of this file.
00001 //                            Package   : omniEvents
00002 // Orb.h                      Created   : 2003/12/04
00003 //                            Author    : Alex Tingle
00004 //
00005 //    Copyright (C) 2003-2005 Alex Tingle.
00006 //
00007 //    This file is part of the omniEvents application.
00008 //
00009 //    omniEvents is free software; you can redistribute it and/or
00010 //    modify it under the terms of the GNU Lesser General Public
00011 //    License as published by the Free Software Foundation; either
00012 //    version 2.1 of the License, or (at your option) any later version.
00013 //
00014 //    omniEvents is distributed in the hope that it will be useful,
00015 //    but WITHOUT ANY WARRANTY; without even the implied warranty of
00016 //    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00017 //    Lesser General Public License for more details.
00018 //
00019 //    You should have received a copy of the GNU Lesser General Public
00020 //    License along with this library; if not, write to the Free Software
00021 //    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
00022 //
00023 
00024 #ifndef OMNIEVENTS__ORB_H
00025 #define OMNIEVENTS__ORB_H
00026 
00027 #ifdef HAVE_CONFIG_H
00028 #  include "config.h"
00029 #endif
00030 
00031 #include <list>
00032 
00033 #ifdef HAVE_OMNIORB3
00034 #  include <omniORB3/CORBA.h>
00035 #endif
00036 
00037 #ifdef HAVE_OMNIORB4
00038 #  include <omniORB4/CORBA.h>
00039 #endif
00040 
00041 #ifdef HAVE_OMNIORB4
00042 #  define IFELSE_OMNIORB4(omniORB4_code,default_code) omniORB4_code
00043 #  define IF_OMNIORB4(omniORB4_code) omniORB4_code
00044 #else
00045 #  define IFELSE_OMNIORB4(omniORB4_code,default_code) default_code
00046 #  define IF_OMNIORB4(omniORB4_code)
00047 #endif
00048 
00049 #define DB(l,x) \
00050   {if(omniORB::trace(l)){omniORB::logger log("omniEvents: ");log<<x<<"\n";}}
00051 
00052 #define NP_MINORSTRING(systemException) \
00053   ((systemException).NP_minorString()?(systemException).NP_minorString():"??")
00054 
00055 #define AS_STR_2(x) #x
00056 #define AS_STR_1(x) AS_STR_2(x)
00057 
00058 #define HERE __FILE__ ":" AS_STR_1(__LINE__)
00059 
00060 #ifdef HAVE_STD_STL
00061 using namespace std;
00062 #endif
00063 
00064 namespace OmniEvents {
00065 
00066 class Callback;
00067 
00069 class Orb
00070 {
00071 private:
00072   static Orb _inst;
00073   typedef pair<CORBA::Request_ptr,Callback*> RequestCallback_t;
00074   list<RequestCallback_t> _deferredRequests;
00075   omni_mutex _deferredRequestsLock;
00076   bool _shutdownRequested;
00077   Orb():_shutdownRequested(false){}
00078   friend void OmniEvents_Orb_shutdown(int);
00079 
00080 public:
00081   inline static Orb& inst()
00082   {
00083     return _inst;
00084   }
00086   ~Orb();
00087 
00088   CORBA::ORB_var               _orb;
00089   PortableServer::POA_var      _RootPOA;
00090   PortableServer::POA_var      _omniINSPOA;
00091   CosNaming::NamingContext_var _NameService;
00092 #ifdef HAVE_OMNIORB4
00093   PortableServer::Current_ptr  _POACurrent;
00094 #endif
00095 
00097   void resolveInitialReferences();
00098   
00103   void run();
00104   
00109   void deferredRequest(CORBA::Request_ptr req, Callback* callback=NULL);
00110 
00112   void cancelCallback(const Callback* callback);
00113 
00117   void reportObjectFailure(
00118     const char*       here,
00119     CORBA::Object_ptr obj,
00120     CORBA::Exception* ex
00121   );
00122 
00126   void shutdown(int) { _shutdownRequested=true; }
00127 }; // end class Orb
00128 
00129 
00131 template<class T>
00132 typename T::_ptr_type string_to_(const char* oidStr)
00133 {
00134   CORBA::Object_var obj =Orb::inst()._orb->string_to_object(oidStr);
00135   if(CORBA::is_nil(obj.in()))
00136     throw CORBA::BAD_PARAM();
00137 
00138 #ifdef HAVE_OMNIORB4
00139   typename T::_var_type result =T::_unchecked_narrow(obj);
00140 #else
00141   typename T::_var_type result =T::_narrow(obj);
00142 #endif
00143   if(CORBA::is_nil(result.in()))
00144     throw CORBA::BAD_PARAM();
00145 
00146   return result._retn();
00147 }
00148 
00149 }; // end namespace OmniEvents
00150 
00151 #endif // OMNIEVENTS__ORB_H

Generated on Fri Aug 26 20:56:14 2005 for OmniEvents by  doxygen 1.4.3-20050530
omniEvents-2_6_2/doc/doxygen/a00180.html0000644000076400001440000004207710303671736020067 0ustar alexusers00000000000000 OmniEvents: PersistNode.cc Source File

PersistNode.cc

Go to the documentation of this file.
00001 //                            Package   : omniEvents
00002 // PersistNode.cc             Created   : 2004/04/29
00003 //                            Author    : Alex Tingle
00004 //
00005 //    Copyright (C) 2004 Alex Tingle.
00006 //
00007 //    This file is part of the omniEvents application.
00008 //
00009 //    omniEvents is free software; you can redistribute it and/or
00010 //    modify it under the terms of the GNU Lesser General Public
00011 //    License as published by the Free Software Foundation; either
00012 //    version 2.1 of the License, or (at your option) any later version.
00013 //
00014 //    omniEvents is distributed in the hope that it will be useful,
00015 //    but WITHOUT ANY WARRANTY; without even the implied warranty of
00016 //    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00017 //    Lesser General Public License for more details.
00018 //
00019 //    You should have received a copy of the GNU Lesser General Public
00020 //    License along with this library; if not, write to the Free Software
00021 //    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
00022 //
00023 
00024 #include "PersistNode.h"
00025 
00026 #include <stdlib.h>
00027 #include <stdio.h>
00028 
00029 namespace OmniEvents {
00030 
00031 
00032 PersistNode::PersistNode(istream& is)
00033 {
00034   while( readnode(is) ){}
00035 }
00036 
00037 PersistNode::~PersistNode()
00038 {
00039   for(map<string,PersistNode*>::iterator i=_child.begin(); i!=_child.end(); ++i)
00040       delete i->second;
00041 }
00042 
00043 void PersistNode::output(ostream& os,string name) const
00044 {
00045   if(!name.empty()) // Don't output root node.
00046   {
00047     os<<name<<'\n';
00048     for(map<string,string>::const_iterator i=_attr.begin();
00049         i!=_attr.end();
00050         ++i)
00051     {
00052       os<<" "<<i->first<<"="<<i->second<<'\n';
00053     }
00054     os<<" ;;\n";
00055     name+="/";
00056   }
00057   for(map<string,PersistNode*>::const_iterator i=_child.begin();
00058       i!=_child.end();
00059      ++i)
00060   {
00061     i->second->output(os,name+i->first);
00062   }
00063 }
00064 
00065 
00066 inline bool PersistNode::readnode(istream& is)
00067 {
00068   PersistNode* node =NULL;
00069   string tok;
00070   while(true)
00071   {
00072     if(!readtoken(is,tok) || tok==";;")
00073         return bool(node);
00074     else if(node)
00075         node->addattr(tok);
00076     else if(tok[0]=='-')
00077         delnode(tok.substr(1));
00078     else
00079         node=addnode(tok);
00080   }
00081 }
00082 
00083 inline bool PersistNode::readtoken(istream& is, string& tok)
00084 {
00085   while(is)
00086   {
00087     is>>tok;
00088     if(tok.empty())
00089         break;
00090     if(tok[0]!='#')
00091         return true;
00092     is.ignore(INT_MAX,'\n');
00093   }
00094   return false;
00095 }
00096 
00097 PersistNode* PersistNode::addnode(const string& name)
00098 {
00099   string::size_type pos =name.find('/');
00100   // get reference to Next node in the path.
00101   PersistNode*& newchild =_child[name.substr(0,pos)];
00102 
00103   if(pos==string::npos) // leaf: add new leaf.
00104   {
00105     if(newchild)
00106         delete newchild; // overwrite old leaf (and its children)
00107     newchild=new PersistNode();
00108     return newchild;
00109   }
00110   else // branch: just add the branch if it's missing, and then recurse.
00111   {
00112     if(!newchild)
00113         newchild=new PersistNode();
00114     return newchild->addnode(name.substr(pos+1));
00115   }
00116 }
00117 
00118 void PersistNode::delnode(const string& name)
00119 {
00120   string::size_type pos =name.find('/');
00121   // get reference to Next node in the path.
00122   map<string,PersistNode*>::iterator childpos =_child.find(name.substr(0,pos));
00123   if(childpos!=_child.end())
00124   {
00125     if(pos==string::npos) // leaf: delete leaf.
00126     {
00127       delete childpos->second;
00128       _child.erase(childpos);
00129     }
00130     else // branch: recurse
00131     {
00132       childpos->second->delnode(name.substr(pos+1));
00133     }
00134   }
00135 }
00136 
00137 void PersistNode::addattr(const string& keyvalue)
00138 {
00139   string::size_type pos =keyvalue.find('=');
00140   _attr[keyvalue.substr(0,pos)]=(pos==string::npos?"":keyvalue.substr(pos+1));
00141 }
00142 
00143 void PersistNode::addattr(const string& key, long value)
00144 {
00145   char buf[64];
00146   sprintf(buf,"%i",value);
00147   _attr[key]=string(buf);
00148 }
00149 
00150 bool PersistNode::hasAttr(const string& key) const
00151 {
00152   return( _attr.find(key)!=_attr.end() );
00153 }
00154 string PersistNode::attrString(const string& key, const string& fallback) const
00155 {
00156   map<string,string>::const_iterator pos=_attr.find(key);
00157   if(pos==_attr.end())
00158       return fallback;
00159   else
00160       return pos->second;
00161 }
00162 long PersistNode::attrLong(const string& key, long fallback) const
00163 {
00164   map<string,string>::const_iterator pos=_attr.find(key);
00165   if(pos==_attr.end())
00166       return fallback;
00167   else
00168       return atol(pos->second.c_str());
00169 }
00170 PersistNode* PersistNode::child(const string& key) const
00171 {
00172   map<string,PersistNode*>::const_iterator pos=_child.find(key);
00173   if(pos==_child.end())
00174       return NULL;
00175   else
00176       return pos->second;
00177 }
00178 
00179 }; // end namespace OmniEvents

Generated on Fri Aug 26 20:56:14 2005 for OmniEvents by  doxygen 1.4.3-20050530
omniEvents-2_6_2/doc/doxygen/a00181.html0000644000076400001440000002276110303671736020066 0ustar alexusers00000000000000 OmniEvents: PersistNode.h Source File

PersistNode.h

Go to the documentation of this file.
00001 //                            Package   : omniEvents
00002 // PersistNode.h              Created   : 2004/04/29
00003 //                            Author    : Alex Tingle
00004 //
00005 //    Copyright (C) 2004 Alex Tingle.
00006 //
00007 //    This file is part of the omniEvents application.
00008 //
00009 //    omniEvents is free software; you can redistribute it and/or
00010 //    modify it under the terms of the GNU Lesser General Public
00011 //    License as published by the Free Software Foundation; either
00012 //    version 2.1 of the License, or (at your option) any later version.
00013 //
00014 //    omniEvents is distributed in the hope that it will be useful,
00015 //    but WITHOUT ANY WARRANTY; without even the implied warranty of
00016 //    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00017 //    Lesser General Public License for more details.
00018 //
00019 //    You should have received a copy of the GNU Lesser General Public
00020 //    License along with this library; if not, write to the Free Software
00021 //    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
00022 //
00023 
00024 #ifndef OMNIEVENTS__PERSIST_NODE_H
00025 #define OMNIEVENTS__PERSIST_NODE_H
00026 
00027 #ifdef HAVE_CONFIG_H
00028 #  include "config.h"
00029 #endif
00030 
00031 #include <string>
00032 #include <map>
00033 
00034 #ifdef HAVE_IOSTREAM
00035 #  include <iostream>
00036 #else
00037 #  include <iostream.h>
00038 #endif
00039 
00040 #ifdef HAVE_STD_IOSTREAM
00041 using namespace std;
00042 #endif
00043 
00044 namespace OmniEvents {
00045 
00046 class PersistNode;
00047 
00048 class PersistNode
00049 {
00050 public:
00051   PersistNode(){}           
00052   PersistNode(istream& is); 
00053   ~PersistNode();           
00054   void   output(ostream& os,string name) const;
00055 
00056 public: // Construction
00057   inline bool  readnode(istream& is);
00058   inline bool  readtoken(istream& is, string& tok);
00059   PersistNode* addnode(const string& name);
00060   void         delnode(const string& name);
00061   void         addattr(const string& keyvalue);
00062   void         addattr(const string& key,long value);
00063 
00064 public: // Accessors
00065   bool         hasAttr(const string& key) const;
00066   string       attrString(const string& key, const string& fallback="") const;
00067   long         attrLong(  const string& key, long          fallback=0 ) const;
00068   PersistNode* child(const string& key) const;
00069 
00070 public: // Members
00071   map<string,PersistNode*> _child;
00072   map<string,string>       _attr;
00073 
00074   friend class omniEventsLog;
00075 };
00076 
00077 }; // end namespace OmniEvents
00078 
00079 #endif // OMNIEVENTS__PERSIST_NODE_H

Generated on Fri Aug 26 20:56:14 2005 for OmniEvents by  doxygen 1.4.3-20050530
omniEvents-2_6_2/doc/doxygen/a00182.html0000644000076400001440000004655710303671736020100 0ustar alexusers00000000000000 OmniEvents: ProxyManager.cc Source File

ProxyManager.cc

Go to the documentation of this file.
00001 //                            Package   : omniEvents
00002 // ProxyManager.cc            Created   : 2003/12/04
00003 //                            Author    : Alex Tingle
00004 //
00005 //    Copyright (C) 2003-2005 Alex Tingle.
00006 //
00007 //    This file is part of the omniEvents application.
00008 //
00009 //    omniEvents is free software; you can redistribute it and/or
00010 //    modify it under the terms of the GNU Lesser General Public
00011 //    License as published by the Free Software Foundation; either
00012 //    version 2.1 of the License, or (at your option) any later version.
00013 //
00014 //    omniEvents is distributed in the hope that it will be useful,
00015 //    but WITHOUT ANY WARRANTY; without even the implied warranty of
00016 //    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00017 //    Lesser General Public License for more details.
00018 //
00019 //    You should have received a copy of the GNU Lesser General Public
00020 //    License along with this library; if not, write to the Free Software
00021 //    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
00022 //
00023 
00024 #include "ProxyManager.h"
00025 #include "PersistNode.h"
00026 #include "Orb.h"
00027 #include "omniEventsLog.h"
00028 
00029 #include <string>
00030 #include <map>
00031 #include <assert.h>
00032 #include <memory>
00033 
00034 namespace OmniEvents {
00035 
00036 //
00037 //  ProxyManager
00038 //
00039 
00040 void
00041 ProxyManager::etherealize(
00042   const PortableServer::ObjectId& oid,
00043   PortableServer::POA_ptr         adapter,
00044   PortableServer::Servant         serv,
00045   CORBA::Boolean                  cleanup_in_progress,
00046   CORBA::Boolean                  remaining_activations
00047 )
00048 {
00049   auto_ptr<Proxy> narrowed( dynamic_cast<Proxy*>(serv) );
00050   assert(narrowed.get()!=NULL);
00051   set<Proxy*>::iterator pos =_servants.find(narrowed.get());
00052   if(pos!=_servants.end())
00053       _servants.erase(pos);
00054   else
00055       DB(1,"\t\teh? - POA attempted to etherealize unknown servant.");
00056   // memory freed when narrowed goes out of scope.
00057 }
00058 
00059 
00060 void ProxyManager::reincarnate(const PersistNode& node)
00061 {
00062   // Reincarnate all connections from node's children.
00063   for(map<string,PersistNode*>::const_iterator i=node._child.begin();
00064       i!=node._child.end();
00065       ++i)
00066   {
00067     assert(i->second!=NULL);
00068     PortableServer::Servant serv =
00069       this->incarnate(PortableServer::ObjectId(),_managedPoa);
00070     Proxy* proxy =dynamic_cast<Proxy*>(serv);
00071     assert(proxy!=NULL);
00072     try
00073     {
00074       proxy->reincarnate(i->first,*(i->second));
00075     }
00076     catch(CORBA::BAD_PARAM& ex)
00077     {
00078       // This will happen when IOR fails to narrow.
00079       DB(5,"Failed to reincarnate proxy: "<<i->first.c_str());
00080       _servants.erase(proxy);
00081       delete proxy;
00082     }
00083   }
00084 }
00085 
00086 
00087 void ProxyManager::output(ostream& os)
00088 {
00089   for(set<Proxy*>::iterator i =_servants.begin(); i!=_servants.end(); ++i)
00090   {
00091     (*i)->output(os);
00092   }
00093 }
00094 
00095 
00096 ProxyManager::ProxyManager(PortableServer::POA_ptr p)
00097 : Servant(p),
00098   _servants(),
00099   _managedPoa(PortableServer::POA::_nil())
00100 {}
00101 
00102 
00103 void ProxyManager::activate(const char* name)
00104 {
00105   using namespace PortableServer;
00106 
00107   // POLICIES:
00108   //  Lifespan          =PERSISTENT             // we can persist
00109   //  Assignment        =USER_ID                // write our own oid
00110   //  Uniqueness        =[default] UNIQUE_ID    // one servant per object
00111   //  ImplicitActivation=NO_IMPLICIT_ACTIVATION // disable auto activation
00112   //  RequestProcessing =USE_SERVANT_MANAGER
00113   //  ServantRetention  =[default] RETAIN
00114   //  Thread            =SINGLE_THREAD_MODEL    // keep it simple
00115 
00116   CORBA::PolicyList policies;
00117   policies.length(5);
00118   policies[0]=_poa->create_lifespan_policy(PERSISTENT);
00119   policies[1]=_poa->create_id_assignment_policy(USER_ID);
00120   policies[2]=_poa->create_implicit_activation_policy(NO_IMPLICIT_ACTIVATION);
00121   policies[3]=_poa->create_request_processing_policy(USE_SERVANT_MANAGER);
00122   policies[4]=_poa->create_thread_policy(SINGLE_THREAD_MODEL);
00123 
00124   try
00125   {  
00126     // Create a POA for this proxy type in this channel.
00127     CORBA::String_var parentName    =_poa->the_name();
00128     string            poaName       =string(parentName.in())+"."+name;
00129     POAManager_var    parentManager =_poa->the_POAManager();
00130     _managedPoa=_poa->create_POA(poaName.c_str(),parentManager.in(),policies);
00131   }
00132   catch(POA::AdapterAlreadyExists& ex) // create_POA
00133   {
00134     DB(0,"ProxyManager::ProxyManager() - POA::AdapterAlreadyExists")
00135   }
00136   catch(POA::InvalidPolicy& ex) // create_POA
00137   {
00138     DB(0,"ProxyManager::ProxyManager() - POA::InvalidPolicy: "<<ex.index)
00139   }
00140 
00141   // Destroy the policy objects (Not strictly necessary in omniORB)
00142   for(CORBA::ULong i=0; i<policies.length(); ++i)
00143       policies[i]->destroy();
00144 
00145   string oidStr =string(name)+"Manager";
00146   activateObjectWithId(oidStr.c_str());
00147   PortableServer::ServantManager_var manager(_this());
00148   _managedPoa->set_servant_manager(manager);
00149 }
00150 
00151 
00152 ProxyManager::~ProxyManager()
00153 {
00154   // pass
00155 }
00156 
00157 
00158 //
00159 // Proxy
00160 //
00161 
00162 
00163 Proxy::~Proxy()
00164 {
00165   if(!CORBA::is_nil(_req))
00166   {
00167     Orb::inst().deferredRequest(_req._retn());
00168     _req=CORBA::Request::_nil();
00169   }
00170 }
00171 
00172 Proxy::Proxy(PortableServer::POA_ptr poa)
00173 : Servant(poa),
00174   _req(CORBA::Request::_nil())
00175 {
00176   // pass
00177 }
00178 
00179 void Proxy::keyOutput(ostream& os, const char* name)
00180 {
00181   PortableServer::POA_var parentPoa=_poa->the_parent();
00182   CORBA::String_var channelName=parentPoa->the_name();
00183 
00184   PortableServer::ObjectId_var oid=_poa->servant_to_id(this);
00185   CORBA::String_var oidStr =PortableServer::ObjectId_to_string(oid.in());
00186   os<<"ecf/"<<channelName.in()<<"/"<<name<<"/"<<oidStr.in();
00187 }
00188 
00189 void Proxy::eraseKey(const char* name)
00190 {
00191   if(omniEventsLog::exists())
00192   {
00193     // Remove this key from the persistency logfile.
00194     WriteLock log;
00195     log.os<<"-";
00196     keyOutput(log.os,name);
00197     log.os<<'\n';
00198   }
00199 }
00200 
00201 void Proxy::basicOutput(
00202   ostream&          os,
00203   const char*       name,
00204   CORBA::Object_ptr target,
00205   const char*       extraAttributes
00206 )
00207 {
00208   keyOutput(os,name);
00209   if(!CORBA::is_nil(target))
00210   {
00211     CORBA::String_var iorstr =Orb::inst()._orb->object_to_string(target);
00212     os<<" IOR="<<iorstr.in();
00213     if(extraAttributes)
00214         os<<extraAttributes;
00215   }
00216   os<<" ;;\n";
00217 }
00218 
00219 
00220 }; // end namespace OmniEvents

Generated on Fri Aug 26 20:56:14 2005 for OmniEvents by  doxygen 1.4.3-20050530
omniEvents-2_6_2/doc/doxygen/a00183.html0000644000076400001440000002605210303671736020065 0ustar alexusers00000000000000 OmniEvents: ProxyManager.h Source File

ProxyManager.h

Go to the documentation of this file.
00001 //                            Package   : omniEvents
00002 // ProxyManager.h             Created   : 2003/12/04
00003 //                            Author    : Alex Tingle
00004 //
00005 //    Copyright (C) 2003-2005 Alex Tingle.
00006 //
00007 //    This file is part of the omniEvents application.
00008 //
00009 //    omniEvents is free software; you can redistribute it and/or
00010 //    modify it under the terms of the GNU Lesser General Public
00011 //    License as published by the Free Software Foundation; either
00012 //    version 2.1 of the License, or (at your option) any later version.
00013 //
00014 //    omniEvents is distributed in the hope that it will be useful,
00015 //    but WITHOUT ANY WARRANTY; without even the implied warranty of
00016 //    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00017 //    Lesser General Public License for more details.
00018 //
00019 //    You should have received a copy of the GNU Lesser General Public
00020 //    License along with this library; if not, write to the Free Software
00021 //    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
00022 //
00023 
00024 #ifndef OMNIEVENTS__PROXYMANAGER_H
00025 #define OMNIEVENTS__PROXYMANAGER_H
00026 
00027 #ifdef HAVE_CONFIG_H
00028 #  include "config.h"
00029 #endif
00030 
00031 #include <set>
00032 #include <string>
00033 
00034 #ifdef HAVE_IOSTREAM
00035 #  include <iostream>
00036 #else
00037 #  include <iostream.h>
00038 #endif
00039 
00040 #include "Servant.h"
00041 
00042 #ifdef HAVE_STD_IOSTREAM
00043 using namespace std;
00044 #endif
00045 
00046 namespace OmniEvents {
00047 
00048 class Proxy;
00049 class PersistNode;
00050 
00057 class ProxyManager
00058 : public virtual POA_PortableServer::ServantActivator,
00059   public Servant
00060 {
00061 public: // CORBA interface methods
00063   void etherealize(
00064     const PortableServer::ObjectId& oid,
00065     PortableServer::POA_ptr         adapter,
00066     PortableServer::Servant         serv,
00067     CORBA::Boolean                  cleanup_in_progress,
00068     CORBA::Boolean                  remaining_activations
00069   );
00070 
00071 public:
00073   void reincarnate(const PersistNode& node);
00075   void output(ostream& os);
00076 
00077 protected:
00079   ProxyManager(PortableServer::POA_ptr poa);
00080   virtual ~ProxyManager();
00081   
00087   void activate(const char* name);
00088 
00090   set<Proxy*>             _servants;
00095   PortableServer::POA_var _managedPoa;
00096 };
00097 
00098 
00104 class Proxy
00105 : public virtual PortableServer::ServantBase,
00106   public Servant
00107 {
00108 public:
00109   virtual ~Proxy();
00111   virtual void reincarnate(const string& oid, const PersistNode& node)=0;
00113   virtual void output(ostream &os)=0;
00114 protected:
00115   Proxy(PortableServer::POA_ptr poa);
00116 
00118   void keyOutput(ostream& os, const char* name);
00120   void eraseKey(const char* name);
00122   void basicOutput(
00123     ostream& os, const char* name,
00124     CORBA::Object_ptr target=CORBA::Object::_nil(),
00125     const char* extraAttributes=NULL
00126   );
00127  
00128   CORBA::Request_var _req;
00129 private:
00130   Proxy(const Proxy&); 
00131 };
00132 
00133 
00134 }; // end namespace OmniEvents
00135 
00136 #endif // OMNIEVENTS__PROXYMANAGER_H

Generated on Fri Aug 26 20:56:14 2005 for OmniEvents by  doxygen 1.4.3-20050530
omniEvents-2_6_2/doc/doxygen/a00184.html0000644000076400001440000006311010303671736020062 0ustar alexusers00000000000000 OmniEvents: ProxyPullConsumer.cc Source File

ProxyPullConsumer.cc

Go to the documentation of this file.
00001 //                            Package   : omniEvents
00002 // ProxyPullConsumer.cc       Created   : 2003/12/04
00003 //                            Author    : Alex Tingle
00004 //
00005 //    Copyright (C) 2003-2005 Alex Tingle.
00006 //
00007 //    This file is part of the omniEvents application.
00008 //
00009 //    omniEvents is free software; you can redistribute it and/or
00010 //    modify it under the terms of the GNU Lesser General Public
00011 //    License as published by the Free Software Foundation; either
00012 //    version 2.1 of the License, or (at your option) any later version.
00013 //
00014 //    omniEvents is distributed in the hope that it will be useful,
00015 //    but WITHOUT ANY WARRANTY; without even the implied warranty of
00016 //    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00017 //    Lesser General Public License for more details.
00018 //
00019 //    You should have received a copy of the GNU Lesser General Public
00020 //    License along with this library; if not, write to the Free Software
00021 //    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
00022 //
00023 
00024 #include "ProxyPullConsumer.h"
00025 #include "Orb.h"
00026 #include "omniEventsLog.h"
00027 #include "PersistNode.h"
00028 #include <assert.h>
00029 
00030 namespace OmniEvents {
00031 
00032 //
00033 //  ProxyPullConsumerManager
00034 //
00035 
00036 PortableServer::Servant
00037 ProxyPullConsumerManager::incarnate(
00038   const PortableServer::ObjectId& oid,
00039   PortableServer::POA_ptr         poa
00040 )
00041 {
00042   DB(20,"ProxyPullConsumerManager::incarnate()")
00043   ProxyPullConsumer_i* result =new ProxyPullConsumer_i(_managedPoa,_queue);
00044   _servants.insert(result);
00045   return result;
00046 }
00047 
00048 ProxyPullConsumerManager::ProxyPullConsumerManager(
00049   PortableServer::POA_ptr parentPoa,
00050   list<CORBA::Any*>&      q
00051 )
00052 : ProxyManager(parentPoa),
00053   _queue(q)
00054 {
00055   ProxyManager::activate("ProxyPullConsumer");
00056 }
00057 
00058 ProxyPullConsumerManager::~ProxyPullConsumerManager()
00059 {
00060   DB(20,"~ProxyPullConsumerManager()")
00061 }
00062 
00063 OMNIEVENTS__DEBUG_REF_COUNTS__DEFN(ProxyPullConsumerManager)
00064 
00065 CosEventChannelAdmin::ProxyPullConsumer_ptr
00066 ProxyPullConsumerManager::createObject()
00067 {
00068   return createNarrowedReference<CosEventChannelAdmin::ProxyPullConsumer>(
00069            _managedPoa.in(),
00070            CosEventChannelAdmin::_tc_ProxyPullConsumer->id()
00071          );
00072 }
00073 
00074 void ProxyPullConsumerManager::collect()
00075 {
00076   // Collect events from each servant in turn.
00077   for(set<Proxy*>::iterator i =_servants.begin(); i!=_servants.end(); ++i)
00078   {
00079     ProxyPullConsumer_i* proxy=dynamic_cast<ProxyPullConsumer_i*>(*i);
00080     proxy->collect();
00081   }
00082 }
00083 
00084 void ProxyPullConsumerManager::triggerRequest()
00085 {
00086   // Trigger each servant in turn.
00087   for(set<Proxy*>::iterator i =_servants.begin(); i!=_servants.end(); ++i)
00088   {
00089     ProxyPullConsumer_i* proxy=dynamic_cast<ProxyPullConsumer_i*>(*i);
00090     proxy->triggerRequest();
00091   }
00092 }
00093 
00094 void ProxyPullConsumerManager::disconnect()
00095 {
00096   for(set<Proxy*>::iterator i =_servants.begin(); i!=_servants.end(); ++i)
00097   {
00098     Proxy* p =*i; // Sun's CC requires this temporary.
00099     ProxyPullConsumer_i* ppc =static_cast<ProxyPullConsumer_i*>(p);
00100     // We are in the EventChannel's thread.
00101     // Make sure all calls go though the ProxyPullConsumer POA.
00102     CosEventChannelAdmin::ProxyPullConsumer_var ppcv =ppc->_this(); 
00103     ppcv->disconnect_pull_consumer();
00104   }
00105 }
00106 
00107 
00108 //
00109 //  ProxyPullConsumer_i
00110 //
00111 
00112 // CORBA interface methods
00113 
00114 void ProxyPullConsumer_i::connect_pull_supplier(
00115   CosEventComm::PullSupplier_ptr pullSupplier
00116 )
00117 {
00118   if(CORBA::is_nil(pullSupplier))
00119       throw CORBA::BAD_PARAM();
00120   if(!CORBA::is_nil(_target) || !CORBA::is_nil(_req))
00121       throw CosEventChannelAdmin::AlreadyConnected();
00122   _target=CosEventComm::PullSupplier::_duplicate(pullSupplier);
00123 
00124   if(omniEventsLog::exists())
00125   {
00126     WriteLock log;
00127     output(log.os);
00128   }
00129 }
00130 
00131 void ProxyPullConsumer_i::disconnect_pull_consumer()
00132 {
00133   DB(5,"ProxyPullConsumer_i::disconnect_pull_consumer()");
00134   eraseKey("SupplierAdmin/ProxyPullConsumer");
00135   deactivateObject();
00136   if(CORBA::is_nil(_target))
00137   {
00138     throw CORBA::OBJECT_NOT_EXIST(
00139       IFELSE_OMNIORB4(omni::OBJECT_NOT_EXIST_NoMatch,0),
00140       CORBA::COMPLETED_NO
00141     );
00142   }
00143   else
00144   {
00145     CORBA::Request_var req=_target->_request("disconnect_pull_supplier");
00146     _target=CosEventComm::PullSupplier::_nil();
00147     req->send_deferred();
00148     Orb::inst().deferredRequest(req._retn());
00149   }
00150 }
00151 
00152 //
00153 
00154 ProxyPullConsumer_i::ProxyPullConsumer_i(
00155   PortableServer::POA_ptr poa,
00156   list<CORBA::Any*>&      q
00157 )
00158 : Proxy(poa),
00159   _target(CosEventComm::PullSupplier::_nil()),
00160   _queue(q),
00161   _mode(Pull), // Prefer 'pull' method calls.
00162   _exceptionCount(0)
00163 {}
00164 
00165 ProxyPullConsumer_i::~ProxyPullConsumer_i()
00166 {
00167   DB(20,"~ProxyPullConsumer_i()")
00168 }
00169 
00170 void ProxyPullConsumer_i::collect()
00171 {
00172   if(!CORBA::is_nil(_req) && _req->poll_response()) 
00173   {
00174     const char* opname =_req->operation();
00175     assert(opname);
00176     CORBA::Environment_ptr env =_req->env(); // No need to release environment.
00177 
00178     if(!CORBA::is_nil(env) && env->exception()) 
00179     {
00180       CORBA::Exception* ex =env->exception(); // No need to free exception.
00181       DB(10,"ProxyPullConsumer got exception"
00182            IF_OMNIORB4(<<": "<<ex->_name())<<", op:"<<opname);
00183       if(0==strcmp("pull",opname) || 0==strcmp("try_pull",opname))
00184       {
00185         ++_exceptionCount;
00186         _mode=( _mode==Pull? TryPull: Pull ); // Try something else next time.
00187       }
00188       else
00189           DB(2,"Ignoring unrecognised response. operation:"<<opname);
00190       if(_exceptionCount>=4)
00191       {
00192         Orb::inst().reportObjectFailure(HERE,_target.in(),ex);
00193 
00194         // Try to notify the Supplier that the connection is closing.
00195         CORBA::Request_var req=_target->_request("disconnect_pull_supplier");
00196         req->send_deferred();
00197         Orb::inst().deferredRequest(req._retn());
00198 
00199         _target=CosEventComm::PullSupplier::_nil(); // disconnected
00200         eraseKey("SupplierAdmin/ProxyPullConsumer");
00201         deactivateObject();
00202       }
00203     }
00204     else  
00205     {
00206       // Do we have an event?
00207       bool hasEvent=false;
00208       if(0==strcmp("pull",opname))
00209       {
00210         hasEvent=true;
00211       }
00212       else if(0==strcmp("try_pull",opname))
00213       {
00214         CORBA::NVList_ptr args=_req->arguments(); // No need to release args.
00215         if(args->count()==1)
00216         {
00217           CORBA::NamedValue_var hasEventArg=args->item(0);
00218           if(0==strcmp(hasEventArg->name(),"has_event"))
00219           {
00220             CORBA::Any* a =hasEventArg->value();
00221             CORBA::Boolean b;
00222             CORBA::Any::to_boolean tb(b); //MS VC++6 is on drugs!
00223             hasEvent=(((*a)>>=tb) && b);
00224           }
00225         }
00226       }
00227       // Pick up an event, if we have one.
00228       if(hasEvent)
00229       {
00230         CORBA::Any* event =new CORBA::Any();
00231         _req->return_value() >>= (*event);
00232         _queue.push_back(event);
00233       }
00234       // Reset the exception count.
00235       _exceptionCount=0;
00236     }
00237     _req=CORBA::Request::_nil();
00238   }
00239 } // ProxyPullConsumer_i::end collect()
00240 
00241 void ProxyPullConsumer_i::triggerRequest()
00242 {
00243   if(CORBA::is_nil(_req) && !CORBA::is_nil(_target))
00244   {
00245     switch(_mode)
00246     {
00247       case Pull:
00248           _req=_target->_request("pull");
00249           break;
00250       case TryPull:
00251           _req=_target->_request("try_pull");
00252           _req->add_out_arg("has_event")<<=CORBA::Any::from_boolean(1);
00253           break;
00254       default:
00255           assert(0);
00256     }
00257     _req->set_return_type(CORBA::_tc_any);
00258     _req->send_deferred();
00259   }
00260 }
00261 
00262 void ProxyPullConsumer_i::reincarnate(
00263   const string&      oid,
00264   const PersistNode& node
00265 )
00266 {
00267   CosEventComm::PullSupplier_var pullSupplier =
00268     string_to_<CosEventComm::PullSupplier>(node.attrString("IOR").c_str());
00269   // Do not activate until we know that we have read a valid target.
00270   activateObjectWithId(oid.c_str());
00271   connect_pull_supplier(pullSupplier.in());
00272 }
00273 
00274 void ProxyPullConsumer_i::output(ostream& os)
00275 {
00276   basicOutput(os,"SupplierAdmin/ProxyPullConsumer",_target.in());
00277 }
00278 
00279 }; // end namespace OmniEvents

Generated on Fri Aug 26 20:56:14 2005 for OmniEvents by  doxygen 1.4.3-20050530
omniEvents-2_6_2/doc/doxygen/a00185.html0000644000076400001440000002574010303671736020072 0ustar alexusers00000000000000 OmniEvents: ProxyPullConsumer.h Source File

ProxyPullConsumer.h

Go to the documentation of this file.
00001 //                            Package   : omniEvents
00002 // ProxyPullCOnsumer.h        Created   : 2003/12/04
00003 //                            Author    : Alex Tingle
00004 //
00005 //    Copyright (C) 2003-2005 Alex Tingle.
00006 //
00007 //    This file is part of the omniEvents application.
00008 //
00009 //    omniEvents is free software; you can redistribute it and/or
00010 //    modify it under the terms of the GNU Lesser General Public
00011 //    License as published by the Free Software Foundation; either
00012 //    version 2.1 of the License, or (at your option) any later version.
00013 //
00014 //    omniEvents is distributed in the hope that it will be useful,
00015 //    but WITHOUT ANY WARRANTY; without even the implied warranty of
00016 //    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00017 //    Lesser General Public License for more details.
00018 //
00019 //    You should have received a copy of the GNU Lesser General Public
00020 //    License along with this library; if not, write to the Free Software
00021 //    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
00022 //
00023 
00024 #ifndef OMNIEVENTS__PROXYPULLCONSUMER_H
00025 #define OMNIEVENTS__PROXYPULLCONSUMER_H
00026 
00027 #ifdef HAVE_CONFIG_H
00028 #  include "config.h"
00029 #endif
00030 
00031 #include <list>
00032 
00033 #ifdef HAVE_IOSTREAM
00034 #  include <iostream>
00035 #else
00036 #  include <iostream.h>
00037 #endif
00038 
00039 #include "ProxyManager.h"
00040 
00041 #include "CosEventChannelAdmin.hh"
00042 
00043 #ifdef HAVE_STD_IOSTREAM
00044 using namespace std;
00045 #endif
00046 
00047 namespace OmniEvents {
00048 
00049 class ProxyPullConsumerManager
00050 : public ProxyManager,
00051   public PortableServer::RefCountServantBase
00052 {
00053 public: // CORBA interface methods
00054   PortableServer::Servant incarnate(
00055     const PortableServer::ObjectId& oid,
00056     PortableServer::POA_ptr         poa
00057   );
00058 public:
00059   ProxyPullConsumerManager(
00060     PortableServer::POA_ptr parentPoa,
00061     list<CORBA::Any*>& q
00062   );
00063   ~ProxyPullConsumerManager();
00064   OMNIEVENTS__DEBUG_REF_COUNTS__DECL
00065   CosEventChannelAdmin::ProxyPullConsumer_ptr createObject();
00066 
00077   void collect();
00078 
00083   void triggerRequest();
00084 
00086   void disconnect();
00087 
00088 private:
00089   list<CORBA::Any*>& _queue;
00090 };
00091 
00092 
00100 class ProxyPullConsumer_i
00101 : public virtual POA_CosEventChannelAdmin::ProxyPullConsumer,
00102   public Proxy
00103 {
00104 public: // CORBA interface methods
00105   void connect_pull_supplier(CosEventComm::PullSupplier_ptr pullSupplier);
00106   void disconnect_pull_consumer();
00107 public:
00108   ProxyPullConsumer_i(PortableServer::POA_ptr poa, list<CORBA::Any*>& q);
00109   ~ProxyPullConsumer_i();
00110 
00112   void collect();
00114   void triggerRequest();
00115 
00116   void reincarnate(const string& oid, const PersistNode& node);
00117   void output(ostream& os);
00118 private:
00119   CosEventComm::PullSupplier_var _target;
00120   list<CORBA::Any*>&             _queue;
00121   
00123   enum Mode { Pull=0, TryPull=1 };
00124   Mode _mode;
00125 
00129   int _exceptionCount;
00130 };
00131 
00132 }; // end namespace OmniEvents
00133 
00134 #endif // OMNIEVENTS__PROXYPULLCONSUMER_H

Generated on Fri Aug 26 20:56:14 2005 for OmniEvents by  doxygen 1.4.3-20050530
omniEvents-2_6_2/doc/doxygen/a00186.html0000644000076400001440000005054710303671736020076 0ustar alexusers00000000000000 OmniEvents: ProxyPullSupplier.cc Source File

ProxyPullSupplier.cc

Go to the documentation of this file.
00001 //                            Package   : omniEvents
00002 // ProxyPullSupplier.cc       Created   : 2003/12/04
00003 //                            Author    : Alex Tingle
00004 //
00005 //    Copyright (C) 2003-2005 Alex Tingle.
00006 //
00007 //    This file is part of the omniEvents application.
00008 //
00009 //    omniEvents is free software; you can redistribute it and/or
00010 //    modify it under the terms of the GNU Lesser General Public
00011 //    License as published by the Free Software Foundation; either
00012 //    version 2.1 of the License, or (at your option) any later version.
00013 //
00014 //    omniEvents is distributed in the hope that it will be useful,
00015 //    but WITHOUT ANY WARRANTY; without even the implied warranty of
00016 //    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00017 //    Lesser General Public License for more details.
00018 //
00019 //    You should have received a copy of the GNU Lesser General Public
00020 //    License along with this library; if not, write to the Free Software
00021 //    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
00022 //
00023 
00024 #include "ProxyPullSupplier.h"
00025 #include "EventChannel.h"
00026 #include "Orb.h"
00027 #include "omniEventsLog.h"
00028 #include "PersistNode.h"
00029 #include <assert.h>
00030 
00031 namespace OmniEvents {
00032 
00033 //
00034 //  ProxyPullSupplierManager
00035 //
00036 
00037 PortableServer::Servant ProxyPullSupplierManager::incarnate(
00038   const PortableServer::ObjectId& oid,
00039   PortableServer::POA_ptr         poa
00040 )
00041 {
00042   // Evict the oldest proxy servant, if we have reached the maximum number.
00043   if(_servants.size()>=_channel.maxNumProxies())
00044   {
00045     ProxyPullSupplier_i* oldest =NULL;
00046     unsigned long        age    =0;
00047     for(set<Proxy*>::iterator i=_servants.begin(); i!=_servants.end(); ++i)
00048         if(!oldest || dynamic_cast<ProxyPullSupplier_i*>(*i)->timestamp()<age)
00049         {
00050           oldest=dynamic_cast<ProxyPullSupplier_i*>(*i);
00051           age=oldest->timestamp();
00052         }
00053     DB(5,"Evicting oldest ProxyPullSupplier to make space for a new one")
00054     try{ oldest->disconnect_pull_supplier(); }catch(CORBA::OBJECT_NOT_EXIST&){}
00055   }
00056   // Make a new servant.
00057   ProxyPullSupplier_i* result =new ProxyPullSupplier_i(_managedPoa,_queue);
00058   _servants.insert(result);
00059   return result;
00060 }
00061 
00062 ProxyPullSupplierManager::ProxyPullSupplierManager(
00063   const EventChannel_i&   channel,
00064   PortableServer::POA_ptr parentPoa,
00065   EventQueue&             q
00066 )
00067 : ProxyManager(parentPoa),
00068   _queue(q),
00069   _channel(channel)
00070 {
00071   ProxyManager::activate("ProxyPullSupplier");
00072 }
00073 
00074 ProxyPullSupplierManager::~ProxyPullSupplierManager()
00075 {
00076   DB(20,"~ProxyPullSupplierManager()")
00077 }
00078 
00079 OMNIEVENTS__DEBUG_REF_COUNTS__DEFN(ProxyPullSupplierManager)
00080 
00081 CosEventChannelAdmin::ProxyPullSupplier_ptr
00082 ProxyPullSupplierManager::createObject()
00083 {  
00084   return createNarrowedReference<CosEventChannelAdmin::ProxyPullSupplier>(
00085            _managedPoa.in(),
00086            CosEventChannelAdmin::_tc_ProxyPullSupplier->id()
00087          );
00088 }
00089 
00090 void ProxyPullSupplierManager::disconnect()
00091 {
00092   for(set<Proxy*>::iterator i =_servants.begin(); i!=_servants.end(); ++i)
00093   {
00094     ProxyPullSupplier_i* pps =dynamic_cast<ProxyPullSupplier_i*>(*i);
00095     // We are in the EventChannel's thread.
00096     // Make sure all calls go though the ProxyPullSupplier POA.
00097     CosEventChannelAdmin::ProxyPullSupplier_var ppsv =pps->_this(); 
00098     ppsv->disconnect_pull_supplier();
00099 
00100   }
00101 }
00102 
00103 
00104 //
00105 //  ProxyPullSupplier_i
00106 //
00107 
00108 // CORBA interface methods
00109 
00110 void ProxyPullSupplier_i::connect_pull_consumer(
00111   CosEventComm::PullConsumer_ptr pullConsumer
00112 )
00113 {
00114   if(_connected || !CORBA::is_nil(_target) || !CORBA::is_nil(_req))
00115       throw CosEventChannelAdmin::AlreadyConnected();
00116   touch();
00117   _connected=true;
00118   if(!CORBA::is_nil(pullConsumer))
00119       _target=CosEventComm::PullConsumer::_duplicate(pullConsumer);
00120 
00121   if(omniEventsLog::exists())
00122   {
00123     WriteLock log;
00124     output(log.os);
00125   }
00126 }
00127 
00128 void ProxyPullSupplier_i::disconnect_pull_supplier()
00129 {
00130   DB(5,"ProxyPullSupplier_i::disconnect_pull_supplier()");
00131   touch();
00132   eraseKey("ConsumerAdmin/ProxyPullSupplier");
00133   deactivateObject();
00134   if(!_connected)
00135   {
00136     throw CORBA::OBJECT_NOT_EXIST(
00137       IFELSE_OMNIORB4(omni::OBJECT_NOT_EXIST_NoMatch,0),
00138       CORBA::COMPLETED_NO
00139     );
00140   }
00141   else if(!CORBA::is_nil(_target))
00142   {
00143     CORBA::Request_var req=_target->_request("disconnect_pull_consumer");
00144     _target=CosEventComm::PullConsumer::_nil();
00145     req->send_deferred();
00146     Orb::inst().deferredRequest(req._retn());
00147   }
00148 }
00149 
00150 CORBA::Any* ProxyPullSupplier_i::pull()
00151 {
00152   if(!_connected)
00153       throw CosEventComm::Disconnected();
00154   touch();
00155   if(moreEvents())
00156       return new CORBA::Any(*nextEvent());
00157   else
00158       throw CORBA::TRANSIENT(
00159         IFELSE_OMNIORB4(omni::TRANSIENT_CallTimedout,0),
00160         CORBA::COMPLETED_NO
00161       );
00162 }
00163 
00164 CORBA::Any* ProxyPullSupplier_i::try_pull(CORBA::Boolean& has_event)
00165 {
00166   if(!_connected)
00167       throw CosEventComm::Disconnected();
00168   touch();
00169   if(moreEvents())
00170   {
00171     has_event=1;
00172     return new CORBA::Any(*nextEvent());
00173   }
00174   else
00175   {
00176     has_event=0;
00177     return new CORBA::Any();
00178   }
00179 }
00180 
00181 //
00182 
00183 ProxyPullSupplier_i::ProxyPullSupplier_i(
00184   PortableServer::POA_ptr poa,
00185   EventQueue& q
00186 )
00187 : Proxy(poa),
00188   EventQueue::Reader(q),
00189   _target(CosEventComm::PullConsumer::_nil()),
00190   _connected(false),
00191   _timestamp(0)
00192 {
00193   touch();
00194 }
00195 
00196 ProxyPullSupplier_i::~ProxyPullSupplier_i()
00197 {
00198   DB(20,"~ProxyPullSupplier_i()")
00199 }
00200 
00201 void ProxyPullSupplier_i::reincarnate(
00202   const string&      oid,
00203   const PersistNode& node
00204 )
00205 {
00206   CosEventComm::PullConsumer_var pullConsumer =
00207     string_to_<CosEventComm::PullConsumer>(node.attrString("IOR").c_str());
00208   // Do not activate until we know that we have read a valid target.
00209   activateObjectWithId(oid.c_str());
00210   connect_pull_consumer(pullConsumer.in());
00211 }
00212 
00213 void ProxyPullSupplier_i::output(ostream& os)
00214 {
00215   basicOutput(os,"ConsumerAdmin/ProxyPullSupplier",_target.in());
00216 }
00217 
00218 inline void ProxyPullSupplier_i::touch()
00219 {
00220   unsigned long nsec; // dummy
00221   omni_thread::get_time(&_timestamp,&nsec);
00222 }
00223 
00224 }; // end namespace OmniEvents

Generated on Fri Aug 26 20:56:14 2005 for OmniEvents by  doxygen 1.4.3-20050530
omniEvents-2_6_2/doc/doxygen/a00187.html0000644000076400001440000002704210303671736020071 0ustar alexusers00000000000000 OmniEvents: ProxyPullSupplier.h Source File

ProxyPullSupplier.h

Go to the documentation of this file.
00001 //                            Package   : omniEvents
00002 // ProxyPullSupplier.h        Created   : 2003/12/04
00003 //                            Author    : Alex Tingle
00004 //
00005 //    Copyright (C) 2003-2005 Alex Tingle.
00006 //
00007 //    This file is part of the omniEvents application.
00008 //
00009 //    omniEvents is free software; you can redistribute it and/or
00010 //    modify it under the terms of the GNU Lesser General Public
00011 //    License as published by the Free Software Foundation; either
00012 //    version 2.1 of the License, or (at your option) any later version.
00013 //
00014 //    omniEvents is distributed in the hope that it will be useful,
00015 //    but WITHOUT ANY WARRANTY; without even the implied warranty of
00016 //    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00017 //    Lesser General Public License for more details.
00018 //
00019 //    You should have received a copy of the GNU Lesser General Public
00020 //    License along with this library; if not, write to the Free Software
00021 //    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
00022 //
00023 
00024 #ifndef OMNIEVENTS__PROXYPULLSUPPLIER_H
00025 #define OMNIEVENTS__PROXYPULLSUPPLIER_H
00026 
00027 #ifdef HAVE_CONFIG_H
00028 #  include "config.h"
00029 #endif
00030 
00031 #ifdef HAVE_IOSTREAM
00032 #  include <iostream>
00033 #else
00034 #  include <iostream.h>
00035 #endif
00036 
00037 #include "ProxyManager.h"
00038 #include "EventQueue.h"
00039 
00040 #include "CosEventChannelAdmin.hh"
00041 
00042 #ifdef HAVE_STD_IOSTREAM
00043 using namespace std;
00044 #endif
00045 
00046 namespace OmniEvents {
00047 
00048 class EventChannel_i;
00049 
00050 class ProxyPullSupplierManager
00051 : public ProxyManager,
00052   public PortableServer::RefCountServantBase
00053 {
00054 public: // CORBA interface methods
00055   PortableServer::Servant incarnate(
00056     const PortableServer::ObjectId& oid,
00057     PortableServer::POA_ptr         poa
00058   );
00059 public:
00060   ProxyPullSupplierManager(
00061     const EventChannel_i&   channel,
00062     PortableServer::POA_ptr parentPoa,
00063     EventQueue&             q
00064   );
00065   ~ProxyPullSupplierManager();
00066   OMNIEVENTS__DEBUG_REF_COUNTS__DECL
00067   CosEventChannelAdmin::ProxyPullSupplier_ptr createObject();
00068 
00070   void disconnect();
00071 
00072 private:
00073   const EventChannel_i& _channel;
00074   EventQueue& _queue; 
00075   int         _maxNumProxies; 
00076 };
00077 
00078 
00084 class ProxyPullSupplier_i
00085 : public virtual POA_CosEventChannelAdmin::ProxyPullSupplier,
00086   public Proxy,
00087   public EventQueue::Reader
00088 {
00089 public: // CORBA interface methods
00090   void connect_pull_consumer(CosEventComm::PullConsumer_ptr pullConsumer);
00091   void disconnect_pull_supplier();
00092   CORBA::Any* pull();
00093   CORBA::Any* try_pull(CORBA::Boolean& has_event);
00094 public:
00095   ProxyPullSupplier_i(PortableServer::POA_ptr poa, EventQueue& q);
00096   ~ProxyPullSupplier_i();
00097   void reincarnate(const string& oid, const PersistNode& node);
00098   void output(ostream& os);
00099   inline unsigned long timestamp() const {return _timestamp;}
00100 private:
00101   CosEventComm::PullConsumer_var _target;
00102   
00106   bool _connected;
00108   unsigned long _timestamp;
00110   inline void touch();
00111 };
00112 
00113 }; // end namespace OmniEvents
00114 
00115 #endif // OMNIEVENTS__PROXYPULLSUPPLIER_H

Generated on Fri Aug 26 20:56:14 2005 for OmniEvents by  doxygen 1.4.3-20050530
omniEvents-2_6_2/doc/doxygen/a00188.html0000644000076400001440000010621310303671736020070 0ustar alexusers00000000000000 OmniEvents: ProxyPushConsumer.cc Source File

ProxyPushConsumer.cc

Go to the documentation of this file.
00001 //                            Package   : omniEvents
00002 // ProxyPushConsumer.cc       Created   : 2003/12/04
00003 //                            Author    : Alex Tingle
00004 //
00005 //    Copyright (C) 2003,2005 Alex Tingle.
00006 //
00007 //    This file is part of the omniEvents application.
00008 //
00009 //    omniEvents is free software; you can redistribute it and/or
00010 //    modify it under the terms of the GNU Lesser General Public
00011 //    License as published by the Free Software Foundation; either
00012 //    version 2.1 of the License, or (at your option) any later version.
00013 //
00014 //    omniEvents is distributed in the hope that it will be useful,
00015 //    but WITHOUT ANY WARRANTY; without even the implied warranty of
00016 //    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00017 //    Lesser General Public License for more details.
00018 //
00019 //    You should have received a copy of the GNU Lesser General Public
00020 //    License along with this library; if not, write to the Free Software
00021 //    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
00022 //
00023 
00024 #include "ProxyPushConsumer.h"
00025 #include "ConsumerAdmin.h"
00026 #include "Orb.h"
00027 #include "omniEventsLog.h"
00028 #include "PersistNode.h"
00029 
00030 #include <assert.h>
00031 
00032 namespace OmniEvents {
00033 
00034 void ProxyPushConsumer_i::connect_push_supplier(
00035   CosEventComm::PushSupplier_ptr pushSupplier)
00036 {
00037   // pushSupplier is permitted to be nil.
00038   if(CORBA::is_nil(pushSupplier))
00039       return;
00040 
00041   string oidstr =currentObjectId();
00042   Connections_t::iterator pos =_connections.find(oidstr);
00043 
00044   if(pos!=_connections.end())
00045       throw CosEventChannelAdmin::AlreadyConnected();
00046 
00047   Connection* newConnection =
00048     new Connection(
00049           _channelName.in(),
00050           oidstr,
00051           CosEventComm::PushSupplier::_duplicate(pushSupplier)
00052         );
00053   _connections.insert( Connections_t::value_type(oidstr,newConnection) );
00054 
00055   // Test to see whether pushSupplier is a ProxyPushSupplier.
00056   // If so, then we will aggressively try to reconnect, when we are reincarnated
00057   CORBA::Request_var req =pushSupplier->_request("_is_a");
00058   req->add_in_arg() <<= CosEventChannelAdmin::_tc_ProxyPushSupplier->id();
00059   req->set_return_type(CORBA::_tc_boolean);
00060   req->send_deferred();
00061   Orb::inst().deferredRequest(req._retn(),newConnection); // Register callback
00062 
00063   if(omniEventsLog::exists())
00064   {
00065     WriteLock log;
00066     newConnection->output(log.os);
00067   }
00068 }
00069 
00070 
00071 void ProxyPushConsumer_i::disconnect_push_consumer()
00072 {
00073 #ifdef HAVE_OMNIORB4
00074   DB(5,"ProxyPushConsumer_i::disconnect_push_consumer()")
00075   string oidstr =currentObjectId();
00076   Connections_t::iterator pos =_connections.find(oidstr);
00077 
00078   if(pos!=_connections.end())
00079   {
00080     CORBA::Request_var req =
00081       pos->second->_target->_request("disconnect_push_supplier");
00082     pos->second->_remove_ref();
00083     _connections.erase(pos);
00084     // The following line could result in a reentrant callback, if this call was
00085     // not made through the POA => must erase the connection BEFORE this point.
00086     req->send_deferred();
00087     Orb::inst().deferredRequest(req._retn());
00088     if(omniEventsLog::exists())
00089     {
00090       // Erase this connection from the log file.
00091       WriteLock log;
00092       log.os<<"-ecf/"<<_channelName.in();
00093       log.os<<"/SupplierAdmin/ProxyPushConsumer/"<<oidstr<<'\n';
00094     }
00095   }
00096 #else /* Silently ignore disconnects with omniORB3 */
00097   DB(5,"Ignoring disconnect_push_consumer(). Upgrade to omniORB4!")
00098 #endif
00099 }
00100 
00101 
00102 void ProxyPushConsumer_i::push(const CORBA::Any& event)
00103 {
00104 #ifdef OMNIEVENTS_REAL_TIME_PUSH
00105   if(!_useLocalQueue)
00106   {
00107     _consumerAdmin.send(new CORBA::Any(event));
00108     _useLocalQueue=true;
00109   }
00110   else
00111 #endif
00112     _queue.push_back(new CORBA::Any(event));
00113 }
00114 
00115 
00116 ProxyPushConsumer_i::ProxyPushConsumer_i(
00117   PortableServer::POA_ptr p,
00118   list<CORBA::Any*>&      q,
00119   ConsumerAdmin_i&        consumerAdmin
00120 )
00121 : Servant(PortableServer::POA::_nil()),
00122   _connections(),
00123   _channelName(p->the_name()),
00124   _consumerAdmin(consumerAdmin),
00125   _queue(q),
00126   _useLocalQueue(false)
00127 {
00128   _consumerAdmin._add_ref();
00129 
00130   using namespace PortableServer;
00131 
00132   // POLICIES:
00133   //  Lifespan          =PERSISTENT             // we can persist
00134   //  Assignment        =USER_ID                // write our own oid
00135   //  Uniqueness        =MULTIPLE_ID            // only one servant
00136   //  ImplicitActivation=NO_IMPLICIT_ACTIVATION // disable auto activation
00137   //  RequestProcessing =USE_DEFAULT_SERVANT    // only one servant
00138   //  ServantRetention  =NON_RETAIN             // stateless POA
00139   //  Thread            =SINGLE_THREAD_MODEL    // keep it simple
00140 
00141   CORBA::PolicyList policies;
00142   policies.length(7);
00143   policies[0]=p->create_lifespan_policy(PERSISTENT);
00144   policies[1]=p->create_id_assignment_policy(USER_ID);
00145   policies[2]=p->create_id_uniqueness_policy(MULTIPLE_ID);
00146   policies[3]=p->create_implicit_activation_policy(NO_IMPLICIT_ACTIVATION);
00147   policies[4]=p->create_request_processing_policy(USE_DEFAULT_SERVANT);
00148   policies[5]=p->create_servant_retention_policy(NON_RETAIN);
00149   policies[6]=p->create_thread_policy(SINGLE_THREAD_MODEL);
00150 
00151   try
00152   {  
00153     // Create a POA for this proxy type in this channel.
00154     string          poaName =string(_channelName.in())+".ProxyPushConsumer";
00155     POAManager_var  parentManager =p->the_POAManager();
00156     _poa=p->create_POA(poaName.c_str(),parentManager.in(),policies);
00157   }
00158   catch(POA::AdapterAlreadyExists&) // create_POA
00159   {
00160     DB(0,"ProxyPushConsumer_i::ProxyPushConsumer_i() - "
00161           "POA::AdapterAlreadyExists")
00162   }
00163   catch(POA::InvalidPolicy& ex) // create_POA
00164   {
00165     DB(0,"ProxyPushConsumer_i::ProxyPushConsumer_i() - "
00166           "POA::InvalidPolicy: "<<ex.index)
00167   }
00168 
00169   // Destroy the policy objects (Not strictly necessary in omniORB)
00170   for(CORBA::ULong i=0; i<policies.length(); ++i)
00171       policies[i]->destroy();
00172 
00173   // This object is the POA's default servant.
00174   _poa->set_servant(this);
00175 }
00176 
00177 
00178 ProxyPushConsumer_i::~ProxyPushConsumer_i()
00179 {
00180   DB(20,"~ProxyPushConsumer_i()")
00181   for(Connections_t::iterator i =_connections.begin();
00182                               i!=_connections.end();
00183                             ++i)
00184   {
00185     i->second->_remove_ref();
00186   }
00187   _connections.clear();
00188 
00189   _consumerAdmin._remove_ref();
00190 }
00191 
00192 
00193 CosEventChannelAdmin::ProxyPushConsumer_ptr
00194 ProxyPushConsumer_i::createObject()
00195 {
00196   return createNarrowedReference<CosEventChannelAdmin::ProxyPushConsumer>(
00197            _poa.in(),
00198            CosEventChannelAdmin::_tc_ProxyPushConsumer->id()
00199          );
00200 }
00201 
00202 
00203 void ProxyPushConsumer_i::disconnect()
00204 {
00205   // Note. We are (probably) in the EventChannel's thread.
00206   Connections_t::iterator curr,next=_connections.begin();
00207   while(next!=_connections.end())
00208   {
00209     curr=next++;
00210     CORBA::Request_var req =
00211       curr->second->_target->_request("disconnect_push_supplier");
00212     curr->second->_remove_ref();
00213     _connections.erase(curr);
00214     // The following line could result in a reentrant callback
00215     // => must erase the connection BEFORE this point.
00216     req->send_deferred();
00217     Orb::inst().deferredRequest(req._retn());
00218   }
00219 }
00220 
00221 
00222 void ProxyPushConsumer_i::reincarnate(const PersistNode& node)
00223 {
00224   // Reincarnate all connections from node's children.
00225   for(map<string,PersistNode*>::const_iterator i=node._child.begin();
00226       i!=node._child.end();
00227       ++i)
00228   {
00229     const char* oidstr =i->first.c_str();
00230     string      ior( i->second->attrString("IOR") );
00231     bool        isProxy( i->second->attrLong("proxy") );
00232     assert(_connections.find(oidstr)==_connections.end());
00233     try
00234     {
00235       using namespace CosEventComm;
00236       using namespace CosEventChannelAdmin;
00237 
00238       PushSupplier_var supp =string_to_<PushSupplier>(ior.c_str());
00239       _connections.insert(Connections_t::value_type(
00240         oidstr,
00241         new Connection(_channelName.in(),oidstr,supp._retn(),isProxy)
00242       ));
00243       DB(5,"Reincarnated ProxyPushConsumer: "<<oidstr)
00244 
00245       // If supp is a ProxyPushSupplier, then try to reconnect.
00246       if(isProxy)
00247       {
00248         DB(15,"Attempting to reconnect ProxyPushConsumer: "<<oidstr)
00249         // This will only work if the proxy is implemented in the same way as
00250         // omniEvents, so connect_() automatically creates a proxy.
00251         ProxyPushSupplier_var proxySupp =
00252           string_to_<ProxyPushSupplier>(ior.c_str());
00253         PortableServer::ObjectId_var objectId =
00254           PortableServer::string_to_ObjectId(oidstr);
00255         CORBA::Object_var obj =
00256           _poa->create_reference_with_id(
00257             objectId.in(),
00258             CosEventChannelAdmin::_tc_ProxyPushConsumer->id()
00259           );
00260         PushConsumer_var thisCons =CosEventComm::PushConsumer::_narrow(obj);
00261         proxySupp->connect_push_consumer(thisCons.in());
00262         DB(7,"Reconnected ProxyPushConsumer: "<<oidstr)
00263       }
00264     }
00265     catch(CORBA::BAD_PARAM&) {
00266       // This will happen when IOR fails to narrow.
00267       DB(5,"Failed to reincarnate ProxyPushConsumer: "<<oidstr)
00268     }
00269     catch(CosEventChannelAdmin::AlreadyConnected&){ //connect_push_consumer()
00270       // The supplier doesn't need to be reconnected.
00271       DB(7,"Remote ProxyPushSupplier already connected: "<<oidstr)
00272     }
00273     catch(CosEventChannelAdmin::TypeError&){ // connect_push_consumer()
00274       // Don't know what to make of this...
00275       DB(2,"Remote ProxyPushSupplier threw TypeError: "<<oidstr)
00276     }
00277     catch(CORBA::OBJECT_NOT_EXIST&) {} // object 'supp' not responding.
00278     catch(CORBA::TRANSIENT&       ) {} // object 'supp' not responding.
00279     catch(CORBA::COMM_FAILURE&    ) {} // object 'supp' not responding.
00280   } // end loop for(i)
00281 }
00282 
00283 
00284 void ProxyPushConsumer_i::output(ostream& os) const
00285 {
00286   for(Connections_t::const_iterator i=_connections.begin();
00287       i!=_connections.end();
00288       ++i)
00289   {
00290     i->second->output(os);
00291   }
00292 }
00293 
00294 
00295 string ProxyPushConsumer_i::currentObjectId() const
00296 {
00297 #ifdef HAVE_OMNIORB4
00298   try
00299   {
00300     using namespace PortableServer;
00301     ObjectId_var oid =Orb::inst()._POACurrent->get_object_id();
00302     CORBA::String_var oidStr =ObjectId_to_string(oid.in());
00303     return string(oidStr.in());
00304   }
00305   catch(PortableServer::Current::NoContext&) // get_object_id()
00306   {
00307     DB(0,"No context!!")
00308   }
00309   catch(CORBA::BAD_PARAM&) // ObjectId_to_string()
00310   {
00311     // Should never get here in omniORB, because ObjectID is a char*.
00312     assert(0);
00313   }
00314   return "ERROR";
00315 #else
00316   throw CORBA::NO_IMPLEMENT();
00317 #endif
00318 }
00319 
00320 
00321 //
00322 //  ProxyPushConsumer_i::Connection
00323 //
00324 
00325 #if OMNIEVENTS__DEBUG_SERVANT
00326 int ProxyPushConsumer_i::Connection::_objectCount =0;
00327 #endif
00328 
00329 ProxyPushConsumer_i::Connection::Connection(
00330   const char*                    channelName,
00331   const string&                  oidstr,
00332   CosEventComm::PushSupplier_ptr pushSupplier,
00333   bool                           isProxy
00334 ):Callback(),
00335   _channelName(channelName),
00336   _oidstr(oidstr),
00337   _target(pushSupplier),
00338   _targetIsProxy(isProxy)
00339 {
00340 #if OMNIEVENTS__DEBUG_SERVANT
00341   ++_objectCount;
00342   DB(21,"ProxyPushConsumer_i::Connection::Connection() count="<<_objectCount)
00343 #endif
00344 }
00345 
00346 ProxyPushConsumer_i::Connection::~Connection()
00347 {
00348 #if OMNIEVENTS__DEBUG_SERVANT
00349   --_objectCount;
00350   DB(20,"ProxyPushConsumer_i::Connection::~Connection() count="<<_objectCount)
00351 #else
00352   DB(20,"ProxyPushConsumer_i::Connection::~Connection()")
00353 #endif
00354 }
00355 
00356 OMNIEVENTS__DEBUG_REF_COUNTS__DEFN(ProxyPushConsumer_i::Connection)
00357 
00358 void ProxyPushConsumer_i::Connection::callback(CORBA::Request_ptr req)
00359 {
00360   bool save =_targetIsProxy;
00361   if(req->return_value()>>=CORBA::Any::to_boolean(_targetIsProxy))
00362   {
00363     if(_targetIsProxy && omniEventsLog::exists())
00364     {
00365       WriteLock log;
00366       output(log.os);
00367       DB(15,"ProxyPushConsumer is federated.");
00368     }
00369   }
00370   else
00371   {
00372     DB(2,"ProxyPushConsumer got unexpected callback.");
00373     _targetIsProxy=save; // Reset it just to be sure.
00374   }
00375 }
00376 
00377 void ProxyPushConsumer_i::Connection::output(ostream& os) const
00378 {
00379   os<<"ecf/"<<_channelName;
00380   os<<"/SupplierAdmin/ProxyPushConsumer/"<<_oidstr;
00381 
00382   if(!CORBA::is_nil(_target.in()))
00383   {
00384     CORBA::String_var iorstr;
00385     iorstr = Orb::inst()._orb->object_to_string(_target.in());
00386     os<<" IOR="<<iorstr.in();
00387     if(_targetIsProxy)
00388         os<<" proxy=1";
00389   }
00390   os<<" ;;\n";
00391 }
00392 
00393 
00394 }; // end namespace OmniEvents

Generated on Fri Aug 26 20:56:14 2005 for OmniEvents by  doxygen 1.4.3-20050530
omniEvents-2_6_2/doc/doxygen/a00189.html0000644000076400001440000003161510303671736020074 0ustar alexusers00000000000000 OmniEvents: ProxyPushConsumer.h Source File

ProxyPushConsumer.h

Go to the documentation of this file.
00001 //                            Package   : omniEvents
00002 // ProxyPushConsumer.h        Created   : 2003/12/04
00003 //                            Author    : Alex Tingle
00004 //
00005 //    Copyright (C) 2003,2005 Alex Tingle.
00006 //
00007 //    This file is part of the omniEvents application.
00008 //
00009 //    omniEvents is free software; you can redistribute it and/or
00010 //    modify it under the terms of the GNU Lesser General Public
00011 //    License as published by the Free Software Foundation; either
00012 //    version 2.1 of the License, or (at your option) any later version.
00013 //
00014 //    omniEvents is distributed in the hope that it will be useful,
00015 //    but WITHOUT ANY WARRANTY; without even the implied warranty of
00016 //    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00017 //    Lesser General Public License for more details.
00018 //
00019 //    You should have received a copy of the GNU Lesser General Public
00020 //    License along with this library; if not, write to the Free Software
00021 //    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
00022 //
00023 
00024 #ifndef OMNIEVENTS__PROXYPUSHCONSUMER_H
00025 #define OMNIEVENTS__PROXYPUSHCONSUMER_H
00026 
00027 #ifdef HAVE_CONFIG_H
00028 #  include "config.h"
00029 #endif
00030 
00031 #include <string>
00032 #include <map>
00033 #include <list>
00034 
00035 #ifdef HAVE_IOSTREAM
00036 #  include <iostream>
00037 #else
00038 #  include <iostream.h>
00039 #endif
00040 
00041 #include "Callback.h"
00042 #include "Servant.h"
00043 
00044 #include "CosEventChannelAdmin.hh"
00045 
00046 #ifdef HAVE_STD_IOSTREAM
00047 using namespace std;
00048 #endif
00049 
00050 namespace OmniEvents {
00051 
00052 class PersistNode;
00053 class ConsumerAdmin_i;
00054 
00060 class ProxyPushConsumer_i
00061 : public virtual POA_CosEventChannelAdmin::ProxyPushConsumer,
00062   public Servant
00063 {
00064 public: // CORBA interface methods
00068   void connect_push_supplier(CosEventComm::PushSupplier_ptr pushSupplier);
00069 
00073   void disconnect_push_consumer();
00074 
00076   void push(const CORBA::Any& event);
00077 
00078 public:
00079   ProxyPushConsumer_i(
00080     PortableServer::POA_ptr parentPoa,
00081     list<CORBA::Any*>&      q,
00082     ConsumerAdmin_i&        consumerAdmin
00083   );
00084   virtual ~ProxyPushConsumer_i();
00085   
00086   void trigger() {_useLocalQueue=false;}
00087 
00094   CosEventChannelAdmin::ProxyPushConsumer_ptr createObject();
00095 
00097   void disconnect();
00098 
00100   void reincarnate(const PersistNode& node);
00102   void output(ostream& os) const;
00103 
00104 private:
00105   string currentObjectId() const;
00106   struct Connection : public Callback
00107   {
00108     const char*                    _channelName;
00109     string                         _oidstr;
00110     CosEventComm::PushSupplier_var _target;
00111     bool _targetIsProxy; 
00112 
00114     Connection(
00115       const char*                    channelName,
00116       const string&                  oidstr,
00117       CosEventComm::PushSupplier_ptr pushSupplier,
00118       bool                           isProxy=false
00119     );
00120     virtual ~Connection();
00121     OMNIEVENTS__DEBUG_REF_COUNTS__DECL
00123     void callback(CORBA::Request_ptr req);
00125     void output(ostream& os) const;
00126   private:
00127     Connection(); 
00128 #if OMNIEVENTS__DEBUG_SERVANT
00129     static int _objectCount;
00130 #endif
00131   };
00132 
00133   typedef map<string,Connection*> Connections_t;
00134   Connections_t      _connections;
00135   CORBA::String_var  _channelName;
00136   ConsumerAdmin_i&   _consumerAdmin;
00137   list<CORBA::Any*>& _queue;
00138   bool               _useLocalQueue; 
00139 };
00140 
00141 }; // end namespace OmniEvents
00142 
00143 #endif // OMNIEVENTS__PROXYPUSHCONSUMER_H

Generated on Fri Aug 26 20:56:14 2005 for OmniEvents by  doxygen 1.4.3-20050530
omniEvents-2_6_2/doc/doxygen/a00190.html0000644000076400001440000011672510303671736020072 0ustar alexusers00000000000000 OmniEvents: ProxyPushSupplier.cc Source File

ProxyPushSupplier.cc

Go to the documentation of this file.
00001 //                            Package   : omniEvents
00002 // ProxyPushSupplier.cc       Created   : 2003/12/04
00003 //                            Author    : Alex Tingle
00004 //
00005 //    Copyright (C) 2003,2005 Alex Tingle.
00006 //
00007 //    This file is part of the omniEvents application.
00008 //
00009 //    omniEvents is free software; you can redistribute it and/or
00010 //    modify it under the terms of the GNU Lesser General Public
00011 //    License as published by the Free Software Foundation; either
00012 //    version 2.1 of the License, or (at your option) any later version.
00013 //
00014 //    omniEvents is distributed in the hope that it will be useful,
00015 //    but WITHOUT ANY WARRANTY; without even the implied warranty of
00016 //    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00017 //    Lesser General Public License for more details.
00018 //
00019 //    You should have received a copy of the GNU Lesser General Public
00020 //    License along with this library; if not, write to the Free Software
00021 //    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
00022 //
00023 
00024 #include "ProxyPushSupplier.h"
00025 #include "Orb.h"
00026 #include "omniEventsLog.h"
00027 #include "PersistNode.h"
00028 #include <assert.h>
00029 
00030 namespace OmniEvents {
00031 
00035 class omni_mutex_kcol {
00036     omni_mutex& mutex;
00037 public:
00038     omni_mutex_kcol(omni_mutex& m) : mutex(m) { mutex.unlock(); }
00039     ~omni_mutex_kcol(void) { mutex.lock(); }
00040 private:
00041     // dummy copy constructor and operator= to prevent copying
00042     omni_mutex_kcol(const omni_mutex_kcol&);
00043     omni_mutex_kcol& operator=(const omni_mutex_kcol&);
00044 };
00045 
00046 
00047 //
00048 //  ProxyPushSupplierManager
00049 //
00050 
00051 PortableServer::Servant
00052 ProxyPushSupplierManager::incarnate(
00053   const PortableServer::ObjectId& oid,
00054   PortableServer::POA_ptr         poa
00055 )
00056 {
00057   ProxyPushSupplier_i* result =new ProxyPushSupplier_i(_managedPoa,_queue);
00058   PauseThenWake p(this);
00059   _servants.insert(result);
00060   return result;
00061 }
00062 
00063 void
00064 ProxyPushSupplierManager::etherealize(
00065   const PortableServer::ObjectId& oid,
00066   PortableServer::POA_ptr         adapter,
00067   PortableServer::Servant         serv,
00068   CORBA::Boolean                  cleanup_in_progress,
00069   CORBA::Boolean                  remaining_activations
00070 )
00071 {
00072   // This etherealize method needs a special implementation because
00073   // ProxyPushSupplier_i objects are freed with _remove_ref() rather than
00074   // delete.
00075   // Otherwise, this method strongly resembles ProxyManager::etherealize().
00076   omni_mutex_lock pause(_lock);
00077   ProxyPushSupplier_i* narrowed =dynamic_cast<ProxyPushSupplier_i*>(serv);
00078   assert(narrowed!=NULL);
00079   set<Proxy*>::iterator pos =_servants.find(narrowed);
00080   if(pos!=_servants.end())
00081   {
00082     _servants.erase(pos);
00083     narrowed->_remove_ref();
00084   }
00085   else
00086   {
00087     DB(1,"\t\teh? - POA attempted to etherealize unknown servant.");
00088   }
00089 }
00090 
00091 ProxyPushSupplierManager::ProxyPushSupplierManager(
00092   PortableServer::POA_ptr parentPoa,
00093   EventQueue& q
00094 )
00095 : ProxyManager(parentPoa),
00096   omni_thread(NULL,PRIORITY_HIGH),
00097   _queue(q),
00098   _lock(),_condition(&_lock),
00099   _refCount(1)
00100 {
00101   ProxyManager::activate("ProxyPushSupplier");
00102   start_undetached();
00103 }
00104 
00105 ProxyPushSupplierManager::~ProxyPushSupplierManager()
00106 {
00107   DB(20,"~ProxyPushSupplierManager()")
00108 }
00109 
00110 CosEventChannelAdmin::ProxyPushSupplier_ptr
00111 ProxyPushSupplierManager::createObject()
00112 {  
00113   return createNarrowedReference<CosEventChannelAdmin::ProxyPushSupplier>(
00114            _managedPoa.in(),
00115            CosEventChannelAdmin::_tc_ProxyPushSupplier->id()
00116          );
00117 }
00118 
00119 void ProxyPushSupplierManager::disconnect()
00120 {
00121   for(set<Proxy*>::iterator i =_servants.begin(); i!=_servants.end(); ++i)
00122   {
00123     Proxy* p =*i; // Sun's CC requires this temporary.
00124     ProxyPushSupplier_i* pps =static_cast<ProxyPushSupplier_i*>(p);
00125     // We are in the EventChannel's thread.
00126     // Make sure all calls go though the ProxyPushSupplier POA.
00127     CosEventChannelAdmin::ProxyPushSupplier_var ppsv =pps->_this(); 
00128     ppsv->disconnect_push_supplier();
00129   }
00130 }
00131 
00132 void*
00133 ProxyPushSupplierManager::run_undetached(void*)
00134 {
00135   // This loop repeatedly triggers all of the servants in turn. As long as
00136   // something happens each time, then we loop as fast as we can.
00137   // As soon as activity dries up, we start to wait longer and longer between
00138   // loops (up to a maximum). When there is no work to do, just block until
00139   // a new event arrives.
00140   //
00141   // Rationale: The faster we loop the more events we can deliver to each
00142   // consumer per second. However, when nothing is happening, this busy loop
00143   // just soaks up CPU and kills performance. The optimum sleep time varies
00144   // wildly from platform to platform, and also depends upon the typical ping
00145   // time to the consumers.
00146   //
00147   // This dynamic approach should deliver reasonable performance when things
00148   // are hectic, but not soak up too much CPU when not much is happening.
00149   //
00150   const unsigned long sleepTimeNanosec0 =0x8000;   // 33us (doubled before use)
00151   const unsigned long maxSleepNanosec   =0x800000; // 8.4ms
00152   unsigned long sleepTimeNanosec =sleepTimeNanosec0;
00153 
00154   omni_mutex_lock conditionLock(_lock);
00155   while(true)
00156   {
00157     try {
00158       if(_refCount<1)
00159           break;
00160 
00161       bool busy=false;
00162       bool waiting=false;
00163 
00164       // Trigger each servant in turn.
00165       for(set<Proxy*>::iterator i =_servants.begin(); i!=_servants.end(); ++i)
00166       {
00167         Proxy* p =*i; // Sun's CC requires this temporary.
00168         ProxyPushSupplier_i* pps =static_cast<ProxyPushSupplier_i*>(p);
00169         pps->trigger(busy,waiting);
00170       }
00171 
00172       if(busy)
00173       {
00174         // Something happened last time round. So we'll be optimistic and
00175         // immediately go round for another go. Briefly unlock the mutex first,
00176         // just to let the other kids get in if they need to.
00177         omni_mutex_kcol l(_lock); // 'lock' reversed!
00178         // Reset the sleep time.
00179         sleepTimeNanosec=sleepTimeNanosec0;
00180       }
00181       else if(waiting)
00182       {
00183         // Nothing happened, so we'll wait for a bit and then give it another
00184         // go. Each time we wait for twice as long, up to the maximum.
00185         if(sleepTimeNanosec<maxSleepNanosec)
00186             sleepTimeNanosec<<=1; // (multiply by 2)
00187         unsigned long sec,nsec;
00188         omni_thread::get_time(&sec,&nsec,0,sleepTimeNanosec);
00189         _condition.timedwait(sec,nsec);
00190       }
00191       else
00192       {
00193         // There is nothing to do, so block until a new event arrives.
00194         _condition.wait();
00195       }
00196 
00197     }
00198     catch (CORBA::SystemException& ex) {
00199       DB(2,"ProxyPushSupplierManager ignoring CORBA system exception"
00200          IF_OMNIORB4(": "<<ex._name()<<" ("<<NP_MINORSTRING(ex)<<")") ".")
00201     }
00202     catch (CORBA::Exception& ex) {
00203       DB(2,"ProxyPushSupplierManager ignoring CORBA exception"
00204          IF_OMNIORB4(": "<<ex._name()<<) ".")
00205     }
00206     catch(...) {
00207       DB(2,"ProxyPushSupplierManager thread killed by unknown exception.")
00208       break;
00209     }
00210   }
00211   return NULL;
00212 }
00213 
00214 void ProxyPushSupplierManager::_add_ref()
00215 {
00216 #if OMNIEVENTS__DEBUG_REF_COUNTS
00217   DB(20,"ProxyPushSupplierManager::_add_ref()")
00218 #endif
00219   omni_mutex_lock pause(_lock);
00220   ++_refCount;
00221 }
00222 
00223 void ProxyPushSupplierManager::_remove_ref()
00224 {
00225 #if OMNIEVENTS__DEBUG_REF_COUNTS
00226   DB(20,"ProxyPushSupplierManager::_remove_ref()")
00227 #endif
00228   int myref;
00229   {
00230     PauseThenWake p(this);
00231     myref = --_refCount;
00232   }
00233   if(myref<0)
00234   {
00235     DB(2,"ProxyPushSupplierManager has negative ref count! "<<myref)
00236   }
00237   else if(myref==0)
00238   {
00239     DB(15,"ProxyPushSupplierManager has zero ref count -- shutdown.")
00240     join(NULL);
00241   }
00242 }
00243 
00244 
00245 //
00246 //  ProxyPushSupplier_i
00247 //
00248 
00249 void ProxyPushSupplier_i::connect_push_consumer(
00250   CosEventComm::PushConsumer_ptr pushConsumer)
00251 {
00252   if(CORBA::is_nil(pushConsumer))
00253       throw CORBA::BAD_PARAM();
00254   if(!CORBA::is_nil(_target) || !CORBA::is_nil(_req))
00255       throw CosEventChannelAdmin::AlreadyConnected();
00256   _target=CosEventComm::PushConsumer::_duplicate(pushConsumer);
00257 
00258   // Test to see whether pushSupplier is a ProxyPushSupplier.
00259   // If so, then we will aggressively try to reconnect, when we are reincarnated
00260   CORBA::Request_var req =_target->_request("_is_a");
00261   req->add_in_arg() <<= CosEventChannelAdmin::_tc_ProxyPushConsumer->id();
00262   req->set_return_type(CORBA::_tc_boolean);
00263   req->send_deferred();
00264   Orb::inst().deferredRequest(req._retn(),this); // Register for callback
00265 
00266   if(omniEventsLog::exists())
00267   {
00268     WriteLock log;
00269     output(log.os);
00270   }
00271 }
00272 
00273 
00274 void ProxyPushSupplier_i::disconnect_push_supplier()
00275 {
00276   DB(5,"ProxyPushSupplier_i::disconnect_push_supplier()");
00277   eraseKey("ConsumerAdmin/ProxyPushSupplier");
00278   deactivateObject();
00279   if(CORBA::is_nil(_target))
00280   {
00281     throw CORBA::OBJECT_NOT_EXIST(
00282       IFELSE_OMNIORB4(omni::OBJECT_NOT_EXIST_NoMatch,0),
00283       CORBA::COMPLETED_NO
00284     );
00285   }
00286   else
00287   {
00288     CORBA::Request_var req=_target->_request("disconnect_push_consumer");
00289     _target=CosEventComm::PushConsumer::_nil();
00290     req->send_deferred();
00291     Orb::inst().deferredRequest(req._retn());
00292   }
00293 }
00294 
00295 
00296 ProxyPushSupplier_i::ProxyPushSupplier_i(
00297   PortableServer::POA_ptr poa,
00298   EventQueue&             q
00299 )
00300 : Proxy(poa),
00301   EventQueue::Reader(q),
00302   _target(CosEventComm::PushConsumer::_nil()),
00303   _targetIsProxy(false)
00304 {
00305   // pass
00306 }
00307 
00308 ProxyPushSupplier_i::~ProxyPushSupplier_i()
00309 {
00310   DB(20,"~ProxyPushSupplier_i()")
00311 }
00312 
00313 OMNIEVENTS__DEBUG_REF_COUNTS__DEFN(ProxyPushSupplier_i)
00314 
00315 inline void ProxyPushSupplier_i::trigger(bool& busy, bool& waiting)
00316 {
00317   if(!CORBA::is_nil(_req) && _req->poll_response()) // response has arrived
00318   {
00319     CORBA::Environment_ptr env=_req->env(); // No need to free environment.
00320     if(!CORBA::is_nil(env) && env->exception())
00321     {
00322       // Shut down the connection
00323       CORBA::Exception* ex =env->exception(); // No need to free exception.
00324       DB(10,"ProxyPushSupplier got exception" IF_OMNIORB4(": "<<ex->_name()) );
00325       Orb::inst().reportObjectFailure(HERE,_target.in(),ex);
00326       _req=CORBA::Request::_nil();
00327 
00328       // Try to notify the Consumer that the connection is closing.
00329       CORBA::Request_var req=_target->_request("disconnect_push_consumer");
00330       req->send_deferred();
00331       Orb::inst().deferredRequest(req._retn());
00332 
00333       _target=CosEventComm::PushConsumer::_nil(); // disconnected.
00334       eraseKey("ConsumerAdmin/ProxyPushSupplier");
00335       deactivateObject();
00336       return; // No more work to do
00337     }
00338     _req=CORBA::Request::_nil();
00339     busy=true;
00340   }
00341   if(CORBA::is_nil(_req) && !CORBA::is_nil(_target) && moreEvents())
00342   {
00343     _req=_target->_request("push");
00344     _req->add_in_arg() <<= *(nextEvent());
00345     _req->send_deferred();
00346     busy=true;
00347   }
00348   if(!CORBA::is_nil(_req)) // More work to do, if _req NOT nil.
00349       waiting=true;
00350 }
00351 
00352 
00353 void ProxyPushSupplier_i::callback(CORBA::Request_ptr req)
00354 {
00355   if(_targetIsProxy)
00356   {
00357     // There should only ever be one of these callbacks per proxy,
00358     // because each proxy should only be connected once.
00359     DB(2,"WARNING: Multiple connections to ProxyPushSupplier.");
00360   }
00361   else if(req->return_value()>>=CORBA::Any::to_boolean(_targetIsProxy))
00362   {
00363     if(_targetIsProxy && omniEventsLog::exists())
00364     {
00365       WriteLock log;
00366       output(log.os);
00367       DB(15,"ProxyPushSupplier is federated.");
00368     }
00369   }
00370   else
00371   {
00372     DB(2,"ProxyPushSupplier got unexpected callback.");
00373     _targetIsProxy=false; // Reset it just to be sure.
00374   }
00375 }
00376 
00377 
00378 void ProxyPushSupplier_i::reincarnate(
00379   const string&      oid,
00380   const PersistNode& node
00381 )
00382 {
00383   try
00384   {
00385     using namespace CosEventChannelAdmin;
00386 
00387     string ior( node.attrString("IOR").c_str() );
00388     CosEventComm::PushConsumer_var pushConsumer =
00389       string_to_<CosEventComm::PushConsumer>(ior.c_str());
00390     // Do not activate until we know that we have read a valid target.
00391     activateObjectWithId(oid.c_str());
00392     _remove_ref();
00393     _target=pushConsumer._retn();
00394     _targetIsProxy=bool(node.attrLong("proxy"));
00395 
00396     // If pushConsumer is a proxy, then try to reconnect.
00397     if(_targetIsProxy)
00398     {
00399       DB(15,"Attempting to reconnect ProxyPushSupplier: "<<oid.c_str())
00400       // This will only work if the proxy is implemented in the same way as
00401       // omniEvents, so connect_() automatically creates a proxy.
00402       ProxyPushConsumer_var proxyCons =
00403         string_to_<ProxyPushConsumer>(ior.c_str());
00404       CosEventComm::PushSupplier_var thisSupp =_this();
00405       proxyCons->connect_push_supplier(thisSupp);
00406       DB(7,"Reconnected ProxyPushSupplier: "<<oid.c_str())
00407     }
00408   }
00409   catch(CosEventChannelAdmin::AlreadyConnected&){ // connect_push_supplier()
00410     // The supplier doesn't need to be reconnected.
00411     DB(7,"Remote ProxyPushConsumer already connected: "<<oid.c_str())
00412   }
00413   catch(CosEventChannelAdmin::TypeError&){ // connect_push_supplier()
00414     // Don't know what to make of this...
00415     DB(2,"Remote ProxyPushConsumer threw TypeError: "<<oid.c_str())
00416   }
00417   catch(CORBA::OBJECT_NOT_EXIST&) {} // object 'pushConsumer' not responding.
00418   catch(CORBA::TRANSIENT&       ) {} // object 'pushConsumer' not responding.
00419   catch(CORBA::COMM_FAILURE&    ) {} // object 'pushConsumer' not responding.
00420 }
00421 
00422 
00423 void ProxyPushSupplier_i::output(ostream &os)
00424 {
00425   basicOutput(
00426     os,"ConsumerAdmin/ProxyPushSupplier",
00427     _target.in(),
00428     _targetIsProxy? " proxy=1": NULL
00429   );
00430 }
00431 
00432 
00433 }; // end namespace OmniEvents

Generated on Fri Aug 26 20:56:14 2005 for OmniEvents by  doxygen 1.4.3-20050530
omniEvents-2_6_2/doc/doxygen/a00191.html0000644000076400001440000003537610303671736020075 0ustar alexusers00000000000000 OmniEvents: ProxyPushSupplier.h Source File

ProxyPushSupplier.h

Go to the documentation of this file.
00001 //                            Package   : omniEvents
00002 // ProxyPushSupplier.h        Created   : 2003/12/04
00003 //                            Author    : Alex Tingle
00004 //
00005 //    Copyright (C) 2003-2005 Alex Tingle.
00006 //
00007 //    This file is part of the omniEvents application.
00008 //
00009 //    omniEvents is free software; you can redistribute it and/or
00010 //    modify it under the terms of the GNU Lesser General Public
00011 //    License as published by the Free Software Foundation; either
00012 //    version 2.1 of the License, or (at your option) any later version.
00013 //
00014 //    omniEvents is distributed in the hope that it will be useful,
00015 //    but WITHOUT ANY WARRANTY; without even the implied warranty of
00016 //    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00017 //    Lesser General Public License for more details.
00018 //
00019 //    You should have received a copy of the GNU Lesser General Public
00020 //    License along with this library; if not, write to the Free Software
00021 //    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
00022 //
00023 
00024 #ifndef OMNIEVENTS__PROXYPUSHSUPPLIER_H
00025 #define OMNIEVENTS__PROXYPUSHSUPPLIER_H
00026 
00027 #ifdef HAVE_CONFIG_H
00028 #  include "config.h"
00029 #endif
00030 
00031 #ifdef HAVE_IOSTREAM
00032 #  include <iostream>
00033 #else
00034 #  include <iostream.h>
00035 #endif
00036 
00037 #include "Callback.h"
00038 #include "EventQueue.h"
00039 #include "ProxyManager.h"
00040 
00041 #include "CosEventChannelAdmin.hh"
00042 
00043 #ifdef HAVE_STD_IOSTREAM
00044 using namespace std;
00045 #endif
00046 
00047 namespace OmniEvents {
00048 
00049 class ProxyPushSupplierManager
00050 : public ProxyManager,
00051   public omni_thread
00052 {
00053 public: // CORBA interface methods
00054   PortableServer::Servant incarnate(
00055     const PortableServer::ObjectId& oid,
00056     PortableServer::POA_ptr         poa
00057   );
00059   void etherealize(
00060     const PortableServer::ObjectId& oid,
00061     PortableServer::POA_ptr         adapter,
00062     PortableServer::Servant         serv,
00063     CORBA::Boolean                  cleanup_in_progress,
00064     CORBA::Boolean                  remaining_activations
00065   );
00066 public:
00067   ProxyPushSupplierManager(PortableServer::POA_ptr parentPoa,EventQueue& q);
00068   ~ProxyPushSupplierManager();
00069   CosEventChannelAdmin::ProxyPushSupplier_ptr createObject();
00070 
00072   void disconnect();
00073 
00074   void* run_undetached(void*);
00075   void _add_ref();
00076   void _remove_ref(); 
00077 
00078   omni_mutex     _lock;
00079   omni_condition _condition;
00080 
00085   class PauseThenWake
00086   {
00087     ProxyPushSupplierManager* _p;
00088     PauseThenWake(const PauseThenWake&); 
00089     PauseThenWake(); 
00090   public:
00091     inline PauseThenWake(ProxyPushSupplierManager* p);
00092     inline ~PauseThenWake();
00093   };
00094 
00095 private:
00096   EventQueue&    _queue;
00097   int            _refCount;
00098 };
00099 
00100 
00101 class ProxyPushSupplier_i
00102 : public virtual POA_CosEventChannelAdmin::ProxyPushSupplier,
00103   public Proxy,
00104   public EventQueue::Reader,
00105   public Callback
00106 {
00107 public: // CORBA interface methods
00108   void connect_push_consumer(CosEventComm::PushConsumer_ptr pushConsumer);
00109   void disconnect_push_supplier();
00110 public:
00111   ProxyPushSupplier_i(PortableServer::POA_ptr poa, EventQueue& q);
00112   ~ProxyPushSupplier_i();
00113   OMNIEVENTS__DEBUG_REF_COUNTS__DECL
00114 
00118   inline void trigger(bool& busy, bool& waiting);
00119 
00121   void callback(CORBA::Request_ptr req);
00122   void reincarnate(const string& oid, const PersistNode& node);
00123   void output(ostream &os);
00124 private:
00125   CosEventComm::PushConsumer_var _target;
00126   bool _targetIsProxy; 
00127 };
00128 
00129 
00130 //
00131 // Inline Implementations.
00132 //
00133 
00134 inline ProxyPushSupplierManager::PauseThenWake::PauseThenWake(
00135   ProxyPushSupplierManager* p
00136 ):_p(p)
00137 {
00138   if(_p)
00139      _p->_lock.lock();
00140 }
00141 
00142 inline ProxyPushSupplierManager::PauseThenWake::~PauseThenWake()
00143 {
00144   if(_p)
00145   {
00146     _p->_lock.unlock();
00147     _p->_condition.signal(); // Wake up the thread if it's asleep.
00148   }
00149 }
00150 
00151 
00152 }; // end namespace OmniEvents
00153 
00154 #endif // OMNIEVENTS__PROXYPUSHSUPPLIER_H

Generated on Fri Aug 26 20:56:14 2005 for OmniEvents by  doxygen 1.4.3-20050530
omniEvents-2_6_2/doc/doxygen/a00192.html0000644000076400001440000013172610303671736020072 0ustar alexusers00000000000000 OmniEvents: pullcons.cc Source File

pullcons.cc

Go to the documentation of this file.
00001 // -*- Mode: C++; -*-
00002 //                            Package   : omniEvents
00003 // pullcons.cc                Created on: 1/4/98
00004 //                            Author    : Paul Nader (pwn)
00005 //
00006 //    Copyright (C) 1998 Paul Nader, 2003-2004 Alex Tingle
00007 //
00008 //    This file is part of the omniEvents application.
00009 //
00010 //    omniEvents is free software; you can redistribute it and/or
00011 //    modify it under the terms of the GNU Lesser General Public
00012 //    License as published by the Free Software Foundation; either
00013 //    version 2.1 of the License, or (at your option) any later version.
00014 //
00015 //    omniEvents is distributed in the hope that it will be useful,
00016 //    but WITHOUT ANY WARRANTY; without even the implied warranty of
00017 //    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00018 //    Lesser General Public License for more details.
00019 //
00020 //    You should have received a copy of the GNU Lesser General Public
00021 //    License along with this library; if not, write to the Free Software
00022 //    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
00023 //
00024 // Description:
00025 //    Pull Model consumer implementation.
00026 //      
00027 
00028 /*
00029   $Log: pullcons.cc,v $
00030   Revision 1.12  2004/10/08 09:06:08  alextingle
00031   More robust exception minor code handling.
00032 
00033   Revision 1.11  2004/08/18 17:49:45  alextingle
00034   Added check for SIGPIPE before trying to use it.
00035 
00036   Revision 1.10  2004/08/06 16:19:23  alextingle
00037   -k & -K options removed.
00038   Naming service names may now be as complex as you like.
00039 
00040   Revision 1.9  2004/04/20 16:52:02  alextingle
00041   All examples updated for latest version on omniEvents. Server may now be
00042   specified as a 'corbaloc' string or IOR, instead of as naming service id/kind.
00043 
00044   Revision 1.8  2004/03/08 18:00:13  alextingle
00045   One too many newlines.
00046 
00047   Revision 1.7  2004/03/08 17:48:25  alextingle
00048   Added newlines to cirrectly format output when exceptions occur.
00049 
00050   Revision 1.6  2004/02/21 19:07:45  alextingle
00051   Corrected servants to use POA instead of BOA.
00052 
00053   Revision 1.5  2004/02/04 22:29:55  alextingle
00054   Reworked all C++ examples.
00055   Removed catch(...) as it tends to make it harder to see what's going on.
00056   Now uses POA instead of BOA.
00057   Uses omniORB4's Exception name probing.
00058   No longer uses 'naming.h/cc' utility code.
00059 
00060   Revision 1.4  2004/01/11 16:59:28  alextingle
00061   Added more helpful exception handling error messages to pullcons.cc.
00062 
00063   Revision 1.3  2003/11/03 22:20:54  alextingle
00064   Removed all platform specific switches. Now uses autoconf, config.h.
00065   Removed stub header in order to allow makefile dependency checking to work
00066   correctly.
00067   Changed int to bool where appropriate.
00068 
00069   Revision 1.1.1.1.2.1  2002/09/28 22:20:51  shamus13
00070   Added ifdefs to enable omniEvents to compile
00071   with both omniORB3 and omniORB4. If __OMNIORB4__
00072   is defined during compilation, omniORB4 headers
00073   and command line option syntax is used, otherwise
00074   fall back to omniORB3 style.
00075 
00076   Revision 1.1.1.1  2002/09/25 19:00:25  shamus13
00077   Import of OmniEvents source tree from release 2.1.1
00078 
00079   Revision 0.11  2000/10/11 01:16:21  naderp
00080   *** empty log message ***
00081 
00082   Revision 0.10  2000/08/30 04:39:48  naderp
00083   Port to omniORB 3.0.1.
00084 
00085   Revision 0.9  2000/03/16 05:37:27  naderp
00086   Added stdlib.h for getopt.
00087 
00088   Revision 0.8  2000/03/06 13:25:44  naderp
00089   Using util getRootNamingContext function.
00090   Using stub headers.
00091   Fixed error messages.
00092 
00093   Revision 0.7  2000/03/02 02:11:27  naderp
00094   Added -r option to connect using nil reference.
00095   Added retry resiliency for handling COMM_FAUILURE exceptions.
00096 
00097   Revision 0.6  1999/11/02 13:38:57  naderp
00098   Added <signal.h>
00099 
00100   Revision 0.5  1999/11/01 15:55:11  naderp
00101   omniEvents 2.0 Release.
00102   Ignoring SIGPIPE for UNIX platforms.
00103 
00104 Revision 0.4  99/04/23  16:05:38  16:05:38  naderp (Paul Nader)
00105 gcc port.
00106 
00107 Revision 0.3  99/04/23  09:33:40  09:33:40  naderp (Paul Nader)
00108 Windows Port.
00109 
00110 Revision 0.2  99/04/21  18:06:25  18:06:25  naderp (Paul Nader)
00111 *** empty log message ***
00112 
00113 Revision 0.1.1.1  98/11/27  16:59:07  16:59:07  naderp (Paul Nader)
00114 Added -s option to sleep after disconnecting.
00115 
00116 Revision 0.1  98/11/25  14:08:04  14:08:04  naderp (Paul Nader)
00117 Initial Revision
00118 
00119 */
00120 
00121 #ifdef HAVE_CONFIG_H
00122 #  include "config.h"
00123 #endif
00124 
00125 #ifdef HAVE_GETOPT
00126 #  include <unistd.h>
00127 extern char* optarg;
00128 extern int optind;
00129 #else
00130 #  include "getopt.h"
00131 #endif
00132 
00133 #ifdef HAVE_IOSTREAM
00134 #  include <iostream>
00135 #else
00136 #  include <iostream.h>
00137 #endif
00138 
00139 #ifdef HAVE_STD_IOSTREAM
00140 using namespace std;
00141 #endif
00142 
00143 #ifdef HAVE_STDLIB_H
00144 #  include <stdlib.h>
00145 #endif
00146 
00147 #ifdef HAVE_SIGNAL_H
00148 #  include <signal.h>
00149 #endif
00150 
00151 #include "CosEventComm.hh"
00152 #include "CosEventChannelAdmin.hh"
00153 #include "naming.h"
00154 
00155 static void usage(int argc, char **argv);
00156 
00157 class Consumer_i : virtual public POA_CosEventComm::PullConsumer {
00158 public:
00159   Consumer_i () {};
00160   void disconnect_pull_consumer ();
00161 };
00162 
00163 void Consumer_i::disconnect_pull_consumer () {
00164   cout << "Pull Consumer: disconnected." << endl;
00165 }
00166 
00167 int
00168 main(int argc, char **argv)
00169 {
00170   //
00171   // Start orb.
00172   CORBA::ORB_ptr orb = CORBA::ORB_init(argc,argv);
00173 
00174   // Process Options
00175   bool        trymode       =false;
00176   int         discnum       =0;
00177   bool        refnil        =false;
00178   int         sleepInterval =0;
00179   const char* channelName   ="EventChannel";
00180 
00181   int c;
00182   while ((c = getopt(argc,argv,"td:rs:n:h")) != EOF)
00183   {
00184      switch (c)
00185      {
00186         case 't': trymode = true;
00187                   break;
00188 
00189         case 'd': discnum = atoi(optarg);
00190                   break;
00191 
00192         case 'r': refnil = true;
00193                   break;
00194 
00195         case 's': sleepInterval = atoi(optarg);
00196                   break;
00197 
00198         case 'n': channelName = optarg;
00199                   break;
00200 
00201         case 'h':
00202         default : usage(argc,argv);
00203                   exit(-1);
00204                   break;
00205      }
00206   }
00207 
00208 #if defined(HAVE_SIGNAL_H) && defined(SIGPIPE)
00209   // Ignore broken pipes
00210   signal(SIGPIPE, SIG_IGN);
00211 #endif
00212 
00213   Consumer_i* consumer =NULL;
00214   CosEventChannelAdmin::EventChannel_var channel;
00215 
00216   const char* action=""; // Use this variable to help report errors.
00217   try {
00218     CORBA::Object_var obj;
00219 
00220     // A Pull Consumer can be implemented as a pure client or as a mixed
00221     // client-server process, depending on whether it requires and is
00222     // prepared to service disconnect requests from the channel.
00223     // If it is, then create the servant object and activate the POA.
00224     if (! refnil)
00225     {
00226        consumer=new Consumer_i();
00227 
00228        action="resolve initial reference 'RootPOA'";
00229        obj=orb->resolve_initial_references("RootPOA");
00230        PortableServer::POA_var rootPoa =PortableServer::POA::_narrow(obj);
00231        if(CORBA::is_nil(rootPoa))
00232            throw CORBA::OBJECT_NOT_EXIST();
00233 
00234        action="activate the RootPOA's POAManager";
00235        PortableServer::POAManager_var pman =rootPoa->the_POAManager();
00236        pman->activate();
00237     }
00238    
00239     //
00240     // Obtain object reference to EventChannel
00241     // (from command-line argument or from the Naming Service).
00242     if(optind<argc)
00243     {
00244       action="convert URI from command line into object reference";
00245       obj=orb->string_to_object(argv[optind]);
00246     }
00247     else
00248     {
00249       action="resolve initial reference 'NameService'";
00250       obj=orb->resolve_initial_references("NameService");
00251       CosNaming::NamingContext_var rootContext=
00252         CosNaming::NamingContext::_narrow(obj);
00253       if(CORBA::is_nil(rootContext))
00254           throw CORBA::OBJECT_NOT_EXIST();
00255 
00256       action="find EventChannel in NameService";
00257       cout << action << endl;
00258       obj=rootContext->resolve(str2name(channelName));
00259     }
00260 
00261     action="narrow object reference to event channel";
00262     channel=CosEventChannelAdmin::EventChannel::_narrow(obj);
00263     if(CORBA::is_nil(channel))
00264     {
00265        cerr << "Failed to narrow Event Channel reference." << endl;
00266        exit(1);
00267     }
00268 
00269   }
00270   catch(CORBA::ORB::InvalidName& ex) { // resolve_initial_references
00271      cerr<<"Failed to "<<action<<". ORB::InvalidName"<<endl;
00272      exit(1);
00273   }
00274   catch(CosNaming::NamingContext::InvalidName& ex) { // resolve
00275      cerr<<"Failed to "<<action<<". NamingContext::InvalidName"<<endl;
00276      exit(1);
00277   }
00278   catch(CosNaming::NamingContext::NotFound& ex) { // resolve
00279      cerr<<"Failed to "<<action<<". NamingContext::NotFound"<<endl;
00280      exit(1);
00281   }
00282   catch(CosNaming::NamingContext::CannotProceed& ex) { // resolve
00283      cerr<<"Failed to "<<action<<". NamingContext::CannotProceed"<<endl;
00284      exit(1);
00285   }
00286   catch(CORBA::TRANSIENT& ex) { // _narrow()
00287      cerr<<"Failed to "<<action<<". TRANSIENT"<<endl;
00288      exit(1);
00289   }
00290   catch(CORBA::OBJECT_NOT_EXIST& ex) { // _narrow()
00291      cerr<<"Failed to "<<action<<". OBJECT_NOT_EXIST"<<endl;
00292      exit(1);
00293   }
00294   catch(CORBA::SystemException& ex) {
00295      cerr<<"Failed to "<<action<<".";
00296 #if defined(HAVE_OMNIORB4)
00297      cerr<<" "<<ex._name();
00298      if(ex.NP_minorString())
00299          cerr<<" ("<<ex.NP_minorString()<<")";
00300 #endif
00301      cerr<<endl;
00302      exit(1);
00303   }
00304   catch(CORBA::Exception& ex) {
00305      cerr<<"Failed to "<<action<<"."
00306 #if defined(HAVE_OMNIORB4)
00307        " "<<ex._name()
00308 #endif
00309        <<endl;
00310      exit(1);
00311   }
00312 
00313   //
00314   // Get Consumer admin interface - retrying on Comms Failure.
00315   CosEventChannelAdmin::ConsumerAdmin_var consumer_admin;
00316   while (1)
00317   {
00318      try {
00319         consumer_admin = channel->for_consumers ();
00320         if (CORBA::is_nil (consumer_admin))
00321         {
00322            cerr << "Event Channel returned nil Consumer Admin!" << endl;
00323            exit (1);
00324         }
00325         break;
00326      }
00327      catch (CORBA::COMM_FAILURE& ex) {
00328         cerr << "Caught COMM_FAILURE exception "
00329              << "obtaining Consumer Admin! Retrying..."
00330              << endl;
00331         continue;
00332      }
00333   }
00334   cout << "Obtained Consumer Admin." << endl;
00335 
00336   while (1)
00337   {
00338      //
00339      // Get proxy supplier - retrying on Comms Failure.
00340      CosEventChannelAdmin::ProxyPullSupplier_var proxy_supplier;
00341      while (1)
00342      {
00343         try {
00344            proxy_supplier = consumer_admin->obtain_pull_supplier ();
00345            if (CORBA::is_nil (proxy_supplier))
00346            {
00347               cerr << "Consumer Admin returned nil Proxy Supplier!" << endl;
00348               exit (1);
00349            }
00350            break;
00351         }
00352         catch (CORBA::COMM_FAILURE& ex) {
00353            cerr << "Caught COMM_FAILURE Exception "
00354                 << "obtaining Pull Supplier! Retrying..."
00355                 << endl;
00356            continue;
00357         }
00358      }
00359      cout << "Obtained ProxyPullSupplier." << endl;
00360    
00361      //
00362      // Connect Pull Consumer - retrying on Comms Failure.
00363      CosEventComm::PullConsumer_ptr cptr =CosEventComm::PullConsumer::_nil();
00364      if (! refnil) {
00365         cptr=consumer->_this();
00366      }
00367 
00368      while (1)
00369      {
00370         try {
00371            proxy_supplier->connect_pull_consumer(cptr);
00372            break;
00373         }
00374         catch (CORBA::BAD_PARAM& ex) {
00375            cerr << "Caught BAD_PARAM exception connecting Pull Consumer!"<<endl;
00376            exit (1);
00377         }
00378         catch (CosEventChannelAdmin::AlreadyConnected& ex) {
00379            cerr << "Proxy Pull Supplier already connected!" 
00380                 << endl;
00381            break;
00382         }
00383         catch (CORBA::COMM_FAILURE& ex) {
00384            cerr << "Caught COMM_FAILURE Exception "
00385                 << "connecting Pull Consumer! Retrying..." 
00386                 << endl;
00387            continue;
00388         }
00389      }
00390      cout << "Connected Pull Consumer." << endl;
00391 
00392      // Pull data.
00393      CORBA::Any *data;
00394      CORBA::ULong l = 0;
00395      for (int i=0; (discnum == 0) || (i < discnum); i++)
00396      {
00397         if(trymode)
00398         {
00399            try {
00400                CORBA::Boolean has_event;
00401                data = proxy_supplier->try_pull(has_event);
00402                cout << "Consumer: try_pull() called. Data : " << flush;
00403                if (has_event)
00404                {
00405                   l = 0;
00406                   *data >>= l;
00407                   cout << l << endl;
00408                   delete data;
00409                }
00410                else
00411                {
00412                   cout << "None" << endl;
00413                }
00414            }
00415            catch (CosEventComm::Disconnected& ex) {
00416               cout << endl;
00417               cerr << "Failed. Caught Disconnected Exception !" << endl;
00418            }
00419            catch (CORBA::COMM_FAILURE& ex) {
00420               cout << endl;
00421               cerr << "Failed. Caught COMM_FAILURE Exception !" << endl;
00422            }
00423            catch (CORBA::Exception& ex) {
00424               cout << endl;
00425               cerr<<"CORBA exception, unable to try_pull()"
00426 #ifdef HAVE_OMNIORB4
00427                   <<": "<<ex._name()
00428 #endif
00429                   << endl;
00430            }
00431         }
00432         else
00433         {
00434            try {
00435                cout << "Pull Consumer: pull() called. ";
00436                cout.flush();
00437                data = proxy_supplier->pull();
00438                l = 0;
00439                *data >>= l;
00440                cout << "Data : " << l << endl;
00441                delete data;
00442            }
00443            catch(CORBA::TRANSIENT&) {
00444               cout << "caught TRANSIENT." << endl;
00445               omni_thread::sleep(1);
00446            }
00447            catch (CosEventComm::Disconnected& ex) {
00448               cout << endl;
00449               cerr << "Failed. Caught Disconnected exception!" << endl;
00450               exit(1);
00451            }
00452            catch (CORBA::COMM_FAILURE& ex) {
00453               cout << endl;
00454               cerr << "Failed. Caught COMM_FAILURE exception!" << endl;
00455               exit(1);
00456            }
00457            catch (CORBA::SystemException& ex) {
00458               cout << endl;
00459               cerr<<"System exception, unable to pull()";
00460 #ifdef HAVE_OMNIORB4
00461               cerr<<": "<<ex._name();
00462               if(ex.NP_minorString())
00463                   cerr<<" ("<<ex.NP_minorString()<<")";
00464 #endif
00465               cerr<< endl;
00466               exit(1);
00467            }
00468            catch (CORBA::Exception& ex) {
00469               cout << endl;
00470               cerr<<"CORBA exception, unable to pull()"
00471 #ifdef HAVE_OMNIORB4
00472                   <<": "<<ex._name()
00473 #endif
00474                   << endl;
00475               exit(1);
00476            }
00477         }
00478      }
00479 
00480      // Disconnect - retrying on Comms Failure.
00481      while (1)
00482      {
00483         try {
00484            proxy_supplier->disconnect_pull_supplier();
00485            break;
00486         }
00487         catch (CORBA::COMM_FAILURE& ex) {
00488            cerr << "Caught COMM_FAILURE exception "
00489                 << "disconnecting Pull Consumer! Retrying..." 
00490                 << endl;
00491            continue;
00492         }
00493      }
00494      cout << "Disconnected Pull Consumer." << endl;
00495 
00496      // Yawn
00497      cout << "Sleeping " << sleepInterval << " seconds." << endl;
00498      omni_thread::sleep(sleepInterval);
00499   }
00500 
00501   // Not Reached
00502   return 0;
00503 }
00504 
00505 static void
00506 usage(int argc, char **argv)
00507 {
00508   cerr<<
00509 "\nCreate a PullConsumer to receive events from a channel.\n"
00510 "syntax: "<<(argc?argv[0]:"pullcons")<<" OPTIONS [CHANNEL_URI]\n"
00511 "\n"
00512 "CHANNEL_URI: The event channel may be specified as a URI.\n"
00513 " This may be an IOR, or a corbaloc::: or corbaname::: URI.\n"
00514 "\n"
00515 "OPTIONS:                                         DEFAULT:\n"
00516 " -t       enable try_pull mode\n"
00517 " -r       connect using a nil reference\n"
00518 " -d NUM   disconnect after receiving NUM events   [0 - never disconnect]\n"
00519 " -s SECS  sleep SECS seconds after disconnecting  [0]\n"
00520 " -n NAME  channel name (if URI is not specified)  [\"EventChannel\"]\n"
00521 " -h       display this help text\n" << endl;
00522 }

Generated on Fri Aug 26 20:56:14 2005 for OmniEvents by  doxygen 1.4.3-20050530
omniEvents-2_6_2/doc/doxygen/a00193.html0000644000076400001440000012102410303671736020061 0ustar alexusers00000000000000 OmniEvents: pullsupp.cc Source File

pullsupp.cc

Go to the documentation of this file.
00001 // -*- Mode: C++; -*-
00002 //                            Package   : omniEvents
00003 //   pullsupp.cc              Created   : 1/4/98
00004 //                            Author    : Paul Nader (pwn)
00005 //
00006 //    Copyright (C) 1998 Paul Nader, 2003-2004 Alex Tingle
00007 //
00008 //    This file is part of the omniEvents application.
00009 //
00010 //    omniEvents is free software; you can redistribute it and/or
00011 //    modify it under the terms of the GNU Lesser General Public
00012 //    License as published by the Free Software Foundation; either
00013 //    version 2.1 of the License, or (at your option) any later version.
00014 //
00015 //    omniEvents is distributed in the hope that it will be useful,
00016 //    but WITHOUT ANY WARRANTY; without even the implied warranty of
00017 //    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00018 //    Lesser General Public License for more details.
00019 //
00020 //    You should have received a copy of the GNU Lesser General Public
00021 //    License along with this library; if not, write to the Free Software
00022 //    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
00023 //
00024 // Description:
00025 //    Pull Model supplier implementation.
00026 //      
00027 
00028 /*
00029   $Log: pullsupp.cc,v $
00030   Revision 1.9  2004/10/08 09:06:08  alextingle
00031   More robust exception minor code handling.
00032 
00033   Revision 1.8  2004/08/18 17:49:45  alextingle
00034   Added check for SIGPIPE before trying to use it.
00035 
00036   Revision 1.7  2004/08/06 16:19:23  alextingle
00037   -k & -K options removed.
00038   Naming service names may now be as complex as you like.
00039 
00040   Revision 1.6  2004/04/20 16:52:05  alextingle
00041   All examples updated for latest version on omniEvents. Server may now be
00042   specified as a 'corbaloc' string or IOR, instead of as naming service id/kind.
00043 
00044   Revision 1.5  2004/02/04 22:29:55  alextingle
00045   Reworked all C++ examples.
00046   Removed catch(...) as it tends to make it harder to see what's going on.
00047   Now uses POA instead of BOA.
00048   Uses omniORB4's Exception name probing.
00049   No longer uses 'naming.h/cc' utility code.
00050 
00051   Revision 1.4  2003/11/17 08:47:09  alextingle
00052   Corrected typo.
00053 
00054   Revision 1.2  2003/11/16 23:24:22  alex
00055   Corrected typo.
00056 
00057   Revision 1.1.1.1  2003/11/11 22:28:56  alex
00058   Import of testing 2.3.0
00059 
00060   Revision 1.3  2003/11/03 22:20:26  alextingle
00061   Removed all platform specific switches. Now uses autoconf, config.h.
00062   Removed stub header in order to allow makefile dependency checking to work
00063   correctly.
00064 
00065   Revision 1.1.1.1.2.1  2002/09/28 22:20:51  shamus13
00066   Added ifdefs to enable omniEvents to compile
00067   with both omniORB3 and omniORB4. If __OMNIORB4__
00068   is defined during compilation, omniORB4 headers
00069   and command line option syntax is used, otherwise
00070   fall back to omniORB3 style.
00071 
00072   Revision 1.1.1.1  2002/09/25 19:00:26  shamus13
00073   Import of OmniEvents source tree from release 2.1.1
00074 
00075   Revision 0.11  2000/08/30 04:39:48  naderp
00076   Port to omniORB 3.0.1.
00077 
00078   Revision 0.10  2000/03/16 05:37:27  naderp
00079   Added stdlib.h for getopt.
00080 
00081   Revision 0.9  2000/03/06 13:26:32  naderp
00082   Using util getRootNamingContext function.
00083   Using stub headers.
00084   Fixed error messages.
00085 
00086   Revision 0.8  2000/03/02 03:16:26  naderp
00087   Added retry resiliency for handling COMM_FAUILURE exceptions.
00088   Replaced condition variable by counting semaphore.
00089 
00090   Revision 0.7  1999/11/02 13:39:13  naderp
00091   Added <signal.h>
00092 
00093   Revision 0.6  1999/11/02 07:57:22  naderp
00094   Updated usage.
00095 
00096 Revision 0.5  99/11/01  16:10:12  16:10:12  naderp (Paul Nader)
00097 omniEvents 2.0 Release.
00098 Ignoring SIGPIPE for UNIX platforms.
00099 
00100 Revision 0.4  99/04/23  16:05:44  16:05:44  naderp (Paul Nader)
00101 gcc port.
00102 
00103 Revision 0.3  99/04/23  09:34:01  09:34:01  naderp (Paul Nader)
00104 Windows Port.
00105 
00106 Revision 0.2  99/04/21  18:06:25  18:06:25  naderp (Paul Nader)
00107 *** empty log message ***
00108 
00109 Revision 0.1.1.1  98/11/27  16:59:33  16:59:33  naderp (Paul Nader)
00110 Added -s option to sleep after disconnecting.
00111 
00112 Revision 0.1  98/11/25  14:08:07  14:08:07  naderp (Paul Nader)
00113 Initial Revision
00114 
00115 */
00116 
00117 #ifdef HAVE_CONFIG_H
00118 #  include "config.h"
00119 #endif
00120 
00121 #ifdef HAVE_GETOPT
00122 #  include <unistd.h>
00123 extern char* optarg;
00124 extern int optind;
00125 #else
00126 #  include "getopt.h"
00127 #endif
00128 
00129 #ifdef HAVE_IOSTREAM
00130 #  include <iostream>
00131 #else
00132 #  include <iostream.h>
00133 #endif
00134 
00135 #ifdef HAVE_STD_IOSTREAM
00136 using namespace std;
00137 #endif
00138 
00139 #ifdef HAVE_STDLIB_H
00140 #  include <stdlib.h>
00141 #endif
00142 
00143 #ifdef HAVE_SIGNAL_H
00144 #  include <signal.h>
00145 #endif
00146 
00147 #include "CosEventComm.hh"
00148 #include "CosEventChannelAdmin.hh"
00149 #include "naming.h"
00150 
00151 static omni_semaphore connect_cond(0);
00152 static void usage(int argc, char **argv);
00153 
00154 class Supplier_i : virtual public POA_CosEventComm::PullSupplier {
00155 public:
00156   Supplier_i (long disconnect = 0) : i(0), _disconnect(disconnect), l(0) {};
00157   CORBA::Any *pull();
00158   CORBA::Any *try_pull(CORBA::Boolean &has_event);
00159   void disconnect_pull_supplier ();
00160 
00161 private:
00162   long i;
00163   long _disconnect;
00164   CORBA::ULong l;
00165 };
00166 
00167 void
00168 Supplier_i::disconnect_pull_supplier () {
00169   cout << "Pull Supplier: disconnected by channel." << endl;
00170 }
00171 
00172 CORBA::Any *
00173 Supplier_i::pull() {
00174    cout << "Pull Supplier: pull() called. Data : ";
00175    CORBA::Any *any = new CORBA::Any();
00176    *any <<= l++;
00177    cout << l-1 << endl;
00178 
00179    // Exercise Disconnect
00180    if ((_disconnect > 0) && (i == _disconnect)) {
00181       i = 0;
00182       // Signal main thread to disconnect and re-connect.
00183       connect_cond.post();
00184    }
00185    i++;
00186    return (any);
00187 }
00188 
00189 CORBA::Any *
00190 Supplier_i::try_pull(CORBA::Boolean &has_event)
00191 {
00192    cout << "Pull Supplier: try_pull() called. Data : ";
00193    CORBA::Any *any = new CORBA::Any();
00194    *any <<= l++;
00195    cout << l-1 << endl;
00196    has_event = 1;
00197 
00198    // Exercise Disconnect
00199    if ((_disconnect > 0) && (i == _disconnect)) {
00200       i = 0;
00201       // Signal main thread to disconnect and re-connect.
00202       connect_cond.post();
00203    }
00204    i++;
00205    return (any);
00206 }
00207 
00208 
00209 int
00210 main (int argc, char** argv)
00211 {
00212 #if defined(HAVE_OMNIORB4)
00213   CORBA::ORB_var orb =CORBA::ORB_init(argc,argv,"omniORB4");
00214 #else
00215   CORBA::ORB_var orb =CORBA::ORB_init(argc,argv,"omniORB3");
00216 #endif
00217 
00218   // Process Options
00219   int         discnum       =0;
00220   int         sleepInterval =0;
00221   const char* channelName   ="EventChannel";
00222 
00223   int c;
00224   while ((c = getopt(argc,argv,"d:s:n:h")) != EOF)
00225   {
00226      switch (c)
00227      {
00228         case 'd': discnum = atoi(optarg);
00229                   break;
00230 
00231         case 's': sleepInterval = atoi(optarg);
00232                   break;
00233 
00234         case 'n': channelName = optarg;
00235                   break;
00236 
00237         case 'h':
00238         default : usage(argc,argv);
00239                   exit(-1);
00240                   break;
00241      }
00242   }
00243 
00244 #if defined(HAVE_SIGNAL_H) && defined(SIGPIPE)
00245   // Ignore broken pipes
00246   signal(SIGPIPE, SIG_IGN);
00247 #endif
00248 
00249   Supplier_i* supplier = new Supplier_i (discnum);
00250   CosEventChannelAdmin::EventChannel_var channel;
00251 
00252   const char* action=""; // Use this variable to help report errors.
00253   try {
00254     CORBA::Object_var obj;
00255 
00256     action="resolve initial reference 'RootPOA'";
00257     obj=orb->resolve_initial_references("RootPOA");
00258     PortableServer::POA_var rootPoa =PortableServer::POA::_narrow(obj);
00259     if(CORBA::is_nil(rootPoa))
00260         throw CORBA::OBJECT_NOT_EXIST();
00261 
00262     action="activate the RootPOA's POAManager";
00263     PortableServer::POAManager_var pman =rootPoa->the_POAManager();
00264     pman->activate();
00265 
00266     //
00267     // Obtain object reference to EventChannel
00268     // (from command-line argument or from the Naming Service).
00269     if(optind<argc)
00270     {
00271       action="convert URI from command line into object reference";
00272       obj=orb->string_to_object(argv[optind]);
00273     }
00274     else
00275     {
00276       action="resolve initial reference 'NameService'";
00277       obj=orb->resolve_initial_references("NameService");
00278       CosNaming::NamingContext_var rootContext=
00279         CosNaming::NamingContext::_narrow(obj);
00280       if(CORBA::is_nil(rootContext))
00281           throw CORBA::OBJECT_NOT_EXIST();
00282 
00283       action="find EventChannel in NameService";
00284       cout << action << endl;
00285       obj=rootContext->resolve(str2name(channelName));
00286     }
00287 
00288     action="narrow object reference to event channel";
00289     channel=CosEventChannelAdmin::EventChannel::_narrow(obj);
00290     if(CORBA::is_nil(channel))
00291     {
00292        cerr << "Failed to narrow Event Channel reference." << endl;
00293        exit(1);
00294     }
00295 
00296   }
00297   catch(CORBA::ORB::InvalidName& ex) { // resolve_initial_references
00298      cerr<<"Failed to "<<action<<". ORB::InvalidName"<<endl;
00299      exit(1);
00300   }
00301   catch(CosNaming::NamingContext::InvalidName& ex) { // resolve
00302      cerr<<"Failed to "<<action<<". NamingContext::InvalidName"<<endl;
00303      exit(1);
00304   }
00305   catch(CosNaming::NamingContext::NotFound& ex) { // resolve
00306      cerr<<"Failed to "<<action<<". NamingContext::NotFound"<<endl;
00307      exit(1);
00308   }
00309   catch(CosNaming::NamingContext::CannotProceed& ex) { // resolve
00310      cerr<<"Failed to "<<action<<". NamingContext::CannotProceed"<<endl;
00311      exit(1);
00312   }
00313   catch(CORBA::TRANSIENT& ex) { // _narrow()
00314      cerr<<"Failed to "<<action<<". TRANSIENT"<<endl;
00315      exit(1);
00316   }
00317   catch(CORBA::OBJECT_NOT_EXIST& ex) { // _narrow()
00318      cerr<<"Failed to "<<action<<". OBJECT_NOT_EXIST"<<endl;
00319      exit(1);
00320   }
00321   catch(CORBA::SystemException& ex) {
00322      cerr<<"Failed to "<<action<<".";
00323 #if defined(HAVE_OMNIORB4)
00324      cerr<<" "<<ex._name();
00325      if(ex.NP_minorString())
00326          cerr<<" ("<<ex.NP_minorString()<<")";
00327 #endif
00328      cerr<<endl;
00329      exit(1);
00330   }
00331   catch(CORBA::Exception& ex) {
00332      cerr<<"Failed to "<<action<<"."
00333 #if defined(HAVE_OMNIORB4)
00334        " "<<ex._name()
00335 #endif
00336        <<endl;
00337      exit(1);
00338   }
00339 
00340   //
00341   // Get Supplier Admin interface - retrying on Comms Failure.
00342   CosEventChannelAdmin::SupplierAdmin_var supplier_admin;
00343   while (1)
00344   {
00345      try {
00346         supplier_admin = channel->for_suppliers ();
00347         if (CORBA::is_nil(supplier_admin))
00348         {
00349            cerr << "Event Channel returned nil Supplier Admin!"
00350                 << endl;
00351            exit(1);
00352         }
00353         break;
00354      }
00355      catch (CORBA::COMM_FAILURE& ex) {
00356         cerr << "Caught COMM_FAILURE exception "
00357              << "obtaining Supplier Admin! Retrying..."
00358              << endl;
00359         continue;
00360      }
00361   }
00362   cout << "Obtained SupplierAdmin." << endl;
00363 
00364   while (1)
00365   {
00366      //
00367      // Get proxy consumer - retrying on Comms Failure.
00368      CosEventChannelAdmin::ProxyPullConsumer_var proxy_consumer;
00369      while (1)
00370      {
00371         try {
00372            proxy_consumer = supplier_admin->obtain_pull_consumer ();
00373            if (CORBA::is_nil(proxy_consumer))
00374            {
00375               cerr << "Supplier Admin returned nil proxy_consumer!"
00376                    << endl;
00377               exit(1);
00378            }
00379            break;
00380         }
00381         catch (CORBA::COMM_FAILURE& ex) {
00382            cerr << "Caught COMM_FAILURE exception "
00383                 << "obtaining Proxy Pull Consumer! Retrying..."
00384                 << endl;
00385            continue;
00386         }
00387      }
00388      cout << "Obtained ProxyPullConsumer." << endl;
00389    
00390      // Connect Pull Supplier - retrying on Comms Failure.
00391      CosEventComm::PullSupplier_var supplierRef =supplier->_this();
00392      while (1)
00393      {
00394         try {
00395            proxy_consumer->connect_pull_supplier(supplierRef.in());
00396            break;
00397         }
00398         catch (CORBA::BAD_PARAM& ex) {
00399            cerr<<"Caught BAD_PARAM Exception connecting Pull Supplier!"<<endl;
00400            exit(1);
00401         }
00402         catch (CosEventChannelAdmin::AlreadyConnected& ex) {
00403            cerr << "Pull Supplier already connected!"
00404                 << endl;
00405            break;
00406         }
00407         catch (CORBA::COMM_FAILURE& ex) {
00408            cerr << "Caught COMM_FAILURE exception "
00409                 << "connecting Pull Supplier! Retrying..."
00410                 << endl;
00411            continue;
00412         }
00413      }
00414      cout << "Connected Pull Supplier." << endl;
00415 
00416      // Wait for indication to disconnect before re-connecting.
00417      connect_cond.wait();
00418 
00419      // Disconnect - retrying on Comms Failure.
00420      while (1)
00421      {
00422         try {
00423            proxy_consumer->disconnect_pull_consumer();
00424            break;
00425         }
00426         catch (CORBA::COMM_FAILURE& ex) {
00427            cerr << "Caught COMM_FAILURE exception "
00428                 << "disconnecting Pull Supplier! Retrying..."
00429                 << endl;
00430            continue;
00431         }
00432      }
00433      cout << "Disconnected Pull Supplier." << endl;
00434 
00435      // Yawn.
00436      cout << "Sleeping " << sleepInterval << " seconds." << endl;
00437      omni_thread::sleep(sleepInterval);
00438   }
00439 
00440   // Not Reached
00441   return 0;
00442 }
00443 
00444 static void
00445 usage(int argc, char **argv)
00446 {
00447   cerr<<
00448 "\nCreate a PullSupplier to send events to a channel.\n"
00449 "syntax: "<<(argc?argv[0]:"pullsupp")<<" OPTIONS [CHANNEL_URI]\n"
00450 "\n"
00451 "CHANNEL_URI: The event channel may be specified as a URI.\n"
00452 " This may be an IOR, or a corbaloc::: or corbaname::: URI.\n"
00453 "\n"
00454 "OPTIONS:                                         DEFAULT:\n"
00455 " -d NUM   disconnect after sending NUM events     [0 - never disconnect]\n"
00456 " -s SECS  sleep SECS seconds after disconnecting  [0]\n"
00457 " -n NAME  channel name (if URI is not specified)  [\"EventChannel\"]\n"
00458 " -h       display this help text\n" << endl;
00459 }

Generated on Fri Aug 26 20:56:14 2005 for OmniEvents by  doxygen 1.4.3-20050530
omniEvents-2_6_2/doc/doxygen/a00194.html0000644000076400001440000012105610303671736020067 0ustar alexusers00000000000000 OmniEvents: pushcons.cc Source File

pushcons.cc

Go to the documentation of this file.
00001 // -*- Mode: C++; -*-
00002 //                            Package   : omniEvents
00003 //   pushcons.cc              Created   : 1/4/98
00004 //                            Author    : Paul Nader (pwn)
00005 //
00006 //    Copyright (C) 1998 Paul Nader, 2003-2004 Alex Tingle
00007 //
00008 //    This file is part of the omniEvents application.
00009 //
00010 //    omniEvents is free software; you can redistribute it and/or
00011 //    modify it under the terms of the GNU Lesser General Public
00012 //    License as published by the Free Software Foundation; either
00013 //    version 2.1 of the License, or (at your option) any later version.
00014 //
00015 //    omniEvents is distributed in the hope that it will be useful,
00016 //    but WITHOUT ANY WARRANTY; without even the implied warranty of
00017 //    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00018 //    Lesser General Public License for more details.
00019 //
00020 //    You should have received a copy of the GNU Lesser General Public
00021 //    License along with this library; if not, write to the Free Software
00022 //    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
00023 //
00024 // Description:
00025 //    Push Model consumer implementation
00026 //
00027 
00028 /*
00029   $Log: pushcons.cc,v $
00030   Revision 1.12.2.1  2005/06/16 09:39:49  alextingle
00031   Fixed theoretical race caused by sloppy use of condition variable.
00032 
00033   Revision 1.12  2004/10/08 09:06:08  alextingle
00034   More robust exception minor code handling.
00035 
00036   Revision 1.11  2004/08/18 17:49:45  alextingle
00037   Added check for SIGPIPE before trying to use it.
00038 
00039   Revision 1.10  2004/08/06 16:19:23  alextingle
00040   -k & -K options removed.
00041   Naming service names may now be as complex as you like.
00042 
00043   Revision 1.9  2004/04/30 17:54:47  alextingle
00044   Corrected handling of CORBA::Any.
00045 
00046   Revision 1.8  2004/04/20 16:52:17  alextingle
00047   All examples updated for latest version on omniEvents. Server may now be
00048   specified as a 'corbaloc' string or IOR, instead of as naming service id/kind.
00049 
00050   Revision 1.7  2004/04/01 22:28:36  alextingle
00051   Corrected usage message.
00052 
00053   Revision 1.6  2004/03/23 19:09:26  alextingle
00054   Fixed typos.
00055 
00056   Revision 1.5  2004/02/21 19:07:45  alextingle
00057   Corrected servants to use POA instead of BOA.
00058 
00059   Revision 1.4  2004/02/04 22:29:55  alextingle
00060   Reworked all C++ examples.
00061   Removed catch(...) as it tends to make it harder to see what's going on.
00062   Now uses POA instead of BOA.
00063   Uses omniORB4's Exception name probing.
00064   No longer uses 'naming.h/cc' utility code.
00065 
00066   Revision 1.3  2003/11/03 22:19:56  alextingle
00067   Removed all platform specific switches. Now uses autoconf, config.h.
00068   Removed stub header in order to allow makefile dependency checking to work
00069   correctly.
00070   Corrected usage of omni_condition/omni_mutex. Mutexes are now always unlocked by
00071   the same thread that locked them.
00072 
00073   Revision 1.1.1.1.2.1  2002/09/28 22:20:51  shamus13
00074   Added ifdefs to enable omniEvents to compile
00075   with both omniORB3 and omniORB4. If __OMNIORB4__
00076   is defined during compilation, omniORB4 headers
00077   and command line option syntax is used, otherwise
00078   fall back to omniORB3 style.
00079 
00080   Revision 1.1.1.1  2002/09/25 19:00:26  shamus13
00081   Import of OmniEvents source tree from release 2.1.1
00082 
00083   Revision 0.13  2000/08/30 04:39:48  naderp
00084   Port to omniORB 3.0.1.
00085 
00086   Revision 0.12  2000/03/16 05:37:27  naderp
00087   Added stdlib.h for getopt.
00088 
00089   Revision 0.11  2000/03/06 13:27:02  naderp
00090   Using util getRootNamingContext function.
00091   Using stub headers.
00092   Fixed error messages.
00093 
00094   Revision 0.10  2000/03/02 03:20:24  naderp
00095   Added retry resiliency for handling COMM_FAUILURE exceptions.
00096 
00097   Revision 0.9  1999/11/02 13:39:15  naderp
00098   Added <signal.h>
00099 
00100   Revision 0.8  1999/11/02 07:57:04  naderp
00101   Updated usage.
00102 
00103 Revision 0.7  99/11/01  18:10:29  18:10:29  naderp (Paul Nader)
00104 Added ahndling of COMM_FAILURE exception for connect_push_consumer.
00105 
00106 Revision 0.6  99/11/01  16:11:03  16:11:03  naderp (Paul Nader)
00107 omniEvents 2.0 Release.
00108 
00109 Revision 0.5  99/10/27  19:46:01  19:46:01  naderp (Paul Nader)
00110 Ignoring Unix SIGPIPE signal.
00111 Catching COMM_FAILURE exception for obtain_push_supplier.
00112 Continuing if it fails to obtain Proxy Supplier.
00113 Try/Catch block for disconnect_push_supplier.
00114 
00115 Revision 0.4  99/04/23  16:05:46  16:05:46  naderp (Paul Nader)
00116 gcc port.
00117 
00118 Revision 0.3  99/04/23  09:34:03  09:34:03  naderp (Paul Nader)
00119 Windows Port.
00120 
00121 Revision 0.2  99/04/21  18:06:26  18:06:26  naderp (Paul Nader)
00122 *** empty log message ***
00123 
00124 Revision 0.1.1.1  98/11/27  16:59:37  16:59:37  naderp (Paul Nader)
00125 Added -s option to sleep after disconnecting.
00126 
00127 Revision 0.1  98/11/25  14:08:21  14:08:21  naderp (Paul Nader)
00128 Initial Revision
00129 
00130 */
00131 
00132 #ifdef HAVE_CONFIG_H
00133 #  include "config.h"
00134 #endif
00135 
00136 #ifdef HAVE_GETOPT
00137 #  include <unistd.h>
00138 extern char* optarg;
00139 extern int optind;
00140 #else
00141 #  include "getopt.h"
00142 #endif
00143 
00144 #ifdef HAVE_IOSTREAM
00145 #  include <iostream>
00146 #else
00147 #  include <iostream.h>
00148 #endif
00149 
00150 #ifdef HAVE_STD_IOSTREAM
00151 using namespace std;
00152 #endif
00153 
00154 #ifdef HAVE_STDLIB_H
00155 #  include <stdlib.h>
00156 #endif
00157 
00158 #ifdef HAVE_SIGNAL_H
00159 #  include <signal.h>
00160 #endif
00161 
00162 #include "CosEventComm.hh"
00163 #include "CosEventChannelAdmin.hh"
00164 #include "naming.h"
00165 
00166 static omni_mutex mutex;
00167 static omni_condition connect_cond(&mutex);
00168 static void usage(int argc, char **argv);
00169 
00170 class Consumer_i : virtual public POA_CosEventComm::PushConsumer {
00171 public:
00172   Consumer_i(long disconnect=0): _disconnect(disconnect) {}
00173 
00174   void push(const CORBA::Any& data);
00175   void disconnect_push_consumer ();
00176 
00177 private:
00178   long _disconnect;
00179 };
00180 
00181 void Consumer_i::push(const CORBA::Any& data) {
00182   CORBA::ULong l;
00183   static int i = 0;
00184 
00185   i++;
00186   if( data>>=l )
00187   {
00188     cout<<"Push Consumer: push() called. Data : "<< l <<endl;
00189 
00190     // Exercise Disconnect
00191     if (i == _disconnect)
00192     {
00193        i = 0;
00194        // NOTE : The proxy_supplier object is disposed at the server
00195        //        during the disconnect_push_supplier call. Do NOT
00196        //        use the proxy_supplier reference after disconnecting.
00197 
00198        // Signal main thread to disconnect and re-connect.
00199        omni_mutex_lock condition_lock(mutex); // ensure main thread in wait()
00200        connect_cond.signal();
00201     }
00202   }
00203   else
00204   {
00205     cerr<<"Push Consumer: push() called. UNEXPECTED TYPE"<<endl;
00206   }
00207 }
00208 
00209 void Consumer_i::disconnect_push_consumer () {
00210   cout << "Push Consumer: disconnected." << endl;
00211 }
00212 
00213 int
00214 main(int argc, char **argv)
00215 {
00216   //
00217   // Start orb.
00218   CORBA::ORB_ptr orb = CORBA::ORB_init(argc,argv);
00219 
00220   // Process Options
00221   int         discnum       =0;
00222   int         sleepInterval =0;
00223   const char* channelName   ="EventChannel";
00224 
00225   int c;
00226   while ((c = getopt(argc,argv,"hd:s:n:")) != EOF)
00227   {
00228      switch (c)
00229      {
00230         case 'd': discnum = atoi(optarg);
00231                   break;
00232 
00233         case 's': sleepInterval = atoi(optarg);
00234                   break;
00235 
00236         case 'n': channelName = optarg;
00237                   break;
00238 
00239         case 'h': usage(argc,argv);
00240                   exit(0);
00241         default : usage(argc,argv);
00242                   exit(-1);
00243      }
00244   }
00245 
00246 #if defined(HAVE_SIGNAL_H) && defined(SIGPIPE)
00247   // Ignore broken pipes
00248   signal(SIGPIPE, SIG_IGN);
00249 #endif
00250 
00251   Consumer_i* consumer = new Consumer_i (discnum);
00252   CosEventChannelAdmin::EventChannel_var channel;
00253 
00254   const char* action=""; // Use this variable to help report errors.
00255   try {
00256     CORBA::Object_var obj;
00257 
00258     action="resolve initial reference 'RootPOA'";
00259     obj=orb->resolve_initial_references("RootPOA");
00260     PortableServer::POA_var rootPoa =PortableServer::POA::_narrow(obj);
00261     if(CORBA::is_nil(rootPoa))
00262         throw CORBA::OBJECT_NOT_EXIST();
00263 
00264     action="activate the RootPOA's POAManager";
00265     PortableServer::POAManager_var pman =rootPoa->the_POAManager();
00266     pman->activate();
00267 
00268     //
00269     // Obtain object reference to EventChannel
00270     // (from command-line argument or from the Naming Service).
00271     if(optind<argc)
00272     {
00273       action="convert URI from command line into object reference";
00274       obj=orb->string_to_object(argv[optind]);
00275     }
00276     else
00277     {
00278       action="resolve initial reference 'NameService'";
00279       obj=orb->resolve_initial_references("NameService");
00280       CosNaming::NamingContext_var rootContext=
00281         CosNaming::NamingContext::_narrow(obj);
00282       if(CORBA::is_nil(rootContext))
00283           throw CORBA::OBJECT_NOT_EXIST();
00284 
00285       action="find EventChannel in NameService";
00286       cout << action << endl;
00287       obj=rootContext->resolve(str2name(channelName));
00288     }
00289 
00290     action="narrow object reference to event channel";
00291     channel=CosEventChannelAdmin::EventChannel::_narrow(obj);
00292     if(CORBA::is_nil(channel))
00293     {
00294        cerr << "Failed to narrow Event Channel reference." << endl;
00295        exit(1);
00296     }
00297 
00298   }
00299   catch(CORBA::ORB::InvalidName& ex) { // resolve_initial_references
00300      cerr<<"Failed to "<<action<<". ORB::InvalidName"<<endl;
00301      exit(1);
00302   }
00303   catch(CosNaming::NamingContext::InvalidName& ex) { // resolve
00304      cerr<<"Failed to "<<action<<". NamingContext::InvalidName"<<endl;
00305      exit(1);
00306   }
00307   catch(CosNaming::NamingContext::NotFound& ex) { // resolve
00308      cerr<<"Failed to "<<action<<". NamingContext::NotFound"<<endl;
00309      exit(1);
00310   }
00311   catch(CosNaming::NamingContext::CannotProceed& ex) { // resolve
00312      cerr<<"Failed to "<<action<<". NamingContext::CannotProceed"<<endl;
00313      exit(1);
00314   }
00315   catch(CORBA::TRANSIENT& ex) { // _narrow()
00316      cerr<<"Failed to "<<action<<". TRANSIENT"<<endl;
00317      exit(1);
00318   }
00319   catch(CORBA::OBJECT_NOT_EXIST& ex) { // _narrow()
00320      cerr<<"Failed to "<<action<<". OBJECT_NOT_EXIST"<<endl;
00321      exit(1);
00322   }
00323   catch(CORBA::SystemException& ex) {
00324      cerr<<"Failed to "<<action<<".";
00325 #if defined(HAVE_OMNIORB4)
00326      cerr<<" "<<ex._name();
00327      if(ex.NP_minorString())
00328          cerr<<" ("<<ex.NP_minorString()<<")";
00329 #endif
00330      cerr<<endl;
00331      exit(1);
00332   }
00333   catch(CORBA::Exception& ex) {
00334      cerr<<"Failed to "<<action<<"."
00335 #if defined(HAVE_OMNIORB4)
00336        " "<<ex._name()
00337 #endif
00338        <<endl;
00339      exit(1);
00340   }
00341 
00342   //
00343   // Get Consumer admin interface - retrying on Comms Failure.
00344   CosEventChannelAdmin::ConsumerAdmin_var consumer_admin;
00345   while (1)
00346   {
00347      try {
00348         consumer_admin = channel->for_consumers ();
00349         if (CORBA::is_nil (consumer_admin))
00350         {
00351            cerr << "Event Channel returned nil Consumer Admin!" << endl;
00352            exit(1);
00353         }
00354         break;
00355      }
00356      catch (CORBA::COMM_FAILURE& ex) {
00357         cerr << "Caught COMM_FAILURE exception "
00358              << "obtaining Consumer Admin! Retrying..."
00359              << endl;
00360         continue;
00361      }
00362   }
00363   cout << "Obtained ConsumerAdmin." << endl;
00364 
00365   omni_mutex_lock condition_lock(mutex);
00366   while (1) {
00367      //
00368      // Get proxy supplier - retrying on Comms Failure.
00369      CosEventChannelAdmin::ProxyPushSupplier_var proxy_supplier;
00370      while (1)
00371      {
00372         try {
00373            proxy_supplier = consumer_admin->obtain_push_supplier ();
00374            if (CORBA::is_nil (proxy_supplier))
00375            {
00376               cerr << "Consumer Admin returned nil proxy_supplier!"
00377                    << endl;
00378               exit (1);
00379            }
00380            break;
00381         }
00382         catch (CORBA::COMM_FAILURE& ex) {
00383            cerr << "Caught COMM_FAILURE Exception "
00384                 << "obtaining Push Supplier! Retrying..."
00385                 << endl;
00386            continue;
00387         }
00388      }
00389      cout << "Obtained ProxyPushSupplier." << endl;
00390    
00391      //
00392      // Connect Push Consumer - retrying on Comms Failure.
00393      while (1)
00394      {
00395         try {
00396            proxy_supplier->connect_push_consumer(consumer->_this());
00397            break;
00398         }
00399         catch (CORBA::BAD_PARAM& ex) {
00400            cerr << "Caught BAD_PARAM Exception connecting Push Consumer!"
00401                 << endl;
00402            exit (1);
00403         }
00404         catch (CosEventChannelAdmin::AlreadyConnected& ex) {
00405            cerr << "Proxy Push Supplier already connected!"
00406                 << endl;
00407            break;
00408         }
00409         catch (CORBA::COMM_FAILURE& ex) {
00410            cerr << "Caught COMM_FAILURE exception "
00411                 << "connecting Push Consumer! Retrying..."
00412                 << endl;
00413            continue;
00414         }
00415      }
00416      cout << "Connected Push Consumer." << endl;
00417 
00418      // Wait for indication to disconnect before re-connecting.
00419      connect_cond.wait();
00420 
00421      // Disconnect - retrying on Comms Failure.
00422      while (1)
00423      {
00424         try {
00425            proxy_supplier->disconnect_push_supplier();
00426            break;
00427         }
00428         catch (CORBA::COMM_FAILURE& ex) {
00429            cerr << "Caught COMM_FAILURE Exception "
00430                 << "disconnecting Push Consumer! Retrying..."
00431                 << endl;
00432            continue;
00433         }
00434      }
00435      cout << "Disconnected Push Consumer." << endl;
00436    
00437      // Yawn
00438      cout << "Sleeping " << sleepInterval << " seconds." << endl;
00439      omni_thread::sleep(sleepInterval);
00440   }
00441 
00442   // NEVER GET HERE
00443   return 0;
00444 }
00445 
00446 static void
00447 usage(int argc, char **argv)
00448 {
00449   cerr<<
00450 "\nCreate a PushConsumer to receive events from a channel.\n"
00451 "syntax: "<<(argc?argv[0]:"pushcons")<<" OPTIONS [CHANNEL_URI]\n"
00452 "\n"
00453 "CHANNEL_URI: The event channel may be specified as a URI.\n"
00454 " This may be an IOR, or a corbaloc::: or corbaname::: URI.\n"
00455 "\n"
00456 "OPTIONS:                                         DEFAULT:\n"
00457 " -d NUM   disconnect after receiving NUM events   [0 - never disconnect]\n"
00458 " -s SECS  sleep SECS seconds after disconnecting  [0]\n"
00459 " -n NAME  channel name (if URI is not specified)  [\"EventChannel\"]\n"
00460 " -h       display this help text\n" << endl;
00461 }

Generated on Fri Aug 26 20:56:14 2005 for OmniEvents by  doxygen 1.4.3-20050530
omniEvents-2_6_2/doc/doxygen/a00195.html0000644000076400001440000011657110303671736020076 0ustar alexusers00000000000000 OmniEvents: pushsupp.cc Source File

pushsupp.cc

Go to the documentation of this file.
00001 // -*- Mode: C++; -*-
00002 //                            Package   : omniEvents
00003 //   pushsupp.cc              Created on: 1/4/98
00004 //                            Author    : Paul Nader (pwn)
00005 //
00006 //    Copyright (C) 1998 Paul Nader, 2003-2004 Alex Tingle
00007 //
00008 //    This file is part of the omnievents application.
00009 //
00010 //    omniEvents is free software; you can redistribute it and/or
00011 //    modify it under the terms of the GNU Lesser General Public
00012 //    License as published by the Free Software Foundation; either
00013 //    version 2.1 of the License, or (at your option) any later version.
00014 //
00015 //    omniEvents is distributed in the hope that it will be useful,
00016 //    but WITHOUT ANY WARRANTY; without even the implied warranty of
00017 //    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00018 //    Lesser General Public License for more details.
00019 //
00020 //    You should have received a copy of the GNU Lesser General Public
00021 //    License along with this library; if not, write to the Free Software
00022 //    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
00023 //
00024 // Description:
00025 //    Push Model supplier implementation.
00026 //      
00027 
00028 /*
00029   $Log: pushsupp.cc,v $
00030   Revision 1.10  2004/10/08 09:06:08  alextingle
00031   More robust exception minor code handling.
00032 
00033   Revision 1.9  2004/08/18 17:49:45  alextingle
00034   Added check for SIGPIPE before trying to use it.
00035 
00036   Revision 1.8  2004/08/06 16:19:23  alextingle
00037   -k & -K options removed.
00038   Naming service names may now be as complex as you like.
00039 
00040   Revision 1.7  2004/04/20 16:52:17  alextingle
00041   All examples updated for latest version on omniEvents. Server may now be
00042   specified as a 'corbaloc' string or IOR, instead of as naming service id/kind.
00043 
00044   Revision 1.6  2004/03/23 19:09:26  alextingle
00045   Fixed typos.
00046 
00047   Revision 1.5  2004/02/21 19:07:45  alextingle
00048   Corrected servants to use POA instead of BOA.
00049 
00050   Revision 1.4  2004/02/04 22:29:55  alextingle
00051   Reworked all C++ examples.
00052   Removed catch(...) as it tends to make it harder to see what's going on.
00053   Now uses POA instead of BOA.
00054   Uses omniORB4's Exception name probing.
00055   No longer uses 'naming.h/cc' utility code.
00056 
00057   Revision 1.3  2003/11/03 22:19:25  alextingle
00058   Removed all platform specific switches. Now uses autoconf, config.h.
00059   Removed stub header in order to allow makefile dependency checking to work
00060   correctly.
00061   Changed int to bool where appropriate.
00062 
00063   Revision 1.1.1.1.2.1  2002/09/28 22:20:51  shamus13
00064   Added ifdefs to enable omniEvents to compile
00065   with both omniORB3 and omniORB4. If __OMNIORB4__
00066   is defined during compilation, omniORB4 headers
00067   and command line option syntax is used, otherwise
00068   fall back to omniORB3 style.
00069 
00070   Revision 1.1.1.1  2002/09/25 19:00:26  shamus13
00071   Import of OmniEvents source tree from release 2.1.1
00072 
00073   Revision 0.14  2000/10/11 01:16:21  naderp
00074   *** empty log message ***
00075 
00076   Revision 0.13  2000/08/30 04:39:48  naderp
00077   Port to omniORB 3.0.1.
00078 
00079   Revision 0.12  2000/03/16 05:37:27  naderp
00080   Added stdlib.h for getopt.
00081 
00082   Revision 0.11  2000/03/06 13:27:10  naderp
00083   Using util getRootNamingContext function.
00084   Using stub headers.
00085   Fixed error messages.
00086 
00087   Revision 0.10  2000/03/02 03:21:20  naderp
00088   Added -r option to connect using nil reference.
00089   Added retry resiliency for handling COMM_FAUILURE exceptions.
00090 
00091 Revision 0.9  99/11/02  13:39:17  13:39:17  naderp (Paul Nader)
00092 Added <signal.h>
00093 
00094   Revision 0.8  1999/11/02 07:57:18  naderp
00095   Updated usage.
00096 
00097 Revision 0.7  99/11/01  19:22:43  19:22:43  naderp (Paul Nader)
00098 Added catch for COMM_FAILURE exception in obtain_push_consumer
00099 and disconnect_push_consumer calls.
00100 
00101 Revision 0.6  99/11/01  16:12:03  16:12:03  naderp (Paul Nader)
00102 omniEvents 2.0 Release.
00103 
00104 Revision 0.5  99/10/27  19:42:31  19:42:31  naderp (Paul Nader)
00105 Ignoring Unix SIGPIPE signal.
00106 Reporting sleep beforhand.
00107 
00108 Revision 0.4  99/04/23  16:05:47  16:05:47  naderp (Paul Nader)
00109 gcc port.
00110 
00111 Revision 0.3  99/04/23  09:34:04  09:34:04  naderp (Paul Nader)
00112 Windows Port.
00113 
00114 Revision 0.2  99/04/21  18:06:26  18:06:26  naderp (Paul Nader)
00115 *** empty log message ***
00116 
00117 Revision 0.1.1.1  98/11/27  16:59:40  16:59:40  naderp (Paul Nader)
00118 Added -s option to sleep after disconnecting.
00119 
00120 Revision 0.1  98/11/25  14:08:25  14:08:25  naderp (Paul Nader)
00121 Initial Revision
00122 
00123 */
00124 
00125 #ifdef HAVE_CONFIG_H
00126 #  include "config.h"
00127 #endif
00128 
00129 #ifdef HAVE_GETOPT
00130 #  include <unistd.h>
00131 extern char* optarg;
00132 extern int optind;
00133 #else
00134 #  include "getopt.h"
00135 #endif
00136 
00137 #ifdef HAVE_IOSTREAM
00138 #  include <iostream>
00139 #else
00140 #  include <iostream.h>
00141 #endif
00142 
00143 #ifdef HAVE_STD_IOSTREAM
00144 using namespace std;
00145 #endif
00146 
00147 #ifdef HAVE_STDLIB_H
00148 #  include <stdlib.h>
00149 #endif
00150 
00151 #ifdef HAVE_SIGNAL_H
00152 #  include <signal.h>
00153 #endif
00154 
00155 #include "CosEventComm.hh"
00156 #include "CosEventChannelAdmin.hh"
00157 #include "naming.h"
00158 
00159 static void usage(int argc, char **argv);
00160 
00161 class Supplier_i : virtual public POA_CosEventComm::PushSupplier {
00162 public:
00163   Supplier_i () {};
00164   void disconnect_push_supplier ();
00165 };
00166 
00167 void
00168 Supplier_i::disconnect_push_supplier () {
00169   cout << "Push Supplier: disconnected." << endl;
00170 }
00171 
00172 int main (int argc, char** argv)
00173 {
00174   long l = 0;
00175   CORBA::ORB_ptr orb = CORBA::ORB_init(argc,argv);
00176 
00177   // Process Options
00178   int         discnum       =0;
00179   bool        refnil        =false;
00180   int         sleepInterval =0;
00181   const char* channelName   ="EventChannel";
00182 
00183   int c;
00184   while ((c = getopt(argc,argv,"d:rs:n:h")) != EOF)
00185   {
00186      switch (c)
00187      {
00188         case 'd': discnum = atoi(optarg);
00189                   break;
00190 
00191         case 'r': refnil = true;
00192                   break;
00193 
00194         case 's': sleepInterval = atoi(optarg);
00195                   break;
00196 
00197         case 'n': channelName = optarg;
00198                   break;
00199 
00200         case 'h':
00201         default : usage(argc,argv);
00202                   exit(-1);
00203                   break;
00204      }
00205   }
00206 
00207 #if defined(HAVE_SIGNAL_H) && defined(SIGPIPE)
00208   // Ignore broken pipes
00209   signal(SIGPIPE, SIG_IGN);
00210 #endif
00211 
00212   Supplier_i* supplier = NULL;
00213   CosEventChannelAdmin::EventChannel_var channel;
00214 
00215   const char* action=""; // Use this variable to help report errors.
00216   try {
00217     CORBA::Object_var obj;
00218 
00219     // A Push Supplier can be implemented as a pure client or as a mixed
00220     // client-server process, depending on whether it requires and is
00221     // prepared to service disconnect requests from the channel.
00222     // If it is then create the servant object and activate the POA.
00223     if(!refnil)
00224     {
00225       supplier=new Supplier_i();
00226 
00227       action="resolve initial reference 'RootPOA'";
00228       obj=orb->resolve_initial_references("RootPOA");
00229       PortableServer::POA_var rootPoa =PortableServer::POA::_narrow(obj);
00230       if(CORBA::is_nil(rootPoa))
00231           throw CORBA::OBJECT_NOT_EXIST();
00232 
00233       action="activate the RootPOA's POAManager";
00234       PortableServer::POAManager_var pman =rootPoa->the_POAManager();
00235       pman->activate();
00236     }
00237 
00238     //
00239     // Obtain object reference to EventChannel
00240     // (from command-line argument or from the Naming Service).
00241     if(optind<argc)
00242     {
00243       action="convert URI from command line into object reference";
00244       obj=orb->string_to_object(argv[optind]);
00245     }
00246     else
00247     {
00248       action="resolve initial reference 'NameService'";
00249       obj=orb->resolve_initial_references("NameService");
00250       CosNaming::NamingContext_var rootContext=
00251         CosNaming::NamingContext::_narrow(obj);
00252       if(CORBA::is_nil(rootContext))
00253           throw CORBA::OBJECT_NOT_EXIST();
00254 
00255       action="find EventChannel in NameService";
00256       cout << action << endl;
00257       obj=rootContext->resolve(str2name(channelName));
00258     }
00259 
00260     action="narrow object reference to event channel";
00261     channel=CosEventChannelAdmin::EventChannel::_narrow(obj);
00262     if(CORBA::is_nil(channel))
00263     {
00264        cerr << "Failed to narrow Event Channel reference." << endl;
00265        exit(1);
00266     }
00267 
00268   }
00269   catch(CORBA::ORB::InvalidName& ex) { // resolve_initial_references
00270      cerr<<"Failed to "<<action<<". ORB::InvalidName"<<endl;
00271      exit(1);
00272   }
00273   catch(CosNaming::NamingContext::InvalidName& ex) { // resolve
00274      cerr<<"Failed to "<<action<<". NamingContext::InvalidName"<<endl;
00275      exit(1);
00276   }
00277   catch(CosNaming::NamingContext::NotFound& ex) { // resolve
00278      cerr<<"Failed to "<<action<<". NamingContext::NotFound"<<endl;
00279      exit(1);
00280   }
00281   catch(CosNaming::NamingContext::CannotProceed& ex) { // resolve
00282      cerr<<"Failed to "<<action<<". NamingContext::CannotProceed"<<endl;
00283      exit(1);
00284   }
00285   catch(CORBA::TRANSIENT& ex) { // _narrow()
00286      cerr<<"Failed to "<<action<<". TRANSIENT"<<endl;
00287      exit(1);
00288   }
00289   catch(CORBA::OBJECT_NOT_EXIST& ex) { // _narrow()
00290      cerr<<"Failed to "<<action<<". OBJECT_NOT_EXIST"<<endl;
00291      exit(1);
00292   }
00293   catch(CORBA::SystemException& ex) {
00294      cerr<<"Failed to "<<action<<".";
00295 #if defined(HAVE_OMNIORB4)
00296      cerr<<" "<<ex._name();
00297      if(ex.NP_minorString())
00298          cerr<<" ("<<ex.NP_minorString()<<")";
00299 #endif
00300      cerr<<endl;
00301      exit(1);
00302   }
00303   catch(CORBA::Exception& ex) {
00304      cerr<<"Failed to "<<action<<"."
00305 #if defined(HAVE_OMNIORB4)
00306        " "<<ex._name()
00307 #endif
00308        <<endl;
00309      exit(1);
00310   }
00311 
00312   //
00313   // Get Supplier Admin interface - retrying on Comms Failure.
00314   CosEventChannelAdmin::SupplierAdmin_var supplier_admin;
00315   while (1)
00316   {
00317      try {
00318         supplier_admin = channel->for_suppliers ();
00319         if (CORBA::is_nil(supplier_admin))
00320         {
00321            cerr << "Event Channel returned nil Supplier Admin!"
00322                 << endl;
00323            exit(1);
00324         }
00325         break;
00326      }
00327      catch (CORBA::COMM_FAILURE& ex) {
00328         cerr << "Caught COMM_FAILURE Exception "
00329              << "obtaining Supplier Admin! Retrying..."
00330              << endl;
00331         continue;
00332      }
00333   }
00334   cout << "Obtained SupplierAdmin." << endl;
00335 
00336   while (1)
00337   {
00338      //
00339      // Get proxy consumer - retrying on Comms Failure.
00340      CosEventChannelAdmin::ProxyPushConsumer_var proxy_consumer;
00341      while (1)
00342      {
00343         try {
00344            proxy_consumer = supplier_admin->obtain_push_consumer ();
00345            if (CORBA::is_nil(proxy_consumer))
00346            {
00347               cerr << "Supplier Admin returned nil proxy_consumer!"<< endl;
00348               exit(1);
00349            }
00350            break;
00351         }
00352         catch (CORBA::COMM_FAILURE& ex) {
00353            cerr << "Caught COMM_FAILURE Exception "
00354                 << "obtaining Proxy Push Consumer! Retrying..."
00355                 << endl;
00356            continue;
00357         }
00358      }
00359      cout << "Obtained ProxyPushConsumer." << endl;
00360    
00361      //
00362      // Connect Push Supplier - retrying on Comms Failure.
00363      CosEventComm::PushSupplier_var sptr =CosEventComm::PushSupplier::_nil();
00364      if (! refnil) {
00365         sptr = supplier->_this();
00366      }
00367 
00368      while (1)
00369      {
00370         try {
00371            proxy_consumer->connect_push_supplier(sptr.in());
00372            break;
00373         }
00374         catch (CORBA::BAD_PARAM& ex) {
00375            cerr << "Caught BAD_PARAM Exception connecting Push Supplier!"
00376                 << endl;
00377            exit (1);
00378         }
00379         catch (CosEventChannelAdmin::AlreadyConnected& ex) {
00380            cerr << "Proxy Push Consumer already connected!"
00381                 << endl;
00382            break;
00383         }
00384         catch (CORBA::COMM_FAILURE& ex) {
00385            cerr << "Caught COMM_FAILURE Exception "
00386                 << "connecting Push Supplier! Retrying..."
00387                 << endl;
00388            continue;
00389         }
00390      }
00391      cout << "Connected Push Supplier." << endl;
00392    
00393      // Push data.
00394      for (int i=0; (discnum == 0) || (i < discnum); i++)
00395      {
00396         CORBA::Any any;
00397         any <<= (CORBA::ULong) l++;
00398         try {
00399            cout << "Push Supplier: push() called. " << flush;
00400            proxy_consumer->push(any);
00401            cout << "Data : " << l-1 << endl;
00402         }
00403         catch(CosEventComm::Disconnected&) {
00404            cout << "Failed. Caught Disconnected Exception!" << endl;
00405         }
00406         catch(CORBA::COMM_FAILURE&) {
00407            cout << "Failed. Caught COMM_FAILURE Exception!" << endl;
00408         }
00409      }
00410    
00411      // Disconnect - retrying on Comms Failure.
00412      while (1)
00413      {
00414         try {
00415            proxy_consumer->disconnect_push_consumer();
00416            break;
00417         }
00418         catch (CORBA::COMM_FAILURE& ex) {
00419            cerr << "Caught COMM_FAILURE Exception "
00420                 << "disconnecting Push Supplier! Retrying..."
00421                 << endl;
00422            continue;
00423         }
00424      }
00425      cout << "ProxyPushConsumer disconnected." << endl;
00426 
00427      // Yawn.
00428      cout << "Sleeping " << sleepInterval << " seconds." << endl;
00429      omni_thread::sleep(sleepInterval);
00430   }
00431 
00432   // Not Reached
00433   return 0;
00434 }
00435 
00436 static void
00437 usage(int argc, char **argv)
00438 {
00439   cerr<<
00440 "\nCreate a PushSupplier to send events to a channel.\n"
00441 "syntax: "<<(argc?argv[0]:"pushsupp")<<" OPTIONS [CHANNEL_URI]\n"
00442 "\n"
00443 "CHANNEL_URI: The event channel may be specified as a URI.\n"
00444 " This may be an IOR, or a corbaloc::: or corbaname::: URI.\n"
00445 "\n"
00446 "OPTIONS:                                         DEFAULT:\n"
00447 " -d NUM   disconnect after sending NUM events     [0 - never disconnect]\n"
00448 " -r       connect using a nil reference\n"
00449 " -s SECS  sleep SECS seconds after disconnecting  [0]\n"
00450 " -n NAME  channel name (if URI is not specified)  [\"EventChannel\"]\n"
00451 " -h       display this help text\n" << endl;
00452 }

Generated on Fri Aug 26 20:56:14 2005 for OmniEvents by  doxygen 1.4.3-20050530
omniEvents-2_6_2/doc/doxygen/a00196.html0000644000076400001440000004606210303671736020074 0ustar alexusers00000000000000 OmniEvents: rmeventc.cc Source File

rmeventc.cc

Go to the documentation of this file.
00001 //                            Package   : omniEvents
00002 // rmeventc.cc                Created   : 2003/12/21
00003 //                            Author    : Alex Tingle
00004 //
00005 //    Copyright (C) 2003 Alex Tingle
00006 //
00007 //    This file is part of the omniEvents application.
00008 //
00009 //    omniEvents is free software; you can redistribute it and/or
00010 //    modify it under the terms of the GNU Lesser General Public
00011 //    License as published by the Free Software Foundation; either
00012 //    version 2.1 of the License, or (at your option) any later version.
00013 //
00014 //    omniEvents is distributed in the hope that it will be useful,
00015 //    but WITHOUT ANY WARRANTY; without even the implied warranty of
00016 //    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00017 //    Lesser General Public License for more details.
00018 //
00019 //    You should have received a copy of the GNU Lesser General Public
00020 //    License along with this library; if not, write to the Free Software
00021 //    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
00022 //
00023 // Description:
00024 //    Destroys the named EventChannel.
00025 //      
00026 
00027 #ifdef HAVE_CONFIG_H
00028 #  include "config.h"
00029 #endif
00030 
00031 #ifdef HAVE_GETOPT
00032 #  include <unistd.h>
00033 extern char* optarg;
00034 extern int optind;
00035 #else
00036 #  include "getopt.h"
00037 #endif
00038 
00039 #ifdef HAVE_STDLIB_H
00040 #  include <stdlib.h> // exit()
00041 #endif
00042 
00043 #ifdef HAVE_IOSTREAM
00044 #  include <iostream>
00045 #else
00046 #  include <iostream.h>
00047 #endif
00048 
00049 #ifdef HAVE_STD_IOSTREAM
00050 using namespace std;
00051 #endif
00052 
00053 #include "CosEventChannelAdmin.hh"
00054 #include "naming.h"
00055 
00056 static void usage(int argc, char **argv);
00057 
00058 int
00059 main(int argc, char **argv)
00060 {
00061   int result =1;
00062 
00063   //
00064   // Start orb.
00065 #if defined(HAVE_OMNIORB4)
00066   CORBA::ORB_ptr orb = CORBA::ORB_init(argc,argv,"omniORB4");
00067 #else
00068   CORBA::ORB_ptr orb = CORBA::ORB_init(argc,argv,"omniORB3");
00069 #endif
00070 
00071   // Process Options
00072   int c;
00073 
00074   CosNaming::Name ecName =str2name("EventChannel");
00075 
00076   while ((c = getopt(argc,argv,"n:h")) != EOF)
00077   {
00078      switch (c)
00079      {
00080         case 'n': ecName=str2name(optarg);
00081                   break;
00082 
00083         case 'h': usage(argc,argv);
00084                   exit(0);
00085 
00086         default : usage(argc,argv);
00087                   exit(-1);
00088      }
00089   }
00090 
00091   //
00092   // Use one big try...catch block.
00093   // 'action' variable keeps track of what we're doing.
00094   const char* action ="start";
00095   try
00096   {
00097     CORBA::Object_var obj;
00098     
00099     //
00100     // Obtain object reference to EventChannel
00101     // (from command-line argument or from the Naming Service).
00102     if(optind<argc)
00103     {
00104       action="convert URI from command line into object reference";
00105       obj=orb->string_to_object(argv[optind]);
00106     }
00107     else
00108     {
00109       //
00110       // Get Name Service root context.
00111       action="resolve initial reference 'NameService'";
00112       obj=orb->resolve_initial_references("NameService");
00113       CosNaming::NamingContext_var rootContext=
00114         CosNaming::NamingContext::_narrow(obj);
00115       if(CORBA::is_nil(rootContext))
00116           throw CORBA::OBJECT_NOT_EXIST();
00117 
00118       //
00119       // Obtain reference to the Event Channel.
00120       action="find Event Channel in naming service";
00121       obj=rootContext->resolve(ecName);
00122 
00123       //
00124       // Unbind the Channel's reference in the naming service.
00125       action="unbind Event Channel from naming service";
00126       rootContext->unbind(ecName);
00127     }
00128     
00129     action="narrow object reference to event channel";
00130     CosEventChannelAdmin::EventChannel_var channel =
00131       CosEventChannelAdmin::EventChannel::_narrow(obj);
00132     if(CORBA::is_nil(channel))
00133         throw CORBA::OBJECT_NOT_EXIST();
00134     
00135     //
00136     // Destroy the EventChannel.
00137     action="destroy Event Channel";
00138     channel->destroy();
00139 
00140     //
00141     // Clean up nicely.
00142     action="destroy orb";
00143     orb->destroy();
00144 
00145     //
00146     // If we get here, then everything has worked OK.
00147     result=0;
00148 
00149   }
00150   catch(CORBA::ORB::InvalidName& ex) { // resolve_initial_references
00151      cerr<<"Failed to "<<action<<". ORB::InvalidName"<<endl;
00152   }
00153   catch(CosNaming::NamingContext::InvalidName& ex) { // resolve
00154      cerr<<"Failed to "<<action<<". NamingContext::InvalidName"<<endl;
00155   }
00156   catch(CosNaming::NamingContext::NotFound& ex) { // resolve
00157      cerr<<"Failed to "<<action<<". NamingContext::NotFound"<<endl;
00158   }
00159   catch(CosNaming::NamingContext::CannotProceed& ex) { // resolve
00160      cerr<<"Failed to "<<action<<". NamingContext::CannotProceed"<<endl;
00161   }
00162   catch(CORBA::TRANSIENT& ex) { // _narrow()
00163      cerr<<"Failed to "<<action<<". TRANSIENT"<<endl;
00164   }
00165   catch(CORBA::OBJECT_NOT_EXIST& ex) { // _narrow()
00166      cerr<<"Failed to "<<action<<". OBJECT_NOT_EXIST"<<endl;
00167   }
00168   catch(CORBA::SystemException& ex) {
00169      cerr<<"Failed to "<<action<<".";
00170 #if defined(HAVE_OMNIORB4)
00171      cerr<<" "<<ex._name();
00172      if(ex.NP_minorString())
00173          cerr<<" ("<<ex.NP_minorString()<<")";
00174 #endif
00175      cerr<<endl;
00176   }
00177   catch(CORBA::Exception& ex) {
00178      cerr<<"Failed to "<<action<<"."
00179 #if defined(HAVE_OMNIORB4)
00180        " "<<ex._name()
00181 #endif
00182        <<endl;
00183   }
00184 
00185   return result;
00186 }
00187 
00188 static void
00189 usage(int argc, char **argv)
00190 {
00191   cerr<<
00192 "\nDestroy an EventChannel.\n"
00193 "syntax: "<<(argc?argv[0]:"rmeventc")<<" OPTIONS [CHANNEL_URI]\n"
00194 "\n"
00195 "CHANNEL_URI: The event channel may be specified as a URI.\n"
00196 " This may be an IOR, or a corbaloc::: or corbaname::: URI.\n"
00197 "\n"
00198 "OPTIONS:                                         DEFAULT:\n"
00199 " -n NAME  channel name (if URI is not specified)  [\"EventChannel\"]\n"
00200 " -h       display this help text\n" << endl;
00201 }
00202 

Generated on Fri Aug 26 20:56:14 2005 for OmniEvents by  doxygen 1.4.3-20050530
omniEvents-2_6_2/doc/doxygen/a00197.html0000644000076400001440000001163510303671736020073 0ustar alexusers00000000000000 OmniEvents: scour.h Source File

scour.h

Go to the documentation of this file.
00001 /*                            Package   : omniEvents
00002  * scour.h                    Created   : 2003/10/31
00003  *                            Author    : Alex Tingle
00004  *
00005  *    Copyright (C) 2003 Alex Tingle.
00006  *
00007  *    This file is part of the omniEvents application.
00008  *
00009  *    omniEvents is free software; you can redistribute it and/or
00010  *    modify it under the terms of the GNU Lesser General Public
00011  *    License as published by the Free Software Foundation; either
00012  *    version 2.1 of the License, or (at your option) any later version.
00013  *
00014  *    omniEvents is distributed in the hope that it will be useful,
00015  *    but WITHOUT ANY WARRANTY; without even the implied warranty of
00016  *    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00017  *    Lesser General Public License for more details.
00018  *
00019  *    You should have received a copy of the GNU Lesser General Public
00020  *    License along with this library; if not, write to the Free Software
00021  *    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
00022  */
00023 
00024 /* The PACKAGE_* macros cause incompatabilities with omniORB4. Do not export
00025  * them unless we specifically need the package info.
00026  * These #undefs cannot be put into config.h.in because configure would
00027  * then treat them as templates to be overwritten.
00028  */
00029 
00030 #ifndef NEED_PACKAGE_INFO
00031 #  undef PACKAGE_BUGREPORT
00032 #  undef PACKAGE_NAME
00033 #  undef PACKAGE_STRING
00034 #  undef PACKAGE_TARNAME
00035 #  undef PACKAGE_VERSION
00036 #endif

Generated on Fri Aug 26 20:56:14 2005 for OmniEvents by  doxygen 1.4.3-20050530
omniEvents-2_6_2/doc/doxygen/a00081.html0000644000076400001440000000534610303671736020065 0ustar alexusers00000000000000 OmniEvents: Callback.h File Reference

Callback.h File Reference

This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Namespaces

namespace  OmniEvents

Classes

class  OmniEvents::Callback
 Interface for classes that wish to receive callbacks from deferred requests. More...


Generated on Fri Aug 26 20:56:14 2005 for OmniEvents by  doxygen 1.4.3-20050530
omniEvents-2_6_2/doc/doxygen/a00082.html0000644000076400001440000001203110303671737020054 0ustar alexusers00000000000000 OmniEvents: channel.cc File Reference

channel.cc File Reference

#include <stdlib.h>
#include <signal.h>
#include <iostream.h>
#include <omniEvents/EventChannel.h>

Include dependency graph for channel.cc:

Go to the source code of this file.

Functions

void myShutdown (int signum)
 Signal handler.
int main (int argc, char **argv)
 The main process entry point.


Function Documentation

int main int  argc,
char **  argv
 

The main process entry point.

Also serves as the 'ServiceMain' entry point on Windows.

Definition at line 54 of file channel.cc.

References OmniEvents::EventChannel_i::activate(), OmniEvents::Orb::inst(), myShutdown(), and orb.

void myShutdown int  signum  ) 
 

Signal handler.

Definition at line 49 of file channel.cc.

References OmniEvents::Orb::inst().

Referenced by main().


Generated on Fri Aug 26 20:56:14 2005 for OmniEvents by  doxygen 1.4.3-20050530
omniEvents-2_6_2/doc/doxygen/a00200.png0000644000076400001440000000523410227236242017664 0ustar alexusers00000000000000‰PNG  IHDR ×$3!PLTEþÿÿo___ŸŸŸßßß???¿¿¿ÿÿÿ¤ÌatRNS@æØf )IDATxœíMwâ8†û/°eIŸÛ™š–sºR–u ³¬ I¶U]°¬JšÀ®C Ø; Žñý•£+ æÃ–eÙÑÛ|Ù¨ÐÓò•¥+éþZ?dý”¦€ÒPšJS@i (M•O –­óË'[D&þúOM¥) 4”¦€ÒPy¦à^º;Nr†øj²S·p+…Ö»ã'-¾á+£õ—Ç Bá }Dê¶Š¯fäñ‚Pè4àô†ý:T&]üưÿO«§O0îÁŸüug•áùеýÊùŠc•ɃeR øêtšõGφál€žfO3Û9iՉŸî”ç¦iÔ«õ*¡P¾%§Ÿ5îȃeR ~Û˜¤ÚKˆl—üç·g×cð왽躦A˜è·±úüA,“‚P WÄWƒ˜¤ðõÏaY„ŒcYCRð0“3¡@Lã˺ÐÅ+Âê¸m5ø´¥.|&–IA(´N>ŽÑ. …ñlàwOçÓˆ¨R»°¦0#vá‚ØÄœüÝ  Xlï—ô¨P @gÞ˜¶áZÖdyO!òZdU <3éP uáÏ:Üü; àš^Pzj&\¾.ØÐxAaW?"?ˆ]x~;¿G`ì˜~—Rpz¤¥Ä&± Mf.ÈI5ŽÂîA–üP mÄTÀ0 çßiåüuRÆ¡6¢ŒµgMaOÏ:ÂrêQ'ÁskF¥MíûwbK …VäÌýØWB0òFÁ{Š<Ù žm·Ž EÂþJø[ìMÙ>e¤]`éñû+áo±7e)Àt§uŒß_ ‹½©Ka÷áøýœKL¹§·¿2ï´~!‰,/ÁDŽD!veÑõnº^Ðx‰¥€˜°ÎWDÌþ yÒ;9ñdzÓ’öWH]¨t½ËK …ôgY„”°¿2ï4!‰,/q"›´””°¿’N!‚¸þ ˆ£ ‚¸þ £ ‚¸þ ˆ¢õú”Y@PŽB&T£ Å(dA- YAPÆ+ƒåÏ BŠCöŠ! –ÛJ[1(L%OL• äNE”¢ã)Èž£,CGS>S[†Ž¦ }޲ Kaª)@P Æàh G/cJ6è.KŒÂÁ·ÝGÿêC| ÙKS@i (M¥) bQ8bl!w&]ï ßüÁÄ_›þ¹þLõ1Í%+¦{5BÚK÷ˆzî½{>„Âô˜Û&VÌÖɇ{È…ÐÇ^ Ç-òcÅ vhÍ…¦e=<¶? §]µNÜÓ!T'þðÖ"ŸÏ—6§"î+fàÆ=£‚¾bÞg¬ünŸ_#ïá³5ùï>NüŸI]˜‚Ú°gŠòKÙËWF]£Ó,‡ç©Iab ……Õ±ú“EÓúm2_Ô…µ`þz19w/Ja FÛ„ç©G\—£?jÔ. ¬ËÏ à}¡va‘¨.Ð+Âܤ5<¯H= Ä4þl_Ù˺ðl‘ºð‰\}žë[Ç²Žæª.¬ç©Gá¾r÷l_Õ¨]øb=?-Þ?|™øO·§! Çíŵ”„B§YÏ+RÞ5=¹ï[AQÿø;m#¬‹ Çß;Ò»&B¡ò¸1¯H= ‡H÷#4MASÐ4MAe þþŸx¬lˆá•9Ò3%˜ª¿ÿ”cƒB;J…¤…Œ½µŠPÈxþ‚*²Ë¢ É[¬…¥ Ⱦ.ì[d Mëòà,cR •!³éŽ…=‹¬Ý»Æyäê™MŤ@ç¾f„! °g‘µSÆÇŠKÎþÍÆ4¬)ìZd½è‚Û"Ôkê\>BZ…ŠM•Ílð%…Ý‹¬éYA„:LB |„ºy§U_…£KD¦‰‹C+ë¸s‘5=+ˆJ†IH‹P‡ÃàÝU8ºd21 «+bç"krEx×A„º Éå"ÔA‘Ž)!…,0ð¢Y£u¼êMr—uF¨ÃºP[…£KJ!z{­Ô¢¹ÈÚýFZÊ BIÂ#.¡n6'‡VáèSo"C¢YÓ»&¡Ž$á—‹Pç·…µL²Mä¶;èèEÖIÙ¶a…èEÖIɶPرÈú ¡ ×DªÓ§ÜTz&r3çT:³‚(¤¶# ?£0ÛQ·.@JÆa5š3]×¥)@I´— ˜K·9Ô«6ѿΟnÙØTñÊDþj1Ù¬$yÀ_Q ¾ÜZÊRº†Wa oÈ”¦ MB)$õ¬wäÌ5…„~‚‚PHè'(…$~‚u‰|SHæ'X‡È5…„~‚u‰\SHè'Xo˜Ÿ ñý…¢ÛOP( ±ýBP+‰Ÿ 8’ø Ó›Jä'Ð=k–ŸeÑ#nA~r1¨J!‰?j—ƒøR–ÂÊ:FL¼N:&Z“ Š‚Ï/€º—œ’( é(ì­ Š×Ca‹V›`¼j Th350[ ôAÅ(|èßñ‰Æjü´°Üóckà±"QøÔøZæU´¹L^î|Rßòý"Q°Áp‰«ªà ±”ëý_^ªH†Á`å°_ÆhB6ãžS‚39oPo‡kûìæó›€ŠBeô–R5î0âœA£ÍÁ¨»¨½³ÆUƒz;…òíFºBQ€/Wo‘‚ 78¶mÐhs0†[¨BŒ†½ôw‹#´QT¡(Ô`vl00âœA£Íá8–U£Ã¹…ÐFQ…¢`b =—¯ 64ȧïð\ÞRÖEŠÂO¿-´ qŽÚ… 0=f6ÚŽBx£¨BQ˜÷¿¡W#ÔF”© †Î¤ÊS0‹ÛF»ÃqÖ¶IS@”wF›Û¦"R8^šJS@i (MU Å  TšJS@i (Mõ Ëfî®2IEND®B`‚omniEvents-2_6_2/doc/doxygen/a00083.html0000644000076400001440000012737110303671737020073 0ustar alexusers00000000000000 OmniEvents: config.h File Reference

config.h File Reference

#include "scour.h"

Include dependency graph for config.h:

Go to the source code of this file.

Defines

#define HAVE_ALLOCA   1
#define HAVE_ALLOCA_H   1
#define HAVE_BOOL
#define HAVE_CMATH   1
#define HAVE_FCNTL_H   1
#define HAVE_FSTREAM_OPEN   1
#define HAVE_GETHOSTNAME   1
#define HAVE_GETOPT   1
#define HAVE_INTTYPES_H   1
#define HAVE_IOMANIP   1
#define HAVE_IOSTREAM   1
#define HAVE_MALLOC   1
#define HAVE_MALLOC_H   1
#define HAVE_MEMORY_H   1
#define HAVE_NAMESPACES
#define HAVE_OMNIORB4   1
#define HAVE_ON_EXIT   1
#define HAVE_PTHREAD   1
#define HAVE_SIGNAL_H   1
#define HAVE_STDINT_H   1
#define HAVE_STDLIB_H   1
#define HAVE_STD_IOSTREAM   1
#define HAVE_STD_STL   1
#define HAVE_STL
#define HAVE_STRCHR   1
#define HAVE_STRDUP   1
#define HAVE_STRINGS_H   1
#define HAVE_STRING_H   1
#define HAVE_SYSLOG_H   1
#define HAVE_SYS_PARAM_H   1
#define HAVE_SYS_STAT_H   1
#define HAVE_SYS_TYPES_H   1
#define HAVE_SYS_UTSNAME_H   1
#define HAVE_TZSET   1
#define HAVE_UNAME   1
#define HAVE_UNISTD_H   1
#define LSTAT_FOLLOWS_SLASHED_SYMLINK   1
#define PACKAGE_BUGREPORT   "alex.omnievents@firetree.net"
#define PACKAGE_NAME   "omniEvents"
#define PACKAGE_STRING   "omniEvents 2.6.2"
#define PACKAGE_TARNAME   "omnievents"
#define PACKAGE_VERSION   "2.6.2"
#define RETSIGTYPE   void
#define STDC_HEADERS   1
#define __OSVERSION__   2
#define __USE_STD_IOSTREAM   1
#define __linux__   1
#define __x86__   1


Define Documentation

#define __linux__   1
 

Definition at line 222 of file config.h.

#define __OSVERSION__   2
 

Definition at line 189 of file config.h.

#define __USE_STD_IOSTREAM   1
 

Definition at line 192 of file config.h.

#define __x86__   1
 

Definition at line 252 of file config.h.

#define HAVE_ALLOCA   1
 

Definition at line 16 of file config.h.

#define HAVE_ALLOCA_H   1
 

Definition at line 20 of file config.h.

#define HAVE_BOOL
 

Definition at line 23 of file config.h.

#define HAVE_CMATH   1
 

Definition at line 26 of file config.h.

#define HAVE_FCNTL_H   1
 

Definition at line 29 of file config.h.

#define HAVE_FSTREAM_OPEN   1
 

Definition at line 35 of file config.h.

#define HAVE_GETHOSTNAME   1
 

Definition at line 38 of file config.h.

#define HAVE_GETOPT   1
 

Definition at line 41 of file config.h.

#define HAVE_INTTYPES_H   1
 

Definition at line 44 of file config.h.

#define HAVE_IOMANIP   1
 

Definition at line 47 of file config.h.

#define HAVE_IOSTREAM   1
 

Definition at line 53 of file config.h.

#define HAVE_MALLOC   1
 

Definition at line 63 of file config.h.

#define HAVE_MALLOC_H   1
 

Definition at line 66 of file config.h.

#define HAVE_MEMORY_H   1
 

Definition at line 69 of file config.h.

#define HAVE_NAMESPACES
 

Definition at line 72 of file config.h.

#define HAVE_OMNIORB4   1
 

Definition at line 78 of file config.h.

#define HAVE_ON_EXIT   1
 

Definition at line 81 of file config.h.

#define HAVE_PTHREAD   1
 

Definition at line 87 of file config.h.

#define HAVE_SIGNAL_H   1
 

Definition at line 90 of file config.h.

#define HAVE_STD_IOSTREAM   1
 

Definition at line 106 of file config.h.

#define HAVE_STD_STL   1
 

Definition at line 109 of file config.h.

#define HAVE_STDINT_H   1
 

Definition at line 100 of file config.h.

#define HAVE_STDLIB_H   1
 

Definition at line 103 of file config.h.

#define HAVE_STL
 

Definition at line 112 of file config.h.

#define HAVE_STRCHR   1
 

Definition at line 115 of file config.h.

#define HAVE_STRDUP   1
 

Definition at line 118 of file config.h.

#define HAVE_STRING_H   1
 

Definition at line 124 of file config.h.

#define HAVE_STRINGS_H   1
 

Definition at line 121 of file config.h.

#define HAVE_SYS_PARAM_H   1
 

Definition at line 130 of file config.h.

#define HAVE_SYS_STAT_H   1
 

Definition at line 133 of file config.h.

#define HAVE_SYS_TYPES_H   1
 

Definition at line 136 of file config.h.

#define HAVE_SYS_UTSNAME_H   1
 

Definition at line 139 of file config.h.

#define HAVE_SYSLOG_H   1
 

Definition at line 127 of file config.h.

#define HAVE_TZSET   1
 

Definition at line 142 of file config.h.

#define HAVE_UNAME   1
 

Definition at line 145 of file config.h.

#define HAVE_UNISTD_H   1
 

Definition at line 148 of file config.h.

#define LSTAT_FOLLOWS_SLASHED_SYMLINK   1
 

Definition at line 152 of file config.h.

#define PACKAGE_BUGREPORT   "alex.omnievents@firetree.net"
 

Definition at line 155 of file config.h.

#define PACKAGE_NAME   "omniEvents"
 

Definition at line 158 of file config.h.

Referenced by OmniEvents::DaemonImpl::daemonize(), OmniEvents::Service::install(), OmniEvents::DaemonImpl::runningOk(), OmniEvents::Service::start(), OmniEvents::Service::uninstall(), and OmniEvents::usage().

#define PACKAGE_STRING   "omniEvents 2.6.2"
 

Definition at line 161 of file config.h.

Referenced by OmniEvents::version().

#define PACKAGE_TARNAME   "omnievents"
 

Definition at line 164 of file config.h.

#define PACKAGE_VERSION   "2.6.2"
 

Definition at line 167 of file config.h.

#define RETSIGTYPE   void
 

Definition at line 175 of file config.h.

#define STDC_HEADERS   1
 

Definition at line 186 of file config.h.


Generated on Fri Aug 26 20:56:14 2005 for OmniEvents by  doxygen 1.4.3-20050530
omniEvents-2_6_2/doc/doxygen/a00201.png0000644000076400001440000000072410227236242017664 0ustar alexusers00000000000000‰PNG  IHDRÇ'IoAw!PLTEþÿÿo___???ßßß¿¿¿ŸŸŸÿÿÿi¸p†tRNS@æØfaIDATH‰íÖ=kƒ@ð|…[³¶âØb](ç®Åìöŵ ØÝR³•(õn*ÁK¼çSöÎú¦§iJêtñçÝÿAAÿy È€ük„“¶Ð étk=Òúrd:yÔ‹+1W H…àv„¿‚EHí$’UFèé.Juž¤šMâá«T"™mmˆâÀÀ ƒ×ZÄ3¯ÇòixIXÌ=ÓH¶æJ_‹k8YÌrd*V¢Ý×"srAí5¦6µ2'K°jç^PCJ,¸œqbp£[ŠJ„jËNX—•lõiRÀ9bÈNê‘99ÿ±’d\v²…À‚»b%X‰xæmÞIÈN&jd ÕtqWt2“pw"¬©¦«@ät1%R<>?L×. ¹aMÈל‰‚>¥ŸoדùÜ?’€Ó?ò-r”Èï³ÇÏ]Ï?ˆ¼ÂëähoÝfIEND®B`‚omniEvents-2_6_2/doc/doxygen/a00084.html0000644000076400001440000000652010303671737020064 0ustar alexusers00000000000000 OmniEvents: ConsumerAdmin.cc File Reference

ConsumerAdmin.cc File Reference

#include "ConsumerAdmin.h"
#include "EventChannel.h"
#include "ProxyPushSupplier.h"
#include "ProxyPullSupplier.h"
#include "Orb.h"
#include "PersistNode.h"
#include "Filter.h"

Include dependency graph for ConsumerAdmin.cc:

Go to the source code of this file.

Namespaces

namespace  OmniEvents


Generated on Fri Aug 26 20:56:14 2005 for OmniEvents by  doxygen 1.4.3-20050530
omniEvents-2_6_2/doc/doxygen/a00202.png0000644000076400001440000004454710227236242017700 0ustar alexusers00000000000000‰PNG  IHDR¤Æ­J¿*PLTEþÿÿGGG///o___ŸŸŸßßß???¿¿¿ÿÿÿ Á!tRNS@æØf IDATxœíOÛ¶Öçç…Ìv^ü­îçr™OÓ©½|žiÇöúif¢å*O¤e›Ü6ÙÍÌsÓDË&­kïnlÙ–v”¬ØÄ{‚à€I€<$ üÚH2ÿ$¾< xþ'âå˜þÓÐà-Ô9y¤ÎÉ#uN©sòH“Gêœ.ØÔR%H'Cš,‰<Òñ‰aÒRR¡ÆŽ÷änyqÎRñH‡S…` ½sÕ¥W»Ko¥Ã(ìHPžPÑ<ºòŽ×´@0ò “oŽôÝKÔ˜&Ìž€Åw5ÄH—ÞñQˆC“W†ôÖ#ÅVêeë•![¼_nÙ"\¦h&ò‚™joñÒ5E3Ñ#åðÉVWoôõà ×›2"Ò°™cû¾J\ÁIuPHC wÚÊu0œT‡ƒºJ«ã‰“ê0¢s‰khº)$Ó E/fÆu8©GjªRî­í£É_Ü Í6V©åù ^rÇR‘õHÙL¹ ¥Úä*¬FjÎXä å‚ÃFïo/RcåÙxá ã‚{O,Eš*ÈPáÂ1o¬M4+‘†æìS1#õ-AÔèlDj¦ôt)™tÁ~Á>¤F ®£Õ™º9n,Û†ʬ—5à'Í×µeH øÜÞL°›n4õ°á­BjÀ­ÁdiªaþQ#‹âû\@ûB3Õ&ûd²)þ ´i¡´•Ú‰Zƒ(ŽU;`¢– Å®Dñ\쥢BÔ ¤Ø•(ò}\òJD-@Š\‰šè-ÊC± FÔ ÂÏHõ²9R\Ÿkô¹X_o£|¬£FŠês=ŸƒÉQ}×1#Å:H<ç5Gh¨o:^¤˜F4P–uz^Z‡ ScEŠZ‰´™@ÕòÂZ…1R¤jw`Ý4x¼fâ5ž˜k^ÞãDŠHÔÄWe2Ö Ú°Mu}Ê(‘"G ±æ\)$¢Å‹OóÔ{RÂOY É)¤c&ÚÐíÁ@Ø3$«Q7RÈS­”[[,g½/ÁËæ½Fª1@ Z‘‚%¤Úþì@µ¼C h¤ãs»š˜ô†eTê`vº„tln·‹3U¯%[&¹÷pó2Žt\n·ó+a™ÊRw )h µgZý^ñ£°«ô¾'ä>Qd)h µ×Î}o [oÍ®!½ëä6¿9ºµl±3HaŸ¿tÞªsµÁPk³H±Ó,RÐé˜h?\ ¸ÖŽ!u»ÝŒúé‡ôúhºhá C&‘ÂÖ c:ûªA6·›œB Ûî}`=ù(lé%N¿Ý@ {š©a¾o‚O¹íÖÆ)¤°nW/5ìWp¿ÚòI×#ÞØC ü`S#5/„™d9µnéRà°]å ͼ‚+ÉC!§°ô!SH E“±Wª…Úí‘CH¡GK(mdrBHżB l, %bÌ@YfŠm…l#û‘B›K[ña…ÈÊÅZEJ”œA }é¡…<×)s*¹º‚<0³>=C \!Çüg;Ó°òA&‚‡ÚÖ,ÇdÒ$!ÇV¦® ?|7ãî6ÍUü»íŠr)|<|uÉæIdÁŸm皯¶)8ÑR‚C¸Ûä8dÙ¶0 *?„Ž×íš¡wž±œJ3S7bºÝì³1Þ¾ñv)ž‘f -W’Ò:›‘B{Žq8m{ÈÝxä‘rÊ~dU¨°Mý*B?Éž CT±î®ßȤÀ¾ÓHõîBU¯£Úë¸Xa/Ràx#6æk$Ý j‰´'6#=ò¤P‡¹oÑ͵fk‚)Ú4Ší9kçZsâ …Â?ªQÔé2ªéZªüÀ&ÒüÀ£†IgèuÍw̱œLç9¬ä7§.!ퟖfÑv˱´W7/…f?ÒüJ@ºÑÛiÏz[úP·òCˆH‹ã¶iïz[FÍz¤ÅujRåi­%¹&lGʶEHap&ª&ã‘òREš65»åð" ¨©_(<¤\á°Þ¿¹Y6l¿½¢ŸìÕû”à<_«Œ”Aa9Æ·%SamòžÐ²öyÚ—¯ÊåáÒ—ßÿpÛ°ýãoô3}ë”}uAš´TYŽ«ÙŒ_÷;{›oYhH+7§F¢ÉðòGÍŠ*yáu½>œÒÏ•°¬Ò¼ƒ@L,þSzhH+äŒ<[3‰ôœ9úL®.¦ään9'Ñìê⿯ÏÈÑ5¹='O¢ø×§ÕüäêùÕ~\ǻ̓O*M¤Mþˆ‘~™îW4ƒ8½Ç»e|ï“3o×Ó8ÿÅ–:æ== î8Ôüi'Rþ¨YQQ*Û×/¦Ÿ6äjwI‘^ï®w›íÓ—Ó¸–ý¸=¾ýb5ŸžNOc¤ÇâÍçÉg¶³ŠR¤©ã%dw¹{K3 é­h*Q‚ôÉìEÅHéqÇ ¨’™:‰4Z<\®â"½¢N5šmöñÑb÷ö–^û‘âxê×ëÐáAÓÕGŠ\#¥²)K¹¡-„5½¶xJ)túØp¿}r1‚Ö"Åk§°ÒiIª§G ¨$P°5}¨ h{"ÜØŠó¸“0 ÛÁCí~z¤RE µóYñ÷/©<UV°P)f×\¨ˆ5åM§ý’fбÔè‚Þ¦vÄ!<„±)îa𼀆Ú-%´M" $¸NÂn'&ŒpòH% ôc²Á¼o§kÃv¤ÜC$a‡ô µË™…Â/K‘â>¸» …2Ô§æ‘¶ªR !4²„Ÿ©D¡fë(Sí¼…prTªÎHA˜j爿=R‰º#…`ª‹$,ýa'Rä£{\2 _ÍÄñÆ©T½Ú®ý¥ê5[Ãò_©,ƒ^î³?Ó@ÇØÅ CìJ k`ÿ¨‘ögê=ŒaåOT¢žHÞô*?‡- ,EŠÜàíßn훀ò¬k•‹Û#•§ßÿV¤§ëVFZÙÊ#•§pwÙ+ 6•UÛDÎDÖºõHåéCtõIƒÍ"Ø2Ý:]푪¦ÒWÛ=‘P©¤mí‘ÊÓ‡iQ÷eÚŽTRØ…c'R°®ŒÆNZßɇÀz¤ÁõNõ«OÛJS÷Heìpì×îm^-?HT&È>ä>LZ¼UYŠ»?²Ã±Gçï2þÇf^,‹«Ë²)ö4¹ H{ôáço'Ó9ù=[ê‘vìûîi¥HéÇ<{Ÿ¸GÚIÀÏc;qŽt¿™?Þ-®Iô~Iæ'×üê²5“N¾€xRUÆÂz¤U!"M< O"‰bðH«ÂD Ì“*(¬GZRÚ?„ñ@ ÔêòH+ÂAšÝ‚§\žpÃ#­Š pÁsý ð^ŠQõH« asKýCfÊgà‘V‰T2†™ò׉G*Q“CÙ<3½†a%Rü‘ký‹½énÜõ Œn˜H[f-‚V# <ÒŠz!­s·¥ `Å?<òH% :ð(N*†&œeì‘JÔ©‚yr9€ŠŸÁ×#•¨RwËo®—ºZzÙ!#‡âL±<2¤úâÁûîIqx¤’ôuŠ¥Û³è3òT¦P9 å9V%Y€*äõH«RDªW}–\ì!—¨GZ• Ò^< ’çeÏ­DŠ<ê#l›ô¿/O*àsHÇÒ$?íCŠ>gH3Rž~îö•ô9x¤’ j‡˜ñ¤‚=‰,ö°{Ï—ªœB È“`ÍÚz¤ò $HayRÁžEÞwä‘Ê”Ãàyh3Í{íä ¤èò—¢ð$ØL‹ç¥6"E¾-Ms`¹ ñ$ÀfZ$6A™?$Rô7®H1y&ù¦U %Ó_Èb¤Ø< ÒøNñØ¢¿½”ÞPžèÙ Íä„ê¯lë +‘¦ö‰ÔL‹öQ¨ûD^KðHqë~Æ3ƒÝ°†=éÑLQâufŸ9RôÛ%„¤<Ò\…³Ê:Lû¿.¸M€fÊ!e“¿’‡_ÛÔ%x¤H¦#T>yMÞ Òà¡m—Ö d²i¹1˱=/œ™±Ùa:Y¨%HáJ‡i]Šz/eŸ‹‰ý/m»Œ)d3QÞØOŸe“‘# ìš)!% q ‘ÖcHC#HÁΦ‚´˜cH›hñVŠ~s •­HùÁ=Ôb}ÙCd#H¡Ì´:tM V¼[q¿É~9ƒ´Õ›ÏØ­ò¼•¡k91úVÅû|»‘!åGÝu‘Rç'÷¬ÇR0Ï›§”‘®„íÆ…T¡¥¿·¢å XäykžÜ½¿[ޞϣ“k²½;]ýÕÅ”ß@SãAª1IxÖƒÊLk^í.Wäf9Ž?g³71ÒÏ~M#åÇÜéHkxYéÖwÒÚSÚG¤ãIT‡”:Þ[2§o‚:'óé*óÄ#@ÊÏÒØKÓy–v:oU=¤B¨é»?–”a‚tE_î×¥ãAÊ¢TT·á¼f‘yÞ¤KêxW¼•ÚŒ´ÛpÞR«ÚR3-nL¤·RZ—ž ©žßí:õm¹ f;Ò“»å›eŠ”¶xWcBªa¤=¦2)Œç­AÊë[®Iº‚ ‘ò#›7ìu3Y¾p\Búõì‰$w=#mõQ½§—#Ý¿¹Y¦ ¢õúZÜåÅúgñòg»lÈöŠþXef_•þÏ[AZMu»~Íÿ98R¿ 0u|È}&bçýòûnÓÑl¶à÷ø}ÿiö|)Eúøý‘Ö\Ól©!¤ã^Úêwa^PƒôIò¢h!î±Ú“í±é‡ÓdƒÒRl¤i!?ª=–®[ öj‡ô /°ó>'dFŽ>Óö#Eúeº_‘£kru1}¼{¿$ûÅüä:^yF—$½©ëi îItFŽ>­æ'Wϯöº<éa­ö²B;×1|XôU:¤”;ojWÛ×/¦W»KŠtw¹{»}úrJ»KWÉëîæÇÈuüW¼„ö¦>™}Š‘~Üß¿~±šOO§§ûdyÒÃZíe…GŽi­ß…}õJ(|QH£ÅÃåUÒ<º%«/gÑb÷–ÞħHã۾Şýt½}·ßGúdöj¿‰«ÎÓ¤.-žÉ‘BT¦E鄘ÁPH«oBBx{Yõ>€ŠëjH[¼ëõg²½$ôOŠðÍ’u5D‹çŸ~Én×ÇûMlÚÑÙÑGéÊRÌ@8 ¤Œ(wÌHH~™èñ¼?~~¼þ×?ؼ[¯Žþuý?ÿ\þyÿùþst¹ÞÝÐñaïÿ·÷¿?gHÛÎuE^¼½YÒ ¾¯^.Þ“gÉ‚éÉÍ· Ò›Ù'ÿ‹‘ÒHù›%7¹HXŸ~“ ˪…ƒüù Š/ƒHׯ7ñGëéšþ÷¸þo›7ë·ëãõ‹õåŸÑ]ü]øH ûæõ››7jVûîÅmÿò#y\~L¤Hɼ9£HWä}Lú}¬·{{K¸ÉEdVj®MÔ)»êÄÐAפ%8Þ›÷Ñú’"½ùÇ»é­Ñ.Ög„=®7ÒxqQ¹JO;w2ÇKÿÑ€øû Ù~ÏÂ*S¤gdwI‘n­Wç1Òy)ÏÍD!AŠÿ8OT7SãHióèCj¥7ëØñÞ¥V­ÿŒÁým}{*±Ò§onŽšÒ/ib¥¯Èçãéœ"eÕꜷÒ$R¾©a#íš_ΔFiè&æÇ71´.¥Ž÷ÍÓõ—«é¿ÒeqÕù9¢u)‡ôèúýù¿½?^”ïj`Hi]úÓ|Iî–É‚hyD‘~ówÇñϸ.}×¥¯’º”FÊŸ5!5m¤9pO„$•ºh‹7F·x×Ó¿¥H“eôþf{µ?æ‘>¶µxSñHãïýÛÝ%ù†-¸¿;¥Hï/~£?…o)ïR1(Ö$ÒžªÏCÖ!ø•lCq¶¨*RÓ~·Çt—A‘€ò%5Òý¹lÑ#í‘³H?L¥[§ÿ$²iŠ0oëú¨*»‘¶é‘æ²iÞ(Jod½Ú©õ[â=’ùÉÕó«éÕÅ”p›ª Ññât6â£ÁÆ¥ƒ#¥o»ÎN¢Eô3y2ûM?ùôtz#ýüÚé¸Â{Þ,öP#e¸~ñž}¼¤Ñâá2™9Z’ùnOæ‹9¡ÿ‘ý*{±ýˆ¢tóÚHt@ MSH‘Îã:óá—Ÿc¤‹ýz}÷ð÷£éf„HQ¢Ts×§˜2è\ H'\ïQb¥tvf:7ó†Ì¢e4r¤à¹˜oµ”a çóÒ)7§«K— é“Ù«hùåkÖâýr#Ý®ïïž]2¤«1" ³Á iæEÚ^¶ðó/õlð±Îi~út% )|\ 7Ö¦5a„ðm€tR?×vÆ„>ü»/l†1EZ¤ah'Ò)? ®¹lQÍô{ªÇ|V(¼ŠDI#BJÀcÉùÄš"ÍbØýP†³/l)RèÊT‚Ø€k zÇá¥a^lDiòÓV¤ÀmÞ°öaÚDŠ~Š» ²)è­aÐðW.¼i"² QT·¯¶$Ü@„]éŸbúҢŜ X ©Ô=qñÇ¿þ% »¦Ü["³Çš]<Ãß´l§¬H–~iæ@e>²ºYuÕ RžŠ±fä)îD.ŠHšÜMêNBT–>/ÜÙ–”z—››ƒÒdP·kPMö"­-ò”haåGY­x ¤lS´ôw )ö$w…Ï”®Va“?GJÝ-Šßµ©X´^{Qý•g®fky”M6²Ô2¤Ù9Cº^¹4@ùoŸøµó"æ1_nDŠN”Ë­A}:ª´ù–u”âø]cHW³wÇÂZn…ö£¸~N¦„[›¨Œ”/Zt¢à[é&‘ÞÒ×eï.ïß>!ó]0'Ñâän9?¹&W„‹WÇ$þGïÑ5‰÷ tm¢ Ò¢ Šz÷ÂMé·.ì€Ã)Êäd‘¾x{³¤ÑS_½\¼'Ï’ ÃÝåüø9¹ù6Az3ûDâ1ÒíÓ—Ó›eŒ4^›¨‚´˜uï$2•]žHä‰$s©$jàØJ2×<ºYÜãøò#y\~L$Hch4>î?ÞœÑ?Wä}Lû}Œ4ZìÞÞ’t-U-RüŠ´‚´[˜e$ófì‘2À±•dÎJé?‰|¿!ÛïYøeøî%ý:#±µÆß›xaü/F:_¯/³’$ªH; éq2Y¶][5Rv‹Ú3ˆ´Ff‘&VúŠ<|:N‘ÎK†’U­sÞJÉ~Ñ‚´ï¹êâ.›tê¿N‰ÂûÎNÐ ³Hi]úÓ|Iî–É‚hy´¸eH¿ùÇ»cúçÍìU\—¾JêÒÓÙµ"5k¤yßl‡Dx¤ýâ˜eiÜâ½»»$ß°÷w§I‹7†vñ[ò'ßâýœØuÒ¾1{ª*šªô³k§O†4$¨Gn ©¨¯êö¡÷ª{ÙDŠsv¥R6T¥ÞýTŠÊßJ¤ }¼ûóºt‘šy'xšGޱcA†4«..ÆA~˜Öîuœþ“H†ÿ]©I&ôƒ¯>;!Íg¦-#¬‹Ñâ'1\.¸b6ÅEÚGÒ¬eä‘ÊoËñß%ÏbÌ+ÙöGŠå_,BÉüþ¤C©“íp) w£)UâxKwù(“ª{Ö¢_™z¤åu)g¬x}0y^5³VŒOÎ÷ªPÌKi߈ì¼èøÐì,¸Nì>Jïûä&\€qu/m«5nçÒ¢§¤ŸŠZ«j0Ì^ƒbÓäg¿Àí›ôýÕ¹}¤‚¿=l¤ÊJùbåš¶d ¦©Ö:u´Ÿ2fåÄJ1”Y¯N_¤ÅUR߬ÕFšÕCyŸ Z)Ì‘OJßbÉû &™‚^H…îÛ†´¯²ÂS+*Q®?}Õ¥ÑÚH3§d:Ò¬x낳†À¸!¾yÔt$ Õþ›»©l›âɃGZ¯Œi5‡tEölºŸã-ö­³QVÏ2T_žþû• ¤Y¼g1HÕ>¤aé»·Ò"˜T–dšd=¯¬<+ñý71‚Ú‚¢Å[wÌ 0TñçËÊ‘ iöÄÕ#唾«)OÒ¦*+ÏJ|ÿzAæŠH›zpYGŠô,þ8º&ÑûÿJæ‹“»³èäš\œsó#—‘¾Ë^¤`‡ž•FàÀ S‰ï¿™’gJH›CèY}ÍPí.~ZÐxãèçò¹~ØDÇ+ÍçGŽJÇš#Åëš¶ižbÅ\s 71•øþ«·ä§ jœšPlQÛ»ÓÅv=¥!ý…UmÒù⦨Fló‡gW4Þ˜NºúYìWtÊNŠ4Ÿ¹„4t)ܱ—\5H'µñý«ýjC§§&[Ô³Ù›Åܿ䬪¸»­“`¥„œÌ×ëËhAC“ßý˜#Ý”rwÐéß)•èy«éf–•5Jñý«¯vO7û$VxE-ê<ùù¹ågoo-3ài]WÏ4Þ8¶ÔŸŽã„T‘¢>ÄGŠåy둲õÕøþw_¾ÝЩÆ)¿Ø¢V$š­×wtÃA{ KŸ¡Úžÿû4Þ8¦x·$·÷)Ò]iy@–GZJ)äÿ(s¼åøþèÃ~Ck=Š4¶(j¥2‘fui½ø®ò¿îŽi¼qŒôBžú…ýrÍJHó›‘åwð‚™ª!åãû·¿Q¤ÏÒû«K_Åœ H•êuz¤uꀔ︊ðݳKŠ4¶(Ö⥣sV"R•È"-¤œÇr)Žçm(YGßÿ­ì-ví½GL]‘â?ˆ± )g¦zHeñý_Ïž4íÛì}µr^Ž ô1…™6‰©,¾»~ݸoãtŽÅóê!U¿oS¤\¼›ÍHËDð¼M–…´É½è å[Š® …÷¼fÅô´ªÒC*©àÖ|¸þçD)0X8{wâ´ykˆ´îÒÑaê‘¶¨ô8F&°hûÊydÒš)N¸³©xÄ€ž7MÊÄ\GuiÎÐ)Þ¡'y¤’¤Œ!••½–‘†âÏ)âx;3HÁ=oˆx•—T­N;©G*W:òËÒJék »Šò ’Ð Ì2)Kô±š/K¿­EZ9b`ϋھæXHÏH˱äiMÚf‘Šg£7ß\¹¯Û¤Àm^ÔgÈU —ÞDV©Š®pÌHìÞÔ1ÒÊã k‘V‹¶2MëSS²šè¼î‘?í0_à‘V“j‰>—Õ$Ô˜K¿úôÂ!¤°•©i¤üSì@#ç*RüÛj›‘Ò@Ò›MlWq. …}À'©’gú­s!…Õ¿lE*;mÈçàiZ&Þ“ªxN«s’‡©TAa3Ædvö»î!…ŒÌÓ7÷Œ­Ë³ëPò§G*Ož _K´Mi#»»ßu)œ—äš«NÓÞ ³(oj5RùÃço1MŸŒidWÞÔ#m0˲!¦ÚHåýÜn!…ó¼B«¨>ÙH=2P!Ó@ÓïV Á#m˜Rm³W5$^mKM¤Õ-D w¥âªc ‹4á Ž´¦OÔR¤uç f¦Õ/éfÀHóÐ!Iεè˜öH« U1ee‹4qª(d¶¢cÚ¤`'")0Y#Õ¥6Ã=Ò¦ $ I¦Ì€Gªègä7VN"…ò¼¡4!ÄàëRµ¨¹U¶iýñ‰iQ£†ü<Èû77Kúµ™sS&?%“[·dª„´®óÃ#mPÒ, 3 âc ^~ÿÃ-@(>†©íÎr)ç­Eš¬dï_Ïçn|’üo i}¥GÚ F¤$Ÿ’:'d¶»øH‘Ò7Ó™x×ÇûÍö­drë¦DÕ⎺œÝD t*-Hs¦ÉÔ£éŠôfö#›‰÷Ó~ó5©Nnݘ¦Ò¦8|‹‘6zE˜” TâbÉ|#]‘÷l&Þ_÷×+Rܺ1M¤Qic*ÍE"4bÇûîáïG³¤.³™xÉþæ©Î„ܤ@%Û¶lílÄr.Še›7¾Ž–Qf¥ÉL¼ÿ/vÃ’É­›ÔŽ´mð“GÚ˜ƒR2éMÌÓn£åóYR—¾b3ñ¾Úoîßžé MNªÑ [CÛ\E âyµÒ®†û»g¿§-^:/mñ’+H¤ /·ióáBœŒR˜-“ 뱩Œ8õH4ÒZ£Oì,RÏkiÈ}VWªEˆóƒB q6ãBª£è.R35”å'…§uj/Ò6d6"m*§9$ÜI¤§ciöVÉ©~6#0ÓÆY³s@ªëï‘6I)T´}1žµŒB M¼äR€óQC ¦ ÿ.ºÞøVk‘*<&Q¤yfåᥚG‘#Í^Ô…¢Aö¿FÍ" ŠB¾ºƒæ<Ò¦†B*ºîi¸Œ´7£H…iÙrE¹Œ´·™Eð¿BÙrE!†iuƒH¹V­€TÿlEªÞ3ƒHùû”€Wc‡ œFÚ×LÍ!îS¤©ßø`‘ví‡Á(’ÖÛ)Û¾i ÒXŠT÷X{†ÀIá>³¢"p›“ÚUÙŽ´cp‘(u°Crιýÿ»'ÒU™¸X4·‘v3SØ" U&¢jFºªl}ÀH;™)`‘°n …ùG.ÆíäîýÝòö|\“íÝé‚[U³·ÛH;™)P‘47pÊ’„2nW»Ë¹YΣãäÙìGÚÅLûIÈͪ­¾S’³°(EJï-™G‹hqNær¤BÛÊq¤véV$Ù骮¶´7©\ŒÛ»?–tþíéŠDR¤\ 0qi3Õ.’$‹LI Ò%u¼«f+Ç]¸Ž´K“Jg}+W@*‡Ê¸ÝrHëêÒ@ür©¶™ª#…ÂIU‹ôänùf™"­iñ1.ìËu¤ú'”öÄIT/¾jGî·Y'’¸*¿­BÚé6Sw'¤À<‰là„$‹¯gOØ)7sûr©®™¶"íÔž©pr5Ob¶ë×ìÇ¡#Õ~~Ó\$=›¶u™r‡©ù¼4?'Éé:LO3“¦í»Äc*Hð»éû¢‘V¦a9¤ºÁ E‚b¢„òäR/P…»Ò€TÏL›^~†c¢•!ˆ:ádaåçA ÕŒÿ­+$§KdHÕ ÏEªe¦µH±œ.)ùÝìE}j¡ÙÜARp¢º¡ch&JÊ—Q øØœJ8Ø4~é êìYƒ“h(©NfAõAª3ØXš &ÑR#»Ú‘Ô´'¯ÃBª¾«)*Q1Ë ©Æd,’\p‰ŠH5︪ Rõ——U7D&Jš­ª{ bÉ`¦txEŠe%AŠLÌH³€•ƒAª¸s)6Q0#=<¤j¥UAŠMT|3—ÖC'*4gú Š><¤JçZBŠOÎï R¥oK‘'ÌI²èêw«è©Êþâm?béÈ2ì;eL²è°*œ­Pˆ ~W+‚X²ì‘*˜×X12×rW#•nk!ÒþU[ëérHMíÚ8’s;H¤­ç[ 5Ð4êÜsTs‰´5‰©#-¿£Km·š--D QÌ-wšùjóFªœc-´EÚœ7­-@Vm{U‘Ö3;T¤§œ#5o¤ª'×pü6")è¦Dòò0b¤bé+>*jØì`‘6•]VFŒ´¨ÔÝ>·äA"m8éÒðÛEk5mjS(ÑQ8·¶hP‘ùÃúÒ Û6È)æU‹´Œ§5ÏöðÞFZ'#ÎdѤžH«|ZòT‰×>d¤µé0Ö*þ½Ò°[ÚØW›±ÅJ¤PÍ–ºó6ƒ4¶¸Ê4TÊ3ð4ÒºgHU ¥;RêBëž_K6Ö^•¤aR¸ûEé™§= ¨HiÆ ¯F–iÎuàHåeÖ­©ˆ!½!ä‹Äµî‹e¥µ $Y©Wu˜ñìБʚ½¬Ñ¢”Cº^¹:Òt2)*aYØm;‘BvëTK-Aª–Ej¥SòLiîEå°r=&$ôH«…›<-ÕAzõ–ü´Ù]|$WÇÑÉgBŽ®Éí9Ù_]LÓíR¤9¦ºé’N£~øy¤¦ìa—Z‘0¤«Õ~µ‰¦ÈÍìSôúåtûôåôfIöŸ2ë¤ß(™æó¾v81¡äÃ6¤ÀHÊݬÂEè¤H¿Ú=ÝìÉ|±"ï£ÅÃe´Ø½½ï*Ÿ‘^@ÅS›äRw -òHIùüÕÞË ¤Hß}ùvóð÷£Å†Ì£¸ ¯×—«¤.å‘JU:³©ž¬l@*€2ÒjŠ4ú°ßDË(·R²_ˆHóº´Ù­2Rè'™\ „åéjäâ­lµý"}¾¸™½Š^¿ˆëÒÓÙ•*Ì$ ÂÁ#-'(!M‰¦VúpµßÜß=»Ì[¼Ÿc˜ÑLt¼ … ˆ"¥Y‚4oöÒ”›¦›cOÒ[ ±CވΥ;Ô?çôl.)¹p"D¥L¤M’º[¾y”É#í#„ª¢xþÒ0I^²¥nûcB¶ÒÝÔFkXˆã'YºuHùûÕ;PE Rö¼$)¹¢ÄcNÒ¢·LeA") Pé–¬ô!ª´Å ŠƒµHqŽ9±OÙ£éš[R(fšÐ¬4xëãò@‘Q’ æŒ!hHQ®CàU™@°¡“ h6Ÿy¯C“ñH‹4àÔw„7óy5s¸d¬DŠáy“\"RÄ™ÏKòH1̔դ|]jÊD Ø%j3Rx3McŽÂr‡‚y¤H³•ü.Æ$Q°!ɧ¥HÁ=oP*“DÁ.P«‘‚Ç6äI,Ò6ùöÌAÔS #L¤Àfä%ÐF‰B#Ål§ÛƒtR$H_‹*0v#=ðÂí&¿ #…»:Y¯µHÍ4 8Ww¼p,G ;*±¸@BÓÍ#ÀkÓ#e Å1i ›c ‡”¥d1R¨~ÑdxQñg`“|»àX(òU$Ê=05IJMÀ>-F Qe¢~œ'@úíNJpØH'U¢\›` yÞ–ZŒ´÷^iÜNJ©xI dù;€´çžgX&*\(èL¡;Lò1c#íW áY†Q”—a ´[3m¡ÎQ:f¤a%Æ“ìT]Š"ØÆ)KÌr¤açë<,w´pX,gL¦°µžHé“0z"ªñ—¹þù×ì“…d ѺA9’´sK$9zØÂÏæ(µiÈžš¨FIK” CKeÂMúÆÖtÊM²S«Û}øµFÒ­A*ê©¥MõYZµLòÙÑe£ÕTÝ©½"}ÐZž&‡zc)›˜­Òjøµä2O7št÷ •šF]ÊÞN(3V›i¤²ðkY¡$4{ø„òN*aßZHÃìˤåi´$±RS(Ù´SHÕFf$ÒŸ‚¨“dHk=rvR¼ÕBšU¥n M竉ï¦ÂÚý››euJ q¢ ¤inMsû¼Èפé]“ljœh‘ç•.àÒQksHÓbf…¼šÍø5¿“—ßÿpÛi]©d³7¦¹½;Î×ÜÓÇÅz¡€T%Xm¢ƒ4pD½‡1‚”*+dq銑›åÕîrNâh±:‰={õlöfAƒ›–7"* fbþÝ#›GËÕ—3:#n´ So&Hã_lºÜ]¯|½aKÙ®µS«6(Íí&Nô;rK®¨#¿¢Îvõ8¥óð¾?O2ؽå¦å ³[ %±ºùÉÕó«Ø œ%SRI†ù7jëh+%_ÍÉ|½¾dHcÇûn—4.7E¯ü=©K3¤R+­)—’•’ýz}¿û#v¼ñGœåÃjûõùŠ$9]rs¸FB:×Î|z:=%×±—yÛ=Õa!ýî_—!›G_Sxlº\f¥d?뇔ÏmCfñ÷’:ÞeâxÉ“ÂJãè"U”`¥É‹ýŠN÷›,‘ òo·Îf‹èœÐqÒ—OéM EúÿôK}‹7?Z•iÜ{ɤ›šåÌ´Snº/Ä£*¡›×,çÖ#%ÔñÊ˺¡hºZi˜ß—(J)?9¿G[i /çz›êåxu –Ðmk–‡âŽê'– Gú@ iéíNRì ù_iúF4IAÔ{0€æ‘TE¤\0²GJ² O-3…‰=R€ª†4~:ƒ´S°t¢,4»šh­™…f·;`5¤BP9rëÈÒþ’E¿"_ðTÍP•ò=RN²‘$ØÅ“¨ ªR´½èw=ÒB™)é=qw© Pöî Cy÷*ú]”—¬\͘)é3åz þÆ>b«’b5e¦ªá÷’ýJ¿=RN¡¤…diWCåwòHË $-$cž—t3Táš ˆG*jh3íb¨Aéôãµ éàfª?GXþÃ#5ä}L–žó-©GZR(›=ÅðœèZÎWè‘J$»1ÎTÝùŠ[&4Ñë ÛÊH¦«S çTÿòHË’5pç·•Ji(ùË#-KÖ@+ÓPb¤iUiûÂp³—(1é…Ü'¦ìC*õ¼æ›H 9–è²…²iX3·×蘆2#õHe’{^óÍÞ¶Ô@ú§G*QÝ„ù&RãÍLͬ‡øi#ÒºY`Zo¨eØAéO"­/Æ!˜Ê µ²”¸†-+‘ÖÖGC0•]a•ã(x¤25Ì#Þ5˜¤—*c%«W?Ê [V"mš¢x¦"TÉhØPò MÎ!íÉ×GéDwòaÇü+ðÅF¤ •)Õ *UÝ`C•HÛ]ë0¤ªÊÇá‘ÊU3iޏÍ(˜Öv"!ÊJ¤J6¨ÂYJï·—¥H•Šfh¨Å[ŠT±ù3(T½9`àä6Ò!¡jN¾'בU~„iÚoL…­ÍC­ëìðH뤇Ô<ÔÚ;(´N¡Z“WØÃÔú¼ŒD[Š´ÃÛ´»Ì¶ÛEMÙx¤µê‚”5ñÔòê ´Va÷w­¨¿ÛG_­ÞÝ#­×¤OC#ÄÁª¨ÏˆH© }°ÚËÚ<ÒzM |˜î<öuR·z´^Ô;@'½¸†:ïÝ35bòБ&ÒâÂí£»“GÚ X¤T¡""áÍÔºytÙI[Ö"E©—ø÷\֬铭™,´NâkJAróHàO/CG쑚“GÚ$úôjðh1]y¤M MÌ‚ -C× GjNi“’@Û<¯GÚ$‘šò*6#µÌóz¤bxv™©©£õHÉ#mCj—çõH•†>Ûd¦Æ®?»‘Úd¦i³<ÒzÙÔ&Ï•FÓIDATkìP-Gj‘™z¤ÍÊG†gê”™»ølGjëõH[T µÅõz¤-â†äZâzÍyû‘Zâz=ÒµLžùðk7-ñ-åŠ@*q½“õH‡“8B%Êv|H ÖN ­Lwá‘Ú§2ÃÒ¤4£CjòVˤy…ÊÊÎ#µO’‰…X…ÊÌutHMÞh¹ƒ4 1K†œU‘ÎÉz½žVwš²ßäy¤ÃI>ý×$›Ý¨Šôž¬f3~Áã"ù2ƒÔh¯¥­HåÝ€ÙÀA™ã]‰Fé¸TûŽ Æ”!Ý®ç'WϯÈÕÅtž }Eæ‹íz\“‹óÝÅyŒôäz¯N÷ÆBj´ÏÒI¤“¿$¿¿ž½šOO§§äóÆ!=!ß‘'³OÑñ‡ØJ£³“éñ‡}¼:ÝÛ#N-HÙÚy?'ô¿Y%Í£e´ø)þã»'ýï,Þf¾ˆf«Ü)#!5ûÐA¤Yó(®#çRŠmûýf¿^ß1¤¿üLëÒh¶ñHG –9Y]*Z)Ŷûé˜lÈ,EJN !5ûøÏe¤´.åÎf r·ŒëÒW©ã]žì<ÒѨeÁ¢Å+Ô¥Çä›d)úå6nñF H ÇÒX‹´±œÆÕ!葪È*¤†#iÂÃN¤m““)4Û#URÔ`ÇÀ ó‡é‘"ËüÈ:‹‘Ú1 Ñ#U+'+ÌÔüAz¤ÈòHÕrŸãÖÇè‘âjOb3R<¯Gª¨Pø±†8BUCø;‘f!Ÿ£÷¼©ª2¤c7ÓAŽÏN¤AvõÜL9<Ë‘ŽÜL=ReåHÇm¦Ã\p¶#µ™z¤ê*ŽÚL‡96+‘ò#bFŒt b=Ò{^T]¸µñšé@Gf?ÒÑšéPf?ÒÑšéPÇåÒkX+jSŸDwy¤ EŒõS¡«¢Â@:X…`%Ò T^µö0$ÒÁê'ÖÄ€H‡kµ9´Öõˆt¸F›Hë Ð#µEU¤ò™?D:àݲ¥H+F gš¡J&ÁyžK›§ßÅŸðH¼Yv©| :i>{ëœüž|#"²KˤÒ6RRöé=Z!å_“úa†êèÓŠ]?Þ-OîÎæ$ZÌ“ŸKRLÄë‘­º™ÂI:Èð&¨î_¿XmŸ¾œ®È5——N2·"W»KRLÄ tÐG N!%tòÖä‹MqÏP=.÷«h±{»"‹ý*G¯ØçñB#ôI‚­Hëí`’¾ˆ‚2MPE ²š¯×—+òîÇé»?–´.ÅA:ìó>÷æ3gÇL +%ûÅŠÜÒ?ç Ò%u¼XH‡}Üç"R¬4fÊÕ¥/âºôö~-¤·»Ë3t4 ‰"Ò´ |ô1nñ~Žñ=ÿôËýÝiŒô mñ®°ga+ÒK9Ç« X¤‡Y8‹´¸‰Q(Ò¡ƒ¡¬EªTpƒ :Ê#ÕÙNEC©½H•Œa¤5ù Ê#ÕÙNAƒµ©Šƒ3tp·ë‘êm×®áÔb¤*¥g<4{Fê8RãÃ1YŒt QÒ(É#…ÔŒÔJ¤YÉ¢yã"óHá4|/C"›‘ŽÃ( ƒ¨G §±ŽÍHÇb©Ær4V" KߣÐhÆj¤£1 ªÑ‹ÝHGcM³ ˜–G £ñ‰åHÇãíFs –"- p,Æ1·k=Ò‘XÇX®¬D¶#GaŽãÂJe;ÒQ”æ˜Ü®HG`¦#8^v"å qx3þy¤½5.·ëÒ¡ÝÞÐùWd?Ò¡Ítp/Q–HUçã%äá×võ:’±¹]'6ÚÉC{Z ›Ôktn×Z¤aí%a#ÛuiS¹"#ŸÛµ©H±!4éÝ®#H˜¢"I”gI¶"-ÙGmáb"'QWÖo=¯yû&-‡0N¢Ö"­Î±,ßLÎëq€t¤DÝAZÓø”󊎱±›ÈZ¤U«œˆ…Ìþb¼vÉÉÝrwqNŽ®Iôþ?ŸÇHO® ·‰®FKÔ%¤%¨ìÆ+š~ 3ðFg'tbÞèçÄJ?° ;!/Q{‘Ê«2®¤' SÆkOæ‹«˜ì¡óFËé‚~’nHGyCšÊ1¤Üdè“„)ãõð÷£Å»?–¿üL'æ¬.íŽt¬ÝDö"­1”|2ôdªÏÌñÆv¹Ü]>:1oo¤£&êR’ÁdÓ·fHŸ/nãºtyB'æ¥Hw=Ž›¨ÅH[î ³©³“?îïž]f-ÞÏ1Ê/·t:ô®HÇMÔ]¤‚•6J鈻‰,FÚÒêd“,Ã#;Q›‘¶z^ºéè‰Z´ÙLùÞ£Fi!?Q«‘ª´S€‘Z@Ô#ÕBjQ»‘*tË"µ‚¨ÝHÌ©D-GÚn¦€¡Ù–µ©ÉŽ[ˆÚŽÔÜC.kˆÚŽÔ˜™ÚCÔz¤†ÌÔ"¢Ö#5c¦6µ© 3µŠ¨Gª »ˆÚßóZFÔ¤ØfjQ"›©uD]@Šj¦öu)f±[HÔ ¤x®×F¢n E ¬ ­$êRœêtäصr)†‡´•¨+Há«Ó‰­DA ízí¬F¹‚˜ÅDÝA éz-mê¦r)\sÆÚ†“;HÁªSˉº„¨´¨SHAªS{o^29…ÀÀ¬n19…´?Sˆ:†´/Sˆº†´S'ˆ:‡´S»; 9‡´3Sû›º©ÜCÚ©+&JœDÚ…©3&JÜDªorî˜(q©&#‡œ.•£Hu<©KN—ÊU¤ÊêÄ-%#Us§îui»G ]ê6ÒfçºV‡fri¶‰«@]Gš8×*»‰›7•ëHI…ªÛ<ÉA % Õ‰0Ù½Ë: ¤%Ô9y¤ÎÉ#uN©sòH“Gêœ OmniEvents: ConsumerAdmin.h File Reference

ConsumerAdmin.h File Reference

#include <list>
#include <iostream.h>
#include "Servant.h"
#include "EventQueue.h"
#include "CosEventChannelAdmin.hh"

Include dependency graph for ConsumerAdmin.h:

This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Namespaces

namespace  OmniEvents

Classes

class  OmniEvents::ConsumerAdmin_i


Generated on Fri Aug 26 20:56:14 2005 for OmniEvents by  doxygen 1.4.3-20050530
omniEvents-2_6_2/doc/doxygen/a00203.png0000644000076400001440000001015410227236242017664 0ustar alexusers00000000000000‰PNG  IHDRÔï !^„'PLTEþÿÿGGG///o___ŸŸŸßßß???¿¿¿ÿÿÿkéYtRNS@æØfóIDATxœíMwÛ6†û#æŸx9^úÄJËé4ciŸÎ±–™Ð'ä2'žTYδ›«9SÛÚÕ2-‘;If,âG .¿©K2ÅëÖ‘)„^]‚$ðò¢…¤ošnÀG5š4j4iÔhҨѤQ£I£F“F&M5š4j4iÔhҨѤQ£I£F“F&M5š4j4iÔhҨѤQ£I£F“F&M5š4j4iÔhҨѤQ£I£F“F&M5š4j4iÔhҨѤQ£I£F“F&M5š4jN¤:¬A£.Q8[²„­Q3TDœI vP/x%y›¬·«WÙfÔ bþ’Â~ÁµÍêu·u­ãÏf=¥ð‹_ÞÍVm_ Q/¤f‚MíÊ;‚ûtQ­\ÛPË f$UËØ­B­4œ•¨J{[ƒZmÚP¦ mnêE—ÒFQüínês&UŽ£î4gЂwÅfQw3?oˆ7TD½ø8þÒêÎ'ŽLœ)¤Ô_EâÈÄ4M n3ççÿò+-Ä—BðQ·4E-´*W ÁF-r¡Sb¨¹R.jÑ{ExDÍÖ¨¨[Z5OX#¢nw’Ž%Šš#¬ÑP·=IÇ×èDQs„5êö'éøKñ3÷¯æ{É«"êò°ÆAÝ~ÐÉiUÄï)^¶¶¶VÛ‡º<¬1Pw"Iǃ>Šü‚ ¨KÃZ=êÖ'éXÑýô$ôîÉêîæî&¸´—îhu÷‰˜'ÓÓ)E=½E6ÓzYX«FÝ$+ºy£^žŸ‚áI`È‘qŒ®ˆ9Œõýs×›¨ËÂZ1ê–‚fŒ— ß7ëy i lâ—>1-“Àñº ÔVg¥äë«u{’ôÛ]Pˆj“æäçŸ>PÔ–ïºóçõRÔÞ^ÔB¡¥uÓIzQÂvCÑj1jˆêg Ä"1;àA½`~fu¨+Žý‘'Á1KQ|®¶#ÔGÆûÀ>QY¨Éa#¨ÑI3Gåñ”{ _fõÒí?ÍœD¨6jÖV…t]Â>1Å7¤ µjÒ’ §êjîÁ¥Špªz¨™‡5¨¥§Õ„SÕG½·jPK$„8Q-Ô |ÔrÈ CŽT?WïÍ *P×ÆÃŽ¥ª‡zÿ¤0¢u­C"ßœuª‹`ï3"µø!±aÊQD†Üµ ìù¨…`5—1-„ÎæwÊÞ^¤uõôÑ8åHòŽÂH¨+¦–`I j,ÔÚÚ"Ì ’©Î„ƒš7}´p>—¼&¡ æJ‹¦;;µ`^­¤µYK"5éVbÊ»=¡Ç’$Id£.#ݬ‘ê@â5²uø2PƒšÙÔvfT "ñÂo’@NæöÝM´H.jÉvc&²/ú&¨§«‰’¨Þ—Úœ5I¾¼ž¢V“@vãl}8‡’}##A}ñ›­õ.Ò™*;Ô¶Š²ƒi'â9”ô€HPÏ Þ>vw% ‰ÒùÈ—Y´Hêí\×Ð*F»©;1ßÊMÖ« %#ƒ”¡ÞäÚÕDÑÈ E¨7#¸S %:5¨7Àv ´ªCŠ Ô!Ý1ÐÊÞ PoSP-&uoù¨‹1ÜS–HêCþà„BP„ˆË)¯¼ªm%•²çC•û¯0 /˜Cnx?µT¼EÄP³ß.‰ŒÒ!NŒö_ùùc¢.y»j†?£F½Câ¨Y7›4êFÍK¢Qï(jŽ¡ìuQÂQ]>&ÂuC.X4‡=@z¾žD‹æiŸª ¸ßy}w½s¥lÀJ Ô´a¿x¹¡/fñí½M+ÌÊïõ§ÈÊó¡ž¿¹¨A†ú¡ê¨5Q‘wÆEkÏ’P;†AF&T©uÞê&jHjÚi‹™¡ž࿽z\j·ê°=Qø“­5Y¨á—™ÌžåCYÝ$¤’†Ú»ó»)xÇOî½uF1®'ÇËÑÒ’Sï|<ÐWþèvi½ ½‰»´N)êð·jØQ‘)ýéŽÈì#߇“éÝh=·‰yò¯^µï™´ºÞ .s•²P§súOæ—s{vc´Ôr>°®+iyÖ· µ¿þ~û³7øèz½ãõiÿ´ï~ûÆ»pÞ÷î?níÛ§û§û`â®iDÏÃßB¨£"'?€· yüÏdõNÀÙ¢º¯^5q–ÇoGÁ‡\¥LÔ‰SÅt5qÈ£m´ÔÆØb¸®¤åY'ü¨×î¹wGznˆÚ…Ÿµûoì~tûî™;¹ æô®)êð7è÷ƒÊŠÛôóxè—dFœ/Cp8g@m%7›kïCÔEw£«´ìQUjØW30¬¬Z–åºë5­@/w¨¹HQÏ!4îÜ!!½µëQ jᨒÕgZý /L' j"uÕ&í3Aui¥\Q}ñ› M Q;P’išg¶©xX¼Š£úÑ¥ dGuàÞRÔ¯ÝÙ`+ªÅQ'ú1ß¡m’?­ù[â2Ó¨‹Ú&ù­qÄ^pZjÔEm“\ºçìx:5ꢄ®ìiÔ"o ¡.½¯QïjNÿjº(ÔåÃJ¾FÔå“Å NàD]_sþÔìÅøzÑŸK*e/rƒøX‡¶Œ^_ä.ͱW”;Œ£6Y¨Û2S€ßaK*kÔGð´ex$ó¦uA2£÷iG‡íôËÔáºÒ¶ÊóÑå¡^´b€u5ÛY¬±ŸLwØÖ‹Ãjs€%±æúÜ2M*šŸ8Û¯FO k¾®®Lë•CufÊ| ÷tŽ-#8øêêrCší_ }§$|›x 1´º9Ö‚Ðê³æ¬@®MV… K—0²Ú¬›@n´¡CcÍÖl1ïñI²Ï^•MËU\õXóV€º‘t]o›uXsoY²Qçaµ­KSÝ-гæÿ«ñDÅf]{¬ùË)²ŸÅ½Ì'cÏ ²®°iU¦Ê˜ý9ß!¡WÙ´2ÿj´{Ò6$ÀºRgKº+{ö‡µÄT±®P_µ£5J–º?CtZ]íóI¬C~óÊ“ˆl;?Úà ×»+n\)êÝ­)óêØ£íŠöB)\°×Ñ#¹ Ì1\¢ênVý°’wúJ†íÑV)Fôq<²ˆ5óRkôIô^å/Âsa6Û$5ók^u:«r·Â÷ª§.ŒGð$šø€-uI>­ú µÀ55”KŇšøŸÚ¨K¶5P'3KP‹t®°žám‹gp×DÍáæ'5kžXíqiô3Ä3¸k æåQ'ÄbEõïb]LÌ'ÓÅ“zuŒ ïúãGk«HfVð`Þåç±[|¨ã6™Å¦ž™)xÞâþwò3¸Á«#§ÏäíñëÏ[E²ÏÇû %øGê¸M¨…×7ú0çÕ‘É!G„mÉE5×¶Š~ûŇ:nS7Q“ÜLÙ/#ß!`Õqò°žÛ7„\†ó]—î¦Í‚KH΂ƒuâçA‹þÍÒú“÷$¸üÌñ¡†6‘ÙyrŸoJkPïOeq'-E½š¬>†Vý+ú'ýAˆúȸÔà’³ààG;ø«‡•Gë½8?.ÉÑš|¨¡M` r~ÖÏ5¥¨c¥‡EÛù2 ­:BˆµC^jp ÉYp”YxlùyøüÐúÏãÏ“À^ÛŸ¢ê* žÑoÂó$×”®¡†f¿0‰ZuØ$ø®;§¨ p ÉùBTê0­ÿsô‚î嫘S…â(›kJ{P—³f¨Á$´êÔGäßG” „·Aw.!B¨cŽqTßÈ¢Úz¾îGkV8,:qTwµaXÁ ‰¬:õÛã·™-!W¿ìž.!Ãê¨á;•CMë½€\m‘¹­Y¡³GQÓ²Ã¹º¿œ[uŒmzºð-9ý=þÓ|`….!UQçNa"Ô´þô¸|¯Yᆢ¦=§¨Ë’õ~h¬Ï_åtžQÏ ŽMʯWWV«PË*µŸ£SºJ¤Ž .É M¢¾•®錺Ê@åQ…¤uIŒê ÓäÔßQwPÃ/·ü ÜðP·PsÞÀ¸[]JP³“µ„{‹ênã&‰ú+A-cÈ {p‚蛃ƒd?r ¹©ªPK’üg†yÕ=W9s?§ñÈr /œäÏäŸÌÁ@£Î+¢ñöÕ›Y¼ 0Œ‚ÁÊgÿÚ8µw¢^ÿ /⹂£d©F½GœÕG`Wp–}²ìïD}5WØXªQïQDã†fÞÌm@ø€LïFëù¥M|Ë `°á„/Ìþy Ñ%`rd\SÔŸ–ý§ó3Ç F?\zrd¾u^jp.˜†‡Å‰}@À`#Fm–åG‡sû_úÞ³·òÖ¶ï˜ô i‚óÝK°JæË¡Qç•& ðÔ¸ø-L ‰Hˆvm“ç`µrñ.A V ¾·tÝ)]»ˆÚËO«×¨óJ‹ßBTÛQI|@B´pX QÏHÕ1|o=$ï¶¢Z£Þ«¸³wüf¹zFQ†Ab­ÿkØÙ£¨ŸRÔGÆ{ߣ©yæê õP£Þ¯Ü)LÜqÝ{û€Ú±ÂÖéõO ê¥Û÷=úU†½OyÔŽF½_úÄ<“F&M5š4j4iÔhҨѤQ£I5j=ä&•bÔZ™4j4iÔhҨѤQ£I£F“F&MÿW÷%1ñ‚IEND®B`‚omniEvents-2_6_2/doc/doxygen/a00204.png0000644000076400001440000000572010240451400017656 0ustar alexusers00000000000000‰PNG  IHDR ×$3!PLTEþÿÿo___ŸŸŸßßß???¿¿¿ÿÿÿ¤ÌatRNS@æØf ]IDATxœíMwâÆ†óXæ.}âœí½¹–9OÌrÎÀE,3¾öÖ3Ž­å6» vd¤ú•©êBÂÈ ô-÷;€±ZÈè™VõGU©!€Òþ™ @H‚IP $A”O j$Z/Ÿ´(b­Þ $A$(’ @Ê3ã|$¿²“>¤W…ïº[A(´ß¿²“ù^9h¼,/…öðÕM^ßò‚Pè4¡üÇT'²Vsøðµå'÷áÀÂw=Eª‡†fUŸð#ºZÁ?HA(ЫÞm5 g¢ð4{šiúa»ãV¯Ì»-EjÔ5¤P¹ÁÝš=|ðƒˆ‚ÕY ¬öh ‰‚fà?«3»ÃB›i¦l(H´ÑêPõù ü ¡€WÄ•„æŸ(\}— ’ª"]U‡xâ^ ŠËP„šÆŸ—uA¦+B²ëÌ:œl¨ —øà)…öá§1Ù¢0ž ,¹Ì)致 Í@Ù……Ú…S|ðƒ„ë5aA°˜Ojœ߆5Ū—oݬNÛˆH‚IP ¤ÜSøWÉ7…R©ôÖë"€·~ELKüç[öÊ”J‘؃ Ê…R)¾cç…Bœ òB!^Y¦°²Ó˜d˜‚c §±ÙÄ•²J¡d_I0È,…Q˜–âk½Ê&:ÿ¤2ICHðFHÁЦ_«ª—® ‘Rˆê@%A؈19ÃÈ”Q KP $A9U}ìx¶ªê¡ý–}|蹋%'âHr¶€‚Ò¼ªx¶6ÿwb¿e'|â-—œˆ£bQX‹'³:Îù± Œ«XÚð® Æ}(?Î󋤫õäUþJH~'!›áCðIe< IbG¤BPh]Œd +ø©Ý¹†#«c|f†³; @ªŽ~aFÍàS2–aH <"€‚ªŽ:cnÔ¾S¾EëØåÀ @ør^' \ão×Ò2 $lBÚB!ªá I‹‰‚žn4×@¯Ñ©1 Wß¿Ò:°h´Ž†ûàSZ†!± â¦àÛƒŽ²ªÄKÕ…SXô*œ‚A‘Gw ;ÁóÆÿxW]`aH^ ¯#òC쟒 ™ÚX§È#FáÝ׫Š%—Ñ.œ¢]8•–aHu…×'YòCÛˆùÅlïø©ß²6‚(̾Á|Ró´,4iEaËÈ:¼úÉogê;l T'i¥uy‹Ã|Éõ?ÅÄKÁèûíü*>åæª ¹£pÓðÝ»b?7È×:rì›»†'\®ñ õBw÷ß&‹ìó§H™SúÚ¾Ý5<ár_脟=åØnûÿ© S€é«ÖÑ5<ár_$þeÚ®Rÿ‹)B Ó¨´åÂw(Xײ®Vªp¤W …÷C°úЧ‰Uç5«úø¤2]mà'¨ErÂ_£§Pú1ª#íFÁølÁÏÍSýýÝn4~! V½J#’ÙßF¡Ûnàó=R8höðsÜà¤HDM­VRsMKëØµdê}÷uè›u¿p |D²82 ؉ÅçRPà¿ø S^ÈNŠDÄJ¡WfÇ+‚êFޱ["±ÞQXüÿŒ]UFX]Ñ$CU'ø);K" IzÓÜX]øÞ€ëßl RgUV%Ø´†á® 4q+Ö…º“"%…ø£,¹]8Å:2Ç NŠD„|›´˜ä¦€Öþª ŸPA%L*4|ñ´ª#ñ´ICØd<õ†ßÎlî6ºšBâ6QhË~;'C!y(,ž6ìÆ¥ÛÏ×’B ²7¦LBæ(¤!kÒ1 )AÈ…´ dÆ+C矄8´6n(„½(Ðdp²¨¸µ…i© h Ɇ"&¢à’ŽQNB)$©„SH¢ £—î‘ìQ¸û£÷¼ …in?ÍöáÇ;È…³ÇV Á’üøiÚwhÍ…–ªÞ?v>½SSòjkx£âïÇK 롈[ÄO³p ã¾T} ‹¥‡»8u¹(иv|A÷—ê|d}¸ÿ4±~ź0ÙµaKˆòKiËW F²ÔmU(°è÷n»á.N]k&êà)˜jW}˜˜-õódnâVS59…¿_çnçÅ(Œ)Òd@Á$×òÂv2g^g£¿ê÷Ì. Ô³K“,¾0»`†ª ìŠàY`ǹ‹S—×:þªk˺ð¬b]8ÁëãÁM­÷²ŽŠSªò¢î.N]î–²Ú{ÖÎ÷Ì.|QŸŸÌ÷_&ÖÓMÙC!ØÝ£\-%Rè¶õy·õ;þt§®µ^Ó“ñ¡m·O_Y¡~4×(ï;²^R¨R&D¶Ûˆ]$Æ‚‚  ( ‚‚ i ;Ó@§Ø+Ð3•0Õ=´…î(åU6(¤í­Í…´ã2B!åX–¬PHøkkÊ H¿.lK²†–zèˆûEú¥îÈ)lI²6zÍc9È÷}M §°%ÉZ¯Ð#À÷ŽƒN3 ~[’µ)ƒAË Ñ u¸‰²KÙjt”jM·†¢"Ït×Þ1ñi&GlK²f¹ÎX 71 ´¥ZÃH¦Õèæ—HˆÌ€Ðg´–ÖñÕ$kFßHÁMŒ%ÞRª5ŒÙjt¦Ç%"K$Ó°¼"^M²Æ+bÑÕØY+¸É¡@©ÖöRt^—H˜Œ¡40¸(ø'Y“u¼°ë‚²ÎíÕè(ÕšöíÃ¥éq‰„ÊK¡÷ä¦à›dm|Ö’ì]r•ò­9…ÚÆV£›{\"yË$tSðO²¦^5H7Q¾5§À¶±Õè"j#¸7‘zÐþIÖ;1l†qÒ¶aÿ$ë:Û×!×ið~ߨ(DãX à…‡î%§ЇB,òzk½†âíPØ ç&ošÙLAÂG ƒ‚¸"˜8…õåæ”åÙé´Jðr1¡ ËhŠÂ‹åæö;ó½Ú6¬AW( ¾ËÍÝÔèU?‹BÏVÒRBÇ ]å'°®å,)÷lw‡D -gu¡BQ åæ…n»1jö­ŽmÁ­^™w[¶»C"PZ„³]¡(Ðrs|©±Å€¦¾¶:¶%/´™fÊË)n6õÏÒ"œè E–›cÐ$h Ñzsª: xouH>Åe( E<£ói9u üͬÃɆºpé¬@W( ´Üsxt[hN™]h5¬Î @Ù…–á¬@W( ´Ü9<ÜmÄ#Öj>Ê·n ,-¢˜mÄR’ÿÒ´›%( I–š«ùx!)– @H‚IP …B8GA(D*A$(’ @úÀÈ£a"½ýÀIEND®B`‚omniEvents-2_6_2/doc/doxygen/a00086.html0000644000076400001440000000472110303671737020067 0ustar alexusers00000000000000 OmniEvents: daemon.h File Reference

daemon.h File Reference

This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Namespaces

namespace  OmniEvents

Classes

class  OmniEvents::Daemon
 Interface class that contains various methods for running omniEvents as a background task. More...


Generated on Fri Aug 26 20:56:14 2005 for OmniEvents by  doxygen 1.4.3-20050530
omniEvents-2_6_2/doc/doxygen/a00205.png0000644000076400001440000000376410240451401017666 0ustar alexusers00000000000000‰PNG  IHDRR·²ËY!PLTEþÿÿo___???ßßß¿¿¿ŸŸŸÿÿÿi¸p†tRNS@æØfIDATxœíœÏsÚ8Çû/pÍ1Û8¶iÚäØ8Ó±Ï)[sÝiw¢kÓÎÄÇí°;áVböÍ„Öû+W’Š_–dËÂü 3éaúžd@OÏ/ *zqhiÕ¤úU“êWMª_†H¿„ć0DŠröCMº%”³jÒ-¡œýP’ÒÆ #Á½.v¾Z”ôÑzEH[· 3$>R‘¤Qc¥ú÷HôÛ`SR>R‡Ž*$>Zq¤Ãã}:{sŽ9÷m:NK@ºpãÚŒšAwç‡']\Eaý*…?NßBï𤭧Œ„Ìýç§ñàa9÷ýC“6ÛmHðQ?@º‹³”¤;9KHºÛ¡P:Ò½œe#ÝÏY.Ò( ´L¤ÑIj7¼]ÔÚH åY™êR ZH€j!5ªƒ4õò¤OùI# 2ÊMjf‚RS ¹IMÅ>?©1—©¹àç%5çÒœ¤]š“Ô K…Ôdðó‘šti.R£.=R£Á?R…à‹~DËüŒÎAªàR1‡ØâHUf¾˜Clq ¤*3_Ì!¶ÈLªtÙsˆ-2“*]L—6×FÓÑ*É謤jŸ¤KŽ9×fŠTíói‡!RÅ/'Œ#vÛ64?ù¸;$Ï?1R…FRÅ|Æ{]{~våãÖ-`ï–‘*$ø’‚=E;ؙЌ´Z‚?©tð#nkÏì͹MÀéìu“‘*¤x³‘J»4J²æŒcÝ•O1ÂFHåçS²Ác•ÞOÆ)#½·Â¸pR…%ÓˆÛ†²šû„t>øzb§hR¥ØÿÚ†B;ÉN©-¡­¼2ÊÅ>qeÄm—¢Ÿ½oí4G;[ye »t1`}F15oA;[y©“ S%Ëm=TÉV¤Ã|—J}£±žä_L>1‡ØB™tì£Fæ-Eî=ó b EÒݱߌy±#Ŭ¶.† !%•¶•‰Œ¤)³e'M˜¥!5ëͬ¤«oå&ýiÞ—;I;[dƒÿÄî/B5iåIGðÐy9úÎû`ì܇äiЛSRÒA%"ýþñCçá2ï/ƒø‡äé¨{ó ³ò(éUðºã†î è¸Ó`ºô¯ÿ³ò(锎ÓÐ}üÒ[’v®1똖jœ^¯(ix®| >2Ÿ¾"‘~ÿøwBê-IGÝö7ܧäQ"R:÷ épòÝ^½x€ pÙæ¾”ªCúó`ûê>=ÔW©lÑ›}œšÆÍ9£"s¬¹ç¾1×ê¹JEý¼â_Ðr¿¤µ¬L¬x×X¥×¤–J·Ô¶ÚÃñž•^ç[*ÝRã ÚB+Ú­µS‘Ò-ÕW%ef£Ý\*ÝR}¥W6q²LF¤ŸŸWºe!«ç‰ø¼‰”Pjo–Œ„ä¹ù\”½ßìW2¥.S>JÒŒ›QËÄ>­ßßP‘¤’ñ¶o‡°J”q*”T}Š Í~R¿?£qàÅî'°»£û!¹^a¤êûzìñÙ•Çê÷ñ9œZbïlïÁ{ ¤ýYX©ò^);³«ßÇ|ø1Û±þÁÄ' …‘*m2Yý>v&A0˜½n®HÃBIœšRŸ²ú}2§B°0†Hœš²qŠÒSë-F÷ Ò^ÙHsÿù‰ŽƒÖ|ðµ“úE“ʇ?ýüò–Åï–K?¿¼eñ;ÓÏ/oy¤ÒáO?¿¼eñ{zÓÏ/oYüŽîôóË[©dø´2±¦ÊTsTˆ´:UGÕ!­Nu\…*«CZzÓ UW§‚»B¤4ü†hóß!ývMú”ÿަ’gùï2b*%™ÿÎ-¦6#j!­Æ½"©M½”›T1?’]zHM8UÃ]›*CÊX«rÇ6Â*ÿ[9‹6R˜é9Ì>!¨Iu AMª[jR  1Ãíf/o½éâmçÿ×JÑéS[–ýNRûsä[ov×wžJº™ËO^>/ÓdKùp pjœ´ÙŸŒÜÿ‚îIô Ú³7ñ¡9„‘ë¹íØmÃ{Fúl‡´³éµ,;©é§v´¼Ÿ¼e­¼_;éøìênã·nÒ¸_Ž_^{ýy‰{]ø—‘vám¥•ü>Ðì¾Ôôµ#OIç_Þ¯;³›pRHlÑõþs;ñ¥ÏŠá{- 3 açm¥ùÞiRÓï$vä/>ãËûµ“Ú0ñ9Rz–?l°ƒ ÃfoÎ )õéø.¤­ )‰þ_´”›æü¤¤ó†/š×NºáSz–ÿ†IB0ƒnÜc¤ñ»mMHÉŒúÍf»)ðʧ0± %¥ã”#µÈõ·É »òÔ;àÓ‹×ÑÖ„ôú%½J±šþ%)é¼ãËûµ“Ò¹¿6Nû0îÐVâHÿù‰æ÷ŽÓüÎZ)ÔJ®ü¬¦¿³ eâÊûõ“%5©n!¨Iu AMª[Ž‘´2+T“êWMª_ÿ×È„œ³#öIEND®B`‚omniEvents-2_6_2/doc/doxygen/a00087.html0000644000076400001440000002105310303671737020065 0ustar alexusers00000000000000 OmniEvents: daemon_unix.cc File Reference

daemon_unix.cc File Reference

#include "daemon.h"
#include "main.h"
#include "daemon_unix.h"
#include <iostream.h>
#include <fstream.h>
#include <stdlib.h>
#include <errno.h>
#include <string>

Include dependency graph for daemon_unix.cc:

Go to the source code of this file.

Namespaces

namespace  omniORB
namespace  OmniEvents

Defines

#define NEED_PACKAGE_INFO
#define STRERR_FILE_LINE   strerror(errno)<<" "<<__FILE__<<":"<<__LINE__
#define PIPE_READ   0
#define PIPE_WRITE   1

Functions

void omniORB::setLogFunction (void(*logFunction)(const char *))
void OmniEvents::shutdown0 (void)
 Param to atexit().
void OmniEvents::shutdown2 (int s, void *)
 Param to on_exit().

Variables

DaemonImpl OmniEvents::daemon
 Singleton - only at file scope.


Define Documentation

#define NEED_PACKAGE_INFO
 

Definition at line 28 of file daemon_unix.cc.

#define PIPE_READ   0
 

Definition at line 87 of file daemon_unix.cc.

Referenced by OmniEvents::DaemonImpl::fork(), and OmniEvents::DaemonImpl::waitForChild().

#define PIPE_WRITE   1
 

Definition at line 88 of file daemon_unix.cc.

Referenced by OmniEvents::DaemonImpl::fork(), and OmniEvents::DaemonImpl::notifyParent().

#define STRERR_FILE_LINE   strerror(errno)<<" "<<__FILE__<<":"<<__LINE__
 

Definition at line 85 of file daemon_unix.cc.

Referenced by OmniEvents::DaemonImpl::checkPidfileOrShutdown(), OmniEvents::DaemonImpl::daemonize(), OmniEvents::DaemonImpl::fork(), OmniEvents::DaemonImpl::notifyParent(), OmniEvents::DaemonImpl::redirectStreamsTo(), OmniEvents::DaemonImpl::shutdown(), and OmniEvents::DaemonImpl::waitForChild().


Generated on Fri Aug 26 20:56:14 2005 for OmniEvents by  doxygen 1.4.3-20050530
omniEvents-2_6_2/doc/doxygen/a00206.png0000644000076400001440000000572010240666425017677 0ustar alexusers00000000000000‰PNG  IHDR ×$3!PLTEþÿÿo___ŸŸŸßßß???¿¿¿ÿÿÿ¤ÌatRNS@æØf ]IDATxœíMwâÆ†óXæ.}âœí½¹–9OÌrÎÀE,3¾öÖ3Ž­å6» vd¤ú•©êBÂÈ ô-÷;€±ZÈè™VõGU©!€Òþ™ @H‚IP $A”O j$Z/Ÿ´(b­Þ $A$(’ @Ê3ã|$¿²“>¤W…ïº[A(´ß¿²“ù^9h¼,/…öðÕM^ßò‚Pè4¡üÇT'²Vsøðµå'÷áÀÂw=Eª‡†fUŸð#ºZÁ?HA(ЫÞm5 g¢ð4{šiúa»ãV¯Ì»-EjÔ5¤P¹ÁÝš=|ðƒˆ‚ÕY ¬öh ‰‚fà?«3»ÃB›i¦l(H´ÑêPõù ü ¡€WÄ•„æŸ(\}— ’ª"]U‡xâ^ ŠËP„šÆŸ—uA¦+B²ëÌ:œl¨ —øà)…öá§1Ù¢0ž ,¹Ì)致 Í@Ù……Ú…S|ðƒ„ë5aA°˜Ojœ߆5Ū—oݬNÛˆH‚IP ¤ÜSøWÉ7…R©ôÖë"€·~ELKüç[öÊ”J‘؃ Ê…R)¾cç…Bœ òB!^Y¦°²Ó˜d˜‚c §±ÙÄ•²J¡d_I0È,…Q˜–âk½Ê&:ÿ¤2ICHðFHÁЦ_«ª—® ‘Rˆê@%A؈19ÃÈ”Q KP $A9U}ìx¶ªê¡ý–}|蹋%'âHr¶€‚Ò¼ªx¶6ÿwb¿e'|â-—œˆ£bQX‹'³:Îù± Œ«XÚð® Æ}(?Î󋤫õäUþJH~'!›áCðIe< IbG¤BPh]Œd +ø©Ý¹†#«c|f†³; @ªŽ~aFÍàS2–aH <"€‚ªŽ:cnÔ¾S¾EëØåÀ @ør^' \ão×Ò2 $lBÚB!ªá I‹‰‚žn4×@¯Ñ©1 Wß¿Ò:°h´Ž†ûàSZ†!± â¦àÛƒŽ²ªÄKÕ…SXô*œ‚A‘Gw ;ÁóÆÿxW]`aH^ ¯#òC쟒 ™ÚX§È#FáÝ׫Š%—Ñ.œ¢]8•–aHu…×'YòCÛˆùÅlïø©ß²6‚(̾Á|Ró´,4iEaËÈ:¼úÉogê;l T'i¥uy‹Ã|Éõ?ÅÄKÁèûíü*>åæª ¹£pÓðÝ»b?7È×:rì›»†'\®ñ õBw÷ß&‹ìó§H™SúÚ¾Ý5<ár_脟=åØnûÿ© S€é«ÖÑ5<ár_$þeÚ®Rÿ‹)B Ó¨´åÂw(Xײ®Vªp¤W …÷C°úЧ‰Uç5«úø¤2]mà'¨ErÂ_£§Pú1ª#íFÁølÁÏÍSýýÝn4~! V½J#’ÙßF¡Ûnàó=R8höðsÜà¤HDM­VRsMKëØµdê}÷uè›u¿p |D²82 ؉ÅçRPà¿ø S^ÈNŠDÄJ¡WfÇ+‚êFޱ["±ÞQXüÿŒ]UFX]Ñ$CU'ø);K" IzÓÜX]øÞ€ëßl RgUV%Ø´†á® 4q+Ö…º“"%…ø£,¹]8Å:2Ç NŠD„|›´˜ä¦€Öþª ŸPA%L*4|ñ´ª#ñ´ICØd<õ†ßÎlî6ºšBâ6QhË~;'C!y(,ž6ìÆ¥ÛÏ×’B ²7¦LBæ(¤!kÒ1 )AÈ…´ dÆ+C矄8´6n(„½(Ðdp²¨¸µ…i© h Ɇ"&¢à’ŽQNB)$©„SH¢ £—î‘ìQ¸û£÷¼ …in?ÍöáÇ;È…³ÇV Á’üøiÚwhÍ…–ªÞ?v>½SSòjkx£âïÇK 롈[ÄO³p ã¾T} ‹¥‡»8u¹(иv|A÷—ê|d}¸ÿ4±~ź0ÙµaKˆòKiËW F²ÔmU(°è÷n»á.N]k&êà)˜jW}˜˜-õódnâVS59…¿_çnçÅ(Œ)Òd@Á$×òÂv2g^g£¿ê÷Ì. Ô³K“,¾0»`†ª ìŠàY`ǹ‹S—×:þªk˺ð¬b]8ÁëãÁM­÷²ŽŠSªò¢î.N]î–²Ú{ÖÎ÷Ì.|QŸŸÌ÷_&ÖÓMÙC!ØÝ£\-%Rè¶õy·õ;þt§®µ^Ó“ñ¡m·O_Y¡~4×(ï;²^R¨R&D¶Ûˆ]$Æ‚‚  ( ‚‚ i ;Ó@§Ø+Ð3•0Õ=´…î(åU6(¤í­Í…´ã2B!åX–¬PHøkkÊ H¿.lK²†–zèˆûEú¥îÈ)lI²6zÍc9È÷}M §°%ÉZ¯Ð#À÷ŽƒN3 ~[’µ)ƒAË Ñ u¸‰²KÙjt”jM·†¢"Ït×Þ1ñi&GlK²f¹ÎX 71 ´¥ZÃH¦Õèæ—HˆÌ€Ðg´–ÖñÕ$kFßHÁMŒ%ÞRª5ŒÙjt¦Ç%"K$Ó°¼"^M²Æ+bÑÕØY+¸É¡@©ÖöRt^—H˜Œ¡40¸(ø'Y“u¼°ë‚²ÎíÕè(ÕšöíÃ¥éq‰„ÊK¡÷ä¦à›dm|Ö’ì]r•ò­9…ÚÆV£›{\"yË$tSðO²¦^5H7Q¾5§À¶±Õè"j#¸7‘zÐþIÖ;1l†qÒ¶aÿ$ë:Û×!×ið~ߨ(DãX à…‡î%§ЇB,òzk½†âíPØ ç&ošÙLAÂG ƒ‚¸"˜8…õåæ”åÙé´Jðr1¡ ËhŠÂ‹åæö;ó½Ú6¬AW( ¾ËÍÝÔèU?‹BÏVÒRBÇ ]å'°®å,)÷lw‡D -gu¡BQ åæ…n»1jö­ŽmÁ­^™w[¶»C"PZ„³]¡(Ðrs|©±Å€¦¾¶:¶%/´™fÊË)n6õÏÒ"œè E–›cÐ$h Ñzsª: xouH>Åe( E<£ói9u üͬÃɆºpé¬@W( ´Üsxt[hN™]h5¬Î @Ù…–á¬@W( ´Ü9<ÜmÄ#Öj>Ê·n ,-¢˜mÄR’ÿÒ´›%( I–š«ùx!)– @H‚IP …B8GA(D*A$(’ @úÀÈ£a"½ýÀIEND®B`‚omniEvents-2_6_2/doc/doxygen/a00088.html0000644000076400001440000000452710303671737020075 0ustar alexusers00000000000000 OmniEvents: daemon_unix.h File Reference

daemon_unix.h File Reference

This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Namespaces

namespace  OmniEvents

Classes

class  OmniEvents::DaemonImpl
 Utility class that contains various methods for running omniEvents as a Unix daemon. More...


Generated on Fri Aug 26 20:56:14 2005 for OmniEvents by  doxygen 1.4.3-20050530
omniEvents-2_6_2/doc/doxygen/a00207.png0000644000076400001440000000376410240666425017706 0ustar alexusers00000000000000‰PNG  IHDRR·²ËY!PLTEþÿÿo___???ßßß¿¿¿ŸŸŸÿÿÿi¸p†tRNS@æØfIDATxœíœÏsÚ8Çû/pÍ1Û8¶iÚäØ8Ó±Ï)[sÝiw¢kÓÎÄÇí°;áVböÍ„Öû+W’Š_–dËÂü 3éaúžd@OÏ/ *zqhiÕ¤úU“êWMª_†H¿„ć0DŠröCMº%”³jÒ-¡œýP’ÒÆ #Á½.v¾Z”ôÑzEH[· 3$>R‘¤Qc¥ú÷HôÛ`SR>R‡Ž*$>Zq¤Ãã}:{sŽ9÷m:NK@ºpãÚŒšAwç‡']\Eaý*…?NßBï𤭧Œ„Ìýç§ñàa9÷ýC“6ÛmHðQ?@º‹³”¤;9KHºÛ¡P:Ò½œe#ÝÏY.Ò( ´L¤ÑIj7¼]ÔÚH åY™êR ZH€j!5ªƒ4õò¤OùI# 2ÊMjf‚RS ¹IMÅ>?©1—©¹àç%5çÒœ¤]š“Ô K…Ôdðó‘šti.R£.=R£Á?R…à‹~DËüŒÎAªàR1‡ØâHUf¾˜Clq ¤*3_Ì!¶ÈLªtÙsˆ-2“*]L—6×FÓÑ*É謤jŸ¤KŽ9×fŠTíói‡!RÅ/'Œ#vÛ64?ù¸;$Ï?1R…FRÅ|Æ{]{~våãÖ-`ï–‘*$ø’‚=E;ؙЌ´Z‚?©tð#nkÏì͹MÀéìu“‘*¤x³‘J»4J²æŒcÝ•O1ÂFHåçS²Ác•ÞOÆ)#½·Â¸pR…%ÓˆÛ†²šû„t>øzb§hR¥ØÿÚ†B;ÉN©-¡­¼2ÊÅ>qeÄm—¢Ÿ½oí4G;[ye »t1`}F15oA;[y©“ S%Ëm=TÉV¤Ã|—J}£±žä_L>1‡ØB™tì£Fæ-Eî=ó b EÒݱߌy±#Ŭ¶.† !%•¶•‰Œ¤)³e'M˜¥!5ëͬ¤«oå&ýiÞ—;I;[dƒÿÄî/B5iåIGðÐy9úÎû`ì܇äiЛSRÒA%"ýþñCçá2ï/ƒø‡äé¨{ó ³ò(éUðºã†î è¸Ó`ºô¯ÿ³ò(锎ÓÐ}üÒ[’v®1똖jœ^¯(ix®| >2Ÿ¾"‘~ÿøwBê-IGÝö7ܧäQ"R:÷ épòÝ^½x€ pÙæ¾”ªCúó`ûê>=ÔW©lÑ›}œšÆÍ9£"s¬¹ç¾1×ê¹JEý¼â_Ðr¿¤µ¬L¬x×X¥×¤–J·Ô¶ÚÃñž•^ç[*ÝRã ÚB+Ú­µS‘Ò-ÕW%ef£Ý\*ÝR}¥W6q²LF¤ŸŸWºe!«ç‰ø¼‰”Pjo–Œ„ä¹ù\”½ßìW2¥.S>JÒŒ›QËÄ>­ßßP‘¤’ñ¶o‡°J”q*”T}Š Í~R¿?£qàÅî'°»£û!¹^a¤êûzìñÙ•Çê÷ñ9œZbïlïÁ{ ¤ýYX©ò^);³«ßÇ|ø1Û±þÁÄ' …‘*m2Yý>v&A0˜½n®HÃBIœšRŸ²ú}2§B°0†Hœš²qŠÒSë-F÷ Ò^ÙHsÿù‰ŽƒÖ|ðµ“úE“ʇ?ýüò–Åï–K?¿¼eñ;ÓÏ/oy¤ÒáO?¿¼eñ{zÓÏ/oYüŽîôóË[©dø´2±¦ÊTsTˆ´:UGÕ!­Nu\…*«CZzÓ UW§‚»B¤4ü†hóß!ývMú”ÿަ’gùï2b*%™ÿÎ-¦6#j!­Æ½"©M½”›T1?’]zHM8UÃ]›*CÊX«rÇ6Â*ÿ[9‹6R˜é9Ì>!¨Iu AMª[jR  1Ãíf/o½éâmçÿ×JÑéS[–ýNRûsä[ov×wžJº™ËO^>/ÓdKùp pjœ´ÙŸŒÜÿ‚îIô Ú³7ñ¡9„‘ë¹íØmÃ{Fúl‡´³éµ,;©é§v´¼Ÿ¼e­¼_;éøìênã·nÒ¸_Ž_^{ýy‰{]ø—‘vám¥•ü>Ðì¾Ôôµ#OIç_Þ¯;³›pRHlÑõþs;ñ¥ÏŠá{- 3 açm¥ùÞiRÓï$vä/>ãËûµ“Ú0ñ9Rz–?l°ƒ ÃfoÎ )õéø.¤­ )‰þ_´”›æü¤¤ó†/š×NºáSz–ÿ†IB0ƒnÜc¤ñ»mMHÉŒúÍf»)ðʧ0± %¥ã”#µÈõ·É »òÔ;àÓ‹×ÑÖ„ôú%½J±šþ%)é¼ãËûµ“Ò¹¿6Nû0îÐVâHÿù‰æ÷ŽÓüÎZ)ÔJ®ü¬¦¿³ eâÊûõ“%5©n!¨Iu AMª[Ž‘´2+T“êWMª_ÿ×È„œ³#öIEND®B`‚omniEvents-2_6_2/doc/doxygen/a00089.html0000644000076400001440000002313510303671737020072 0ustar alexusers00000000000000 OmniEvents: daemon_windows.cc File Reference

daemon_windows.cc File Reference

#include "daemon.h"
#include "daemon_windows.h"
#include "main.h"
#include <fstream>
#include <stdlib.h>
#include <errno.h>
#include <string>
#include <vector>

Include dependency graph for daemon_windows.cc:

Go to the source code of this file.

Namespaces

namespace  omniORB
namespace  OmniEvents
namespace  std

Classes

class  OmniEvents::Win
 Utility class, contains functions that Windows should have, but doesn't. More...
class  OmniEvents::RegistryKey
 Opens a windows registry key, and closed it upon destruction. More...

Defines

#define NEED_PACKAGE_INFO
#define AS_STR_2(x)   #x
#define AS_STR_1(x)   AS_STR_2(x)
#define HERE   __FILE__ ":" AS_STR_1(__LINE__)
 Generates a string literal that describes the filename and line number.

Functions

void omniORB::setLogFunction (void(*logFunction)(const char *))
void OmniEvents::shutdown0 (void)
 Param to atexit().

Variables

static Service OmniEvents::service
 Singleton - only at file scope.


Define Documentation

#define AS_STR_1  )     AS_STR_2(x)
 

Definition at line 42 of file daemon_windows.cc.

#define AS_STR_2  )     #x
 

Definition at line 41 of file daemon_windows.cc.

#define HERE   __FILE__ ":" AS_STR_1(__LINE__)
 

Generates a string literal that describes the filename and line number.

Definition at line 44 of file daemon_windows.cc.

Referenced by OmniEvents::ProxyPullConsumer_i::collect(), OmniEvents::Service::install(), OmniEvents::Service::readParameters(), OmniEvents::Service::start(), OmniEvents::ProxyPushSupplier_i::trigger(), OmniEvents::Service::uninstall(), OmniEvents::Service::writeParameters(), and OmniEvents::RegistryKey::~RegistryKey().

#define NEED_PACKAGE_INFO
 

Definition at line 28 of file daemon_windows.cc.


Generated on Fri Aug 26 20:56:14 2005 for OmniEvents by  doxygen 1.4.3-20050530
omniEvents-2_6_2/doc/doxygen/a00208.png0000644000076400001440000004452710240451402017674 0ustar alexusers00000000000000‰PNG  IHDR¤Æ­J¿'PLTEþÿÿGGGo___ŸŸŸßßß???¿¿¿ÿÿÿ³eAtRNS@æØf IDATxœíÏwÜ6¶çß3ÿA­ú4—>q&Ò²ûuFÖú%3®e^—Û¬eb'±wsÞ‹c×fÎiÛQ¤][*IU;–T‘‰?j€?$Aò^@á+»~°H€Ä‡÷/À#^Žé߯Þ/hy¤ÎÉ#uN©sòH“Gꜯ-CjÀçf‚Ýt£©G ûhRn & LSò—Y„ßçÚš©6Ù'—5Hñ/\ M ¥­ÔNÔ¤Ø@q¬ Ükµ)v%Šç`O¢V Å®D‘¯;à’×"jRäJÔDo1Pš1y¤¶X~Fº§ÅÄ‘âú\£÷ņzí}4RTŸkìþLŽú›N).ÐQâÿÛq„†þªÓEŠiD#åY§ÇÕiº”ÅT‘¢V¢#m2¨¼p§Â˜(R½+°~=^“ùßwÌ;žÞÓDŠHÔÄ W e26 ÚòU»ú”I"E$:@y’ùdÛ° ÿ­é>šRSDŠGt>7S:ìµi÷sp‚HшNÄç2e£™Ûv¶Ñ)"Å":â…‹BÒ¦}ÚöëFœR¬‚ŸÐBMVú¯~^ejH‘|ã„*QYMH{ž„CŠ5„%Yµ·x;kZHqŠ~¢>—‰cÛ¿º¦3Ʊé’÷[ù·ÎšR¢“õ¹LÛóÇß}$."Å(û û\&ŽíûçRŒÂŸÖ…‹JÛ!oÉÍYxò)Azy>ë¬É Ÿ<Ð [ò“ëUøòÙ1ÙzØŠ¿uÖT¢…O\Ò..È~MÖâo5¤D§^‹r ŽwÔ¥IEšüs)Q œ.•вv$¤ ~Ò§›Ÿzô„F{ÞÌHH’¨¬Yµx«H‹’3H¡ 1=´ç:eî@'WW‚fÖ§g¨+å˜lgU> ÈRðPÛšåXƒLš$åØÊԤ໯âfÜݦ¹ÊßÛÎ(GÂÇÃW—Œ`žDüÙv¬ùÏv#'ZJp wËöC•m Ó òAèHqÝ®ùzç«©43u)¦ÛÉ>ãíOa'âéhÚr&iýf3Rè}Ï1Žg m7¹Ûî•I%™ÞsX©/N]BºœVÇ¢ûäQÞhˆ›WB³iq¦GÚ1¤ëmåMÝÊ !"öÛ>¤ƒb*jÖ#ÎS»ÂL”«HÂv¤ân[ƒ4œ÷¸êz=RQº)¤MÍ^Hã]5õ? ©X:ȳÍOM&/ñ’}ù¢}NR)§Â‘&×%sé×g›—ÕMÂìC¯ó A•óÃ9¤û‹§«† ~?&9Ò{¾¨Ræ89õb!þöqÿÏÅWËÊ&hH+§F¢ÉðJ{Í€ìŽé¿Z=\Òµb©Èû!ÍëõüÛZ½hH+äŒÜ[3‰ôóŠì—»Íq|rEîÎÏè’Ó˧—d·™ÇoW»ãäÓíÓÅåù¿oNCry>O²×<l9Ñ?³/ Ò?æû59º¢É}¾}»"ìÁÌÉ’09}vÔ1‡Éþ0#-£³©´× +±//âãw$>=aHçOæOȣŇø'òùôùvñjquwu· ɧ‡d£={ÍSÐPŠ4u¼„Ü]ܽÞ=~>§ ­éÒ-Í—.¡H“œ¤Éþ|AU2S7‘®ÉÛx™ü†”п5ù:^‘wä 9#á")óý–.L€ì×™óœuÛ(i­ÖœÆË»×4¡)]B‘&9'H—©·‡GZº8µ©|~fŽ÷áå–„éÃÏ?åH÷›ÍmR¨G›ÍéšÄ2ÒnO¯OL´l¥ä‹$‡Íæ‚!ýœ9^º$AºHr&ÌóÍJ:P~q)mœ¼N­ô$ŽwŸZé–,’B}Oþ8®Xi'¤IÚWP ýú/É—ý’!Ý?<:¦ùÒ%IÎË$giŒ0!•ƒÝHåæ1ÿL.bh]Jïê„ÜìR¤è²¤®»ÛÒºT@zÚ )3²´» ¿ˆYÆgd÷øÙœ!Möà|Ió¥KâÕQR—¾¸bªÏ® e] ´Å› MZ¼äéû)[F¯..w·OD¤ë.H³È$ö%ïj8Þ]rô‰%÷jõlóýkš/]rû„µ¿—"R>ÆF4S«‘–šz:劰¾¥ÓÐÙ‘o„5µwöµ§Á¤% o®A†ÄEa5ÒÒiŽŽ´lWãß/-T>9€À‘5#­dp' jµ³ÞF¤ò>G3€Ø£Æ_+§Ìû¥ybPͤŠqZ4)&¤MÅ[å=ÄñX¡Uz·)uguiƒT”Ðк4ítbš¦b5R¡$Ø9Ñ<ªïÚQ,!Èm†i$½ÙŽ”wÐ ÍNNŠY TUÁ„fGòSi‡–‡HAŸK¨¯Q»b’zºúLŽäá×vI¸ô¹ôQ]Zà–OÚö’?³Ú·ÍWá5s¾=Ю©eÂñ‚™K¨œœ¡YÎÅᎧ Ò(‘> ½y9\꿤Qï.KªFèþÖ)KÃL4Ryn"@3 ²4…ôáR¯Sù*;m40R@3ªvì0ÒêiÙvBJ‹Ä̽5t¤èEEÂY{ÅÌ(âRƒ—ÛéŸÚ·¨Î `½ŒÔ‡A_Í -÷YÏ4¯Í\DŠ:ºöC†KÊ&êÞâe{î‘*%—†±é8TÇÑ ) ÌL¾„´zÓL8†™ruD¹¡µ.‡¹iVGÂxíÙxrt•}øDâ·ÿƒ„Ëb•,7"Ç:óR2ã}«‡Â‘²ñ»ÇÏ¿á^>›Ç?½%ß «d*vÓ#•$Qf]¼oÕL9R£/ï^¦.âÕçÕ{a•j #Eé%;³&æ¬ä 7›iü1źûf+¬’É +EÙuá–@å*S•óS´R²_Vº|øp,¬’)Àt^‚0‘âte WHrS j„€t÷øÙ7ü­K—äv%¬’oŸï¹G*«HµÚõŠ’a5c.iÒÐÍ?Ðá_‰«ä›;€iÏüj•ªDªÖŠU"ä )—…H+1”âo˜PKI×#ÝŸ)V‰½W.D¤X{ž¥«v³ˆPµ‘¾›+V‰ª‘‚8Â@нç-N j逺öñ:€ÙZnÂ`]ÑÈ9vGŠì¾RÙˆ”§ßˆ §ñ+³ðH¡Óo†uR!FÐZ¤x;ÎK§õŒA€*å鑊–¬N<8Té˜:DÛ“ìl*©À )ò¢-h¨ýÊ#m”>Rh¨½iˆ×/©:}R8Q§ý6´)æ~GÝB²!/Sûžb÷®GªÌ [´'œ¡ö<,é&Œ­HQï6tž ×IØ/´M" )(ïÛ‡3é‘*ô8d¨½R±©<ò%ƒ¨O±Àj¯œ¥O–"ÅÝí¨R AQ=NV´U}‘‚0í‘u }ôHŠ:·Ž2A0휷Nî‘*Õ)ÓÎyògT¡H¾]-*}±)n\c4$ýáÃŒ;& ­î‘ª5ìrd0ÓnÍÖ¨üÍ#Ue0¬FÌ4èâ¿å#ì²AØ?i¤ƒ™F~§qTùê‘*4ép¦ú”)çXйÁ;üRd(Sí©+%ᑪÓ~u9Œ©þl—•µtX}Ú†T¹—©J€3Âk÷6ÿü/eÚ©J“üI©¥.U‚Gªè¼ÍÏù³ŒÙ†ùÂý6û´­nAlEÚ=ʶcò -êþûš?qœÌCò1]è‘öJiÿ´R¤ô%ÌZî‘öKöº··ëÍ‘î·áçÛÕѹ9£3ôÎùÏN!EŸù ¶+£o‹HÉz÷øùüzEöŸR–©¶À‘ö½’ÉšGŸÒxy÷ú&Á»Î|°)¶ óH³ûH¶Òp³¹`Ÿ=ÒÎê<¼´]w8}¬ˆŒ4&û¥GÚOH;ÖoÒʺôÙ|MN=ÒÂ@ÚÑõr¢¼7Eújuô)ù¼öH{iÇ]Ö¾®GZ Ò.®7{Üe¯>^T¡©f’¼eÄ£ÉZªïÄx¤ á Õ©Nó‚EB‹·Vêû¥©BHHÛ\¯çÉå´ ©#ÈÜ(TPSQ—WÊWmµR¥Az¤Ua!­5ÓºÇ϶¶x•#g<ÒªÐ*˺áqÂ1Šm=ÒªÐV÷»y4S¯h{T!Š©XäÛ¼­…GZ"Ra‚" W¬cí{&‘FˆÅ’_v‚yöÊ•ŒGZ&Ò–'QD1x¤U¡"…`|PjËy¤U¡!¥ýCð —ey¤Uá Í®?Á/Ê3Wx¤UEð9ý ð^ŠQõH«F•ú‡Àw>’ÓôH«¢Eu‡J5¸ë ¤4=R…¤eóÌ—Oº’ ¦•H±wiÓÕ †™'v¸ýa"m™µÃLÅ'x¤ BZçnKÀ*ÎT¡þH5'ßÿ€ç‰GªPÐy 9€JœÁ×#U¨Rw+®Þ-u½ô2’È!‚8S,O i¾xŒ17Ù.{¤Šô»dÑïÞ ôù‹GªR¤…ö«Š,@ ‰z¤UEz“+v«>K.öHHÔ#­Jé žÉóò›áiUQÛìùCyR—{ÔÄ>Ú‡{îVžAm< Öt¬ÏÁ#Ug Îˆ'lÁ§»ÝEjRäáv‘Üž '7Ó OÕ#Ue @ Ë“T3J­ÇsÌ»ÉJ¤¼ý%fÏ“@›iÞk ·1¢OÈÏ‘æƒÂ“eƒ’X䑪r(¢ñ$ÀfZ$6ƒŸ^MÒ–kFé Lž<8é(ð˜þB#ÅæIÐFôdLZÒÀÒ€òD¾ú%°îQDªÿȶ²)ÚX‡Š s(ÚGQ×;ò·îç<#¡ÇU9ˆHgˆfjÒôä6†ÒL=Òª g•‡| SL_@Ê'%¿¶©O>ðH¤RåSÛ!^ pÁ¥_A<´mÒº‚J(HÁ‹¹Ü˜:ް‘žElv”Nj Rõ=’!R4ó¡òø×¦HHÙ®ÿ©m'‘ª™æÂL )QÌŸSÖ4ŠC†ªX†õ’=˜™V¶› R˜Bh2À )æµ@‘P:¶"•îzõW‹CM‘FÅc e¦Õ¡k1Õ³AÚŠ)/“È&¤Õ¡k91úTÅû|½‰!Ç~ô‘Vçg¯f¢2ó¼y:AéZZoZH¥ZÝ·Öä#t!Ì&V”™Ö =¹}{»º9 ã“+²»}²ž­h9ÒpÄ~ÀæsatÒÔ ½¼»X“ëU¿#ß.^-…g+Ni_¿ÛÉØJ”ÌZ{J‡ˆô<"…êRÇ{CÂx/ÏH¸ž­8¤âø¬[utž¥H3hs=¤B¨é›ßV”!Cº&ñRxߊ£(5Õo8¯TÈ«ŽÛwÑC–#€j®¨ã]‹Vj3Ò~›r>R3-ÚtÒ)­KO§„´›ßíÛX­4Á,Gzr»zµJ‘ÒïzJH;逋ÂxÞ¤¢þ&t")WÐ$Rq¤sóŠƒ.&+'ŽCH¿\J‡”óaHÙ#í¾\¼ˆOOÒò5y´ø@;N×ìv´ç4ž¿#´5ù¿{ü|’÷»ãû—ÏÖû«»«»mÈ~#áñ»j/+<ÒhúHký.ìÍ’Hzc*®ÉÛÄìhóh/H¾~Í{ÙÒäz~Ÿ˜.½¬OþâåÝëða{·ý¼Ú'W‚ô/d¿$«Ä‹J/+„ç•FDÖ©òžC³!Ò¹“9Þ‡—[>üüñûf»ßln9ÒÄñ¾¡ð?eHÃÍæ"Üm6—ñ’”’xQ¹ØGÊ‚>§š]c¤Ðw3ób)#¥Í£×‰•>îxï~8NŒsÁ‘&Í£/)ÒxçVšT½áçSò}ÕJM E ±CÊǪÈËîe•ÙEÌ?“‹Z—®NèEÌ’Ü®’ºôGúü1»ˆI>Íî?›‡ïyÂêÒé)De*ÜäÅŒš‚BZˆoP¾`*ºÒoR—“¯è…û1Eúj•v5¬ïo¿½H‘’£O$L¬7>=z/"—&bÆ6!åD¥X”ŸLt‚x^iÿ9H[‚4ë)âöö6R~ôH% •Z¡˜ñ]! Ú»{ ©8êmG™„“EÈÌR€ÊTDŠ8°i1À•>§A¿–"ÅÒ`¤…Yâ¾K jB²6"E<õ‡"ÍÌÒDÔ»|fRÔŒ‘bÎG0 ij¢Ì>ñçÂJßR¢†?>ñopbõ„”ßÊÚ&!Š7’Ë” †I™¢‡fó‡”T)ÔÐc†¦ÈkCìh\ÛT8^ˆäÛå‘ Ašú‚b¨Z޽Ow0”*qR™F:¼}$܉ñH‰¢—1G ‘ºŽ<ÒB0uiy-K‘FÞñ*¡¥bd¸˜á ·ï-FÊ-i6DâZÜ>2ôŒ¼iBvz”¼lÏÙç ]¤¬À9ÍæÓRü-¹Z}Lßé­çïÎ?ˆ?…ùÀb„ˆ)æ´¶!LµxoÿþûüUÒÅ“é•6Rê9õâͱø[¼øÇ÷ô"ý^þ-ÌgiA@«5É>¤—Oè¿Z]ïâ©JªÔyó%EJäx÷xÉQ¤[²¿~ ŸÔHñgú”3I 0…týjs{~Ižlß'.òÙm¼ù|ñx7ßm.ÉÓíËW—O’Oûùï»åäèb³[>¥ÎøŽþkA:+Þœ‘£Ow÷¯%Î5AJã(ÒK‡>_žÇ'Ÿ¨ãÝmæ$Y;<¹J“R!Õ¸é83§VLE²!¤[úò¿~ÿïí“×›íÑc†ôéñÓãÍ_ÿûöÍf}ô×Íÿþ}õûý§ûOñÅæî:1Ú«·ÿãíǧiÃÁ²œÖäÙëëÕîå³ùÏ—oÉ·ñrÿc†ôäúo éõâCüòùƒÇ|ï@¤‘UHyÛ%0úB;‘*æVà$9ºÊ£À-CÊžncRŠ3@/eᜠŒ÷ÚEÙ†4)nqÂ('´F “·â³0;Ù$‘~^V—å Š':îUE³føž7ÏÀ|ä‘Ò¸iñtdÀ½ªôqÊYˆXÇΪ6oYºð芜Ÿ ˪Û[‡”ÌÌ™éÔÆ§'tîF+¤I¿Ðû€®Ù#%tn÷FÆHSCúðóOáfsш´èŒ±©93¡§¡‚ƒI‘’:w Ò,Ô>è§ ã›ió1:ÒHõ¯Nè<ÜÍHó{¾6!5PÔYÌÇTò'ƒ°ï'òÇ ûæÒÿžWà<:Òt—vï)nÚ…?bz*HÓQ¥æç;êyÔ@‰•ìèH“:”y^ý>^á|· )¾çRþ´>EûH ô§ó`»ñ¦‘9is· Ò¬µ ©™Êt„1)Òl¬~DÂu©¬ºëÒŒ¥mHxÞ±æ“/Ðx+ö¥ÒtcT?to<¤Âlù0ÑC@ŠîyÅÀ,“š•§Ò`/šÑöTAþh:̽Ç@j Rp¤³™˜e/3 òSÁ2¤ø½# -=¡_îÙ\*"ůL ߈™•åÙsdA6¾Ô>¤ÚGF‘æ—-ù’ž™gûíCŠ>:&29÷FÑ(Š*º)oRE½O ¡ Åïl0†´ÒÊeÙ÷KK nRí#C—¥ò´’Q齫ò±¥j¨ R|+52±g1÷†üx¶Iª„…õ./Ò®†”Ky ¸ ‘â™)Œ èn¾€4aù믿ÎþDc~g3U$pkPp­lDA íåï†5ËD¤Ž nüqÐxžàtéY »x Ä7}PSAŠŒ18éÞ-/é!`@ó°‘²áeh)÷OzÐ5ðë )ÎÅ#”=E§×¶Ã  ó;Ö#Åò¼Qÿ»–ƒ¯ê¡‘ÒGAÖ)Däd’ÒÞÁXÝ46.Yé<ýécuíBÊ‹µsÒ ýnHÓ“Qµ®®=A¤ΕiÔõJ ¨#uX‹·Št¿¥È>¹}{»ºaS4ŸÜžî/Ïÿ}sš =¹Öì D¤8ݼAøh°°_x¤_.^Ë»‹5¹^Ñ)š¯¶û«»«»¤Ž ß kv.RxÏ›ÅvH¹ãí–¦”† éš¼%—ÔñÞ°)š—ûõ~Kÿ¤-3ÁÖ )Ê ¶ 3RÀH³8Òõ6©3ßü¶Z'PéÍo¾/6?û ^˜H1Föæ®OèP ¤é Vº¢ŽwMèÍ7dÚHéí{踯ŽÃvaóØ:È3`ñºô†#¥S4ßܧH力®Ëí„:```¾@šÍùšµxW¯×K§h~úágŽ4^Niœf^¤íe ?¼m`‡º†§8Ž´(ÑV¤áÛipda/X#\¶¤‹1iRi¸‘HÁc¥ÄtsÙ¢ švWð{"6´4%¤à!"¨&¤HƒÄ \Kq¦':]b'Rè`ribR¬1è}‡—æ…ó·ÚЏ2j¿H? ÍãЩǦªç³Héž þ%§¯,ZÌ©V:!UÖ8b§÷ ËþõÿRðv„f÷ðÁ 9V¥_Z†9PYЬnT] BDšp1ÐTøHã–õ´ÕŽw"M¤ ˆ„šÌà ]s )îlKZ½ËÍ&W åW2ié{¹$g,‹*Êju¡ÒYþ8({#šGŠ=É]á3•?ë )IËMÓ#UfÉÀ3ªŸòÌõ¸äQ6id×(p’_™s›Í§¥øc¼ÙýÈè}/ÿæAËõHÅ¢E'*"•{±: I‘¦ ³þ0ûWÈÒÒ`x™Ãb?lÉþBø9T|j@Š:ÉR93)ãN6&N|Äo¨ƒßQ&f‘ÒèãOw÷¯‘0\2çº&'·¿\žÏià#‹¶¹/H³xÏbª}H£Òû`UcÇJg {æ]VßÿšW5iÁÂE‹·n?xeËóH^ŸWVˆUH³;®©  ô^M9 Äâ®Ä÷¯É~SÞ$UiS®è âÓäåèŠÄoßÌ÷ë“ÛÓøäŠœŸ‘= MækÈ{¾Ë^¤`ž7+†A‘xS‰ïAîõ¬´9\Zl‚Ýÿ°¤ñÆñOww¯¯¶ññ;f¥44™çZÚ×)Z?¦=Hó+æZH´ J|ÿ×ä' „÷$1!ú¶»}²ÜmæñÛ•Ò¿M;äåÇQ*ÄWøö’ÆÇ+²þãt¹_ÇKú—†&S•FN …s0¥WµLÒI4kâûÃe’xþŽ$&Dß¾]¼Z>Z|ˆ&ê\'ÉJ 9 7›‹„â!yó}Žt[Bš‡¸x¤’dÏ«š«÷ŸÙ—J|ÿwó¿„dÏb…×ôíŒ}ü:±0!¤¿&îIžÖ¥KÒxãäýë¿¢‹³§ÁR,Ï[”;ÅJ|ÿ?^ÿ’‡(Rþ/6›[ ³ˆ,m¿ª[Õ»³|Oã“­ã3rsŸ"½+#-ÈòHK)Eâ…êâûo¶ ºw³¦oÔJ·d!#ÍêÒz‰] äÿÜÓxãdëÝ™ýã&^”æ)6#-öÎóJfª‡TŒïÿê˜"}Ê‘>]òºôEbT2R­A£Ý:=Ò:õ@*Æ÷¿; Éýí·t"yúÆ[¼ÇÔ°d¤:‘E Ë ¤8ž·áDÑŒïÿ›p9š«½÷¨>Úõ¤ø7b,C*˜i7¤ªøþ/ª …>ÞÆÝî„Tèðr)`×Wa¦ %¢߿ۼ¬..b§ 8p¤(ž·Rm‰×¥ML» -Ni«‘J–‰ày›, i×úºn=±¥è RxÏk)PìQ/ðH«*ݤR i}¹G›éÍ-½;HqÚ¼µDZwêtaê‘¶¨t;F%°hûÊqdêá$]ÎåHñ†ò`!•‹pÿÓ¤LÌuT—QÔm²ù }óHICZ§]S‘üѤàž7«ŠÊªV§½Ô#U+ùe i¥ðÛÂJr)ä°Ð Ä"©Hö±g/JŸ­EZÙa`ÏÛÜ#-9«nFZŽ%÷HkÒ6‹T>šnóÍ•ûºÝA ÜæE-“ª¤Ó§ÛDVuHñÎH ‘fWwc™i§y>+·/¬EZÝaØÊ4­OMIÊjÖò H<ì(_à‘V“j‰>—Õ,ê0—~õî…CHa+SÓHÅ»ØA‡œ«H³´”Tv®SP|èCnW‰/ …½Á'©“gúÞåDŠªßlEª:lÈûàiZ&ž“ª¸OÛå87/Ù¡‚™ýn¥<ÒÉ)Õ6{õzuÖ숴º¦ƒHá£T\uLa‘²Þ]}¤5}¢–"­;n03-'Ts· i:¤#űÓi5¡j ¦ªˆ`‘2g KBÕh+:¦ÝA vŠS•!0Ò¡Êf¸GÚ”"!Å”ðH5ýŒúÂÊI¤Pž7R&TÔ¨i‘Â×¥zPs©,"E¼á€‚´þ :7ÕH‹5çAÞ¿º^Ñ·m(LýÉ>*&·nÉT‹D]ç‡GÚ :¤Y@f$>]äù7¿!HMwYÛå&R #©EÊ~äÏ_Ïçn|ÄþCZßAé‘6¨)ɧ‡ä ÎYÜ¿§H铯OnOw›ãýv÷Z1¹uS¢zqG ]În"ò¼-Hå)?©)Æówéõâ{rõ°ývña¿ý’T'·nLS iS¾ÅH½"LZHÓ¹–™‹%á"Aº&oÉr¿>#¿î¯Ö¤:¹ucš:H£,<ÒÆTšËVj%Ž÷ÍÃG V—²¹­)Íë¤:r“lÛRÈ;B ãy5Ë6o}¯âÌJoHb¥ÿ•¸aÅäÖMjGÚ6øÉ#mÌA+™ô"æñßoâÕÓ«K_й­¿]¼Øoï_ŸvA滄 [CÛ\E r,Ò®†ûÛo?¦-Þ§~f-^ò~ ‰Tãáà#m.n3í„fM–a=6§iƒÆBZ B+žØY¤ci$¼VÔ‹g[§\B a¦ÓBª£è.R€£1”ç§„§uj/Ò¶½µiºÏÊ[ïÝ‘œD ày#ÍîÃ*"9õÆa¤‡Ó8kv.H»Äú{¤MÒD måïe‚¸Œt°™EˆŸ"ÕrM!†iu{ƒH…V­„´û.ØŠT/ }`&‘Š×))ÎÆ 8t¨™šC*]yŠH{ÛHRÜ.y?ƒbIŸðHd iÉ» Hûì@Ñiä"Òž×Òr}ä/ýN#vL†&;*å"„6ôË??D:ÌLÍ -wÊ>·'Ç‘:(#H+·Y ¤=³ÏS´ i§Hœ¾2TÁ¿y¤ÃVTÈRÕ¬-é{o ®#rTøH•‘cCs/n鸉tˆ™â#U†wÍÝu+b¦èH•(Coæ*ÒfŠTS”#íÙèõH„Ük_%V´x#Ýq0’;‘vÙ×þÇ…k¥u´„û êð,½L€´¿™¢"­e•hÓÿ|ά‡_ë¥Øþö>0D¤ 5Þø<õéTº(ÜEÚÛLñ6¥, Mç?óH®-l‡…´q€~:"‘½ð©²:! <Ò¦íjL\Ä÷9þÌ#­ª'$¤-Ø xM‘þ©~åƒEÚ·iëe‰€”¯ß´EiD,EÚcPAŸ\à‘j\gVCT$n!©ý)Ûð ö âFªÕqÀwUÊ9çö1ùO”?ebÑÜFÚÏLa‘F:Q5#]WÖ>`¤½)ïÒQ”¿äâÜNnßÞ®nÎÂøäŠìnŸ,…Ÿj¶vi/3BÚÜÀ)Kȹ]Þ]¬Éõ*Œß‘o¯<Ò>G7i$̪­¿ËYZ”"¥Ž÷†„ñ2^ž‘PTj[9Ž´×&ýf¤ëºÚÒÖ¤rþqno~[Ñù·Ò5‰•H…`â>Ò‡×é’E¦¤éŠ:Þu³•Êã.\GÚ§IÕe“î.V­€Tv•s»ÖÕ¥üæ:ÒÎǧ 'U-Ò“ÛÕ«UŠ´¦Å[ĸð7בöèŸÐÚ'•bàDµ#÷oY'’üS ¿[…´×¾vÝH)0O¢8¡ÈâËÅ#þABZ„3¤oÎ#íj¦­HûDµg*\Í˜Ýæ%ÿpèH;ß¿iF:°i[—©°›ï—æû“5|ÝGÚÑL›‘ö‰ÇÔäwÓçEi"ÊŸi×`ˆ¤(&J(Oa'»ª§Bºàv3Ó¦‡Ÿá˜heb—p²¨òñ vŒÿ­CŠät‰ i ôy H;™i-R,§KJ~7{PŸ^h¶°S…´K8Q]‰ ™()ŸFæms*igÓø¥ƒ@ÚeËšÁ$*OtuÉ,¨~9¤]+sÁ$ZjdW;’š¶uXHõ7U–*Q9Ë i‡ÉX¹à•!t¼âª~;¤ú/«®ˆL4R4[u·””° é°¹otW«d‚LÌH³€•ƒAª¹q)6Q0#=<¤zGZAŠMTFÐé©ÞÖåA'*…¯u£Q> ÃCªÕB*>Q8¿{€Hµ L¾@,<‹¾~·z† RíåË~¼žze†o©R DR  *ùÝNÄŠe)â^O©†#s-÷5Råº"îRZW@j‚h߯‘šÛA"m=Þ©¦QšÃ8H¤­IHÍiù]z›Õ¬i!Rˆbn¹ÒÌ6o¤Ú9ÖB;P¤ÍiÓÚdÕ&¹÷Qi=³CEÚxÈ9RóFª{p ûo#R‚nJ$/#F*—¾æ­¢†ÕiSÙeåaÄHK€Z]ÐísK$Ò†ƒÎ2h/–x£§úJt4Ž­-ÔF¤@þ°¾ô¢¶rÅzYÕ¯VÆÓšg{xï#­¿’É"ÖÛ“ˆ´Ê§%OxíCFZ›g­ã߇!ªq| q½[¬D Õl©;n3H‹«ì@Ce =ÏA#­;pŽT§Pú#¥.´îþµbåëX¶!…»^TyÚӀД"jx4¢´jDz©² 9R-WÀYů y¥ø5”W+ÄÆªJ½âˆ{LÛrèHUÍ^ÞhÑÊ#Eº&{Õ¥§iJIizÒ²NîVØŒ½Ø†²[§Ê”!ÕË"Eú‚ÜkZifu5ƒÉa½¾£“=Ò*Sv·´Ò¯ÉOÈÉíi|ò‰\ž“Ýf¿]‘ðäJ\M˜üªW@²y7úË#­0å7»ôŠ$E.Ã\=lã—Ïç׋äÑâCüSb¥ÇïŠÕÄɯTÄMû*ÊN¤À·HÊݬÆIË>EúÝü/!Yî×ñòábMÞ’5ù:^%H—éÔ¹‘ˆJb[ˆg ””_ïy°RŠô¯É›ï×1Ùo·$Üo6·fH¤J•wähª‡+Ê 4š"]ÞlCrCr+Ý’…„4­K[›°‡ŒúN¦PQyºµD3‹—_'Hï×ñËgI]ú"©K_ÄË;©Î% ´œ` …4%šYé»Ó<ýðsÑâ=¦³!KŽW»Ç}¨<ÒTYµFSnšnޝ<ãLËÝBÉ…è~«X_³ßèÞ>{±)BTPÊ”!m*ÛÔÝŠÍ£\é!ìqqÿ¥áñEgûPbµKþ+¶ÒD ­a!RŒH¯Y–nÒjoÁà@I0¬¼_J…±Ë³©º;N$â‘ e—gón9Å­éškR(fÊhV¼õqy HŽˆ%ƒ9cR”óxU&lè%š-f>dÏKÉx¤EšQPê;›ù¼š9\2V"Åð¼ìÞ·Œqæó’^*ÀáÔŽŒ;^¸“ýÞ.RØQ‰Å ™nž›)W$™HKØS8¤<%‹‘Bõ‹Ò(æÝGƘ°)Pä«LT¸ajˆ)d›€¿ZŒ¢0X=*À›‰ã<Òo €tR‚ÃFZž6R ¤oØ‚¼âH»¿,F:üáåif¥T <$²ü@:ð ¤;/D5A:Sèb9ÒaÂbfU›”NôÇ\‚'†Úy4i¤Õq°Su)Š`§<1Ë‘êORÙ’9]—ðY.gL¦°.Ò ¤ì¶ =ÍøË\ÿú3}¥/|°™­[*è*Ó®¹ÕÅ~Â~V•ZŽ4»m¢¨'¶¥ X.“J `ŸÜTS ¶éï5R®íR2ãcæ!-ßK«”I9œi{EúÐiyšœõH#>ŠwÒjøµ¢L²±ùü©FÓ¨RÕÓéei:;[¤ªðkõèµbm¤:aßFÙÛÁ#Um©.”YYëp¤z#3i:ë,ÒÚÉŽÓY#Õ¼í„4«JA°BŽ7›+éÇý«ë•bJ i¢ŒH³9¬H–Ûã"'žL<ϦÆ!ë/Ÿó÷›>HkKE:ÿø¾øeÎ2Œ×Hu‚Õø*]æލ ^3HIÞQ/¥¥ñò!æ¹…ò¯ñ2þ²©^ô!_뀑¦`hi¾ á’Έ{rEÎÏÎYì/Ïçwçï ]’|$GW )ýXlYV#Ò Ï-¤©Åoÿëül¿½;?;?‹Ÿ¯’ÅGŸÈч5ý”§åÕ 'åçM¤é.WÆ<k¤'äk6#îñ»ä+]ºÿô°çÉ·dIòq÷øù<äK…-˪+Éñ.÷?ÒÔâŸâÓ“ý6yI¬ô?/âåîå³ÿxùlM“§åôãƒy£Ï#M,7ñò6#î’þ1¤k²Þ³ÙqãåšÎÇy÷:äKù–uS«6)Hs{IS‹Wñ)¡H©ã]~ /¿¯ö,§Ò´¼š³ æ{ÅÑ…'—O/³y¹™H£üµu4†•î¾Ùòqé_âxß$µæúáÇ£ i¸Ù\ðºt-lYQM¹ÈVš”v’ZBðçŸöÛä…fñ.\†d¿Yòœ”s¸vÛ$œ?™?ÉæåfK éÝÇ|F\ú—4¾¤ðCÊ­”ì—‘ ¹ÑÔ¤$q¼É Íbw”[iò[©¦$+eé¼Ül‰i¿»…t±XÛŸ—þ=Ì.b¤O3¤»ÇÏ’ºô´ imgìÈú„$µ$á­KW ib y]úl~7i@D¤é¼ÜlÉ!Ýl>‘¯H6#î7iWÃúþöÛ‹)mކIíš#U—@R¡Ûž¡JRKêÌ´ÅûGR““§¼Åû~Íë”æ$"MçåfKªH ¿‹Û:2´—j,ç:ÐýÒ‰] )R>/·°\T¶»i¢©¯,K)—ˆ4—[X.(ß[iÜɤۚåšÌ´On}ž¸UBÖ,vÖ#%ÔñªËº©hzZi”_—hJ©89¿GšXi .ç›âx»@-¡ÛÕ,/v5Bš1³HãQÞFBšO¯!ÍÁHü䑲-•®·Áƒ oéAÕDZì¼Gšo©,áúÂhñê@ÕCIAÚ+Xš‰ãQ¹Þz3… ÍnwÀzHñ#rëÈ ÒÁR ÷B>ᩚ¡j!!z¤‚T#I°‹‡© ªV´½ìw=ÒB#™)GTþâ‘Êó:&Ë®›ó-©GZR¤š=Åðœèœ¯ Ð#UHucœ©¾ó•×d4Ñë ÛªH¦«ÓÎ7¨~óHËR5pç·UJi¤øæ‘–¥j M•i¤0R´ª™²}a¸ÙK´˜Êô"áSö!Uz^óM$KôÕBÙ‡4ª™ÌvrL#•‘z¤*©=¯ùfoÛj üê‘*Twa¾‰Ôx1S3ë!þNÚˆ´nñ˜ÖjvPzÇ“…Hë‹q ¦jC­,®aËJ¤µõÑLUgXe?Š©J óˆ÷ &¤ÊXÉê™%Žr–•H›žÉ1Sªb4l¤ø„&çˆä¢(j¡v,X­GªV}eJ5J…JU7–¸C©ZÍHÇcª–´;vÍN¤m]q£T¨5’O0T­æÊ”j:L•7ØPe'Òv×:N#©ªò~x¤jÕLš#¯3 ¦µHˆ²©– êpG–ÖómÀe)R­¢êH1Ç–"ÕlþŒ µã0`ré˜P»N¾&בŽU½‡iÚ/L¥µÍC­ëìðHëÔ ©y¨µWPi"½&¯´…9¨õy‰6¶i§i÷™m·š²ñHkÕ))njâ©åÑAi­¢þÏZѶOwµzw´^³! «F¢F<ÿ!"¥‚öÁzkóHë5ƒða]籯“¾Õ{¤õ  ž:Ä5êòÜ=S#&)S'.Â6]7òH‹”*ÒD”=7±W}6ê,k‘¢ÔKâs.k~’­™,´NŠGÜ•GÚ ŠxxÚcÔœ<Ò&Ñ»W£G‹u•GÚ¤ÈÄ,¨Ð2tz¤æä‘6‰‚Øæy=Ò&ÙˆÔ”W±©ež×#mÀ³ËLMí­GjLi£8R»<¯GÚ¨4ôÙ&35vþÙÔ&3õH›‰ýû‚ÆIDATå‘ÖËn¤6y^c»j9R‹ÌÔ#mV>2l:S§´ÈÜÉg;Rk\¯GÚ¢©-®×#m‘0$××kΛØÔ×ë‘¶¨eò̇_ûi…·Ãh)WäR…ë}虬G:žäÉ*Q¶ÓCj°vpieº Ô>•–&¥™R“—ZŽ Í+T^v©}RL,Ä+Tn®“CjòBˤiˆrVE’Íf3¯n²ßæß<Òñ¤žþk–ÍnTEzOÖ‹…¸à#3ƒÔh¯¥­HÕÝ€ÙÀA•ã]+¿z¤SQí3&8SŽt·9O.Ÿ^’ËóyȾ ár·™Ç'WŸoW'· ÁðäjŸüœn…ÔhŸ¥“HgbŸ¿\¼çOæOȧ‡-GzB¾&âãwÉ×Ë»‹éñ»}òsºµG:žZò_×ämHèßš¬Yóh/H¾|/ãe‚”®.ãÅ:wÊHHÍÞtiÖ.&õÃÕч59â3ðž†$^†éd¼ÅD¼éت›©!šå¡ƒ/CuÿòÙz÷øù|M®è¼¼t’9>o1/4ÒQo%8…”ÐÉ[ٟ➣ú¼Ú¯ãåÝë5Yî×9Òä‡}>/4ÒQï$ØŠ´Þféƒ((S†*^’u¸Ù\¬É›ïs¤t2Þý é¸÷ûÜCšÏœ0-¬”ìét­tÆÏ!¥“ñ¢!÷vŸ‹H ·Ò„©P—>KêÒ›ûu¼:bHoî.N=ÒÉ("šHÓ&ðÑû¤Åû)Á÷ôÃÏ÷·O¤l2Þ5Ò‘ã,lEÚb ‘àx5‹tä0 g‘1E:v0”µHµ n¤cÇBy¤]ÖÓÑØFj/R-ciÍm>ƒòH»¬§¡Ñ‰ZŒTÇÁ™G:ºÛõH»­×®ñÔb¤:¥g<4{Fê8RãšÂ>YŒt QÒ$vÉ#…ÔŒÔJ¤YÉM¢EMã$óHá4~/“ÍH§a…¦AÔ#…ÓTvÇf¤S1‹TSÙ+‘F¥÷Ih2;c5ÒÉÕdöÅn¤“±Œ¦ÙLË#…ÑtöÄr¤Óñv“ÙK‘8㘎۵éD¬c*g“íH§Q˜Ó8±RÙŽt¥9%·ëÒ ˜évA”HÅBßLÇßIé`MËíº€tl·7vþÙtl3ÝK”e'RÝùx yøµ]«¦Ú45·ëÒF;yÐHlÒɹ]k‘Fµ_JÂF:9·ëÒ¦rEF:=·k-R™bCh.Ò º]G60EE:‘(Ï’lEZ²ÚÂÅD:M¢® ­-ÞZ¤Å4Ÿ}‘N”¨µH«s,«WS#ýt¢DÝAZÓøT#] bc—ÉZ¤U«œÉ…Ì¿q¤'·§wçgÉÛj·™“›ÿ'MÆÛéd‰º„´•áH¯¶ñé „÷Ñâ¹^Q+Í'ãí…tºDíEª®Ê„’ž1¦ér¿ŽO „wM¾¦~Š“ñöA:É ÒTŽ!&CŸ1¦é›ï×?ÿDÞüöËfsKÖi]ÚéT»Lö"­1”|2t6ÕgŠ4±ËrB'áÝ’Åp¤“&êR’ÁäÓ·¦HéD¼'tÞG‹ éé¤Ó&j1Ò–ëÂlêlöå釟óïq‚ò•8og¤Ó&ê.RÉJ›Õé„»L#miuòI–á‘N¨ÍH[=/ýéä‰Z´ÙLÅÞ£fuA:}¢V#Õi§#µ€¨GJº µ¨ÝH5ºå@‘ZAÔn¤f ‰Ô¢–#m7SÀÐlKˆZŽÔdGŽ-DmGjî&—5DmGjÌLí!j=RCfjQ둚1S›ˆÚÔ„™ZEÔ#Õ]DíGŠïy-#êRl3µ¨H‘ÍÔ:¢. E5Sûˆº€³Ø-$êR<×k#Q7"ÖFVu)Nu:ñìZ¹ÃCÚJÔ¤ðÕéÌV¢Î …v½vV£L® f`1QwBº^K›º©ÜA ל±¶aÄåR°êÔr¢.!ªm'êRêÔÞ‹—LN!00«F\N!ÎÔ¢Ž!ÊÔ¢®!ÆÔ ¢Î!ÀÔî†BÎ!íÍÔþ¦n*÷öcꊉ'‘öaꌉ7‘v79wL”8Š´##‡œ.•£H»xR—œ.•«Hµ+Ô™[&JFªçNÝê2Òv¹Ôm¤ÍÎ7r­Íä4Òl3WºŽ”9×*»™›7•ëHI…ªÛ<ÉA %ŒêLšìÞeÒƒ’Gêœ OmniEvents: daemon_windows.h File Reference

daemon_windows.h File Reference

#include <windows.h>
#include <winsvc.h>
#include <iostream>

Include dependency graph for daemon_windows.h:

This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Namespaces

namespace  OmniEvents

Classes

class  OmniEvents::Service
 Singleton class that contains various methods for running a Windows service. More...


Generated on Fri Aug 26 20:56:14 2005 for OmniEvents by  doxygen 1.4.3-20050530
omniEvents-2_6_2/doc/doxygen/a00209.png0000644000076400001440000000073410240666426017703 0ustar alexusers00000000000000‰PNG  IHDRÇ'IoAw!PLTEþÿÿo___???ßßß¿¿¿ŸŸŸÿÿÿi¸p†tRNS@æØfiIDATH‰íÖMOƒ0ð}…]¹ª‡í¨aK¼²Ä°;˜îŽ®&$ì>ãvÓAB{Ò…²õù”>-#›Ê›ANž„ÚÂò/„´_o½éÿЪb"ê ͯŽ£rJȻ֙ëiK(J¾VŒÄ‡æB„S¿¢”&­ƒHå‡HKºÚQv¾ b]DñÐp3õËTTÇŽØ:ÜLSá¸qD湈gÝDŽí³å5å¡ð,‘ÝZ”"}MuˆÕâqr g“±BF¿&,1è#k“F1è ž=¹—~Ai)6ÜAŽB\ˆ<ÈCðr3Lapʈ̄יI¢„©©ÜÍG zùm&UÈ>ø6<¤31KϺW™¤ˆÌdPì¯ç»˜ÉXf"Ü"«B$[])"W/EŽÞøÃêÚ†KD‚Bäs]`@GÕηëÉzn‰ÀiùRr’Hƒªs{ã7µC~ùÊ-•Qæ5CIEND®B`‚omniEvents-2_6_2/doc/doxygen/a00210.png0000644000076400001440000004452710240666427017704 0ustar alexusers00000000000000‰PNG  IHDR¤Æ­J¿'PLTEþÿÿGGGo___ŸŸŸßßß???¿¿¿ÿÿÿ³eAtRNS@æØf IDATxœíÏwÜ6¶çß3ÿA­ú4—>q&Ò²ûuFÖú%3®e^—Û¬eb'±wsÞ‹c×fÎiÛQ¤][*IU;–T‘‰?j€?$Aò^@á+»~°H€Ä‡÷/À#^Žé߯Þ/hy¤ÎÉ#uN©sòH“Gꜯ-CjÀçf‚Ýt£©G ûhRn & LSò—Y„ßçÚš©6Ù'—5Hñ/\ M ¥­ÔNÔ¤Ø@q¬ Ükµ)v%Šç`O¢V Å®D‘¯;à’×"jRäJÔDo1Pš1y¤¶X~Fº§ÅÄ‘âú\£÷ņzí}4RTŸkìþLŽú›N).ÐQâÿÛq„†þªÓEŠiD#åY§ÇÕiº”ÅT‘¢V¢#m2¨¼p§Â˜(R½+°~=^“ùßwÌ;žÞÓDŠHÔÄ W e26 ÚòU»ú”I"E$:@y’ùdÛ° ÿ­é>šRSDŠGt>7S:ìµi÷sp‚HшNÄç2e£™Ûv¶Ñ)"Å":â…‹BÒ¦}ÚöëFœR¬‚ŸÐBMVú¯~^ejH‘|ã„*QYMH{ž„CŠ5„%Yµ·x;kZHqŠ~¢>—‰cÛ¿º¦3Ʊé’÷[ù·ÎšR¢“õ¹LÛóÇß}$."Å(û û\&ŽíûçRŒÂŸÖ…‹JÛ!oÉÍYxò)Azy>ë¬É Ÿ<Ð [ò“ëUøòÙ1ÙzØŠ¿uÖT¢…O\Ò..È~MÖâo5¤D§^‹r ŽwÔ¥IEšüs)Q œ.•вv$¤ ~Ò§›Ÿzô„F{ÞÌHH’¨¬Yµx«H‹’3H¡ 1=´ç:eî@'WW‚fÖ§g¨+å˜lgU> ÈRðPÛšåXƒLš$åØÊԤ໯âfÜݦ¹ÊßÛÎ(GÂÇÃW—Œ`žDüÙv¬ùÏv#'ZJp wËöC•m Ó òAèHqÝ®ùzç«©43u)¦ÛÉ>ãíOa'âéhÚr&iýf3Rè}Ï1Žg m7¹Ûî•I%™ÞsX©/N]BºœVÇ¢ûäQÞhˆ›WB³iq¦GÚ1¤ëmåMÝÊ !"öÛ>¤ƒb*jÖ#ÎS»ÂL”«HÂv¤ân[ƒ4œ÷¸êz=RQº)¤MÍ^Hã]5õ? ©X:ȳÍOM&/ñ’}ù¢}NR)§Â‘&×%sé×g›—ÕMÂìC¯ó A•óÃ9¤û‹§«† ~?&9Ò{¾¨Ræ89õb!þöqÿÏÅWËÊ&hH+§F¢ÉðJ{Í€ìŽé¿Z=\Òµb©Èû!ÍëõüÛZ½hH+äŒÜ[3‰ôóŠì—»Íq|rEîÎÏè’Ó˧—d·™ÇoW»ãäÓíÓÅåù¿oNCry>O²×<l9Ñ?³/ Ò?æû59º¢É}¾}»"ìÁÌÉ’09}vÔ1‡Éþ0#-£³©´× +±//âãw$>=aHçOæOȣŇø'òùôùvñjquwu· ɧ‡d£={ÍSÐPŠ4u¼„Ü]ܽÞ=~>§ ­éÒ-Í—.¡H“œ¤Éþ|AU2S7‘®ÉÛx™ü†”п5ù:^‘wä 9#á")óý–.L€ì×™óœuÛ(i­ÖœÆË»×4¡)]B‘&9'H—©·‡GZº8µ©|~fŽ÷áå–„éÃÏ?åH÷›ÍmR¨G›ÍéšÄ2ÒnO¯OL´l¥ä‹$‡Íæ‚!ýœ9^º$AºHr&ÌóÍJ:P~q)mœ¼N­ô$ŽwŸZé–,’B}Oþ8®Xi'¤IÚWP ýú/É—ý’!Ý?<:¦ùÒ%IÎË$giŒ0!•ƒÝHåæ1ÿL.bh]Jïê„ÜìR¤è²¤®»ÛÒºT@zÚ )3²´» ¿ˆYÆgd÷øÙœ!Möà|Ió¥KâÕQR—¾¸bªÏ® e] ´Å› MZ¼äéû)[F¯..w·OD¤ë.H³È$ö%ïj8Þ]rô‰%÷jõlóýkš/]rû„µ¿—"R>ÆF4S«‘–šz:劰¾¥ÓÐÙ‘o„5µwöµ§Á¤% o®A†ÄEa5ÒÒiŽŽ´lWãß/-T>9€À‘5#­dp' jµ³ÞF¤ò>G3€Ø£Æ_+§Ìû¥ybPͤŠqZ4)&¤MÅ[å=ÄñX¡Uz·)uguiƒT”Ðк4ítbš¦b5R¡$Ø9Ñ<ªïÚQ,!Èm†i$½ÙŽ”wÐ ÍNNŠY TUÁ„fGòSi‡–‡HAŸK¨¯Q»b’zºúLŽäá×vI¸ô¹ôQ]Zà–OÚö’?³Ú·ÍWá5s¾=Ю©eÂñ‚™K¨œœ¡YÎÅᎧ Ò(‘> ½y9\꿤Qï.KªFèþÖ)KÃL4Ryn"@3 ²4…ôáR¯Sù*;m40R@3ªvì0ÒêiÙvBJ‹Ä̽5t¤èEEÂY{ÅÌ(âRƒ—ÛéŸÚ·¨Î `½ŒÔ‡A_Í -÷YÏ4¯Í\DŠ:ºöC†KÊ&êÞâe{î‘*%—†±é8TÇÑ ) ÌL¾„´zÓL8†™ruD¹¡µ.‡¹iVGÂxíÙxrt•}øDâ·ÿƒ„Ëb•,7"Ç:óR2ã}«‡Â‘²ñ»ÇÏ¿á^>›Ç?½%ß «d*vÓ#•$Qf]¼oÕL9R£/ï^¦.âÕçÕ{a•j #Eé%;³&æ¬ä 7›iü1źûf+¬’É +EÙuá–@å*S•óS´R²_Vº|øp,¬’)Àt^‚0‘âte WHrS j„€t÷øÙ7ü­K—äv%¬’oŸï¹G*«HµÚõŠ’a5c.iÒÐÍ?Ðá_‰«ä›;€iÏüj•ªDªÖŠU"ä )—…H+1”âo˜PKI×#ÝŸ)V‰½W.D¤X{ž¥«v³ˆPµ‘¾›+V‰ª‘‚8Â@нç-N j逺öñ:€ÙZnÂ`]ÑÈ9vGŠì¾RÙˆ”§ßˆ §ñ+³ðH¡Óo†uR!FÐZ¤x;ÎK§õŒA€*å鑊–¬N<8Té˜:DÛ“ìl*©À )ò¢-h¨ýÊ#m”>Rh¨½iˆ×/©:}R8Q§ý6´)æ~GÝB²!/Sûžb÷®GªÌ [´'œ¡ö<,é&Œ­HQï6tž ×IØ/´M" )(ïÛ‡3é‘*ô8d¨½R±©<ò%ƒ¨O±Àj¯œ¥O–"ÅÝí¨R AQ=NV´U}‘‚0í‘u }ôHŠ:·Ž2A0휷Nî‘*Õ)ÓÎyògT¡H¾]-*}±)n\c4$ýáÃŒ;& ­î‘ª5ìrd0ÓnÍÖ¨üÍ#Ue0¬FÌ4èâ¿å#ì²AØ?i¤ƒ™F~§qTùê‘*4ép¦ú”)çXйÁ;üRd(Sí©+%ᑪÓ~u9Œ©þl—•µtX}Ú†T¹—©J€3Âk÷6ÿü/eÚ©J“üI©¥.U‚Gªè¼ÍÏù³ŒÙ†ùÂý6û´­nAlEÚ=ʶcò -êþûš?qœÌCò1]è‘öJiÿ´R¤ô%ÌZî‘öKöº··ëÍ‘î·áçÛÕѹ9£3ôÎùÏN!EŸù ¶+£o‹HÉz÷øùüzEöŸR–©¶À‘ö½’ÉšGŸÒxy÷ú&Á»Î|°)¶ óH³ûH¶Òp³¹`Ÿ=ÒÎê<¼´]w8}¬ˆŒ4&û¥GÚOH;ÖoÒʺôÙ|MN=ÒÂ@ÚÑõr¢¼7Eújuô)ù¼öH{iÇ]Ö¾®GZ Ò.®7{Üe¯>^T¡©f’¼eÄ£ÉZªïÄx¤ á Õ©Nó‚EB‹·Vêû¥©BHHÛ\¯çÉå´ ©#ÈÜ(TPSQ—WÊWmµR¥Az¤Ua!­5ÓºÇ϶¶x•#g<ÒªÐ*˺áqÂ1Šm=ÒªÐV÷»y4S¯h{T!Š©XäÛ¼­…GZ"Ra‚" W¬cí{&‘FˆÅ’_v‚yöÊ•ŒGZ&Ò–'QD1x¤U¡"…`|PjËy¤U¡!¥ýCð —ey¤Uá Í®?Á/Ê3Wx¤UEð9ý ð^ŠQõH«F•ú‡Àw>’ÓôH«¢Eu‡J5¸ë ¤4=R…¤eóÌ—Oº’ ¦•H±wiÓÕ †™'v¸ýa"m™µÃLÅ'x¤ BZçnKÀ*ÎT¡þH5'ßÿ€ç‰GªPÐy 9€JœÁ×#U¨Rw+®Þ-u½ô2’È!‚8S,O i¾xŒ17Ù.{¤Šô»dÑïÞ ôù‹GªR¤…ö«Š,@ ‰z¤UEz“+v«>K.öHHÔ#­Jé žÉóò›áiUQÛìùCyR—{ÔÄ>Ú‡{îVžAm< Öt¬ÏÁ#Ug Îˆ'lÁ§»ÝEjRäáv‘Üž '7Ó OÕ#Ue @ Ë“T3J­ÇsÌ»ÉJ¤¼ý%fÏ“@›iÞk ·1¢OÈÏ‘æƒÂ“eƒ’X䑪r(¢ñ$ÀfZ$6ƒŸ^MÒ–kFé Lž<8é(ð˜þB#ÅæIÐFôdLZÒÀÒ€òD¾ú%°îQDªÿȶ²)ÚX‡Š s(ÚGQ×;ò·îç<#¡ÇU9ˆHgˆfjÒôä6†ÒL=Òª g•‡| SL_@Ê'%¿¶©O>ðH¤RåSÛ!^ pÁ¥_A<´mÒº‚J(HÁ‹¹Ü˜:ް‘žElv”Nj Rõ=’!R4ó¡òø×¦HHÙ®ÿ©m'‘ª™æÂL )QÌŸSÖ4ŠC†ªX†õ’=˜™V¶› R˜Bh2À )æµ@‘P:¶"•îzõW‹CM‘FÅc e¦Õ¡k1Õ³AÚŠ)/“È&¤Õ¡k91úTÅû|½‰!Ç~ô‘Vçg¯f¢2ó¼y:AéZZoZH¥ZÝ·Öä#t!Ì&V”™Ö =¹}{»º9 ã“+²»}²ž­h9ÒpÄ~ÀæsatÒÔ ½¼»X“ëU¿#ß.^-…g+Ni_¿ÛÉØJ”ÌZ{J‡ˆô<"…êRÇ{CÂx/ÏH¸ž­8¤âø¬[utž¥H3hs=¤B¨é›ßV”!Cº&ñRxߊ£(5Õo8¯TÈ«ŽÛwÑC–#€j®¨ã]‹Vj3Ò~›r>R3-ÚtÒ)­KO§„´›ßíÛX­4Á,Gzr»zµJ‘ÒïzJH;逋ÂxÞ¤¢þ&t")WÐ$Rq¤sóŠƒ.&+'ŽCH¿\J‡”óaHÙ#í¾\¼ˆOOÒò5y´ø@;N×ìv´ç4ž¿#´5ù¿{ü|’÷»ãû—ÏÖû«»«»mÈ~#áñ»j/+<ÒhúHký.ìÍ’Hzc*®ÉÛÄìhóh/H¾~Í{ÙÒäz~Ÿ˜.½¬OþâåÝëða{·ý¼Ú'W‚ô/d¿$«Ä‹J/+„ç•FDÖ©òžC³!Ò¹“9Þ‡—[>üüñûf»ßln9ÒÄñ¾¡ð?eHÃÍæ"Üm6—ñ’”’xQ¹ØGÊ‚>§š]c¤Ðw3ób)#¥Í£×‰•>îxï~8NŒsÁ‘&Í£/)ÒxçVšT½áçSò}ÕJM E ±CÊǪÈËîe•ÙEÌ?“‹Z—®NèEÌ’Ü®’ºôGúü1»ˆI>Íî?›‡ïyÂêÒé)De*ÜäÅŒš‚BZˆoP¾`*ºÒoR—“¯è…û1Eúj•v5¬ïo¿½H‘’£O$L¬7>=z/"—&bÆ6!åD¥X”ŸLt‚x^iÿ9H[‚4ë)âöö6R~ôH% •Z¡˜ñ]! Ú»{ ©8êmG™„“EÈÌR€ÊTDŠ8°i1À•>§A¿–"ÅÒ`¤…Yâ¾K jB²6"E<õ‡"ÍÌÒDÔ»|fRÔŒ‘bÎG0 ij¢Ì>ñçÂJßR¢†?>ñopbõ„”ßÊÚ&!Š7’Ë” †I™¢‡fó‡”T)ÔÐc†¦ÈkCìh\ÛT8^ˆäÛå‘ Ašú‚b¨Z޽Ow0”*qR™F:¼}$܉ñH‰¢—1G ‘ºŽ<ÒB0uiy-K‘FÞñ*¡¥bd¸˜á ·ï-FÊ-i6DâZÜ>2ôŒ¼iBvz”¼lÏÙç ]¤¬À9ÍæÓRü-¹Z}Lßé­çïÎ?ˆ?…ùÀb„ˆ)æ´¶!LµxoÿþûüUÒÅ“é•6Rê9õâͱø[¼øÇ÷ô"ý^þ-ÌgiA@«5É>¤—Oè¿Z]ïâ©JªÔyó%EJäx÷xÉQ¤[²¿~ ŸÔHñgú”3I 0…týjs{~Ižlß'.òÙm¼ù|ñx7ßm.ÉÓíËW—O’Oûùï»åäèb³[>¥ÎøŽþkA:+Þœ‘£Ow÷¯%Î5AJã(ÒK‡>_žÇ'Ÿ¨ãÝmæ$Y;<¹J“R!Õ¸é83§VLE²!¤[úò¿~ÿïí“×›íÑc†ôéñÓãÍ_ÿûöÍf}ô×Íÿþ}õûý§ûOñÅæî:1Ú«·ÿãíǧiÃÁ²œÖäÙëëÕîå³ùÏ—oÉ·ñrÿc†ôäúo éõâCüòùƒÇ|ï@¤‘UHyÛ%0úB;‘*æVà$9ºÊ£À-CÊžncRŠ3@/eᜠŒ÷ÚEÙ†4)nqÂ('´F “·â³0;Ù$‘~^V—å Š':îUE³føž7ÏÀ|ä‘Ò¸iñtdÀ½ªôqÊYˆXÇΪ6oYºð芜Ÿ ˪Û[‡”ÌÌ™éÔÆ§'tîF+¤I¿Ðû€®Ù#%tn÷FÆHSCúðóOáfsш´èŒ±©93¡§¡‚ƒI‘’:w Ò,Ô>è§ ã›ió1:ÒHõ¯Nè<ÜÍHó{¾6!5PÔYÌÇTò'ƒ°ï'òÇ ûæÒÿžWà<:Òt—vï)nÚ…?bz*HÓQ¥æç;êyÔ@‰•ìèH“:”y^ý>^á|· )¾çRþ´>EûH ô§ó`»ñ¦‘9is· Ò¬µ ©™Êt„1)Òl¬~DÂu©¬ºëÒŒ¥mHxÞ±æ“/Ðx+ö¥ÒtcT?to<¤Âlù0ÑC@ŠîyÅÀ,“š•§Ò`/šÑöTAþh:̽Ç@j Rp¤³™˜e/3 òSÁ2¤ø½# -=¡_îÙ\*"ůL ߈™•åÙsdA6¾Ô>¤ÚGF‘æ—-ù’ž™gûíCŠ>:&29÷FÑ(Š*º)oRE½O ¡ Åïl0†´ÒÊeÙ÷KK nRí#C—¥ò´’Q齫ò±¥j¨ R|+52±g1÷†üx¶Iª„…õ./Ò®†”Ky ¸ ‘â™)Œ èn¾€4aù믿ÎþDc~g3U$pkPp­lDA íåï†5ËD¤Ž nüqÐxžàtéY »x Ä7}PSAŠŒ18éÞ-/é!`@ó°‘²áeh)÷OzÐ5ðë )ÎÅ#”=E§×¶Ã  ó;Ö#Åò¼Qÿ»–ƒ¯ê¡‘ÒGAÖ)Däd’ÒÞÁXÝ46.Yé<ýécuíBÊ‹µsÒ ýnHÓ“Qµ®®=A¤ΕiÔõJ ¨#uX‹·Št¿¥È>¹}{»ºaS4ŸÜžî/Ïÿ}sš =¹Öì D¤8ݼAøh°°_x¤_.^Ë»‹5¹^Ñ)š¯¶û«»«»¤Ž ß kv.RxÏ›ÅvH¹ãí–¦”† éš¼%—ÔñÞ°)š—ûõ~Kÿ¤-3ÁÖ )Ê ¶ 3RÀH³8Òõ6©3ßü¶Z'PéÍo¾/6?û ^˜H1Föæ®OèP ¤é Vº¢ŽwMèÍ7dÚHéí{踯ŽÃvaóØ:È3`ñºô†#¥S4ßܧH力®Ëí„:```¾@šÍùšµxW¯×K§h~úágŽ4^Niœf^¤íe ?¼m`‡º†§8Ž´(ÑV¤áÛipda/X#\¶¤‹1iRi¸‘HÁc¥ÄtsÙ¢ švWð{"6´4%¤à!"¨&¤HƒÄ \Kq¦':]b'Rè`ribR¬1è}‡—æ…ó·ÚЏ2j¿H? ÍãЩǦªç³Héž þ%§¯,ZÌ©V:!UÖ8b§÷ ËþõÿRðv„f÷ðÁ 9V¥_Z†9PYЬnT] BDšp1ÐTøHã–õ´ÕŽw"M¤ ˆ„šÌà ]s )îlKZ½ËÍ&W åW2ié{¹$g,‹*Êju¡ÒYþ8({#šGŠ=É]á3•?ë )IËMÓ#UfÉÀ3ªŸòÌõ¸äQ6id×(p’_™s›Í§¥øc¼ÙýÈè}/ÿæAËõHÅ¢E'*"•{±: I‘¦ ³þ0ûWÈÒÒ`x™Ãb?lÉþBø9T|j@Š:ÉR93)ãN6&N|Äo¨ƒßQ&f‘ÒèãOw÷¯‘0\2çº&'·¿\žÏià#‹¶¹/H³xÏbª}H£Òû`UcÇJg {æ]VßÿšW5iÁÂE‹·n?xeËóH^ŸWVˆUH³;®©  ô^M9 Äâ®Ä÷¯É~SÞ$UiS®è âÓäåèŠÄoßÌ÷ë“ÛÓøäŠœŸ‘= MækÈ{¾Ë^¤`ž7+†A‘xS‰ïAîõ¬´9\Zl‚Ýÿ°¤ñÆñOww¯¯¶ññ;f¥44™çZÚ×)Z?¦=Hó+æZH´ J|ÿ×ä' „÷$1!ú¶»}²ÜmæñÛ•Ò¿M;äåÇQ*ÄWøö’ÆÇ+²þãt¹_ÇKú—†&S•FN …s0¥WµLÒI4kâûÃe’xþŽ$&Dß¾]¼Z>Z|ˆ&ê\'ÉJ 9 7›‹„â!yó}Žt[Bš‡¸x¤’dÏ«š«÷ŸÙ—J|ÿwó¿„dÏb…×ôíŒ}ü:±0!¤¿&îIžÖ¥KÒxãäýë¿¢‹³§ÁR,Ï[”;ÅJ|ÿ?^ÿ’‡(Rþ/6›[ ³ˆ,m¿ª[Õ»³|Oã“­ã3rsŸ"½+#-ÈòHK)Eâ…êâûo¶ ºw³¦oÔJ·d!#ÍêÒz‰] äÿÜÓxãdëÝ™ýã&^”æ)6#-öÎóJfª‡TŒïÿê˜"}Ê‘>]òºôEbT2R­A£Ý:=Ò:õ@*Æ÷¿; Éýí·t"yúÆ[¼ÇÔ°d¤:‘E Ë ¤8ž·áDÑŒïÿ›p9š«½÷¨>Úõ¤ø7b,C*˜i7¤ªøþ/ª …>ÞÆÝî„Tèðr)`×Wa¦ %¢߿ۼ¬..b§ 8p¤(ž·Rm‰×¥ML» -Ni«‘J–‰ày›, i×úºn=±¥è RxÏk)PìQ/ðH«*ݤR i}¹G›éÍ-½;HqÚ¼µDZwêtaê‘¶¨t;F%°hûÊqdêá$]ÎåHñ†ò`!•‹pÿÓ¤LÌuT—QÔm²ù }óHICZ§]S‘üѤàž7«ŠÊªV§½Ô#U+ùe i¥ðÛÂJr)ä°Ð Ä"©Hö±g/JŸ­EZÙa`ÏÛÜ#-9«nFZŽ%÷HkÒ6‹T>šnóÍ•ûºÝA ÜæE-“ª¤Ó§ÛDVuHñÎH ‘fWwc™i§y>+·/¬EZÝaØÊ4­OMIÊjÖò H<ì(_à‘V“j‰>—Õ,ê0—~õî…CHa+SÓHÅ»ØA‡œ«H³´”Tv®SP|èCnW‰/ …½Á'©“gúÞåDŠªßlEª:lÈûàiZ&ž“ª¸OÛå87/Ù¡‚™ýn¥<ÒÉ)Õ6{õzuÖ숴º¦ƒHá£T\uLa‘²Þ]}¤5}¢–"­;n03-'Ts· i:¤#űÓi5¡j ¦ªˆ`‘2g KBÕh+:¦ÝA vŠS•!0Ò¡Êf¸GÚ”"!Å”ðH5ýŒúÂÊI¤Pž7R&TÔ¨i‘Â×¥zPs©,"E¼á€‚´þ :7ÕH‹5çAÞ¿º^Ñ·m(LýÉ>*&·nÉT‹D]ç‡GÚ :¤Y@f$>]äù7¿!HMwYÛå&R #©EÊ~äÏ_Ïçn|ÄþCZßAé‘6¨)ɧ‡ä ÎYÜ¿§H铯OnOw›ãýv÷Z1¹uS¢zqG ]În"ò¼-Hå)?©)Æówéõâ{rõ°ývña¿ý’T'·nLS iS¾ÅH½"LZHÓ¹–™‹%á"Aº&oÉr¿>#¿î¯Ö¤:¹ucš:H£,<ÒÆTšËVj%Ž÷ÍÃG V—²¹­)Íë¤:r“lÛRÈ;B ãy5Ë6o}¯âÌJoHb¥ÿ•¸aÅäÖMjGÚ6øÉ#mÌA+™ô"æñßoâÕÓ«K_й­¿]¼Øoï_ŸvA滄 [CÛ\E r,Ò®†ûÛo?¦-Þ§~f-^ò~ ‰Tãáà#m.n3í„fM–a=6§iƒÆBZ B+žØY¤ci$¼VÔ‹g[§\B a¦ÓBª£è.R€£1”ç§„§uj/Ò¶½µiºÏÊ[ïÝ‘œD ày#ÍîÃ*"9õÆa¤‡Ó8kv.H»Äú{¤MÒD måïe‚¸Œt°™EˆŸ"ÕrM!†iu{ƒH…V­„´û.ØŠT/ }`&‘Š×))ÎÆ 8t¨™šC*]yŠH{ÛHRÜ.y?ƒbIŸðHd iÉ» Hûì@Ñiä"Òž×Òr}ä/ýN#vL†&;*å"„6ôË??D:ÌLÍ -wÊ>·'Ç‘:(#H+·Y ¤=³ÏS´ i§Hœ¾2TÁ¿y¤ÃVTÈRÕ¬-é{o ®#rTøH•‘cCs/n鸉tˆ™â#U†wÍÝu+b¦èH•(Coæ*ÒfŠTS”#íÙèõH„Ük_%V´x#Ýq0’;‘vÙ×þÇ…k¥u´„û êð,½L€´¿™¢"­e•hÓÿ|ά‡_ë¥Øþö>0D¤ 5Þø<õéTº(ÜEÚÛLñ6¥, Mç?óH®-l‡…´q€~:"‘½ð©²:! <Ò¦íjL\Ä÷9þÌ#­ª'$¤-Ø xM‘þ©~åƒEÚ·iëe‰€”¯ß´EiD,EÚcPAŸ\à‘j\gVCT$n!©ý)Ûð ö âFªÕqÀwUÊ9çö1ùO”?ebÑÜFÚÏLa‘F:Q5#]WÖ>`¤½)ïÒQ”¿äâÜNnßÞ®nÎÂøäŠìnŸ,…Ÿj¶vi/3BÚÜÀ)Kȹ]Þ]¬Éõ*Œß‘o¯<Ò>G7i$̪­¿ËYZ”"¥Ž÷†„ñ2^ž‘PTj[9Ž´×&ýf¤ëºÚÒÖ¤rþqno~[Ñù·Ò5‰•H…`â>Ò‡×é’E¦¤éŠ:Þu³•Êã.\GÚ§IÕe“î.V­€Tv•s»ÖÕ¥üæ:ÒÎǧ 'U-Ò“ÛÕ«UŠ´¦Å[ĸð7בöèŸÐÚ'•bàDµ#÷oY'’üS ¿[…´×¾vÝH)0O¢8¡ÈâËÅ#þABZ„3¤oÎ#íj¦­HûDµg*\Í˜Ýæ%ÿpèH;ß¿iF:°i[—©°›ï—æû“5|ÝGÚÑL›‘ö‰ÇÔäwÓçEi"ÊŸi×`ˆ¤(&J(Oa'»ª§Bºàv3Ó¦‡Ÿá˜heb—p²¨òñ vŒÿ­CŠät‰ i ôy H;™i-R,§KJ~7{PŸ^h¶°S…´K8Q]‰ ™()ŸFæms*igÓø¥ƒ@ÚeËšÁ$*OtuÉ,¨~9¤]+sÁ$ZjdW;’š¶uXHõ7U–*Q9Ë i‡ÉX¹à•!t¼âª~;¤ú/«®ˆL4R4[u·””° é°¹otW«d‚LÌH³€•ƒAª¹q)6Q0#=<¤zGZAŠMTFÐé©ÞÖåA'*…¯u£Q> ÃCªÕB*>Q8¿{€Hµ L¾@,<‹¾~·z† RíåË~¼žze†o©R DR  *ùÝNÄŠe)â^O©†#s-÷5Råº"îRZW@j‚h߯‘šÛA"m=Þ©¦QšÃ8H¤­IHÍiù]z›Õ¬i!Rˆbn¹ÒÌ6o¤Ú9ÖB;P¤ÍiÓÚdÕ&¹÷Qi=³CEÚxÈ9RóFª{p ûo#R‚nJ$/#F*—¾æ­¢†ÕiSÙeåaÄHK€Z]ÐísK$Ò†ƒÎ2h/–x£§úJt4Ž­-ÔF¤@þ°¾ô¢¶rÅzYÕ¯VÆÓšg{xï#­¿’É"ÖÛ“ˆ´Ê§%OxíCFZ›g­ã߇!ªq| q½[¬D Õl©;n3H‹«ì@Ce =ÏA#­;pŽT§Pú#¥.´îþµbåëX¶!…»^TyÚӀД"jx4¢´jDz©² 9R-WÀYů y¥ø5”W+ÄÆªJ½âˆ{LÛrèHUÍ^ÞhÑÊ#Eº&{Õ¥§iJIizÒ²NîVØŒ½Ø†²[§Ê”!ÕË"Eú‚ÜkZifu5ƒÉa½¾£“=Ò*Sv·´Ò¯ÉOÈÉíi|ò‰\ž“Ýf¿]‘ðäJ\M˜üªW@²y7úË#­0å7»ôŠ$E.Ã\=lã—Ïç׋äÑâCüSb¥ÇïŠÕÄɯTÄMû*ÊN¤À·HÊݬÆIË>EúÝü/!Yî×ñòábMÞ’5ù:^%H—éÔ¹‘ˆJb[ˆg ””_ïy°RŠô¯É›ï×1Ùo·$Üo6·fH¤J•wähª‡+Ê 4š"]ÞlCrCr+Ý’…„4­K[›°‡ŒúN¦PQyºµD3‹—_'Hï×ñËgI]ú"©K_ÄË;©Î% ´œ` …4%šYé»Ó<ýðsÑâ=¦³!KŽW»Ç}¨<ÒTYµFSnšnޝ<ãLËÝBÉ…è~«X_³ßèÞ>{±)BTPÊ”!m*ÛÔÝŠÍ£\é!ìqqÿ¥áñEgûPbµKþ+¶ÒD ­a!RŒH¯Y–nÒjoÁà@I0¬¼_J…±Ë³©º;N$â‘ e—gón9Å­éškR(fÊhV¼õqy HŽˆ%ƒ9cR”óxU&lè%š-f>dÏKÉx¤EšQPê;›ù¼š9\2V"Åð¼ìÞ·Œqæó’^*ÀáÔŽŒ;^¸“ýÞ.RØQ‰Å ™nž›)W$™HKØS8¤<%‹‘Bõ‹Ò(æÝGƘ°)Pä«LT¸ajˆ)d›€¿ZŒ¢0X=*À›‰ã<Òo €tR‚ÃFZž6R ¤oØ‚¼âH»¿,F:üáåif¥T <$²ü@:ð ¤;/D5A:Sèb9ÒaÂbfU›”NôÇ\‚'†Úy4i¤Õq°Su)Š`§<1Ë‘êORÙ’9]—ðY.gL¦°.Ò ¤ì¶ =ÍøË\ÿú3}¥/|°™­[*è*Ó®¹ÕÅ~Â~V•ZŽ4»m¢¨'¶¥ X.“J `ŸÜTS ¶éï5R®íR2ãcæ!-ßK«”I9œi{EúÐiyšœõH#>ŠwÒjøµ¢L²±ùü©FÓ¨RÕÓéei:;[¤ªðkõèµbm¤:aßFÙÛÁ#Um©.”YYëp¤z#3i:ë,ÒÚÉŽÓY#Õ¼í„4«JA°BŽ7›+éÇý«ë•bJ i¢ŒH³9¬H–Ûã"'žL<ϦÆ!ë/Ÿó÷›>HkKE:ÿø¾øeÎ2Œ×Hu‚Õø*]æލ ^3HIÞQ/¥¥ñò!æ¹…ò¯ñ2þ²©^ô!_뀑¦`hi¾ á’Έ{rEÎÏÎYì/Ïçwçï ]’|$GW )ýXlYV#Ò Ï-¤©Åoÿëül¿½;?;?‹Ÿ¯’ÅGŸÈч5ý”§åÕ 'åçM¤é.WÆ<k¤'äk6#îñ»ä+]ºÿô°çÉ·dIòq÷øù<äK…-˪+Éñ.÷?ÒÔâŸâÓ“ý6yI¬ô?/âåîå³ÿxùlM“§åôãƒy£Ï#M,7ñò6#î’þ1¤k²Þ³ÙqãåšÎÇy÷:äKù–uS«6)Hs{IS‹Wñ)¡H©ã]~ /¿¯ö,§Ò´¼š³ æ{ÅÑ…'—O/³y¹™H£üµu4†•î¾Ùòqé_âxß$µæúáÇ£ i¸Ù\ðºt-lYQM¹ÈVš”v’ZBðçŸöÛä…fñ.\†d¿Yòœ”s¸vÛ$œ?™?ÉæåfK éÝÇ|F\ú—4¾¤ðCÊ­”ì—‘ ¹ÑÔ¤$q¼É Íbw”[iò[©¦$+eé¼Ül‰i¿»…t±XÛŸ—þ=Ì.b¤O3¤»ÇÏ’ºô´ imgìÈú„$µ$á­KW ib y]úl~7i@D¤é¼ÜlÉ!Ýl>‘¯H6#î7iWÃúþöÛ‹)mކIíš#U—@R¡Ûž¡JRKêÌ´ÅûGR““§¼Åû~Íë”æ$"MçåfKªH ¿‹Û:2´—j,ç:ÐýÒ‰] )R>/·°\T¶»i¢©¯,K)—ˆ4—[X.(ß[iÜɤۚåšÌ´On}ž¸UBÖ,vÖ#%ÔñªËº©hzZi”_—hJ©89¿GšXi .ç›âx»@-¡ÛÕ,/v5Bš1³HãQÞFBšO¯!ÍÁHü䑲-•®·Áƒ oéAÕDZì¼Gšo©,áúÂhñê@ÕCIAÚ+Xš‰ãQ¹Þz3… ÍnwÀzHñ#rëÈ ÒÁR ÷B>ᩚ¡j!!z¤‚T#I°‹‡© ªV´½ìw=ÒB#™)GTþâ‘Êó:&Ë®›ó-©GZR¤š=Åðœèœ¯ Ð#UHucœ©¾ó•×d4Ñë ÛªH¦«ÓÎ7¨~óHËR5pç·UJi¤øæ‘–¥j M•i¤0R´ª™²}a¸ÙK´˜Êô"áSö!Uz^óM$KôÕBÙ‡4ª™ÌvrL#•‘z¤*©=¯ùfoÛj üê‘*Twa¾‰Ôx1S3ë!þNÚˆ´nñ˜ÖjvPzÇ“…Hë‹q ¦jC­,®aËJ¤µõÑLUgXe?Š©J óˆ÷ &¤ÊXÉê™%Žr–•H›žÉ1Sªb4l¤ø„&çˆä¢(j¡v,X­GªV}eJ5J…JU7–¸C©ZÍHÇcª–´;vÍN¤m]q£T¨5’O0T­æÊ”j:L•7ØPe'Òv×:N#©ªò~x¤jÕLš#¯3 ¦µHˆ²©– êpG–ÖómÀe)R­¢êH1Ç–"ÕlþŒ µã0`ré˜P»N¾&בŽU½‡iÚ/L¥µÍC­ëìðHëÔ ©y¨µWPi"½&¯´…9¨õy‰6¶i§i÷™m·š²ñHkÕ))njâ©åÑAi­¢þÏZѶOwµzw´^³! «F¢F<ÿ!"¥‚öÁzkóHë5ƒða]籯“¾Õ{¤õ  ž:Ä5êòÜ=S#&)S'.Â6]7òH‹”*ÒD”=7±W}6ê,k‘¢ÔKâs.k~’­™,´NŠGÜ•GÚ ŠxxÚcÔœ<Ò&Ñ»W£G‹u•GÚ¤ÈÄ,¨Ð2tz¤æä‘6‰‚Øæy=Ò&ÙˆÔ”W±©ež×#mÀ³ËLMí­GjLi£8R»<¯GÚ¨4ôÙ&35vþÙÔ&3õH›‰ýû‚ÆIDATå‘ÖËn¤6y^c»j9R‹ÌÔ#mV>2l:S§´ÈÜÉg;Rk\¯GÚ¢©-®×#m‘0$××kΛØÔ×ë‘¶¨eò̇_ûi…·Ãh)WäR…ë}虬G:žäÉ*Q¶ÓCj°vpieº Ô>•–&¥™R“—ZŽ Í+T^v©}RL,Ä+Tn®“CjòBˤiˆrVE’Íf3¯n²ßæß<Òñ¤žþk–ÍnTEzOÖ‹…¸à#3ƒÔh¯¥­HÕÝ€ÙÀA•ã]+¿z¤SQí3&8SŽt·9O.Ÿ^’ËóyȾ ár·™Ç'WŸoW'· ÁðäjŸüœn…ÔhŸ¥“HgbŸ¿\¼çOæOȧ‡-GzB¾&âãwÉ×Ë»‹éñ»}òsºµG:žZò_×ämHèßš¬Yóh/H¾|/ãe‚”®.ãÅ:wÊHHÍÞtiÖ.&õÃÕч59â3ðž†$^†éd¼ÅD¼éت›©!šå¡ƒ/CuÿòÙz÷øù|M®è¼¼t’9>o1/4ÒQo%8…”ÐÉ[ٟ➣ú¼Ú¯ãåÝë5Yî×9Òä‡}>/4ÒQï$ØŠ´Þféƒ((S†*^’u¸Ù\¬É›ïs¤t2Þý é¸÷ûÜCšÏœ0-¬”ìét­tÆÏ!¥“ñ¢!÷vŸ‹H ·Ò„©P—>KêÒ›ûu¼:bHoî.N=ÒÉ("šHÓ&ðÑû¤Åû)Á÷ôÃÏ÷·O¤l2Þ5Ò‘ã,lEÚb ‘àx5‹tä0 g‘1E:v0”µHµ n¤cÇBy¤]ÖÓÑØFj/R-ciÍm>ƒòH»¬§¡Ñ‰ZŒTÇÁ™G:ºÛõH»­×®ñÔb¤:¥g<4{Fê8RãšÂ>YŒt QÒ$vÉ#…ÔŒÔJ¤YÉM¢EMã$óHá4~/“ÍH§a…¦AÔ#…ÓTvÇf¤S1‹TSÙ+‘F¥÷Ih2;c5ÒÉÕdöÅn¤“±Œ¦ÙLË#…ÑtöÄr¤Óñv“ÙK‘8㘎۵éD¬c*g“íH§Q˜Ó8±RÙŽt¥9%·ëÒ ˜évA”HÅBßLÇßIé`MËíº€tl·7vþÙtl3ÝK”e'RÝùx yøµ]«¦Ú45·ëÒF;yÐHlÒɹ]k‘Fµ_JÂF:9·ëÒ¦rEF:=·k-R™bCh.Ò º]G60EE:‘(Ï’lEZ²ÚÂÅD:M¢® ­-ÞZ¤Å4Ÿ}‘N”¨µH«s,«WS#ýt¢DÝAZÓøT#] bc—ÉZ¤U«œÉ…Ì¿q¤'·§wçgÉÛj·™“›ÿ'MÆÛéd‰º„´•áH¯¶ñé „÷Ñâ¹^Q+Í'ãí…tºDíEª®Ê„’ž1¦ér¿ŽO „wM¾¦~Š“ñöA:É ÒTŽ!&CŸ1¦é›ï×?ÿDÞüöËfsKÖi]ÚéT»Lö"­1”|2t6ÕgŠ4±ËrB'áÝ’Åp¤“&êR’ÁäÓ·¦HéD¼'tÞG‹ éé¤Ó&j1Ò–ëÂlêlöå釟óïq‚ò•8og¤Ó&ê.RÉJ›Õé„»L#miuòI–á‘N¨ÍH[=/ýéä‰Z´ÙLÅÞ£fuA:}¢V#Õi§#µ€¨GJº µ¨ÝH5ºå@‘ZAÔn¤f ‰Ô¢–#m7SÀÐlKˆZŽÔdGŽ-DmGjî&—5DmGjÌLí!j=RCfjQ둚1S›ˆÚÔ„™ZEÔ#Õ]DíGŠïy-#êRl3µ¨H‘ÍÔ:¢. E5Sûˆº€³Ø-$êR<×k#Q7"ÖFVu)Nu:ñìZ¹ÃCÚJÔ¤ðÕéÌV¢Î …v½vV£L® f`1QwBº^K›º©ÜA ל±¶aÄåR°êÔr¢.!ªm'êRêÔÞ‹—LN!00«F\N!ÎÔ¢Ž!ÊÔ¢®!ÆÔ ¢Î!ÀÔî†BÎ!íÍÔþ¦n*÷öcꊉ'‘öaꌉ7‘v79wL”8Š´##‡œ.•£H»xR—œ.•«Hµ+Ô™[&JFªçNÝê2Òv¹Ôm¤ÍÎ7r­Íä4Òl3WºŽ”9×*»™›7•ëHI…ªÛ<ÉA %ŒêLšìÞeÒƒ’Gêœ OmniEvents: defaults.h File Reference

defaults.h File Reference

This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Defines

#define PULL_RETRY_PERIOD_MS   1000
 1 second
#define MAX_QUEUE_LENGTH   1023
#define MAX_NUM_PROXIES   1024
 Only limits number of ProxyPullSuppliers.
#define CYCLE_PERIOD_NS   100000000
 Delay between cycles. (0.1 second).
#define OMNIEVENTS_LOG_DEFAULT_LOCATION   "/var/lib/omniEvents"
 Define OMNIEVENTS_LOG_DEFAULT_LOCATION to specify the default location where the omniEvents server executable places its persistency log file.
#define OMNIEVENTS_LOGDIR_ENV_VAR   "OMNIEVENTS_LOGDIR"
 Define OMNIEVENTS_LOGDIR_ENV_VAR to specify the environment variable that users may set to override the OMNIEVENTS_LOG_DEFAULT_LOCATION.
#define OMNIEVENTS_LOG_CHECKPOINT_PERIOD   (15*60)
 Define OMNIEVENTS_LOG_CHECKPOINT_PERIOD to specify the number of seconds the omniEvents server executable should wait before persistency log check- points.


Define Documentation

#define CYCLE_PERIOD_NS   100000000
 

Delay between cycles. (0.1 second).

Definition at line 79 of file defaults.h.

Referenced by OmniEvents::EventChannel_i::cyclePeriod_ns().

#define MAX_NUM_PROXIES   1024
 

Only limits number of ProxyPullSuppliers.

Definition at line 78 of file defaults.h.

Referenced by OmniEvents::EventChannel_i::maxNumProxies().

#define MAX_QUEUE_LENGTH   1023
 

Definition at line 77 of file defaults.h.

Referenced by OmniEvents::EventChannel_i::maxQueueLength().

#define OMNIEVENTS_LOG_CHECKPOINT_PERIOD   (15*60)
 

Define OMNIEVENTS_LOG_CHECKPOINT_PERIOD to specify the number of seconds the omniEvents server executable should wait before persistency log check- points.

The default value is 900 (ie 15 minutes). You should adjust this value depending on how often operations involving state changes are performed. Operations of this type include creating event channels and connecting or disconnecting clients. Lowering the period reduces the maximum size of the logfile. Value is in seconds.

Definition at line 111 of file defaults.h.

Referenced by OmniEvents::omniEventsLog::checkpoint().

#define OMNIEVENTS_LOG_DEFAULT_LOCATION   "/var/lib/omniEvents"
 

Define OMNIEVENTS_LOG_DEFAULT_LOCATION to specify the default location where the omniEvents server executable places its persistency log file.

The default location is C: for Win32 and /var/lib/omniEvents for UNIX systems. The location can be overridden at runtime using the OMNIEVENTS_LOGDIR environment variable. Value must be an absolute pathname.

Definition at line 93 of file defaults.h.

Referenced by OmniEvents::omniEventsLog::initializeFileNames(), and OmniEvents::usage().

#define OMNIEVENTS_LOGDIR_ENV_VAR   "OMNIEVENTS_LOGDIR"
 

Define OMNIEVENTS_LOGDIR_ENV_VAR to specify the environment variable that users may set to override the OMNIEVENTS_LOG_DEFAULT_LOCATION.

The default environment variable name is `OMNIEVENTS_LOGDIR'.

Definition at line 100 of file defaults.h.

Referenced by OmniEvents::omniEventsLog::incarnateFactory(), OmniEvents::omniEventsLog::initializeFileNames(), and OmniEvents::usage().

#define PULL_RETRY_PERIOD_MS   1000
 

1 second

Definition at line 76 of file defaults.h.

Referenced by OmniEvents::EventChannel_i::pullRetryPeriod_ms().


Generated on Fri Aug 26 20:56:14 2005 for OmniEvents by  doxygen 1.4.3-20050530
omniEvents-2_6_2/doc/doxygen/a00211.png0000644000076400001440000001014310240666427017670 0ustar alexusers00000000000000‰PNG  IHDRÔï !^„$PLTEþÿÿGGGo___ŸŸŸßßß???¿¿¿ÿÿÿ¦TùbtRNS@æØfíIDATxœíK{Û6†ûæx9^ú©óDZNÛŒ¢}òŒµL+O¨e.M•íL36—‰]WÚÕ2-‘;]h‰øsƒ oº@à´ñ9‘eŠ WG‡ |ü黪ðtdPƒÉ “A &ƒL5˜ j0Ô`2¨ÁdPƒÉ “A &ƒL5˜ j0Ô`2¨ÁdPƒÉ “A &ƒL5˜ j0Ô`2¨ÁdPƒÉ “A &ƒL5˜ j0Ô`2¨ÁdPƒÉ “A &ƒL5˜ j0Ô`2¨ÁdPƒÉ æÔQ¬cÉ êE€“%sIØu޶'’ƒÝÔó#^)®3ïeñ"ëŒ:BÌBJØÏ¹ê/»¦¨KívË)„¿ýµá­V´}5D=Wš vu(ïH~¦s±íê†ZM0I,c× µÖpÖ"‘öÖµÞ´¡Mm®êy“ÒÆ¶øÛ]Ô æŒDö•£n4g¢9ïŠÕ¢nf~Þo¨Tˆzþ8#þRêÆ'ŽDœ)¤Ô"q$â š*PךóúÜŠ·áK!ð¨k £–Y“+…@£–9Ñ *)Ô\)µìµ"@É¡æ kPÔõ-‹š'¬Q×I‡b—Í£²pÛ¨3»˜ÙÓÔºÃO»þdô£ÛŨ;wlƒÝ¬^ÖºQ7 I‡ G(„¨Ÿõ? Érì {{qú¶w·öü»åÝçp«}É6ØE]ÖšQ×tÁ)ßsК2EÁ`ùyà;¾G~0êA0 eìõU ¾¾ZQ×(I¼ÙŠjÇÃ9ù˶ƒa[®;þò.A²P“’ZQWž¤ÅF”¥w‹,ªm’@ 0E<¨ç¹ïYjÁ±? +–°—îì±\=e¨§ç½é*D½ÌCŽ+A OZͰ°­ˆ=Ä)µnÑÙÕo u0ÈEW».Ôp¤rdÌ©rÇ éB­´b±‡š{p„h¹ºÇ*…:7éA­<}ˆj—UiÔ™A µB"s đʠžÃ£Vó톆ÌT:Wg¶Xêò¤+ÌT uö¤0¤u¹]¢Ö}‡J¢&o c̈zÔò»Äª)³H ¹ÙÖ!äcQZŠtõ”£Žº‚´eï/Ò‚Z<}TO™j®¬¿„Z0}Ô3Q~OMD@¨H×m¢‘²^ jîôQYg.[ʾa ¨ùÒG²FJGʦ?QÔ–•^¤5éºeXGê&Œ0Ô+ò¸a§¶•£."=¯aÖˆt„TOˆPÓ§Ôù¤kŒ…ûUí‹HgfnØ"µ¨sHÖ6kDR{Ò7B=Y޵DuË:gXj£Ö“@“nf¤.I‡ŠPùÃÖ€:c ‹šÂuKõÕ¹µ­#`ÚŒx&R~u.B=Õ€z?,šÐHǰÂTäaÊ©B½Í­£©úÌ÷¢òÁzÒÑTm¨wÛœÕHÓ×OêÝnhM‰Nê°Í­k—¢õNH7 ´¶·Ô;=ÊTËIßÎ[=êínÎ! “¾ÀP?8a+($BÄåTÎÄØlEeæ’.¶_ÉÙxž?ä†÷m«äÁ»‰ê‚2ócºp„SÎ Ùg~ž&ê¿ò³G Ô9(Ÿ&ê‚<-:ïìüÓD]P¦4ê\Û|ƒú€dQó e7¨·$Õsa(®™½æÐœ,Èㆭv¦Æ2¨Ã½?ÛäÍèêàJÉ€•¨qÃ~÷’’C•¬29ÝÚ>/ð ¾þ×ÕCjççµ{V5k Ûä]ÿK{okE¨~õ¬Ø?…5ûúÇ$É–«øÕbÔ¹¶˜)Ô?ЙúÜN¡vK¡¦ía›xÈï­á¨BM¬Ø?… 5iZLrÛyEês×ýÓí.ÝÅàÌ=õ‡c×ûs1øµÜîÊ}8wðð³_6ãÓEo1 ¼ÓAM%PãÀf›Lðÿ…ÛCÓ›Èúyô MF½ÍÌN NJ¢ö= ׺à —_fØ4F2t^±Ü”Åìå µ}fÉ;ã–BMòïäâæly¸‹[‹ ^Ý®nƒIçú gñ7“—w7›ñYû¬Q¿üLPÓGÔGÇl“ÎýO褅îízô.ÑíÚ£Qœ”Gbžro#Ÿ”[fÚ¨"r^±Ü”×ýá µ}&ê¼+•;¨½Ñ½µÁYbA’ƒ÷g0Ã?ÞèöòÁ½ng8ÛŒñ c²Ðáuè#Ö_G Ûôßa×A/¨ÃÉ{YâUठNÊío)jbž2%.QF(jCÍœW¬7å7(µ}êã¼Û äÓw.êOÿÆ¨Çøo\\ñsÝA톨¥£º‹–׸GC¼ ^yë_[1j¤uÕn)}¡âŠêÈy… vHs’í³úÕ¹mÚÞ-þ3Šê!I ã0ªÝÙhã:-÷?ûQ-:z»~êãßË÷íÀ´ &æ)ü¨#’¡óJ*ª‹Pçï§;{«’« ê‡[ËvêI‡,ÃI¹Msu‚úVuòvŸÿþ¥}Òÿ@ÞÃÌì³uW)jbž‚ËäBMp1’Ój’«»E¨ FIíÂàA{ w~›¡fËpÌ{­î›4jo$‡:}³}EÄæ¿‡çh5{MßÝÐvT¢Ú­[òr N„Î+5é8E¨ Nb™óÚ'ùÚ›o±'>ó7ƒzKû$ŸõOòW@¼–†õ–öI.Üù+puÔ[’:³gPË”)…ºð ¼A}@2¨yý« ê-É .VòQÏö-x]'êÒ’˜N¢çS Ïý½ Ìüá…CnoëP—ÑëܮВq”¦ u]f ð»z(e z žº ̽h½%•Ñ{·£ãz úå jº®²ZyÞº:ÔóZ °›g­Š5ôéŽkÀz~,6Xk®÷­Ò¤¢ú‰¤~1zJXóuuUZ¯ë3Sæý¤?mÁÁW†R—TmÿZê;¥à‹XÅmˆI««c- ­Ôþð~µ"ñM<2ÓpkËÌ–D_NúñêHéÚÿÚ>ØÛ$FÍw ¼ëç‘->ÔoOß\£=ÔRƒë«@}œòêHä,ÚÿÛUÕ\Uïúyd‹õ ý×PÔ(5Sö¡ç;¨uÇ,@.l´Óù®x ™‹K\B[~Ô‘Ÿ‡?ýèvqiÑ“[\üÌ'âC}ƒÐšÞX[Äá&R È{ㆧDbÔËñò3±ê  d©GP“%5q IlAP‡ÎþÝònéáÒ^±'Ï{Á§ ôš­É‡Ú#ßÛÖÇó6‡›H*¸ q¼[´‡.±ê 3øcÔd AM\B[(Ïó‰lá{ä—ö1|²öÆþÆ!€zŠ[±§Ü@š†š4û{ YÔªÿl¢B–`Ô}â’xUHD5%ŒK»fOÁ½xrH "ÛrX\HÇ}Ì : êÿ@̪Ã!»ÅõI3¡æø#—)Ô!Ç0ª‘ßO¢z°¾j³5v‹NÕÍEÝï‚Ĭ:ˆƒÄ×þh€¦ jÞØ-œ«?,%P“ÊS¨qi¯Ø’«hf³5:{5Þ–ÃM¤@•¡Æ¹º½#Ĭ:ÐÐ>wß}Fgß²d5{‰{ í` Š:uÃPãÒâ'¤¬çᚇ05îp¸‰Hê‚dMÍ–Ùè€r8~_¼ UñùjaÕ µª²9ú7…«0Ô|ÊæxÙ+\…é £ ý$ª”t .Ø/ÊEµÈ,9ý—dÔÔä÷?¼$Ô(Ô¼3@!.ãŠK êüd]v·XŒ»ê(Q?Ô †Ü”õóÈrstéår#*-¨!fyi¸7=É«ïæÉEŸðP¦°4mƒ:õ †šä¥’vÌÚ¤٨‘ª/<Ä=×õ †’[ŒCÏc@]6Ô=×5¡Ÿ‘+Í Îßë± –„ y;_M¨+ñO† {ßäÇ„:™^Á!1?-Ò…ºBg!ܪ~¸¤ 5 ëj"›*7|8‡Ò†z^¹wç!ÜUa&zĨ‰0«JÚP£ãº¸¤ÖEúPÏ+¢ÚÉ “>ÔE—øŸœô¢6a’¾ˆA½#½¹Úd”ô¡3HÒ‰šÀæ& /­mW.½¨õ“qŒ¬©“4£Î^Zõ– êX5˜ j0Ô`‚A}î~Šìù€øÃ{ÛßÜi¡Å„üv¢?£_ɺõ–(jÿª…÷®zûê—éAÔ›¯t}öç*ZjPg‰N{}ìú€ÐÉÅQ_¾Ü_ß ÎE½±‘Of×.G7Ýd» s·™Ù7õ‰×Ærô8ƒÐÿÔä$è¢Ö•Ãì<,ºœøƒ$¾õ–(j:»âYÿCÐíPÔôô¯‚ö%þ“)ñÚz—ˆXnàÿÌäÛ¢½úxî0_‹¾FüA_ƒzK j]à0¥> Áà=þóE0 ®5™ÏCNì-AÖÞÒÛØ¾šMÐWˆ?H?öå0¨·%õGYëß>QL‹Wžïº3†'/dªüú×V„šZ‚,\w Ðjô=ƒú âÝâgÕkÄÈò}sŸ¡Æ»ÅgÔÝÆâ¨&– ›.z·Õu¦Xgï+îì‘\mw¨qå8ÁRÔoOig£>‹PKë¡—4W'¨—uŽ’C˜°B|@ˆ+µûC;<„qV³×ã5ñî°p´ÝÖ·4jêbPgȘÇ2¨ÁdPƒÉ “A &ƒL5˜ j0éFm†ÜÄÒÚ(–A &ƒL5˜ j0Ô`2¨ÁdPƒéÿÚ· gmÙÉIEND®B`‚omniEvents-2_6_2/doc/doxygen/a00092.html0000644000076400001440000002174610303671737020072 0ustar alexusers00000000000000 OmniEvents: eventc.cc File Reference

eventc.cc File Reference

#include "getopt.h"
#include <iostream.h>
#include "omniEvents.hh"
#include "naming.h"

Include dependency graph for eventc.cc:

Go to the source code of this file.

Functions

static void usage (int argc, char **argv)
static void appendCriterion (CosLifeCycle::Criteria &, const char *, const char *)
static void appendCriterionStr (CosLifeCycle::Criteria &, const char *, const char *)
int main (int argc, char **argv)
 The main process entry point.


Function Documentation

static void appendCriterion CosLifeCycle::Criteria &  ,
const char *  ,
const char * 
[static]
 

Definition at line 449 of file eventc.cc.

Referenced by main().

static void appendCriterionStr CosLifeCycle::Criteria &  ,
const char *  ,
const char * 
[static]
 

Definition at line 462 of file eventc.cc.

Referenced by main().

int main int  argc,
char **  argv
 

The main process entry point.

Also serves as the 'ServiceMain' entry point on Windows.

Definition at line 195 of file eventc.cc.

References appendCriterion(), appendCriterionStr(), getopt(), optarg, optind, orb, str2name(), and OmniEvents::usage().

static void usage int  argc,
char **  argv
[static]
 

Definition at line 424 of file eventc.cc.


Generated on Fri Aug 26 20:56:14 2005 for OmniEvents by  doxygen 1.4.3-20050530
omniEvents-2_6_2/doc/doxygen/a00212.png0000644000076400001440000000335710240666430017674 0ustar alexusers00000000000000‰PNG  IHDRj‡Í[8!PLTEþÿÿo___ŸŸŸßßß???¿¿¿ÿÿÿ¤ÌatRNS@æØf|IDATxœíœÏ“šHÇó/pܧbªä¸ÙMãV%µrÌÆÉÀ1•Ù‰sMÕì Çĉ#·mn¢(ýþÊ}¯ñ·¢ÎJÃRË“B|Í4›Çk¦û+Ï ˆö,o€e%uvVRgg%uv– 5KŲ¦öÓ¨„/7Kêd+©ÉJêd+2uØ|´÷츴öâ]w|Ïœ¨/Þ~èïÙ)úF똌íòœ¨ÏÄ’hw5Z{‰å9Q·Pí‚Û1@Ø&ð†Ûù…éPíA¿ g·Zž©¹u7ô¹ÖÃ? ˜ŠK®Ô´.ÏîÔwäuoÔùAåÂÀˆÿ¨ãËsÏ4jF ©Õ;Üý]£…KîÔÜš:†^yDí‡øâÖèºSäGvè™X`’“[tzþÂ%WjŒÓQßü°Ô&cøMÆ\]§öV=¿«ñå¼­mŠsÖÖZD:|ÚÑÖ_qÉ•ú¢ò¡OqMÔý‘ÃíjLTȇa\q½¤a\Æ%WjÑË`!jÌ!ãA-¦Ž}x&¸^ý¾JÍ­ÿ@9ÑJ꣬¤&Ë„ZyžF-ÙR+JÛZâEˆBÐE£Vâ·bâ(’ê•I=”-“z˜J¾Ûiò¨%BË£– -Z*´,j¹Ð’¨%CË¡– -…Z:´jéÐ2¨¥õˆKKŸz˜zÛ–:µü †”©ŸCA éRÓ5¤J=Dêl Ó¤V%#è© :“ †©‡JÛZ)"u Uˆ¤D=@½÷.UõÀž6÷€¹­£xWûœ5êáÞtíÏd¬¹ÏÙ˜[;oêC’©ïoMöP{,©Y}õp'sxƪó>l5êö)ԯĒh×ê 5Û¦ègÔëN/P!PO¡>gìé#XuV ›óëT™>f“söÊÇ­‘S Œ`Àýʘ¨ÅZPuè ê‰z$ q;F4¸µ!´L­Ú@'ÉBfu¼î5Ū{Û®9 º&Q»ã.wµû:Fü{·Ö»mGN]­«H]»&j±&êáÁÛõÈ]“$„d"žÀ1Õ;èá'ô,ä¬Ñ"êmÈj¿óhF}ÿðåwºwöÈ»Ük" rúÜG¬ÑþVÚóù‘lo¢“$„¦ÓgÔ·¬0þŒ›¼&êmÈv„\9˜ˆúêcsAí`µsñ”!â5›Q?¥­á… ¦„à+²azm·n>Í©˜£ˆ:A²A—â›y[7)BœY[³A'b^•}Ýnëõáÿe–Ô¯†XâÅW£ îâ­}hÄm½S²A}¯µ&×D=éš~S©]|Àªˆë%uwš¸Ê|oC, ÁWøMd>¤/¨ÏŸC?Q²A-zÌ!D9¤ª1uìÃ3áWõ÷«Ô~gú˜¾÷Uæ2‘¦÷2ܪ·¾Ì©1s>ä¸rŠù>¤¤.©Kê’º@Ô'Û¡›k1ŠsºrÄl>dV0ꂎC1©¸ S³ÿû¼LAçÀ„¦¬póÛV¼yta…Ô,T’¶µ–ôÞ¦TÆ­˜äKR–âSnlKS×JÅ–§d–yI–ªñM+¤BŠùk4å§“‡Z6Í—OÎï{¶j,©“Ž‘~%uÒ1Ò¯±¤N:pÆ*k^ƺÖlSèhúî)5fCÝøøiÍë5nÔÙ&Q ‘ÈSj̆ÚÚÛxK‘ÈSjÌŒšßÚS5x¨¡GÔ4¡;ê´I‘H„æqÝŽ.üFñSDH)BO¡¢j7{êðO~/Ÿƒ·÷Sg|íÁ¹˜òçºFÚ1¥B ¢k‚šž"BJx´I)2¾¼0²¦fì’Û·áƒíHgìÑŠ©…6DPc©˜H×APÓÓðókè ¥HdOí¬©-ÑÞ>rÔ…<„ôD=ýrEo$¹ô¥‡®uÈØ`&áÖjR‹¶þaÀío3jÓš‚FÔB$2kkt…þì)"ø× Ú· _±­õ|¨1r'¿ö·5·«·µ‰P\S„Øôƒõù„Rd|ynäC©àh8‚z<¨‰B%ÔËP¢@jtA}ö‘Ø'”"9äu Œ“kÌúâèn0±Æì©§½Ók,ïù’Ž‘~%uÒ1Ò¯±¤Þe©âd2Š#ÇJê쬤ÎÎþuIŽøÖÌ,<IEND®B`‚omniEvents-2_6_2/doc/doxygen/a00093.html0000644000076400001440000000605710303671737020071 0ustar alexusers00000000000000 OmniEvents: EventChannel.cc File Reference

EventChannel.cc File Reference

#include "EventChannel.h"
#include "ConsumerAdmin.h"
#include "SupplierAdmin.h"
#include "omniEventsLog.h"
#include "Orb.h"
#include <list>

Include dependency graph for EventChannel.cc:

Go to the source code of this file.

Namespaces

namespace  OmniEvents


Generated on Fri Aug 26 20:56:14 2005 for OmniEvents by  doxygen 1.4.3-20050530
omniEvents-2_6_2/doc/doxygen/a00213.png0000644000076400001440000000246010240666430017667 0ustar alexusers00000000000000‰PNG  IHDR$‡M(9+$PLTEþÿÿÃÃÃo___???¿¿¿ßßߟŸŸÿÿÿÙ ©"tRNS@æØfºIDATxœíÛËoÛ6ðþ-ºæØ®Üc»¤¯ëVÇÇej[Ô°t-ŠÚ:;H¤ÓàÌzÝdX~ÿÜHÑJ,ëa=H‹hô(\•´~ýDZ¦>éϺd£'U‰žT%zR•`JBNóàEbÒµ'UéÚ“ªt}*$óH»À-ì ‘@.ì ]‘Š»ÒàÆ õ[Ø8r`éß +°ô81 ¿ ,ÃnñŠü’ñÅDò<ŸÞëpº›‹/òjë&$ü6p_ÎT€ëé1“ù“¢q` ¨&| \òBêÖ0éÁ$$ü6pg·øoKx·cþ$¤‚¹}3˜:ŽMI ža‡$Ÿ$ÍŒïuåE"YBc¤º0ÍÉ’²ËÒ9,}ÀYÒø“â±4ž¨Ï§ç”DÆÒŽ„ÆJz«ŒC<–ÎqãŒ%Üš¾}màùDIdVíH¾½ˆIëah õd3®u×'MºÂ¿f³'’œ®?y–$©y_.$ +Kžb8O:;øÜºÁšäí>W˜¥e"b H[R‹™Ÿ­IÌE­IìEmID-IûY"` ó8Kó¤*—7–.eýÇÝ”DÆ! öI1ªd,âðÈYQÒn,‘ €ÆsÐp·IU.3ã>GëàoÅ‚%‘GHQšTüí]RˆÃóË¢¤½ 3Žl2ãÌ’W%2–‰A<]Ry!®RèI=‰=©j­u9,-«†'Þ5/Sˆx}IÄ«p…#œ]4º|*X–pšÎ¸^önXìR|\¬«`AC¬² ~‡®1‰ßpj^µäfjQÛõÄ+7‹X”ç4ÆÛ‘¸Œ§–÷œð0µ½3‡Ãÿo©ñÆ3oÏ+PÇHÙdØ‘r+;<Þ‚Ù=ºT÷¤ JÒJ R % io'‰DŒJïPÉivJRŒJïÐÏitZR¥ÓÌ©It‡ÊÜšX0·5…VæöÐéŠ$/䬷®qenÿ‘¸®HñK L…VSö‰ë”ôûë„´ÿH\§¤ÿà1KÄuKò))ýH\§¤ÉÍ»˜”~$®#R“=©J‹žT¥EOªÒâI‘º^Z²ŒžT%zR•ø™äÚÒë_ŠIEND®B`‚omniEvents-2_6_2/doc/doxygen/a00094.html0000644000076400001440000001035510303671737020066 0ustar alexusers00000000000000 OmniEvents: EventChannel.h File Reference

EventChannel.h File Reference

#include <iostream.h>
#include "Servant.h"
#include "PersistNode.h"
#include "omniEvents.hh"
#include "Mapper.h"
#include "defaults.h"
#include <set>
#include <assert.h>

Include dependency graph for EventChannel.h:

This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Namespaces

namespace  OmniEvents

Classes

class  OmniEvents::EventChannel_i
 Servant for CosEventChannelAdmin::EventChannel objects, also inherits from omni_thread. More...
class  OmniEvents::EventChannelStore
 Container for Event Channels. More...


Generated on Fri Aug 26 20:56:14 2005 for OmniEvents by  doxygen 1.4.3-20050530
omniEvents-2_6_2/doc/doxygen/a00214.png0000644000076400001440000000562210240666430017673 0ustar alexusers00000000000000‰PNG  IHDR*wà5!PLTEþÿÿo___???¿¿¿ßßߟŸŸÿÿÿÆ\²štRNS@æØf IDATxœíMsÚHÇç+¨j/«cæ¥ “8;öqg²e÷5scR¡"]·¦ÆæºNl|´AFº‰úS®úE¢%ºA nõSAÿ¤Œ@ úÕÓÝ=Ò¢~° UGU_U}uTõeœ* k*j•ªnÃŽª£:@U}åT|µW,uT ©z_ƒÕøÏÃAò2þ3áÞ~2ª›©5ªå»OA:¸Æ¯†_“éjºŠæï> žˆwvmj’ Ážàÿ&ù—ú‹Ç€ôªç§¾-ªlËÁâMo†3Fåá$bT؉UŠR?ÂÃj¬,RѼB}ÿÕðœQ‘¼"T#TN&ºÐ»–³óðŒQ‘}PmS9Lÿ¬Û¾ª˜QûdTྠ” ’ Ü/*`T±Ó£,*‡þ‡FåÒÿÀF©q£w›¢r½ÛU³PU³4DÕ0T†¨†Ê UÓP™¡j*#TCuBT;ÐUóP™ j*TBu2T:ðT¨ttà©PéèÀ¡’wà¾Q—ªHúj¡­‘¬n*yvT)Ž •D0©G«2•WzÀ@¨–ì *ïæ¥ÿ‚of#¯j ¦Rý``TƒÛÁ-ž."W¬A«TôŸŸ®Xƒö©~{]Pá–¨¶ÒŠ[Lî†j‚ÁP ±š,ÕÊ"·˜ªþ×_)Uê[¦rí~ãl'{Ì’ •Ã-^HT1ñr¨™‰Šd;(À¡Ši”Xþá÷G0T%B0T¥C—ÕQj,]H*‰LS>¯Ÿüá îÏæþϸŽVáܧáy £q¶8›{Óë0kqKÖµB5½º[GýËð¯‡Ï³åÓò)}¹ºë¯žÓœ*[œ¥~‡áŸ§Wßú­P³õ,|¯ÃŸf)ùŸ½5ëUB•-ÎÒo³gŸÂ7ÁÅóE+TÑ8\?ÿ>zÈCŒê1ÛçªTÓ”¥_Ö¸$±Š.¢q>HbõÈcõžÆêu«^{yu1ÿõðžQ‘¼âTÑňQýûñâ)Ë«÷Yãvò*}\O“?¼lcTd?ãTÓäŒR-¯Ÿ¼hÜæ>x¤:*A—Ùú>8*˜±Ú# ¿÷Œ&,QQÅzÁôå•jHXwàµMÕ@bˆÊ‹…)ÈýZˆOôèÙ3aú#>húC/•ìd+³˜ñÙ¡Še3}$ûùÎi‰Ê•ϵLJMAj¦ÂŽÂ—ˆš®ÕMµ;XÜŠ›Èß»1uS©‚%f;µà$î A*E°ø„é†Jâ¤RfÖ†j|w3CÔìMñj|Ï« …²AýTªÌÚP¥þ ©›JßÎù2H׬šP,4Aµ#X9¦î`ê¯.ì YÕ—P6¨Ÿj‡Á[Pýö?D//Æ‘ŠÂœ ¤Ú,N…hú)NHÄZ¡ÂÊ ª £šÿBŒÂ>£Z¦R%³¡ÊöAêöžðrö᯼4L¥ª÷ &¨vt!ª÷F¨Ôç z`„J}®!ª÷f¨§õÙ¥Â0©U¢zï7C¥L,Tïýƨä]he”ZHãÉÑz©à­îÂ#¤— Þùí”\-€¾ë—i§‚Wù“ fíRQ¨×\Ú©ÀUê±ÁÒZÃKÿB»f¦[zh"TÀ®[œµÖø“´V¬ç ûФÊbRź"@ÕýÚn `ä Dà®°Á$z‹CF]F©X'²ž\H‹ÚZoŽŠF‹9V©ª{^FÉÌ%PTó¼`Qå—K±Kµu8àfH*·´Õty¬®0¼Z¦â…&ÿÈŸ‡0£Z‚ *^O¶KUÚ*­œÏú¤_Æg‚9h“ŠÖ~^ªçákÁ´K•õàñ½$ÀW‚9høx¥øYŶJëƒ|ôÎ*©,Å ­,òêÚ¢Rü-öÁ¿'óÙm¾ ¨Ô:I*ÅØ¦£ÚT*ybuTÛRù©@©lŽRÕÞó¡ÒMÎLΛ€LÍ1LÎÇ|ï3˜TÐÜ%Ð÷„Ió’@ï ˉ+h@9q›5 –*Y‰Î!24ßȉ;®Y°´RÁ¼›yéβݑW)@¢k¹ç}fG©ñÖ®e%™ ¸–ñÖS®euÇs0×rëpà@p-·¨v»–-y^ÛÆ³Äµ´OUu-AQñã|oŠ'w“»ôfJ®oØš?¨úNf[%¥ƒÏè¥g×øÇáykþ ê;™»Kþêr‚'¤ŒÐoÓÜMEJÉ%N3ªa›þàžXáÄçT~›þ *±ò¼b÷$T?¶èî¦Êï=H‹ÃöüÁ=TJ&D*Dw C¥’vaG%—¬ íŽRUTK;<Ç„&<‡ &8‡ &8w‰ &4w‰ ˜»ÄÌ]â‚IÌóÊËó*Êó*Ô4Xf¨ ÕÄ ‚äÄm“ ’?(?(ª¬CÆ]©*ÁBê–’1¬1ªJÁ R7l•ªŒ…ÔíÚ¥*Ž…ÔÍZ¦b—ˆÝ{Ø–©Ø…ž˜‹ƒÔZ§ÂŽ#¹zíæ6zTíS1ÛËÝPÑkŒJ-lPU®©+¹Æ¨­Xå׉åw üODî9Ø»lS9”Šß0‰žÑòÝ'ûT.£¢×M¢k”X¤âBtûü„„*K0(Tì„ÀbÅï@H©ìæ•HÅï@H©ìîƒ"•¨•Ÿâ!QÍß}µª|^IŪ‡oUUÿ¡PÅ«?P­ªUç¬Z½yUUü‚Šäg–U­ŒB• /ð T å¨Vƪð*¶¯2ŒcT9ÙQÙ÷±Kúl ˆä=4™½aAÚÁ9¤öºrÖ·*ã€* ˆ © Mðp‰–°–zêTÄÁWC<„žœ6]u.OåuÆ1Gmö8½§¡ºbÙ£Í\<«äŠïGÎFíg•qHÕ˜Ä[ó ñ`akdàíàR´º[•âàÛD®ãÕƒÕ<å©|“Ɣ͜˜½£BÜ™ãX¯ªRÉ!“¾š9ÜÑ*£(‰s ˜ÈdÓÆ :‚$«š¨äGS ¾]ߎá:O%ïÏ¯í©¼D«frÏíª<‘ÎÊÔÊ—}õùƒå‰JRð® èöóóûJÕŠ›ÜlšS«YZ«›¬ê`·«Z-äÝ!"ûµŠÒZý´’ZÙcøRØW¦åµª|þf¶IÎJ€IEND®B`‚omniEvents-2_6_2/doc/doxygen/a00095.html0000644000076400001440000001051710303671737020067 0ustar alexusers00000000000000 OmniEvents: EventChannelFactory.cc File Reference

EventChannelFactory.cc File Reference

#include "EventChannelFactory.h"
#include "Orb.h"
#include "EventChannel.h"
#include "PersistNode.h"
#include <memory>

Include dependency graph for EventChannelFactory.cc:

Go to the source code of this file.

Namespaces

namespace  OmniEvents

Defines

#define STR_MATCH(s1, s2)   (0==::strcmp((s1),(s2)))


Define Documentation

#define STR_MATCH s1,
s2   )     (0==::strcmp((s1),(s2)))
 

Definition at line 39 of file EventChannelFactory.cc.

Referenced by OmniEvents::EventChannelFactory_i::create_channel(), and OmniEvents::FilterByRepositoryId::keep().


Generated on Fri Aug 26 20:56:14 2005 for OmniEvents by  doxygen 1.4.3-20050530
omniEvents-2_6_2/doc/doxygen/a00216.png0000644000076400001440000001000010240666431017660 0ustar alexusers00000000000000‰PNG  IHDRäw†r%''PLTEþÿÿÃÃÃo;;;___???¿¿¿ßßߟŸŸÿÿÿ#ÉnátRNS@æØf‡IDATxœíMs£ÈÇó=rÓ5ý1f3®’YÛÏ1³»±û˜Ùݬu\תŽ;I­¬ëÚK—¤d NŠ,#Ñ*ý Þ<¨iøÏ–„ iøíÓÝF­? Ó}Õ«En‚Zä&¨En‚‚ì˜eeªnùMv‘C!g-˜9û‘YѹµÈñj‘cÔ"§=(²½YÛ,í‹l[‘k¢j!“^dÅJ#GW, r÷ÎX¾…Ù³§£›CÒéˆÆI<»÷Aþ«=µÿc9t_Z1­õ˜­ G¸õWxXä׳kÃé]’7ý;ûyõ¼²g׽ɒRjÇ—nÁ}ÿ±š¬Î,çø’UL¾êŸ²ïáÀ_aõÈóN§C\ä5¶ ›hºA>Ûûçè˱ÁÚ¤¦;º(¿òÅâ§Å´ç­˜VsÁVôœ!ñWxäŽÀ&ô,Œå×ݾiβF\Lò ¯?}úôCÖhÅtèÖØ ¼|wâ¯ð [ÿ‰Ÿ" †ƒÝ"ýp”s!Ó˜þdû£ÌVÐmѶ/ã+ýMÿT ³¾ÌÎu˜™öÜ GþÅíËlqð`uHdcäØ_Œ×ÙÇ1[2±²‘™ŽÏSŽ¬ÓŠÙˆÍV:b;úáç5è‚sŽøøEšƒÌˆ)2[l2'fm›4ù–›Üñhò<ð© È¢#oÔdüXæÔ=»¸‘pê~ž^$_½ÞåÜ^ªAU¼ý^¶‡ª@† ²÷-eϪ@F`5Ïs¹ d¸ {³,û©dVóí߬kŽŒHŽ W€ 8xí\ãd<2‚ªxNòýÿG ržs## zsƒ#ƒ]k¢Ü»B##˜j C#¹q=‘ C##ˆJ‹×¹ 102D».J\?äß#B‚EF¥×˜ãkDXõBž—@ ‹\v».ܹªAÎ<‹›¨ÿ¢Ø#e³dW€¼9ÅÌsõ‰J¨%Óì½[¨E.UÛ®Ü"çT‹ìW“Ý¿[² £ÍRŠ5WÈ3S{†¥ÐêdqºEÖÂ%‚6]"²g¦Þ™3o‘_Ã%¤Fö ë©Èlú>¡a9Ö€í7S/fWzÀLm»E;‚æe¨ µ?²*éŽ/=Û õ‡ÍؤRäx¶ÏLM>öÏõ€™Úv‹$!w8ÍëñÍñgÐòtÇÕxuzö©6cPdߗжÏL­ßò>3µmxýÁ³6G‰#ߎßjÌÊv4^x‰Ãfìj‘ã Ø>35Åuú35툯–ðA|Q&÷÷÷·™íøV¨AÏ*©<ÊÑlŸ™Ú‹òÖLÙ£¡A dºãç_×x9<,r¬›øÌÔºÛ—=35¦"£ Í íÌ¢aÓ[zÀ^ØŒM*EŽ5`¿™z1»Ñ}fj~Ï@2âo‚FcC6«’í¸³úÃflŠŒ¶‹M¹ÆFÛÅ9¨KÓ4{Y*T9³Zd¿ZäÄB-r™BÛÅ2~d¨r§Ó©ûÍ æqFª”Ÿ¤‘7×›9üñ’ûg898^RÿØê"çñÅ'IæŸÔr._|r½EkƒFž—Ž\x«¤a—]u± Á‘sÝ ¦B5VŒÊ¯¼3<ò¹382*é;¬üµ‚Ø`nÝÜÌ C)/342«?7302`I^æZ#ó6´÷!€‘Xõâ(Ç÷Œz#3f‰nÙÎ{³ÚžGÙÿ¾îÈœíµ,2«}£ý§ Ô@Þë8 È‰í:m 7ãQܤRLê¦!§ä Éø‡g™ÁÊ‚OÝÏSÚu9ÈüH›¶BÈL8C™¹|ÍSþ*·Èa©¬ÞH>ä/vP £ÄíAd×F] Ùób¯õÈ2’!»*†¼ÙW,#²6˜^MÉ`6Ô©±ó5ìî„YG·Î^˜=æþGà‚GNù%{7½ò¼´¸ÚožÎ…Ì\¡ÎpàèÎ ³}3÷·8×áÝŸl2ÿ§Û†FB©±s!3ï¯3¤ ÛÁ„Ù¾i}â\‡Eö.Å }øË™Bfïå»fµMs¶üº+²/ÊO¤$då%a [§­¨ÏÜß!ûöÓ«@^Eæ} ä7ýSæþ–yîÝ áC¾º{'œãzAdwÄ~y¢µ,Ìcæþ®E­e]Ø7|Å«–œ(bŸ¥CW3ÝUb°n²7u!Þ€6ò¨¼t‘òÚSÙߎ£ÜiŠ#£ˆíåLÝ{’bê¾¹(ª@–‹røò$#®¹‚ߘ÷<2J(s#Kd8dïj A ·ào2 AÕŸ_ÀÈYü5FPÕ2ò½Ê%XdÛ502‚ª½ˆ ÅÃï€*/&0dö‚€*/¦¹4UäÓÍ#(dDd 2$²¤A†BæÏg…©º° ‰´í ™]a£¤éY10Ì™!£´vžû—s&»‚Af]%–P9uðR¹Ó¨ƒì‡ëønÛ‘2È› §æeT±—L Ž\Jújî¡ÎšÊåàS÷e!d-_eG¹j‘[dõ‘×I83÷‰ÂÖ¨1ÈæUóMõ‡¿¬'úÏæ”\Íú[Ò5‡+s¡óØþm¶˜ýϱŽ^Í©ÝMÉ [AK_³ÝVì¿Z"?_Ü®­«÷æo¿Ì^'¯gzq{µzä=øŸ“Õä±nÞ›ß?àÑ¿¾e+.­îÛíþ‡‹û«Z"ç³õÌÖæŸgûgµµhìgÓ§?ÑÖèš—8c+®¬.ßíñìüñ¼–È´®¿>b ä1¤]dãþþþG^›ÖƒcŽÙŠóÇï>ðݶ½ûÀ0ÙŒ²unóa'Ê4¦?ÎüQf+ÌGóˆGùèü±[KdÞ—Ï{£ß¾Ȭ/»È´ç®²Û—Ù Ó:?2»t·hÁZ"›ÃŸ×Ïö÷2ˆ]d:>/òÔ>f#6[a²{]ç» &›Zä½§Û¯š…¼ “MíDPAÁ÷[‚âU䣈ìÀßãUd’hâÁv®¡ò<Ù³5©ƒL:inÆy„%ÈÐl‹gŽ´7)±j„ŒPÊÕ—gƒò>߆LzõEž§%‰ž‡¶A82©/rª¡1ðGj0»˜áîo؃ EæY²·Û!`[M ³@𮯯ëÙ5G>»>&6Ï’½Ý¡êÍÉ®\dÚ¨×ØæÈúrLlž?y»B‡² »H~dž£»#6íÈô¿:"gºÑÀE´a¢\Sä,·“¸HO¾Ü[Õ9ÃMC›ŸãîoÄvú5EÎ4€)tÁÉÔ@ä,-[=äŒ7=æßž_`·l£”"ª!gxдrÈÅïÙ®r wæ×9-ÿ‚"S÷50aN‘˜üª¡È²¶ì6w_ijh†FIà šmUÎ0Ã"Kæ6YtyB¾W¹œ]Æ– Œ,c˜¡‘% 3ôC¤{èNO'‘¯iÃ#K×´á‘¥kÚ ËÖ´«@–¬iÃ!û@åjÚ• G5må&uCÈù¡”›ºßyÈö³‚ÈaȰS»Èák“& 3ó¦ûÎ^UDŽ2fóÖ-\ºMAæ‘NrÝ×Ó©ë)Î~ŸèºW™$%âT9àº_˜=çâò3v·¶~lOÉÈ.Ò›þsâœÉÒZœ]÷êêÇvÌ7$ƒ|v°ƒé»áÔØí*åî!Žd³S:3d³Û+jìÇJ1¢ $‹ô=d§Î~l¡LÈoú§ò¢Î~l¡LÈ óØCf#v}ýØ\™óoϯ¹D¥x²[ä½·çW‹\¢‰œ8~µÈ{oÏ/HäÄ–­àÔ}ãýŠ,Ùïo®Zä…ˆ¤-»E.QˆHÚ²a‘¥ s‹\¢{‘±e#Ëfhd ÃÜ"—(x“HàÈò…Y¾0Ã#KfxdéÂ\²la®Y¶0W,Y˜«@–,ÌpÈóÈE T rŒý SºU!G3ãøá&î+CŽdÆñ;«€5„áø•@ŽHœãwV9‚Çï¬òî=%8~gEwî¯À¾å­E—Kd/ÐnÇîÚµN_z‚õD޾Ìäv«Ø]çè;ÅTBævŸé€ÙçÕèvtë\|gqKöpoßY çâñ˜}r†GwNlk²´Xv]QF1dÏw0ûà iÃv°m"S¶(¢ò†™-/ß0ã*GæþU®š"Çetï5ÀlyIäÚG9™¸Ã—ƒ·ÈµïËIÈü ³:b¿<¹Èµ±SçBpxÅJ·Á yqöó±Xª)rê,ÞYÓ}ÔÅBs7j‘K$rZgÆñ›ZäR‰œÖ²qü&U‘•›º'²ý0ã Y²ßß\µÈ%KÊ– ‹,e˜[ä²%cËn‘K®?‡ ‘% 34²„aG–/Ì-2€øö<²ta†G–.Ì Ëæ e sÈ’…¹E†ªâ ™U ²\a®92Ì)Y6àN¦äÏjÊì<àÜ}5ÈQ̪#Gtgå‘÷Mƒ®òsÃÖä& ‡Æ°F {~/ñ†º|Ry“ù-†¡ŒÀ'uy …c•C½ôlcaöæñz†YêÕ ,Ê)„ÌíK½¯Þ¿éß}ìßÑ(Õ?uNÜRJ!{Öd7AöËÐ ŸoÉ7<­î…ƒÝBj!æ÷·Ë‘Íú±a[DÛÜf¡"2PŸe9²oÉßÝ(ënõ‘åܲÙû§n_ÖÝ2ª!#öê&ȳÙô?rÎGlÝ-£²P3®¾j‘÷ÚZH-r…j‘÷ÚZH-r…j"²ÚS÷R©En‚Zä&èÿΈŒ›ƒ£ô)IEND®B`‚omniEvents-2_6_2/doc/doxygen/a00096.html0000644000076400001440000000630410303671737020067 0ustar alexusers00000000000000 OmniEvents: EventChannelFactory.h File Reference

EventChannelFactory.h File Reference

#include <iostream.h>
#include "omniEvents.hh"
#include "Servant.h"
#include "EventChannel.h"

Include dependency graph for EventChannelFactory.h:

This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Namespaces

namespace  OmniEvents

Classes

class  OmniEvents::EventChannelFactory_i


Generated on Fri Aug 26 20:56:14 2005 for OmniEvents by  doxygen 1.4.3-20050530
omniEvents-2_6_2/doc/doxygen/a00217.png0000644000076400001440000000250210240666432017672 0ustar alexusers00000000000000‰PNG  IHDR"‡@6Il'PLTEþÿÿoÃÃÃ;;;___???¿¿¿ßßߟŸŸÿÿÿ®ìÎtRNS@æØfÉIDATxœíÛMoÛ6ð~ßó ú5º%€}]âÅ9vmáð¸Y¬c–ŽË€Ê:»©¥Ëe‘D]Œ)²$>j¤$7Ný¢Wš¬Q )ø—‡d ‘Ê+Ø·¼ XI#ÊN#ÊN#ÊÎDþ»ÜA;åeA#Ê ‚ƒnòj½ì ‹”¼ì‘(Í~ˆ~ìào—¨Ðþb‡;¬Á õ ÑF¢_C3캤s9ï-øáöŒ5\M¥¢Î¥Qß»ö®\¢ ,:n}Ö ¾%+D ŠF£Ñ&’°è¢“YòÏOÙ<"¢¹–kÄè{ª05f,ºIçk‚ÔP”ˆ®,;)í¯ñZc @×Q‰rA#Ê ‚F”(+QÔ¢ÙŸ;ÈV’£bWñÍQÁ«ø‹Š^Åu•³ˆ _Ä{Ô —ˆ§hv4+Q"Ž¢-O GÑQú¿h¸‰Ê”'/Ѭô•œD³2ã•„¨ˆ¨ ˆ‹¨ˆ‡¨ˆƒ¨"¨~Q‰o²—©Y4+ý‹ñ[êU1–ZEu€jÕªS´”ïÞhY„눻‹òüD~#jDÿQºþJ‹¢mèôƒõµÍDÉ×ܳHþ¾ÇsCa”ŤgѼNÑ⃠Š ­y+‡H»‰Lå¶aàxÊ1´±bO‰+óÖñœ‰{2Çv é6ŒYí=¤¢´Ëf%Å¢'MÖä×`ëR¨Ož¤Àj›°|¸¶"zìO"wp?Ooœ¹97‰ÝŸ ‡¸¿›¡Ù'îøœ"ýÏé{Öpé¶O¨(í²EÔ:ŠEóθs'ƒé»DSC#<뎤åõ‘Õs"z„tûçêr”Œd×¾²¯iƒ«ã]Ö0pÛlÔ¢Å`ÿÕÚ˜xzûƱq,ƒ;U³žTä£åõÑÃ;m $"ƒÎ‘ôã¬ûûûóXawJ°Áz~‰çQ”¯F@¯™Ä"vªv,'’çcšµ5r{®Nðt¥F´"WÎrX~À'¹D‹™MKd$"PáîùÚVQ±y”Šè¬ Q:Xv{'¸)b/‰hL'R2jH2™w‡R¸M„µOÑcðQ¦+)±µ–ŠèÊò‘tØZc ˜­µ(C´ü;[f‹‰Ø ¶g]kˇk‡ú½ÆEtAßì•hÿjÔˆQ^Q-©õ’;©@ê݉¨¾WSûþQ ¤º÷ØömG j Õ¿3Zu#’Çîqµ2qÙó¯Dâs.R…Äé쨉×ùZyÒáœA–;£eá{–]&\ÏûK]Æõ™F*|„Ìõ¹‘ø!„¢•âûŒ%íÕQðmo¤Hx?ÇVüùš]ò°ê_AVí-Näu‡ÑT¢Sxsû…H— Kci,NDß 5‚À‚»dEy1ãEˆd\ÿü”ý9T€±ãÿÔ-b5òš.ÜDD‹ây„Ñ›Û3‚¢EéZ{ú‡Š<Ü™;¿bEiDÙiDÙiDÙ9tÑþÜA–H#ÊN#ÊÎÏß“ éIEND®B`‚omniEvents-2_6_2/doc/doxygen/a00218.png0000644000076400001440000000150610240666432017676 0ustar alexusers00000000000000‰PNG  IHDR_'ZVª'PLTEþÿÿoÃÃÃ;;;___???¿¿¿ßßߟŸŸÿÿÿ®ìÎtRNS@æØfÍIDATX…íØÍNÛ@p^{ß ÏÑÉ9V""9hC®¥´ö‘Ôõµ•À¾6PÛ—JY{÷PT7þš‡êÌÚT@íh ä‰%Äxmýý5 Ö`µêÇÚS îY-¸éjÁMW nº,–UòxY¯«®Ú÷­Ü‚[pøòÙ#‚³Ež0/]ne»_®×‚ss†•_ùÒÀB¿ørý¡àxùà+×0z ¾ª{€í£Ì7Ez™  ;‘©æú:ŒÂŸ¹ìÄ"H 7‹xzŒàòÉ[ŽBÝ< mÐfÀN=€HtóÓÝúe3›=‡À5@;ã ùª§G@§ðªφ“Lêqâ…±ûy0œèéT ðƒŸúÃ\Z±ïŒÜ/Î.5ö¤ÖApyÁÊ[~wÜ7gsu>̰ ^oæÝ=ºw­îgþ\ƽ1zã÷Ô€ õè±3¼*Á¼f¡ðÜL¼ súHwʲ"&½à øˆ éŽÕ‰5t©Q$²«$}_¯)õ#L€™fÂs30 ‡anª˜Ì½ oƒ<щù„íàU ÆlfÓÛH °‡ù,5üüü|K3!\xÔèOßl« gw™0Ç o¿âLO ¬¾l¢Àø-gHjÀöבŠ4¿þ¢[–}éæÂùkÂ8σðú„©!¦¢s °L¾@$æí ÎÓ»>a°#ŠÄÞâUŸá¾áž8»˜2\‚1±i.3L !û¡ÝyA†/buÆF¦ —` 3«Àe† jÀEê¥øØ&^•`af³dŸá(À´%J0I—¶5m‰ì¸ö7]Z¦~¶…; 0m‰Ìh+´o\Àà–ÈÍ[âŸkEÿ–xzðïëçøàl¹à;×ÿ2áÜ‚WÜl-eåHÚU5]-¸éZ=ðomVI??½‹IEND®B`‚omniEvents-2_6_2/doc/doxygen/a00097.html0000644000076400001440000001721210303671737020070 0ustar alexusers00000000000000 OmniEvents: eventf.cc File Reference

eventf.cc File Reference

#include "getopt.h"
#include <iostream.h>
#include "CosEventChannelAdmin.hh"

Include dependency graph for eventf.cc:

Go to the source code of this file.

Functions

static void usage (int argc, char **argv)
static CosEventChannelAdmin::EventChannel_ptr getChannel (const char *sior)
int main (int argc, char **argv)
 The main process entry point.

Variables

CORBA::ORB_ptr orb


Function Documentation

static CosEventChannelAdmin::EventChannel_ptr getChannel const char *  sior  )  [static]
 

Definition at line 181 of file eventf.cc.

References orb.

Referenced by main().

int main int  argc,
char **  argv
 

The main process entry point.

Also serves as the 'ServiceMain' entry point on Windows.

Definition at line 61 of file eventf.cc.

References getChannel(), getopt(), optind, orb, and OmniEvents::usage().

static void usage int  argc,
char **  argv
[static]
 

Definition at line 164 of file eventf.cc.


Variable Documentation

CORBA::ORB_ptr orb
 

Definition at line 58 of file eventf.cc.

Referenced by Consumer_i::disconnect_push_consumer(), getChannel(), and main().


Generated on Fri Aug 26 20:56:14 2005 for OmniEvents by  doxygen 1.4.3-20050530
omniEvents-2_6_2/doc/doxygen/a00219.png0000644000076400001440000001231510240666433017700 0ustar alexusers00000000000000‰PNG  IHDR¬|ø:ô±!PLTEþÿÿo___???¿¿¿ßßߟŸŸÿÿÿÆ\²štRNS@æØfZIDATxœíÏwâF¶Çç_`9^:¯}b–n§íåtfâÖr<ÉyfOt,-Ó'Ì2wvcƒ@Ú±@õW¾º%’²„ꊒ¸_'n$T?øøêª$êÞú #!è/ûî@=EXQDXQDXQDXQDXQ¤2VÏ–!g]W«”ZkL„E„E„E„E„E„EÖû]ÚQ§8Ô¯„÷ kL>V÷^¿ÖRŽzh²Ö—„÷ kL>ÖiþÛªÙ¸X“DXcò±.4æšS»éµ‡lÞ뺳ŒöèzĦv˻ԦMþj|­z¿Ûƒz-^æôþóEXcòÖ¿¿Ñß{ÍOÌë´ÖÖ]ëŽë÷Þ;¶è³+ý\·sÇ`3Žñåìö§³Û–_ a)„Õb—žÉ:L`eðc±ÏžÆ>±;Öe†î¸üvZ`à³Km¦ùµÖ˜VN`væ0°Î>¼[aum{Ì]ê©mw,æE°òÝkgKXcZ_².k1îÜÀZ¦sx_Ùs3ÁZÛÚ¬ã×BXc XòøVpZ› ¦ÖcØÇ]éÜßÂÚy9»ùéì†|k²B·0àXùH€] °Š}0öMÇwa¬ÒD7¯("¬(šH©…°F5ù«”jkD“#ròÕ8"ß*_ F—,1Â*_b@³Zdëhß((5±Ê±îQjb­º±ª‰µòƪ&ÖÊ«’X«o¬Jb­¾±ªˆµƪ"Ö«‚Xë`¬ b­ƒ±V)‡µ>@=¬µ0VŠ#Õ°ÖÃV©†µ>@5¬51VŠ#ŰÖÄ(µØ·¯{ùÖ¤ÖMPl®a"¬("¬(Ú¼bV "¬("¬J¸ ¬Åµ+½#»Ýó'ÍÝ„Ï'@XAÛ±êºÚ¹0oþu@X3*áÖ5ÀjFwšÇŒÖŒJÅúž&¤hY¯ÛeLwG½Ö¼÷•ÁH#p:X÷AªÖ6û,R@Zx¹3Çkñ-¾‡¿œžÜ¶ r €*‚Õ¶žù½H!Å>V‹Y.7aØæ/=s~a¨K¤Ö¤‡­kkþìø)à‡;Y`öÝé«aÛ}C…\ ê`ßôSÀ¿d}X=Í[Y+sMC…\ Š`Õu5?…üÜžˆÇz½Ä:=¹á¾U\ Š`µíGö-[¦x·ÖËøª`…ë¿¡B.âXB5V–€•C¥g…_fÂZX1¬“âq¯„•ŰNb“°ÖQÂa-¬0Öåå‹°ÖQÂkÂZX!¬«±Íj)¬5ÖIÕçb)„u}7Pyªjb­@9¬õ0VŠ#Õ°Ö膵&ÆJXq¤ÖšøÅ°ÖÅX +ŽÔÂZ@Xq¤ÖÚøÂŠ#…°ík¡Ù[Äú׊0ïæ7Vé"¬„I€uŠ"Š"5{r >|Ò^«R-¬“½ÜºúX3'×°t}¹ñe[•„u‰ÕŒìKI®a­7¬·—Å™RX÷rëºÂš-¹°l;S»¹k{ù·¦kA,î:Ж°†°fK®X‡3çJ¿ç/aúw³þËãÛ/«”ja=ÚËSÁå%+cr ˆ7]«Ë~+Ë_zë.:Œo/V)7kÈZ³%×kýøÖ‚,~€ÁK¾1„Ÿ]ûgš-¹ð0n­?Öj²Ë2n­?.V)7ÔºŸˆå+cr õźÒß¾Õd^—uøöË*å†RXË¿bM\~¼rŽäŒ]߀+ÿ¹ ˜lÚçÌ• ”ˆU𠈿y¶b;ëÚBÇz«Åv(…ùŠÕYhX…±Î†ñ=‡€58á·^ëþK>Ö>I5Ç*×µ&ŸðI"¬Ù”zÊoªæX%<Þä$*Tw¬…\kö“>^ð¯õž~±+ÖLt%´fE°îâZw6ÑU£x!*‰µ˜‰®jA¼QkfPØDWBMS!¬&º® õfY ¬¯ú€‰,]UˆûB ¬é£VÙH~J(E°ný”™'~¨A„:ÃRë6€`¦AÅ(µ†´¬“äSÉL…ð¿6SëÑæÇœ`™©P _Fîk£÷¨LËùŠW¬!ŠrǦ‰*å;³½c H'¸fê·QÊ,%°úö‰|î Ê™;³o¬GÁMþûÜç‚fJš‘´g¬ kg¿8Êšçµ_¬m_ß#¨„«áZ{ÅZ&UV&Õ½b”I5Ó¬iÚ#Ö×&œ 4vX'%šêÊߔӘ$¬;­¹úA‹­â°©ÿæÅš¡iÅå`ݱÜö§TÅÖ‘PßëRØ+Öí% k¦>ä-IX3õ!oIš©yKÖL}È[’°®ZàcŽhÐÇýN,mD>¯öú%7Ÿ+嬢+úµ²ÞÖÎVE¡%Dk—†5kúâÞë×Z¬ ϯrÖJ°0Ão¼ÖÎVŠŃ„6ˆJ&ÖèNkÚdÓf¬I·Z9k %çˆbÍuK§Žàž[®÷£^k1¾Ô L´=„|ØùS»%°¶‡Ë’É@rÖ(‚V{_!’¯×…߃î13LH ÞNúGâå·;¼bÞ‚è1¯C]Ü"¹XçýùÞ?Î `vÍO€ù˜¬ß ¬ü¥_rË#œ5V¯õ bú=szvÓzÒ.Ù•H ÞNúGr‡óá’ ¸¢)õC*P·Hî%K³ž;x1¢Ó3M×ßÁ£ŸV38W—O±6”¯F~ÉjºÌ¸Õf"¤zÖ°…öU¤`éíl•ÀêˆfèTË g¤(+|‚7ƒÀ{ñ¡›]ÜÙ}|»„ ÛöØ÷­ÖW­5[PÛì»SÃßjpäß`ÝÑZV^q€š±"Gl“d¬Ÿcx/>4\`„[Ù–Ãô(Vÿ‘] ÖL5 ' yÜZ;¾µZlvß cÝÒNúGò±òŠ×ÖÚT¡.n‘Ü–éuÞ‹íþ)†CÂË Â±þÞu欉ßdç¬ÑÇzý+÷ª¾oå4ÇÚ<‚5ß7æ¬×>Öä €T¡.n‘\ßÚœöÅå>ô¹æÞ=óúþÃ¿Ž„(Ö´Û¬5òëÉøªÏ|ø‡³o7²ÖÜ·>V^ñÇwãû È,)áæõM¡úÔ·Ê,Y«Û-TaMÖ§Èý&a-X£¤úk‘v  ¬„µp’êSëîœ ëvM¦E$Ð¥O¿È;yFéEæû”5…§¼éWB°Šq(knT‰ÓÚ@ûÆ:) +n¤×†$`-Ôݲ&HJñNWq¬ãœÊšYR3Šc-Ø×2±VhÚpÑ <9yW2¶ƒßL ÂX‹€ïôêæ\÷ŽÕŸQBZ™ÆZkñÀÜFCM¢f¿’Tkq+›.›ë¤Ìõ¸ b•`«ÅˆñÞË3×ýc…~cª*,Iýô«Á¿nU«¬³j"·º×ÚÁ—X—f„>¨Fà»´^.ÿ>èÃäú—R +öãæJ`•ØÉMäëV’ŠHìc8g“¼ZÓÚA•*XÆyó^’(‚Uf£uáq=0¬1ËW.Yßf§´ƒ¥"X¥ö0V8IK-DçIÖ Óo4P°–ã `•ÛÁ„Ú$ýÙkDk-Ç VÀ*¹„Õ—äþm¿ÀêÙöId¯m?šð¯á:î·ãp„€k%þ!bXO‹+»{Û°êÿ~Ùké›ð/Çú|yÏuÂþ k\>V3–ï Òp¬Øm褌°ÆµÂê] Àmv5mº`…HBÀÚñÃg½ö#õšàN‡Œîw`X7}u€ÕýÎ{ëUOþ2ë¿\Xìæ"À:ï}/â<½³ÛÖ“~ϱBê~tjà׬ݱJïݬ¶}æi°ººûÐaÝEǶŸÌ+›]V“}ɱBê~tjà?ae~în±?Û¯Ev^Z+cm•û~Ç ©^ ü?0¬^%„UXëÿµØå?¬†ð­Üï"ÆÊZ™ûjàε*X¹o}þcÀ¼®Àêi§€uÚý÷[xéAvý½ð­Q =🰲V~]¿bm6í ¬/ã;á[ÿwÜ„—á‘À#{-ðÿÀ°nÔ˜0 &ø­cVÐF\Z Îug¬ó Xoµ¤‚„5M¯c  NùÿÍ­Õ:Öx•8O°Jq®„E„E„E*a_K°°–pÍR+Êô‹„v´3VŒ®•5M¿Š"¥°–6½µ°ÖÆ\ +ŠÔÂZ/ Öº˜+aE‘bXëâTÃZs%¬(R kM¼À®XÑþÚõ0Wå°ÖÃ\ÕÃZ s%¬(Rk-¼€‚Xë`® bÅO-‚ߎŠXkà”ÄZBÆAäv”ÄZ}®jb]W/û»ìmíÏșհ+VlsZÖ_l Æë‹2,Û)¾~D%°.OOl¬Ëvëòóbc]¶s(X·‡Ž5àz0XýÑ:>VŸëá`é…JÀ*šV°#¿³¿ôîÃûUÌöi‡±å⦠QYa5ŽKHoÆ*X{U+·#¿·A@ÆËòÕì°²Íà¢Ì6˜”(®åéºÚ^ˆ T¬¥å—u‚ßn?´se¬³¼¿Äº©ì§vÒ‘±zýÍ:a1=ìQ¯ ƒÜ Lít§Í›Ž¯õQïw»ÃÏÚ6œ´§ðŸPn¬§®¨‹×ä¯uüÜr-HR0êµzÝyÏ …ÅñÉ"ÁŠÄÚ~úC`}Òï!wÇz¬ß³'mÑ9fWú¹>œç°Úuóƒ\?ñcD¹¼X§g7?‹ºxM>Öy~I g°Þs§ X§"¢öÜŒ¦-¨ Vö÷ó?±Žö%Dcþþ™ Ø'vǺÌÐ`ñ :ûR›i¢X^¬¼ò/Ëšt¸d ˜õÜ$þŠÝá  ¼U3š¶ ‚X;lþ°:̀܆áÚö˜oŸÚvÇ‚%ÈCXƒtBy±hªyc0HR °Î>¼¬ü(Çbñ´Äj‰¶V‡é|ë+{n&Xk[›uD¹‚Öjò]Ÿc¤ÀÇÊÚqk]§-µ¬ç÷Ag¿ýÇÇæ` ¾õ=ä¾õ=³f›;à[CX!—ÀOüQnߪë:d0€$¾Ð8V]_úÖhÚ‚ b}éýÉ®¿FGMfM›|À¯Éa¬VÑ‘@Ä·>B¨Žc}ÀHÀ¶Ÿ–#KúH d¬à>ÊØvd’Š[ÓôÇFGk¡#}}£ÇöHÀZÞR>Ñûü¦Ÿ; ³ð°Ní³Øž cÍ+<¬›"¬…ŽÜ& XKs­„Gå<Æ–±ücq¬%®•ˆÿ¡¿N© ÖZ"Vä髵_U˜~Q"VTá­Ê³Öò\+¦&ˆks,VÜ¥ŸwÁZ€½ðóabEŸï½ ÖªûüõºwÁZqcżR­thXKºÖÊú¸G-©óƒUÆmvåÄZêjôòT.S–ëQåŒUÊ㩼ʉ•÷°JX÷‚”ë~º¹ƒö†”뤴Ki1í)(7Vå­uïHAù°–8òÛIJ åǪF¿7¥T×ra•ó]‚”ëWn¬XÙYÊ!åªÚP×'åÄŠÕœj4Ô%*”k _ï‚â<åŠ֋,7TÝ…%°î2Á DMªÔ—âX+HTH]¬U%*¤ Öà²TU¢BÊ` `Vg }c­̵vÀ*aÔ¸6Íâu)©0V§Ç Ÿƒ­ñrÊg?‚uRŤž¦™  ¬â—ÕêmbÝŇæJiXM¬™OÜFH‡Cs¥5Ö‘ÛêØµyóhþÂÀbìÁËŽõä%ÀšrGÞˆ©ÜO¡œÖXÿõ õþóð«Ós®/|¬üåé Çzwácýoœaܦ5Ö»ß[ØÿãôÆvÿa…œ@/ðiÖJŠhua;­Û{ú¡³Äúôà[—XþÚE1E­Õ³¸‰ž;ÞØÇjŸD±ª÷ šŠûÖ¿ÖVïyä;ó“ÇÖò2‚WYá‘@“îœÞÐý—Ñú…c<ó‘€Ó‹c%½®}?¨©+Š+Š+Š+Š+Š+Š+ŠòM:Èg§»(ïŒÁ},Wù§ Ö Ê’AO°2(\aÍ ¼Á™ä2)o„6Yk&åÅ ³/ˆë«ÊOfº××”?M¸VâúŠvLâL\Ó¥ö D•ÕÎ ’×4튕¸¦jg¬Ä5M»c%®)*€µ’©›JR¬4ÌÚªBXi˜µMŰ’{Ý¢bX‰ëÄJ\“U« ¹Ta¬4H’¬¬ÑØu «)Xw6Øâ ©¨*9XwäCXÓEXc"¬("¬("¬(ÂÂêš¾ÃÜÅê"4kmyºn†¶ææ1„5]I|V«Ù'nn-VIÅzúèŽz¿Û¯=tÅ2ôÏ-×b§C6êµz]XØ›EVó&¬éZ/C?œçŽ×üäc÷çÓ“ÛÖã ÖPï´{9»m]é÷ábu”L¬ž9ûY†~À¬çŽgÎ/,fV~ÌB›i]öC¸X%«Á\+„Õä»Þ̰í¾À:ûðÎw±V´X…h­&ßõù7þžkúXY[Xk§Ë~ «£dûÖV]×™×eÓ“›–ï´6뼜Ýpßú>\¬Ž’=ˆøV~Ñï‹k?Çú<€‘€E#¢›×˜+Š+Š+Š+Š+Š+Š+Š$a¥éQÉÁJЉ°¢ˆ°¢ˆ°¢ˆ°¢èÿ2ߨX‰‚)ãIEND®B`‚omniEvents-2_6_2/doc/doxygen/a00098.html0000644000076400001440000000426310303671737020073 0ustar alexusers00000000000000 OmniEvents: EventQueue.cc File Reference

EventQueue.cc File Reference

#include "EventQueue.h"
#include <string.h>
#include <assert.h>

Include dependency graph for EventQueue.cc:

Go to the source code of this file.

Namespaces

namespace  OmniEvents


Generated on Fri Aug 26 20:56:14 2005 for OmniEvents by  doxygen 1.4.3-20050530
omniEvents-2_6_2/doc/doxygen/a00220.png0000644000076400001440000000357410240666433017677 0ustar alexusers00000000000000‰PNG  IHDR„º\”'‰!PLTEþÿÿo???¿¿¿___ßßߟŸŸÿÿÿ烚tRNS@æØf IDATxœíÏÚFÇó/ žÂ1ÊvCi´ÑrÌJp\•ìcW» µ#•v÷¶ ì› {þÊÎØÛØfÞ³xSüEBÆŒgüá½7øÇÌó3¦½ž{àª(¨B   ‚{¿p[ÄG@)"§ a[‚’*„mýŸH 4á~T$‘Œµ!TN eËt>íKþqæ÷xÛíË$åÖ>^¡ØÊbOM‘·k:w¼©?õ°BÞ Ñ¾XìÂ`âe1+ çf`¾â¾f`rQÆ0ƒÎ&åÖ>^¡ØÊb#&òv™žå9âVc‚rfX÷ F AìæâdzíI„ðú7áH,•)i‚Å+[ dö{¯_& ˆ3C‘Änú¯ÚÌa¡:’Bh…¦p$‹‰¼]#†ˆ°m†$RŽÉxèœG#¿çË!ˆXE"o×h#øÛfHz¤L,´Ù/áZÐ=R`J!D=R³Á]Iäíêþ1B«)AZG:Àˆ´åIÂá_–D™¿ %BÖ Z"dÍP!þEaI”ymz"dÌ€v5OH\ÔQ¸š§ RF¹) w …àª\Y£5ßpe[E¥Ü³RÛ@lî¿ú-%•`†š«|£JIøf¨‰`ÞŠRB•Sº‰N(­MXÂÏB'¹ò 2)žÔçQAÌr"’î 2O‹FÒ9ÐL3`ê?œá °¹rÐ’®œíE@˜lÅqü|ª`_„gµî<šÒ#ƒümœ*Ha¢pµMQd¡¤ ßä:—„4*%a{íðŒóB1ÖÌiœœóµƒóþ Eh#â2ÿGç¼2xÃz†£t~¹S˜õqã ÄŸVùœá@ï@¾Žƒ+ïHFÑ¢^«dQW„”tB˜u~÷K4tÈŸÂÇn%cˆ4@Ï`p 2Ä'ñð³Ô" ,fyÌè„Ã%Âât©1Dz Ì_´RâA€©8z Í oÝú) ¾n«Éï· ‚è‘Rcˆ4@È)ó @¦%BæA€LK„̃™ž[ª¶U!dU!( AyŠD¨ÇQ…@Aý2u£cvÁ—IEND®B`‚omniEvents-2_6_2/doc/doxygen/a00099.html0000644000076400001440000000714510303671737020076 0ustar alexusers00000000000000 OmniEvents: EventQueue.h File Reference

EventQueue.h File Reference

#include "Orb.h"
#include "Filter.h"
#include <memory>

Include dependency graph for EventQueue.h:

This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Namespaces

namespace  OmniEvents

Classes

class  OmniEvents::EventQueue
 The EventQueue is a circular buffer, that contains _size-1 events. More...
class  OmniEvents::EventQueue::Reader


Generated on Fri Aug 26 20:56:14 2005 for OmniEvents by  doxygen 1.4.3-20050530
omniEvents-2_6_2/doc/doxygen/a00221.png0000644000076400001440000004317010240666434017675 0ustar alexusers00000000000000‰PNG  IHDRÔ¢c‚k'PLTEþÿÿGGGoßßß___¿¿¿ŸŸŸ???ÿÿÿØË[ÜtRNS@æØf IDATxœíK—Û8–çûûÌRçô¦´Tq–´L÷É*Çnªsì2—YÝŽr,™•¶7sŽ3œéˆeÍœì¶vEÇKÚQ 9L|¨!>@$ñ¸x‰ø;S!Q"âÇ{‚ÀÅ¿  ‰è_lg È”êÉ( žŒêÉ( žŒêÉ( žŒêÉ( žŒêÉ( žŒêÉ( žŒêÉ( žŒêÉ( žŒêÉ( žŒêÉ( žŒêÉ( žŒêÉ( žŒj%³B¶3¢¤€zLçyùÞkÚõ°’š3‘¿°ê!u@cù ; î4–Ÿ°ê^õο3— 0Ô=J†izÈ: fª×wWòu@ÍÒ(èL?qKuW#¾»ü•o¬êŽxúÆ: n‹ÇyyÆ: nŠÏy—?Ö–  ¨4T¯šá5-~ç]È'PS7RŸªë€º–Œ;ö¨º¨K 5ÈjùS]Ô…¤]±7.< &’¯t½©®ê\*¼|©®j,5ËôĬj¤ìƒ=1뀠¶õìj€v•fPC´ ½0ëÉ£¹Wò¬§Žè®Ø³ž8j¨þÌzÚ¨ázº<0ëI£ìÓôÀ¬§Œ´÷Ú}³ž0êéo%U¦fþ5]Ôm›Žä’¹/ß8oÖ“EÝñÞ‘\:jçÍz²¨;FÉ¥S¡vÞ¬§Šº;N(’K¨FíºYO5cDX$—RÚu³ž&j–FrIQ¨7ëI¢fÞPGriQ¨7ë)¢fwDí »mºÙÜu¸Û"´¬>Ô.‹M$êlY§‹ÅŠúü@>ô£vÛƒOuÏ ý¨»)]±>ö£vÛ¬§‡ºÏô¢üõɧÝõÅß6géé]æÀW}^ïbôä]_¬/Îçêìíò´ôì ÔN›õäP÷>ãˆðËþÕ£ÜîÛôä9A}¸<¼ÝýÕúÓ}ö1=;ÍPgo—'Ï‹ÝjWÕÿ4+Â/éêþÝv·Å”Ón–]¡øóYº:¼QŒQg¿É¬<^®JçÞ@í´Ÿê~~Yf )Ô«lÓŸ–h¹Ù\æ¨ïú!¯«ã%b£vÙ¬'†z`Þd„_ZV½Ê6½ø+JÑnEP£ÓaÔ.›õ´PÍð ®«)Ô‹Å¥çhÿõ£5qàÑ): ¨=Р{ò׬Þ¨«?¡ý%ÞŠ2ÔŸ¯p <Dí°ŸêáF‘\¢-Ô›õ”PSˆäm£v׬'„zB$—j@ížÆÆ‡FrɶQ»ëÁ§ƒzìHá€Ú98Öñà=ê vÖƒOõˆÑ&³Y$—°êûÑå’¹ÒTP’CÍïÁ»»ÖŠ$²2¢‰ 65Lz®8»£V@mSÃî;_ÑÂL½€Zƒ†9Îê£Ñhëv­KÞ«& ×è-s@},-ú$ >× dUÍ_Y7P/›ßE0Y¡5ÔãçÒ}eL £~—ýÿ¥ù]–›JÇš£àçÀÜ9¯› uÜý.Ê ¥ãG=^î tǵêÓÛg·ÑÕù2=½CûÛ—+ò]š¡\GšË¨M“Ôõõá2F7Ñ2=yŽ~[¼Y‘_DÐyšj ™Ž£ÎÛjìÀ¯Ð2]¥«s´\‘_DÐy:~ÔF ÿÔ‘u› ~úKg°sÔq5:1ÏÔÑ£¶²:1êâ^>Â<V­*ž–µ†a##I¤‰U_Q¨C]--߬cÔÈê$³fbÓe SGÚ–Q·MÚÏÃI¢‹z¿yU¼‹à3ų¹(jGÝÿ,%<Ù—kÖ2l»DÝ1ç†j(Ù3jœ*Ç(¦€J\öJ¡N7Ú²ÒäÕP‰Ï^©ë!•9J5©š¹.³€H|•0(êºjæCfwÀHÔ«¡nUÍ.ÎÑ;ZÔ|þ5£jvqŽÞÑ¢æ³+uÔ ³P›gYÓ„êžû©€Úœ8+KeÔ¬›-PoQwQo6ŸVÕ¦â9Ó]5¨“ LPÛgQ7~FPÇ‹§'Õ¦|pö;´YÔΊÓ³PSQ±åÓÛ€ÚUÉøo õ~³FWç§·Ñ’ŒÒŽÏ³ÍûÍÉþöã —‡';õ vñÆú8Qó4õ£·ÐMt}¸\’QÚñi¶ù›Åk<ô —‡';ÔvÅí>¨7››UŒ^ +<@{IFiÇ8š,z†tâïòàd§€Ú®x˹yI”Vv›Ímö÷é/™'£´ïcDv£t¿ËãD“j»RDñ[d#ìÀ‹QÚ+«ÆßÔ®ˆÛ÷¡~¼x'×`Ôå(mª®~MB‚“j«â.æækÔYc;û[´ÀóQÚ_ŠøËUþ]@í†øïiY¨PÛ”QÔ}C‹jâ/åæ/¥"'Ì{â#9Ø]v|¨ ¹9 _ õ?çÅέ½jâ/äÆ/g³ßÉm[!nw@m@üþ›Æ1“EÝðûõ³€Z¿ʘú)F$ÙïÄ:̇óeÃàxÑ€šh¦€šíFøýG‚Û•tt¨îr*ÔÄïÊÎî`^\ÅTÉ¥aú¶+éØP‹Ô‘ô$:•Г¬=:éÞ=#ÁíJ:6Ô"ÀšV {ÌVë¾}%|Ô“bßv%ÔH9 8Ë“t¶5§YAM£žû¶+éÈP ÝãÔE¯åŸƒñ3*u>êI°o»’Ž µ0Ó¨‹#aÞÅD¾¨çW}Û•P#ÌE-ô;ƒë {)â–Íjy‰õQQ¨µ(ÑÝ+Œg¹Ù<êùºo»’Ž µ˜žSoÔ:v÷I/™ ÞàEJ¹éQ@ Ñ_ÝMuáÀw×Ûœ.Þ£ë‹bbI¤œ#†Ž µ ³y믂:IŒ¢®o¶vw‡»Ã6]?G7xŒyµZG…Z êÎEÆ—f„_vÛü_>ÆüµZ5ÈóFuÔ÷²Ú–S?#€,utL¨E™ÍÔÔNDu¥Áª¹%‡fA; ÔW7‹×ÔvhjQót õ—Ûß.C œWr¨†ñÎ?ö(j|ªgmGHƒŽµ°y‚¢n= Ö)af ãýP£“ží0 ¨õ^ õèv%jqfóêþøµFÔ#:ÔâÌð€Cóç½z nWR@ ¦FRµ>I0›#Ðɱ¨ÃìI0FÝH+̯Ö'9Ô ³èèÄjm’a¦µƒ1§ŽÖøêÔj}’aŽ:a¼sGµ–\ÔÚ$U´sp"µ~IY'<ê¤óÆ!ÔZòPë’\É&µ’E ÞÑ‘´þº¤ã@-‡LjȱåÐ ¨aPë•dÁê@4þ8¥I£Ö$ Ö+IãÔt¬êñŸÍJñç% Ö#ÙråAÝmÀ; Ö)}¨;lÇa'Ô«[:Ô²íèNÌß–˜\Ç¢^Ô:¥u_Уdv@­QÒÅ:ˆzè ì€Z£t ©“‡.Ø™`€:ÔÒ]^½ÀÆÖ °†¨€º+žx£ý¬jm’÷•={òÅ ìw ø% Ö!`ÔÜÑFûXÔÚ$_ªÌ˜ÝüÉõü4 Ö&PÔ¤{ = JÞ£V¸­éî*žÍ: Ö$HÔÂAÁ™¬jMR(Ô6j‰ðï}+´Ô‡Z*Ð?c§€ZTz ›ûJ.éÐ…Pë‘ êYï‘ t¨Ôz¤R¦³ž÷b겆Ÿá ¢€:\=€j=RzXX£ê9騽s@­C@¨ÕÈ´3‘Ô¤T¤jÕ­\Ô:ƒZLÒùPCKÍá&CÏÛjhÁ VçÒjÖÔðru'Bt@ -µ…œ Ýȉ†È ¨a°$Í5°Ô ´¬`aœ-J@ .—P'÷5°;¹˜ócÓ §†23¨¥5çÞßÔ¥XžÀ¨ßjX©¢&Z®µ–(+ªòµb{ 5P@ ,Ôm(ò¨éõjP©g@í`ž2·]C‰0Æ/£âÓ²ø[¯;̸$ê¤jX î$Ò@—[—è]þw5µtG@ *Õ^.1Ôäm@mE ¨;‰„O>ÄèÉÝÃmtz{¶Déj™¿ÐîúbMÿ®'G5¨”[e¨¿¼zï¿þj£»ûmŽ:³êëÃ%Ú}ºßR¿k) Ö#ÔÝDr„Ñ.NW‡·1Zíâ uöÅ..: u½JK@ )±ÝDr„é ÅËÍæ2FO¿¯P?ý%Âuu@m\¨Dj«F»UŒ®2æh™£Ž°DM LtpÄ‘·¨•í f¡êêGY]}õ%N£'9ê«ÃåY@mAZQ£'ï³ø§ ëÇ?}¹}™¡~ƒ[àq@mAÊe9c_.ò£¨N0 †”rU=¨ý²ÿNzæKÔ® ¾ªY Ôæ_U¤ǹ?Ûú«¡å5˜ ªêfdá¹’¨á¥¡ª&¨Õêê€^Uu3‚´"ê2Íy@ %ˆªšN¯¦E–Ô’òŸ+ pU7»g‚Ád™é]î'jˆªšJƒÜ`q}J·øPC ¢ªžÓ@E5¼ªê„z§€ZUuõ ’t@ -õªº2eµ8„Œ„‰j ©WÕUg5ôMQ9=? †‘2Ÿò¶œt@ ,媺tßð5¨@`ÒPƒ f°¿ÒjŸwLuѪƒt@ +ÅR,šh!PÃJ­g { &ŒjP)•bÑ{›EPCJ1\pÏ L ÔR\¯ƒ<›†ÉJW5¤ÔVQËZéµ{7Ö¢–·ÜK6ƒ~˜ÕT@ )iÔ¹AϵµÈrÔ’%5#aF ¨Š[P«K¶ ‹ŽÎ+ T"0€—Ò?É«€IßËÐØN5 þaù]‰ìyϹ­¡€Pó€ZNu¯jÛòõéëz•–w¨±µÔ2 ¨{P[.A,»wZ7¾z´ù¡ Ü] û­¶r¡.ºÓj˪QÇ‹ýŻ݇ÅÇ5égi`%áÀj“¢P7¿ˆ÷'h„³n`-P›S~S¡þ¼Þá¸Ýèúbýpû,B»ÕòôÞžá-iöv¿Y稳·¨ÞsìyP”ëém”%òpåŸøP÷Dªµ,¿Q.oqÜn¥;η.OžãÞ(Û’fo/>䨳·¨Þsì$ÖÁz}¸Ì³ê€Bê¬YÅŸÏHÜî¸D½JW«ùœ½Ñ‹uö–ì>P¾Ç5¾¦^Ôæ•`]Wÿi‰HÜîìßC„îßâàÝO¿/Q/6›[RW¨Å­úé/Î ¨Í«…úÅ_‰Û“fYŽú UV½E IÔ%Öèp™%"Ú¹žQŸQ/«ô‘¸ÝÙ¿ÝÏùÍV†úK…úñâõn{GC°^áºúµjÍååjR~U]}²¿D$nwŒÞD¤ %]}üðS‰z¿9Ùmñz B¨é.”¼~’¥NmP@ %µŒÌtŒÔ ¨ååê¢+ –‘¨bvwP{#±˜Ý]AÍ^-ÙºüB-³»«€Ú¤]¯«jU%³yRr–Nà jçzF½A`Æs2j@xÈÿïªÿG”òP«(!3­æ’“(ëyšçñÐ+mÔJÊ)uÒáÀ*Ösͬq«Ù˜nÉÔI=wRmjuþWóLÌ€ZA4•Ò›•Ih_PK«Q9«Ý¿ÌÊ4tFM¨%•4½­â­ê¬JCë€ZNíjU9â$~™Wït( –Q×Ï‚„ &‰èâ@ÍÁ ¨yÅh)«÷5VëÛêj›Q¨]ëu5óA%@áU«.iP ª§ QxÕ²Kšªëy@-¢¾^§[Å„Ô%ºÌe@=ªþÛ^ÔIµ4©¦Øï5¯L0M©úRÒ³¢C@Í©¡.j Vs}1ih†'5Ÿ†û,¡ÈTÑpË•T„ê!=˜D#ëµk}(N¡{¾Vvõ¢ñà¬jµ’à<"Åú1W@=®ñ2¬üæ`ÖsÆ;'ä jO ‰šN v\J˜cí2WPóÔ™€E—4LÔ‰ÔÃâj¢n&6«ƒP!ÄÌ?H¸¾lj†øÚÁE×^‰ä€ÆwïúO·ød2¦ON æ¼ãEÝJ-ÛD"cDã» ®¯¡€º#Þ{[ÈÖSÒM.Ë™ÏïÎ…Ú±&¸¨¹{1€QwŒ.)ænG㻡võÆÚ>jþþ*`ÔÝô ÖÑøîý¨çuŸnj¡o{Ìzï=„ºÎg@MK䎼§£S[ÏŠ Ü=ªÃó¡v«]fµPß(jjÊd½m Yö°âFíècL»¨Åz©ÀQ÷¤±6âw¨WP@]IŒ4pÁå“Þ™¬#ür¸x#.ÎqÀñôÙÿ8§ÂŠ£v´²¶‰Z°çYjvš~I×Ïq,ðôìOÈ­º +P‹IôƒÔL~Ù¡åê:#~†pÀñ4ÊQ—aÅGP»éÁí¡~š\nýqˆ"ürÿ÷'«§¿D÷?ý€ާ+RW¢n^@5–øsC-¨YfálÇÑáòâ€ã‚¨“æG7d µ7hé»á—4ú¸ºÊêêèǨü¨+ĵÔè==¨4"üòåö·Ë²þ)CüùŠ +>ŠÚÅy[–PË\ífQ«uÛsÔR| ‹-éK6ßwµƒóé­ –ƒæj£dØ@-9ÌÜöшÆwGÝ{!Y“Ô²*t¡î¤ïÚ‡zÞy«;Ò%¿, –õiž¡v®¶6Zú2×…º#ß•µspã¨åÏÜ7ÔfÍÜz;ž~™F­0óu_?‡üÿfJ¥YwO™¡×¨j.c¨ÕSK ¨UÚ£Þ¡®®ëÎYOµR¡z€ºå³’>Ö@­tã¡ 5`4†özX?jµîQ÷±>zÔŠ¬ô¡K¹{ÍTIçÉ s‚ð÷˜©ÔS½E­h<î£f¥SÇÃˇ¨’)á÷‹§'ß¿;Ôª½ÁðÝNÐ#;™9¬&‹àØ ù#[´»ìü<>Ôʤ ›è½ÀãÎ?Ýos«®†›û‰Zýažû¨{“ÁSÁòé`Í €ys£è ¥«ñ¸óÅ9êj¸¹—¨8iD ”ôÀ3+[àù n‚ð Þm6·Ýý?¶xÜy‰yÀnüE«žuuÙÑn»E‹ìïáÇ<îü(PC”¥·¨ë ÛI£®þ㟟ž<^¼Æto#<>ó5Deè<êžTëÿÑuõ—‹Ÿ³ø FýÇ|Ü9ý&нF 2À 5p 3•f¤Ã±¸ -ù‡Z«Ñ@¤¨/ƒ­q ûêqù‡æ^ÆGÔMÒ•M-j FΣf\Ñù¦¤ê:ÉßÎøÉ–æ¾(€u¡ž•l«‘OÇŠZçs# 5¡î6À1Çåj¨ÿ¾¡f5´“ò™Ÿ”ïYºº¿ÌP“aÚÏÑKtŽ–‹ 3þ—‡Þåƒ;±Ònî\4j­¨¡OX;j<0£Þ¢eš¹òårG†i?ÙlÎb”6QoP»hÔZQCŸ°vÔqf«ÛmÕd˜ö{ôù¤cÕ¨4j¨õM’…R5˜}µÇuõëôÕ#RW¿FqV)¶¸®¦PŸ ¡vÒ¨u¢Ö×¹¥6j<0ûãûf üÅûì®úzû’F·Q'ŒtÝR@ÿmtŒâ[æ%ãç=JÚO§ÝôßQk|%Ôió1õQÃ{1S¨Qæ°÷ü©¼~\í¦ÿÖ‡ZÃ¥m µ˜êºº°î€Ú½$çEE ºâ+2'˨´¡Öp¶Ð¨+CœA¢îŒ1sESG](QH¦º|çn]¨u´B5¢†´jú"wÉ™û„ÚSà<6­2äÿŸÍ¼µÏ>Ô¼Eºè…”?6ÔüåÂHK”VÔPNüÈP x;FZÒ™¯Pkê¾qâШõ>^c!RÒP'ºPƒ8ñcB-V¬´ds¯5„÷ õ`ò‰Ø±µ žë;eÖǃZ´>c¡–ÑTþшZ™50jÝøúKR¸ ˜II’*O{®µ*ë#A-Ñla&%™ÿµÖPc}¨«é¤ä¬Òj5ÖGZ†´Ô‰fÔJ¬Q랢ÀL_®ƒgÄ0¯jÔºK@µg¨™‘¢ä’êɪÔ˜C­ÀÚ{ÔÒýH}Õ¾LZjÝU˜Uû˜ˆ.[È~£Vh¤ôfÕyÔ²gí3j¥Ç=ýY•`E£ÖïÁ%¯&XÔF—|5ÝN‰÷›ñ]Ì –;„g¨éXcÊÓdÇ!œ@ÀRIÂ[Ôª3P‹Mµ«fí+jå§·C¥%|¦QK>(js-õ1 ¨›W .s /QCŒ´Ê«øy”%ŸÈí..‰cøˆZ±AF4˜Wá4PãOÚ-[ü¢!=œWái¢NtLnI¼¬AQ¹Í€!=RT¢Ç¨á6u8Ñ‚l¢Fs‘$…àj0kɫੴP›X[Kج=C­º$V­‘¼ ÇjáÒö uVšB-x.-ÔFV»=fÔ¸Af µXëÚ9îê¼ð¡;R«nµhqûƒ:)‚Pi<¯"gè«õ{pÁ²ðuéP¡Ž1žŽHI¶P›Y¼Ú"jeUÕiµÈ¡:¨1ìouJ0ƒÈÔu# 5Gf·ª[­ûöÑÆåjªÔ ¢8 5Šøs#¬ûÆa¹äjÚ>L¢æ?!K¨…JÜÔ Oh5ÿÁj˜dn5wuk µPi¸ºUÜFQsŸ’-Ô"Eî<ê¶a™EÍ{¸Ô6?”6›Íº±ÛîÍM´ÛvR[¢ý5þ—Ë?õoïÅò‡å<êö¹€ÝÁð%ÄyNIëo®¿ì>,>Fņx± ¿‡¾úÇ®˜¨~ÎO>~)·7êN—“aÔœÈûQïOðDqs§=Fè1õó—Ýß3Q ”¹ã¨»m5ßïúQ?Dh·ÚoNç9º×h™}\§§w·Ñ9B‹ÝõÅúpñeòÿŸÜeP§gèɇ8ûîo›³e¾-Oïvù¬µ@y¸šaRÆQók|z„_RüòÍâuzvš£>E/ÐãŇôäyöéîÓý6]?GÙüÿþë¯ÖKô~òåÕ£xww¸;l—ùwhyò|—¿ÁªPóºÓ¨YÎÓ8j¾£ŽÑ³ÌLq³,JW?f_¤«tU ŽQ¼ËL=ûƒÿ¥«ÃÛåýö°}ˆvñn‹ÿ-óo²Ÿ¤‹¸têG†šYMšGÍusÝ‹ú!B÷¯¶hyÿÓ9¦ý?¶»Íæ– ÎøÓ¬þïÿþ¤D½Ül.—ûÍæ:]¡j”.¶Ôüçá0jvƒÈÔ.jÜ,{›Yõ="üðãIfÌ ‚:k–}ƒQ§QZYuVµ/ÎÐ÷]«f£æ.uHÔ°Orzš¾Póü´õîçìf ×ÕÑ)¾ÙZ¡Û(««_Ô_}ßle¨?–¨÷_?Z/Ÿ#ô2¯«kÔ‡>ÔÜ'â,ê¾›°ƒø N~ÒEw¡-ð¬®>ADø#F~Ç× IDATý&*ºPâ/·¿]¨Ñ“Oh™Y{zöä=:]+ê^6Póü–F]Ìíˆs$" 5ï‰8ŠºßŽ¬ æèH™S¯Å0ðH8Oü¢P󉛨<¦Ô㬫9˜¨1‰gŠ[Gƒz %K¨ÇÇS¿"¨µ¥Qsž‰“¨‡LÈÈõÄÐXÓ,©4+HGrùâÒ‘ Y`\A‚)h>!až{îbx$™1Ѩ9ÏÄAÔ°3ŸeÓÕHu=¯'ån–y‹zÄSÚC=È:Éí8)ëêüo$•->5Pó‰{¨GRlë'Õ³CU—iñGûÿ*\¹wõØ]MÔ ‡“T-m\ÞZä×a]C=zÿju›uBßPÔbwE]r»P‡oß8ÏjqÆÖ@B÷Q‹.z £*œ+/k˜Ô~ÛêÑÒ·‹Z˜œÔk/&a­¡ý‡å6jý×G’ó kÂú×\ê“ӨŋÞff Ýõ¨`wo¬m®_-Q*àe3¹|´“©/[wo¬m¢Öß`SổSŠ̨÷Vä0j™Z ´(K¤ã Ø«¬ÝE-U¾¨©æ˜b²E÷Iãy¹‹Ú@‡ù÷ÒŠf]NÙ#¯uKR~¬ÍӺÚ¬0£^-häE­}Œêέ´’%Ö;ç”­u˜9ŠZò)’Ô^TCøë·>±3•?ÉttŽž%Ô’N¤Y½cTÂ[®DÒú-\þä# ¦dbÀa_쫬Þ*Šº™žÃQì –- õç½ÞÕÀ^AÔí«oælìXÔœç(]ª¨žl$å·‚¨;)άOpµlI(ZËðcéy1XT 5ky¨€ZðW;æyX™QN„P³.ždnɃ;ˆZúšW2–ÑFÂ[uÏ„\[f=|T ¨MÌâëjüö®×NPß ô™½Z”2JsfɬC-L~OžÑc$`{z³BËÔiÎŽ5 ³°;{òä«Î_Xõý6Œz(ÍÄέµk¨LSzGžc–¨Éo¯ß¢·dÚ“ôô Ð^£j©Ù‘ivzÌC­P²‰Ø8Ab·q¼‹óhoÒW_­ñ´7ª–šM‡’@–z̆ËÖ8j…"ÜU°¿½@ý§Ã×[²í³tu‰ ½"ËÒæß¡¶òÔÚ-Ô*ŽM®ôDŸ¬¨Ÿ~þn‹ Ý¢ešUÑxÚ8¯«ùP[yjíj…‹]ê*Ÿ¸Q NŸï¶dZbÕh·¢QŽW1"#£¨Çp¨µÌ¾~´@½ÿ£þ¸ºY¼N_=ZãhctFYõXÒZWTcË%ÔJ5˜Ä¾2Ç+Pß_ï¶xÚªþ ¯7K;ð»MÌW×.¡×Ã+)ÃjÞMãé%ãW¹fm¾ËÌ!ÔJç.¾³\mɇ:Íaǰëýú^n¥Q9„Zɨ…QK¶‹Z}d'í¿Â-ð̃¬éØsÂ÷ìÍJ¿Är5Ð\Ο˶€Åžl ®¨×—ç£@=h¸jͱ½åÛDbÏ«›óž\=j˜)|Rhý 84ëù¬½!ÿsô¨ÕŒZèBQ¹§U1ÚÊG+à]1¦éØQ« ø­RG•(êÁ‡™™]7†‰öÇŽZ±CAµZ—¤ðìŽA³Nʇ£ùÇb óànàšªnï¼D­ÚŸÀ¥ï|váÕ›Zàºøæ]w/¿Q«öêž#¤ Á6`£^hü"îîäê¾£Á&àJƒ™›Qwøõ¼pàûÍ :½}v]ãA.§·g»ë‹¿mÎ2Ô§wdQ«5/j+“›Û÷TMQý,MÔß,^£ëÃeŒn"<Èåî~»»;ÜpWìÉs²ƒ‡¨•{þ9/;ÓØGÆ}Ϫf8íÀwÛ=Cר_!<Èeµ‹w[ü/C½JWù¢V~žÇ—€­€#±’btbB7Ëvñ6«“Ÿþá1LxËÓïkÔÈ[ÔÊFÍ—€ÅàB£cRrÏݼÙÂVa#<Èå je£æAmcˆO©ñgÓø™gÓªóºúŠ Æƒ\®¾¨£VFÏ3dßÎ<)¢±ï4誮&-ðèMæÂñ —~"¨ÓÕ„Qs$`•tÿóJ"Ò,K¨¹ä2jæÕm Qf—ô°Yãš…´Ìè›-.ù†Ú€ÿ¶0<³©³NêéAÌÞ²!ù†Z£Ìbƒ¬TY'3ºg4¡ûÀyäjíFm³é]‰V¼kÁÅ–£E­î[GZ·¶w®¦/ ·.Â"›ê>tE9AºöàImÊͬöÇ34¡ V³ÿ¶Þ +•ypª†ÕX•àOŽhÀQ÷pzÚ…j:W“2MºzÞ‘¿ÅÿîáÔz 'd3Îfuƒ´™|XF­³Qæ@5MÕÌÍ68•7±u’U23ø­nÔ:Ú6é–Ïn¢®¾0èy|GÝËÓjƒŒÑçÕðàõÀƒ¹>”nÔúü·½‡Ó=]›4ꪌz«¨õùo;¤»ílJ”/c¶Ž±ŠZ—Q[hz?§¨QWÍÖ16QÄ `?D0[„}.»¥y•Ûò.ÚpkÂ&jõSeu0X„ƒ.»©¤…Úø‚aÔãéñߦšÞb–sÔIùËø‚EÔZe&ªiÁ¥Êʺ0jÐ,ñHZQëðßš½¢$d¢¢²¶eÔQëh”é#­™¨¨¬mõÈu¢Ö`ÔzH«C&J¨úÚ‚QÛC pYw“—e¢y§nR^£n,iλeÍëyæý·EÔàþ´ÀݲˆæuÌw Ïb¬¡7j Ò°.»©y•K Fm5˜ÞQ’Òà²[°Ø(³‡ºQ¦JZ“Ën*)óiè}FM“QÁ¤Óe7•”uõ¤PƒúoéÎPí.»u¸²ne€Œ¿¨ëœË9o#.»©¤˜äaŨNJuãáŽJ:óî;^™sÙM%EŠQoÞ¢–#Ø¢L„kêö€psþÚYÔ.n'<³à±ÛÊe–Ö¹õõ¬ófèvM™Rž‰‰¡V½ .˜8`ʔȡ®få1J¼9ì­øeE/_ý¥úÖcÔ*ò u5}‰Yâ4ì"|E²Ù©àê”G¨ë0„=%^?¹IfÔ¢ÅòÕKÜ£°¿}¹B;Ü‘+ vSõ¤òÞÆQaÍå B²X¾z‰{~[¼ÉPãˆ\µ“ªCB¶ƒsÓn¬µU,_½Äm”s´ÌPÇ¥G¨]5‘pä–§µjµ|5FãæhVW{†z>)ÔÔìàñ! «.–¯¦¬: vYtóš5ÙéŠBëê3yÔ£Öƒ¿¨®²‡zd zóÇçܼlçËWç¨q <ö uÙ?8›) ÷'ú§µ‘eÛÁo›—`£—»u5 ²Ñ§õÕi†üA-=°Yp¶fW  n>Ï`¡nzmÜWÓúfÑÄá j…½ÍÖ…%Öü¨[O®šÓµf¬¡ÍíÞ²JûÍ+ú£¨•¦;7‹ÆknÔŽ5Ýòj«ÝÞ'/P+†[nºm+¬9Qw+˜!ÆMjåÉUÖYó¡nœcᬹgð@£?04j2‹EuòmÖuvðç-ãQ2A]™4mÈ“D­–ŒeÖj¼X õ2 ŒE£¦:8¹ ¨Åe·mV Æ/Ëêr…z Ä¡jà!ÿæQçˆæ#AL8d·mV¡Þm—·³^=JNûOÏVp#[¨³Û €)”MǨœœhÔ(.ƬW’FwO5ÏÇE³6<×­l–}ÊQ“1ëõ£ä¾ù ¡FnuӪɘõúùb@]ŽŠ5ÖMÔd̺ã¨Ç‹ÇiÔü)ÄâYD»®ÆcÖëGÉÏr&„p‡ºùð,ÙÒO( Ôo"2޶ê¾gn€ç.(¨Acñuo¹ôšMš£c”mÙµR‚µ0k½Ï°‹Ä\}ଊj:¨óP  ¨;¯µF=*{:ùw0XÔ jžÂ é cVugÓͲ> <Äœê9טI!µLGíQ8[tŠäB’š` 5‡}9ºuÐý“Vj„ô€£I¡žƒ÷W7ÇéF¢dE!&ŸE†6?L5 Ð}¶Œ‘y³ß±‡ Œß¼`D7ºô¦„ºwÖ©‚ºãzä\x#ñà/.ÑÉšt„¨ IMü ;Á7á…¦li’iÔ:Zeˆy’¨GÍYJü1õÉjøª±ÌZ µúؘÕ37&…ZGu7M®AÕ—­µx¸†é@¢ÖÐWV¨s"n¡®C¡Lµ&Ö)AB-k ¯›5§=™ˆD\œu@­®vª„¨MéÝîçÅW}M .Oµ®ªuͺ@ÝÜïOPö_[Fâ‹“¢¨ÕÕ‹úózãØâ×ë‡Ûgº¿Ì‹d[pPÃ=vðFâ‹Ñ~&‚Z£ÿîœJ…úpyx‹Çiã1Ú1ÞŠƒZæ#·1êÇ‹†â‹Ô`b¢ÎšeQüù ÓÆc´kÔx F£¦â‹çœ jðÁF´Z ×uõŸ–ˆŒÓÎþ=”oÁ¡Ç7›[SA§I¸Ÿi ÖwW«y.5êEdœvŒ›e÷OvÛ]>r;»V[´0_<Ÿ×2!Ôúú›…XÝl­ÒsDÆiãá»?/.VèjŸÜN£'Y]ýÚX|ñ ¡Þ uVWŸì/QoüMôhóý[ôñ}Œ·|¹}™µÀOŒÅÏg;L5èl-–'ÓO-êOAsÈ;­mŽƒ µÖ3m¤íXx®¹ñ £Íƒ u^Ui=S:qQ'A]…Õ':uÉçÕ@9éI~J¨5O £NGÒªõÌ(5Ÿê9çñTD™µ¼׸þù4Pÿ­ûDëô•êj=#Ìò!”5j³Vn– ¹òÑ0S=‘¦¦:?’ö¹îjññþÿì„lïwA*Ï ;~Ü|¨Mõõ+•$ëJlw1¤4O«µD¶`dµ©ijEÉvÙIcµ3ü6OŠ:™€Uçý'&Æ@«¢D£œ¯§ÔƒÚåéÕ0¨‰Q›ð^ŠÇîD)CÞDã MµŽÉZ ©6ý÷/fôFãÉLuþüÒÐÕ£ íße5¨>ÔÇþd‹µ!Ôª…9ÔrJ”øPghê,U]ø@>Õo¶Žõ¼˜nkHªÞcôZ‰ðËòôúã5ÚoÖå›tõNvƒKÛ=ꤌŒaHÊ7¯c¬#ü²\¿\¿DÈ›o¯ÑÍ·—_Þ’Ÿ0Q'ÃÞCmÒ¨5Â:Â/Ëü_Œ^”ož¡+tþpF~2QÔs³F:Û‡3á—œðn³¹%o¶9î?•󿘨mŽ82‚:)o¶ J¹i6˜Û¿cÞ¢EmÕÙÿÿ·øÉTQçQ^•Ó’ÆfxõãÅkò×Õ1JÏ‹Ÿ°P[l5¹—4}5ƒ.îÔR„_á¬á]½ÉPãAç¹úPÛZ¯Õê¤xÖaZŠe:äi£Þoöëâ µ™gö=2ÚŽQ#uÖý_E½ß|U~Å@M~Zý~ƒ·do7g_rÔgüŸc¨•XËWØÝf³Eýõæß6ÿùë¶/ßf±AßnÒíÇìS¶%{{}úîc†úîÙ»ÿ~öî£k¨Õü°l€+Vf-Ø,û¼½ø÷ÍÃæß¶ø_Žúaóp›™:þœ½Ý^|zž¡ŽßܼzsóÆ9ÔŠu®”g± ³µêëÿJoÚÔ™ÿ!««n¾=+Q_"´¼ÌZ×ìÚOBDŠÃÍÄwgÞ•Š ÑÔèÕÕDýéß_nÒͯuÖ,ûŒzûf[Yõæö‚Xõ×onž8ˆZõ¾IØ‹³ ØT‰æ1GÔ¸Ùúu³{“ÕÕ!hßæ7[êu‰úúô<««ŸÜ=;ÿïgçîÕÕXÊÁR„ õX¯ .‚¡Ãæ»Ì‰£—ìÕç¢ åán÷ÿ–jÜî¾$l)OçH ·SÕBÃLµ¬ôŸ„ ”û9ù½xoñZˆu4EÔJý!E |°‡Âª7ëI¢†çÏ{ð™˜ÎóLM5È(ÖqØÃ…kz í¨9RÔ F5{„¥éÙ[“E SÒC°G‹vôC¥ºË(ÏáŽ5Ðú;ýa(Ç/¥± á ¨…S[&lØ<Ͷ‘ߨ@-ž,ÕE`{Èÿ€€ZÁ ÃsÝK͇Yâ!9»#©ÏÂ^dûq-¢Öñã\' Û¾¨é³°èX‚s÷æf…pH<ü¾"ìjêIÓ.¼?:á\õ¡øq÷øÅýÁùÕ׿‡ PùÔ‰'.؉“ÄÞe>p!µŽ_¬çEp>Îÿs5Õ4sÛ…ƒ:ñ6.à³y«¦XÏ‹àÝŒePØ›Zܲ¤/çºYCUØUA±tó89çª=W\ê+´\Ý_¢]ŒŠÅAœCM ƒuÞ¬A*lž4Jä£"iå<ÎêꬢÎþ+P‹´üª­cÔ#³†¨°U®ÒKÚ¨ófY\Xõ–¶já%Õ‡s§9Ø#³Vwâê£Q»Vßle¨_=ZŸ5QçG¡­µWf­êÄÁšvt]w¡d¨³xÜEÚklI3j¿ÌZɉÃ.mZ¤c”Ó•[ÀÚ^™µüŒKÒYAN¬œÃ¶u£ö̬‘l ROWoëÞ2¶XßõŒ‡¡~0ø-È’jóò'-3Ö>ªÇ¤I÷³Åþn$ãPW±°½‘p•­xSÞò¾ô“-¶ú¾c ~j§Û#°51‘W¨E«lµXÔ=Ç’|^=sݨk³öƃ瀭Bº¿9%=4AnÀ2ÐRåš5âoŸ)ºžäG¡ôÕ?ƒ V¥'ïü2kÞö™ é¡/‡F×=î`'¬µ¯‹£}&OZúž'mÖFý¨½õàXc<¤IëzjŸ¡¼‚ öÙ¬ÑH•-ý„Dûx;Ö5huq/QTÙò]æFV2XëG]5Ì|ôàX=Hªi鬈ó²_0¨+î+jvÍ*ÿxÛÐhék¨¿=x®ly^ÆÆÅ·Y›Dí¯Y£–+<Ù68¢ÍzÀÔ€P{Þ/EµÏtõ›@«•Ï€š[%l…Qh†[k˜þB¡>Ž•Ì†fOrìoúboäu øÁQûnÖhì™ð˜ÌŸ?[jÂM[P¨½b6 Ì¬ÅÇÛ—²qúx½×) jÿÆ¢°EŠJfP²à¾sQt  öo4![u5-åÇ-|¬ÄjÚƒ{kÚM[öãÖÎ{F>4Ë 5µˆÁÜBÜ\u-BÌ[ ìUº!Ôå%[އÌ`Š}‹%âÇ-^àE¡'fQ£$‘oÁÚS–yÏÆêõ]@6š^qH, Î0—·|ÊdzP¿•A¢®ý—ÌDp«ï÷ã¶›¢³Ò¬êñevøœ¬ÇZ-æwöú'8Ôt»læ•çïñðãÖIW±wúNG#jÛçÎ)ÁÛ©¾ó²~¶É¬2kö´ .Ž«QÞTLyñ+’9¯Ý–ú¿~ûíÿú¶%ò5 ê¤yiKv"WJÕrÃ'Ùj¦í´\ ‹uB÷ä>Ôr±·j@­Ôž ÛÒWƦé¢V{*MT·C¤Í nTÖX.£k5 Ó¬€º)P:‰@¸)ý2…ºéÁE á¹éäæE¢n·+¨—xNñº½5]5~Rn…Ë-h¤ºNœ0îœë.Þ¶7£nxð.ê/(^,è 8¾½IÔð¦×„+´€ÔÛ5þóŽÚ‹:EÊ¸Š¦Pë𱬭v¨ó÷1µÉêýædyzýñ]_¬—ùÑ_£åj¿Y§§w·Ñém„Qg¿BOÞgß.OïÈÞ°¨5uʤi xéÀçYéÖ›ÀQ7üAýÍâõrýrý}ºßÔ§èz¼øž<Ï>^.1êìW_^=¨³­¹àPëk2?·4¼è,Q§g§z­š:FÏ–ÿ‹Qœ7Ë2+þ1ûð"]¥« 5qàÙ¯¢F½*ü9jÍý4ËðâqbZ³o\ç9ê¬ÚXR¨ñÑ÷ÿØî6›[‚úé/Øã_¥8Vrö;8Ôš¥Š>·Zñ 7UDâõýO?˜Fݲj|ôÃ'Ùw ‚:"¼¶jÔ‰fÌXÒ@f:˜©–V}t:ðüÜ©ì×u5…z±X¡¬¹ðxñš ¾ÊPgÛŠºú ŽÚXí¨~%ÕAÿAi:ðÈÔÀ–hתì{•1—FÔ°–`µ®t¿¢æ(k¨«k{Åí>i¯£5lÙs¢î“æÉ¡VÔÀtl5œo’ñ]‹zQÛƒër¿IÆw-¢îÀvá6XGE´£6 #œ'Í›Cݨ¡+:ã¬Ý¯¨ys¨5´UFê>in¿©5t]Gœ¸¡¶’¤¹‹W?jx*ùJq9„ûî˜g¦"É#¹ßøpšÀ¨™enù Ó8UÆT¦Q£ãçIDAT"¹ã¸ßø)[¨áY'3#@/êã"mµÖù9­¨= -TÁ˜A­Á‡ç¬µ¢ö€´P ¡/7!ã_9ÉAbÃ+T`Ô½G‡ö†bÑP"‰ˆïbZ‚Y4…šõLs³ÌÒ¢w‚ÆPkiåÔ#æ—T4öäÁ µpyB£(# ¬ ê<¾â»Î— ¨=h|‹·~ ¢ÖP€ê¸ó¥Îëúøá§bQ Ô^–íÞ±®Âîõƒ´l&áQs]t@6,j7]¶$9£ækÂ$j×¢áõH¾Ül¡†)Y@Ô^˜´RÕ§5o³€5j?LZ)›Q,& …Úç­ölUjêDuÝ$ Ôž8oÅŽÔ"×^¢Dµ/&­:@Ï6j„ŠÑûR‚˜Ýá‹I+·'t ¿ú¬,€—Ë“Vn9jA-ÑzPsä²rty¦”‡»iA-W©Œ….‡—G úœô V¸Í-wé‘ïé]tu!í Øúä»Èì=¨aæíŒ,;¢–´W A:ó4¡†\“ž·½¿¤@ªM¨§ã¶Øl®{-'˜ ëB­c& HƒÍ?ÐPbt¡Ö7;Y·BÇœ=AeÙ?ÔXr•­wUt.°‹SjÍs…íÓKƒFÒµ¡Ö_BÄ‘ûiÐtÈ„>Ô&¦(sÒöÔ l!êCm(lÌøm·¿ aG+kDm.ò@ÿm÷È‚rŽ v\ºFÔ¦‡æµxÏ´w£ëð ¨mDþšU2l`AÏ5ÑŠÚƒà1î |V‘VÔôsVðóÇô¢f-+ 3õ¢f-)sB5£f-%-³5£öe.”[Ò3Ï[7êàÂÅ¥iF¿vÔÁ…‹JWìí¨ƒY J[”ý¨ƒY I_<ý¨ƒY‹Hc䨃YóKgŒ%¨Ã ·´FÓ2:¸pNé›fupá\Ò!Ïê`Ö<Ò Ñ j/":Z–ö22ƒ:¸ðQé·C¨ƒ ‘¿g upáƒ2Q<¦P>$#†` upáý2ãòÌ¡.¼O†F«›C\xLõDúÂY2RË$êP]we°Z3Š:¸ð¶LN*3Š:¸ð–Œ–‡YÔÁ…7döÊ7Œ:¸ðZ¦cœF\x%ãý ¦Q^Èü,ã¨C§Y. ÞÍ8êÀY EnuhšYºÚ- ž|ÓÌR0¨§Ý4³¶Ž„ÔS®®í»Ôfm1’šÔSmšY]Èêi6Íì:3[¨§Ø4³ÓêÉU×ÖWp³†zj¬íG¶µ‡zZ¬m›4²ŠzB¬­;o,›¨'ÃÚ¾óÆ²ŠÚ«]»9I»¨)rær¶úèY»á¼±¬£v¨,4È¥u%ì£>âÆ™K @}¬¬©¤ ¹€Ú¹B{ëÞ;úø*l÷@;ƒúÈ ÛAÐî v´x¤äVk¬’;¨tzrÖ?9„ÚáRâ—Ã׫S¨½÷âƒvµÛ…5"Çóîjç ¬O‰ó+(»‡ÚGØîsFn¢Î‹Îvøågä*jäìÍiGžpF£& ÌÛÎÈÜÏ!%‡QcÍfîw6c=r5‘sÀÇòÃ%/P¹:gnV3%g1N`žûòs!ppw5 .˜„zôå‚:®Cá]x,a“3‡&P°ý!‡Ùûê÷׌€»ðýéê·£ˆÀÌ …Û¯êÀŠ‚¸tF{ ì"P¼ý[ý^ôÞäZ¸°‚@þo#áXp?f–þñãôÓPðl P À¸+ž—`?y‰.€ ÑSˆ¥ØN Ì …hÈ)Ä’]¢!§0XM€ÍPÌ;Ÿ[»b‚àðLjiÑL |ÍóNç½.Ý\³ è%€Qñ¹fÐJçÊiVæ8ÅhVÊÿàÒ)4±šCô@Pfj-“h#€Ô  •”(ºà@R¦DÑD¥,;¯”M4À¸nH]išè!€¢fh"€Qy#&@5ÀP¤û©tÑAÀ uT„Êk¾ REòúkf”¢@éËgÎ@ð ”Vƒ‚O dýZ:’*`Ö@Ð „-üòWš¬§É¥è#Päé°:pŽùF|‘"0KËа€@dÇM%° ZM%°Ìß¿q£$pGCÇ7é#¾ñ ?@@ [v HžŠnD3¯wr%ñð€wÔw à"ïè&Ü@ )P_ŠM@¹!””æQ™ró¶¸[Šxû9H¾º†b€ÀÒÑñUJÚŸžN‰wÅ’—þñrzíÂ9%6à0¦‚/f|åý;ºœž»")Vg\Ê=mHàÙÛ½ô–LÖC‡²ƒG½>Kþ¶÷æSïÒ…sJl@Ž À‹¹%Np|F¡‘ƒ«³f¾ëzô%Ó ô\`â=Œ àôŠ:üœÐIž3WóÀ…RćI±:£P†:@!€ý=ù“Y;°Ö®ÖjWp 舳’kY[V M7°Qô½©ãe¿ðâ]©„@^£¨)VTòsÇꬼݻf¤XY–P{R¬,; DWM•+ËJQ°5b…YI ì¶ï‡I±ÂR,¾›ŽâN*›$TH`{¸"»Ù³À÷ïö?•ßx¦¸þå/{gÜj „F°s3Dö2Ž‚^ÏUÞ?ˆ7¹”~µw&¨˜@¼ ÄYAø”ýí·ù\°ÃÑ NOF ǘÜÑÁ•² †yá½àîý0áÇ£V·Ÿ}¨(³—©1«84Õxpµfuç•wú¡y¤X~u—Ï¿¯×Ãõ[ˆ19>ã:í‚Q˜#‡å«gÿ½[ß­¡¢‚TšÀj¸ÁE_láá°vI VŸ&»~êÝ_ðø§ì‚až€4‚½ŸD»z7[Ì ñAzÂ1TšàAp×i¨¼ã†’¦”öß²ìß‹I`V$ÞBÀeI¬âÐN`õûk±…C3`Ùœ€. Ñ/ÿ#bL*&0—¿‰÷8ìè€Ë’XÅ¡ ‚íç$°¼úò—åóg#–=¸â1&œÀº:á´ÈþOWè½^*MV@úb Ìèÿ¦Ç¬{…ìË!1aí¿³Â+"0—ǘ‰Âl,Øên âÐFà~ c—@ºTA 7?LŠ•hÙ l ^¤X‘–-ß™¿š~TDŠØE@¬cìšÀ<ß´ÞŽXE@vƒ»Mº¤X¡6Mß[К§<0%E’d_N7F@ö‚Ý­Šñ¶~hNŠÄ˜×s½@ö‚›;hSô¤X±ûÂ~EóšQ‘7¶¾OÑÒÃ˽b®ši Û]?öÒ¡™•Óâô{–ßá°”$ð—~'3Åu@gݸ̻šnëN`ÞÍç œ_ìïõVó®è‰?Ükô”ýÊRu˜ï-Å ‹Bàáõ¥_M¿þ0º¬˜ÀQ l·ôarîOΫ%`ÂÃx›Àøzúà_<úK÷Ú[¼ºô§ƒáóGÿùâRfìå„^sì¥Fâ÷¶ Ü87g“þ»ëõmà?Ì qxþÖdïXÊŒ½üéÃל{i€€þ¡–îö„—ã£Ùàæìá³Á`*Þ³—þ7œ{©Ÿ€/û~àç¡?¤Ôá-ö.ýÛ³¡?¼þWHà¥ Ñ `(†u‡À7ÿðgÌúy‹¡'äîýHÿƒ)¦¶óÙ ³gþ¤uÍ[<ý; »ˆÀOþ= nL0¼ŸQØœOß¿XókN.ÅÑl0úú‡À„žOƒÙ@?Ó{Zí úYEcêJÀ`°U- Ýã±ìü€Žºš ?-­ø³x†c.q¬qÃð.§xýV<”¹Q0Äž0Öò•“º4”µ.q’ð + ?¢(Ö /fÆÁb¦~&5_þs $>©¬/Y̺aø¢›¥ZRĺCºÔ@ÌeŠ '¹³ÈÔ‘Ô@ìØÏ_‘žY djI ¾êá‚gFYGÓ:ØY@ߤçò%IÕIÏ—xN~–쟤òñø\Õº¥ô>¦‚§øt%ß3ÿUôé_z2ñY³;êHBˆ²éÆNgmõ„¾K²:Q¾Å½ïÜ\6»a9p”± H˜’Å÷†JµnGôSi`Q<ßòþËE rkÙCNHˆ¶‹óªÝ®Öä-ýu¶¼§“Á1ØúÑ«™„CË¡«apú+ 6ôc]›˜ô§@ #æ´s`ZWTËóÞ,ÑÛÞGØxB n‰‘€Zø@ðzqÛû…5)ŠM8L@º·1“õYh÷€H߯ŸÏÔq=z ›.@ˆÁ˜*ŒÂ¿G ìÓ§¬IQlB¦Ït+8h’ÀÉý³ÕoGîŒÇÌDˆK„¸ìÓvØœ¬:pò'Á&pÈ $¢l؇:ÀC òØê ¡Ùt7£!Á·‚CJ ,ÿ×îmï l¼!B .òˆòñÑ`…­3€?ŒÀXJ ¬&‹ÙãôÓ0 xˆAj>¸#b 07 ñ‡ÀAŒ÷ãM$%Ø®Övpab¶d©ãï.Éfб‘6 ;Õ:V7ÞHΖ(µ%l øu,¤›ô¸âÌ_ȱ—±³dR’Ì ×LiÆ|Îø$D±fk¶<½7¨1¤.ŸüŠI$Üý©³‚øìz篊VN*Žsý*Y=GÄ­n­|^qÌ3™JˆQ¨Ð<ÀÌûa´ÍÖ¸/†t£†˜C€LÏÚdˆ¾ ¦à#@+ÏÔýŽ)*£¢á¡ÕF @ 1á_‹N×/ÞÀOED²²¸áAúàˆ.>nç¸wZû¢rŒ˜ØÅ·LU4À¾` Î]tÀV\x>%ÐA]qç:ŸD‚H@±®¸x´>ŠDðùl4È8[î.Y”VäY>颉@xÙ‚ŒŸ=œO8¥?å)ù©fD+.*ô§½Õ@‰€d@ÒJ©œ€Ú]K>,4ÓãéêHà‹ŒŸÍDФe¨cØÓ w¶Œ{¼=J¶O¹³›ï õÍÆ!kã¡^{Ñãû3éà_À;öÿc”\#1*ŸD@¾,HÀÛJ¶Àrzí.}¾cÁ{ð#]ÌäæQp@ýé锌¯ؼa9=w•(…úøÔ»t_ô>n0:äæQp@“õУ·ÄÍ `%J¡¾®xdÁËÀ]P§ Jp@`cêÀCÛ¡`%J¡¾<ôàfî귣߼ r‹ÎAàäOMæ<ºµyAåb"7:0£=x^Л-ؼ Và©:`Ѽ×îx)¬€ô×…ŒPð…  Ë^úÇ !×ï¾yk, —D€‚=¤KÁ»â·}õ«'°?O®™À·½êÛXòäHH`GZÕØÿuØh=3h ଘH©ýŠI y–Ìx|Dyi °Ð Zسåö™öÊ©}JÐ@_=·Î Ð X§ø¶)AKŸ€mf ÁÈ2%Ð@À2%ÐáKf—è `—hñ'´J ´°J ôø”Ú¤š¼ëñJÕ.š¼é,RMö•`…5»-º<*÷|ŠâV3 ­p`‹6ŸÒ]Í#°3Ü@;¾æM$"½b# ȘCql&ÑŠÈÃFˆ»ìˆ]MvZ+à A Œ”Ûn­ô£lpûÑZˆ*8º£rÿ€Fè|Î_}Ø»à©ê@Âï!xÇ_ö.h¨'\ýþö.h!’íÃÞO–À¡‰ÑÚ€ôaï‚àcÁ •û4‘@zšqi  8Ô¶Bà€´Bà€´šB Ù ±bBíZ0”‚LÀ¦C)-lö™AK›€}fÐ@'`´Ð XgølS|¶)AK@ËÌ@Ë”@»”@»”@ «”@ «” % ‡€Mf ‡€MJ ‰€âSœþ jgÍ5P¶=%é™+]9ÑF úדôÌO’C w2!éyŸ&:Ÿ 'B’žõ‰ r3’žó©[™ôœO•@Ú4›ÇÌ>mñû¯@€AcÄÞ‚SéÓ' …Àa=x›–áÁéßÔÍ A ÁÆaxÁk®áæ ° Ž;Ù„N t1oÕoGîÉŸ$ /ý@“ÀU'ëa^ÐD×î˜õax³…†€ Â±à†µü~¬l^Ї¥%Ðh ´Z-–À'ÐÔ{¤%Ðh ´þ×[PTlÄ\IEND®B`‚omniEvents-2_6_2/doc/doxygen/a00100.html0000644000076400001440000002406410303671737020054 0ustar alexusers00000000000000 OmniEvents: events.cc File Reference

events.cc File Reference

#include "getopt.h"
#include <iostream.h>
#include <stdio.h>
#include "CosEventComm.hh"
#include "CosEventChannelAdmin.hh"
#include "naming.h"

Include dependency graph for events.cc:

Go to the source code of this file.

Classes

class  Time
class  Consumer_i
class  Supplier_i

Defines

#define STDIN_FILENO   0
#define STDOUT_FILENO   1
#define BILLION   1000000000

Functions

static void usage (int argc, char **argv)
int main (int argc, char **argv)
 The main process entry point.

Variables

CORBA::ORB_ptr orb


Define Documentation

#define BILLION   1000000000
 

Definition at line 86 of file events.cc.

#define STDIN_FILENO   0
 

Definition at line 74 of file events.cc.

Referenced by OmniEvents::DaemonImpl::redirectStreamsTo(), and Supplier_i::supply().

#define STDOUT_FILENO   1
 

Definition at line 75 of file events.cc.

Referenced by Consumer_i::push(), and OmniEvents::DaemonImpl::redirectStreamsTo().


Function Documentation

int main int  argc,
char **  argv
 

The main process entry point.

Also serves as the 'ServiceMain' entry point on Windows.

Definition at line 295 of file events.cc.

References Consumer_i::consume(), getopt(), optarg, optind, orb, str2name(), Supplier_i::supply(), and OmniEvents::usage().

static void usage int  argc,
char **  argv
[static]
 

Definition at line 432 of file events.cc.


Variable Documentation

CORBA::ORB_ptr orb
 

Definition at line 78 of file events.cc.


Generated on Fri Aug 26 20:56:14 2005 for OmniEvents by  doxygen 1.4.3-20050530
omniEvents-2_6_2/doc/doxygen/a00223.png0000644000076400001440000001001110240666435017664 0ustar alexusers00000000000000‰PNG  IHDR,À’÷!PLTEþÿÿoßßß___¿¿¿ŸŸŸ???ÿÿÿ„—}<tRNS@æØf–IDATxœíMwâF†óXŽ—šŒÝÒ²I–™I;Ö²sÒÄ,ÝNÚöҡdžeÏ9žF»0H;$0èþÊ©[ú@…L•åzÝ D =¾÷V꥾%†¾©ú즦¦¦¦¦¦Db r¾Â•Š…K+ S S S S S²b9t.žÚ«ÞÂ] z[g<.)ïNë™Oìuۀ˂ñ¸¤XüþY©éÏ;ÂÂ’¤Xæ&x†ï4‚æf¶ç‚­7‡½!øŽœ˜~ƒÜõ´aç7§¥Ã°c‘çÔûø'”¤Xè¿ßk—Aã‚V“b±Î¬38Öî‚ ˜·Žá^»ÒƳñÌÕ¡?%çG_ά°™±Øpä§ à ïNá Ú k®G~p£6=1§fØŠ¤XHMÏ]ÐËôãE‚Åsœ))uÇiÙd°ÍËb#),¹×Q´L$‘E‹ 9ùOðØ`DKÓœ¶ÂV$ÅâýI:h¬-˜Df~„å·‘R2s±¶¤°´ç‡_έ°I±ÐáöD 鉠÷)ÂB·aß=ôGgi,öK艶•””lX&5.ÍH†er ¢¥¨ÚJ¢¢& j C °…Á¢.Ÿt ¦ÙÒ$ËDH«%J –}1XøŒãª”,{ŸBb°ì} Á"A°ˆÀ"A°À"C°(,lñÇ"CñÇ"E°(,lqÇ"EqÇ"G°(,lñÆ"GñÆ"I°(,lqÆ"I),lñÅ"K DzÝE‘J.† øb)æÐv—Ц¦äÀ¨¸ ‹Â²B SŒÁ\4ÁÝqÆ™ÍÞÕƒéO:ï'’‹¦©sãèó«Â’³ Æ1ÀñKÁÂú/±\‚n …¨9†N»  yÃŽ5ë|Ü‚6¢ú˜b©|7ª<,MxO-Dh+2ð|½þÔ ,rl!7ý×G–¾ ^"TIXg¿S :"B,6Ø !¼OnÆìZß/ª¼hñ?»¡…H½EgÑôzŒEwœ®¾ ^"O,¬[–Xf¿7B þ’û=b Ì ‰ð }¼D¨’°hš#3´áÏÑkÚA,½‹ÿúÔ–ð¡JÂâ8}x±­èq çìÅè¾aÁþGß/ª,Ï•´X¶›](FGT«©h)`AC‘Â’Ç2ÙÞ!!JEaÉb™Ô¬°d°Ä½’Â2aÝV—ÏRÖɾ_‹ƒeß©ˆÁ¢Œ3)%X$˜· ËÞ§,ûŸB"°HB<±Ä8$H!X¤þX¤îXäŽXRÿî½8c‘$Xxc‘$X8c‘%X8c‘%Xøa™€DÁ¢°°Å‹49¤°°Å ËL9Ä‹<Á¢°°Å ËDª≥’`ÙêêÜ ?,Uå€ëŽx}˜–jrh·±TVZvK5ýÐnc©*‡vKEƒ–ÆRYí:–ªÆrËúž?2*1¿Ö$?,•åP„emÏŸ­iñ›UMrÃR]°DXŒÌ¶'<öòŽ]x8~:ðÀ2Ù ,ëyþEsÔòÆ|d¢1ãä_ ÏF‹ÆÒÁ K­ÂZbYÏó‡XÆS÷^»#7qu ‹iwq äþ"qòÁR«Õ*|ó—Ü5=hà1<» ÿ¦ þœ&´ç- ÷牖 'V&Ѳžç£åíÿ³=ºòü C´°X$.X&K…Ÿ?%XÖóü!hù)ŠNþ $Z~š'N@y°¬íù£Xö½vÕ‚6´ÈýEâä‚¥†Ú¶‘ç+®-k{þzw±ç¹¢=‘~—0ãÞQ,U„˄ӑ}+·–I¹ÑR[*²ý{¢#3·ÑÑ’°(<²5–é8¿…ÑTVÐH´£ï Å¤Pmuxä´›X&Ü ÔÒZÿi;ŠeËü™<ƒDFB±<ûJÓó_Uº;ÙBr`Ù::rªýíÙ/}µxay:•ÒEƒsŸ%lÀÄË„y¶œã‚!NË|²ÄK!Óˆ%ò㌭±L’ܘŒ„­·Å2V7ž–ÀB¥°ÿ{™snÃ[§[ 1"oã“­U@%úóÀ–ùímúôF¯n­«¯`q+ú`AôÓX²§?ž9ó¯ba”\ñ^¾²X½ÑÜi-ßèÙÞù•3êt_/œ×^·¸äæz ¹™`\ý¡!‹¥¯÷O‡Í›Þì!pæ.nìž]; rlqÉÍ_o_Q,äf KÉ*áBC¶ä^Íu·Ó?F–ŽÛéŒÂûäæÜùŽb!7«ÃRBlæjËo]§  S ö•ópÚuÜÎÅO1–[/¬-b)c\”ÃòÝ?—TŠK.Åòè$Ñ8·Uc)e´˜í ;î¡3l¶{Ãè´ƒ&XÆ –_oýаPoN9cèlm9êŽÓšÑè0¯ÂáœÛ±^ýcÂÙ(p;Õ`!^Y—uŽƒæ.•5àøVQ°&e^ÚK‰ï‰J½LÇçt XJ‹J*>I$þ%—†?Ôö%7žÉ1)áêâ¾Ô쉖<–×é·û¾¢þÚË/@0–|ѳÝw62Î’ÿžÜƒËUÅ ‹ûXtß°¬ˆë-«F ³ß|éXVŒ'f‰Á²Áû犱¬È¢ð˜¤·2›‹ÂÒLž‹³Óm/M´½MÞ©gOšá)ËŠc¦Ü;¨ïNë™L,KCÐÜH?no£Á¯î‘—YÜ+±d7Ú~ü‹±|¦‘~`ÙÞ†o«N"|¹ÅO‡,–g£•gرæ£'Þ7ÇhéÁ-hõñ+Ăޟz:müwÐ>Ý@KPÔÞ¦oé ÏÿÍi‘†Éš8Ñ”´Œ¶S/q…g,³îì­<ý)NÁÇzã-=èñA«Ï±vb ¬Sôô†~h=˜'pO-Aa{©kŠbÏÆ34yôP¸€˜…V¢r°0|­IÉ5íÇZypÖ}„Å à ïÓéøïiÉmx ™Sjé˜v07?QKPÔÞó¢Å¥? k.6‹KB™h%J½Äâà>;`˜Ã—µåÐÊC1ÌM˜^ë¤|¼ýcÑgFËôºn`mÑÉéØèÂÚb'í= i8‚‡±3{¬'¯b>\–XÞÿhå¡°äR,H¢Å-J"3 ÑÒ £Å†é]#‹%üŒ{]¥°†—ÑÒB+Qê%®'gk>\’ÚÚ€VŠÁû“vÐË"Ár¬]ÆXz¯HU k ¡12g9,çb,½ . f¡•(Õä ñòA3±ÚÒð»´@ Wf8œ ŒÞÝÇ éB,èý!;>ÂÝá _rËJa! ߸a+±'B²ˆÃàÿ‡­Ú«zÜBUÈ¢í±xí­ÚÛ ,…ï@ÚË©µU{»%ŸE/ýƒ…Hù,RXBå²Ha u …%ÔDaa)÷½°"®*nôz¸\Uä Á_SXÉ5h:(¼/⪉ÂÂT98èÄfQÓ~8HøwqW0IŒƒÄ¡ý^ÖŠDh¸LJŸ€ÊAâ±”?]™‡èü9n­±Dó´.{·O9\öoÙ¦R¸ìá"_ep᥌ï+,Í”ÇC%. X–…“‡Ê\n²$Ã/•º8©h.ü±”Óƒ ~×(`áãr¸ˆ=Êþ®.”˯5/þkm¸(õ*Kâ"®ÀˆÁráõ±ÿêC.(Û_jÈLÝ„…Þád’~ò‚N0Û_˜* þËÀgÒîbÉu@µr°D¥wo°pq}õŒ12÷KYÑøé·ÂÂÔöC)±ì[´ÅëÌVÇéø¿î¹Þ›‘•zij™ Ÿ‰…N™/|Ñöê…fDa)|¤bѾýÙjkoéÌX‚åñuæ1ϵXÍ>7Z¬Â²Eôð«Z(‹‘ó›Ù‘Mˆ`!çr”z„åƒ-’¨°lQxø*Kp‚+04áÞox6bÁ™Üˆ¥tRwÐìðÓÀ$ªì½þtëXÑNõ~è! šãpnxÊÏÔiÏ:mŠ[YQÙX¼?‚ \¯Ãÿ|ƒ‹Ùpxa™u~7(–ó#ëA»#XÐzDö^ßø+ÜÉ??üzˆ§‘ykég"Çi5‹O§þ_ÙÃÃ’¯¹qÉ=L\ÝÅ»máb@Žó`DX`z?¤X¨'ä„`AëÙ{}ãO¬p'ÒÐMh0ЂÆÐ¥Ÿ ±DkîL»mÐsþ¢’±4b\’-=ê.Â(Ž£ I±¼";,h=ÚÈø“ÝIÇÞl‰…´’ò3/°Ùа”?LXh´üÇÂÅ€B,:­-¤îèÔŽ–D x›b1£…:åg"B3-ËÃT‚…Ô–Çw\ ±f±øío?àÍ݉Ú%­-è(ÚÀøkY[RXpÙ¢¥Ÿ‰l3›èqŠkKö0°äkn )ø÷äw…‹z‡Îhmùߨ7Ó=Q62þÄZöD™ÚÒ‡¥Ÿéq€=)mqOd—Ó1±dUX ˆJ_9fA ü¿+¸÷«ÄRX ˆª,ßkǹ-â°äŠKñL‹‹Qùäoce«B°øÎynK…Xž¥=­°¬R¶¸(,‘¦²Y¤°DÊbápA‘j#ïîUETi^ÁRX˜âŒ¥º…¡ùJaaŠ3Y²HaaŠ7I²HaaŠ7I²ˆ;9ÂEaaŠ;9²ˆ?)ÂEaaŠ?)²HÂE–’fü •,¤‘,ûŸFB°ì‰Á²÷i$K’F%|è/B‚°$á²Ýµ"Þ__·¶Da‰ÃEaÉ* …%«ÈF¨°äE¹(,!…¥¨ÚÂÂRlàþ{ç.½YOf9Ö[89³ %Å'чÈCI_Ä·nqslp± Ï–‹ ^7µ1 –éÏù~R’ËÂõ@†ÎØ&Iä; Ú~cþ¨§QPj!ò‡Jr,͇w˃v‡Þ!‚åX»ƒsÞ:†{íJ£ å"B_È>ôy’cŸ¯Þ¹t‘´gèhŸy8…3hãòAÉL}jÛ81§&}šäXZ0»A,.èèÒuÏqFä~ÝqZ6.¡’Âù|¨$ÇbSûS:Z\ÐȽOðØ`DKÓœ¶èó$ÇòæÇ·µå½C´¶\‚=uaæbmIaA“ϲ}žäX?¡÷)Û5èêV0ôGgi,ö ê‰"á86oãyR S/ š†üMžýB°l*……)……)……)……)i±¨«Š2IaaJaaJaaJaaêÿ`=ÙRˆM£ŒIEND®B`‚omniEvents-2_6_2/doc/doxygen/a00101.html0000644000076400001440000000666210303671737020061 0ustar alexusers00000000000000 OmniEvents: Filter.cc File Reference

Filter.cc File Reference

#include "Filter.h"
#include <assert.h>

Include dependency graph for Filter.cc:

Go to the source code of this file.

Namespaces

namespace  OmniEvents

Defines

#define STR_MATCH(s1, s2)   (0==::strcmp((s1),(s2)))


Define Documentation

#define STR_MATCH s1,
s2   )     (0==::strcmp((s1),(s2)))
 

Definition at line 31 of file Filter.cc.


Generated on Fri Aug 26 20:56:14 2005 for OmniEvents by  doxygen 1.4.3-20050530
omniEvents-2_6_2/doc/doxygen/a00224.png0000644000076400001440000002352010240666436017677 0ustar alexusers00000000000000‰PNG  IHDRªCðnôÓ'PLTEþÿÿGGGoßßß___¿¿¿ŸŸŸ???ÿÿÿ“>ñtRNS@æØf IDATxœíKwÜ6–Çç{Ìz>AÓ›pYÝ#§¸´{’XËž´ÕÆ2}Úii;±å¥[‰--3}ÜGµKéQbíXIć Y ‹¼Q¬ûOL±ø?Þ .þƒ¢ú§ÿèúP„Tû(¤ÚG!Õ> ©öQHµBª}Rí£j…Tû(¤ÚG!Õ> ©öQHµBª}Rí£j…Tû(¤ÚG!Õ> ©öQHµBª}Rí£j…Tû(¤ÚG!Õ> ©öQHµBª}Rí£j…Tû(¤ÚG!ÕÎå•h^±ï÷Û"©Z 2rUTIþ"¤Ú¹j…Tû(¤ÚG!Õ>ªÕøC¶×°EHµs rÞëpºà?F™u9¬„o>’×°EHµsqr‹¿ukQåX ßü‘M\±†-Bª‹“[²ÿkQ81U¾$pŶ©v.NîÐÕEpô—›óíh|'¯ËÓ@`%l>ôÀã9?kØ"¤Ú¹8¹€Ío·Ã7!¦Ã—òº< VÂæCª7ë ´U«$Q%‹)= 1¹1¢A…¶£ŠØ &²vÃ|uÄ2Ê‘ª­¾ø• U;ÙÚ¦´R¶ªFÕÙ¼ÙôÀ¶HØ›ôfR½¾_+Re›„T¯‘ª-’óF^ R ËÀ«BUü!l"ÊÀ÷×›EHµ#eJ<Âzà‘p¼ X¬ÝßyùQ†È™*RÝmeÜ­\Z*Rµ[ÉH¥E!f¤º›Ê!Êä‹åHu÷T@TZ‡TwKeDiR?„TwGDCùŽÏ7ÁVÞ»!¿’(“nWVÑBHZ~ymÑf;šÔû ©‚J)e¦*þéR…SEnZ¾ÆAª@ª.e¤ËL¹j{Õ&Ê„TmV¢T³Fª­Ô)ÕlªHµ¹üÆHu›*Rm¨¯0yÒkªHµ‰Z"ÕnªHµ¾Ú"¥HÕ65/ÉÒ쀑jÁ ÕoªHUYPH)RµDjŸÖ”¥Û#ÕjÕª´W‘vSEªå6Ò(Qð³BªÅjýZZ í© Üïn„T;‘¿»I]_Ò±jF¾F#Ž 5u.¤*I?Q&ýG@ª±ªz’*ì«bS¤jD~£&*’2»W¤†Tµ«½ÓÍýx^ÂÕ@¶º×T!²Ñ SFªúR0*mãâ$oÀï%U ¢nU/?9R…ØË‹Jϧ\¬HV€¯£Š½Ùò°"U8V0¨÷PÜÆj¢°´T[V0dU«×éV¤Ú^­+¶T÷É©¶°‰Ò†ßr2{ ÕæÒð-­ñ3’>¤ÚTà_^Ú=$Ná]êÕ6šrÕ¾¦XÞ©6°™ÂxrÙë"ÕÚ‚5S¸ÖhNî¬>õˆ*¬ëm`(ù`¤ZGÀ ºv)÷…*°™ÂTœ"RU–õL74‘ª¢v€)Mê"ª’ ¾M7ML_aF¤ŒTŠAoc`ÁÓHx·©B2Ux/Ê Æ«¤hw'™h×.Seªi–ö*>› Õr’mž4K©*Ë<ÓÖTµFNk7©|käͤÙdªfŠÀ»I0C­“ivˆ„ªTKi¨u¶&Í‚Tè}kÚ<É.XÌÏ»ÛÞp1gãÇJ¨²Q1j°±vŽ*¤÷­¹=ÙZ2 †CWúý ~Qõ‘j®@‹Iu÷ Û‹â1Ó?‹©š)ïÕ¢~f ÔÀæ Ÿ>¿ZÜœÿèã»Ð»”ÞOSúüŽÞœOÎÏÖçg!Õpv4Ž]ó†*uê¶:ô¾L„M–¯~»[ß­çÁáKAu}±þ°|údrµ 'ãj8;:|í†TËùu¦QR„Mwõq¾˜3 Á•–®éôþ$pצtʨ†Û„¶;¹±w–¨úšRíUÐZßF»6…Ì$ªn¸è»yÞ§ºz÷–ç«ÓEªÕ4Ô¦÷–°IÆVÝpÑ«¿Ó€.\A•Ž‘ªª ½oã[KØ„å«ÕápHƒ3º|z0˜Œé RUäÝhîÉ Ÿ†eàT¾zE—l) ©Þ_³2ð´˜*¾¯n µù®¤ÙnH5W–@ êà—¸X¶@Eª€²*R…“=PÛS5ö)ÎvªAEªP² j{ªÆš¸ØMÕ*¨MóÄÕl"Ê­‰kÉjªvAb:ÿ¡i+ïܦ£¤ê¨«ª òd3U+¡¶H©ÒþAÍí’AªvêU;¡¶ 9S\"U;õ‹jÿ úÒ4©Ú«WT-„Ú6JRµ ª/rÔ–}{œÔŸHDþ±i—ÈZ) õˆ*$Tˆ÷~á|[¶±)§ú1ü÷˜,î%UH¨iEYj˸wÑߪÓÔâ>Rµ¡9‹”ÄdøëüØ<„Odz£¹>ã;ºœ»¼E±Ø 7TëJ r¿ëè¥z³¾˜Ò[2 _Ò/ÃS—·(ô…*d¦Ú:)Ñ ÎoRÑÑŸÞ0|MG¸gtäòÅbƒžPµªø;Hâé´=«‚H†„O_üJFNuÊš±±ölbƒžPµjÒ^àœJ©æ§²­öŒ*dI©åþ›7€"WîlLõZ¢ÊòÕ“žQµ§¤$5,8)é\¢:&Q¬&üÇxFNID••§ý¢ ˜©¶LJ®r5Õ¸–¿¨bù©Š‰öƒª=PåíÏÊÙúQ%[›~3|&ÿìUÀLµ‰t·žö8gð“¨n™lm»ô^Ë?wŸj×T“ÓDkªþöÏø<©Úwç©–”Ú@Ýê×Úgà<åÒR‰v*dЇ6ûnXµ’H?*"‰?¤jç]§ XRj±«†±5¥ ÊSlIÕÎ;NÕŠ’RÞ'Ô-ªžšâiÉ…m>ül“ª3Úmª6dªù=Ú·@Ïó¶ÚV´™Ÿ¼Åä%ÙïVÞÕM÷+hëÐŽjî ͺûeØBµû¯o…íWÚP-îHs‡GK¨v^§_Nd;=Uª iA²šÕª£—42ƒ’†f©²4‹.l¨B^c“´JãþlóVöÀ%éêuÁ6PBÔ ­ò¡ETo)½Ïá»iø{YºzÕªPëß­ªvfET=—ŽJ©–_–Vcµ€*èc[÷fU]Ë9»ÈV'ôK)ÕrGÝsª þ·îRÝ¿êÍúÓ|}þ ½9? ÆW”…¾>“Zò–SÕê‚»§ úÐÖKL¥‘o!Õét1“—ôvø9xýdÂBß©%oE¡J§±vNô™­•˜ZÄËœ›Qýnýt¾ #wJwuÁB_S©%oU]º¦ …³NbŠ}¡Š©¾¸ÿa¾úù¹;§£ ÌNEˆ`©Íg5UmcHvMôºj<ûÊ=,Š©,B; [å!‚Õ©RGßh¯S…õAÊ7©F¸ábªË2ª—îíð}ðú`"BŸ¨SmÛ˹DÝR…õ¿ÊHÉlºù3]Ý,æ³/I˜‡FªÀå@Eªµâ‚§ÒŒ‚C¤q¥¯‘TEµmœ‰uJ¸ ¨v‹êÝÉÔ)Нß U¿m ŸuI: ½JruøçPÍâ:¤t™·k´Öá›JÔ%U`¨*–_Ûåmµ S¨ñÕ¼ÌǶõS¬©B¿ƒWß #mäµú¬ÛÂ¥èÄr¿€¨;ªÐþ·ú!ir ·JK´nk4N¯ q].¸;ªÐOiUz͆đ©úQ½A]ªtÛÛ:Éò&'U©Î¨Bûߪôú:y¯AÔb¥U.É‹Ïó~ÿªFËbeuFÕ¬©6¶ )Y?þY³•·¬ÈG|Uií UhÏSš^‹ñÈr¼fK±¼Ô¯UìÚª&ýo«JôÍ® µ^‘v†ªAÿÛîåÁÉ™k¯ÜJªbíUhÿ[lGmƒLX‚z—šÑ†wƒ*x€â÷ü¶ælÍ@¨—Úÿ=%57q °bT$ç´ßÎ&yÛl+îUð7ï|x #ñ:™¿ â´îŸþéÍÖšwר‚ûßüaªX²C´§PúdkM°sTÁýo^‚PUqNê°ÕÊÛG/&‹éxv‚ŸË ‹w*xù7çŽÃ ƒ.×ÔÄ“ÓZŸÿä²¶ÄÁÛõÅúÃÝj΂rˆà  ^ÿðû–~ªtõ况%ÞŸ¸ 6ä½È!‚w€ªþú8CM’×Ô¼HØ*¥cÖ–8ù݈¾x“PïUè§~› ì‡hž˜®6ö"_uy+qòÕßé5ÝEªÀOýTPC¥ùc»‰ÓZžýé kK‚ ÎèõcDu½CTïùVrà-FôS¥ÿž²¶Ä!Õå½üüŽ1½¿†;CØ•mC…MŸ  Ú:9õ¤Æö¡Ï2„ö¾LÕØ'±Ta{5fji¯‡T+ú‰2“˜¦v]ŽÎ^á½  y{2†©­R­œ©f¼¯6¦üœµ9`¤šRÚPu’!Õ Ay²¬¡ê»ë”!Õà€ýµpנؘ¶D_¥~é4Tª™ªê[L5º;µÏ°BÐée¤…ªÖ^ŽLHµ\mGHΗÆNŽ\æ¨F¡‰ê -°äµPõ5C5G5vdÐTó1f 7¿…Ž˧ºù1M­H¥×J¥Þª)C¥]R}OGîÒ›ˆ–êg”Ycu›-aíÖŸßETdz“¥wø0#á48úßÃŔޯwrzmUü¦GÕ˜¡RcT7eŽ„ê˜¾¢Ï†ŸEKu¶”5Vg±±Ù’p–µgTïVó/ÃÏáì7Ã÷ÁÛÕÅã: ·‘ÒƒP¾É‚Q5g¨´3ªžw¸?… ^‰v’œ*‹Ø0û=eÍb×Xi銺‹éýžô¤G¡g'|+)=¨³Ì©Î€J&E¢ºyâ[]þ6_xÞLP =ð ֖ůލ²öìÂV_¼™²?,HëH´p]³ªL°04Lz_¦î¨®:  Õ°´ô £ÊbcǶJ® zMC[ýkd«.=ú?TiºiU³†JMQ•^åã7›!‘0_}/(>yÊßl¦,6vD•µg¨>N¿ ßGù*oá~¢•ªÌˆaïËÔU–]~zá°PË[ªGµS;¢ÊÚ³ ª—Ÿß…ÒS^æ-ܧš©n‚…¶'bÚû2uCµ•–ù—¶ï«"RHkªæ •š¢*=®í)Z Ì®;C¥HµBIÏ»š–ס÷e2MÕÿªª¡zMéõs›þ”µ8ué}™ŒP•n ø3 =ÔFqê꨺5Tj˜ª–nZ±f†žR:TÇÞ—ÉÕèÖèꆠk¦…¡ 0½ÎCMæ¨êë1¤ñ>nµ­|,m€j„jüv ­˜¾;¹}¾æÚu9IÈUãj ݇°ì"ºÏR¹ SÕ|3éš«å$!TcCÒÙL—.H6ÿ:¬ÈR¹ÌQõ}65ùà¢ÎÃjTTøî`+ð*¥;‚m;£êkÎv´kI¢Yˆ¶d©\ƨ:Tsÿ>‰—?—: UP Põ¥©N™¦š®#ÖpðêU-tÊcµæ&–~ªŽ45p “IF4m*' ¢ªßT» ÊÙ:C¥¨ ž&žfø'Gá t`Ñ[êFÚ©sÀQµÏýRýTM••˜ÀïoåióØIb5CÕÌ…,r#a§bÕMÕXY)9 *ÊAñjû°j¦jÒ›ƒN’Töµ«fªæÊJLÀOO)¬T)É6¬z©š5Uèǧì¼3ÎÙ2¬HµXÅÙêv̓]XõR5뀡ŸŸBª¹Ã3ƒº¥´R®tG©š_~ŃM‡Z©&ßË ò* ZXïkVT›*ì±ò)•E²È£”2ÕZ½¾l(1i¢êgþš”Ñ”SŠ·_·¡XõPõ»3U ª’õ뫪É褠ïÄÿi×,¿ó÷T7ÕÍC © fÙ0¡®UÕäš:*å·§Ú<|ajÿΤjr+:rDjÃú•ªuÿ™Ž}0<ÕÍ íèm?¾47µvýgº5VhªÒ½èª–¥} 6Þ'ª—n˜ª”¡tw]­ÃuA¼õ(>°t3º,0¨…œ¿;HçÅ.}0(UÙ<»ÍXZ9P˜nn]ú`A83S‡×Ä5h|æP¾³CÜ[ªA{fÔ»Bª€{fÔFª€{fÕ™±"UÀ=³êì=©î¹¥®|°D5ü{™sF_x[¸fÁœÒ{¤ª¤ŽŒU¢úð铌åÉìëO“Ó\ªŸ>G?¦ç[ë;§*Þ(‚øÂ&©•Þ[:ÚÚe1§›¥T;2V™jËÃͱwsœKuƒRšµ‡*Ç*ØL‡CyÕÇÅçá%1Hµ£—Ö4ÕëËÙƒwòè-ÝËéâõ©7;¿xúè=]}-¨Î/?Ü}¼œŸß]®N_{ÿòØï}úÚª¡¹&Tï'‹)}~GoÎ'³#Bîh|Gdz¶$g—Þ„SGÃõÂRíħKK§×ÏççW/BÄÕóùùùLüg¼?óÒÒñÌ»øxz{Ê–ÝŽî½éé÷§ÞÏÕ² /I¤šP]_¬?,Ÿ>™\­ætÊ—Ž_Ò»ðW¸$gŸ ?sªá,,ÕN|p&_ýñ»/Sœžz·//¬óí_cªŸBg%lõöû“ f²çaFûàÝü;àyì&oV?uþµ_™ÞŸîúÃ4DQu×]ˆßá씾âTÃY¾0Õ.|p†êŸÿÇ›‡¹)§ÈJKœê½—Øjà}Š<ðé<´ÕçÂV¼Û¯™­>?ðÞØá7¶J¿ÑQèt8ÅBWF4p_¼‰©Ã ÈW5QíÀ§ßlÎçÞÍøì’Sœý7³ ©Þ%Tÿñéo1ÕÉç0Gùjø<,N¯î¹}ú›T©´ôêïá…Ë)²Ò§zM[Ó¡Vªk:_=¾ Ÿê°(Ë(’SQ 1?Ÿ|ý—˜jXÆTïÿ…^ߋͽÂí¬)³Û˜¼Ù¸Á]>=˜pŠ‹ò7›êcBõÙðýb¾ÖHÕ¼±BÕþ˜]`üJej!—aIáù·ÍS"j!÷òó»˜êÒ;\ÌWUóÆ Duv`U!;j …v•ê‡ËìÓ’•MT»`üf¸g¡L+RܳP¦©nIÇ †©æì ?D‚acEª¹{tMˬ±j‹áÒõˆ ­óUØ/=¡ê·íÔRAmï· ÿ]J%í‹õR–OǬ ÖEkк_™i 2¹| ¬ÜÊ¢ZéíŒÞ ½q Á³'½ŠN6[N®B¸äfT«ö˜£;Å5:WgëœE&+rÚfT«ÎøÀÉ®ñÀŠBä#ˆ¾Æï9ÕäBì"/W< ß_Êßã«•ÙΤ 61šmß!ßœx/ Ç)1VU×ÓWª²×Ù™‚Ãêû¹]dZy`“.ØUº3Ž˜uœ<ÓJ¿Ùðì×Ñ/ÖH†«°]qo¨foÍn8bµÔ/†¢µŸ`TÄl!Uƒ.ØÈè’vÂB¹ÆÊUD5š-î`î‰62RgZ;àˆ,’lÑY ZËÙ¥»ô&çgëó_Bï;]ÌÙìYY€^SM×ÂÙ©A‰ ´¾ OÝgÃÏL^ ªáìɸ¬€9ld¬äÙî‰A!A댎X«ÿÀ]ÐÑ0¡JËúô‡jÉ•XÍ•½Ú<‘qûqÞê?pW??©®Þ½-m-nÌAuHÕn®ƒBcÝØêœC%Áp¾Téx?¨V\‰Åùë èÜå|õ=£zé^/…&ãÒ>Æ\°vªWbïì ÈÇeàcÖê?pg_.. ©Þ_‡eàÒ>ý¡Zévlåf¬ùšÖRs.¸{ªÖr-rÁH•ª¹+¹ w„T©jfbáû+¯åÏYŽT™T/Å:®ðTM—,¢j×A>¤ÊTçR¬âZà‚‘*S½K±¨ÜÄ[El/FªL5/Å¢òp¾ nÔv?’¡K3@µö¥XÕe°§²ÇTõt!m ¤Z¢&—b…¹d¬-Ô#ªnŒ æ*Úƒ¦™X±¬¥j…¹²' RµÀ\hŒTi÷æê³S‡<‡Qmq_:6WÞÐ’Rê«ï+RÔ%VÑÐRÕeæŠT‹ÕòZ: W´]<¾™KÙª–™DÛ%@ ëÕö×ÒÖè«  ¤*«#¬Q‹48cEª)uSfŠ ìà}¢ ñ¬wRfò)°±"Õl"xáä[ ¤º%óX“oqPž¢OT¡.Æ@ªÀÕNÜ}$µ^S•ÌU0€¤ ‹5 TU›ë °ÇJVD9mH¬HµžÏAa•¬H¤P®’p ©õŸªpâY-0Uàup—ö*ë„$ZKsª‹›ó½úü.ž¹¢ÁÑÑ‘+6&u†Â*08HµžVAõn}·ž/Ÿ>ùM̼>˜oè—hKR'Y(¬Hµ‘¤¾ ‹9û/pׯ£™ÕE@È/Ñ–¤Vº@X“—U¤ZG²æ0Gž÷QÌPFvùÛ<Ú’ÔKCÑÈõ “Ó- ¨²©D5 ‹áÆVÝÕçÃhKR7eˆÓK¾Ø Õú’¨.Ÿü&f^ó¦Ó3mC ÷.ÖƒƒTëK¢}“Ö)ôÛxR;U¬1©ÖWÉûêwñ ©ŸlûS‚¦b© -Îâ9R?Ùöak&9½²žêËID(œ RÕ­á4UþAØAªv¨yA8‡ê©Z¢Æ73ªÓ‚ª™jˆ=¡ÚØg¨FŸøIõŽHÕ€šÞÍ\ª)Ú|”Ì!Ujh¬ªW’·) ŒTͪ¡Þ¢JãwÖ-±àhHÕ°šÝÏ<ªQx}þ ÏH88úϳêø.Ú©šQ“*&?gŽFTƒÉKz³¾ˆÃ¿å¶zø2Ú¤¨¶ÌÈ«ÍQmrC˨.èȽل&œjz©šRïWFuõós÷ů$ ,òU¤jZõ}p©­“¬/’ðÀjTd¬{Eµ¾¡”S½t¯Ã|5úa¤Ú…j¿Þ”Q}œ}¹ˆËÀ¬ëýuà"Õ.T÷ž–Q-WácëžQ­{O‘êN¨¦Fª»¡z>XUëÞQ­÷zƒTwEu\ RÝÕÉZ%ò^¤zÏâV“2Ö=¤ZÇZêîHý¾:¹³-ÚîS#.x/©ªûàªíŽ•P±ö’ªúÕAÕ€ ÞOªÊ¯7Hu§¤xg¥Íà§~¼¯Tשׁúu_©*ú`¤ºcRºµNÁ|;iwÁûKUéõ©îšTî­Lr‡\ðSUÉZ5QÕm¬ûLUÁdœÂ­„T5ªúæ¦@‚º`­`÷šjµN›'Ü Ž¶±¹ö›j¥SÍX\ A¿: í9ժ׿ôg‹ãªFUpÊ®†B5 IûNµ‚S–*±úHU¯Ê}ðE¤ªY¥æ·½&L°ð£MHµ”Ó6U ˜ÞHU³Ê|pC üHU³JÌ/o ­+R¥eæ—Gh¬2¤ª[ÅœòÖ½Þ þ Ò¬¸Q]¤ÊTÌ)—7táŽËIDATPލž ©™2Rå*ô†¹wÈ [ !U¡"NùËa|0Ѱ¥R*2¿‚Å %¢aK!¤©k‘ C`%¶Bª±ò½j¡¯ÀJ4l)„Tår*ÎAÛ× 6¯_Ä£D#ÕÊÃZVïÔ+a“Çè‹RQ¦²Jâ–^˜È?â˜j’*ˆò¬¯Ô Ûa%l2báòÖçgçgÁYzKz4¾¹¼ ©ÞœO¤-k©ÊÊÁZîf[e®„MF|øö“qàoé³ágKz49ž‡T¯VsiËBª)ÕþžÚÆ 6îê‚GŽÒW,–ôˆ²ÿèb.ØlYCH5­-H•ÕHÍÍ•°Éh柫woY$Ú…çÍX,é˜ê©)‹µºr°±¹6á¶Ê"G³¨Ñs:d±¤‘*¸2¦§RåÛÐ\ ›ˆ|•ªÏ†ïY,iAõ©Â)[bR!ÖÌ\ ›Äe`3š.½CKZP"U@e°ªÙa­– ÑC@”wPßR©n+UÕ»Öàê+ÍI}K!¤š#¿ðG©”¹úÊ#CFRßR©æIÆSç ¹bÃA?R9]Rã˜j®$85Û=TöµÄ*ïsKê[ !Õ|Idê¿¶ òúÑD:ˆg•F\ޤ¾¥R-ÐJÓº£AZr@.,-u¥ü1:Au4'Ê;¨o)„T‹”¼ßh êpsÅVÞ(Á ÞÍi›ñ ©+Æ n¬~Í›ÚBª%òSÓžæ]*ºóZ\0ÆpéL«ªZT"Õrq¬Ð.xàkõ¿HµRüöÃրꌆT«Å°‚2PȈˆ¹Bª•Àº`ž–æ°ÏHµZÐÐÀ8ª®%5©*iå‚Í@Eªj‚rÂf "UE Úv€©¤¡"¤ª&QoÐÒÔLAEªŠâqÛÙ+ˆµ« ©ª‰ mUÑg¨ Ä…TÕľ²´ ÿj*RU“©Þ⫨Q¨HUM¹MkÈ,T¤ª&ƒµÑîf¡"UEµÂj*RU•ßÜW@]6„TUbýÊóV¯–~¯z V%ëH³sEªÊò_5Ù­Òc#ÕNÕ¬rh^µRíV¾Ç!UË4Ù ©Z.hªÂ£#ÕnN•cMQÍ„ &MŽˆTkIPõ¼+7YQ¸£qh¤("ì& l)U†5¡ú‘nÂG"ÍN©Ö :¾8Lq ©ç6¤:¨N·· ÍN©ÖPDUBF£%WšRDTdz£¹>ã;ºœ‹Tªm¨.½ ½>ÏÈHà˜ž…‹—Þárvé²uRÄæ*ªAõf}1¥·d¾¤_†§®Ø‚4;Q¤ZC1ÕƒφŸC!‰‘À1‡‹¿¾g<Ø:)bó\ú0/¾Ù Køš… Ü3:rÅΤى"ÕŠKK·î”¾ ܰÒÇ1}˜°ÍGŒ['El.©–mõů„í©N“(ü¤Ù‰"ÕŠm•²ðÌáßÄ(±š²¡£Ç­“bûVx`'ÊW 7y´UóJ¨²ðÌá_ ©öQHµBª}T#ªÕ-G±•w§ êµïVlå­AHU¿ v2„TMÈ´¹"U#2l®HÕŒbEª¦d+R5&ƒ™+R5's]ΑªAÊTMÊV¤jTI¶—¨ϽüX‚9Bª¦e⽩—¬HÕ¼ôg­HÕ¼ô—˜jÒþ©v"Q¬—Â1{)M#» !ծıjú:‡T;J…cn7ŠT»”ÏGÝ Åm¹‹–W ©v(? áB Ö-¯RíRVR°ºhy¥j—Š.‘‚ÕEË+…T»TÅø ¤iºHµKEDIÁê¢å•BªˆÔ\^)¤jHÍå•BªˆÔ\^)¤j›ŒÆ7—7t<; ÆWòò&Bªˆ°Éhr<9¦w«yðúÉDZÞDHÕ6ñÿÜÅ4pWÒò&Bªˆ°‰ úâÍ4H»“¦ "U DØDP½¦h«=a“ˆêã4x}0‘–7Rµ@„MÕËÏï° Ü‘Ô¯QÁòBªˆ¤~!Õ~ˆ¤~- –×Rµ@¤æòJ!U Dj.¯Rµ@¤æòJ!U Dj.¯Rµ@¤æòJ!U „­¼Q Bª}Rí£j…Tû¨ÿIíðz³³IEND®B`‚omniEvents-2_6_2/doc/doxygen/a00102.html0000644000076400001440000001012710303671737020051 0ustar alexusers00000000000000 OmniEvents: Filter.h File Reference

Filter.h File Reference

#include "Orb.h"
#include <string.h>
#include <iostream.h>

Include dependency graph for Filter.h:

This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Namespaces

namespace  OmniEvents

Classes

class  OmniEvents::Filter
 Event filter interface. More...
class  OmniEvents::FilterByTCKind
 The most basic event filter allows only events of a certain CORBA TCKind to pass. More...
class  OmniEvents::FilterByRepositoryId
 Allows only events of a certain CORBA RepositoryId to pass. More...


Generated on Fri Aug 26 20:56:14 2005 for OmniEvents by  doxygen 1.4.3-20050530
omniEvents-2_6_2/doc/doxygen/a00225.png0000644000076400001440000001715510240666437017710 0ustar alexusers00000000000000‰PNG  IHDRÒ^d”&$PLTEþÿÿoßßß___¿¿¿ŸŸŸ???ÿÿÿPùXtRNS@æØf÷IDATxœíKwÛF–ÇûsÌ’çô&\rúÈ–vŸt¬ewÕ2Ý ÛZ:Nb{éVb“Ë9爻†DQà¤( õ妯zÖß  Eâ§Ë‹pëÖ “ý¡ë/p4r¤MÉ‘6%GÚ”iSr¤MÉ‘6%GÚ”iSr¤MÉ‘6%GÚ”iSr¤MÉ‘6%GÚ”iSr¤MÉ‘6%GÚ”iSr¤MÉ‘6%GÚ”iSr¤MÉ‘6%GÚ”iS<éh4uýˆNz4“eh™t”çK™w¨á’.¡ºe=TÒ•î"êõ0I×¹å.Q‘tÃé¯CÔÃ#ÝÜÍèõÐH·vç:C=,Ò,Ýæ®P‰4ãåI¤ùkÔh8¤Ù/»1ê¡æ¹ÜîÆ ‚tÄy[£ÿ1Òw4º0jëI Ý¥ëÂØMš×mìwTû=Xd3i™¡æÚZÒ’7÷͵¤…½Æ^ÆÚFÒJŸ7jëH+0g*ÓFmi…O¨LµU¤Õ>u5lÔöVæ6²Õ6×&[Hëx°mÖ¨í ­'€À¬QÛ@Z[ †Q£¶€t#ç¿ ŠìlÔ¨{O:j>±Vïè‹I£î;é6ÇÄšMH›4ê~“n1h(KÚ¤Q÷š4Ùˆµœ’6hÔ=&ÝnÐPš´A£î/i¶®k<#mΨûJšÉ aéÍ:ÃÛrÅÍB/{çH§b~¤ J%‹x2ñsïè›ÒæÜG?I³_‚rQìW½u¤+Äê9°Y>¿Ú,gÿ Ïãé-ò>„÷‹MŸßÂål1»ØÍ.i´êMS·²'mÌ}ô4×]€Û×'ÿ{»»Ý­ãÓ3Jz7ß½ß>}²¸ºCoãó)"V½Ó³d7GšÏ aB:öï>¬7k 9žà3â5 îÏc÷>€&ê % § ¤M¹^‘æôX/°ŸÎ‘žL&0¾€Û§' ê=Àž;Ò9‰Ä%²D}‚Ÿ¾‚Û9.…ˆôý5î{µ¤M¹‘ bŸuÔ¤Åa±Ë“6ä>zCZ0ĈívĤEc9€ØnyÒ†ÜG?H t:±ÝŽ•´Ä` ¶[´÷ÑÒ2£N€ØnÇIZjxà¾GIZ ôˆêb‘5©Œ8êÎI«-„z¤ûú(H+- êH÷´™Sb·¤e~÷„²š Ã'-)¢ZÉŒÁ“–ƒD‡’ ö¡“–0«9™™8%vGZnØ÷Hzäx^ƒ&-E‰øŒ±#Í"¹“!Y*̇2`ÒRÝ;Ê%RÈÄ)±ÒG–=4Pi‡ƒ%-þ³ßMT g¨¤ÅAçzÏŽt»„Až6ª=‰8%š'- ºx9èH·IôAçYñï}€¤A—Âé ‚.ßGRŒfp¤Å@WÅÝ8Ò]ucTu·lh¤Eާ:ìt2Já7ã”IÒ"7;jîô–ÆŒÍÕÕi!Ð5åŽtƒ@׆ –Ü´#½—À9¬þ¡#Ý îciŠ©.5æHgâö½éZñúޖɳJ%)A2 îñ:y‡óy‡õ5Ò|GÒ6£…t–vb³N’{i.“nOùÈN:Y=Ò<•TGz»ºô·!Éèñ S»Y'É=²ÄC'ÍaÒL1e.”àçÉ;ÿÙäSìÇ‹3J:Iî‘%ö:iæã`-WGúz~¿ý ô&i´!Kì1pÒ¬=<朼u¤OÂpûw?=OI“äÙÐüa“fõìa£M6½†œg"ž¬7”4Nîq$¤ÙŽ‚g˜m³Ÿ~‹I_ú×[ê=Àtw$¤ÙLš+ºŽôvõ õ=Ncÿqõy~ù "M’{Äþqf9¾qã;w5™‚3°_=éAÄ01ïݧÃ&9†$™t«¹ògœÈsIFÊ}Á¸ë€I·ƒÀ |›t×Èy6“J¡R&íütÛ!ˆq+4J‡p=éæP“ÐFôtxô¤›@‹ç^ʵáñÌcéÈëI7€Ì Oãüª’)æ¬']Sjrq†-Çu’®e î8ˆ2Òä4 âBÚòñˆu†"=5ܸ´"+ËI×|}u)fÔýæí&]ÍAÒq^Õµ¨SÚHWw¥•¤ãHÚPx³štÕ—WaÐû¦â±™tSU“¤f#ô•ÉbÒ 4L¹¨¤c/é ¨ gýu¤3•A«3èÔm(½¬³•t‰ªÚi¬)cÛÒ{è ]x¬xºð([(mQ·Ô“>­|ZvÂEi£V’>tÈêòí?/ŽžôÁ•¡Êá¾Q¨š…¤@+wôC #]$«Áqa.ঢ়tÑUhq´ex䤋žCã ¤]¤ hu9¢#'=ª}£\ãF4w­sŠT¶¨_„4s´„\ºE7¢¹c,;hQ¿ièH×iÜèWiur¤Í‘n"ãH«“õ¤×>x­ÀÝ»Uù0Ç ßUð;ÒMÊ‘þøq–ãÌ>üþé¾’ôÃÇé›'æIGͪIz¾‘ÎsÆo¿ ÃïªIïß<6ôŽt2Þ³‡¤¿ ç³%¼\?} ý““0ü¸Úú—Wþ‡¸­†ç é§›çKø*ؼCËõë_­ÂùÓÇÞÆY=žßBœÛ¶’68çgFúiøçð»_®_½Goqéjw¯/Ñ;T‚V—Ó—”ôãMüÛÇ/Ñê??~³~qãÝž…sT§/¤ãóéöé“›M' áýzö7ïÏëþGH?„+dèø=Z]Ï®ÎðqÎV'áO¨òCøzý.< ž“ZFH7þØSÒÈsìÞ÷”4´ü=^áôE„,òoŸ~¸ùûyJz¡GmúÍÿ<à—TaŽöü×ûéþ¾ûù‡¾QI_ýíU‡)itFü'&½~·Îl:\Í(éûÙô‰MÏÂ×ÿgŒtˬf i8áÆï)é¨ó¶y‡üô7”ì‡)éå!Ò‹”ôrz‘øéûÛ‡ß>~“øéY¸> ŸwMšNÿ™x€üôIýô.üyÔ™@\¯ï“+—‡ÛÍo^B:<ß%}Å—EC@ú³pé!×bˆt˜üôÁ¤ïqïiŽÂž‘–Òò2ÿNë7n!ýÇŠ-C"ý¡py®ó ןéÜ”Wã6‘¾)Þ1Ñù…ëH§ó4œôt~ᨚˈ ! Ýa2r1né*7MG4Ó¥#­J¤“HËãH+RÙMÒHú'p¤©Dú0¶¤ß¤åu*¦¦ÑÊ*:r°”@dU¤õ¡.ºi¥#I5K]¤ÔãBøŸ¢6Õ4Ó"…Q½# UpÓª>Ã:ÒE¢uÞM+³«[jG_hG½wÓ #ám$­õÞyˆÏ¤]–•¤¡^_½w¶×<Qù!d=¥D;I ¨ü‰¥¤ÕþZl%]LѨ´åÔyØ76ÔB:Òæ«“VýS1ø$@±´¡•›W!{IY¨ãB›UÚfÒżÅê25’–Ô{U›Ip¨Ê>JχZ®‡LHé赊¼5Ĥu¥±Ð/]ùò¢âY¢#U)Ë-ëh´$m9 ‹·«G#i£Æ hºA¨¥ÕCéË {ëCu¤ ´õ¤£Âµ"ÇÒÉ[1ØÍ³ôGNz2ñã ˆóo²›“^"ý˜‘~6y»Yï˜Iã@êKÿùé4½ò!GDzï>2?}ºCœ“}è•Kì_~ú9%½ O7ëØg#»ry\}ž§}+´óýu®‘Á“ÞF_¯ÆœMÎÑ֭ԨûKÚ€û0B:µGZ»’ãè1iýîà éä8iíê?iýîà éä8iý¢Fͱå‹$®æ‹ÿ´„DdÍþj”!Ò‚&“FQFcí&7Ò‚’î¦z.Ü éþS¤E$Kg%ܪÁýu¦ù½°u»c¤…m&͆GGnÙEmŽ´ð‘$¨Ó¡ÌÚ [³û0GZüHèßhŸ®F“a‡´øÏ“Í'»Òbؚ݇AÒFC‡éSå)‡= Ò‡Bæ?Ü_µÑë>L’–9bÔ¥ý#¥°ÇZa%-cÔãš"ÃwÓ¦tÎÝm–´ŒÉDõ‰ëU™¶ÞëP³¤eN:uF´¬ÒHKõ¸nŽ€D²œ"é×2LZƨ£¶)·$aK¸n–aÒR'÷qEï£$qÃŒ†EZʨÇÍî#“ m…ݘ ™&-eÔG†ÚÃ"-uÍ;æ{ÊÅ [ç)Ñ8i9£ft{ñY©¾[²]–2j\—5ÚòâtAZîÞ‚ÐCrØúu¤¥ŒZ4£$k¿âïd‰Áœß ÒržZâçÍÒaÌ­±×¤ê‚´œ§–ýðæ4g€¹!öšT]–2j5Ž´L»mœIì5©:!-uKOYï èJšÆùWн&U'¤åné)ìä:%Mãü+Å^“ªÒ2_¸/^ZÚKN“ùqþLb¯IÕ i£éÈõ >Ìû°×¤êˆ´„]rÞû`U”ç_N6’ ±¦œÐi©Ø-IïàõǤ g¼9Ðq‘Ö+PuFLGAçdiq»Œ"-ÑFÉÅ'À :ßÍ.fñK° 8Ž7]^.éål÷59Ôi »éŒëxám_Ÿ,âóiìÇopúœ Ç[¼Z¼B¤qš}MuFZ"Rg¨À /öïæ$ïM NŸ=߃ø$iuö59Ôi© _ݤ=äï~~ƒó_lÂp…3ᤤ×ÇDz¬Ñ}¼ 6óÞàœ7k8Á™p,&-5F@›Q¼ ~PÒÏ&oq&JúÜFÒâ´ô“Nú8ã ܆§8%XIZبG£Ê†šT’ÍåHsJfÜœ.÷4Ԥ꒴Ì`PGšK¢Ï¹5º ¡&U§¤E‡í;ÒܶïHóJôXŸ£jRuKZÐ25‘Æ·¨™C˜¬ˆaÊIŒ×Xƒ£N$*n5§ŽI‹ñÒAZ~bÁuLZ̨Çn}(˜,³YŽt*Í&Ý9i!'0ÖqëC3èÎI ™f¤ôHçÈ ¬ÎI‹‹³V¨‘öDq“1êHùÓ€Ô6ÇvªîI Øf¤ú±-ùÃÉÃT£<Ã¥îI ‹`ÒÓS## û@šß¨IV&e§D3 û@šß8©[UEÚ è^æGFòç)²jÍ]ŽL} ÍoUI¦B=`#sØbÙKŽU6ä¤aOHsÛÁ)¸~6º¤¹šÖ—¿'dtOHóµ"ÒúSâçÔÒ¼FM½‡ä­{¹<ªd;iÉü¿ÕÒœîƒ@’{ðgt_Hsu槅݇qн!ÍgÔ &ì?¾à÷ˆLzÔö[¸Sè‘ÈnÒˆõ"ŸÖúKhš¡ ˆ|bH󹌴àm‹u[…!“æ2êi¡ù鎚4Qg•±#- GÚ”8܇NÒÔïš4‡Q—I‡á•ŸmN¡ÜÂtè`’=bŸ1¢‰4A] }X0Ï‚zDšÝ¨Ë¤ƒÉ‹Ól3I„ò†¾iŒ:#ýî«$Ìß³ ¡Îa„IÉÕ{AÒ£é \0Ï‚zDšÝ}T“Þ† x}1]NW/W ¸@ÅÛðt»ºôñ¶\”Ò£„4iæú‹§·p»zåÓ€ç˜öêif£®"}òþÙä¼ËÝ܃hÀ`ŠŠ¿š¼ýOW ¥cÉT©¦ƒ×¾Ô±d¼ªT“­¸(¡du_I7ØjÔøVLP÷–t=ÀÃ-J éGÝ[ÒõI«é:h4Ð_ÒµK1|^ÓZÕuùO è—?ð¬Èõª3êr¹ªKŠZ“Çî1éºC®(Ve¤MwRûLº¦?PUª ¢œä†SƒÐoÒ5^¡Šª²NÚhT5Å{Nuå­ê5éjS­,Tv—(Í£j¶×•·ªß¤+ùU›¯²ŽC’H Ôl®+oU¿IóødegE:Ôl®+oUÏIWu­ŸPƒ:J†~‚šíuå­ê9é ®÷ÈJP§¤ëN±@´á¾“æºLQy‘8Ë[ÕwÒe£nêe(D 8Ë[Õ{Ò¥žrcNjÀYÞªÞ“æ¼Iª 5À oº¼\Âéê<ž^åËEÔÒ‡þ£åjPj€ÞâÕâ¼½[ǯŸ,rå"²€ô·]w+B ðÂ#ÿüMûwó\¹ˆ, }À¶õ‡Ô/(é?q–Ä ˆ6héâI±ý^’Ô/(ékx,6]ô wíT x‘~ â×'‹\¹ˆ¬ ͦàf>À JúòÓÏÇÑ÷€E£f‚(¿Þy5岃4 ¯4jPxw<¤sàXs5I¢…wÛšrYBZ`l‹d¨ à,o•-¤÷€ÙmU 5à,o•5¤3oÀádPÎòVYC:ó<þW¢·8Ë[eéÄBù‚‹;kÀYÞ*‹H'³mqî$jÖÇYs ⪹;ÌÏûT-›H'³_sïeÒâ¶Ù­YÛGZænF—fm!iÔ𵤥îÑufÖV’–BÝ•YÛIZî&7fmét®q™&:1k[IKFÏt`ÖÖ’–Dí²"·+³FIV#—«·Eûß½,*³.ÄfÒÒ¨#“¬­&-TjµÝ¤8€ý©Q3sûHo›*x›ž5›·í¤•<ú&¬#ÍëI«é#ÊÑH/jûI+×Ò8X\…†@ÚÔƒ ­äd–äõ`Pªu’´C ƒ´gf›`%x¬¤åͺ-¯Ç¡Ž€t݆¢»sΦ÷ªµ:%ç3Gz¯†ÌÔ ÌÚ‘Þ«Érå/>齚}„,kBpó—Õ¢jãf]¬Ç# I·EæÉ±&ïŸþé‡Ò–ß‘>”̵!Cø¤´%v¤«ê6%}ŽÏoaüòÅbZzw2ñ5SHYN5aÆ¥ÑjÐM4ÛHƒê"ËI#ÌÔÝ2ºÐjíŽÃ‘.)Gi²/ ÕñòÁ§[pÑ@H'iîBzÒ¤3·¿=Åÿq‘Æû‚}õا[p‘õ¤a>vñf?Ë“NÝþ€wóøå_—3ÄÛ›Þ¶µ‘ì ð:òÓ˜]Ð-¸h¤±èá/ßÃ×»Ù/Á‰§W$Êu> éÄÅx‡øÍæfòBwzVø¨ú}^G¤—»ùÐl‹~l‚u¼8ƒ7“Oñë' œ åä à—–ñÌûˆuJlø¡óSlLûbÒÃóX é¯wO×DÁ‰}ôÓ÷wï¯a.JkÜÞ¦©÷ð‘ïñ°ãM±±Úô‹_Á€I¿¸ÿv}÷ÓsMòs¬q6”æÒrðŸijÓl¤Çû^´÷ˆÏ6è÷g6 7>7é¬éå!Ò7“·;FÒøà"}=hÒÛcÒ—>‚¿>Yàl(<ç!¯‡¯\i|zõYHÓ€´ïq½/é»åfý¸ú<ÏúWˆqÀAºÐÿ6,P]4,Ò©pÚk¯ÆÚ_ ºÈ‘fhޝ P]4LÒ]Ômª±6ÇÕ¨.(é:±>w¤k垘’{ºeJ\OlÛ]ˆ#]+®g.íAÓ.²¦VŠ#k4h(¤yen,@ªc%m~ì£%m8zú¨I»Y°Íɨ9jÒnD‘A™C}ì¤Í¡>zÒÆP;Ò¦P;Ò¦z{Ž44tÄ‘&2pÄ‘¦ÒÚ‘NDQkäíH§Â¨u^ž;Ò™¢±ÖS£#½—Þt½ŽtNZSP;Ò9E:Ø;Ò9%cõÈ‘Î)>QFp ‘Æ霒!A ­ÞHãŽtQL'EGZ‘@[GZ‘@[GZ‘@[GZ‘@[GZ‘@þÍ~¸Ì~œ¿#­H ]ù€þÌŠiåéJP(v¤• åtõr®/¼xz ·«W~.w…#­H€,—»yo€ŸžÁÏ“w~.w…#­H€,—Ø{\C/öcÿz~.w…#­H€,_ü 0ZB:ÀÃó÷£ÏiEt‰½G·iGZµY^çHc?}îH+ Ëé ¼ iÜ÷i奒o‹™iE¥’¯&ÏòoiE¥’-IpšÉ‘V$ÐVÁ‘V$ÐVÁ‘V$ÐVÁ‘V$ÐVÁ‘V$ÐVÁ‘V$Yc·iSr¤MÉ‘6%GÚ”þiJªú<ã3IEND®B`‚omniEvents-2_6_2/doc/doxygen/a00226.png0000644000076400001440000000331010240666437017675 0ustar alexusers00000000000000‰PNG  IHDR‡‡Gˆù!PLTEþÿÿoßßß___¿¿¿ŸŸŸ???ÿÿÿ„—}<tRNS@æØfUIDATxœíœMsÚ8Çû¸öèÎØÇ´ÓŽÛ6/>î¶aÃ1éKÈ1Kìc§›>Œ#ŸŠ ëSîóH&Á41EÂöøÏ,YýžÇûžÐüëç“m÷`*!²¢"+*!²"¹Ù¼<é>³„XG%Ä=*!ÖQ /Z‰ê*ùHՕƾyðàgn ÂV”ÅÊK¿«ôô;!E‹ ¡¶²?Ö¶ ’•vP§AýNíöÚÊþXÛƒ˜Z¾Mk×Ô1¬Ð=Щ¯©kÚp›XÁf@,11¾ÒZŸm|´ŸSUí€Ô·11'ÁÞŽÕ{Ôfµjýˆ^C j"Ø|®t9DdÍNw¬H N«ÖP? WËWJw»غ=mFÚä¢B‹4ÍçeØ´é1 ìºOÕ}¬cÝØÐPÿ c½MßncâµJUBLÖéP§ã ¦ýþÙB!Äå#1þ\ƒ ;U›ß<·qµEˆã¿ àk¬ÓØ b@oF£J<ôF¢ÉG¦ãnG¢Ù¦ï¶ ™3jÓ`¯j±Nûÿ° ³ˆçÊù¢· ÑÀcð]}2ƒ­+å|»õÀ¤˜d°Ó-ì"­×ý2‡€ìÃ!fî• §Þœ¾‚vYÈN¿¥×Ë9„ðÛË59„8²–kr±ªb•÷¨„XC£Jþ/žž ú`‰Q !*â>Z„@i"$AŒ„2È––bÉ€Í B4ƒ ±ñ€1ý$@*BƒpñA…BàHaGi9 â F•ŠŒÄÄ$ ¢’Ô(Q#‰  p $E„0ˆJ F"ß1QI ñ¨+3÷ŠClÚL•šúW]|¸E QB”ò R'6Íf‰®¸ú¸å®ò™ØÇÖ]7“ivÉ.®:nÑé ]²ËÝéa§3/ìÜ ‘êˆìâì7 °øwCÜÂÄŽˆt§››NqHLá=ooF´j•Žh½¾öŒ` l’æ,†Øók=±ý<{§ŸNܘ{³ˆ”çN¬‹jÃé9hzRÑõD™k ÖO±G^]ïäŠXëN†‘׃ÔÀ¦Ó¸ìqˆÙ0úÞÙ…Í÷Co¨^ÚÄiO9„ub éIE×¥WJ­Mé (zÆè× ÏÀƒIèÂð`6=£„=!†VÉgh’S¯Eªvµâ•´bgY*{h¾­2ÏmÓ·hmJ=ÎÈE÷ë4L§áðmsa¿â#ññ]ˆ/!40á›sˆ5G‚=öÏæö¢õ/DÿÍ ‰H‡C@`¿G¯åÝŒq 1%0gñHäô¿?_ b@oGâZ›ÒAt sú-ˆ‰CÞéËK±aÍ!œF;މéuø½sÇ„A¼*©-Bð+kAÌ8Äbâ­Mé pªÿ S Ò ty0váµÿ]!Hsg'k÷hHt– â¨0×騢×ý¢r×Ó:Ùé·äôKïý#º(â2q’Oˆaò¬+ŸK*!Jˆ"›Vê«/ò! q“bT€«âŸ?QŒ;ER)ÄÝ.ÂÝÓBÜÇ.†£€+ïÞ®"¸lŠáw’A!Á(ž¢´”>V¢zrlÖ‚­$ûØÓ(Y®}¡–÷òG éT„Ÿãã‡Q‹÷]6{iKöJ[1ÅÃËPâg‡Ò— ã‘‘s˜SOóÁ0ò±‰<•ˆL'z„ººìýÅbBÙ„˜­,û„O9ƒX]ö Ÿr:÷89†¥²^ŸSU ®ðºzÃÕ‚ ¾ÚIÿSv ^*çÜãÔGB4è1.í„+<ÙÔ™˜ñ’Y<ì¤ÿ);6=à~5ØðÍ‚Â1_áÉ¡ñ*H¡î/ùŸ2á{T]€À‘¾y>!.‡Øÿ§¶‚—%ÿSf –F!&Ÿê°Oá:ŸN #qëÊÆÄ.˜çêçbPÇDÒÿ”ÌN‰˜¨ÓW¬!Z,;rg§¤ÿ);ÖDó—Þ‘CˆàôY=Y“CZjÉŠ OmniEvents: gethostname.h File Reference

gethostname.h File Reference

#include <errno.h>

Include dependency graph for gethostname.h:

This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Defines

#define MAXHOSTNAMELEN   256
 Provides the function `int gethostname(char* hostname, size_t len)' in a platform independent manner.

Functions

int gethostname (char *hostname, size_t len)


Define Documentation

#define MAXHOSTNAMELEN   256
 

Provides the function `int gethostname(char* hostname, size_t len)' in a platform independent manner.

The associated macro MAXHOSTNAMELEN is also guaranteed to be set correctly.

Definition at line 65 of file gethostname.h.

Referenced by gethostname(), and OmniEvents::omniEventsLog::initializeFileNames().


Function Documentation

int gethostname char *  hostname,
size_t  len
[inline]
 

Definition at line 76 of file gethostname.h.

References MAXHOSTNAMELEN.

Referenced by OmniEvents::omniEventsLog::initializeFileNames().


Generated on Fri Aug 26 20:56:14 2005 for OmniEvents by  doxygen 1.4.3-20050530
omniEvents-2_6_2/doc/doxygen/a00227.png0000644000076400001440000000275310240666437017710 0ustar alexusers00000000000000‰PNG  IHDRD‡œÏ=[!PLTEþÿÿo???¿¿¿___ßßߟŸŸÿÿÿ烚tRNS@æØfxIDATxœíÛËsâ6ðý¸æ¸ÙÝLrLg²wÉ´øÈÔÉXÇÒ<ÌqÛðq§CŽ1K7À6èû++ùÁc¡`˲Ìtý% (Ö/z8±>ë œ|¼©pOú ûÑshÏÔ¾ÓØØÈIg$kt:­漈è^¾^¶ñÛ˜ØÈÑœ1£Ôéu4ÕÀ…¯˜Èþ±‘“ÎHì²ÃýÓó!’ùp ÇâªMvÀù‡sFDÆãùÛÖŠHr [ŸÁ?m¶b«ß‰Ó“oÅ9ðŽF@À &zýN´ñ·§)±5¹é°±øQ„¸ª8‹ZLlTë%Äanb4}M>ƒ9Ï™+žÑ]Ò=sÑÇúbü¥ÝüÄ#‘ƒ*Î^²&ÖÄšXÕ3Eþ™—úeåDž•±ŠŒ¹ÖO~ñ*2æ\H®Â˜w9¾czcþÔr£@‚MµQ$Myò9@å óBùhµF±¬¾R£à½*¢w˜LAYv¿È}:Šr‚Eîv:tû§Ä(pÏØj}®ä(rs`º£ä(JT`,rÿbCMW&–o,Nld¿ˆbÄ$æ…päà5QÆÁk¢Œƒÿ@Äàò5]Þ¢O¶‹´ñùž¼t@ 5„UŽ5É«ò§uY™Äû¿œ”h›‰ÝÏFOÛK|Ò×D°K&6£Ï˜¸y¦È×Á×÷çÙ)_±`ð¶âëøãŠòÓá¯GIj^V>‘7ÏöyK¾)–Ýåß=šŠ¢­K¦~ ö{â¦ñpØ„/Æ%ŠòÓAô^”¤æeË!òœ©MÜÙ0ÙEˆï“Ž?xfšÜ€5’Ÿæ{’“Ó¼¬|"ëèkžy¾þ-êhø™UÊ·Ds"ëèù•É~ƒëw)ÑÀxÆCè6‘0"”AdsåoE-îhøú7$[¢ãéXµ"# /0ÓwZ±4âý݃ÃǢȆaí@¼%š¡‚ߣ“#.VĦq8–$‹kâ°Öƒ‘àùãÁ&Ñ-XRÔDQeDM”?ñô/õKš(#j¢ŒøLµö=ÇÑ•IEND®B`‚omniEvents-2_6_2/doc/doxygen/a00228.png0000644000076400001440000000635410240666440017704 0ustar alexusers00000000000000‰PNG  IHDRrìóV¼'PLTEþÿÿGGGoßßß___¿¿¿ŸŸŸ???ÿÿÿØË[ÜtRNS@æØf sIDATxœíMsÛ¸Ç÷;i¦—ú¨N%õv»ö1³×8ng£ZÇ$³‰ri'«]Gº¶³3Ö­´d™¼Q/‘‰U<I)¾AÿÄBøÓƒÀƒ¯°V5}Uw+M®ª4¹ªÒäªJ“«*M®ª4¹ªÒäªJ“«ªŽ³ÈÉùì÷‡B¸3äŽÑÉ#‡Òƒ49Mî¨4¹ªÒäªJ“«*M®ª(sû Ù®ü7FâXŠzôùÑ öu‰Üê—þßÌ2äzgð‚üèϰݙôµ½xJg}ÿËó?öÑ=“ Ö“£WïÓÙ!¼™z×/ÂÏ<QŽ‘ëõö¹u°D“1=A —ïÓñÈŸã½[=ößW7A”ãäzgö ¹ÅvÚ1›ëvC+ _fˆ¡—#ÿ³@®C¹Õ.žÉ­&)ç (¸B EmîÕo¨ äÜÀZ‚²j_CrÔæŠ‘;Û—s¨ý¹5Êb8^Cø­Bî±ÿa[¼ Øró–“ .wÿÖg¸o r¤nõÌ"äè ‚ ­[¿Ì÷Am"çöØptõúî+SlM‘&—®CSKJ“;”{[Ø.9bŽÝ$çg²'§mŽU.6{÷•¡®‘s `ù3M.RAnQ«ÉQæÞ|éžj_Ź‘v°›Û`©ªÆ‘+ÁÍ¿(½œF® 7ìÂF¸†‘+e@®0h¾šD®\‘%\ƒÈ¹åŠzÑàšC®dI/\SÈ•48 àB®lÓB¸F+kpRÀ5\鶬p WúîI8õÉ© NyrnéH§:¹Ò¤Sœ\ižŒJmr¥Á IEº”&W„LpJ“SœÊäÊV«rÁ)L®lí œÂäJ>U’ N]r±¼z¬ÓÏï÷Ë4Д.¿ ¡’ T–\ EN—¨“³Qá/,“JUrñê!‡Ü‘ö/*üÅcRµ‚Ü‘"þÆâ1©T%‡‘—[³¡ÂßX<&•¢ä5¥&WTÉF°&WTÉ‚‹¢!í—Î~ŽàʉŽ+¨nlŒ”ã'A%Ó¨$¹ƒV-½<«ßÇ3 sÈ1“SŸƒ°pz*£v‘;¼a ÈÁÆ /8Ÿœ?˜±aáÜFí"wØÈˆÈ­c·D—Ox>Æ«ÅdÆŽ+˜ø…`ßÀ—x;OÆÞ5ZÛ³íäWl ÷ Ìœ•L¥‚äRî@YrØZÿåÅìáÕÃÆaÇå²×oÎgÞpà™Þ;|ÑÿìÍn°1»Ýbæ$¨d2Õ#—vëÖ>9ÏÜ~œ“‹¶ÂŒ›;9Õ37SoHr«‡Èg^¯°aþ1'A%Ó©¹Ô§rq›3l{êï‡ks‰¼yÿ΃™†¶½Üü|‘sZC.õN*NÎÃ+³¹°U6·Á[M¹ï!¯}äÒ³%˹󙅇¹äàÁ†–sˆ’»èðÐ}@nØrɼ´-bäFˆÔ”¤xÊ!k ÓºõËœ[ÛWÏËß§”œÕrÏÙÜü oXß}¥u=¸ùÞ°&—öHÜÍŸð†5¹”<é²®²Õqr‡µ*Ü´³5D¦:M.9×Á êÆiF¶ºLî€[äo„qš‘ýéöôàäô&õ¿žÿ~šÜE÷ºÓk˜7e4Uàp*Ê¥qåöTgöð7­§º¹tjÅ$}p„JäN¨*o°f …Èy'}¥¼ÂZC®ü(öÕr²ó«Hr¤Ö›Å‚©?ß„¢ÎÐSÉIί"ÉAÿ(£O?ß„¸‘“œ_…’‹Z?ß„ø‘“›_“û2[Yøò /&³Ýò<„úaIø\CnŽûžNNªÑ &·n?B÷(ôjZ¾WZ !@î¢ÿ™qì{:¹Ì$‰jd}B÷(ôjîÉA³ðkƱ/r2ó«èrî;ÓîQòoæV!äú¶½dÜÓò '1¿Š&÷ú˜vZPCl.®VÎÊï0%DM÷9““ht‚[%¦7Æ´{ºù~éOL<_û¦º$åëØW“ÃL9wµžbL»GñÛo?âû_-y^Þ’º•uìË…œ¼ì*ûî eH“Ã5Ý·R5|Nuä¤]ëÈI3:…ÈqzÖ!Ëè"çwG]XöWR=·Æ;q*Adtª‘ñîVºW¤Ï=‘£BÎýcÉ®j;ÖS½÷"Ï,¸u\öMsÉq)­ülË,Ds\1rr²+r) ƒTT0¼¼499FÇ›œ[`pj¹“#ó+NNŠÑq&äy¶"?DóÉaþä*äV)ÙU9néfgZW‚œ £QÎq>er2ŒŽ{ݪ9 F'Àæ¸ÿÞ6t>êÚž…;Wxþ¯«UО$'Áèx“;à Á†ÎG½è¦;ßö?àÇï§Ïi”râŽw«D„k)›`ž~î\ã9ï†4Ê9ñFǙܙˆ$#ØøÀ`r*Ýq|zß…ƒRÉ 7:¾äÄ$Á†ššƒû{›#ÿ ¢’nt|ɉI-‚ vÑÿ@w œ³°¬¸FN´Ñq%'(±6©R£Bzs}¥mt\É J+Ê<²ž;iä\,Ôðx’•L”yäEx(ü=37šÜæ)ÚK;ìžñyÈš.žäDý¾(?J*9ìŠ[a®åä0Ï7Iq$'¬4FùQ²É 3:Žä„ýº(?Êr¢’ÕjrÁ³ýr½µEÅœ¸¦SÙžê}’ öeXìq5Ü j9éL‹‰ Cyqê%§¤Éùʯ#4¹ ¡¼õ’S4³‚P^„ZÉ)lrqriþˆk%§°ÉíÉ'âç(X“Ë wânÕ §rf È –×K4Þà ¯—·&ãJ¸Nrjš\l\Êb;µð#2¼«ü{d2®„k$§¨ÉÅÆB- ·ÎÁÏ«gޱa2®„5¹¤bãï^ý†•O΂Yz{ç¤5’S3³ÆïøÑv‘£6§9õL.æÿùAs†”sCÈ©br{\ô½ËŽm,Ñä nµ W¿ÉÅxíåfͧø1¾LImäê3¹^²@™£e¿í_°oë"'ßi^±P¬ð˜ÖqQ5‘“˜WÝ‚ÄByê!'ÃWl™ŒòByj!'\E;Ê‹P9àÜMì@(/B äx‚ã,Ê‹P9)X$‘=Õ•&ò²syËK<0Á’M®Ç©Ô¯_’Èñª&’`rnÓód¶‘k1±P¼ÉµŸX(.ä˜çˆõ]‰l1äÈë}ŒË_çë.F ¹ÝÝKåÅòÏw?N Ù\'Å’‹SÙ-nmò_“ËPœÜü~¹³‡ÏöÚ¼·VoFö£±ôl?dj;“äæ¾µ‡[M.AîÁx¸Y >Ýo 0‡„y@B€ÜOw_Ûöï¾~ºþt¯ÉÅkˆÑn~éLnvãž„¹ýmŸÛ?[£Ç‘&—(çþ9µ§>9+Ì­BÈÝa¼òc9Q½QsâkU‚Ü7µ{9ñÉ-nº]zË„¢Ͼ›{KlîR“‹·J&ι½Œï}r¤UbNì/‹„8£!)ç~x åÜO×c]Î%ʹۅaCÍ äÐhŒÿ~cÏþ´ƒ§Õ©[o¡‚Õu«¯œ»¯‘nÏe©¶g—&WUš\UirU¥ÉU•&WUš\UÖÇßͧÁT'ŽÈéè“tÐÉãçºÐÍ•*c6;ŠŽÃ8Ꭲã2ª¿“èøÌÁé"ºVϘ*Nó[;Ø8á5½{è¸yÝè:~Þ…º†Ž£µŽ¡ãé-²[èšàOXMñõaÝ%tMð8¯¦8¯rС¢ŽûÚKœÏ§®ø¯ Äû„ªJÀº†ÜϨ¦¬¥Ù‘ V9Ú6i}5+býV€5˜Ô’˜5ƒ{þœ9²·)à~‰H‚x‰Y§÷ΨgŸ"3䑘$ˆ– r¡Ó OmniEvents: getopt.cc File Reference

getopt.cc File Reference

#include "getopt.h"
#include <errno.h>
#include <stdio.h>
#include <string.h>

Include dependency graph for getopt.cc:

Go to the source code of this file.

Functions

int getopt (int argc, char *argv[], const char *optionS)

Variables

static char * letP = NULL
static char SW = '-'
int optind = 1
char * optarg
int opterr = 1


Function Documentation

int getopt int  argc,
char *  argv[],
const char *  optionS
 

Definition at line 88 of file getopt.cc.

References letP, optarg, opterr, optind, and SW.

Referenced by main().


Variable Documentation

char* letP = NULL [static]
 

Definition at line 74 of file getopt.cc.

Referenced by getopt().

char* optarg
 

Definition at line 83 of file getopt.cc.

Referenced by getopt(), and main().

int opterr = 1
 

Definition at line 84 of file getopt.cc.

Referenced by getopt().

int optind = 1
 

Definition at line 82 of file getopt.cc.

Referenced by getopt(), and main().

char SW = '-' [static]
 

Definition at line 76 of file getopt.cc.

Referenced by getopt().


Generated on Fri Aug 26 20:56:14 2005 for OmniEvents by  doxygen 1.4.3-20050530
omniEvents-2_6_2/doc/doxygen/a00229.png0000644000076400001440000000371610240666440017704 0ustar alexusers00000000000000‰PNG  IHDRÏŠ>´Üs$PLTEþÿÿGGGoßßß___¿¿¿ŸŸŸ???ÿÿÿ†˜?tRNS@æØfXIDATxœíœMoÛ6ÇûY ì²U ulŠnñ±-–Ça©³lM{2®|°!>*q\òRX¶c“_n|‘&–DJ¤ÉÕ?#‹ÏC??óE4õ¸OÈ÷¡oO;‚ŠÔ‚îšZÐ]S ºkjAwMõÅ0C ßå›mÚ‚,cZ&œ-è#«U”1µ ÅÃ)O-hfY‡?6tžÒDZãu8) |$—€zƒ;?»¹@;{(š°?a ¨7è¢Çþ奂ò3~Xê ºd9ÆG¯¦Åíö¿ÊeI⠨뮼ázD ¨(ë| {Dø,¸q~§ ½wÂbÞQˆQP<è×¹EÅ8“AAà“# êb7>›ê+µ(ÔºëòX÷ä®ëÒñÖecT t/žu—Îj*ºŸ˜Œ(¨hQPÖïcPRç®rJ— z㜯´@ùcÜuAmAYKŠö” ”κØÕ’f]òˆs F sÑ_åÉ(Y^ëÎÅð"Ñ2n'AÅ\)=‰'£d5t¾Årþ˜áÔ8йÔòÉ»ëh²ššHI"Ð]£i”L¢3ïh¥hÑ]¸¼dSÆœ ß©ï((ùg´yÖ•ÅDUf_¹8㼬*Õ ¤ˆŠæ6T :”ÑÖBy*T“”54c• ªÕg¹a™Qp•ªMYgi 9(Kœj%•š‹²ôùVÈ>hNJª*8mƒæ§¬d€» E(«â´Zˆ²2Nk EãUqZ\À•öYe[@U23<+™o…LA‹SVËiZ´Ë ç*9Í@B­–ÓÔ Ó’Ê9 ƒÎ ^6#•ý9{KAqfmâ±}¼ìËJÂ6ÞÖ¦^n ÐÌíÅÛŽ(£Œ¾šâò TA+ ô ªá TA+ ô(-ªˆ ¨‚V$¨mA[P¦p:-ÚÑäP$H¥Ñmî‘ÌÀÒÛ›ÅoJb¨â‹ÂJ¯»Á³:?3ô–9’üAG#™Ë÷.úŸŸåå± PÇq7Z»ÍåÞ÷œÄ¥ö@ï7òŽ!<ÎÊÖ†”Å 0J”yG±ç oáØ›’Kô|Ýý}Oᘞ§g(ßhמ-ÜKhg/¥]×.àŒÛЛs¬¼¡7ÄG¯ÐÔ›ÃϾ”±kô9|G?¡“Oô)=‹8(=Ã@§ý‹K8[Ý„mš‘2»'b÷Àù‚ÏrdÜ ïA»ø,@WK´9Ý÷% “Ñ-ò^Ó–{<öƒÒ3 yWïàlM ôZÂõÉ{ t2nåÅúNa Ÿøk–³{ço£E§ÿáX4êº#z†Žé‹AÞ‡3A÷¤1Ê@6°]DÔЛs,?œa–ÚÉ@©Ÿ/ùÛ½z}1 ÐcøÇ1Ó¦ÍðlàÌSƒ²?÷@]DmИcIú1hØ¢Ö@G£ >Ò1úV€^ô/Ö}Ð1úÞNé^*@ÅŸû Î9vu2nåw lŒ®,‚Ò©þJ»/9a˜×·tÁðüôè¬{'O鬻‚ëlP² z{½€=³vÆ-ç ³îíuÊf]É¿Œ%àMZhªr¯uWn€2 4ÔˆEýâôi/Ó@C%‡7n¶ZÍÍk ´DÐïgsL±+ TA+ ô8]7›¨‚V$ÈäÞKz´Ê·è±vê‹Éä~uu·ºC™Ý5!mÈÝ´P¤æ/0™ÞÚ7‰¶RRãd “.X%©yVJC¦$yF˜’¬$T5!5Å ¨I´U‘ÚJ‘3ð­†ÔVÒcíI­¥±ÖÔ^¾.‹¶à·æ¾º²Ê¢5Ió,ùJc1ÕœFk’Ðj–q§”Íœúíï¦Wã«%«ß’ˆ¾çZµ¯Ž¬‚ªþ …²|ud´`³˜øêÈú-­‰¯–J-ÔM|µdû»i,à”ÛxÉûxš¾Å¶Ëø¶¡F©&¾¹-¹ZPi„j¢á›Û’«5F©&¾¹-¹ZPi„j¢á›Û’«– Ý´R9WãUdÕt>‰S}ï´[ ‘$ì2Õ´ÛŸ^NÉN¢ƒ¹þ«ø’Iº/9¼Šv­bå}ë#KßÍ®"YåNN&'äÀù"^:çäæÍxóI2I÷]œîO„]Vž¼ ë#ÁÕ)ªHVy üÇ'#rM†ëd’î‹Ýå8LØeU¤ëŠjHàU§HV¹ „3q€8ì/]Ù$Ý·KÇb”°K«Xþyƒ¢Z‚Dœ»¥¿ÿÈ&龬EÄ]V¸î ι8`cÔ'x(›¤ûò1*vY\† ƒº‚ÒÉ6> .ƲI†¯˜uYÂ.óÜÌþ‡£~ ‰ZLT&é¾Å-¹ª}T&é¾Å-¹*]~Uš¤XrÕz hú*²ZPi„j¢á›Û’«5F©&¾¹-¹Ê5Ùf×Þ¨¯ÃN}-Õ‚îšZÐ]Ó·ÿ‹XÿeIEND®B`‚omniEvents-2_6_2/doc/doxygen/a00105.html0000644000076400001440000001633510303671737020063 0ustar alexusers00000000000000 OmniEvents: getopt.h File Reference

getopt.h File Reference

This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Functions

int getopt (int argc, char *argv[], const char *optionS)

Variables

int optind
char * optarg
int opterr


Function Documentation

int getopt int  argc,
char *  argv[],
const char *  optionS
 

Definition at line 88 of file getopt.cc.

References letP, optarg, opterr, optind, and SW.

Referenced by main().


Variable Documentation

char* optarg
 

Definition at line 83 of file getopt.cc.

Referenced by getopt(), and main().

int opterr
 

Definition at line 84 of file getopt.cc.

Referenced by getopt().

int optind
 

Definition at line 82 of file getopt.cc.

Referenced by getopt(), and main().


Generated on Fri Aug 26 20:56:14 2005 for OmniEvents by  doxygen 1.4.3-20050530
omniEvents-2_6_2/doc/doxygen/a00230.png0000644000076400001440000000770610240666441017700 0ustar alexusers00000000000000‰PNG  IHDRç¹Ó¢!PLTEþÿÿoßßß___¿¿¿ŸŸŸ???ÿÿÿ„—}<tRNS@æØfSIDATxœíÏWÛHÇç_ðq9:û Òæ%ÁÇÍo³“ñâ#™ìGbìcö=òðm„‘n–mŒê¯Üªnµ,É’l¬îF"*Bž‘¥®öÇýCR×Wõ TÆí—Ç®@a¬"!¬"!¬"!¬"!¬"!¬"!¬¤$l‰æð"KJ‘_VE¢"/«"Q‘ˆ—U‘x $<ÛÞlµíkÓià¯ûrÔ½ë:FzY%'Qÿç—ÈV«þ®á¿¤}·yßuîÓË*9 ¢ß²…ŸÖIox;¡wÝ”.õDHxтËIõ,Ökš‰6A¿¸L¾;äVhÃì” Ã:ƒy #,^½PmÉÔ’Ø@{± Ö&Ž`zÑà$\FÂ"Àn¸M :¢oIáª-™b×^lB‚Ɖ¯FFMö]c±Dâå¿Þ5ð%ŽGä…G`Ípœ8"…G¨¶dŠI<\{Q߀Î÷'³¼ä­‹¥òî»ßèedîhÐȤwîˆÚFÚ‹‡Ÿm¿JÚ‘N8Vkt‘ØH{ñ`n'iÇB‘ØL{ñ`û‰{6ÖQwT×¢‰ÀÊNb,m¤ä$j[U› cí¡$jÿ´&ówʪïÅ_ù‘•¼V}‡Ì¨q‰òè;¤.ç.G ”Gß!9\0N¢<úÙ5G;GyôòkmåÑwȯi$öNmtL*bŠÇ‹xLÅaF2I(i¼AŒ®êx+‰$Ô…™Óø£<ˆ]" …ãÙ¸TJ¥_š†*³$¶4´ i$TvÖ J£’TSOÆ·z­Îd‘PSMv ^²sL5$èú+ôù•¢EBIç +ÑȧW9lJ"¡¤IŒ—5 Å¿S£¢‚‰:—Âß½SA"EçRì;º±Î!åö{ªºÃ§#ʼn­˜„ŒµŸq†Î…m”²ÀZ?’C"V]•Ì\ã#‹Š·q­$âs¨’é'A¢m"þõÈ#‘q&UDK'˜Ù ŠH©;,ñ±b‘üãŒÓk¾§{|Ǫ́ÚdHÿ[±²¦‡DšÂI,©;úÁ«pÇY²Y¾çÎ÷烌ªÍ¿1Ïüþòû’I,Õ6[áaP¤ö:êŽqÊéDÈ ì±©öñ€{N3¹$–¯¾²D¢ÍÃÙ)vvØmPïØ¿…˜ºcœ-¥æ$:u ¸¥ãZ£&Zvÿc·©¼AöÐÓþ…e´†WCtÛ¢pH¬Qðv¹$–+›­ð@¤î`$wú7õ $1ÙÝéGÕã¢r'øŸÂ¶é¸á¬G$ng·3VŽ g“Æýá¶eôúH¢ñw¿¬_É;¤’H¸ ÏVx(gz9äýÓí`9ž9;‰¨;ÄÙvªm®x)‰|ˆ„ƒ#2+oSgæÌ›®eŒ€6R\wÞÉ;䑨J<ÃÉVxP›_Û€w y‡m÷¢š†õÚöŽw$ï ïþj$¨< ;‚=$mE„„8¤‘×ïÑd+©P˜ââH$éP”›ê¨Hd>ŸO‘)×wl:bfßr•oêõŒÎJ÷‘:jN»KŸPSX©Ó¿ƒ“8?p«{Ú:Û) ù;8‰hpºŸmûsHh‰L H|°{Ý!\9»÷¶¹½mÛ‡v·ã0·ÛØ{FóêQHèÉßصµ?Ÿ?wNðOÜê0¸…H [§Wöhvã= Mª1bÞ9Ý×øÝÿêté' [ˆ„Ó½þh渃~rDÛÄð‡7¢jŒ„è縅Hô ›uý$4ÌÕQׯlÏ>ç$>Û_?#‰6Žó‘7š;ö¨ûH$tœÓGfÑsÛ=Æqâ'qÚ:ÛÎqljöÝljÎÕþ£Ð‘È$:NÌìOØCà€8 îðÌê7ûÖmàÜq`÷ŸáÜ1³ç1Y¡ÒLK"“gÛ7io0š®;ô€(öëš@ä¹SN‚u=] r]‹Öß³"ÌÚ@俹º§-×VDɶ\$‚à8uN]kTdùH„gQÙ·mtßËI"ÖÇÒ´NFpQþÒ—¼A®•Ÿ”Í5)+ugŒÆRÖ|–J̵˜ö–„F5/Dê'Î_׬ŠF"kHûÉHdŒi?‰¥çnEKÎg¼„ä3Ìb’ÈêÛöY‡ï·!xºõ¿?c/R®ùE0tf‚UÞ—JÌq–^2¸õ«fÆáçkæ“ðskDI¤É;8‰ BVy_*QI<&¯ë¤AÿRm:äÑçám٣Ъ!+¼/—˜3Fw+ùƫҼ .Ä’ªbÖíPø-ÓYø‰:& |5ºâr ƒ 4`!ïp2¦¦€DV‚á Ž{OLâ‘“DÊ]g^WúïEýˆT^›ef`: ?QǼ½—õc.Ç0€ ;ò'ãî‡O";AˆðNǽ'&ñÈÁ¾•r·uA‚%J`Y;X](~ÚOÔñ #Bï x’wÔ2ŒáY• Dx§‚ãÞ“xäWº¤†¦bûœRò “eíêâ'êØ·í¶È1|Aûm"E>â'Þ©à¸÷Ä$J4?‹óÄoSÊ[âë,üDgp×Xj kŒ˜™ B„wF"æ=1‰‡˜?‹~ÃyŒÆ j«Í¥Õàua‰:p@˜94N„H´#$VÌ¢fv‚áõŽ˜÷Ä$J´¡3+ž”ƒtÊ¥Áë¶Ñ7œ9'aEIdžc®Lâ{§bãÞ“x(Ñ‹ê¿îHO²¶7%bý$Ò„¬íM‰Â^;‰Œ!k{{$dxSòü‰Ÿ—„‚PT$Ö)¡È$ä?ž¥L÷¶Ã'‘-&k½#éq“GBÍÓ×a50¿)ˆ„ªHE>ÆZ¹Sðå=Fü„S(ø152LI£ØÒg%ÃTT˜ÇÞi,Êðäq=(Jñ4z-(Ê‘«A[»Sf®aØ,G&Ñü¥Èn:úGá3 SŽ¢èY°¦úÄ»à™Ñ¦C9+Ë×UƒšZš•E±³j.¯E¡3­.[ñów¦ú"ºðù;¦ül°Øù;ÂÌûßs_å`Á"ß½ýh± 2·‹²éÍêœìŠ\k@1? Hˆ¾¬ŽDÐ,ŠN"gÒ•5HHy⛬‡(%ÁC¥K@‚îK+&y§lM$rTs}eèdÛïÿž²Ãâ#€ M0o©¹;È4Ì¢u5¹¦ƒ~vvw,¦Ã Å`bQ¢6)-’rj¬å‚fQÓëOÙAÚˆolE÷ ôF©dRrwi'®á%ÇÝϬ^0áWgO´‘kîÀq¢1éHãqÜägVžyuñ§ ¥SþŽGœ;’lš}Ü=ÛÞÀ*Â*Â*Â*Â*Â*ž U+?2\èYù)©U$„U$„U$„U$„ý«#«ŽÓòL8IEND®B`‚omniEvents-2_6_2/doc/doxygen/a00106.html0000644000076400001440000002050110303671737020052 0ustar alexusers00000000000000 OmniEvents: main.cc File Reference

main.cc File Reference

#include "getopt.h"
#include "main.h"
#include "omniEvents.h"
#include "naming.h"
#include "omniEventsLog.h"
#include "EventChannelFactory.h"
#include "Orb.h"
#include "daemon.h"
#include "version.h"
#include <stdio.h>

Include dependency graph for main.cc:

Go to the source code of this file.

Functions

int main (int argc, char **argv)
 The main process entry point.
void OmniEvents_Orb_shutdown (int signum)
 Signal handler, sets Orb::_shutdownRequested.
void OmniEvents_Orb_bumpTraceLevel (int signum)
 Signal handler, each call to this method 'bumps' up the trace level by 5, modulo 45.


Function Documentation

int main int  argc,
char **  argv
 

The main process entry point.

Also serves as the 'ServiceMain' entry point on Windows.

Definition at line 65 of file main.cc.

Referenced by OmniEvents::Service::start().

void OmniEvents_Orb_bumpTraceLevel int  signum  ) 
 

Signal handler, each call to this method 'bumps' up the trace level by 5, modulo 45.

Definition at line 316 of file main.cc.

References DB.

Referenced by OmniEvents::Service::ctrlHandler(), and main().

void OmniEvents_Orb_shutdown int  signum  ) 
 

Signal handler, sets Orb::_shutdownRequested.

The parameter is ignored. This method may be used as a signal handler.

Definition at line 311 of file main.cc.

References OmniEvents::Orb::inst().

Referenced by OmniEvents::Service::ctrlHandler(), and main().


Generated on Fri Aug 26 20:56:14 2005 for OmniEvents by  doxygen 1.4.3-20050530
omniEvents-2_6_2/doc/doxygen/a00231.png0000644000076400001440000000633710240666441017700 0ustar alexusers00000000000000‰PNG  IHDRÏ…¥Á„!PLTEþÿÿo???¿¿¿___ßßߟŸŸÿÿÿ烚tRNS@æØf lIDATxœíMs£8Çç+äêc÷dRîcïTºÂ±'©)û˜]ºË'“NÛÇÞš©²];Ùqp §!ÇèS®„0†˜7IÄKø'qlÀ?=ˆGâô:ô÷Uï"u mSÚ6u m“P«„¤ï„ P»x_úNt €ê@÷ê@á$Ô9 þ½Ð#‚š :ŠÞµ£ÆA7ÆîÝuë@z±E~j¶tÇXÔ]Þ®5_¡ÁZ‡›¥†F·á¦ {ô•ºî7½oœë7¾á_Îîõ›À¢Ã³pû†‚:¡·Æ£+42LôÝ7|c=1Ñijì<¹‘ NT)Ãw¨‰|ݲ–¾1BžmãêÔÑ&ƒ:½—o#‹ÚHOZ´Á N¢¥ŠÕÑ“]=Á óƒ¦`† ´Õ>-ÂVõ5³¹ G©KпbGMïà\©Y N:'ý¨ŸG ꤹ-u]ëx¿dør“&fr¶ìê%›³e ÙœíÍh‡µ ÔÉ[Ù&ÐÇmUv®Ak"Ð\ƒÖD M0(hÎ!´Fm'h#´mˆAÅAbPaЦT´)í@Kª1ž+ Úƒ ‚6Ç h95ÇsÅ@dд”ä¹h5És;Ð2z5 Mª¢h 5Ês;Ðê@k)ÐFµEh u µTZ¨f5ºh±:Ђ¯%Ä›;³T‚Œ‚ —ñî“øAYÝl %¬ª@ X䣪-Á‘Ž( N9s¥ °”tЃæ'[RQ¹AË5ºŒu/kü€d‚–ôÙ„¤U(§#Ê2ª,Pú&çP# TÌeø/7hÞ¾»Ÿÿ• r”7*<(Ð.B‡;CƒÂ90)0(¤ÇÁVT^ÐÔFº LT©* )¨”“7¸D¡@e¹5I@ ò.° HyAÙK¼º#…•<” &yPéC¶@ºÊÅA Mƒ¨ J†àr‚FÞ¤h¨¡x.¢ Šn’ŠWSAPe·Ô„W TáYÑœ8A{0¹3HÔw„@•Þ ,T>PJ¨vp·`©Š€–æüG¾´r©ˆ«hù". ) *fR>Ð^ôRJ0 b&åe(` P!“r2znÃA TÈw¹@I†,çdMer#(Pßå%ù1n‚Ä gBÜÏXTĤœ le‘\ã?ó™¾oh5ÇˆÄ ÿˆx@|—”Ù !Éíòt© n°ëºÖƒ®Æ³øê’YóŠ”Ñ…(Éj;1Ÿ/1èGýƒ>¬íøêRâ÷]ÐsÁ† Øm7šg’Ù’O1¨¹óâÚ‚–¿< o°Q’÷¿i¦oàV×#SC“:ZoP‡!·p^sJ¢a×[””¿’²ƒö2KLÉ¿HÔÑyÝA–~ ÚÛµºZ_| []“ ”ßw™AnFö„:D AKÚ3¬œõ[@Pnße-sѲ"àÐw -Î'»š8¼dŠ”ÛwÙ@ ×y9Ü#ܾq 9¦Nʘ–H ¼¾Ëêô2Hrմ̬Ɨ(o>èA¥LLO}(ÎJÊ š[)eJ)hEŒ‚* ™"ÎJÊ ê¨ó™*% zì^|» ~xQ.>“fƒ~z- ›º‚òùnt…¦¬Éxþl¹ÆÔôú^ß²æ[¼ü®V \&ƒþïËç ë—Õíõt{ïc‹º#ëñôzúï/ŸkÊeÒ8èÆúÅÿlÎ6ùqñ2³ß¿´ÞÔ ”Ǥ1Ð%¹Mð§?AhDAßþ³oÙãxmÝ]~±ßIZÔ·¾<ü|g[Ë1íc×Å\Z?Ö û.ó=YG?X^u{5¥ O£Áã鮣jê°±I¶ºwÖ_A;K05ÒênêØêrˆ6ðÌqM<Âz®[‡“]®kaf‹:Jç¬IÏÄ9¼ÞÕVhº÷( ße÷]¡Æè­Ô‘[/¤4О–v|® úüJ©¸cgÆ”ÐáÅÙÝ;àL¡= ÎQùnRõÞKž·„wC•²Dº3ƒæ§MI•2ôð3ƒæßœ®rÐ܆U±ëJEY7Ôˆ¨1[êž´õŠê õú÷»ýð-ë1¹É¥õöàk$Ø“1à3Øh”½>‘{œQQ×ýôÇçE¸À×u#¶~cx7úô€„ô9Jö`½haä=~ùÉ]ð wˆðoÊ^ñ€î“=X/ZdR z…Ž$\ŒìÂÓÌ3Ñà­Æ³ñÕFCžWz«ñ­ùèv5]Ñð]ÆÞÐuq.ÛñÕøÊ?Õ\k¶E±$@‹LJAIaºÇ—³ÕvB@·“í;÷âÓìamûFðŒg¼òÇíãÖÍîfw4|—1„—‚’\üù-Nö-:×oüÙŠ%)šoÒ=¨o¬'« 1Z óiîÛw&2CP¼òÚöðÏ‚¨V¼Š1„—‚’\ü9NÏ×ð·¿{hdÄ’uò/<#×}?µäýoë¢_qÖ–5 @±ë®ßá•fÔfŽƒ¤ $—õOo1¨áYÖrýf`Ä’Í5iÔ}$e­Q×Eßÿƒ|\3PÒ½;°(/(ÉeˆëØt,hA¬yxx¹ø¼ µgAu]Gþr/.g¨÷;>¼:sƒuT£ çú‰¯MX’B ù¾;a[]Ëz@î‘ôiAOp«5¹AÃV÷iA]kø¼ü6‰%)šç»m9$ÊõÝv昴M ¹¾Û2Ðlßmh®ï¶ 4Ó¤­èŒò¨¨Ô~Ý(”í»õî©ç­öé ¼÷^XÕCÕ>Á‡ûn«*å¿?ʪj}WàŽ7«XçÖ€•@ sVä¥:ßåJaë´0Àâ3b±f… Ü‘cÌêE/Uˆ?#+TI¢;™Õ‹½*O¶b ÌóàÀH%¨³ËRepQ2o6 ‚:²Ÿ•&® Eg5ïUY hɤàÃ[Q­jAwþS(Ÿ‰‚¦=R²*UjR±ñ£ìŠÊUµI+E„¢ç/§ ¯JÐD~ }¹YzÊé=h‘ªU1WJv†(„’ ¼ <7h"ÇBõ-ŒÑ=Œ­õl4˜£(63ŒÇ$ÿöÛ&@•M®¶×!haŒn*è—!Ú¡ÎvKk Z£›º^ÙÛ× 4žeÉÝÑí#^9÷ñ?òçZ3Ïv‡+ä.§FcëÙdyhK¶¥ª(1MnŒîhx†ñ'üüë7ž½™Ÿ£ozßbl½`]hK¶¥J€r_>@ƒæÆèŽ ß0<ò)ø!ѵöºÃ®ÆØzv»Hmɶ4ñú–ˆÑõ÷?î@uËZzöÀ²æ&ò“ 6™û¼¾ …1ºdç(²¨tÏþŠž†ÍU9¿n¤Xá–ŒÑ @Ÿ#ÐsýÄ[Øhkut:¯;haŒ.ÙùéÍO;P×zC„Vîò.jÖT’^%(ç”h¬t;PÅ@Õ>y %×vƒÆüH¨@ÿqZB{GRªú >‡ù‚Äè÷ÔWª OmniEvents: main.h File Reference

main.h File Reference

This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Functions

int main (int argc, char **argv)
 The main process entry point.
void OmniEvents_Orb_shutdown (int signum)
 Signal handler, sets Orb::_shutdownRequested.
void OmniEvents_Orb_bumpTraceLevel (int signum)
 Signal handler, each call to this method 'bumps' up the trace level by 5, modulo 45.


Function Documentation

int main int  argc,
char **  argv
 

The main process entry point.

Also serves as the 'ServiceMain' entry point on Windows.

Definition at line 65 of file main.cc.

References bindName2Object(), OmniEvents::daemon, OmniEvents::Daemon::daemonize(), DB, OmniEvents::Daemon::foreground(), getopt(), OmniEvents::insertArgs(), OmniEvents::Orb::inst(), NP_MINORSTRING, OmniEvents_Orb_bumpTraceLevel(), OmniEvents_Orb_shutdown(), optarg, optind, orb, OmniEvents::Daemon::pidfile(), OmniEvents::Daemon::runningOk(), str2name(), OmniEvents::Daemon::tracefile(), OmniEvents::usage(), and OmniEvents::version().

void OmniEvents_Orb_bumpTraceLevel int  signum  ) 
 

Signal handler, each call to this method 'bumps' up the trace level by 5, modulo 45.

Definition at line 316 of file main.cc.

References DB.

Referenced by OmniEvents::Service::ctrlHandler(), and main().

void OmniEvents_Orb_shutdown int  signum  ) 
 

Signal handler, sets Orb::_shutdownRequested.

The parameter is ignored. This method may be used as a signal handler.

Definition at line 311 of file main.cc.

References OmniEvents::Orb::inst().

Referenced by OmniEvents::Service::ctrlHandler(), and main().


Generated on Fri Aug 26 20:56:15 2005 for OmniEvents by  doxygen 1.4.3-20050530
omniEvents-2_6_2/doc/doxygen/a00232.png0000644000076400001440000000320510240666442017671 0ustar alexusers00000000000000‰PNG  IHDRª‡µä™$PLTEþÿÿo___¿¿¿ßßߟŸŸ???ÿÿÿ,%tRNS@æØfIDATxœíœÏsâ6Ç÷ïèÑÓÇÌδäÚíèLg±¯½,œ;Cñ¤Mà¸Ù]z+ˆ|38韫Ÿ„A€ƒX?ðøKÆ6ÉúDÒ³üüÐ;ZD½3]%*©.G%Õ娤ºY@…(ÈÈû˾µ‚êPͳ¨PúG%•"•T»*©ôê$*‡ïl§jà/ñ6boÜ´9‹Q¹®˜bUôWý'ï(*†Å©^`»ôxŠMT³kø;ŠÊ©$Tìâñ›¨–ˆÎû¤öaÒ»Ž«Ù‹iir8VÒÛSÔëò›¨§è¹þ9®æõ­˜–&‡c%T“E߯¶âT(òi-®¦—TÑÉP¾T6÷@/W. ”¤Š²muóˆl¤bÖ"¦âm%GUÙXvdgd–=¦z®]HRÁ.¡ÙIÅ®Â1Ul‰'CÅw‚ |m>²†êø4í3¦ãÓ@%•…â5ç ].U±Úju%-XLf¨¤ªÍZðþW0/§æBQÙÆ¨è Q?G¦¨X+©‚2E¥ªë­d„*T e„*TÖó™ Re‚Ju÷£&¨4@é§ uœD7•zKÒL¥J3•&(½Tº ´RiƒÒI¥l†¾/}T:®S‰´Qé„ÒE¥|–¾-=T‡“*½ EõPi‡Êêã‹ù¾B¥¸¾vtJΧÊpÙ‡[*ÅM¹­ùQ•YI9UF÷»PªŒä’J^%UºN¤ZMàí¦Šmø‡`+ÛÉû ù|c‹*-¿Q*¿^§-—ÞïÕêm*†µ¦‚œ/ëT[¨`ãò•¤Z‡ì¬ X˪(p—STÓQ—F“^KLÞW(øÑö´6E£®KÚc:›ÞyB~ ¨¨?{ÿ±õŒh4œbò¾B!h Âû|úŒ\r}K?Õžß°µ2*â-þÅ„~Ò¥dü ¼Ï§#êx]êzB~+ÚÊŸώ“ZIµÕÍ# FåChÖ&¿T„Fž®$©ÜxüÄ9!W„ñÊJ¨£TÐ:hÑŸÓ6„Im9!W@ëP–-TMVðCm„ú-䩨¸BœêªþÊâTÃT/ÓOýÄcš×‘¸ œ „ OmniEvents: Mapper.h File Reference

Mapper.h File Reference

#include "Servant.h"
#include "Orb.h"
#include <string.h>

Include dependency graph for Mapper.h:

This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Namespaces

namespace  OmniEvents

Classes

class  OmniEvents::Mapper
 A dummy servant that installs itself into the INSPOA and redirects all calls to the real destination. More...


Generated on Fri Aug 26 20:56:15 2005 for OmniEvents by  doxygen 1.4.3-20050530
omniEvents-2_6_2/doc/doxygen/a00233.png0000644000076400001440000000226410240666442017676 0ustar alexusers00000000000000‰PNG  IHDR*‡Sá ˜!PLTEþÿÿo___¿¿¿ßßߟŸŸ???ÿÿÿ›ë¡gtRNS@æØfAIDATxœíÛMoÚ0ð~…h7ŽÝ¤­\·©­Ï™Tç´œ§28Žm4×V»­¤¤É ûSÎÎ „’%OLlÒÊÿ¾ˆP~²MÀ~ÜZÇì­‚G«àÑ*x*Py9ñ žû~;¨UÞ™‹T(û.­ÊˆVÁŽ%„Œ»ö¥2Ö„'©TuæÝ°ßAø¨Œµ ãô‘*UÁWó­UJe¬UsþûѪ^5mòïR*£‘¨Â{ˆÕ#¢³9þ0¶™ ·ï!*ÆJz°í"»W½Šðä:x0²Ó4OA*£‘¨Æ‹Œ¶ŠT(pè1;•œÂ(H#QÉìA‹+ÌJr h[\!ªp´3UÔV0Uc}e@rz0¼20Õƒy»ªWä¨Â«(S±× ± ª5!~ .GTå­TÛwiUFªWMÒלکêÕVñ•°f=˜¼ÃÖPÕ¨Ûhú¯^³Ô‰Á‡»è³ "ªšðëAîEa—ªB•…TM¤y¢©d£„TÒQ"*ù(•Ty• Ti•TY•TI•"T9•*T)•2T•´÷âíÀU²>µd¬R‰«”¢ *µ( J1 ¦R©”£ ªIÞÁŒ©Ó“«HÞ”.N—1ÍÜÌL«´êÙ«â5²UìäË» TÑ› ÕºÖ¬ž´«ªß·ï]âØPUÈZ©¾±Ÿ¹ç¸Ä‡«V%gãh¥*ÖƒÖÙ˜^ø7Coðf^¤J |´í»hÔä}O§nÇ¢ÁØnU©òíËþ'ÿ„Ýîü)TÅE+^Þsè¤yJÏÍ!SÝÍüjT”vBÕ£÷Ú2•wæßÂ/ï9tD1±ˆÕ£˜©œ¤K+j«>ü¶«mur…8#T9¼´ÄÆUµ*›x}¨*íˆ÷ “n«ÊU—ý¾}P…žðQJÅÇU·jÕh9¦Ÿ©"UúÚÞvÑÅ*þt*S•|lj³ýŽó™nl娉êyXCÕ4Ü0S7Õ“h•VÕK•ŸÜ%>‰³Ô]XRZýP΂­©fWÕ³ +jYàÕZ¥,øÊ¶JV‰*€BÖ³¯˜Ô´ºTÓJ\M«–áöžÚí²à¬‰ä%xý ÆjIMZDö~ CÚ§(bûd v>îa•ÔÆWÉl,!•aHn¬TKpäÆß™91^O»R»-Õ¨3TGFÑ*x´ žªÂÿ?¾.|)W%5ÁäßÿRÙ£*IòA©ìQ…éÑ]Ø=»GŽÑÔk-ì·Çcš*ªWMoÎZ¤Û&¹¦‡æwÒ:¥¸ÕiuhªH¨^E¬Ù€tYDú% ØÂ”¥Š„êU˜ŸÙ¯k^X <Ïý>Z©üý©x[Í(ïA‹úÔ$ˆÔAŽ+©Í[‚.bUwŸªø5¸1ÕÔkÎÝóA¤rö¨ªø‘Q´ ­‚G«àyy*ð$Ué,U^´ ­‚ç;cdHÂøÌÒIEND®B`‚omniEvents-2_6_2/doc/doxygen/a00234.png0000644000076400001440000001214310240666443017675 0ustar alexusers00000000000000‰PNG  IHDRJž?$K!PLTEþÿÿo___¿¿¿ßßߟŸŸ???ÿÿÿ›ë¡gtRNS@æØfðIDATxœíMwÛÆ†û¸¬—ªsqÙ&•Ãe \ö8'2—=iesú£ä2‘ÜJ»ˆ(bU%Þ_Ù¹€r€™†À¼¶l îç‹^Ü?€•Œþ÷‡ª÷àÀeJÊ””() PR ¤,@I5àLF^"T3zûWÝØ”ÜØ”ÜØ”ÜØ”ÜØ”ܸÁ׳Ù]béòú¡³L³uxoÔd€ÝnYöÔ;}ó·‰(¤`/±lÝ;8²…´xNo>ë¯/î`4t—÷£þjô p y Çwàñ-þe6Þ¨á/àu?®Ûß‘_qéòvá­ûä7²„¼œ¿<퀗§?^žö™7j2ÀÙl²î}Þ­{ø‡tÁ]’j‰¿“—ëÞê†|ê,N:‹³ñFMؘ¿ñ–³Ù4HšðkÒº‹ÿGÙlìÐUãÓd®¾´É/Ý D¾F€ëÎzSaÙ jàEg1`6ިɻÝ.L;¤¼ €¾¤ÓðmpþòŒôƒÇ˳/Ïl¸QÔÞÂ+ÒŒgmÄõ< 'Òîãô|Ä±× þ³£0#ûUNR ¤,@µZ­2Û7 ßj­…å‡uÏ,&?jº`ùq×gÏŒöÂz~ùR#o¶šPnæ²C ØÒ¹õñk@üP'¿&Ôʯõò«?@ÍüjÐ×]@Íêúþ«Þõó«7ÀøÕ` üj P÷LUc€¥ð«'@ÚtËáWK€>²+‰_Ò+—eñ«#@¼p^¿$°U¿l5 ÔåÆàšc+ |ôTi¦”ºàMõ{ûD>:'bݶ,@},@É d P8n À³Ùo»V:ÀÆj:)c%}‘1‰Ì /Kg³Û^øÒ(};¢—»o;;Vú܆ ÀÇ`Q`Ö<0´×üðkb©Û}Ý_:¥oG4à¼3µ¸Çµ’fßÀ̉tdðJ€Ýxkg驈|êÀ²‡ö¡‹;X†èr.îßÞ{O:ó6y5}Û½ýs6p¨©–ôß Bö7‘ @Œ2k_Àù¼½t C“¢RbT:Pãp²t˜ Ñ×”0-pÿ|ݽ¢&ÞÁ=„þûþ{jìý žGpÞ½îÞ­îVäÈo^àò #ìø*\þ—D!ñço>,Æ7.œÝ @R”ƒ%†¥càíÒá¡CŠþøÈZ‡Mè u€8Ô²önÝïà= ÁézK«Ú¨Ë7ˆÐÚ!úõ„ "—$ ‰¿ü<€áÓ`6{è›pX:Þ.&@ŠþËk6 iD‹K44r8‹ÿü¶9„ÀØ Ç³ÙÀ%cA ¨´’øðà+‡nˆIQø_T:Þ.×u!i6 vã7a \iD˰Pc/|‚çvªÆwœdÒøï>œü=è`Q0*Ü*×Â_ŸXë°—¿‰Äס‰·s“yxÔØK:»•‡} pÀŒÜHÑC€$þóÏXé†ëÎ1…£ÒiÞ*Üé¯Yë°éT64ñ’qÞ~ .Ã9Æý|úžè&îü&$±Îáæcºáãô=…ñ°t »]:>CáFam8ïÍû²¥5à©ð—ެˆÍ¸¸ã¬–¯´fTPšQÜŽ¶ëz\íú/T\TÊþêÔ?5Wå²Ö ¶_}àŽëê5ˆõFÁ¥n¿©ÖUÝág^Ö#Sªós4 ºCöK½·È€ ¹‘•²šPiŸå·J1ˆ„2 ZG ¨ÝbË€Š+Ì‹rš)82 ãÞ –Æö^Êê×äûô7¯"…^›÷X†Ÿ_&Þ_z¼]7 $3ü2ö^ú†Ë1ó¶ÃyåÅwhm·áõvLØ.Ô Ö:eÞ夎cU =ÀàdÇ·«ñãÍ8N6S.¦ß )økàý½m|ïø}¼èõ Z†wÜe^÷ÝúâȾX•Ñ¢„N%&–Ïn:ó˳þW§½8G{/x¿ú€¦à‹‡Ÿ)Àtïv?€˜ø¡èõ äµöÜm^¾ô(ÀËÓ>ùyã9¡UÂçÝl,ã¢{w‚æÓñé'xê|B{o04{=Àc ü”' ¦žõúvY†ƒ’öX†aq~O’½ ?¼ÈªŒFá!ü…Ýߊ²|TñÇÁžÛÃì¿H…|ýïoð¿¬ÆÍFT‡ÄÀnЮƒ@L ÜE6Mx§ex@êkR2ùq½ÈªŒºÉX†¤5ð Û@Rù:«µfb—ä°5–½$@æ6ß³-ÃkÚï.ÙX•Ñ(<„¿²±ª˜è¢X€Ø~q:0íP*“¹ “à«o^·ÑÝûн"}àíÏú¤f&FÓ˜3-Ãó!™Æ2×d/ÈOÐ^‘š‰FásR0ËP€d¸{¼YáU@åí': #ÀÇÑ/ÔÝˎ·X3“#ÛØÖ(’˜mþiÚÆ2£0µ/›6 'êïkÖWY[âÜ,c~–ðÓp&•mv¶&ŒœXF\³¶T0Û2l<ÀäÑqî»l?y;üá(Á5Ù rÊØaž‡?|Àbʰ°PS`@MµÃ”TrlÙ;Ò•()Óú-U¼“~áäd]U¨ d…‡¦0ý‘ÏžyÑ~‹‘!•:|uß!S!@æÈÛ+3o@ÕöÔ„í_s®`|`êí½ì8R[€› ¨Áí³ÏMÐÛ†«¨Å^Nøùåt‚•ŒZ–&{>©€A½m¸2€áÑéz¼19­U°*€áÁé}“Ï»ÓRªØ*ïÉ.Ü»¥•©€­ÄÙ¦äë|”QUKä§÷iZåôwdüЦ–¶.·!!šz*Wù[¥÷T¾¦L`±‹„û¾ô˜q³V¤(MKÑðeI,´Õžã,~ñ{_à0ááÞÕò•Õ$€ðZ€EÓétKAÂh,@öD¿œš PMÆ0`ö¤B+ÀÐ+-•É´#y›ñòú¡—ZW,p•L’7HŸÍ.÷ìŽ`ÕòÂpysg”¥`·Ûc>õN_~ÿ!µ®Xà8ªÛí² ?,é¾êñV•`Æe)ØK.ì¥ÖËGu“ ]´¿yÈaœQ–€WàôÐR{q£áà„Z×Èê<¾ÍG%ŸûKº-ÙòizÒÅ8ЇT²_ÑÕ ä0Æ‚8e©x逸óóö<|‘,Á=CC¯`à8*¸¯np[ÜÒÅ¥^- ©d¿"ò6…äËaL ú‘S–’Ad²î}¡–ZL'$KÛíêF0pŒ– "÷y€ÛÒ와¸$ žNö›`¾Ƥ NYjjàüXjñOÔ„»d ݳÙl,˜8ŽŠ+EŽˆšÉŸ§¨ ã’0x:Ù¯ˆ¢&œ7‡qèÞ.K ÀÕ—v`©Å?Gðç#j¿%K¨í–t7‚€ã¨¸ò»@`vqYµ£haðt²_m‘œ9ŒIAœ²”Lcº0í–ZüsúòÔ¥ö[ÌÈ;™»hèÌG%Ó˜ÞzàþÒõ¢haðt²_Ó˜ü9ŒIA?rÊRÒÞÂ+ˆ,µÏ2‘þšÚoqŒD«/zÅ2ÇQIØž!4ÃuçlöëM- žNö+¢x"/‡±¶Q˜§ÅÞ(u×ÌW p¾ÕDƒ4ìd‚øj¢A,@ɲ,@ɲšÐÀÓYÅËVU 0ª>'TUGV? °hàÐÑh@¿Ð5é}w%è»°ü­þû‹4Sua½XwìWtkÇVªv@`Ñ;Æ*˜,OáÍMžÀº#‰·6µvü&§â‹W¡ò&JS{ŸVa€·|úe·`–˜¢™ôF…ÊìFÉ™ÏZ5¾âåî9n•™˜é¬5xËŠ”Ûì†Jõ‰¤^*SA€²õ¤D§Rê¥:¨dWJ!¨™_A€Š:°æCÒSZ1€ŠöE¿_Øç¾T©B•í‹î¡XwUÔÜ ²ÐtUöBîŒN‚,?£¼rJwFAD—h´ÚzÛÊj!ˆ_ØüÌò +þ4Õ-Æ[o’ƒ†¾áÞ€Ê}€x®"ÉϬg&hصÓ'¼5Î7ͨ´§¯öÜ-§ºy®Ÿ¨ó )ñT§’‡ÿž|- Í–£¢ T/?@míAÍXÒJL|âJ®«3—ÿ ¨æ9ã@`¥ù{Þ/$ €úzdM_ìy¿Ðßó~1Õ {"÷¾´ŠÔ8) ü Ãè7ØÎ.¼±ò&“ã&.ÿn}às£¨PLÈ·•]Øå"7`V†a¸]xcåMô[ûfe&SÙ…ûÀQq€gõ»3 /i†Æ<Ù…©¶?p¹QT(M5™#»°©y†à}˜©ô~ÔÆ´ƒMü›™]˜»¿€Ü Ãp$êÄH9Ø„ï #»p~€:¿—ïÎ0ŒGxñð3øÐýˆÉšø²² SeÌÈ0Lbva @Ê!Ñ¢œ‘]ØD€Y†i®øo¯r¼žà õ÷‚pvá ÙÌ ÃX×ç÷AŽ×ÅWpiãŒìÂùê<±±;Ã0@ã¾Øè¨¿2³ óö7jÂü ÃX!L’K +`záÙlœ‘]Ø\€é Ãm’Ï’­hÎÌ.ÌÛ_ 'Ã0͘}«ÃÖ@Xö2² › 0abvaL6üнÂä¿´¼wü켇˜Î0ŒùЇ?üJ“ “H9´<ë¯{^váܵÞJ°;Ã0ÄìÂèfGá6>GŸ]˜÷y³Ó†±üiÚÆ—ì(|KÒ b.`RÜ Ã87ËÊ[›˜¶qv—3­ãgv²ðÂáägV Ÿa¸32 ·³ÿ&Ž™Óc§™ddžCfc(PëýhÊOgñ>îŠÏÆ@ÞÞV Pïý|ªr÷ÖÜ#·¹T Pï-¹Šò?íZTqÁ;ÄßYe ¢x¹–ç.R ’v¶¾KðP r,iŸ”¨,'Y]–ÖXò<¤\Úg ­€Õ ~ÙF9N .‘_€SËäWG€¥òøâ`Zp¹üDú­C©€%óXv"¸‚*ý™\‚KVS1éJ·Câ  —Ý|Qbw?¼ÝUòçhx¬ ù¢ÄVðÀº¼ª¢ù¢ÄêÞ9UÖ>„úæó«¬dQ€ÚwDFuTB çWéð&PûnȨڽhôi„*›/*¸û’¶¢‹ù:¤þ‘žyuЫÇwØ ÀwÈ ™*@Cð*@cð%NÏãiÌrl*Àªg. ±?ÝM×îÈl€& ½ŒX€HnºöŒh¾@Ò„{g÷ðÖ»¼ž_>šÐ8|<€Þè_Ÿÿæ½&¯ßߘÐÈ“âÉAä=ø4û“wMŽÂÖl@SOIrjàg4‰áë™1 >!ÉkÂëÙg£Ùt#ñûÀo½ÑíÀªúoS›n¤4ÀÉó=¼÷HÿǬ겦ÁM7’ÈW¹ß+ÊgtÓ$ô]˜óXRÍ*=oUa‰Lð[eVƒ‡<ÖýUÑüKÐ[=ÅvH~ê1¯jt8í–‘ðùÀô4&ý¸Üâ:„»—ø?¡šu÷Žd÷Xþ¥VÊÎHçg] ¡ ëyŽ2¹_‡Ž.à½1µ9^å¾½Í"ä+Ǫ O9î‘>¬ nY·9X€\‰zål Î(ÀƒûŽZ–„í®„Ÿ­ƒ Äû)ªòb˜,qÃ5³S2é –©¼A¶#É–LJFpÊŸOÄL¨@V/KU‘Üš¶dT(E¸%«@;’Ä*Ðöƒh nT %©(@;‡* ÐŽÅ$2¡­`_” À˜àþ‡¸+yÌ»‰’¸1ýY€…´‹‹^l²¥ÔjY€’Ú?£±wÊÖ@IEyYgßxùÞ,ÀŠ’{w¡ïÀ‡ì5j(¥ñ'N!›^£†R pé9OÓÎñ¦íæ'ó¬›ÔSj?t2Rj×Mj‘[ SjO #¥vݤ£bJm2Rj×M:bJm2Rj×MzúÀ³¾ )µë& ¯;døÅDòv–ý*') PR ¤,@IY€’²%eJÊ””½3Áª¨,@IY€’²%eJêÿ€Té3_j½IEND®B`‚omniEvents-2_6_2/doc/doxygen/a00109.html0000644000076400001440000001577010303671737020071 0ustar alexusers00000000000000 OmniEvents: naming.cc File Reference

naming.cc File Reference

#include "naming.h"
#include <string>
#include <iomanip.h>

Include dependency graph for naming.cc:

Go to the source code of this file.

Functions

ostream & operator<< (ostream &os, const CosNaming::Name &n)
CosNaming::Name str2name (const char *namestr)
 Converts stringified name to naming service name.
int bindName2Object (CosNaming::NamingContext_ptr namingContext, const CosNaming::Name &name, CORBA::Object_ptr obj)
 Binds CosNaming::Name to object in the naming service.


Function Documentation

int bindName2Object CosNaming::NamingContext_ptr  namingContext,
const CosNaming::Name &  name,
CORBA::Object_ptr  obj
 

Binds CosNaming::Name to object in the naming service.

Definition at line 149 of file naming.cc.

Referenced by main().

ostream& operator<< ostream &  os,
const CosNaming::Name &  n
 

Definition at line 104 of file naming.cc.

CosNaming::Name str2name const char *  namestr  ) 
 

Converts stringified name to naming service name.

Format for name: [<context_id>[.<context_kind>]/]*<object_id>[.<object_kind>]

E.g. foo, foo.bar, foo.bar/baz/qux, foo/bar/baz.qux

Definition at line 117 of file naming.cc.

Referenced by main().


Generated on Fri Aug 26 20:56:15 2005 for OmniEvents by  doxygen 1.4.3-20050530
omniEvents-2_6_2/doc/doxygen/a00235.png0000644000076400001440000000105710240666443017700 0ustar alexusers00000000000000‰PNG  IHDRï'åS!PLTEþÿÿo???¿¿¿___ßßߟŸŸÿÿÿÛ€!tRNS@æØf¼IDATX…íÖ1kÂPp¿BVç:˜±"ŬâJÇR8 *fw0cô%Þ› õ%¾÷){—D±hcK-4—ÁÃ?¼ŸÇ=‚ u›zoÔp ×ðŸ†;%e`¸®ò`£ä‡Õp W‡µoÁLjGñ)¬Àóxr OªÂÚõ°8†EeXkV†½©oÆ­È5ÁÛAàŽÃXn±™²È}SÆS\£œÂÎZ­¬•%kÁalÎÁë®%6‹gS°/7]ËäÎ_êÀMmƒm )Š a­™ÀÑpÒ÷ ߣžzÝ!ŒÍ98l3Áí '˜@ÏöçÜj¸Í`ð$>ŬåT“ΔîN_©~J7T]„±9sÄcÚ±à*ý‡ûö;^ SL;—L<„*$xÆiÁsuN&f'0MìÃ0…y›gc\ ï/—T±›ÁÙÄ9pºcËLàdÇíÜOaŠƒ8;˜v<îïaÚ±—§·zF‹NNo5:Âëøq’Àô-_Ærµ‡éV‡yp`—¼²NëVÇp~}…7Ý—åM`ð>ìÛÀÕ«†k¸þáºüýïW ÿø~]HmáU™IEND®B`‚omniEvents-2_6_2/doc/doxygen/a00110.html0000644000076400001440000001711710303671737020056 0ustar alexusers00000000000000 OmniEvents: naming.h File Reference

naming.h File Reference

#include <iostream.h>

Include dependency graph for naming.h:

This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Functions

ostream & operator<< (ostream &os, const CosNaming::Name &n)
CosNaming::Name str2name (const char *namestr)
 Converts stringified name to naming service name.
int bindName2Object (CosNaming::NamingContext_ptr namingContext, const CosNaming::Name &name, CORBA::Object_ptr obj)
 Binds CosNaming::Name to object in the naming service.


Function Documentation

int bindName2Object CosNaming::NamingContext_ptr  namingContext,
const CosNaming::Name &  name,
CORBA::Object_ptr  obj
 

Binds CosNaming::Name to object in the naming service.

Definition at line 149 of file naming.cc.

Referenced by main().

ostream& operator<< ostream &  os,
const CosNaming::Name &  n
 

Definition at line 104 of file naming.cc.

CosNaming::Name str2name const char *  namestr  ) 
 

Converts stringified name to naming service name.

Format for name: [<context_id>[.<context_kind>]/]*<object_id>[.<object_kind>]

E.g. foo, foo.bar, foo.bar/baz/qux, foo/bar/baz.qux

Definition at line 117 of file naming.cc.

Referenced by main().


Generated on Fri Aug 26 20:56:15 2005 for OmniEvents by  doxygen 1.4.3-20050530
omniEvents-2_6_2/doc/doxygen/a00236.png0000644000076400001440000000135610240666443017703 0ustar alexusers00000000000000‰PNG  IHDR2'~„Ùj!PLTEþÿÿo???¿¿¿___ßßߟŸŸÿÿÿÛ€!tRNS@æØf{IDATX…íÕAo›0àþ®»vQŽ«¢­9n‡)\ÙÔÁqªÑc¤…cµl G 8öm ì_¹gÜ´$iÚl/“gœû=rÆÿÕ8;5 4ZYóheÍ£•5‘áçy”¸@™Œ<÷ÑZY+ûdÊ«ÉVÉÉ¥%¬†,!p“¿35“Mò²É^™RGÆ5fÛNîš:Èh^F÷É”z2Μ‚˺2÷–b7BI'v†ØMqèŒQ¢Ž"ܱsÍ-HƒL¤×2¥Bf…ÉÂø‰]6óá4²ÔÄ-Ÿ/ ÍÐSCÏdVÈã`îȾ)’ù}.fWC¤[ôõ!±F˜’¹ŠÉP ¢0 ™Hc‘^Ë” YÜöS?%ìæRÊR3UãÑD WpÉÜ™Á,í£ÝsxÔÀàK‘ õJŒð’@†7%bØüÊøˆ4é™Roä­®HBŠÙ¢î9ZºÌIUÄ‘e§ ³LON«Î/ŠdÄÀÔä|*ꌚPNÞûwRæ]¸R&Ò¢Îh=›òåd¢°®§p?63Ùªs.d0‹ QvbÊ/°µg802™Ø3¤ŒôÈÞAzCÆÿ”˶öLÈî~qÆGÊøl{Ï\(¯3}˜É²:ë=Ê4)épC–ÙÊë,'³m›3Ç£±&Os2Û^×™eƒ·E2Ù›)tÄOËÞÄd~òi’ÉÄ·°}²òÿèÍ:ƒÞ3³Ùò^ô&ÆÞº7QEo†Æž—ÿnì6dµã7TÛîO²EÿÛü4²ïöJvWÆid1îV˚ǑdÅ ´²Vöz²#Çú/&;J´²æÑÊšÇ_鉬sGP“IEND®B`‚omniEvents-2_6_2/doc/doxygen/a00237.png0000644000076400001440000000255310240666444017705 0ustar alexusers00000000000000‰PNG  IHDRÔ·˜mß!PLTEþÿÿo???¿¿¿___ßßߟŸŸÿÿÿÛ€!tRNS@æØføIDATxœíÛOoÛ6ð~£§ù¸d3|]+ Ñq;ÕÇ9E"{è`­†uÜ` ñ­Idšº)Ž,“Ÿr¤(Y‹"7§"ZX5TýðHšŸÈ7ÔXyÓQÕQÍ nP4QþéSHGuÔ@-A©ÐMn )r¤µ÷îÜ=9c:ÝЭ3 =›.WÔ/‹¡ûyqMÜý`>º_\ÇQÍ® ¨1]ºˆþE\âî&ˆZ1å¦õ©•B”,0öˆ»¤‘ï³fŠÛ „âQùtQŒ †mu™¶Õ%£Ö@”è³§‡¤Ò¡€¨r¿¢¨2~h¥>->›¢öx}3¥^.õÍQÁw¦9{½†'ªR½ž!*àRßKMƒRŒÊ0Õ´þ4´Uã“φêKÔŸbda5?[‰ê£‚X3BI0ŠT yþyP’õ§@É¥@Éu”týµ§¤ƒjMÉ¥‡Ú½;Q”¨BýíNœ¼S¡ŠõJ;Å+¡Jý’*ý¨©òªžÊ&ßçA•%8ªò”$.µÇ#b]YöÖñŒ øUþÄ¥x6ð‚\ÐÍÎçy&±Eª:¦‹Kñl Mlö‰xöŒFˆgÏT¨š1=¾Tg‰Ë)žä©š•¸T’ Ì¢R¥ênTi[]¦o«ƒ2Uw÷M{à,¥x$ EªT2¿˜‚bPbÞ}r:׊*WŸÞP•>K}€ jƒêC´UAŠÛH$ôSùÖOºBÓs uœ‹ªÉKdì§WÏe/óÈÙœ $¥"C2%%ê«#•šôÍP¦ȦÂã¥á¨õ—¯ŸQ4ÜÒ;ÿ÷vçì»fÿÒM=Zãp»ºùâ¿?¾÷­›,ªGöñëÇ?tShè…¾³¹ Y|ç~É(4¼Îñ÷º)våpBé2ôžøì™Ž}Á›+ÔßVqTØsJQMçøG˜¶§m5fmµaß±¶zÓØN{àÓïÀôÀÃ)-“òP¡•ÚZ·w†(¼ÞeÃÖ:U¾*ÝeGv¥ûp›Ç˜–X›ûUK¬Ý­1ÃÄg“g³–œ&>ìÿãNš*å+&º‰vª<»â˜è’ú©Ê¤'Hf=ú©êT.±¨Ê5™ ¿ÜùÛQå* j*%KŽ™³vT¹ ƒRg¿áÔ³ªþÅ‘BÉ_-Tí A­<˳§×¬÷x–˶¥jÃÔö0Aσ9£>-.i–lMÕ…•P¬òB;B|ÁžE³|`kª.,Aýô›x:kñõY’®=U– lVù¨Ô©š°õPh«5$µòì¡=½Mz ÒAUkb ¥U Žª„H•äÊa½ªTƒ)Ýœ…ÒâQúÜÞáÃRA˜\Úñ:ׯ˜\\dpɔɅ`WÒɆ¥¸êQ†S\ËIM-ea£‚Àغ[jvᲡ娩™]”Ô‚vÕ½yOõAïí©wµïl=TÍb£JÑFzÙÝQ•Û’—m ÔOÅ›…GF¨l³0,upÆÎ˜X?ûñúÀ[¾õ¸]X3EÖ+â’‹Èßì|žiÊoÖN± $vä#‘ÌoÖLí~¸à«Ûb*^ä–Û뛢«#•DE;£x[à(ÖŸŠ÷@¾õˆÊ—ƒ[ÜÇ Hí_f†(:½/ g?²wÔÿ›2÷ÈÙ°tÔùPÿåc®d{= IEND®B`‚omniEvents-2_6_2/doc/doxygen/a00111.html0000644000076400001440000000735010303671737020055 0ustar alexusers00000000000000 OmniEvents: omniEvents.cc File Reference

omniEvents.cc File Reference

#include "omniEvents.h"
#include <iostream.h>
#include "defaults.h"

Include dependency graph for omniEvents.cc:

Go to the source code of this file.

Namespaces

namespace  OmniEvents

Defines

#define NEED_PACKAGE_INFO

Functions

void OmniEvents::usage (int argc, char **argv)
void OmniEvents::insertArgs (int &argc, char **&argv, int idx, int nargs)
 Utility function, used to manipulate argv when using omniORB3.


Define Documentation

#define NEED_PACKAGE_INFO
 

Definition at line 26 of file omniEvents.cc.


Generated on Fri Aug 26 20:56:15 2005 for OmniEvents by  doxygen 1.4.3-20050530
omniEvents-2_6_2/doc/doxygen/a00238.png0000644000076400001440000000611010240666444017677 0ustar alexusers00000000000000‰PNG  IHDRê×@)Ûº$PLTEþÿÿ§§§o???¿¿¿___ßßߟŸŸÿÿÿ«d¨tRNS@æØf ÒIDATxœíMoãF†ó[t\^ãYcrœYcYë´ˆL¤c°H0>pò˜]íÂ:Z–)ñFËú`ÿ¹íj’"›Ý²Èþ¨†d¶&Mjô ª›dëÕËâ7ÄEû¦¥¶Ô–ꎺ¨Õ"ÃÔèðKʯj©-µ¥ ÔU¯}A¤&;jˆA]Ï‚õ¢7蓯Ïd>¸]ͺd½¸…¿,R¯FƒßF7I°>¿ë=Žn Ö«ÑÍëù}Ï"µOü $&A,‡!¹jŸ|^u—]‹Ô$£Åb–>ÙDñ–ûÙZ¬Ub½¤±N,RÓ~=ËûõŒR'W£³Wú—Ej:†o_¦Ù&»¡Í1{ðû´+ó¶‘­ÌRc½ß¯£ß0©^–áÅy±íÖ25î¸8û{Ä5æÞ‹ê¹ Æüû!QY¨Ø³ðXééR½÷CUK°.U-TMªb¨GIUL°U5T=ªj¨ZTåPªœ`ªz¨:TõPŽª‘` ªF¨ÇFÕIð±QulŽÚ`^ªN|x~´T¡[O—*7§KVžê û1¨¯6¨’Ó!B†÷QýñüzNƳ‰OæƒÙ£«R%'á”Ú{è=§eä“çe´O6Ne?Á&•v¯:l‡úé¯9U®Û¡NI«LV¤Ê®èeêkJݹ:l‡z}óQ“Àè©qçðÜÂ4˜öÏոꩦ†©Ê{¢Pëê—F©é7 ØTOxO;ÔXö.5Ûú,<Þ³^¿éRñ”Ú Q©uNEÔ‡ ¦RëIÖ©¨J­'¬œ>W©õ*KT*²Rëq‹÷@ÅVj]R±•Z‡Tt¥Ö!]©õŒ ‹….•Op=“IŽ“ÊwëIS+ÇMK5N­œ#$ÔÂElˆס&XÔ¯O/½M¸^ô’ñôAXãbÔõï÷ÿn¿ñí÷4Ö«ÑME!Ö¤V/8ŒšÛï—Iæ N‚>ù\QˆmPýÅbø/ÃÄðÃ\áœBl%V² þü/ÉÄëeE!Ö¤V/®Y¿Þõ’>abø¹UbT«ë!ŒZ`¾LÙŠÉ1,§l-µ.µ:„kÈïæ©±Ö·JëQSÉ=‡ÖýMS‰ *H³p}ùR—ЧëË—zÔQ©Õ—ô´¨¸îÖüÈAU/s*²Ï4£âª—N©ØîV—TdÍÔ%ÝS늭™2*¾»Õ]3ªV¨GF­$¸Ö¼´˜5¢Öš†kS¥ÂDK5HUú°~ÊÔ×)>uTÅZ]jß}‚E­ă~ª·NlZˆi¬  3ص*S*hÃL'¶G­ Ä” ]r/Ò  —t©@œÆ:a:±>5?¢Kâ$˜€6|5:3BõäÔª@ "¼¹1¼—z iR;¦÷C­ãÏ6Nëø³õ©|d(:µ¦?Û,µA} ƒÔta^±âAT§)Q‹UD¥¶ b*µS©ÝQ¸[Uó«DÝÁPÕËœŠ«#æT\E/æÈTdmM[Ö b«\Œ‡­7Å©Z V¥ê…ªB…_z¡*Pµ…peªf‚›ScmIZ‰ê¹ ÂQH°uç‚´[m»4äÝj*K°u*t«8–,Scù×¶©¢Û*O°uê7«óÍ xO‚mú‡éAÿd»¤òðôamï%¿û¾ “ËÓ±ÿp§ãÉÇÒ>yxB ø‡;»çÊ*•‡—¾5àfTù5N*/ÉXß?Sª(‚—¨‚<Üëû‡uÏå\*Ó1¬ïî°öõ`S¥Êcµè©ÝKíXôÔÆò Çl“eª°1 Þ*µr¸ ·FeN·,nJŠà„d«QëM ³1,9hÕfáµþC6ŠÕa¾Õ§J±mêžãÕ2Õ\z›PIÚ±ÔYR¦šk"õ>_ ˆÔU¾¡P'¬“×póqN¢ß·‹àn1[×v©OýÕ|üåzµø÷Ï‹.¾\C¬ÛÇÄ.5ü8[EƒçïW4ÇçÑàÑêj—pKT Y é¬vE;sÑ.MûÕ2•ź˜ ¸X­SÓ~íçýÚ§ýúlŸšŽáí¢›áéKô³uêó tt…Ó±sFœ_üòðÕÖÙ²ìsêæJçæª¾›Áèê¥ ©ÙlÍĘjB-¦ÝºÜFÔÒ,¼Huÿ[nQA­ÑÄïɲ95gàykH• £¸¶F•K‡/åZ§ÊQÓ¯ôU¨¬ÕX÷*'Km–a™Fl?V™FÜï¹ä¤Ôé?çƒÿ,&™FLP€8«1â_ÁµU4]æÔÇ¿?mŸ¶Q¦ÓEïye5&^Ïïà«7¤îýVeº‰à'ÓˆÙ Õ2ï𪻼à«7SjÅ»òsj˜R}¦3©˜Q™w8ó«Q=©$XŽšiİÈb½d±Žù*Ä;ãð$²4GÍ4bX0*x‡ÁDü_…¸!U,£ÁS3”ÊjLPg Cƒ~­k÷Ü”S•nWÑ¢²ÑT öd©’cPů¯¨,ÅJ•À´¨'ÔX¨eužS=©u¡akì açÝÏuÍ)î¨nüMè^®ô†t·\ÇݘRѽ—)P+XªOmìÒ?ìÆ+í Ï?Nj«AÅõûï>:«Ëz:wT¨cU¨Nî”)Qï *ßćwWä ín/þ¦ÛIOG‹¦LåEq'ÙûB±%†¨Í’lŽŠ+?r[**Õß¼ùÉòø¨üY‰êyj2~¦ÀRAOæø‰Œg]ÞB¬A¥ÔóûS*h¿ŽÎÀD<ßy ±qj°ü’RAɘMç°§l!Ö¢rÃ)£’M˜RCBh®} ~ú©Ë[ˆS!ÖMëek2\¶§žßõ¦ë´_ÏX¿Rêt;ä-ÄÆ©ãgrýKy S*ü…X‹Ê°é;Éž–)¶Ó ®Pë5=jy8µTÔrÇ:¢âÌÂåw·5iÇEůTèŠ^ Ò!½Æ§þ}òÇFÅ®S›Q‘+»¡ê?´íø¨È•»½Ê…ºÓÖPëüŠ¢R[¢bÖo*±kU•#T V—Šø4aþqÂf¦‘jÜhN QI#UZƒZ±ÌýÅ µÑ€2FÅÊðê¥ê&: Š´Teê|pë“dD©ãY—®tèmLÞ•oÕ¢J½ÇÑMFo‡@¥& _nv%ˆMSCr‘SAhïE,™fúyW‚Ø45"~FýôË0HÄ ƒ>¼+A¬E•hk,V¨]Ȱ_ŽõrW‚Ø4õqt–t¿uºÒµ6œßõ˜>¼+A¬N­×vcøuöaº–a¦ÃRªð5l»ZTAÑsC%·Õ—ÝJ5cÃÔšM‹ªª^%µ”â“§–RŒ3 wâ ̨Ø:¢K*¶zé”ê¦N­*¶fêÄ{©/èéP‘ÕKmAO‹Š«^:¦:©Ž«™j‹—šTÕ`5©ˆJ­*/™º "êÃå?:Mæ¥ÐŒP››¨R•?-µ¥Ší-}àmOmKU¥fîáí ¿™z%±P„X*j!™{8™Œ7Ï˲ƒX(Bl”šº‡“ Ù„$,9ˆé‰ƒØ5u/?| ‰.9ˆ…"ÄÆcÝ„K2jÉA,!Ö  ºOæNºŒZr EˆRS÷0ŒaJ-9ˆ…"ÄÔ²ÚÄ~×óñ'µHq÷°ijý¦C-Rü¨»¿ê.ÅÔaY8GUjÊTtŸ©C*º»Õ%ÛÝš5dÍÔ)ÛÝš5dŸiÖ}¦N©¸Jí®¡*µEÃTj‹†©Ôº¦bêÃ¥†¨Ô–žR랊§s­±>™ 6ÖµéÜ¿¥¶ÔúÔƒºHKU¢¦îa¸ßOËJdbØQyHAjêÀ:œ–•Èİ£ò:ƒÔÔ= õ$ü´¬Dæ †•‡Ô¤¦îá ³bØQyHéXý ›¦¶pç±–Rg´_Á= õ$€Z8ˆaGå!ufÇ0x†³Á[8ˆaGå!uæ¨Ò/q`£dDZSE÷p¾QÜqBל–z"T'³p¥ÖRO“újæ7w⾫IEND®B`‚omniEvents-2_6_2/doc/doxygen/a00112.html0000644000076400001440000000516610303671737020061 0ustar alexusers00000000000000 OmniEvents: omniEvents.h File Reference

omniEvents.h File Reference

This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Namespaces

namespace  OmniEvents

Functions

void OmniEvents::insertArgs (int &argc, char **&argv, int idx, int nargs)
 Utility function, used to manipulate argv when using omniORB3.
void OmniEvents::usage (int argc, char **argv)


Generated on Fri Aug 26 20:56:15 2005 for OmniEvents by  doxygen 1.4.3-20050530
omniEvents-2_6_2/doc/doxygen/a00239.png0000644000076400001440000003120710240666445017706 0ustar alexusers00000000000000‰PNG  IHDRG›ÌìP$PLTEþÿÿoŸŸŸ¿¿¿???ßßß___ÿÿÿº7±5tRNS@æØf IDATxœíM{Ü8’ çwì1Ÿ>ÏžmY·éòÖØyl·?¯SÛ»Îã¶GU™çªrKÇR¹¶¥[K¥ÌËŠ…){i';H”›Mj³X!åWäàæp~pñáb³¢Ÿîož.ÈæâŒ«•ÚÜeÑ‘ŠÒÉ ru»šÏžÎžŠOß½+ ]ßr:=}R&hZð-¤E¾XlÒ9)þŠO§d^@JIÊÓ8L"!3¤goDHiñí“ •¨˜!]’¶&™C¢8§ˆ U£³òC éN„Dû¤CKH,õ`ñAú¦ü@±|øüV€DGw©=$R&‹ (Ab·;‰ê>é¼±›qSt”7³?}?ÚN …ˆ)"H|¦‚t¿|-~´Ÿ» S<ª‰³à¡aŠÒ„°ñ——Gaô¢”%….Ñ7~ž'e!aŠRQgYùÆ×C¿€0ʼn‰¿'³Á`ŠR¶}çÓƒ5L±@ª²²z‘@ÊúÁ’”)HCVT68¥R¿ nòâ€4 µ+e`“¤Á ΰ&/ HC+ØäEipE¢2 ¥  HT†£4BÒ—Á(Å)kGe(J@ E‘È`”"€Œ"‘¡(…) E"Q RHŠD†¡4B2•(),kGÅ« RhŠ4Ä<ÞÉ\¼S RxÖŽø§4B²Ï¥ R€ÖŽŠßb¬Ä¯*)LkG<7ž’x-XàµvÄoÉFH–âS•FH¶â±haC ¶K"^Ë6B²ª6¤€­Ï4B²o¥ RÐÖn„Ä$pHÞŠ4¤°­Ý©”À!y+ßÉA|©ÒÉAFHÁˆ·V4Br‘R<•p„ä$~Ti„ä$#$3HÂnH呈Ÿv2$ífÚ$ãoû’NýöjN†KË‹½‹RfdÙ2V#¤Î_-ëx»/ö.RHŽÁðá†#$Õ0AŒßc‡¤º~È~%så£SB‚¤%µ/ 9$ø» 7PCÒSÛ•X éFÕl X;¶ R‰ æd‚Bš‚=áccù<Ø»¨ y™”Ë 9jâmâÔˆ“{ ‰‡ÁÄ€ä5‰'|U‚‡T“”v[º™Bò.F—¾*a@*0‰Õ»ß K‹S¬j—–/ªw©=¤ÁžÒjpB·wÀ*F¥&ÑMEï—³³Sr|M.ÎNn¦d~pÅ5ƒ4è>=7ºè Ò$á;ï•èö¼ŸŽ>ç‹û×g_Ž>—štò‚$Ò·¥3vá !Ñ t£ë”<¡;õÞž§äy iQY?#Hø¤tpJ9ÁAbƒoþ¡„”’üh¹¼És²Y­Šî¨ì“¬ …áp¬êž2äü`xä*þ²Õ¤9ªk’¤‰‰b‘àz(AAjDú¤WUŸôª€t9$"ç”àz%AjF€Fw'_/ù莼›¦v°v[i ÷ìŸth ¤V”¾’¸eü¦5a)$EâRWdLHíHŠ%qËx'H)A2w µ@@’D»dæNÜ2þ¤yHìÈîQ~†ìÜ I‘t<@kW S ltH²vŽéö[=™öB¨Õ˽ÎÝ!IÛ9(¤úÕßö']Š'Hd·>@³õ˜7 wHÒô¨ UÓÊú9ú†$7Ū $ãuž!):uHçÈ’+$ÄÑqT£ýBÂWi7ÚA€Œsô ó6³Òùu #¤J<@j*+ƒ”Ò?¿·ÎÒÄ4G¯Pçú!¥­s‚ÄÆ eŽsõa»Ây…„;©Æ#6¾-!=Üüéìôáfzyz¿œ‘ƒ›ÃùÁŇ‹¢.Îfü¸wü»#ÛV†„<©–wÂ5)?<(4éËôÓÑgru»šÏžÎžõp}[Õ„ï!x#Ç#ÛV†„<;݉š»Ëâÿ'd±Iç„þ#›tk½ß'%ÜÜ_“õÙéÙiþ|Z¨ùúìWÒRs°g§i&ÒíÛ—t³\Þgo¶VÞ!5âzÌ©¯@¡æù"I¨CÛìi©ù£D¨¹KÉŠQ}R¶}BQÓ$êuS¨yiJÕ|Cæ‹–š{„„ý,®R>e>½"—wÒ¡'HG±üƒDý× 5§>RTÍoÿr¼hµ ПÅ%Û?¥ÔÂ;¥…Ù§Ž-ä~yB>|~Ëê!õI²j§I…šSHTÍói>$$ô‡ÚrHÐ<’jU¼™e}Ò”A¢mÓ‹–š{ƒ„ÿP»‰?ÿdîNË‹¡6ºûzY@*Ôüîæûó–š{ƒ„ï"…ä‚U{µs€ÓB~ ‰n¬¬1û…d²|6ò+ó´wÏ[¨·@®]¤É“;¸‹¯p6ù·É‚ò`í¯´U÷Ͻ®‘,…3 ЏÅuÅôÙ!U™99Ü›zGš‰%¤þâ€B·vŽŒ»B)HØŠä¼Âw­Ÿ$– Iî0-ÎÕ‹¼Ô/dH"¹/ ¬Êr™Fyêæµb W‘ *xo…¦ÀC×l…» ÚAÂT$˜x3!®™ílÚbœ®¦ ÈF%=a¼ Rå„VzR/`R:D»£’4Ÿû TئŒdŽ;œt‹¤ÎæÇ]JMb^Ô ˜”ŽÑîÊ|²ÞÜ\ª«§OQÀ“ 0¤jß/nî˜FéœF»+ó¡° .úY‚ñÎ’¢Ú¸Ã •^À©a 5*˜àZ~í±ŠÀAª®š?1 •^ÀÖP®2ˆ`‚~· Iˆ†´‚sHw Ò:H0›dU‰‘h íZ¦;’A*½€ HÔßÖÂõÃöñøÖ’Äz€L a@‚—Šoí¬ µÚEœ.=Hƒ&衲kIvÝaB‚:ìÁÚ@’^8$ØF*SyGIHäõ"$„YÖ’¢uA‚¬VŒÙ5ŠIQÄà áÁ’Þ¾F0à,‰Dáõ#=*æ¼X;gHÊ8GBB’uG–ŽÈâi¸R*q…„ªê°ä¥ú ß'вûP(º#wH¸Ï»¶â ·€@TwG0<¸©»AB.à$}åÝ‘;$?ÖÎR"}‹! Ô#ïÇ ݳ ƒŽ»£¤Í*_.¯ÚÒh;G§Ýiž¬$äF”eÎ5ÐyÛÖ¤Y~t´>óÈ‚#$µdÎó¡Ý HÌ]#” ÿ¨‚äÉÚ9AÂnDÎz&TYm_o.Îþuy˜\ænAÈ×Ù&%ÇWÔSðì”Æ™*£ î\ã‚„]¾,qËA+Ðýë½Z_­WùÉ i}¾~ÿ˳ëÛâ#"ZFܹ n!ù²v.ÐËç©wBµ¬í|qûûj³¢|ò#:p¸$é×Ã|±~_zeÐ(¢e4ÁË`TÐÝiÞZãä²¶çÒ¢øêç9™/—ç%$E´ T·ó¡ÙBòeí y¥æI§;“iÒ¢øêÉIN6 ‰Ä ¿x´†Û>I€tttDòSrÿËÇ3wÓM° ÉÓÄq€ä#J—5$½aávtWë“®Éý9ý–z ~½¤£»t„Ô‘‘m hݧ…üfÓ¶`{©Ë•‰’QšÕÕ"ûÞ¼<¸ Cêpeã_ÈS2„d¨¥©sV¤¨!iº²±S³‘€þ¡TظÎU‘†¤.\ IוÉpnb’‡‚™ä®`@Òuec§È!Ñ,ôëѽ³ïóÉ;\‚TÛYZÓ• ɬEOº-¶Æé• IR8I¦I ¢pecgÊ!Ñ,t!™iÅ„8Õ®¿uŽ;±Zé')1¿í“t\ÙØ™îŒêÊÑ7¸Ö ¢„”ìFw:®lìL)¤²*5ëÒh9:b%ʈ©ÚPjZȒż„}åÖDÈZÕ’ÑÛ÷rP ‰µw­J0šr|žÚ83&H女ÿ,˜[CjŽPb‚T–U¶C…–È qÇCJ0ªpǧ@­QdDX[f‚Ä­’F%˜ÔS¥t¶‘ZçÅ©ö RååÑ_ 6s°–ÖNr7 ¤zÙ=C2zÐgs’•¤0Ñ@ªRÂÿöV‚A-ítΪj¥³±@j4KçHžf?$µ©ZùÌS,0ʹ„õ$n0g'jcí9… I(Ê]HuäVdÕsöH asç/ÕºAm‹ƒ@sHÊ!dÀ„²¡f¯Ý•``ììNã'«/2 H(ÆNð—ê¬Û‡ë†5ÛåR$”Bf»×®ô H-ç¸M!H8~Bê]• _Aõz6stíþ=H¨ŠÔI¿®³ÎÒïP$\Eê¤_?v´\D §ˆz ôA•~çIz£’Ç ©æy¨ÎA;ïM3µ'Ç„lí:!içÝšÏé?ÓÀ·5|HÈŠÔéÀ¨wëÀ>HFC†$>Š…•ÆŒ“* íŠlØ Ép5Lð0§V«÷ŠJÐ7v†çš.X æÔ*á¸N>Kì€dòõQBjαÉóÐV$Y¥«‹m±î/tHÖ®ž¦’nÕH‹¨<ÙfB?tH芤„¤Ý¼NŽòjWXP»Ë x¥½|„â5*Šæ «:ÝœÇɕӲÉ=>HŠRAÒ­O“‘¡­Y¼µk­ ¦Ch­ãd·?n{¢¡I2É&«ÍŒUL–$Ä:t\±ƒ_ºVMÉ!¹ÎO›ÎAtË#ƒÔNP ÉÕØÉ’t0 aC‚¶vò í:p4vIj¦†#a@’¤'ƒ¤[)OtÝêÙÓݬÕó$ÇmÜZ¢˜d³yªJ¥kµùÙíJ$Õ$›lT®#NFŽ2$Xïbå²Ëí*µ—\$å4ª]v¼ÆÿÑ@’'ÖžpÐí>:ëXîk#’"­6$÷QCóWç ¡ $åsœ$€QC3÷*XÙÔ¬Ò~š®•b÷ÏË}mä1@ê¨ÑæàbÔÐøà*^稒DlweK,úx£²Ö7ñs7k¶F ’©îÔ%1ï>ôJe–f¯D I¿ïQ%@Äë×JÊÐ$Õn¸zæ0•icHúƒÃruhHöÛ{ÕR1¶v¦SB)uƒ'®$éÅ Q£KT$)$YåËdO !ªO A*8$?cp@H›{5Å’nëȯT$»µrŠL­ñvX’»¿€˜˜á ~U=H²f ÊÈØÚM7µR},ÀF LDHF³¦Ú‡>BHÐñr³.É …tA*wFû0åŸæüu·kqÔ ‡ ,A³.ɤ¢ªcE®5Hiõíœü^¾vCòs£d©¹3lwT¦hÖ%™äo‰½RÒõB̺$³}%ɲÊ?þL7þ~¸™ÜÎI¾˜—o§ÂþßñBB`dÖ%™õ ™ä¤²òï^LéÆß)¹º]• MºXŸ ûG ƒ‘híú+Á¬JHÓMÊ6þ^lÒ-$"îÿ¤šyÁ(£¨H&Žt:¢„”/HÊ6þ~öf éÙoSakéX!!íU±»ò^†•”IÎÚiR¹ñ÷eA‹ÌKHSjîº!yƒ;ABa”™x7˜Ö‘ë“èÆß—wi>=.!]®Ïc‡„¨¦H½L­M&ü­„î~MÙÆß>¿½»yZ@zGGwi”vCF$1Xù`\5¤~‰Rñj{böäa^„&$—™!!kjŠÔSæE¨Aâ>{¨IŽ[êöJmÉFw&E¨Aâ®{ I‘&µ«îÎÄ¢™x"ƒäÖ'y¹Q2…TY;=’Ñr=IjÉ2Û½…Ôž²Ù¸íÔV_ØÞ‰ÁjF*“壆ýƒ4©·Åè^ªBØéÇ ¬jG„”MØj¶=„Tþ•Ô¤¬±Ð³«ìì­)ᾜ.¬ABÊ”;¾@@J2mH–ÓïÉ.Ù ¹Rͨ‹iÒ¬ùŽ °¬z+=Ô†>Æà†&BS¬‹;¤V@ÊŽë·­š„ÿ7§"$úGZ.gH“¶‡‹òh§ø;m‚ð ej#áéŸmFÆÈÖLeD#BR·Â6¤97Íšßæ‹Ú!•$¤¬IëŠÉ„ÿ$\‹³s/|Eæ‹ûå,?`>mS ©8ª|JæWütÉ¥ªrr¨bn@ë54HIÇ2H?½šÏžÎž’kê½F!'äÓÑçüäsd£Š£¨OA©øV<½ž›<#/²^‘Bƒ”umœÄj9%Ïçd^úè¦åÀ¡Ðœ?žä‹|Q:²QHÅQÔ;§€´¨¬Ÿ>$—JI^}¤IÖÑŒËZÞ¬È\€D5éþ¯«Íryà =ûš;zõs£}’’¢98Ý…&ðÖ.4HIÒQ"™&QHë?Ÿ¿1HSfîvšd ÉÉT±ðx,,HYÖÕŒw}’éèhAn¦EŸôŠAº, ßñ>iÝ IzñnnÍ‚µó17€”t†šÞîj}Ò ù{ù-…T:²åËå{>º£¾¼†Ü*8CP¤° õÄ{4œZ/6µ3Z§K¯Ý±BE Rç÷†î_ÿp"~ւ了#ñ³‰¸èCR9ROb>Ázüe!~l.ËÍU E ’²:F)¤yºìÒŸ%ð=RX”5”ÙņlH’Á4‘¶dÆ  )!Tñ;5©û¢ÂÌË.Æ¢ ©ý·s™™‹¡B§K®Ü½z'}©|+‘i_ªþ ™û3m œåÀ¡!ÓÛu ãØÓ]£2 ñBš÷L<¡®÷šVúí `Ôÿ´Ï ’‡y! H»Zœ  pîéšÃg²2€qœŽ4³€`ÔõÄ’Ë>@ò‡J³.aõ?¤ˆ’ÆV-`Ò¸lŒG²±Cú§'%¢Ò¨KF™ÎÜjLnrUŸäGêW Ã(Ñy$¤å‡A!Õ ÆÈ&ZO’j@~—|§JY¬ofѤ>¤‡a”éy Õ€¤’ï¤âÒÍýâgr|½øá&_ýrW|q¸^^§¾!a0Òôb@n¦÷ËÙÃÍTø®KüBº»¾»ÎWÞž¾_.¯žÿþá?þñŸž!Õš;Ѐ2!=ÖŽ?¸d@.Ö矎>‡ªIyùoyþ|u¶:[¦ï¾¼û¸ü‹gHâ%1¢Ét+Ÿ䨩{4¤/ßrHÅËß}B 6¾\§«Gâú ȳ߾+*#hH«w«&\¾ñ Ià$¹Z÷ÖU—µ—ÓõùŠéCŸ—@š1HÇWÏO‹>éù„$\/Ô¼mµ»«*«— È%í“^ éjó?–üî0PŒª`Bêô²ÝƒKatwBÞéŽî¼Bê”¶¦¿¼v@Måò$;ü£Ëœj‡ºÄ‰jR&>ëC¬/0‚MRé]Íó—û‰Ê®ƒ…žÇcT¡·Ëegøû‰«r@,ÈŽ˜Šn#е;$yá÷ 6 +‡Àê¾c›P³3U>]Þ;H°”05fl;Æ$û iÒ{¦–|S½Q>\´O²6ÑÔÙªöÉË£LÏþFm{fïP'pH=2‘ŒØÇI+¶´•«¿¹»>™$Š¢D ×-HÊ)€ a»9…Iuƒ$ìiÇ€ )Ê2B ’ÜàáCâ·9#$iîŠÉ„Uj¾\^Õ¾Þ¼û2Ý´k‡E²‘$³ ×%ÄZÇÊ,Ÿ¾]-%$HDÆC¢Q5vò°øñ¯ÿy)­}ûÃÂI`Éìç’Ø._Њ¡;´æ³âSñMñ–îâÊ ]Ý®¾/Û~:z•¿¼=¿{¿ |Ç]BÚ’˜åÓ·?,œ„©\*פ´8\ íxå¥$Ý”!íhì§rW:p¸¦;¹ž’oiø!ò<Ÿ’Ó‡Ã]à»MÒΧoX8 ’l­ÜN“„Àvù¢0CÏè–…·9®*îâÊ4éÙ›”¾¤<îÝÏs!¦šÒn7XÍ|ú¶…“!5»¥$!°]Ù¡ÿD«)ŸæÛN6 é’šô'®I òüÿôA¢/+³|-$æ¯[§´‚ íòÅ¿”Cã¢ò>T•GwqåîÒïKÇ6Ú'-H~J» 7³úùôí '¡A’ÄnßöI×B`»¯—ü&3½»ùþœWÝÅ•Aúðù-sl+'÷ç$í€Äee˜Ïã†T7xÓB÷3ô‚¿—5Œ°ÏüªÅb@úQœ'!IÄb¯Šš‚»Cº­ÍÆa2ƒ„Ú-l½¨2–¬aCR´GÌn ¤$jU²LN*ACÂí–j7Q«’…ØŒç}BRúÞØ•AK(Ñjvq‘I ”Óà¹ë@ùP î•ê‡Ð!Þ-ÑÀ"™+ R‡a»[*Ÿüµ£ž‡S\ļBR—µ[rM€HÙûžÅæ·GfµŸô$^Y³`;ת¤‚ÔÎG%H!Oâe‰0és=ZŸžæÏ¿[•ø~åÁY¼BêÜiÒ® z9;ž_V-Ðì…R˜ÃÄáA¾È_nV×·«»×Cƒ„Ú-9jAy:Ð}±R8¤ÂÜåÓÍ*%éÃt3¤á<0{× éöíKêoTB*:'ÿÔSLÂuy`g»«º¼âöÔ{¯‚4ˆ&÷Ý0»%·PžÝã)i]qKá|ºƒ4HŸÔ )\O<Ö)Qw—"*!‡Tî¨ß^ iÑ]?$ÔnÉådV®$C„ÔžZ/ª‰‡° avK.IsHE¯ê²²Frê6T¶dîîþõ'ì]XBug§fnû¯Êvecw`Š}Ÿ¿,Ø›À ¡vK®§fDsɹ\Ä3qÐÞÈ¡AÂì–ì“æ| HDzcà Ó๞é´Gn•{;V+1AÂ4xÖIó ÎØV2VÄVl¯f¤«m~IDAT ^¶}¡”VÝË…nWÜi+ã‚„¹PÓñ¼òAº¤I_ÜÝ0\ƒ›Ãüàšý¤! .$&Òìéì)¹º]審㉠Î8\+Qá 4¿ ©ü· Ž{·çÂ÷2$œúÑI´v –*‰ž½¡>a+á{ ±”¹_ßPª”)?Šé’ ¤I³B• ‰çƒ–¨s+ó®LÁBBQX–¦{%{ÞÕ/XH¨ÎCîuìÕæ… c¦u[t÷´}Ú¼€!!tK»4ÁŸÍ3…”9ìd*ðÝ’ Dâ¾lž$/7J,3èÅJ…°WÇ„\%ACï–aÁ¡Fî Â†M©q"yŠZµã, ¸lF™’ .%cHkÏ{òƒL­ý „2eÈ›Ö[@ò7¼+3ÄN @ØŽ‹$×ÝôÙ4ýà!vKRâ™3&)É5×=n+6¼Ú;qÛ\1ñM1¿Ñ<|!AvKª¤Ü0Mº·.m >$úÇóÀF¡.yæÞõ‡cîèßO½àº¥Î’»Ž£ƒÄn°Msq0J=ÜÔé‘CÓÝþtÔ),HÞíØàA'kub•¿ùûÍLö+ß"“x€”}Šß-Lì&XåýåooZ?=,$ nIŸµ'vh^ýý±u@>$ÿPÃ0*¸þ­;ŽC:,þ_‘üù³Ù&-÷>¿"g§dsqÆÍàCé–Œ ®w—ÊfÁYå¯Ïþ¼¸ÿåÇYþr}¾~O÷>?yQjÒõ-×%O†°w ”,[ŸQP€O°²·ß_ä‹õû|JÒ¯‡åÞçôÙ¤$e`CÊ„BÉqñ‹B±Ø×\“9˜/—ç—ŸÙÞçÒÊ7¤!ìH® ­k¢òÇ‚Ç<'ÊåÉÙÞç „»@)Ú"jÒýéßÞÜÿòqVpÉO˽ÏKHkª‹h9•3%/}½Ì $wJ8Á<Ê1E(ÓB[HÙ;÷JFŒ¸¤ÁTÉuˆ‡Xîð ¦JŽ”Ë=BÊ0àÙ¤Áìëà¯Ü¡@–5§Jn”Ð ãˆ"Æö0&’ %¤1x@.]"¤UÉ¥¦ŠÍg…Bñ`­EÉP•†x[5uÏ‘;‹ ¤!UÉ|ef&®‘+$J-W‘œ iïšN§Ðú¤:¤AUÉzˆ_ê €r—8AV•¬)A—z°z¦SŒ!ÕÚá°ªdK ¸Ô‚½‘¤Uɲn`!yXÂ7$KJ¥öYÎÒÀöÎ’`©½Dÿs„4¸*ÙQ+µŸ®dR{k%9ÙXl(©’Ÿ6j‰^\£\’bjÏò‚@²Úo$coÖÞ’¤œž!Ù˜ËÄR“JÛÜx†dC F|¼s‡ÔnN¾!ÙP ÐåCÌ!µ®¯EÍ;$ J±jü l µ´Þ?$ós¶w>wT‚€Ô¤TAJå‰Ì·ïà ™×™c{ÝõÊ’¤Ö) ɸÖ½÷¼ÞÄÃ@ªÚeÝ'Ú+$ãzs©fÏ»ÇY@’]éˆ |?§ë³_Éýr¶¹8û×å!]R®í\ñ³@!™ÖœC=ûÞ­/¸°À÷îõÇ4Ÿ½ ŸŽ>o®ÖWëÕýë³rmïüä?’!%{{ç}ß0HÔe&ø>L7é†Ì)y²YÑùâö¼\Û;§‹K†dHiR]™·\÷“òoûdjq]6”m0–% ÒÛ¿-—7 ÒœlV Á‚dF‰†“Mô‹Á{Ú5êe08¤Ê•“¾¥š”OóÅŠ55 ’Ù,À„¯Ð3€Ô›~0Ô}®‹´ì“¦ŸŽ^1H´O¢1!uY”>¤þCúB ‰‘AŽMïn¾?¿_ž0HttG!¥¸L†^ܧQ’–“j8”öŽUÐÓB¢èwL<ž·^1ôFƒ@b20$}JÜÏÞhà L‹½ŒtEwøÀ#•ÅÈßòNrÌv~¤ËSd° ž&̲xƒÔs·>8$ÍáC*ˆAJÉF¶pHR™gÅàaQü™µS! ¢3|¨ ±Žô¹sÓ¤2¡ŠA56j¦âR·½ ’É}-Ó¤'äëSRƤsŒ'tÒ1>ÝÍ4j@*(• Ög§g§ùóïVt®²åŠó•#$Qô)1HóÅ|Nh Á×?ξ}¦“ŽùKa¦QÒ$)ä‡ù"¹Y]ß®èý¢8_éR·½ ’þìƒôÃìsRƤ3#Ï‹;º'ùT˜i¬Œc·0ÓyX˜»|ZNƒÑ™q¾Ò#¤NUòëÙ!š”¤¿½ÿ3‹!XŒÊVd¾Y.ohÅno½ 4éöíKš«„Dç0Å©°P …#z³ Òâr5g1™&­È‘)¤jàpK¶¸& ixp=Ñê˜8¤¿ŸÌË‚¯?}Ò«¢Oz•/Ö&è 듦;H´OZ)UÒ¢Ä!½8œ—1·£»ZÓÚØK5ºûzÉ!ÑÑŠWH±¨’Îð¡Þ5ÎkS;ѵ¬õÔ<@ "´¡ôRB…tÿú‡“Î4ä@ê>Ô‘ÜÿŸH޲„DŽ¿,ºèkHÑØ;Òkò4Uh…a<“¾ _:ëWûQE$ýD2©R·ÉÛ·Çç™â}øÒaòöÌ%bHÆÊèÉlOϤ¸ìQ+3çÈîž)çÈ ‚Ö˜ Ÿ½oWpÛý“$b ”žU¸AŠN• ´ è¥/±Û;U¿!/"kr‰ÎÞ(“ðrÌ&¤U Èä…»°™4•'FUª`a\!Å©J@h° ²öŽ™¼0ÃÖ–8í2yž(¹B’ªR ]ÝbòüP2†ÔÔY15kXH{étˆKâ IF)H˜BŒÁJtB©Å “¡¤v1#‚äŽÉC·©]̨ 9c§d©?”Zl\ïšÐ»%HMJ­Ú¼ …·á@r£, ɺÊú5¶k¶}&$7›‡M 7¼´]µ*$'Lüº±XAAbƒï#TÖþ×Ù&eëNn¾+ã¡ätá覌yG¶‡…$öó1JXC HªSÊ„`=ëóõ{¶îôbý{Y(§ G7eÌ»R‚ƒDì9QJhû‘B* ™‰!FÒ¯‡lÝéa1ºèr²I·a?C„D±ÛŸ/+›(ŽÁ³ÔJ…!?WëNŸýö]íŽAZ…‰ØíþVícÚ¹b¸'[¹£,¤LX‚Mžü‘¯;æn§I@²´\ìÒ»–Èô-Ÿ¹•|‡‰×~~Ê֒˪O* ƉX ö2!¸©Bé–€˜»Q•ÚÂz&a^@úrôJ+°!;wÛ'Ma ªÔ’ÖÍl©Ýi6¬ßÌ£;òÎyt7BRJ0ÓBTF{'—  ª$—  ª$—R¤ÑÞI%,H£*I%0H£*Éd„⹕ÑÞù'H£*ù'H£*ù‘Râi´w^Ä Ò¨J^ÄÒ¨J>d„8Bíq…¤T%„Ý­¸BR.‹ï¡0B2gH*ƒ7B‚wHŠ˜-#$8q‡¤è–FHpIÞ-à’´[!Á $Y·T£òeT»]#$$‹é·¥@—¦wìýÉJ` ‰2¹Zm)¤d·Öf„d%PvA“øFáàæùÍôøsaîî—'b°»’€AÚÒá¡k…‹õyz÷úcé§£Wb°»’BâA^xÌ;©0uÓM©\Mµ v7B2PHTª…¾ŒÂ³ß¦i¾(Fwl]â.úÓÉ@À!ÕcÞM s'jÒÉF° q —µ>ép„d%8Ènt7}7=þ•îÒ’•`@*_Æi!8‡Äe„'#¤d„Œ"R2BŠ@FH¤Ñ9NÐ '#¤d„Œ"Rò_ÿ Ó·tÎåÛ8âIEND®B`‚omniEvents-2_6_2/doc/doxygen/a00113.html0000644000076400001440000002021010303671737020045 0ustar alexusers00000000000000 OmniEvents: omniEventsLog.cc File Reference

omniEventsLog.cc File Reference

#include "omniEventsLog.h"
#include <stdio.h>
#include <errno.h>
#include <time.h>
#include <assert.h>
#include "gethostname.h"
#include "EventChannelFactory.h"
#include "Orb.h"
#include "defaults.h"

Include dependency graph for omniEventsLog.cc:

Go to the source code of this file.

Namespaces

namespace  OmniEvents

Classes

class  OmniEvents::timestamp
 This class can be used to generate timestamps. More...

Defines

#define STRUCT_STAT   struct stat
#define VMS_SEMICOLON

Functions

int yyparse ()

Variables

int yydebug
FILE * yyin
timestamp OmniEvents::ts


Define Documentation

#define STRUCT_STAT   struct stat
 

Definition at line 185 of file omniEventsLog.cc.

Referenced by OmniEvents::omniEventsLog::fileExists().

#define VMS_SEMICOLON
 

Definition at line 238 of file omniEventsLog.cc.

Referenced by OmniEvents::omniEventsLog::initializeFileNames().


Function Documentation

int yyparse  ) 
 


Variable Documentation

int yydebug
 

FILE* yyin
 


Generated on Fri Aug 26 20:56:15 2005 for OmniEvents by  doxygen 1.4.3-20050530
omniEvents-2_6_2/doc/doxygen/a00240.png0000644000076400001440000000246710240666445017704 0ustar alexusers00000000000000‰PNG  IHDR‡(ÅËT$PLTEþÿÿÃÃÃoŸŸŸ¿¿¿???ßßß___ÿÿÿ&¡.étRNS@æØfÁIDATxœíÛOs›Fð|®>'Ì1îtlŽm¤:¾VIgœSgä£u"Ÿ:R„7DíûrÝ?H–Ä"!ÌÂ6á)cK¬_»‚Ý/@–xÑ4`­$­$­$UH¼gDµ¿ü¦èéi+I£•dã{— çÈz¶4’H 'DH’…ᨠ3°Õ‰1Ä»Gꌼûà’§¶ =ür0'ô¬·Î,ô“»¾i›çæ9|´:èþj#ÁOíäý?xuûfω“ ÁvœØEÎòÆòpá9tQ ~jÇ_4€•êC¸'qq;ùùw×ö¼G*ÁoïKÀÖœÜõ¦¢r2ÅŸ±“ÍIœæä³Is¢ áµ8 i'ÓÈMînM&!í„I`š0É·Ÿ¦ EÝ[ÜN:â$ÉâÜ1Fפg0 é;©Äx`’¨8U¢ûN¹ø!%!>CœI!9ÕJ”39$Š"GN¤Ø;Û1ÍK‚´4>ò žÑR9Q^òœ.ËÒ¥J‰²’Ê!e%ÕCÊIR’Š;M%$b e$b %$"Ú‰“%¢ 'K„ANœ‰…—Ðïâ|n&RX(Ê™PHa‰¢(b!E%4E MIÕ'i¥$Š,’@¼£ $¯‰ çŒ/¶ÃßH Jö$§ÿÏùÑJZ‰I¶‰–,Ðö¯„Ó•×7óÎVÄJy91xÞq§Ìò#á‹IÖ+–,ço̿ȿ‹èkc#á‹™d0r—ãH<3žŒ_y™„žŒi&~'ñ¿>©íòOâÝ“xí!Ð2þÇ•DóhŽ|ãKÎoðëå×uVÒ# _uo]d^Á'kÏ–³¥ŸtoÍyH[ÇŸËù²ë“Ú™ÖÿhuÈ‚¤©´Ìó®Û7¹DÞãäý±·Xy«T¢äÙv¥Çn ¶ãÂËØ'ä„.Ûc—ɇä½Oæì‡tK²ÀDÝ,¼ÔC=_òõB[KÐFr0'xÿ»á›…ÿ“ظ»¤’U¿ßÿ…J\@–6Y ‡×¿ÑÍžZOâ¿õ9’œ³G´Î Ò‘ãƒ•É ÎÀ‡x;'d„ Òœ¨z¨’˜L2Ø‘PËv¢Î'«Ã$¤¤Ü*æL’¶²®Ò2Ï;¼b¾dÿѧ’Õž$ÿ;vðàF‹Þ#îLBºD*Á=eÂ$¤üCÖÀ €ô÷@ß9ÂŽ¤‚øQ$WxCS É)ÑJZÉi’#‘7þ0ò:ø±è)#t)ÆÅyg Hi$uìžæÙäÈ3÷HOÙ䘥år)æ¨Ù÷¬óöý)C-# ê;iHSó’¨(ŒR¦r-†Rªš/„Rî Ç ’×Z¸Æáÿ%ŒDWItÅTNc)6¤¨X·>~™ ÇÒ˜$ciP²giT²ciX²uî߸„i2ŸÃ¹e§ çbÎ-;õH j’°Ïawð¨ Íf•rÏÁ΄t}zÏ,ôm •žž5ŠvŠ9õIèÉ]›ÍàábµSÌ©YBnçaöŠ95K¦ð”“׫bNÝ’ˆI–¸t¢bNÍctM%Èi®ï”Y£•d£•d£•dã;–44òª2ZI6ZI6þÇ{öÛ§-ÉIEND®B`‚omniEvents-2_6_2/doc/doxygen/a00114.html0000644000076400001440000001127710303671737020063 0ustar alexusers00000000000000 OmniEvents: omniEventsLog.h File Reference

omniEventsLog.h File Reference

#include <iostream.h>
#include <fstream.h>

Include dependency graph for omniEventsLog.h:

This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Namespaces

namespace  OmniEvents

Classes

class  OmniEvents::omniEventsLog
class  OmniEvents::omniEventsLog::IOError
class  OmniEvents::omniEventsLogWorker
class  OmniEvents::WriteLock
 Obtains an output stream to the active persistancy logfile, and locks it for exclusive access. More...

Defines

#define OMNIEVENTS_LOGDIR_ENV_VAR   "OMNIEVENTS_LOGDIR"


Define Documentation

#define OMNIEVENTS_LOGDIR_ENV_VAR   "OMNIEVENTS_LOGDIR"
 

Definition at line 134 of file omniEventsLog.h.


Generated on Fri Aug 26 20:56:15 2005 for OmniEvents by  doxygen 1.4.3-20050530
omniEvents-2_6_2/doc/doxygen/a00241.png0000644000076400001440000000244310240666446017700 0ustar alexusers00000000000000‰PNG  IHDR4‡j†¸Ã!PLTEþÿÿoßßß???ŸŸŸ___¿¿¿ÿÿÿ Ï;¸tRNS@æØf°IDATxœíÜKSã6ðý ¹u8B¡cÓ}=îv&“™2»É±=‘#K—ØGh¡èV'àH·˜[ú”+¿òtbK–euWÿ!d†(òod)Ž-™WDÙ¼ª°;šÆM㉦ñD ©&¸\Mc)—FÓXÊ¥ùhÇÖ×ÌWrÅ#Œöæð¶¿õÒ¥4D<{ë%G Ú˜>^à€L†o‰ñ³uEÆÖÀw1ÚOuÓÚ£äüð+6ùˆä1@Q«õꦑ»V×!É„`óµG Ó!ND3±Y3­Kf—ºTóò ~í-h¤všC<„È!}ž½îc€¢}º¹íŸ¾ 5.Àà"¡u Í­¿è퇴Odîþi‡°p ‰+—FÓXÊ¥Ñ4–ri4¥\šï˜Ö Qð¹ç DûR†6iÂ,)OFÙL©¾Våî@ÙN©a0­²ÑÊЦag'Ù ?mJ¬JY ÚAò¨,Ü´J, /­z/M‚Œ“&CÆE›J‘ñЦ•ŽËeØi²dì4i2fš<+M¢Œ‘&SÆF“*c¢É•±ÐöËöÎŠî¯øßŒ¤´b§‘hoýûN€sNŽÁöŸMÓ´ÿ-¸<´ä­¹4ô!ÈÙy´ø\4Þ¼×™$™ÎóoØI‹ßÑ cõ• šݬö˧Eˆ7ÿËÙñ% -zkL›‡¿}3“vŸøZ-º¼oþ<úa …¶˜—̦}†“><ózèl_Ì“ ÔlAûlžOk$›rO&C£ýHickO£¶˜f¶ ¬a&ͶlÎGÝ_^×'ð·ëtK[­ó¾­‘Î%SÇÍ£>ñÂÑ|Zã ¥göŽV»ºøÝ†–ë#kdø° }øµ(ÍBVTà¿ÆÞ,ib˜M¼hfoE¿+)mçýòð Oÿöt1†¶ö+ìk ­H«E;Ô¡‡v4¥´‚­vûì YÏØ†ÏpÑj^¦­ 'iµb´å‡عC­J{òÑýöµ;Ú×îõX„¶ñáAiÍ£A·-|Ji“Ý´÷=Nn–#´ƒh?Ë¥­ ¢\J£#Ô)@[9Ä#ôy’E[ý s³¾*p U˜6¦Žš´]Ñ4Mû®iÅRË)²›ð°]Ž‘s7 ãõ5™6Ö«’mÌ×råÙØ¯€K³qÌȲñ̶H²qÍQ);Dž>#*O:V<µ‡—&áxÊ=÷^½­ÜbŠJSf Jd›Š’l¥ÔJ¬ÐVÝÒRËÂïoj®_#Õ®x±VRd;"hلЪ٥%iÉÕÒ ë|m- .ÚO¹{ÝV3êm€½^1÷"¹%{¥š¦iY£-gôVnsì• ¦Eó™ƒÅßU¢¥³%I”¡Í¬¡5Ä÷7(œí]…7ì-n­™†»mlâS=hÞüIÕzØ<ªIT£r©®4b)¶ÑwÚS² -“èr{2˜ÛP;ÍîÓg³4ýhte2©ô3½øãJPÊ ~¾“Μþ=qºmFUí¨r-Ý:çdÕ½&7Ò…4]L¦LÖ”âòôä·ÓÕmEP*DU'wŽB]¨xèä­£‘{Ò!C"K¦E°P‡ð^ßikÍmEPÊÏëS“È@uýæÜ§jÆŒ¦ÓžatuâD¨ÒÅA¢T£ ŽV—^¬® Í–«&‘(»ä©Ÿ«mmÝu[T£òzVОäUÈZ›<ÚÕkXFÓ脼¢Ú]žÿvz¬º­ªQ…Π@©Ò>|ô¨²eÐéšØ³N˜ª.ú;$ÎXyHPå!A•ƒZ­BšTÃj‰X-^-‘Š×œª…k~DÕÂPÅ,‹‚5¯ú äJªGU¼ÂHµö¡Š‘ê¼ö¡Š‘jý¡"¤Zÿý#Õ„*>ªMU|T›ª‚*a£Úˆ€Žj#BUPå"dT›‘°QmF¨ ª\„‹jC2ª UA•‹PQmJT¹Õ¦$ìTó^W2j ÂD5!ä›i!¨A•UTy(¡ ¨æ– ÊC©TiÿjYl]|Õ¬mfqA•ì¢*IJháJ9yÿêQPÝKIç«U%ºP¹&äZPÝK»©žYK€ö”Œ†CB$k2R£–€-@oʨV^ª Õ6yË,À&@\ÖÃÚtTúŠ.¡Oí«UÆà ªUÃxt”ï™% »Tu¢[4€á5}ê(‹Kƒ7¨TBì÷¦k š>ƒSÀú»Þ†ªlcƒ7Õ¤ë€ÕÅ÷}×ôhõ¨:šãÇ*±ƒ7¨T%I"3͵€ÇÉëYQªƒ Uûê˜æUÞ zP5Œò3ÙØ<=zgúrv3ö¨Â‘_Æà ªÕC%¨&SÍWw-¨&uZ-«9µEµ•»îZPÝ¢Êv~A5§bTÝŒ*¨æT„êÜ;L ª9¦ê] ª9¦êw²Ä,‹œ uW‹qªP©ÖBª¢’½@m=©¯ðQ­ÿþjö„T›Õy䟚 ÕF„*6ªÍUlT›ªx¨2ž UdTª¸¨6%TU.BEµ) Õ9iP¨¢¢Ú˜PT¹Õæ$4Tšª‚*á¡Ú €…j³Ò*"ª•$€\“8Ò§v ¡ZUZå0»Õj@£©V–V›Nµš~U£©VÖ¯j8ÕŠNšLµ²ÐpªU0ªûÐO“(¨V–<ª{è’´yñaW“¨VªU%²l‡‰¼Ð·Þ5Y9UÖU­ìr•Ou?@Ùžum£¿šiP«|÷gßÒ¡j9Z’\9ÕÝý«»°âSÝÏ€¨N׿tKŸ¾“ΜóõxyIèëeÄ–¤zª­ CÕ?Zíi@õŠ¥Éߊçï W]B_¯"¶$US·keòcu?ˆÕϯuøG§+Èô“?É,ÇFmI0P­pÀ§ºŸ à|$4V¿x±ª»_ Õ/«ˆ-IÕT[¨îm@¨.õéÌË« q†¤K_/#¶$¨VX´¶É«{2¸}Çü ÖPˆ=¦È‘õæ­ª‚µ¨-Ûjlªån­â™ÿ:À‰[€€j«ŒXGI†•›êz_‚…*?¨Ïîæ¼fÅ©_ÕJΘšJµ –Zaíÿ1ÄT;ÏËt~ȈxRÝÏ1"õþÕÿdA‡9A•„÷óƒ7Ö¼õÃ÷³]˜0PÝYf=?,aî#~åݨ&îÈ;ú˜E‰cÓ•SÝê\•uËóŒ®jªsáœ{p†5çzšœ™jB2ÊAuëļ$qv̨š÷†¡%ÀG¨ÎÓN¦3ÜÕ#XZPo’Õ•1KêÐG¨¦_¢ÈpW`©YÑ•@Þ Qý˘>«ódÕÃT«bá~é1Dõã±o\Y=ójaØJǘyzaŒ¯–Õ´ÀÊ8¨N`iè“<»8‰â?ú¢:ÇÆò«cÞ}¬?½2þùé•ù™ÆjçÒ¥ú¿VŠ” wõ€¥îÖ9œ0>¯¼BT?þ=6F³•9ú*¯ŒSceüb^Pª#s´O¬îWXúdÙ*aÏQýýþϱqþee3Ç1Æ3H€#È«ªi#¢Õ!¯VHµŒñœÕÑ“36ž ?VãSœjòéeÆAõj©–2H¦úC‡R®Ì»!Í«Ѽú—9zˆQM= ÈpWЍ2 ‚rFÃT/{cC}õß Ð1iNQMPÖAõj¨ÂùKY&„ g¬cH W^׬’N×8ˆæ®Òœ«¦ZÚ¹U©g T'ôo§ªå]˜Ñ{‡*¾XÕr¯7T}}•ÓàI\%_Å©šªbÁõ—ž—ò_¨rªð{8ƒ©l{}Ÿ ʼCìAd×Ç«§ïYAÐÝÍÜÞów*Ù¹†¹+[ÝÈÂû•u¤z¸ÒæY‰XÍ£´®¹ šK»®Ø¨—Hu« šK)u|¨f86jJ¬ÒN‚Y|lœÃhbL– £; GÆrSæs¥(Ê,a¨5Õ”z+÷·Uãƒ>X·Ò@K¤ÌEX)á7Bíe»fc¦>»FT¨¦­b%øºÝ'v?‘ªâ¿OKSM™Ê¦zg€”ê`Ÿê“jé0‹`2RW³; ƽÚS(ч%0ËÀ6T—*L;è=Ñ~>¯‰¬„æd½6ƘÑÏÿhtiÃt m˜îD[†2À`4a º=–ìS]Œ—0‹fèì‘û÷P¢Ó `–ÁµtëRuÔ{¨ÑwûôXýªÝ‘›Ð¼ƒ´™ é‚OYÓÅtó,¶)íƒ5jªÌ`+Xý£•¦?ua zyTGQ,÷5 {ËŽV}‹È'Úšç®Çd¥} Ï;8,VMö ²dB³<À X#MÕS=J0³ òêO2YŒâJ#ëK™¦Îϯ7T%ع±ºþ®'+WeJC‡© Ñòƒ©Ò†=ª°=²Fš*§:Or^ ¨¾ýYŒ"­ÕGâǪI$/hÕ®«:YßöcóæR¥ ±Úk€`4UN•$™„ù=+ŘEÀ(Z°ž¥ºô©^KgªƒW4£ºy•œi‹øyÖ³€ ÕKµ ` ¬‘&$TcÁêçÕ¾=f‡^ x¡¹gŽ2¸}³¡JÉ.U˜v@W|ztW'?bÏ;Q¥ 0Ý^›>ÓQ³Š'Jõé*òžeªIÍ«êÖØæÓZ¨U%æ^¡{eÿ”*Eqz'Éq‚äÈ[w@p7Ÿ¢ÚQuîà>½mrc÷-¨B} PíV*è´ÈdÔ‡ Лºv¤ˆ/ ÕÞƒë à´§nÅaÈŸ`4\Œ†Œ*´>ë($}3ø©Zß9çpOiûý‡õxy©“ãKêbô½Â¨žž¨_¥[J¬èÚ‘Bþ TíÓã÷®'@ÿÞórü èvºm j³rÖ eÇfQM,¼¦‡ŒSGƒûŸ[Ÿºd¸êÆWÅ£JÖ7F•UYßQª`%@׎òg JúàV+Pg 9?Põnj¿‰¬ìØ zª ‹W“îêæ»à&V i3ª4)Ð(U°ˆòg *C?" J[ ùP˜oΡY×€`çfêA•Åêï*¹ûÕ£*³¼Js®ÌÌ-üX%ÖV!ÿá±J7ò' o’výðH÷páh= j¿} OpZ‘ÎX^‡€h!Ƽ¢ w@ü è2­ ž›¼ºc3ˆ¨&Z/xTé¡ö†FŠ=fT—ô yõ?³>< ÷H¼?c ’WHàOðô}šÖ7}€›ÁN5*[MúœœÚWMif[YÏXØò€«1Õ-ésP}']ïÚ &ª‰6!a­·ÏËA6ýÛOm• UÛ8ݵ™ZQ=H/ûš• ÊIÑÄ*¨#A•‡Š6 Ú¿™—Cµ€y+[“JÒÔØ¹+ ²j÷xKPå!\TË™ºÊ_‚*á¢Ú” ¨ò2ª I‚*!£Ú€j3‚UPå!lT›‘ÐQmD° ª<„Žj#R>ªMV|T›¬©6 XR-©äš§0R­@Iµö9%Õ Xs|VõýqRõmòÍ È?Ê pRõs€ Z¨¼`T •ç1!¨,†UP-ZùmÕm Z¼ OmniEvents: Orb.cc File Reference

Orb.cc File Reference

#include "Orb.h"
#include <iostream.h>
#include <stdlib.h>
#include <assert.h>
#include "Callback.h"

Include dependency graph for Orb.cc:

Go to the source code of this file.

Namespaces

namespace  OmniEvents


Generated on Fri Aug 26 20:56:15 2005 for OmniEvents by  doxygen 1.4.3-20050530
omniEvents-2_6_2/doc/doxygen/a00243.png0000644000076400001440000000252610240666447017705 0ustar alexusers00000000000000‰PNG  IHDRg‡8¥…ˆ!PLTEþÿÿo¿¿¿???ŸŸŸßßß___ÿÿÿûy&tRNS@æØfãIDATxœíÜÁ“Ò:pÿ¼ÉQž:ö¸;ê”ãêˆëñ­ï½£ã…^eäµ×çÌ.e¡$§,¤Í_i҆ݲ´%mÒ¤ö‹;c!„™ÅöGžàêåÿ'º9Ò U¥A«JƒVYhÀ—Äç?çŽ! ¹Zù‰ܯd4hŽ4hñÔ Ýº§pÆ(`Ì_ãЭ=c;¹ÿ‡>Œ"GÚŠyÁXt‹Q0Þ±û6ÎQ3E踌G·Ú¦‡¯í_-ðÕl`_͇sé‘7ë;ÍM+MÔÚÆ“%Þšgæ™ß1<`mÍ78è GúŽž¾Æ‹5´­¾Õ'hrôm|IÐË5LG·Ú!Úë,på;þ¾¿õ­×8è GúŽv|ÇA®M†Ì&hrt†m‚v±¶Zµ’Òо³îúÚAžò‘gáHE ÿøE»t~’ùÈ^ðÔHÛ¤íúý}&`¶þ0¹GÃ"Ñ¿ðñHŸBï߈ÁH¯1éqì¾"ô.Цszp Í(û9m„è›ñGß2ô Xôðíûš®n:úžò°zÜý"hLw³oÝí‡>Î?‡¿åªñÙãçø&zX ´zÑÃj ¥A‹§A§Æ¨1š~ zV¥“5ûÏmb½dŒðHG>Y*‹´Z³8z¥|rHB+hñ7b[ý@‹¢Wm¬~ ÑÄü(ŽšzW’$"„V>™YDкÌè•6s~´†÷ß}ò¢ušó¢Õ¯ÍÑäCë›ÎAr¡5›s¡u›ó µ›s õ›³£K`ÎŒ.ƒ9+ú„9ýþÒ¢}ΓäóaRd)eNƒnÐ)©3útÕ†ô,៑ˆŽTm° Ã³¿ Ð`˜ýp ³‚ K9:ëô8¬Úˆ)Ø( ¯wàMº×žåÍ|z4GS€ÁÌqÿ4z_µÁ 6^AZ¢1yóp¡µtÿ3ØÝúÝát8%hrôõÜ0Á¢ónøõüšÕ°‚ —k¸ë F›Ð4g›. 7‚&G#Ð5{y{9Btb½FäÜ:+Ø@ÐÅîÆ@Å£/^DÑrý6 OmniEvents: Orb.h File Reference

Orb.h File Reference

#include <list>

Include dependency graph for Orb.h:

This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Namespaces

namespace  OmniEvents

Classes

class  OmniEvents::Orb
 Singleton class that owns the ORB and various initial references. More...

Defines

#define IFELSE_OMNIORB4(omniORB4_code, default_code)   default_code
#define IF_OMNIORB4(omniORB4_code)
#define DB(l, x)   {if(omniORB::trace(l)){omniORB::logger log("omniEvents: ");log<<x<<"\n";}}
#define NP_MINORSTRING(systemException)   ((systemException).NP_minorString()?(systemException).NP_minorString():"??")
#define AS_STR_2(x)   #x
#define AS_STR_1(x)   AS_STR_2(x)
#define HERE   __FILE__ ":" AS_STR_1(__LINE__)
 Generates a string literal that describes the filename and line number.

Functions

template<class T>
T::_ptr_type OmniEvents::string_to_ (const char *oidStr)
 Converts a string to a narrowed reference.


Define Documentation

#define AS_STR_1  )     AS_STR_2(x)
 

Definition at line 56 of file Orb.h.

#define AS_STR_2  )     #x
 

Definition at line 55 of file Orb.h.

#define DB l,
 )     {if(omniORB::trace(l)){omniORB::logger log("omniEvents: ");log<<x<<"\n";}}
 

Definition at line 49 of file Orb.h.

Referenced by OmniEvents::ProxyPushSupplierManager::_add_ref(), OmniEvents::EventChannel_i::_add_ref(), OmniEvents::ProxyPushSupplierManager::_remove_ref(), OmniEvents::EventChannel_i::_remove_ref(), OmniEvents::ProxyManager::activate(), OmniEvents::Servant::activateObjectWithId(), OmniEvents::ProxyPushSupplier_i::callback(), OmniEvents::ProxyPushConsumer_i::Connection::callback(), OmniEvents::omniEventsLog::checkpoint(), OmniEvents::ProxyPullConsumer_i::collect(), OmniEvents::ProxyPushConsumer_i::Connection::Connection(), OmniEvents::EventChannelFactory_i::create_channel(), OmniEvents::EventChannel_i::createPoa(), OmniEvents::ProxyPushConsumer_i::currentObjectId(), OmniEvents::Servant::deactivateObject(), OmniEvents::EventChannel_i::destroy(), OmniEvents::ProxyPullConsumer_i::disconnect_pull_consumer(), OmniEvents::ProxyPullSupplier_i::disconnect_pull_supplier(), OmniEvents::ProxyPushConsumer_i::disconnect_push_consumer(), OmniEvents::ProxyPushSupplier_i::disconnect_push_supplier(), OmniEvents::Mapper::do_redir(), OmniEvents::EventChannelStore::erase(), OmniEvents::ProxyPushSupplierManager::etherealize(), OmniEvents::ProxyManager::etherealize(), OmniEvents::EventQueue::EventQueue(), OmniEvents::ProxyPullSupplierManager::incarnate(), OmniEvents::ProxyPullConsumerManager::incarnate(), OmniEvents::EventChannelStore::insert(), OmniEvents::EventChannelFactory_i::join_channel(), main(), OmniEvents::Mapper::Mapper(), OmniEvents_Orb_bumpTraceLevel(), OmniEvents::omniEventsLogWorker::omniEventsLogWorker(), OmniEvents::EventChannelFactory_i::parseCriteria(), OmniEvents::ProxyPushConsumer_i::ProxyPushConsumer_i(), OmniEvents::ProxyPushSupplier_i::reincarnate(), OmniEvents::ProxyPushConsumer_i::reincarnate(), OmniEvents::ProxyManager::reincarnate(), OmniEvents::Orb::resolveInitialReferences(), OmniEvents::Orb::run(), OmniEvents::ProxyPushSupplierManager::run_undetached(), OmniEvents::omniEventsLogWorker::run_undetached(), OmniEvents::EventChannel_i::run_undetached(), OmniEvents::Servant::Servant(), OmniEvents::EventChannel_i::start(), OmniEvents::ProxyPushSupplier_i::trigger(), OmniEvents::ProxyPushConsumer_i::Connection::~Connection(), OmniEvents::ConsumerAdmin_i::~ConsumerAdmin_i(), OmniEvents::EventChannel_i::~EventChannel_i(), OmniEvents::EventChannelFactory_i::~EventChannelFactory_i(), OmniEvents::Mapper::~Mapper(), OmniEvents::omniEventsLog::~omniEventsLog(), OmniEvents::omniEventsLogWorker::~omniEventsLogWorker(), OmniEvents::ProxyPullConsumer_i::~ProxyPullConsumer_i(), OmniEvents::ProxyPullConsumerManager::~ProxyPullConsumerManager(), OmniEvents::ProxyPullSupplier_i::~ProxyPullSupplier_i(), OmniEvents::ProxyPullSupplierManager::~ProxyPullSupplierManager(), OmniEvents::ProxyPushConsumer_i::~ProxyPushConsumer_i(), OmniEvents::ProxyPushSupplier_i::~ProxyPushSupplier_i(), OmniEvents::ProxyPushSupplierManager::~ProxyPushSupplierManager(), OmniEvents::Servant::~Servant(), and OmniEvents::SupplierAdmin_i::~SupplierAdmin_i().

#define HERE   __FILE__ ":" AS_STR_1(__LINE__)
 

Generates a string literal that describes the filename and line number.

Definition at line 58 of file Orb.h.

#define IF_OMNIORB4 omniORB4_code   ) 
 

Definition at line 46 of file Orb.h.

Referenced by OmniEvents::Servant::activateObjectWithId(), OmniEvents::ProxyPullConsumer_i::collect(), OmniEvents::Servant::deactivateObject(), OmniEvents::Orb::resolveInitialReferences(), OmniEvents::Orb::run(), OmniEvents::ProxyPushSupplierManager::run_undetached(), OmniEvents::omniEventsLogWorker::run_undetached(), and OmniEvents::ProxyPushSupplier_i::trigger().

#define IFELSE_OMNIORB4 omniORB4_code,
default_code   )     default_code
 

Definition at line 45 of file Orb.h.

Referenced by OmniEvents::EventChannelFactory_i::create_channel(), OmniEvents::ProxyPullConsumer_i::disconnect_pull_consumer(), OmniEvents::ProxyPullSupplier_i::disconnect_pull_supplier(), OmniEvents::ProxyPushSupplier_i::disconnect_push_supplier(), OmniEvents::EventChannelFactory_i::join_channel(), OmniEvents::ProxyPullSupplier_i::pull(), and OmniEvents::Orb::resolveInitialReferences().

#define NP_MINORSTRING systemException   )     ((systemException).NP_minorString()?(systemException).NP_minorString():"??")
 

Definition at line 52 of file Orb.h.

Referenced by OmniEvents::Servant::activateObjectWithId(), OmniEvents::Servant::deactivateObject(), main(), OmniEvents::Orb::reportObjectFailure(), OmniEvents::Orb::resolveInitialReferences(), OmniEvents::ProxyPushSupplierManager::run_undetached(), OmniEvents::omniEventsLogWorker::run_undetached(), and OmniEvents::EventChannel_i::run_undetached().


Generated on Fri Aug 26 20:56:15 2005 for OmniEvents by  doxygen 1.4.3-20050530
omniEvents-2_6_2/doc/doxygen/a00244.png0000644000076400001440000000101310240666447017674 0ustar alexusers00000000000000‰PNG  IHDRâ'à‰ã!PLTEþÿÿo¿¿¿???ŸŸŸßßß___ÿÿÿûy&tRNS@æØf˜IDATX…íÖ1Oƒ@p¿B׎6ÆxcMޱM­íh\¸¹±9V‡6¥Ø›Ðï>¥( i’ª æþ·p—ÀÇ;'²éœ(Q‰JüCñ´vH&‚¨·L$µïM‰JLòÕþ5ц‚ñÕÞŠ¼Ü ·gVÔ¨×2ƒÍšo'•[(Æ$ɯA}ÑbšÚ4b‘ ñÌ -*ìÈЫD$‘Ks)×´K»Ð!‘`kz)ùÀÑÊ Åá½æ é–n¡ˆ³çAq=‡J±ÕNÅènÌ`4úr6¹v!9²!ŠKÏ-©K©íkŠ8 E_ø©øÞ*I²}8ž#|ª@äB>†’\ÆC† \(ûgyÑǵ¸~­9öË»î£h„Ø~ïÆÜŠn¹¸û5³·#®Ñ“ñS5¤+'@ –ø™ã>šÄì:›>’TœMnèqT%²×óœïU¿RÌ}s²½ºú@1V`¿h©¸(÷ó†x. |WzO ‹Žì4,îD‰Jܘ#þÿ‡ø ŒÖ’ÍÖA­IEND®B`‚omniEvents-2_6_2/doc/doxygen/a00245.png0000644000076400001440000000541310240666450017677 0ustar alexusers00000000000000‰PNG  IHDRï§­"?$PLTEþÿÿ§§§o¿¿¿???ŸŸŸßßß___ÿÿÿ‹yÙ†tRNS@æØf •IDATxœíÏsÛ¸€÷ïèQÇò¯§µ]g¤cÒµ»9Vi»öqÇÝëjÏjÈëvj[·F–òÒ¡Y"þ¹â‡($h‹ø^ŽdšVøù }|¿!8åß´àÜ‚¿@p½XjWyE nÁ^ÅH`2Â?ÿ çàÕ¬ÿèbÙÿ~§ÃGºâþYGðãòq§£×`ÀE• ä«‹FÈW—‚s¾zÙï¹õÕâBë«Ó‹¡[_]ì[z_2gëÒW„b‰¯ž¿{ëÔW'e༯ž“¡S_] Îûê´;tê«ÍèCë«i¯vê«ËÁ/;°æÝÖ4ñ× Öujp±‰; †¾Ð·X&;DÄùšî‰ò| ƒ 0 Ï]"°ÿr1+M\áB[p"jC[m–šØ˜köv•kÎ5ïšØ‚kÞÕô¾;+GàmÀ†ÝÙ L£ÍÀv ¤*¸ÓÉjÚ¦}«ƒ“Ng°-×lÍ5{N¸ÁVˆ­â2Û½‘ ÀI§“ÅŒvPÏf`'W;¬i#°“º>°Ë¾U\Ýsh›•x¿«ˇì{æ7%mÁ-X֋ݧ©f‘o^ûžrñU 8ÑîAž¿©ÖïÆ>ûƒÃâª<8¾}ŠnW÷ƒÛõh=MÙO³Õ¤M×ÁUNJö™ÂcýÍBÖÑè”øpÖ‹i—K½u4Qçû•Áç‡tp5¹šP0ýéçﺼ|ØÄ—î¬ø-Ÿ„ÜO†äÙ8ëP¨êËñ‰:‹µ îÇýþt1ˆèÓŸn¢/¢…ÿ·SVøß’vù„ËêÈÆY‡BU÷È+uëøí± ^Ðu¬ûEˆÉ)h·XÿgÎ:ª:ÌÏbŽŠïÀâˆü˜Éêå“ÌY‡BU÷ȱ:‹uü(ƒYß+à“¦€ïƧdÚÍœuÈT5wÖê,Ö9ðè·?I`Ö«9pùž+³Þû;Éœõ¬Wsg]Ú«‹åwú7Hn_ý·ïþŽž‘#p®´àlÞ¯”Œ‰Å€~p³>´á}>F3Ís ϯ›ÐÛvȮٞ -Q3°­ž¯ &ŒË£µnæªç$¶Y>¶äêga²lKò¡œþ!Ê /X°”ÙdC¶:·hC¶»þU€Ó‹!Ÿ]˜¦~:»þe;#H à`þ&æ÷ˆÛÛ£íŒ 5€É*àù»·Lñ1»_*î¹è¬ñ\<âZÕ+%âávFÀg7£k^ÕÝ!¡KlÅÃø”ûê_¶3‚Ô¦øêûM¯fKY¯]öj ¸pºÉ׫dKpÑì¡×ù±ç`¥®Nˆ`¹®›–ë 7 ÷’ÙC7ë6KœÙ¼[iáÝ.­yw¦kÞÝñnôˆvkK¼›y¢Ý¾´‰öOcÑn¼Ü_-/ÿ±ÒèVŒo]€+‡ì \és„%Øü³b >ðsŸŽŸÏ6nÁÖ`‘] §]ø(eXº¦˜am .Š‘]Ì–òZʰ&tM1ÃÚ!XdW3ZÕAz½Ë°&tM1ÃÚ!XdWßþ¹K¿ùÁ6ÚÐ5Å k×ûA—V5agÖ„®)fX›ƒ¥Þ•µ1Ë®>rðo» kB×3¬‚Ev5ïÕ´fwÖ¬W3¬Ý÷Lr>`°Ô»r‚Þ¿X‚wuÝð®®ÞÖuÅñ¼Õ€^›0нÅcØ[\0†6FcÜPx{‹ †×ÆYׯYׯÛ­·ZãƒÁoÊ»-ÀÚX*°ÚX*°ÚøKß\[*•}5ߺWÙ¸ê'‰Ü‚MÁ/k˜lÞdW³Ôj1 H–aͪ¯v ÙÕ,µZL’eX³‡ê«ƒEv5K­Ó€dÖì¡újÇ`‘]½I­–2¬ÙCõÕ5D¼ yj5 ¥ ë,â¯vÝÆ<»:íŠÆÝeX³‡ê«÷j–S½éÎR†5{„5öjíÉ&_ÿ‹¯\È®ÎVj~ñµZðW®:žw6 7)-¸àÿL!¿¶(FÈIEND®B`‚omniEvents-2_6_2/doc/doxygen/a00117.html0000644000076400001440000000405510303671737020062 0ustar alexusers00000000000000 OmniEvents: PersistNode.cc File Reference

PersistNode.cc File Reference

#include "PersistNode.h"
#include <stdlib.h>
#include <stdio.h>

Include dependency graph for PersistNode.cc:

Go to the source code of this file.

Namespaces

namespace  OmniEvents


Generated on Fri Aug 26 20:56:15 2005 for OmniEvents by  doxygen 1.4.3-20050530
omniEvents-2_6_2/doc/doxygen/a00246.png0000644000076400001440000000246310240666450017702 0ustar alexusers00000000000000‰PNG  IHDR‡%Û»!PLTEþÿÿo___ßßß???¿¿¿ŸŸŸÿÿÿ¦âŽtRNS@æØfÀIDATxœíÛOsÚFð|ÕfZù ÍŒttRwðµ3íÀÕ1T\KÉXÇN£ëV-’XÝŒ@Hû)»o%þË ´ÁÄz'+³dÙ}¬}»ïØÅÄ»s6QSò¢¦äEMÉ‹SPh‰8%8þ# «)/£¦äÅ[¤„AB©û²a¸nYݨô’VKßzŽô³QX¢ç=VEQpj|£vb¹|‚xßó^H˜ê²©Ñ3±1àþc”Ù§öonìÆArõRâa|;k~ì9Kþ˜Ø§ð+ $úò.P$-H[Ÿ‘¹èñ-a(¼ %REãmQ 9>hL£t((Ë›_E®TAÙ üûï2ÔS ³*£@®lQZ­KlÖl÷Ò 2-fWDô,W6ŸòÞÉ܇Dª¢5%/jJ^Ô”¼øÎ)OŠ¢¼?ÿ+0 J~uTRIãb(e%¸”'‰é9¥ô à¦mCfPP) &3(˜ÆEâóx˜š'™¿"‘$Y`Q¤Æ# $ŠT’dCÁàPd–ð&0(ò+‚±"ä)(y!MÁÉIÊRž@ÈQÐ&BŠ‚*‘¢àJd({%˯…ã¥L-‰Ò½o^ËÂÿ¢uËšRSÎGQp)^ÂûY”¤(ëÂ=§¤ÐnÐï[ÏÄxÙæUŠ²î «k°; Œ}(Êî‘#)vìÍôL š >A¼o¿ëEÔ^ЙÞÕÛŽÞmè”=¤(« šÑ+fycÏôP ²<;-qŠå¾J™Ž¿/œ…“·)ÅÑœ‡©u×'ü1P›”ºã»îýŸS”ŒòCë6‡„ML(¹Ë E"N¹zx•“‰—€"èCÚÎiä«á Útj ºéušTuÇž+ 4ØúÿÈ?¥@)È_d”x/Vг\á‹Ek†Sü9¬ ¨Ð Út°ZAf‡O”‚º÷7«"Ñ^ʱqùßA5¥¦Ô”óQÊÅI^ÉNa9>ä^ß·4¤÷W0-²»N³ÕÃ0-òÛ‚h„ÍR,Ë÷µ…ŒeÁ)7 XŠ0¬Ò‚­`'ÿ}„F‘ÿnÄ«¨J[ë̲܃RÇ=!eÁ=`$,e xÈg€Qöw;ìcW +}\ý0šÂÊž§Á?—íÄ%E_§NHI¤‰CwEbÓîT”Æ%P²ÍÒ÷—C)º¢OIyÑEÑvo‰"Š]3{ZÕ;žß©’².ÂhYiè"(ä\õ®Ežiy6ì_kâGsçfP”ŧ6:aî2>*Óx¸s3¨ Jd†$½¤‡dMa»7ƒª $:#š¸4º^SF_Ìë8UPĨˆ+A>71MPL˜ Ê)i®À• AS?ÚÕS˜ú'I¯uïoÞ#§t`‘3PŽiWSòÚÕ”¼v5%¯Ý› \À+Yé¨)yQSòâ†ñ ÅÃIEND®B`‚omniEvents-2_6_2/doc/doxygen/a00118.html0000644000076400001440000000645610303671737020072 0ustar alexusers00000000000000 OmniEvents: PersistNode.h File Reference

PersistNode.h File Reference

#include <string>
#include <map>
#include <iostream.h>

Include dependency graph for PersistNode.h:

This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Namespaces

namespace  OmniEvents

Classes

class  OmniEvents::PersistNode


Generated on Fri Aug 26 20:56:15 2005 for OmniEvents by  doxygen 1.4.3-20050530
omniEvents-2_6_2/doc/doxygen/a00247.png0000644000076400001440000000160110240666450017674 0ustar alexusers00000000000000‰PNG  IHDRW7å§<!PLTEþÿÿo___ßßß???¿¿¿ŸŸŸÿÿÿ¦âŽtRNS@æØfIDAThíÙOoÚ0ð~…\¹FS×0&re[×U“ȵZhr¬„68î+Ü–,û–Bü>å섉@Li q"‘G„ÚÍOö{Á®¯ 4qU4`………9R:Â(¯lQQx-* ¯Å%R|\ hå¡m‘7Å_¿Ð,4î}L&ý n‡…PœÐ 1ÑF”Ò¬:-íVùRG/h+˜¨D…`¼àkq”õûú†BÀÞi!˜BÆd;*³|+’Ò)³U§IsåCq”Õüö.¢Ø…T+m"€"±¨ÿˆs%‰w#áê¨ño”7Å=èMÙffœÏÝ(_ÊÿQ$n±¤¸Ñ@pœL9¾yÚ¼™”g§mÉN¡ðÒ#SœL‘Ž Š0ÊŸòPØú½D”3ÇŠÉ’»Ÿ˜â) t=ùA«0 B÷ReSSö4yjߌî=D¦±€>–W¶ß•ý.¥È+”ßúÐì7ú þ%1EF×èQ‹§=zéYmJ¡oPÔ1{(ˆÒ¶‹zq lPJ4Aômþ”9Af‚ÂFeñ™ÌÙJ9¢Ü¼c„DPöF…Q¬‡)"H)Ýh‚ÄPX®$(ºn š©ú0¦,­¶%ŠÂ*h'W¦èGô)£ŒYaCåUQ:JI¾ݲ,Ê´^‘ʳ „³[2®økîù<”1ÂÝ&Í vÜ€ŒÕdÖn’øø>Œ$+ö èä’ÊNáÿÍ»U^·‹¢ø˜¸S hDQÔÄu ¦Ûˆš ¢>w™7¥nÅAdâÐ ¢÷^j¾ u†f Bcé“¡|(^§ù)>jŒbJh†=OniÖšýƒ}6ᜠåC!êú.>gPÙ‘BO`/gD {6ØŒBÛ¤N†ò¡´Á·–oÚЦ›—ˆ²þxé“!!£Â(?¿ÓßùjL ¤O†òË•EQ ðä¦OÐxé“¡ü*h'Wh±˜QÍPÊò‰UPúdè¢ü/îVQxÝ* ¯[Eáu;;¥ -Ùy£¢ð¢¢ðâÛ."ZòÈTæIEND®B`‚omniEvents-2_6_2/doc/doxygen/a00248.png0000644000076400001440000002705410240666451017710 0ustar alexusers00000000000000‰PNG  IHDR„:+  'PLTEþÿÿ§§§o___ßßß???¿¿¿ŸŸŸÿÿÿÃ7G‘tRNS@æØf IDATxœíKsÛH–¨çÿÌ’«ŽÂÒ®ª{¥eSã¸Ä²\.—¼mÇLˆ›‰h—-SÛò¸C\N¹8cíZH;–HäºÈLLxãœ<_wÉ|€@2?æÉ‰a„áüKÛ šB ‡)4Rh<¤ÐxH¡ñBã!…ÆC ‡)4Rh<¤ÐxH¡ñBã!…ÆC ‡)4Rh<¤ÐxH¡ñBã!…ÆC ‡)4Rh<¤ÐxH¡ñBã!…ÆC ‡)4Rh<¤ÐxH¡ñBã9…Þ ¦í¤ Ðc…‘:k÷ÒN¦•ý9Óè¥Â–¼þˆì™ÂŠñÒëCtíÂú•é{¡ÐkjÁh‹}PR¥™kÑ|…pYohóÆp…lÙñL”h´B„7P¢Á ‘rÛ8‰æ*ÄËiÃ$«µýh”DCzØ=ƒ$©PKëß3Å¡y ûyÒsœ¦¦ÐÓÚý6#˜êQè»ÍwS¢‚úGIÊ¥Ûˆ`ªI!ÈÇËŠi¹=nJÙ„`jŒÂ’U °B‚©! K·ñÁv?˜¡°B' ^a烩 +|Aa׃)),C§ƒio†¹Œ£°ÓÁ´-…ëeÐW¼?xÙIl’ýñCÂúR(|\¤o3ŠUUØå`ÚZ)ûá­<Oš(½¡Ð·ã&h¢°»Á´½@êÛ)O›) JÊN¡¬°³ÁT«Â“ÛõÃäO÷ÆŸÝ4ÈâoãµÃNîÙÃd<¹ÜN.…“[¶šµY°í8ññ\ÂéÙBáär6ŸN.ýÏÓ`ßÛÉGyÔ@á, Ýu"Ÿ£¬N…«—g»ßÞo—þéµT¸½Ú¾Y=1¾ÝOý›Wl5~;<¯Ê+¶!¢o?l¯‚¾æûöÇ×kqÔ@áéu˜ z »Y!êTèÛ›wËõ’Ûó‡¼9³`ηßÞ¾q˜ÃŠ@luuÉFB'Š«UKa ÿñ§|ßk6Š£ í(ºÖTØÉ`ªSá(°¢(ä¹ùÈ\÷J(Üüòš; ¶Z:¼& 2½ªÂ¸9óé·@Ÿoó}o~>‰²¦ »Lµ( »{¥çæ—ÿü¬m©Í’¥°ªBþO¨p*©Í÷”EH…Ý ¦™ûxÀëBEáp8dþ%[=?Ë@: ‡Q]xSQ¡Òµ÷í…TÈ÷íO/¤Â-ŒÂÎõ.Њ·k‘&ê éy%Z Âo Þ"uÝ»¨EêTS* Z¤ß¯`_ó·QÙ‡QØ5‡Ø e;±êÛJŽu`Œtn9ÄV({ÜU~?|¦>íšÂn9Ô¢°ò0÷Ê}©>íœÂN9D¯ EwÛô“M‡tÈ¡ŽºÐüó…)t§“¬Ð“'z¨°;|\…A¸é¯Â®8ÄU8ÿë§ÂŽ8ÄUh…ÿÍæ.ìlî":áU¡‡¹óNЇ¤°ôFUØþ×çý")lJë1Aå´í6§e‡˜ ÛŽ0Úh×!)„ U‡ˆ %ŽrÚtH ahñÄ¢Â㉣‚Öâ)<ªBÈiË!)„£%‡x ,ŽrÚqH !iÅ!šÂã‹£œ6’BXZpˆ¦ðã(G¿CRv‡X 4Žrt;$…ðhvˆ¥ðhã(G¯C$…Ç\™æ0)Ä@ë¹'$…GG™ÞŸ0)ÄAcà(<ò8Ê´†RRˆ„¾,ÀQxôq”iìYB4t9DQHqT é‡L ñÐÔ¤AQHqT¢ç§L 1Ñ’¤-ÅC!U…1:~̤-Rˆ‹‡¤üÌ …ØðAÔ¢ˆ¡¤ ,ä+×H!:ž…{pRˆ7@½8)Ô€\” Rˆ7@-† ©Aº‡¼ÚîI!>áÁ°vO ñQoê†)Ôwˆ´Ü-)Ä&%-¿”tÕE§Rƒ4AxŸhRh.ž¬Ia÷I¹!­ ¼7&)ì.^jŸaÿöä°“x¥ú ¡L“Gƒ´üеZJ×Ëìíâ;6’B xUúéžHÇá‹ï·#…ú¨8Îâ¥Õ…Îáv¤PÕÏÞªuáz¹rOÙlþy>]\²“ûàáÍúaò§{(œÝËBL*tªmRÆ~?|ŶW»›®ž¿ßo–ëûíý–ß±ýôZ~¦}…½mV,€‘·d)tØgöÀé‚ùöö½väMÆ…vx»oRˆD¥¨öÕ®ýÚYuާߦN qäºWŸ~Ú)d¤“*p¯›¯°ÉR8åÔa>[Û F µPaáa´UÏTȺp!®žŸ¡Â-)Ĥ|͉¶‰éô<¥ìä–]¼ÿE*ôíî(ì]ƒ´tÌoî4ÀÖ7…å‡Ñò7$…-Q²–h®’Âv(UËõIa”*‚^ÉHkÂþ4H˸)+¶@™"X^ )ÔO™ ¬+y— … ”0XíºÏÁ_ÊNn*p/–0Xí´“IW6õ¢AZl°â¥×F]_Ø…Å+–)³.íÂBƒUW?À½B”Rh°Îä R¨‘¢"VÕ ò5¾¤ð€¢Ì®^žH¡^ Vß%òš%¤0 ‚AQ I¡.ŠR_/Z¨q”ª´Tj.¥æ¶›É ‹ ÖŒ†ža+!F*ÌwÔìn!¤PùŽšÔ0ZE ‹ÒÜì‘BäçrÃjo»ežÂ‚0Úpï¤Pˆ¡ž7G¯0?“›~Rˆn%…Àl2R¨üöfóù:²X¡aó. †eš€bƒFI!:ˆ£Û!¤¼“„%Ã1+Ä;IA qAoËBlÐÛ2¤ …⢡êè8Z…: !)DEG!$…˜à÷ w“ϱ*,˜s=¹q¤ õBRˆˆ–BH ÑSI!"z !)ÄCS!Ô4…X¡ó.4BRˆF£Œ·7Õð%…X$2ãí´%³ –Ñ&…HÔ+„¤°CÔ+„5jj۟¢Œ%…§ ‰™ùN »BQ¾’BØÝ!P”ÂÌ÷IaW€Qød¾VùP@›ÂÚq4©«ÔmwI! …w0HyM.ê+um'—ìäžw¯Õ=G¦°°zJûr‰{©Ë¿™­ž¿S)lÂôe* ××öo‚ º}SF¡®³6Ç¥°8W³J]›_^\÷жEaòÒ²ÝSé†Í|¶¶Ia[ÔQèYžˆ¢a]8 ê³Ru!)D NXá]Ï•é-û¶ÏrêÊ‹£RXœºƒ-¸%Ò¦n²¿\)l2Yª$ÿ`ócQØáÙÜe~]VêCIU…YÇK›ŽÊ™–H_*G£°Lʼԇ!U§g)ÌRE ‹¨¨oKRX—2N¼”Gu!…ДJØn£æÍ²Ì=š”rb¥<? )¬I5…ˆq”Ö¤\º¬ƒ$…õ(ç$Ú uEgRXR ãÄcBRXrÉòöþÅ9 Pµ~˜üéÞl'ÙÃäTy½Ç¡°\±T˜s@©ð~{¿]úãkv7|¯¼^‡£PX2UÑf¨q4T¸ÿc#ÛaŸ•×ë@ 6Ã*„r‡ªpóó‰½d#¶{½G¡°d±ò*m]ù€r.£ªÐŸúT KQ6Q^¥­+0œRœPxaß _É·IaÚ¦—c©PNÈ‘ ço¯¨EZ†²‘Ñ«´uÑ~ö /®±’ªÖËè)̦tš ¦ìO÷d$…Õ)íDlˆ0ÂíÉè©6gvœFHa6šîß—tMGõä`«Lù$YñŸ&$ç¢vsC·¤°2å€(Tr@õ·ƒV¦šÂÆ_ >a•ê‘ÂêTHQR¡ïÖAzóƒÌ_)¬J…Àh%6÷ëͳvÝ÷ h*pEª$B!Ä++B wX‰Ík)¬õ¡†ô]a•&)ätMa¥ôX ãǪ°kW§‘ÂêtLa¥ä¤)tÝ[;~)<¿~Ϙn#ßÛU“BhªÅõ4…ÎðÓiüÒ#ÿó޹6)ÔFµÔX å¡BÅ _¹}C µ£påŽÙâr6ŸŽØlþy>u.ƒ—Wîéj~aó÷ø¬Ð±ú!½ôZaÅöqºÂ³7φïÙÝôa{5bÁ‡9³àåÞÏmþ[ßn–ê‡ôÒk…c%>5gîl‡}a öÀ›3\ªó4þ°Ï—bè—@¡GV˜„W‚ª›* Ô¬]wüûé· ]Ç ª¿‘Ãü!×…¤…ªã  Ù’ ƒ§N¾G c*Dý R¡œŽ*:Ñ•¤°yB…¨c„Ra8•JaµèS¸PR]˜©÷D-R1U(ì\‹´ýSõ â~ö?âAR(iPˆÚQøýðYøˆ6>¾8å‹\*\¹/ÃG¤PÐÄ€Pˆœ~ÎT´­°ÉáI¡¤]… WˆÝ¢&…¨G'…’V6Àb'Ÿ¢\‹ÂîO6\aûƒKÕ镆H¡¤M… mYmw‰j®°ÅßqÓC“BI‹ æ¿ÇH¡ =…Mìí]#j =RØ´‘ÂÖr¡ùý²H¡¤µ\h\y‰Ë|Í¡7 !î;H m)lžû)”´¤ä&ʤPÐŽÂý[wÖÁòŒlÍôE!Dñ!…!­dÈAIaH+ÙR‡‘ˆš Yï1R¢_!D[F(4²AÚ …0G$…1Úó(ü™:8Ó…@4µgß…Pm«Þ"²íc¼B¨ Ì«¹pû¯êp¤p‡^…`]9ËÔn¡ñ ÁŽf™Ú§0]!XÁñàjUݘ­.×=fjŸÂp…pÇ"… €‡²Œmš­°ØB} óœ·f íS˜¬ò@¤PEWN€ö,sû+ÍqËÜ©¹ AôubªBØ£XW…¦*®¸L® MU›ß<ÉÆV…†*®·,ø]jÄH…À‡à»3·*4R!tµe!ìS#&*Îm‘`s«B…èg› k-c§1O!x)qÔܪÐ<…à•–‡²W§|ïrY|R¨‚šàu–‡³[¦0½ÊòM`fÇQægu£[~Z¬XríþŒR˜j°Ù“ec¦a{t? ì%S>uK²¬zt“¦ôšÞú¥1³wGn©´¬š>+<4ØüÆ× …0•¸žåy2Iá¡A€;—{Ø= Ueh%…!bÈ#3^X=’ƒû û„Ø#‚ÒáÑ+Ü3æôÅõŒ­yÕz}U˜4Ô“òÐf<5þuò>u£Qü¨Ÿ e®q?"FÖ„èýrOíTü4ütz°Å»®)„n¨e΃ ø#+ …K¶¾:ØÂé°Â²#y ÔÇîרïwâï?á¿ÿA~Èþ¡TóÀø­_ÇlqùŠþßä#{˜ŒŸæS6šÝ‡›wLaåäµ?¿öë²4‰ºpv÷{6|Ïî¦3öÅ_³ÛÍR”ÂÓëpsRX] ãNÅß8ì [0ßþuÍF¶Ã¡Ðöm¹)¬ŽÂìÓ7lûÎuçµÕß–›ŸOb…ŒÖRáî„EÊËa)tØz¹dÃàßí¯§þÔ'…!m*ôöÊYúQÚüýÓé³á+nm>õ§¡ÂRX{•>Yï|oØ‘•iœü=h‘žr…?²ÇùÛ+.ð|ê±B³0*çsë"<0iŒô@aÐý'¶8s_+}Ùˆõ2èÞ-Rv¸Ž¿UŠB‘¯~µã(=é,…ð³*ŒVè ‡êûïÖï‡ÓT…ÃaMØ“­¾‘ÜŸŠÌc¿Úqö¦„Ǭ/W³&ßwV§lušªpçÍ/¯0Èo¿Úq…ޝLWøm¼vØÉ½Nú·y÷‹hΜ®ÙèÅt3å¯m®ìiú‘‰­”ý©¨¥°ôq”ñ,R˜Fj]øÃˆ\Wô‚œ§)Û¼á¡O?EY;tݹ,…›ŸOF¼0Ú£ ÒÃP¼òÊUh)ua©ã(ƒ!zzZ¶]P¨œ‚Û)üòßAn­åXofˆ¬]°¸t,Ù0 ¤S?(…7²:lóþ´@!?š_í8ZFýʲ'Áº©0è+ø—lõül,²rýwÑØ²ö1ÎÚgÃW‘‹ jAYŠa¨m®Bñׯvœ­ÖRÛ½èløm!7g?2˜£PâW=Žv…ˆ“t(lÄê“.s‚ÝõìºÂõ¥úÌX…˜3tº®ð:1êi¢BÏBÿéºÂ$&*´ ¦½fA ‘ OU%…¸x }1%Rˆ nBTtœÇBUè}Wc–uÿ 2ŸêÌæŽöŠ1ZÎDb*¸ 7à;0›‹zÎ%#*„»iô¯‚_ã ¿Ïh×8»ÝO¡‡Ó£ÿaX„G×zDh ‡•`wìa-®®É ŠBÑBž-6™^¸†»…ÞaX ±Ï°Jôä¢%ÀZßÂ|¨¥aßÊQÀ$Âvd‚5.­ˆ¥i˜Ÿ %ъׂûUí§ h ‘¤{GÉso·xP³Fëò¦˜ u4É@$ڬ©Ý­ƒo傦ÐBë1ï `)6u ¯ø§WׄîåIñê‹&ÍõƒD'.=¨Wh.‚ ±Eªm|‰Ó´ÚõöCä=¢ð¢©rÃåËxO9‡Ùü£ˆ:‰ÇR¨9˜4•hþÞkRAbFe*üôí±ì2Èú ò‰U5rrPI”ÂO¿M¹³‘\CÅ·•½tFa§nÉYZb¾Bÿz½”+ÀÊR(VÕ¨¦024Ý^Å e)$…””˜Ñž ®þÎ^ØwÃWþ˳±\U㦂B¾sih¡(äuáM÷v¢Aš ”ÄŒÊ0T¸yX/ùbq‹T¬ªQZ¡ÚµŸÍ§çÓP!o‘:¤° %z^zç>9À–XEQ¥T îÐÐɽuEaÖ8G«”è&¦W†%þ³Þ0÷÷Ãgù”àX–XF!;el•öáe™®Ô¡¡•û2ƒ¾þ µ2,¦¢x(Á”3-Ÿ§È%·]“žð*'›úrÖ¾Ë s%¦Ÿ©>ƹ3ÝV˜Ó8PXP’B ²Ú5Aþ§¤¼ÚYû|‡¦(L͈n‘ÑðHWXq*pÞqM™ l€ÂŒ*Ñ‚˜¶¥ÿ,Í‘*L­Aêÿòà Û›DZ‘Ã*q’tíÅðxJ„IºöoÌ ÷%] ¢û\¸B‹µ8—»:ªD¨ËyL¿DÔ0…ªDÞ©ƒˆ š£)ÜI„R¨ùû“BŽ”èA¥]o1„V^go\"˜B½@ #¼Ph^$%…;ä¨D…¨5’’Bk h¯C ÛÂö =Ò™¤PAÔ…ƒ¼°Ñ—ÐY I¡BØ=”k5*Ф°%T… ×ט¤PA¦[^…Ôp1NRØŠB«áÂÔ#))Téöv 84X¡ÿ1]]˜¸,·Á¾t@ â³NIa+ì„Å ÿR8o0c¡¾HJ +Oæ%…­ j«5±Zý˜¶L … ¤C #´ERR¨@ 9¤0‚¶A¾Âs]w|ø©QÆZ†ºr*¨w«8TøÈœáP}áü‡vˆ|…ûˈFOIa‡8T¸rOG³‡‹ö0„³Wld¯Ü±?»šOgói pvŸº¢¨®Ê**ü~øj4þ:þÊn7K©pƾ°gÃ÷|1Q‡/-(<½N]Q”¶À¡B‡}1þ?‡9¢93õí_ƒ'_äJ”|›‘íÓV5U¡Ùç ÷uÜHQÈ5­þ¶\»î\*üô¤Ì¦-„G [@]·*­rMÛ_OÙ’ ¥Â©¤ ue)T8TÈëBEáph³ óløJ*\l¯¶¤°K*ä-ÒD]xÊ~¯r…ç¼EêÛ¤°C*¬ )lu9K…šÚ3¤PrHáR¨uá*Rh$¤P`är !–’t…šò*BAoVœ²¢()ÔÇ€ë/sš³Œ^R(1\!h¶ëÉR¸ƒJLW™xR¨R(1jUà$2Ý‘TK{†î …ãB¦žj†JŒW™ï¤P3ð µäÄÑÞð'/ñàq!…;¢tÃCR¨oï_¸=¢B wÄé+†¤P7ñ^à{Ä„*XÀöˆ)Tˆ3옩°ó·cÎÆJyµG¾ oJ*ÄŽ¤¤0Vwpq«7P†¹/Þÿ·HOuçS§¬BäbxÔ cu{ å;ÍØ8¸r¤ 3îòšZ^š+Ä-†G§Ð˽EoZÒ›+Ä-†G¤Ð+qŸs$…¨Åð(Ôy™¤å5€BÔbˆ¡~—µ©zgs,…˜yÒ[…ùu^&)ÅB!æe ½Tè• ›)`)ô,™"7‡eÁ>2&°öNa}âã‡/5š &+OS‘ÂiJÚŠÂêÑ Š†úÄ.`R’²cÖIa6úXmÇ0}¤0(},…a늩Oìp_*a×Ô …úΖí°WIax:Ä2B¡§gÙªZ½¾2à¤>:£%5­Ïïl&îŭ΃ËTŽw …£‘úޱ ÑôqðR¿‹ù/žÿõ« P~L*|äŸlùŽ‘ Qõqp»µRÓ3ñÿ Åw– Å+¾± ±õ PRÓ%cŸÙâr4»eÊlÔ\…AAŒél>\ÊwpZXy ÅC.†Ëè¯Ï—g§ÊlÔ|…+Rø°½Â-…8 uùcú.ØÈÞ\)³Qˆ|å ±)‚Bþ8˜‘T ¤NP¯ánUÙRøé·©Y 5ûc¸ÅPiÎ8a),©pש˜Hõûã C©It*…/ÏÆ7åò"… d…\´ã¡C¥k( Z¤N…É®}Ð"ý¶ïtZ¡×–?¦Aaõ÷8ºØ@zðcŸ•À;¸ ÿ†[öÇ0‹¡ ›Îói3€îÿ yjß.ƒ~(l¿JÀ‹aòLE:=PØZ ôøHÎhí³ÂnÐ Z£Agíëõì»@cø"z]Ž¢íÂ12¦WWèu­J1¨B«qòkÞã¥SèÕ€S(†f$ßCì ëDû¸¤B«fòQ‡Wt£lL¡WãZ 3››¹´ðKTX!õ=t'hå7˜B«œÁ>´W²hé )”BoPÜ›€¾±KÇhë») "Hþè¹¾6ç ( "ˆ•S{¯¯ÝY& yò³nÔtúXËÓÕòâÂ2÷ ï-ϵl®P¤ÿ C{ò8­_òÓTaø Tã¨×ßnC m l¬0¾ h÷JûßI#]˜¯ÞHaüdíq¯=ƒNü\(T*Þ˜92{¬3߸¾BµstÅu#† „²Ó]k/‰ÛC:C¤°] :¤°‰¡RX™Öûò{Št¯ßK «ÐÉ…pIayºWé çþ’±Çƒ—ŸŽXa'   £^,?|˜(ÏÉq+ìhdÒå$åé±*ìl( o¶ó•ý;Y> iàlq1roÝ•}aŸÝÚgBáÍÖ}XŸNäöµÿ »ACv >_þûãíã­¿üúF*¼Ý^?ÌÞ]lï‚§Ë“ç\a°ÕÅ|˜NÜûÏï‚ÿÖw…]Ž !;…ËÉÝ îs{˼9óÍ}Zœ,'·×OîW(i°Õè̽š¸ÎùÝù™ûs¯v¾ v ¯Üù“¢W~^¹WŒ„»ß?q…ÁVþ¯ùqÝØò—ÀÁ€(È,…\áÿù¿îÒO¤B÷ù~)<9sê«B3   Y* ?|øà.Ï܇Ùå… ¤ç¢ºðä^<ø¯^*lûžìÕH¶HuaÐ≆g pñ·HÛD-Ò§Þ¶H›9Yg€íÇ Fìi¿ÐÄÙuþχÿí£BÏD¬žÂö¹w Ÿ;èL33|î€QhîOØØð¹ªš¹^…‰i>4šu5…Ii;.4bZ¾ i, Ðlîý7;¼¢EwSV k*Ò«”®­MÒ­Ô@se³ò=ê‚ÉöS€FÓë ÃlñJ,\5hIeí _¨=ˆþ)½ø˜F•}·'ºÖž_©]u94•»{H‚ﺋ­x!–¼¨¹à`Ð4ËÕû~ö¢·^ ugø«ùz² ›&i™³=@VâyèA­êã¥Ù‚<@O€YƒÍ‹Ö¢,ÖÔ2zV¸ÔqÇ´V[Ì2k(@…Ò9Ô ØªÀƒh)=}÷›" +äËHM½@Þj$ZÑ’B©VïÙ4ˆÊU‡Z½e´¤%9Ô è`cuäP# wÔ´wCí#T¡²°9Ô¨Buy@r¨ X…êúrÝZk®Ç+L Íùy<]À*Ü»ãHfAÜü#ØDõh…{Ò2ÎÑnò÷Rð6‘X¡wxÏ‘´hJ Wxp¢"m¦7)XánM!ÑNI! ð ÓÎî&.I¤h…^æ e<•KòB@Àz™§ Å%Ñòºè„#¸”FÑ+¤° Ð ùŒ¼wådÐØÑ“(´Çò )¬‚ÂܳöÒaìÈ·åRX …ÅÅP¶m¶“ËÉåj~Ò“Ûàùhv/7"…UWÈ/qÊy[ ¤þÍÌ·ßχËÕ˳ ˜ŽN¯åF¤° à ÅÜüì·J§Â¿ ‚è% —¾½¹ ÚaL%…U@QX8•T:ÚüòÚ·Þ"±õ’×…¤°­*d³d)$…u€WÈý( éT­ ·¤°m* Z¤ß«ùWÙ"õmRX …E‘”ØW(¦t“BÀ+g› "))„‚•!)„‚BVII! ð =R¨ …Å{š –BZ4A Y™‘n Rh<( =R¨,…´r‰6P²üÉ(¤ÐxpRe¨Rh<8 YþdR$…)Ô’Âð|¡,…ÙרÀ`)d)l( )<\7ÀM!­ï¬ <…´Žž&ðR{Fˆ )’êQ!­f©L…Jµ€ªú:@U˜¨}·Kðö \…j(õkPtå+¤ D…,Ò'›¦¤ l…¼:”÷K&…H`\Ù”|4°ä=¯I!ø å±I!†ë®%®óÍ(o“Ât••PøNUøîp'¤°<Ú¾S7rT…ÎáNHayô)”#5'vrÿ4ÿýa2æk>m'—OóëÙ}ðàãúaò§{¼(äoKHa:êB‰¤/ÏœÕócg}»+¯ù73æø§×Ì_¯ï·÷Û%›ñ·ÃÏ‘Â4+|š®ßÞ¾qÖN`ÎÞ\ù7Œ?ðí5_qü¿ÍøÛáçHašú6sF®{ÅëB‡¯BºùåµT¸ùùD*äoóº–¤RÈÖ¶PÈKá†Í¤Bꇥ0x›V •ºðl,Šºp+¼ ùÛ[RXÍ e‹ô–ÿÎÉ);¿>Îß¾ ÅÚ¤CRXÍ ·vÁ°Ì!¤°Í W/ÿzZq¤°íôÎfÕ …èVXŒ{ɘ “ØêŸlÈŽD:&(û"YÀ¯ŸúAœòõv7#%v˜¤P@¥q Á¦§Ý£[¡h±Ó¾­vªO!èAò"jÑšÂ}[sØL…œÌv*)lˆ6…â áuŤ°!ª7-íŽ];ÕSïo™ ),@»B°Ö¤°!í(dÜ¢'«GRØÖÆwëNW´;ÉE ð2k 1ÛqRXšÖZT ’Ц7’&š3+wì¾þ< §+“‹Ia­*ÿHEφïý×þkN9V&“ [YÄK*rØêOY8åX™\L HÖm8ŠÖ®;çs¹B>åX™™J ðrŸê@*Z²a¤P–BRX–}gÏц'¡¢ºðU¤×…[RXšƒb§Ï¡ìTÄ-ÒÓHáÞäbRXÀaäÔæ0·k¿ƒRùérèå °í …¤µ_´LZDe6$½ Š:e)¬£3‡¤°!½¤õe=uú…'’†dvÁ£éÁìàD§"RX@N_phêänš;CîpŒ`1;Ó … )QËZüÑ¿š Ü”ŬҥJQ‡&âgЊBN^‘¨¸ZS(ñi€§©×´¬h)4Rh<˜Ë«Z …ÆC ‡)4Rh<ð ©W¡Rh<¤ÐxH¡ñ (¤öŒ^H¡ñ (¤HªRh< )’j…†BФZ!…ƃ¢"©NH¡ñ (¤HªRh<8 )’j„ŽBФ!…ƃ¤"©>R1Ô–B*†ÚÀRHÅP¤ÐxÐR$ÕšB*†ºÀSHÅPx ©jQ!C= *¤b¨L…T µ@ S!ER- *¤b¨T…ÙÅ0ÍPÔ4õ\…™Å0weÞ¾-Û‹ ®ÂÌbH á@V˜U I!È ³nöC áÀV˜JI!è Óï#J á@W˜î¯0Õahi¤¾6Ú{“(‡…iÍRiéÝ£ú)¬‡…j³4q_%'±)¬‡…Êí =y aéiþ¯ë‡ÉŸî ;¹žŽf÷rRX = £ûÒÅ·l Káh}¿½ß.WÏ_Œ…§×rRX M c‰á}Ïb…Kþ?ßÞ¾ ò`sHa%´) %&n™)¹î¯ Ia4*LÜ¡I OmniEvents: ProxyManager.cc File Reference

ProxyManager.cc File Reference

#include "ProxyManager.h"
#include "PersistNode.h"
#include "Orb.h"
#include "omniEventsLog.h"
#include <string>
#include <map>
#include <assert.h>
#include <memory>

Include dependency graph for ProxyManager.cc:

Go to the source code of this file.

Namespaces

namespace  OmniEvents


Generated on Fri Aug 26 20:56:15 2005 for OmniEvents by  doxygen 1.4.3-20050530
omniEvents-2_6_2/doc/doxygen/a00249.png0000644000076400001440000000162210240666452017703 0ustar alexusers00000000000000‰PNG  IHDRW:û×{!PLTEþÿÿo___ßßß???¿¿¿ŸŸŸÿÿÿ¦âŽtRNS@æØfIDAThíÙMo›0ð~N“zLµ—ôšh·µUwž6Áµ*”\Wu+ç-[¹ 2À¾‘ˆŸO¹Ç²¤nµ´ 6SùçRR'þÉ~Œb¼mÉŽjÀ2DL'ÓIÄ4)ù²q¼†%Þ½Zv±e'[>!‰~÷ÿgTª$[\ä†jI¦\¢C?€¹ë¸»ð¦Äš»g 3AIâZ2%Ó·C‹ùcf°#è N™u ºue]¡$(¨L 3Šóqv˜!|›nèÀ_0 ñ ‰ë¡8;P0©’”uâU’Þà€yæBâË–,ÖÎuŒ’)ÙÏ¢£JJ¤š¦A+îö\‚Ùm¤5c¢~vªÑ×É¢V•WlZiU­ª$«‹¥úëFºœ”e*Òv^“üºÏãîlgL¶‘NòÿI"†_Ÿ }ækM䌉ImÛ]¹]UBÝ[.eIüy45žCŸîe8;ØulF9ñ325LcÃRâÏI2Ûw ¶5’$ÎÇ,ÈF¯ÞW’@.“ñ‰9Ÿà%íïq ¶2?ÙJð݆$Ô¼fãjóн&yܧnp™“œKÊÙÁVúŒP’דµuÉ¿|E ãûˆŒð7q)™|>ç]c+–ó²Á:iJrcL¸äå+BIäV²·>&ÍIx¬HlÛ&tH’±cV³sŒÛ®ë¤ß „¯µ:ÁE¢—k%ñ5_;E½vò&%çVËê½Fä‡ý³%’.Z"¹‘öHZõë1½¹ NUIÊÎW-©v[g’$k#“–»Žâ›Œ­ï‹;Ÿ´4~¨ V?>Q.©1»­‘hÏZ#Ùt5,iCÅ.SIÌÛŸ^ü=É&)Ÿ¹ž´F¶@’G_]'¼Ø™ Æ‘/œîÈæqL&^op ¿ *œîÈ”ðÙ‰ùé³P8Ý‘')°ÓŸîÀù›P8S‘(>;!?Ýá#£P¼JÒ@œ…ÂéŽ<ÉÜuàØ ù阧‡ÂéŽ4É¿ÓIÄt1DÌ“’¨Üy= OmniEvents: ProxyManager.h File Reference

ProxyManager.h File Reference

#include <set>
#include <string>
#include <iostream.h>
#include "Servant.h"

Include dependency graph for ProxyManager.h:

This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Namespaces

namespace  OmniEvents

Classes

class  OmniEvents::ProxyManager
 Base class for ServantActivator classes that manage Proxy servants. More...
class  OmniEvents::Proxy
 Base class for three of the four Proxy servants. More...


Generated on Fri Aug 26 20:56:15 2005 for OmniEvents by  doxygen 1.4.3-20050530
omniEvents-2_6_2/doc/doxygen/a00250.png0000644000076400001440000000736510240666452017705 0ustar alexusers00000000000000‰PNG  IHDRbwmi\a!PLTEþÿÿo___ßßß???¿¿¿ŸŸŸÿÿÿ¦âŽtRNS@æØf‚IDATxœíKw›XÇû+hÙ^¶“ÌXË–çÀ2çáåħçHˤmEÚ¶ÇÝa9Éh&Úp$ÁN`=¨O9·îÌã"É­[À¦¢Œ®¢þÔýt³ïªx²5ÄôÖÓ[CLoå;YÄî!?¤?6Ärkˆé­!¦7AÌU/5ûÔy Fne?ó÷UHlw:É™üëNת7qz¦íµÁk×ø¡çÛpò æƒÞjzgo£o0šŽqNÀ&=§‡ÄžÓf:o†›Kïø¬7Y»`s£ý ¾±OlNÀ&è\#ñUçš=*'f{že?Œssi3üØ LÓŸÙ¤ _¸¿²GåÄÇÏ 0gÈ W¬/ ÌÛ—qÇq¦Hl'¢¾ âÅQLü埌À79!îyœx±]èÿÆ•/Žâìf}ðŽO{œÐϳ#^ÆÄ?t.|wÃâø‚=ª"fŽã¸í N&ܧo-q Ìîõ«ˆ˜eßåoÕåŠÖ‘fGé¾èDÌu"À‡ÀúGÀÚ/â)]ˆâ)Mˆ]¬Ë–£Ý«ü£#^ì^åw1‘‹éˆ©\LGLåb2b2““¹˜Š˜ÎÅTÄt.&"&t11¡‹iˆ)]LCLé↘iP4ÄÜHƒ¢!F£ І6(bØ'(vßßv}£ âÝ×[Ê%Þ ñ¡¦ñÙ¸!>ОLœ/þ—L¼Çñ#ͳܹFÚª'~ê·ø*ÆhÞ£²Â@iWT`1UX}ˆ[h‚Çè}í}Ee…Ò ®¨XžŸ…:¢2‰·ìx‹V²ºgð¦o¼HŠŠ•µ¶kXiÄ‹Vìýñíˈ˜=3µF•E¼HDK‚x>þùxœX£ÀTËÃ8á`H/1WT,ÏO+ˆcqš7Eܽ~eiEe¹BB¼ÈΫW>ηr³jNÜʯSkâ…¸ÖĹæVgby®«qú" ¨3qp}‰ O1ju…%I©‡¾b!TjtÄšè+‰‹v»ƒŠXµB ªZa‘y'0"b}Ô ‹Ô‰Ñk¤VЕX'}…`ÕI­°ˆ_Ȭ!Æ­jÿzëUûדX¯ÚC,1õÄù0>ìÞŠìýetÿ Zê–†XÆ ±RÓ‘XrÄû 6ò½, Y3Í.H~¨†x™ëe/KŽx²¨Èö²À—º{N[h*惞Á/À0=ÛV¬¦Öhj!1/~´Óz‹ŠˆŸu.„¦b‚š $ÁìWm+l˜o†HüŒ—§í´Þ¢"bîD-ÚÆz?Ûó˜Oß°_DÛŠ¹ˆ ¶ÖÊò3z RbÙé<'ö]0Äècïë;ÎTßþŒQk±·ŒÞ¢⌑xó¦Í–u±%¢"áãG½EEÄÇ âNÇ„©ÅâøBÏ1›ÆqZoQ1æŠT·áŸ‹Äoy®pœË0W¤õ¤Ä²/ OÇ„/xË™qŠ˜ÅñÃç}°½÷H¼ÄK[Ä12FiE<@q¾…B1KW0oözΈ»×¯Çá¹B Bœ+Z{§ÍËI % a5!>³r³ò aꉢMP±Iˆ×ß$ë儨ˆ |¼Øñ×ìaê‰[ÅÄbvíÎ69p¶ – •º#[ªOÎåõ#æÔQñQµê‰»âF½ÂpV…åPâ­ÉBµ© .Xñ·d·z»;Ï„êG ùþbeO†±Ì±­R«¤ˆË³wÝ››Aâ³=¨;±ã$ëF<ÞL=ó9œ¸ÇK qÖ®œñÒñÌ®y:1O9ñxãÌýöÀaëv+&žßõZN–“Àýz)ˆ'ÆäÓ|ô¡»¹gÝ“c$fkuÿ~c1b6·bbwpL„uopÏ{pV³w0ù´rVHÌ£‚­eœ:CF¼Š‚¤2â!ƒHcàþkè  N|ÿË-"²µ‚†5‹ãª‰3>Fâ?ýÙqé@;ÇiWOŒqœ ¾¹¹qÜSg>êwET¼eÄ77QŸÔ€sE*ŽYR0xn`ijÌì e”+Vu ÞÛ^°hNæj¾¡ZŸWüûæ?Y⚟ Íá.M¬ÛÙ¦†çÇâ;™Dš€8<£/‰ZÑ}%P|IP´]ù/Rr…åèñ5C­öࢌ AyþPI\¼uõqñ—ÿZK‘ëJ …M‰sº ö ’×; ß…SçõÞ¿F!qa ⬮Âîܶñû×n¾èT`ª‰ GNWaƒ¨Û1b¯ ì±§)$.Ìo1qJWě͈Wøxû9*,6ƒ>ûKlÑäûZÜY²QC”K é!qVW§—!1¯7°%¨°Æ#NÌ›\`_‹×ÒQC”é+¤b…hÏKë*çÞL³%X™ÆÀ‰Ãæ_ØÏÈF Q§a)쵑×Uv»‰¢b}Î{VæúÕë˜XôµŽ¢N'TØå&¯«àĆîy—¡×À¢Â}ÌûZHG Q§Å*ìÖ”×UàLë‰ý÷,»==,k3/$æ}-¤£†(Ô»í Nè*ØÌåô«AÂ,W@÷cHÎ#Ëh²°¥%ºŠ}M=qÞÉb‰®b_SM ‰^žXª«ØÓ”KRrmÏÝ„I¢æÄ’°hˆÑ”Þ’ ýˆkz…åѶHÕ™bbú[ÇþèÄÚÝí¦'±^÷@–sK¡ò;¼õ#Öë~éRn?&èAìdb­ºAè×q#,;)ÝfÖHzÝ!ÿèâ.Sj·š2¢N^„qAÕ-..šþn’)ÅF×§ ™°{¥(?xgEæ«?-±pów¯ÄFFœÎ-툲nÄÐú^Ñ–K#V–˜Ë#Ö.*BâHRÏ 5XRÿqp\d¤…‘•MI*⹡æ‰_¦—Ké–ɈsaCúVèHsÄ.øÃÄ"¹‹+!žõád²./`ÿó&×ÜØH<çÃDØ0´ƒÑ£ÂszØÄBR0-“øôòÞòÎO{ÏÏÌ;¸BÍED<ºÿ̉ï;×ÁùYÏÀ¢ô5Ü[2qEyÄ(©˜±XXÏ>ÂÊúˆš‹ˆþñö³Ëoö¿Ã .®€™T\A@œ;•|ŒOƒý÷/]«ëñ6eØ\\‘"¤"bîã X_·±Ï‰YŒÛl2ác:`KÅec¿1,ƒð ˜‰_ürÛf“,Ž/¶ã °¥âв‰Ùž¿¼Ü á…øßî~äÄËÁ{œLåŠ6ØRqEyÄi{.ûQLعŽ8›,$Ä~_ö£u&þ$—±´¼â-WJü»¬!Ž,_Loˆâ|Wƒ+,zUÇô—WCb­êyškUÔ•X§ši…é†8ñJd4uêÒ‹Ô‰5Äá;aX:™ª©Mí‘›PndU^]jÿ ×RÅ1U\Öþ‰œ¬˜8‰¹ø^Ñÿô%Bb'S«½ã&ÚbCܧ‚8™Þ4%.ì^a¡æ©,艋ºW€ ~r zâ¢î ˆŸÜÁ¢bi÷ŠÍ oŒ¾AÔÁæƒ^¶ƒ…TdQqA÷Š`<2°k®Ä–Âdíf;XHEª‰“é-ÚóäÝ+‚1ØŸWbKQ`‘í`!YЛÝ+Ö¯^ã[ÔÁ‰³,¤"‹’ˆ%Ý+Ö0B⨃'Ît°Š,Ê"Îw¯,Nu°àQ‘é`!Y('NìzIâ|÷ ̸$ì`ÄÙR‘9qÚè^m±dâºWD[,—øîÑ•'v==ÎÝâ´Ñ?rCLEüÊ/°\aÝjÿhzUÒ¹iU—榱V•ta:Õ¥…éG¬S%]˜~Ä:ÕþCÓ¨’™>•ôÈô©¤G¦±>µÿØ´©ý?™“ɈɜLF¬‹Z!aúk¢¯Hš&úŠ„á½Óª¿úÓ#²Ê‹,%CëH7bhiG¬tï+‡X?kJ¼KbῘ&KPüÎú¢m•D¼CbñpœZî»[;X”B¼Cbœ%–ú¡T2ñ6‰E0m ðŽtöÄeáð '^:­€x»Äb3xcrâó³{¾spxV\u®“Û*mÏÛ*±€õÕœ›ë!{~p£áAPXч_+ Þ!±Øpí v¯°5D4à°¢¿UF\(±ðú,»Í<»W°§ˆc…W‹Êˆ‹%?MÛ¨«Hå >q±Ä¢¦Ä[$ìÓÁ¢9w“ÿ•Ûjˆå¿Eå¶âŒiv……Æbzkˆéí– A"øÌIEND®B`‚omniEvents-2_6_2/doc/doxygen/a00251.png0000644000076400001440000000355010240666452017676 0ustar alexusers00000000000000‰PNG  IHDR*ç[Â$PLTEþÿÿo___???ŸŸŸßßß¿¿¿ÿÿÿ¬«¾>tRNS@æØfòIDATxœíÝÍOÛHðþ-9U›s¥Ure G@|«Uȱb£ÚÇŠí‚O+Ú.„ÛâØ¾9)vfþ¹Îø+vìç‰ßx6šWJù§7cûÍLÞPãMÛ€¡UðÐ*xh<P¹%áUüîßëa5£*Ûs•ÊÚü”Vm­‚}/%lxª-UgIX‰FUWî { ¢/ €ª³TFþ;Mª‚/£ßÍZªÎR5ã ³yÕü€oµTnªŠž!ª…EÃGróy2f6cð¢b¬´Ž5¾o^EøÈið<:b»9¸©:ÝT5yyÄÈU¬²›Þ°Ý˜é.:ÑMU˜-h²~eðŽ’îš«ë¯†*êíLç ¦ê.Ï N Fg¦z¾U)«¦8ªè,ÊTì$&Dµ$$Çà)‚ªþ÷2ÕúS[¨üüq¤œJ­\¥G·’*ÅúUÜ„]%UJƒ{nAE㳂ZW©Ýôenó!®òÙVvÝ&„U\ä7)ɇ° +MQˆªÐÒ…¨ 5U¢*ÜT‰ªpSµS*äT!§JL…ª]Ra7  =U;¤Bo@~ªDTø©Ú•„ÜÕ²7\6½.ûÐTð}¡«r ¨U‘;/hUE(©ÊŸ­r«x…Ÿ¬[«fÉiyO Ué}ÿ\´¨2èþ}ßïÉ5wû/ãoÔLz¦šŒûrTù ±j~rÕ'Ã1É)ÝÝ‘þ-5ú—ýK¦z ½¶TÄ ɵ ±¨MßÔ0 ÊÿÑÀfO´¤2Xÿ ÏN ¯x¹®ïg*O’ªð2f™«ò4©GGÄ"*¨¢~eŪ½Ñ!±z‰j(MUxu\8L™jîÌœw±ÊnQ \UñÕ±V•Eñ¢K«Jbå¢K«JbåZ^=/Y¾Uâ*5kÀdÈ@Í]Õ!•_9ºb˨£Ê>rªÄT9UuT¹ó2JLÕñQÛ¯–*ËN‡u,eª–)¤C³A]XWùùÏÊÔÚ†|€UIª;T`U¬AîOiÔSIBUQÊBU|TŒ4T…9€hCU]©( Ê—‹‚©ü®\L%Rù²Q •œ¿2ù¨Ê3ÕôE×REʆ|VŒù¬Ú«ViÕ¨^ŸبêžÞ°Ggøš*70 2òŒÕYq[ªœ?þ×R-çùи>ÈT³†U“K¾ÕRes¢h\dªµ„[ªìs÷ÙðNÎæ&³Mè%Û*Ué À¨>8wz¼Wfn©òØñ®ðá/×ýõáÛªUɬ¶¨>øntÎU+3Q; ÷Äu¯Üc¶ÅªÿªgFõÁ{jpÕÊ ÂFZpÌúÕ£ë.¢ œ«¨>h§Ç`aa½©’\± ÜÛ£ú`!WM©¢3S…ŸžX¿úÄ6ð™!ªfýêSEgQ¦bÇ 7†ƒ¹½FõÁ¹s™ƒvsªšq(l¯Z¥UZ¥UMªÊ£­«Ô­Xº'#ýFìþ•lð^ŸŠwÕø}5\ÆJ€ï!Ë»­MëÜo—ɪQȪS1Q®6W—”«ãÈ-/Õ¬ZªVLË–jÕRÓ¯”z\ý½ŒVeÑ-|‰"ªx½EÆåþ@û|PŠ£Â /pÇ:‰¿¢1«aË2DU>j²„ÆõQìAt¢ªä®hˆ0,³¦*ß„‰ê-à·$ªxÛP²ŠòÛ´Õ­Z¿ÐѪWc­ ÿgªå|8|ÕZnVý«¤ÊVB5p†/ã{¾@áÜíÓé?Ž•›;ˆ¯ZëX±ê{è‘á€/º7º£Ï–Ÿ;ØšÊ l2¤|‘P›¾§Ó¨³¹ƒ­©®ìðì”^ý캵“~%OµÚ±bËNH|‘PŽÔQÍlb ø"¡{£ÃH5”ªZmÂXÕ»;ËŽÁ¦9·lTå!AµÒ„ZUÅ&Ôª²(6¡V•F¡ U)p•…š+©©Rs¥)EUj®`¦æjoŠªÔ\¯OÍU©¹f&Oj¾ÄT>rANT…;áYL…=9|—T>jmIT¥ÒJY(µjÄ2pëp½¹c ª²áí8!¬béú¥t˜)|Èi“ª:6%ªjìK«´ *«®ÜSþɼÜR£FöÐŽ*¸õ,åTÉ*¦ZX40Ϋ|•Ão|±CƒþzB,‹?^ 䪓«Ò¿|ìó ÐÛ¢ªÌÀæ*3| ¨ñÑ -£gæ'¶Ñ‚áÅõQ¤â+ïtܽᖊ÷ö‹)MsE,Âr5äÓÛT_Ø™a:³ã~Õ'VïûdÐw ·!ÄREgÑÞÝYr òåE£cpq yB4U³?‡VÁC«à¡UðØ=ø"UæU*bh<´ ?ÔzÒ+Ñ|IEND®B`‚omniEvents-2_6_2/doc/doxygen/a00121.html0000644000076400001440000000521310303671737020052 0ustar alexusers00000000000000 OmniEvents: ProxyPullConsumer.cc File Reference

ProxyPullConsumer.cc File Reference

#include "ProxyPullConsumer.h"
#include "Orb.h"
#include "omniEventsLog.h"
#include "PersistNode.h"
#include <assert.h>

Include dependency graph for ProxyPullConsumer.cc:

Go to the source code of this file.

Namespaces

namespace  OmniEvents


Generated on Fri Aug 26 20:56:15 2005 for OmniEvents by  doxygen 1.4.3-20050530
omniEvents-2_6_2/doc/doxygen/a00252.png0000644000076400001440000000057010240666453017677 0ustar alexusers00000000000000‰PNG  IHDRŸ'㬇Ë!PLTEþÿÿo___???ŸŸŸßßß¿¿¿ÿÿÿ/l:ZtRNS@æØfIDATH‰íÕ1‚0`¯ÐÕ#x àŒº;èh4 ”U%¥“ÑhiO飄b´-D‰.ý%tøòÚWBG´›sÇü!ȶï J§æAÍœÿ¢¦`(v0ùÛ@¤À{BÍ ™GcÜ D ¤½ü±×‚§i~5‘åL¢?=.èÀ».û+ˆÔ’o8ÌH )Üœ® ‹6NGv• ŸM  O²t ¦¸‘) ´/ÃÆù–`]…Ì@Ù‹ kÀ®ÚC&LK–Ç@­5`WTç&Pl¡Ë[A9>uYøÚ.7þôD¾Äüü$Ö}‹q` à&ú«ÕG:•LIEND®B`‚omniEvents-2_6_2/doc/doxygen/a00122.html0000644000076400001440000000624310303671737020057 0ustar alexusers00000000000000 OmniEvents: ProxyPullConsumer.h File Reference

ProxyPullConsumer.h File Reference

#include <list>
#include <iostream.h>
#include "ProxyManager.h"
#include "CosEventChannelAdmin.hh"

Include dependency graph for ProxyPullConsumer.h:

This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Namespaces

namespace  OmniEvents

Classes

class  OmniEvents::ProxyPullConsumerManager
class  OmniEvents::ProxyPullConsumer_i
 Implementation of the ProxyPullConsumer interface. More...


Generated on Fri Aug 26 20:56:15 2005 for OmniEvents by  doxygen 1.4.3-20050530
omniEvents-2_6_2/doc/doxygen/a00253.png0000644000076400001440000004274310240666454017711 0ustar alexusers00000000000000‰PNG  IHDRg—3<:$PLTEþÿÿÿo___???ŸŸŸßßß¿¿¿ÿÿÿbUtRNS@æØf IDATxœíKwã6¶ïÏW¸ãÌ4l »½jui˜ÊòŠ5t¥\‰‡ÝYY. »}‹Ã{*7. +©8ö¬í2mir­²dâË]|ˆ@lòŸ%4=¼¨h‹ÅQ<ÇAñ|ýç] h‘^TEh¸ÕúòÓŠ/(´x~Äs mýîò“6„Çù º[¥Ð^‘m¸M;|8:å%î:4ÍSEh¸¸‡NÐêŠB{¸G{ärrMºˆÞ„^~J¡Ñmqðœz†yQ1†±V£¾%î*´ÈT<¬ˆíŒ{ð£©Ä„f‡eªCÛ\÷.q÷ Yâb©ü(§l Š[yhí²((n塵È:Kå¡5ÉVbÈCkÅİqñ3Œk²š6¦X—¡YN Œ™»Ð¬'ÇÌQhÃ'`%;-rÜI£sÐ" Ï ™‚s4× Ù8èÑ @C‚æH\¤t4‡ ¹Ò”¥‚Œ®@s¦)KéhŽ@s ¬£9Í¡ÞG&PGsš[MY*Ø£ÌrhŽõ>2Á:šÝÐÜkÊR›m14g‘=_h#ƒŽŽ¶BsÙ3…æ62ðèh#4ב;š}ÐT"«$Ñu,<7h}‘Em”t1?8¬‚&LDÅï9A“FÖÆH¤2‘xt´š$2¥K.Ô¸|Ói 49dHÃÔÓíàÍhRuÝ”u»çMæ Ö6ñQ<1‚† ÓÐ$®½X9(àsÍ04ñðÓŒqî™ç`ÑaIhâc|âA·Ëí44‰¸hÉUì¨ œŽèh šD?²Y¢ÆX¹»Ðd¢œéÀÈ+Vj±Ò4¹.¾z;”¨ârZM?4™ê·*22´õ8=á@34)±02Ö”œ„ëq4½Ð¤<ÆÚÈȦSÐd¾‘푱¤H“½ú íldÜŠ«š.h;QŽ þ@Ómç##*t÷Á§“i&çfNEFTêîcÓ-’ºÄ©ÞX• ]3×"#bõ?àúÿðÐvcœ±Mj¿‚Š’àÐdÕ[)š¢ 6`h2qN³¸òEjï`ØÒä—Úû&y,šTD½ Š•”Ð=ó'é”ôʱªšÝÌÔ@ã›:Òw¾Ÿ>h–3SŠžf;3%Ðøg#;ÍþÓ3ÐVݸM†™æÓ³þТ݂æ³Úú‡Ïm·YZÝ’ßaòÖ´îòûÓ8ÏÅ’;©-åû‘½¯ë!Ñmvr•ÀûÊÚ!š«ÅˆuyAö¾¦÷$ÿ„ÈbÞ1†m*ÞS² hn0K¡‘úXŽn6KtûxE ]?^?.Wûg#ÜÚ}ZŽN“›…chãøí3ú›”ñ/bË¡ É]ÇIQq@¶®É=ÉGøÞ‚’chGg-Þ‘¼ hŽ0+@‹ƒÍUˆcà-½ýôt¹Æÿâàñøm–˧yz c²‘Tû,HÃ\%_B«èWÄ‘»8xCî:NŠJ¡á]¯“»”äþ»xÇÚÓ|s^¼#yAÐÄ'ÿº“‡Ç÷3Ü1$ÐÞÿ>Ï¡Í rµXÜ’[T—¡em“”§­^,É]Çhdïäfä›ï2hdÇ3úÖÒÉ €&LÀÔ¥˜d¿¸+ðMæisg©§¡5®Â§ z]÷4”{ÿzÃÚã›1¹ëxì@‹çqîixlj§ïH^zhâ+˜T[À»ß´Ë¿ÿ¯;Ò¦hwWñü ¶Ú'Ûpãõ޶i[hO#CX‚]þ)ºŸ“»Ž'ÈÞh/3hdÇ34Á{ýkñŽä)‡&ÍùYáäwÓ4Ü{|¸—@K¶aOˆ'ŸŠÐâ ùZäìäú}‹È]ÇIA_îÒ“ëðá~ï*…Fvƒ ¬W¿ÜÎÔ@°Ï`ƒ˜Ë¥œJ ‰Øg’°“—‹ü¢J  Øg4GôS,òQMÀ>“ üΣ†Çª¥šÀl28Âï¼ rg   Sf(Á1CæCåRß<£ÁQÇÞ#Æ#õ‡ÆožÑÞ¾žCfX{¡þÐøÍ3ËLËîÆüšÎ¨ZTù #}ÐÌ6hšöï4îã×ppÔtÐ K€ÔwU˜Žš' ñZg:8ê‚~ƒI4ý}¤í¨q¯uÆ™yh[ñ:Z¯(‘®Ãf¨agý ¹ãh܇ªÔ–ýX ÍGë4¡œnSž\ãJ 4 ­­›»ó§PªìÈjhœÆYàh-6t$Fí^S]ß‘ÕÐÜq´ÆzäÊe+änCø/Üçe|,„¨¡9qˆ¤1ß h6džz|üÎÙ Ï6‚#Ó ±»p¿Ûnh.9Z½Åo’Åû!øWîÍ%G«Ö£Ô}Í8?ä>4K­b†lþ]®i34>Óìp´²±}niÃÛfh.9ZÉŽ~i®»‰G®C³ÄÑŠvô>mì‚n14.Ëlq´-4wû긢 Áš-Ž–¢æíX,†Æc™5Ž–Z«ì¦zí¹݆f£%GÂm´‚qš=ŽF-Q:pÝFÍZh@ÌÏÀÊ) Y‘ßÎÞðÈÍfØZõ÷ jdã24{‚£z7K m€c/4ŽÑ¹‚!t+æ:öž\w"±ÈÑ"¨Ñ@65k¡uÛe£áª…ªF&5w¡Ùãh¤bá²<2¨Y;Êßi—5ŽF»pÕÈ f-´.&Ö8ZÒ<„êÔ†¶Îé2ËGK»æÔ¨¹ ÍG˺ú µX¥f+´.(v8Úöô Öž 5G¡Ùáh…º®Å25[¡uXe…£kÚ 57¡Y1y¿RÐ{+=tšÁ±± µ=PÝ„fCpTûàÚN²Z«/ÙàhÕ­ZTxà4 ­Ö¨ê°)Û‡‹Ð,p´zGH´¬ušqGc]ñÔbT”ý±sÀ¸Å*ãŽÆ¼Ä¥çHJ'WºÍ´£±/&ë±*Ù7Ü%×\RКëÀ´£5LºÒt(Eɾ\ƒfØÑšÆbt™5Dš¨ÇÏZªQÑý·ûqšÙèØ<æÙb«î¹ÄüàÐAh&­mr£6h‘{ÐL:Zûê£æ—ÔB£³z¬„Öh”AGëXç×ü’bhÄß‚fÐѺVÔ6¿¤rÍÓÌAë\»Þü’rh–¶iMF‹ŽÝY"š_R mhé0VƒQÆ­{zC´x±¸.m]ÿð9è(³ š¥3ŒŒ2åhSR:¡M§AaÛSp¶ÿï?:Êl„f猆eY=-‘Ï4¢NhAi[¼BèUG™ ½GN‹zI4CŽÆUC<ÐÑ,X-FñÉ5º¼¸@èÍðv¼e½D!: áóà­ãâ™{²r%¨MÐøŽjh'èGôjú1ÀOñÖ˜BÃ[´ÕþÙ=ö¦‹¬iÈmS)ƒf&:rÖGGä.Þ`ú1È¿ÞB ÅÁã1zšoæè×âkr š GIQÛ¤ÜÓV/–ëÅâ>–…Ç)ÞB Í‹+ú®°üÁšèÅ爰l2áhüiZ²òÓ2ŽÇ7c bš@{…þç†6Ã.7]/×aŒÖñ´Éú%ýdÓ€±†U…И&p4Ôµ8f]þ)ºŸã6í0v¶¢x~€Û´Ct·ÂmÚéhòptŠÛ´Ãô£îC3àhBé:ØÍ0Iñžµi7è[Dú†Ù—;|rý z¸ÞâËO!é8†½Çt–ð!ì,4±+¬7'–ÃX›Ž"݇¦=: ¦Å©¿;ëÄ({ŒÒÃj iw4ÑTFµ·ç(…6L;M·£ §Ÿª¾[€JhQþ¶B$ 1B K$ž2¬òBÏšfG“HXþD±•вyáЇ±ƒÐdF‰J–jT!´hûÇ~hZ££\À¢Íåà  ö8VM§£IfÀ6Gë‘ÕvÈx¤XQéeЪæhƒÖ'¡sþQ¸ ”ÃòÈøÓš®èØ+I{)th[²Ðt9Z?VþªW5CÖKohz­o’öboD…’퇦ÇÑzߟ`Xú aõ¡Íд8Zÿ{Ž@C+V øâ4=>裿P Q}“jõ„¦!:*¹çp.b<¶¼£©¹Ý-ì+Ùh=4xGSt ­aþ BÌ ?€u#­yÀ@ª0@¡±ûÓ¶Bw4eƒNÄh(k+ü¹CS7P8DpŽÖ0€n+4àè¨ppZãX,\íôëhJo/8³–q«™êåê ÔÑÔÞYZóä +¡:šZfpSë•`74HGS|[0h¬{ÞÕ(—¥Ð— –ûˆa§†H$ -ª=êIPÐXvZ ÐÑ”Oäˆ`ÌeÚi34@Gkd&—£Ak8'yžÐšý¬{ wÃ;†ÐšúJN‰¤¡YÔ{@S~Œ5öoŸ#´¶öÌ"hÍ—Œ,†5(ÔÚ±Z‹™Cƒ9Uí¸äi ´AÛ¡¥alÖ&hà = ©³wЊÌNhpóšºgP$$ùØlÝ@‡½Y]¿‹²š¶³ž’hÓið°^>益-bð€ªöþˆnæøü3‚Æ5'à_ëe%jñ5qç‚ÞrIÄý5\$–ƒ¦úâ¼à™CÃáñò‚¤A=ŸÓlU7ÅwÔ‹ç18âs¤N9 ­c ‰õÞ 1Eh4éiü¡½éG’ò´ð†Í;èê¸òËZhmÖ´wñbÆ6î‹gYGdL¡‘4¨s„.Я$åiÛÎ;¡©C¦eâ“´Vcx  ào.Ò7fž6¥iPi®Ómû&M%²Ý…¶mÂ8›‘´çV4 *ñ´_HÊÓ–w4iJ‘Ù ­õ[vC‹¶]´¶·:pÅ¢ mÚa<â6í¤‡X•†Ì Ið§‡ÖB[s­î;â€;4áhðñQZa®Øñª®m#™=´BáBb,rh":ÂÇG ¡©&a^LÐàh–AÛÎk‚=^•´l‘9hÐñQü¹NÿþļتåÒ‚Ðt|õ¾ýæµV-ŽVÝ‹òÚ–O ×óÕ{º›AhКÍÐPÒìž8Ç{Ûö¹\© ±§Z¥¼º¤ iœ–#Û—Œ™MZ¡úº'¾rªaÍGã36L÷¯ÏѨ¤ª7fö 5BS~Ë@ÓêhòÐ[uAŽ» ™›¤Xy:¡©®1hQáG§ä<µ±Xw°Ð`ã£4ÍŽ¶ ÐçІ¨kõ.Œ’ZÁëQióéâ¨þÞ‚|¢r,Yž,9X,öKŸ_,n‚BQëoï‹;]/gù£ŠyUÆGAhCcÐÂé´¸ñõoÓoƒÚ{ËÐ*c˜¥' ´éϯKŸ§ïÇ…¢¾ì—^_/òGóªâÐtGÇ Zyc¸£Õ¸öÞ´ê‰Z°ýDº—Ç,)å¬ðêU'4Ðþ#?´´ã¨ÝѶоŒÖ!:¸F·—£§ûó9Ú\ả[ÈJª Ÿù‚ü¸>`ÕK%Ðâóùj1>A{«ñ: iŒƒÇË RT<¡|ÂøäáòZ²òm(™Wd|†¦w4d[ñÚãÕãñjÿlt³!õˆ·-I…’-¤ž_M?äׇ±Ê–§ÐÖßÅoÑ7ÓÃÕ‹?6WÇ!:=&…Å“RÔã囀B;:áŸZ²òMl(TdWDš¦aòb*¦¼#2¿L°àš ÐÈRÏ!ú±° ¿–ζ*ŠwDŽâ9.î|ýç]f¸mÓ¾ž¡ÙbqE¡=eá‘lÁõL–ä×v×<­by‰·-ñç^ÒâÉ^H›ïßÒ(‰Ð …FÙ`RËÙ:YùOãrÑ<Æ)?U¡D¡FGöÑ-´ÿ‰Ûªu@¡­Æ›WãõrM*;ÇŒ,É//Èç†F=í÷:ÿ[ mlÐ u¸€,B^=-YùÏ ÐÕ¡Áͺo^šwùƒø­öOGîò_èn’-ñü€,ɯ,È/_G2JM¡á6íËOwOHÂâ9…¶ºÀ]~¼øïãè4iÓÈÊhpCýÜÐ /Ê´¯çÍÛ´ñê ‘ÔŽÚóÓÅëcôòSH¶<Ü¿ è’üJꋈþè:A¸xB‚Fzä•¿ßÉ>J½G²ò* MåñnZçZ§æ§yó‡jÃXÕ#QêjÔTÚ ¡Ê ]¥ ælM°^¿4Å7ÅE\øÕŒ=r@;k<: 5,²ëõsCƒè‡ðMÑmsÝXÚ*ýaiМcÊÕ Bãn¥Zu_ÊFù‹§”A¹š4Ö"YñÏ´²ÚZ¨Uvªª/ -iÒ”+"“ã”@«Y®îzZʬcN 󹤄 ©›Ïè4”EÊ–½*ª?ÐD§ ÊÍiâ—-•¥eµ#R|’šO’ü‹’ –Ú¡‰Ï–ûŠÅqaÄL=j¯R—ŒÞcîri…)9Bä qß;®Yú2™EЪ©Bö^¼PÑS† iL>‡Ê·h€]O×xò’]j0-éñ÷úî0I'š¥ ZÔvÆ)[H.­ß\‰9©Š}`hm=1Á §õ¦Û͈ mì3hÛA40 ­ÏœGínFDÓ$;†Ýý°½f²6ítñ¶­”ƒ ÊoºÈÖ Í€›‘ƒ²ð¸9Z¢¶ùþm-Jy°XLB— áͬ{xÃB³ƒÊÑ@­ÅÕòŽÈqêi2 vzZ2•òú2fxÚ ãÞüÐ’Ók!YÂŒr¨5ï‚Ö÷ú7Üå'm ó2Ÿ2F§Râ&ìqIÚ´´ÉÃÑé_÷ð†„f ³d´žZ³«mO®Ó&áÞ#™O™@£ÛÈÙÀíêþ]Zد÷‰/‘· Û˜IS".h=¥š–¶ŸS‰)ðQãWvšMÌ2³Á©Y-™÷È»«˜åfCSkˆ¦®§ Å ÙÅlk6ð©~ ÚÀè•k1h–1+˜ |°Rá…™#† ‰,š±YÉlã2:IÙõ›1ÚÍ:fe³sgS3Ž”TœŠÂœ0bÿ`û˜UÍŽÔÎkË:•çì•´øÏ_0`ú«çñA%ëüÔ>fu³iÝ*‚VšÉßðå)JuÍ©rhöŒƒäb™½M ´òš—tžþå»ÜÐ,dÖ`¶š¿²Î‰QfÒ\(Ôブž[wC³‘Y“Ùj<­<“¿¶«´Û£öLƒZÄ6©ö¾žÖÀZyÅummmÌTO‡W ÍÂŽ#Q´ÆŒ$éK%Ûc˜a®æ ‹¡QfâwH%4K™µCkÊøˆ¡Õ²=ŽòGåB *WÙ3@‹¡š­ÌÚ¡5e|œ‘lXâÙ‡Õg­¼Bh¶2k2,‡ÆÌøH M’d[$_Ïí嘄ǃkÔží±TE ž™:hvvBˆÚ¡5d|ÄÐH¶G íèlôyúC#¹%Û³=F¥Ç@Wï•A³68v@kÊøˆ¡‘lI.ºÍyC¸$¹%Û³=«huIA4{™u…GvÆGâi(M ˆ#&~I÷¸X\u$,^RýE2qBK¯9´¼C‰50ê†ÆÈøHÚ4ÜÞÍh†ÕÜÓÐ:à†7Р šÅŽÆ­žñC#ÙiòÇ£SܦÒ6ít.h€ƒCŠ Ùìh<ÐêI›ö÷û1yXì=ÞlÉhwhƒlã… 5Úaq/µC+‹ñqV:3+ë?Õ+héá :ëS 4«™ @cg|lƒ¶¬^øL¡fèVÍêà(­!ã#Éô8n({Y’õ³!c%Ðìv4OW-ÉRšô8VÍrG¾4ÃÊ$|£Þ‹ (±…ù¢åŽ -ªCÇ  ÙÎ ú"è zK›tðéÍöà¨õÊ5Jû°rhÖ;Z4sUËdH¡ˆÛȽ;"ö;¸‰ƒR¢’!?{C³ßÑÀ¡•âáÀh8š³} ¤ ¨/4MÏ•©÷IÖÇ)>hÍë/<´T´"ÒäiЕ"ñå]ˆŽzŒÌÓ^ØÍGÓtd ³YûðûëÍ GÓthEù•bË¡9áhšÌÌÆ²`¯ÊPõ‚戣é€6ØÃg—ìÍGƒ·3*.µš+Ž -[zŸÖü½>Ð\q4XC·©I<4•‚4´~+møjƪ@s&:Vcy§H†œ>êÍG³´¶,—ŽˆØ ÍG‚Ƙª)…«<4w äøb¦F£ÐàfM®Ä†¥gCà¹Å‰¤¡9ÕÛÚ¸ZÐ*hɼÙÒ&k€¤ØÖ–´ ‘ÝЊŽj¡µfr±Z‰Ó3…Öµ„i¨áÊŒ44—¢£:c»³éZ Õ’>Gh< # ³ ž45ÕÈ•`‚ô³m6¬NÁ‡6(«_a ª‘Ó„g EiÐ bïjäÞ¡ÕЀ ãҒ噡~ÖŠ#Znk4™(Xπϖ´µ‘¨QC Œí€Ö·Õêz D IDATt;)kE\y»§çMY²Ø·µVØÁòÒI«2Ÿ‘ihªÓûÖòwS‰XÉ8XaGz""·-Q 0¯M‰ï±/‹²iF2Ž¥ð-–¨¸Ï¤#b©d34a[ã}Ë£êi^]JŒI¡Ù±> šÖû¼êtK—:í(4‘±¸;Mû¦¿€¿œhz‘iƒ–Ï{ÜAhê»ù]z¦Ð*¦ô¨#7-×ãÙù´p+’¿¨ƒ¦¹1Ëô,¡‘!‘¢%²V™A¦kïv_°ûÓ ÍHd¤Ò-݉- Í”@3©tì9*ü…ú Íåù<¡EQOhfó¯êèó—„‚~[]Ð çÌÕ-*=Øh¦ók€–ÃúzÕÒÍô$rxh…= ó_@ÒÍø”á¡ +m€VI[.V Æ™ÁC+S­t@³a 9t|®]Õ·Úp( Ít'„ ØÆÒ=À=ÂC³‚44ÆÒ=@Wã†IB³ƒ04f ¸]‚C³ƒ°CÖ38Wƒ†f¾ã˜Z¥6†•¿Ê Íf°=Ø!û)XËÀ-’€fCg?¤%Õ²‡M/¨744‡fI'„Zõ[_Q$Hh1ƒ„V+zØü’ @]½k3Hhµ¯YØ€ÛôXÉ-¿R%¥B³‰ ´zÉå!­Xá¾Ò²à YÓq¤ƒÆˆ'¥Š…‰A³‹4F<)mŠ‚fOg?”=¬rËU½°Ð¬ê„AAc}Ïò6g<Í:fPИÅZM a}Ì  1¿( îøï—6/7Aúp†ÖßÞ ¯®—3VÉÐìc]*Úôç×¥Íáôý8}Hø|Ù/½¾^>°J„fYÇ‘ ûèdB PÙwB &}8KÞuVx5­,8h62ƒÖPh´ø|¾ZŒOÐÞj¼Cãàñòbvrâ %Æ'7ÿ×V‹þ:¸ÁÆÅ²D a´ÔmýD V54lhëïâ·è›éáêÅ›«‡ãhñäd6þ€/ßÚÑÙÿ¼ÀÐ^M?âO<à {ÓŲ YØ ˜EWZt'» ïÅ‘£xŽƒâùúÏ ºxš,ŸƒšØ7{·Z°¹Â?`h!úâi¾™_ _“=BA³ÓÑÔA«Pâ=OÃXˆ·-qö¡¯ Ò˜a>ß¿¥Q¡ Iü.gëÅâŠ|0,—¥š¥Ž&mWÕ•¶å4¶ÝÍШ§ý>BçK¡Í‚ :¡‡Û¼õr]ô´%šâ­ØÓ&è—bYÊ¡Ùêh¼Ðjá®ñs¼Çm nÓ¾üt‡â -žñœB[]à.ÿÝ ·i§¸M;MÚ´CìxÃÞô°X–Ȉ×EP[­Í°ˆ‡‘@-Ðp?p Õ…öpÿŽöÉ+¿£—ŸÊ½Ç1ñÀ^½ÇÒ­€› YÙݧbÕqÔ#-w«ÎÆZš>þˆ"»»!…ÀÒfÀUÑ.B‹¶÷Σ÷d3´þ ÎÕ8¡åãÅ@‹¶7Ÿ§øœKœÜ©„6ØB(ºµ¹œÀ\m÷ QGKPðÔ®å Ù<2È¡E¦¡A¹š´íø£ÍТÜÏ¢->S¶•+ ­a|aÁ'ÿ ƒí#ÓРm)hQÓ Ð’«°˜ë]©¾y³¢O*«yh Jª‰3qG( TIñUK§òzãƒVz6ex÷Ъ¢-ªAh¥¿‡Æ)RQ–@kè’‰@ã¼Àõ×»š?izVÙ¿ ТÆKÔºø¡/ÎJ;8Ïz¿¢ŸX,®K[×?|ž¯ëuw±Ýú•ÈnàÙ­éðM …hÍ:+A㾕üWôÓiPØöœ½ø×4mw¬oÑÀ8´!ýi‡vˆº<-â_úŠ~"(m‹ƒW½â€fx+Õдm¿±’Bû}y‡Nî'ñÉ º½£ÕbŸÏÑìä:ÛyÄ_›_ÑO¢Y@JÂ¥\^\ 4]ß^Ž/?!²?D×y˜~ÒôØcªäÇ!~¿´y±¸ ÈßÙz¹þö~Txe21÷Öܤ¥ÐfÁl†®7Ëøèlôyú½š~ŒßbãÆÒ‹Œä~E? t‚~¤%áRâ€ìh}ƒw1ÂÏðüpµ6š%[ÓO,–VËôç×¥­áôý˜üÅоì—^[/G¬b¡•έq“Ö4<“X÷ïÑ?g(X‡q°¹ Ñ9 Ññ¤Q.ÉåRv”ÞÅÁZR@þQh! ×´Ô8Àãàñx–lMŒá+Ÿçë÷UR-Á¶  ÓPŽ¡ag…WŸ–=„ÖÞIkøçã73ôþuã½/±M‹Å=Á5Ëš&9O[½X&%‘8<¾Ç_-Ü|wA›-WI›–Bãó4‘H–| ·«Åøí­Æë@#uB M’êIq°'mÊÁ n]ÆI1} 5œ¥‘é©uwؘ;”{ÚMËÐDz_¥_=¾'%‘¸#ò ÁÏãÜÓÐ:(CÓ×é`šËÁú;ÜJ|3=\½øcsõp¢ÓãÚã囀BK {üî¼a·0TÊ¡%çC)´oÇÚCbqKtˆcW ùžb]þ)ºŸ'%‘gû´Ë¡½Ì ­öOq›6)A³¢ËŸUËbq„[ |¯ÿœ ‹§Ébñ9H¡¡ÍÞ-…–æ öøÝOóÍüýš#-;McDÇüxN¡}˜ÌÐËßo{cbOšÐˆþÂ7è[”•ôå.=¹î÷®Rh$’Ìp+W‚f~D„( ÄÛp{^"ôõŒš™yîgQhiƒ.I°ÇŸ  ³b”BÛ:^¹54©Ïj쑨zÚï#tþ·ÚŒ¶i¸½›Ñ>Uîi8Øã­ØÓ&è—¤YhÃzt,ÎõИ*BÃmÚ—ŸîP|A¡Åómuñókò0mPh›v:ŠƒÉÞ°‡[*1h¥‘òTƒòØ^Ñ ÿŒÅ=kh8ÂïásÎÕ…öpÿ޶i¿“‡ÅÞã "Q_¾÷X<·.EÇêp¬¿4ãZV#Ö›bS¢>жá°Ö3óИbTËÙœõFÕÐ>Ãb“Vïù{hLÕ«esÍx[sƒ’HZTŒŽŒ±,)#£ü%hù‚Æ ‡Æ’ªSEahiRƒBtdYbÁdÕâ´U£Us Ì\OæÐ¶ÑÑŠúh•ùiቆÂã°æ1­ÓUÁ!; ›Ø“Cd´`–½{$»72Ãx¸íñGùôûe4£›Zž\iþuAÆ×§AE$!hir%G˜™^½‹Ì®šI×f}GW˜%®Ÿëú´a¶”°0 é‚’Ù•æŽ1“+A£l¾Á9åhiBsÑjÇ|вµ2.äæ, 33h±Ñ”´¨0Üï†Òàh¨Y«)>hItŒL¶RÊMhfÓ,EÙ ~·º!©¶³£ ìFÜÐ"”@s):R™r5éSX‘c}ÇT…,•ZXQ¼Ð"”,»p.:¦µ§½/b:‡ñ00:éhÛ±n½²Z”üqÑѶƒÝZ¹;hQ2`ìjtÌlÖlºihÉ0–[cÅE™˜ aúQ22p4:n4ÔŒCÛŽ9éhÛ ÔH ´¦8 ¥·(q6:Žz}ÔÌCËF‚ÜŒŽE³uQƒ­)hj»Ñ±d·¦)#æ¡ ‘ËÝT>Øôœ¯Áî¤]é¹zfMU2<üEÕ<Ä­ªÓQC£Žæä¦ÊѦhÂoK‘À‡w74ݼ*“Kf½ª,ƒFG¯ŒNµP ç̌ܛhP–nhÀ1©ÚDH·£cåxÛyhQ²èÂCkW¹Hè˜Ôô@HŸßíèȂƟ÷虩jE6ìN½: ‘e2éXˆÃŽÆ„Æ9œN³'4íÀh¤1£ ‡ÛE×®ªtÄ%ЂÒZÒ"‡Û'aíåb‘콨¹…-†OÓèÊ—­ _ZdBêä~²ZŒŸîIŽÍøüÆëf?:¸)ÉÞ€š¡ ÌÜ1š,cpÛÑ ñ¥E&Ю7K’+3$ùÈâ·$Å&ÂÏI ÍB‘콨Z²&BsÛÑÊÇ\ÖáL‹LrMëäÊ$i%Ïã9I±‰ðs’B³Pd.cТ|Årdz=¥1 ¼i‘‰§½’?$è òëmß¶í¢%жéwͯ\î/64¾´È„Ö I®ÌÄÓ’b{Ú/$…f¡È\¦¡ ,X¹¬@ hÜi‘)´‡äÊLÚ´€¤Øœàç$…f¡È\¦ å¹ó‡;áih¸= óTÿ¼i‘ñ»_~üžô ½Ç€¦Ølî=‚wÚš ¾ ³Ð*7mÈ·÷ƪ¥Ø´ Ú x³o'TI‡Ÿªø¸?´ZŠM+ EÛÃ3rË¡J*Vdohõ›V@+«üwÍÒ­NR)…V—=ІéC«‰*è@‹†ƒ|†  ‘Q’TQ…#oG Åùêt+R@ª  LPŠƒ²‡¦TŠ]ªi/Û‡róQ[õ< Á¹Tƒ4^[Ú-hZ\ªIúúÀÖ@“¯e£¤ Ò |OœÐ*¼z›V»Å¥/>j…vÎäš y|U„µ×}“U§âí&´ûÿþó§K´‡‰lÇT‘63uB»}Gþס•¢œ.Õ¤„þ°ø<[}¿ 0º«ý‡š-”„´ÅGЖø'^¾¿ßüù †öî˜éi.K—«é‡öÃýÓâC»\^¦Ðœ¸ Æ£]„–„ÇKܦ]‘6-ƒæ~\̤+>jïˆ`h‰§åÐЮ´iÚ\M{—CÛüùoŠÐJ]~'NÉš¤ÉÕ´Ÿ\ch¸÷¸¼,Bk<¹Ž\c§ÅRøCCÅ0–;ì´¸š5ÐxŒ]!Ñaš=ÐDÙÛêép57¡d? V8­ ;øipµ]‚VP@éí‚ßãŽB+Hÿy;¸›ÃÇÓÐ ÒÄÜtAk“‰6´ù+Ùr¬ò¨³| qA3Øyhþ ¹UûM[Ù›m€fÍx‡2|[jÐ4ôO¹¡Á›Â¯¾ørjš I¶}µ…æÆtƒò4¾î·'ÔvšÑ³ «Dé„4:4 ?/4;J)bÃ#߉B[{?*l_‡ÊÕ-ùfž›Õ ¶ÚPÛÍ#ÀT[R5R<_ö~]xÛz9J=ýF~§ÐêÚ -Ï¥ûf€*:®û³ÂKۜޑß9ÙÐt\üá„–=¶F·’„Küâ >¹A·—c®Q|>…_9øÎNn_Þâw$ÁIÕCe9´aæc;FB{¼|PhGg£ÏÓÉó¿EŸV㇣Óp6z7z‡¡ÝlðÛ÷¦IâG*›¡‘ ïy`Ü-jI$ÜìÝRhÁæ*DçÉóÏ7ËÇåÓ|ÎPò$Ë"YIâG*&4M´ä6é“ÝiØ2OCè„BÃÍÙÍ04’ç1V‹Åm 2´°ÐÈY •l‡º#yæÇÙŒ¦SÍ= ­ñ³§ zÍð´_HâG*4-ó½8¡ ¤v¨;B¡­.~~Ïp›vŠÛ´CÚ¦ŽâàBïh›¶…öˆÛ´C’ø‘Êvhe÷ÚjI›ö÷ûñÃý»Rïñ&ÉùO>¡‘˜ÙÞ{´ ZÙ˜]¡VÆšÏÑxÄ‚¦¥íà„VÅ´#Ý‘‡6¬X³Ý‘£þ‹|šMÏnO«BÚ‰îˆòQ~=‡2/4†gí@ˆÜuh¬œÎSS MÓ8^hÌ£ó!R54MG1?4¦AއHÅÐt-êæ†Ö Ý‘Š'«Ú­Á"çC¤Bé:€ù¡5ÂqD"­I’ù¡µ»“w6‡­*h»s¹FR:ït«Ú3‘:¿`hã=ö¦Ñö^}¤ J£dmIÿ¡Ùtq€žæ›ùú5y›‡Ö[ ¡mç&Ð6ߤÐðfoòÐzKZçš™‚§Åóxëi“ ôKá^}$rsr$ íemòptŠÛ´ÃÂ;¼úHŽ"Ðî÷þ ÐBß{T+1hÝë@ýyš B뜅å¡i‡æ <4%­s朇¦A"Іš„quù{¾Ã«CBÐʳ±˜òÐ4HZW|ô“U5H54/ †æçð›—Ѐ±…YDž¥<4%viÆ,";-qhÞÕŒËCsPB½Ç¡Oýb…Ä Q^ši @fó‹}|4,hÙübïj†%Í»šaIAó®fVbÐ2ó®fTrм«•PïqëaÞÕLŠZiZ‡fR’Ð||4)IhÞÕLJÚ ˜c Â/>ÉBó®fPТÒü9ïjæ$ -ÍúÂ1e®CŒü0^íVÉÎCdÿ©§š°ø¡ «s©ßyhÔ}ê¡PhÑÀC3"hŒuNCÍ„„ ÕrrFCÍ€D 1Ö9Euhë%> ¸®mk[RyhÂê •ÆxO§Aáù}â¡©S_h¬ðHRaÕžzhêÄmÀ\œ–B;¸Ir<Æ'×8<}­Ctpn/G——IÜsÿ.(çôЄ%µL>¶::}‘äxH =^=¯öÏF7’iirB ­hЬ‚rþGMXj ÅÁæ$‰Y@2Ï-w(ü2‰ƒÇã… ø]WhVÉÿè¡ K Z½QK ÍÐ:,@ ð¦¯gh¶X\Qh›ïßhø]ËUó?zhÂR­âiÞôã?ñkë †Nªž¶Íÿè¡ K Z=>nÛ´´étŠâ ´Ú?%áqŽ¡M§Y›VÎÿè¡ Khì±é=–Ú4Ü;¼¢D íËé=.Ÿ³Þcè{ý$­E‡±~Â-[Yš°tCûfúª²ÅC– ´Z|…¶ZU¶xhÂÒ ­.MXÜТ$}q5>zhä¡9(QhÕøè¡‡æ ø¡¥—;+ñÑOV5 ¾Ð¼ ˆÚ0›XàW^—‡æ Ä¡ùøh\üÐ|fk$îi>>—4ïj¦Å ­¸8Í»šayhŠZaz±†%Í»šañC+ ò®fVRм«™•4ïjFÅ mè¡Y#9h>>/´Ê2yïj&%­Ê»šAÉBó®fP²Ð¼«/´AÕ¹<4s’†æã£9ICktµŽs½¬õ¢€ÆÊÈPûzhàòД 4Žøè¡ËCsP|ж뜺㣇.ÍA‰B뎸x¡åÖ ÍOV—04?ܼ„¡ù•æå¡9(qh>>—84ïjÆÅ Íçë±H|ІšM’€æã£iÉ@ó®fX2м«–4ïjfå¡9(nh>É’=’ƒæ]ͨä yW3*IhÞÕLÊCsP\Ð7KöñÑ d¡yW3(~hœù̼àå¡9(ih>>š?´ªoeO{Þ1Yé·y&’‡–¹Z¿ûTûÉ«€V ˆÅ…ñÒòÐ$ÔZêzšvõ–d3óдKZ½—O©yhÚÅ=öˆX§f„¦‡¦]"ЧfƒašVi±Ø/½ð¡/<8=4 õ„†#dmúóëÒöE€fD 1‡®’ÞH$X}¡= H½¡¥áC‹Ïç«Åøí­Æëðö½Y¢“ûI|rMþ ƒO!:¸FwÜ ŸÁ§”A[¿EßLW/þØ\=‡á:\¢ëÍ2 ŽNÃÕþÙèó=|þÇ>‚Æ$Î:"Gz’)?UIDATñ…è|ýç]ô2#ÍA‰CóñѸġyW3. hÞÕLËCsPÐ||4-±¹2žxé— 4ïj†Å ­ÌÉ»šYyhJ šfÅ Íç3³Hrм«/4ŸÏÌ"yhJš&Å Íç3³G²Ð¼«74í‘44͉Z•Ò_zÎóSé¤%m Ô?iU@òÐÔV³‡& ~hÕFÍC3&ÍA @«ÄG͘<4ÕÚbq”¶¦‰×ËZÿð¹¾b¾Aš€ Uµ¤šÃéûRÖ‚,ñ#vöâ_w¼e{hê •óƒd‰ ´Wˆü瓇& håø¸…vwn¯Ž_¡Ù CÃCí¡)IÏs{9B'÷óvÃÛË,&>ïcOõ‡vzüy¾::}}œ£=’ø1ƒF\¼r³Y¢ÛÇ+íúñúqéó>öT_h‹ÅçàÅÍÕÙ'ô4ÿD?¡‘WH>¬[„´åÿóy{JZ¹QË<üàžâòa‰V/–$³Y!<¾'¯hïŸçÐ|ÞÇžRzÚ!Ú|'ÐÖaÚù&ó´9 ³ÔÓ|ÞÇ~‚VŠEh¤åz3›£û9†îVÚÙþ¿îÈ+ÚÝãU?^¡oiÌC/?…ùÉušã÷îß%Ð|ÞÇž‚VЬjþZÚM@bЊ®Æ¨æõ…´š€”Bû0’¶ÃC´b|ô£üÆ$­àjš1 B+¸š‡fLšƒ…¶š1‰BÛºZì'«š’04?ܼ„¡ù•æå¡9(qh>>—84ïjÆ%Í»šiI@ó®fZšƒ’æã£aÉ@ó®fXRм«™•‡æ ¤ ùøhVrм«•4ïjF% Í»šIyhJš&% Í»šAÉBó®fPšƒ’†æã£9ICc¸šŸ0§IòÐúܦÜOMí%yhuWóÐ4©´š«yhšÔZ-!®‡¦I} U¤‡¦I½ Eejš&õ‚V¡F¡­¿½u~ÎCë¥~ÐÊÔ(´/ûIÂÇ’ž‚òs­—zB+Q£Ð0³Ú»hJ˜âó~;}îê EÛ>dm‚\£øüýhžÜOâ“kté³;ªToh¸çŸa£Ð/ß$¡cüöñêñøz³ŒÇˆ§ùìŽê¤ZŽ-é=nönIBÇxŽÂ/“`Æùç³;*”h)¶ÄÓ:! 1§¯gèýë šÏî¨NŠ lÚ'!™§IBGü÷Ç¢;Tð4ŸÝQ‘”AC©§­.~~M:çº@w)´GŸÝQ”CC¿“ž"†¶ºB/?~O}¹‹ß{T&õÐxä¡õ’‡æ <4å¡9(ÍAyhÊCsPšƒR ÍOVÕ$•м4ÉCsPšƒòД‡æ þ÷ÿ(3(ûÀ+:çIEND®B`‚omniEvents-2_6_2/doc/doxygen/a00254.png0000644000076400001440000000376410240666454017712 0ustar alexusers00000000000000‰PNG  IHDRŸ·?DNH!PLTEþÿÿo___ßßß¿¿¿???ŸŸŸÿÿÿ}P¥tRNS@æØfIDATxœíOsÚ8Æû8ì%ÇìÌÎcé°cŸ»k·aëc’¶C›ÐÖÜ·L8¢#ŸÊ¿ëSîûÚ2˜°-É {ô„˜Œ„5ú¤7¶ôX¼`ÕÒϧ®b Ýe€t—Ò]%zw@›O•ÈÙŸµÜüi€N'¤» îJÍý­¬r­l8´·²Ê ØÏ²J ôèöÜ^ÐyëOÜ6«#QV‰‚á °ƒs´ô×Í*A— œ¹OY9óò-?} ;‚ÁT 6XU¢…gT‰1QîטU"Ê%õhÇ š]¿¼ˆþª«?ð‹†’Õ"íÿD9ªsû0 y*t?4:\u€øª ïp•™hœžaeÿ¼î@ÈÃEì§Ò(äa9x4šæA‰¤5Ö@"?ÊåTÞk9kgºʤ£Ív¦—hwºÊ$„2@;Ó Â둉ÆÔ‰íSL4¦x¬¢Ц‰ëüüRATðé.§ˆw¸èté $u¾lT…©T1ùEIµ@5D’eè´¬_cJƵ6Æ‹)T¬+Ê”¡HÍ©lI ”ñH#u@J.\äKS¤–‡—7Íž" 'ÊûЗ uñ`»Ljj€ àÁV¹ìP¤¾¿ñr. 0~¸DîEää-nû‹¸‘*¬yo%Šënl ”¯‰ä€Š×[åço"9 tž½SO»¦ vjZû-­ŒµœHȰJGÞ79˜5uà‰ÜçŸ4@H.ŸW3£ P Ã·XEùŒ ÖUõ"F¿E}7JYåzîq ¾¹?v/ø²öço ]O€¾~ùgS×ü×_ImyÜpW8Zˆ-ådri»¾¾ëÿ'”ô¸J–“h¸ þõ•Ýô‚‘Ý´›þm’‡tøj…y”NØ=¼2Å·pW¸™×Â.7q/Ðôö#'Åê£xw9gFÛî7nKXîžyï&ƒÛ–é×÷8@ ýkùî¤Ó{Ýé­0Ò¿¾¾‚WV î  w…{Óè"ÐCã ªwñ>/ÐìºÙæ»Ë±óÆ]Ð~Ï­s Ëݳ ÐñÝÑ{¿ë×)a—s_áá¡ÑõV˜Gi“~„J·¸Õ8t•³ˆ°TÏæ]';š¯øîrŒ°ïs(#²ý$,wϺíÙPÿ·—^dùÜwûÔc.]a^8”6£)k …»Â‘8ÊYØrY0VâÝå /?Ö×@þ~ ŸzØ ºh2\·äa ]Á+#Pìq w…Ûj¡ü@ØB|w9táNh2èµ£‹c¨Aã¬ÇP¯5‚1ô7¼2m ¥W¦B×rÙ*l€Ò>i€ \>¯fF Ò‰*}RS~¢ñðÆr{&ʼn ž Î/ÙÕ‡BgëE¤`}HE5ÔIÁ ž^ÝNÅkÑ‹*¹¤dÑX'"}} ‚Rå$цH•×GÀ•SŒ´5/‰J½L“N§H“a¤¥ESFJM´:)µ9ë@¤Öˆ®AðVý¨€ÒÒD¤üaµÅå—òGÖN}3¡þ¼G†*Œ‰NVÄcŸœè4¯çX£™“hÅ+}âI­ Ú°v;/Rj\ ¶*@Y¾ÂU: C_²ƒ*PJ¨+«ÒâÚª1á.¬-ÿ”Zè~ w½Uˆ°õæ ÷–«ßA—Ãí–¶nju$ Ü[¿úÑÂ}±ž8ÜÔêX@,úrN‹…f¬-‡›Z ÷–ïOåv¹-»‘Z ÷–K¶PéÆ[chX~ po¹ú7åHùD³óËå•’”Ê+$)”W™h< î2@ºëçÿb ô¹1IEND®B`‚omniEvents-2_6_2/doc/doxygen/a00123.html0000644000076400001440000000611510303671737020056 0ustar alexusers00000000000000 OmniEvents: ProxyPullSupplier.cc File Reference

ProxyPullSupplier.cc File Reference

#include "ProxyPullSupplier.h"
#include "EventChannel.h"
#include "Orb.h"
#include "omniEventsLog.h"
#include "PersistNode.h"
#include <assert.h>

Include dependency graph for ProxyPullSupplier.cc:

Go to the source code of this file.

Namespaces

namespace  OmniEvents


Generated on Fri Aug 26 20:56:15 2005 for OmniEvents by  doxygen 1.4.3-20050530
omniEvents-2_6_2/doc/doxygen/a00255.png0000644000076400001440000000211510240666455017701 0ustar alexusers00000000000000‰PNG  IHDRÿ‡+W’U!PLTEþÿÿo___ßßß¿¿¿???ŸŸŸÿÿÿ}P¥tRNS@æØfÚIDATxœíÛMOÛ0`þB»pÚ¡ÇVÔÜ7©¹Žm"ÇuêT’ûVʱRçD“¦©ß_9;qJ'J>l'ÖŠ”@\õ}äR€Úôx  û øZZØ/gÅ ¯ ‰I.–B6ŸeµX;WÎþþ%˜;t®½Öøv‚M<Œ‚Y,]RØŽ¼ÄŽÚÄC0Si 0Ù””¶ŸJÚé«{PÒ ¶ÓÚÌ?ÂÁûc¥è<˜­Œ,¾üŠvêþ/Òø ¿,² P` @€U€²ÉâAõ×ËÐøPÔ¤ñ¡F|É€EÐ 8âKðÄ— à‰/P£ï5à‹/À_€7¾,w|Iþørñ¥DâK,„⋸>%Dã‹ê|õh XýÂáâH‰/(—)ßG*ÆUžk€40øtRmóönv["”d¿Yž« .@2N7€;z9Eàð .ÀÖ»#öd}Î 08sè£U÷(¹è(D£¤KÏa:,‡æ!?4û• Ô›Ìûs˜ø·x2+\ߌ? xÎz."—%GäñïñÙ§±íÐ<ä¯p5€ÁÖÔšÂ]àÁ©U YN‚Þ¡ i# ))ñúä‚]ä¦yÈOò:1JSHÌÈÃfì–•ò"r~$U@.$ØC’jwŒimI½H¾ýðp¾vV@É}D«`”VºÙ”Í«8„mÀ=T+t3>#÷¬2€»ÕÎP§"àpˆ–t­riðäÎzÁÈ&•pÇzÁ±“æUlÊýË‹ò^P3v¢’]Ï_ T Øý\4@``R:0¬30iFP% ŽeÄæÏ¥D§h„“T¢“4ÿÿ4(Ÿ¨Î¥™‘Ù"9³åí`_,˜`¡u¥ê.›K–¸(ܹÒ8 Ÿ—P ¨+¨Y RWÏ Ž"hP¯$ï ¨_MlãyS´çŸd7³‘©`ÓóWj€ì/ ÷rþÓaƒ&KöGò|s;€<í8]РY~ºÀ‘µv®ÙÒDô¬Aó€pеØéx{r‰­s¶tÑ,ZÐÉqvº<øAÏ̦!òòmþz¤®óÓùñ¯Î´ %ÀN@'ØÆ-Ò6. mà'¶û pÛ€õzºBt¼ô?»ÀkPõ• °—€Êã’¦&µ’hÀã_4‡TÿV^?ÝIEND®B`‚omniEvents-2_6_2/doc/doxygen/a00124.html0000644000076400001440000000670410303671737020063 0ustar alexusers00000000000000 OmniEvents: ProxyPullSupplier.h File Reference

ProxyPullSupplier.h File Reference

#include <iostream.h>
#include "ProxyManager.h"
#include "EventQueue.h"
#include "CosEventChannelAdmin.hh"

Include dependency graph for ProxyPullSupplier.h:

This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Namespaces

namespace  OmniEvents

Classes

class  OmniEvents::ProxyPullSupplierManager
class  OmniEvents::ProxyPullSupplier_i
 Servant for ProxyPullSupplier interface. More...


Generated on Fri Aug 26 20:56:15 2005 for OmniEvents by  doxygen 1.4.3-20050530
omniEvents-2_6_2/doc/doxygen/a00256.png0000644000076400001440000002061210240666455017704 0ustar alexusers00000000000000‰PNG  IHDR÷'îok§!PLTEþÿÿo___ßßß¿¿¿???ŸŸŸÿÿÿ}P¥tRNS@æØf IDATxœíO{ÚH¶Æç+°–N¦ó˜åÐm_i9¹7ó˜å½=q›eìt'^v›‰ÍrúÞxìÝXƶX ªOy«ô$! •tNç±@%åçÃQ©têÕI—þýÝ{°Ç"øEð5ŠàkÁ×(‚¯Q_£¾F|"øEð5ŠàkÁ×(‚¯Q_£¾F|"øEð5ŠàkÁ×(‚¯Q_£¾F|"øµGð'­µÚºwÆÓžÀOçmû²Ö>ÀO'½áß|øÙ'ºñ7~~z™è¥ßlø[3»^úM†_ä ª•~sáìÏL4v{š _¢+©~3áËõâµÑo"|é(]ô›¿Ì¹«&úMƒ_rØ@ýfÁ/?b£…~ƒàW,ÓA¿1ð+Ôh ß øˆ!JõôìÚˆrúu‡ß‚¼*¢š~áO@É )e«-|” ±ðsUKøð!Jmâ©|ÜÚ¥‰§Vð½ªÜM(M<5ßRÀÝ—ÊÐßmø«"'u›Tú; ¢žùZ 7ºkðw ˜OÝÖwþD[¬'¤.ñìü‰þpJٞ臿SÜ=í |ˆjaDѪ¼K¥>L¥ê  æFQúáC¥‚/-¸Ž <|UyG|È I‚/'ÐÚ`xøªòŽø°}KøŠB_|è¢l‚_\àÓ|øÎç§~Λ¦/âÑòßšòçŠÃW”w”Ç?õQ¿ý~”ó¦Å¯âчÏz›¯ï|„‘3þ÷•©³;ñhe¾ž€¯&ï(†1jéÃ0Öe‡ìå¦ÇnŸûs»/7ÿkß³ÃG6°—?»²ŒÛ—“gìÞ>òU¦v‡ùì|”ãñêqz~Ô{˜ÙËr(à?.—ãé«ã?\O;³ó#ËèÝõî8üÎû»îÿòi>|œÑú5|ל-ž[øÁUÀ;üŸk./Gl>^Ž}Ç2ø †XèšâÃò7þå7’€¯&é«„t¥d•vÞ¼##à¿ÿ{ß°mþ™Úö ç‡oEM‡õQ^p¿ #¿/ÒŽD>sL‹-îÙ‡”Èÿ‰ù$á+É;êà£M7ºš¯¾‰œ/à–C·èß¾ËxŠ¿órþþ’çü þå7ÒløxS½#'Y¼·#àóÞÎìù·ï/㟠÷þð: ß5sz;Í‚ÅdZÛ„¯$é+‚Á>¼ìŽ0¶Ãú¿2‰\v§ÈÏl'3–jZ-Šü\½âI¾…•vTqUÀLøÉš6ñÁÏûÍ"ÁÏÐ#­ÈÇ[Bð³“tÒ»óÞ2ðŠ5·!öz‹ðá°Ï**ÄÔøÕ{™™E…¸æt úšØð+PN='.žúïœy¥´È‰¡þð«Ú°ä­L§öð«g~--ö ¢ºÃ¯”t¶¶¡÷Fê¿Êþo¦GgSsø‚s»uù¶ ªæðKï~RZ|ø βá—ÝûB3µðã²ÖðËm‹]“%ø¹*‡§¨ñz©Æ¥Tgø¥ö½ð¼ GÃ:Ã/ƒ§xÁÏS‰]—˜ªb¼·Æð¥CSj¦ÁÏ“ôžËõTÔuÔ¾,Éš?‚Ÿ#Ù—¡TRÅZWø²çW²£Ã?Grìå'Eo¶[¹PæQFðåb¦Ä0Äæ•jw6jv²¶- øR{]¢¼>åKðI~™‹?[2;]êBlʾ/‰À/é?Bð3U~Ù‚Ÿ©Âû\º¶àg©pà—fŸ¶>ï²÷b‹ìÌØxsÒogÿà—¯éɆou»Ñ…¿9WÝ“þ>Á/¸ËfÏæÀ/´¦6íü¤ªÔúåÂÿÖs,a±órÓ[<Ÿö™c·ìöù^,6;S»'àçÍ>ÏÙ¬ áÛãJu–¹ð—Ã奰ض;–GÕ蜱Gþ_"lvºW~Ž×NÞv` ¿PàW«qMÛÄê€Û·¾Ý ‹aÁÀ7]ÓtüßùS‹}ðó¼v5~Åúâlø"ç¿6˜áYìð‹>›_Ì5ßáwmûYÀÏóÚ T;øEv¸jmw>ü¯ÿ`¾ÅŽåp=ø#¶Šü1ëú‘Ÿíµ¨‰ð+×ÕçÀïvMwÀ|‹þÏùÕëjrø³üƒî…3Î÷Ú T;øÛ³Nõ9 ¹9¿3²Ðvçsß?ÉrÍ“«_Bø¼#üvšØÛÙ `rbÚBŒá…ºÁߺ¿syR¶QñðñϲÔ‡˜Gµ± #òd[rÞ Áß¶»0I4ÑJ«ºùE|ô¤¯>Ðlýx+Á‡‰àçÇrJˆ5&2øèy~^¨€¹TDÛYmàçÁ‡si§=ǨX«ü“ ¸ÿG¤%l줯>ûôû·6> ¦5÷ÎEÎ;ð32‚&OÕøÿ‡ÕF0;E|ÐünDÉ »k?#aÿmŒF·m Iøð=ÛyÛîß>0&¿9U7M­9|èÝogo C¨„ŸŠÜx´¹)Õ>ôÎO²7…"Ô-!ÃïúQ–up7?e7áãf‚Óì– " >|ØLpšÍâÆPá#œ…ª‡ú˜ð1v»ÔnŽð2àào"ÁP ðñ>hˆðQµ™â¬Ãÿ؈ðQµÕ>Þ_>Jªœ¤l_X[„ƒŸœžlnH…6‰gu¤|†ÖáÁ‚ôIÕ’òù6«Õ¥jŒ)<ÛZ?»¦­‚ áOr~ÓDOà× >RxütM2”¦¬S/øX„Úz¿V𱆢&šçáG¨ E§®ÀàÛE½”\Ûmm >Ztj†_ØKÉívÍà—…¹ñz øh€´e~|a¶—’»&î*†ß¼À_Ã/æ¥$ˆ/o®… ÁÍ@<ŽÌ0ų•çüþ~1/%ßíÍÎ{®9=?ê=õOÙ;&~_9,áÀG4Ñøën1/%~Àí8Ì8îÏûbÙ|8b‹þ5ÿž÷WKð×\³Ž®ÀäüB^J"òç?â`ü `±éÛ±—ÿ×Ç øˆYG[àGàòRòÒNßå‘ïG¾ÅæWù÷+‡%øx{¿ù\­ºšÅ¼”|ø'ßólïç|þg{î/güÙÊa >bàka?iyòžÛŽ”›=¿ò7~ùogoøû°z;èðÛJæ… ˜·#€á…×É€ðÛ‰ŸÐj)Jø“(ó•ªÃwÉ%ðð±Mpþ*Ð3,«ªÃ?ë%—ÀÃG |Œ†[[¯µã£š¸ðã¾9ŠR-àofJW÷C°_§ùCw-àoBo,)ªÈšå;:“â©%O» ?sªTEø^Ì—ºSuâí%|áÚ(aš ç)íÂÔI%Ó*(ü”ÿq%ø&ko㸭ŸXYhÝÜ]†?Ùrx„M-™ÂÛ$üì[:”Ñ8ƒ=z '„8¬±»ðÿaI抯„9¤ ? ‹ßµíÇØRçóS?yÏ.#z'Ÿ–>à¡çÁo¯òá¯K)„æñÛïGÛàusÂJ„ŸmlŸ¨ŸpÍÆ F¾VøÈÃØÊà_0ÜÚ^yÅÍ`ÀX×y¹é‰ú ±„?¾xêià×ÄÚ±Í2ÕVðoÙWQW!Ê+Ä•NŽY[ôøo| * 2 idÍã0pB¿n©¾m\ó³ØWq©-€/®‚z•¢à†¿4²¦V¡è”EþôíØ±íg>O;ïyv·æ?†ð Ûú9WàãèààçMyåsŸ:œgׇÏ¸ß Ìnß]E¾(½‹Â×ó\·Ä„ÏOÚaW³Ëžû<ç_ø°_y]Mÿ$„/ 2 v¿†ÿ/½ðUªÀÀOîq sþ{ãÝŠS þ6 N²,Q_À? ¬ÓÎD+|Û…ƒŸÜ[?e–ÏÜe¯:ÁHÉv±àO*ßÌD[Ú){ýF^HðW³rä+/a£èó?>tE¬ÂrH¿Â~•?Ò(«ÈÅ¿ŽÖ*SÊWTÊT‡?B«ÒeDü¤­0óOTf`à·3§‚V»€îGý$¼š¢€ŠÒOüØ!²béˆ"¤ÿ'P›æàÇàT*­`÷xg‚Ç_Ñ%ùPðð1º Éþfø+¢ ´u<©ú&¢­AÁGž—Ê£â=ˆS´5IVjÕ¾ÃG2¶K?ׂv®9|¬ÒvöEJ@Õ~¤›v(L­$øQøx'æØ’¬tÕ>b'-m:"ÁXR`ŽH¥MÄ•¬‡ã=½~JËkזȹEº2Zí%—f:½ ÂG=;I9æJÖÃEÜŠ~‹½k/ï w³ÕÙ†’·OMƒŸú’õp·"+öB¤½IîðBZÚIz ¥ìSd€ÂÇOq¾¬‡\nŸï§vgñÜ”Oÿ»ãXLø…ímÛñáóUÛ—“Ѳßêzû¼åÛç¾W,cwØáµ†Cû®{á~œg—ž_QÐÞ¶5>_ÕèÝõîDËÁŸt½}‹½,‡bŸø»fçGüU¾=ásä­Z[ø›y'<ଇE¦c Ã!Q/qêöÙ`qï½Ëo¯µMþðU fx%Ë?ŒG¶Ïá³ÀZçtÑçûÁøö„Ï‘·*|ì«o›ygùÅêáDŒ¾ÿ`‰¢FÅàk¾6˜g´W(òŪø¢¹Èö-öþï"í°¼£Àê€_Í”6¼¦Vð‹Õà L#f Ã!?òMvú—|¼4{ü´|Ñjdûëûi'ù? Ÿ#oÕúÂßý°«Y°΃?³„áŸóMæØ}¾=Sëœ/ººëí[lÄáóeAÎ_òœ/žô¼U±àã_óÏ€_¼Ž¿ûäêÑûøìõvL6 ~QøN²Do'–ó;‘íöz;¶}ôv<$¼ÞÎ$£^^ɼS}xaÚ“jOrƒK3y¾_ÁÅ·¤­iuøÇ±ñhøÓó?wâKj ?ékZþ<>*>°vø”8ÕÅ€ßV’uàá'TÃQMuð“y‡àçXJê-~RJáǶCð}"j*{'?!µð£ª^Ã×ÖJÁꛈ¶V3øÈš¨ _Ñ.#\jW«éŸ`5¾Ú0ðÕÝQû}u+Ÿ¤^^Eö8Æ–ñ|XÕ>zèc¶UÝà£dˆ©ªèÀo§W“!©Í/­ZÍÃU9ôYf «‡\–(êâ½ ~¦ƒ'°Tü‡~ÖvüªÃWz‚›ãÚŒ³!TÁWçN‘i®:x¬i¯ä“†N¿®ð•l›~]á«9È켯wʩБ( ®f‹»ndÝV:´³y5ý«·p×_‘ùæ• øê®{FìMÔlÞ^c¥ÊðývðUÑßá»i„ïSq«—sxÊ)É™dfþJÍÂÀWzkøè¦¨»·åÖCe]ÝÚ^DÕ\ø¢7¢~V·gà«4Mü[jwÇÔà× _uOsãCµííS zö ~r[ŠÒŽ¿í$‚£‚Èñ™¢úá+«’õ”ß¶b³Ÿxô•øéŒ ö盫èK†ÁÒT¼ú;þñ•ÒÆ„ïwvô÷ºï;±¥Ý>ˆŸþ‡økÆ,µ]™ÒûU5s|¥´†÷>‹ÏxuM?ü1s†‘—Ò_~ÞC1ÏkdøêªdÃ-Æ´†?°Ã‡åpvyÀS ‡/f¡ ø/ÁMˆ^n:îíƒH;S»Çø»£SÃËM:ñVò½wnŸï ÏÚ§x³Uá·wþÑåSz~Ô{}lž²w®éü¿}ú݃ÿÔ½rÏ{þA÷Š=õcF8Uà{Þ;Â{Ç»¿]áf૚ ÙdTá÷Éñd3_³EÿšpÏCøìÇÏ¿CŸ‘ùО _Ù(n„S¾÷Ït<K¢Ù¦À÷T0ujFÞ)?œŽRŽCE7­f„~yøíÒY'ÿ&lÅš¨¸þn¨|?ä%1«±+°u€6´«4|o’˜\±xÆúeáûôZ…gcA‚÷ÚlK›ÊÂ÷I¶ZE @ƒ÷Ô„¼#? yVèȉÞk£QÅ’†ï͆xnƒê ݀З†/x†Hó Ñmqú²ðc#íYÃjüˆëú²ðc²ÓÆÞÕA«ò½À“$üÉüvâU°=+°3 ·…¢*ðhL“¡º‡¾$üØ’£¿(½ÑK¨º‡¾üI”÷êÅÙ&¢ðï]±|¤TÕ€äà·6R¾Ú{%†~Å©ZÀŸ®¶b9H‚­ïüxk{!ëõ†_&Sî|¿³¿ðâ°Yqù&wÕÚ¨'ü]€ÉÁ/¯Vˇï¼yîE;Vuú"-ÿ—”9q¿ŠüNÏ·W¾ÇN gÜ ž-~üSœÚÂ߉á-7|<Ž,\ðœÝ‰G+sõ]€ÏØòf…vèÿ˜ÙöÂ6ö_{vcðÕè¤)€/’ŠkŠiæ/7‘v™{Ú?à¯^Y¾/ÎÚGÌ÷´ ð_>Þ­à?Їc›ÝäÂß°ÛÓ#þòæ“éÁ??î=u¯8üé«ãžû‘]O;³ó#Ë÷ÅY›âð/õ€!kK–gyðÕõó[ùòß4÷âÁ7çC‹rø®¹¼tûóñr¼è ;ÿ_hŠÃ¿üõvþ ;±¿½r>íWιóyqÄ¿°»§w#^³Ÿ§æI_þ$k Ãmt³D>c·|žîÇÌàð ž>……ýâš,ߊvþàìŸ_¾·çŸ§ÆÐæ {ñŠ/þ¿/?þ×—þxÍ~^>±»g5ÃÒ r¾)EŒhä3‡ÿ¶¸gR"ÿ'þ対 ðùçöfaÿÉþfOÅw*þ ë„?ØçGöÐ{Í~^„yHÕ‚òáO?|pû‡¦0Õyê^x9ÿ¨çšgŒÝy9 ß3Åá_þê»!ܯ˜Ã~ü§þÀA?-<Íöø‹xMäüEJäëUp†û×çÎìù.ÖÛyàŸ‡Ñ:¼ŽÂ÷Lqv«·Ã¿]û ÿùY¤Ï^Ú±ÿ¹Š|ñZ¾Ên¾âà K˜lnÓ®Àÿç—ùÏoþ7þ0’ó´cðw««ª¶ðydžÿ z;Ÿû<ñ<½Î÷ZþNᆦ:™Õw¾¤ØN ){Ú¿QÍÖÎp˪†ð'¿¢ª¤Éôð}í!üôbMÚGø~Uìü ê]4U>[§éñ×JU¯dE‰§ñ/“jþûzUaú¿óqÜüËfc(ç´Vøé=X1-ÁÏSבÜÃl«šß+ÁÏ×Ö^ŽàOðsTÅiªÀnés0‚¿Eů®Ê‹àoQ‘á…àêjp³‚¿M"ïl™ŽÂw~öK÷Üû[gÌxäÿ‡¨g:?úÏó#K¼¯à#øÛäÍ-”ómûÜ/Ýsïõ]y•}_úŽ%^‹Wðü­jµ'[n>¿J;ÌðJ÷æ¿|tÆüAp?3Lƒ9¶(äã¯Å+øþVµDñBnè¯áû¥{sÆÓ𧇫Èç¯Å+ø~µò'á¯áû¥{n_äü¾Ÿý*çõâ|¿ˆ Ã÷K÷–AoçÛˆ/;ñ{;×–ÿõvdµ%ïÐðBŽ àç…>ÁÏQeøâ‚VNèü|ª??ïüU‡Ÿt‚Ÿ#ø¹y‡àçþ$ÏìŒàç~^Ò§¢©ÀÏOú¤lAÀoÕßdQ à òú%Dð5 ¾ Oy§„ àSè—|Q>BðåÂ(ï”Á×(0ø”wäßO¡/-8øúÒ„O¡/+øiI[ '¬wê$Hø”x$?¤N¡/% øíøOR!Á§Ä#%`ø”xd Ÿ„€à¯Ó Ñ/. ø­èóþ²e#t@) |›» þŠô~1ŧB‡ô ~¾Pà‡ô ~¾pà‰Ÿàç þFG?ÁÏ|AŸàç >§ïÓ³í3ºÜ½dìs‘F ~1¥š‡]«û¾]ìZÌ)TNð‹)Ýùŧg%îãà^°E¾üöø£;|Xg—Ì0¾²owlys-î“'~LŸïÌ©ÝsOûÂrGÌF®Þ`)tùÔŸžõ^›§ìk˜†ÁÜÞ™¸Ožøñ®ûÙ<è^¹=ËÙ¹ðÞY¯Þ`)€oÛO戉;‡_³EÿÚýsïs˜aZÌ?ÞÓ¯nß³ÜYôçýèê –’Èß÷x6fÓ·c÷‡ËO›ÿ|(àû?Ü®¸”é½×5ã«7XPðS/aEá{‘ÁæW×yÚ黾ø!"̺®o¹Ã#ÿ>ºzƒ¥ ¾ÈùŸŒ>{æ´ßtüþ‰éçü ×ô,wfüÑÕ,eðy'fv¹²7ü3pvo°Ùó»!‡/~ø½Žg>E½yåÁëõæ¢ßÓn Ÿ±z£?툛BÏl.û®{Ú(Á/¦ÂðÏz›Ë¦öyj£¿˜ ×Á/&‚_F`ðÓŽ¸?_`g¸_^_£àÆvR’>Må >)_pð©:\Z€CÊú²"øŸòެ¾FA^F¤¼#)ÈBY }IV)Sèˉàk(|Ê;r‚A¡/%XøúR"ø<'‹òŽŒ€áSèËê wã i» áSèK>…¾„ÀáSè8| ý₟þO¡_XÞ ­Ê5#ûRB‚a|Ñ.w"øùŠ›¥O‰.-‚Ÿ«d™,E~!|"øå¥Ïò¿á»¶ý*¶44Þ1œ1;²?nàç*~÷‡±¥¡ñ‡ï\uOúE['ø¹J‡o&æ×†Æ;þ´ÃøWAü\eÂwOûS»sËÞM;Ž%à|1‡¿è3Ç›u~ûÈ–7þG±ŒÛ—“¶W¾;¨ðŸÝì»îÅôíoóáìRïð½»lóWÜÎsïo=ø½»ÞÛ+ß(øñ¾fxÀ=wû<Ùœ:_îÙ`q/Œw¢ðù+ÂoÁ½g|&þí•ï&|Ó‹þ1GzÂØkÃsÀX§ù9EÀŸÿòqßÙ+ßtø^äÿ½ÇNÿÀ7Ìà€{Dþœñ´ã‘¿W¾;øðyfÿöûˆ¹¾Û?ð_yWSä|‘vú·l4 àï•ïØâbGÜ(|ÞqyÇnÙtèÁŸ=ß™áIVà±Ã{;ìä:€¿W¾;ˆðãšöJ·NðsUþqáÚ ü\m‡?,ß:ÁÏUr:jÁ×(‚¯Qp7#Ž&}‚_H_£pn@OES…„ŸTH€7 § YY§ЗÁ×(@ø”wd ŸB_R_£ áSÞ‘Á×(Pø”wä ŸB_N°ð)ô¥ ŸB_J_£€áSÞ‘0| }AçЗ4| } çÐ/.‚¯QP%âkQÞ),xøú…Ÿµ` G\<‚!ñü¥L ÁÏÁ/%xwA‚_X_£¾F¡ÁÏtÛaÌ7#!ÇDøYn;̇OŽ;˜ð³Üv˜ŸwÀàoÎÈÊtÛYÞ ŒÛG:î°—›^Òq‡{ḃ?Ãmǽ¿5„ËŽx•=ÌÇIÇöÔß Ç<øYn;î=3„Ý…x•[IÇ6ÚÇÌ´“î¶3ÿ壸:îøIÇñÞ}pÜ‚¿91ÓmgÎnüÐqǃŸpÜïÝÇlø›n;n߃:îxi'á¸Ã¬ýpÜ‚Í;ùn;¢·#^ wü¤ãÿsì…ãü¸*¸íd´ØAÁæX·Œ› 5ð«¸í¤·ØÁäÕ,(‚¯Q`ð#y‡àÁ×(8øë¼Cð >M|*Ò”Á×(@øT!++‚¯Q€ð)ïÈ >…¾¤ áSèKŠàk(|Ê;r…O¡/'XøúR"ø ŸòŽ”€áSèË>…¾Œ áSèKˆàk4|Ê;‡O¡_\àð)ô‹‹àk<|Ê;…ŸµÚbBœÀwpg„Ÿ'°5ȶvLð'm‚_HðY‹à üÉ#ø’‚ìñ|IQÚ)$LøÛ,wœ7ϽȫÂ#³­F þËo¯b¯;ãYv[*ü-–;ü]Ç‘Wô*|‚/©5ü<Ë÷Þ#n¹·ŒÒ^а IDAT‹×¦v¯!¦ž‹è‘¶)\øù–;Ë›O¦ÿü¸Ç¿ßŽ…ñÂ_Cí¼ë^EÛj¤¸¹–;lþîŃo·üû·±g¶Ã×F;ö·h[rÚɵÜY2æ9L¹<ùðokì™íðµÄŠV¼­F ~¶åŽ8&ŸHäY—/F;öS´­FJüLËé€w5GSžóxÎ?òsþÿD£wÝ‹h[”øÙ–;}îŸXo§#>ÔÛ© 4`Ù–;Fð]¼­†HülË‚ª`9–;Óà»p[MjjÁ×(‚¯Q_£¾F!Á§¢©"ÂO*$‚¯Q_£¾F|ú÷ÿÓ]y+BÃDIEND®B`‚omniEvents-2_6_2/doc/doxygen/a00257.png0000644000076400001440000001221710240666456017710 0ustar alexusers00000000000000‰PNG  IHDR¿«¢z„Ì'PLTEþÿÿGGGo___ßßß¿¿¿???ŸŸŸÿÿÿ4ƒctRNS@æØfIDATxœíOwÛÆÕ‡û!úM¸È¢\Ú:ñ¡¶uÜW\¦4]bÙ¦V„¥-Å‘V=••˜\&­yÌ]DP$°è9 @‘3ê ƒ`€àç„A`„‡÷Θ¹sñØlýïUbµ€uW Xwµ€uWQxãZæÙ®ÔP- ¿] ¨¡~'€Þ‹e?î[Ï mW_À§“×ï¾ÚÍD¯o¿jà ½ô朿í{Öt9Ó9ßAo5îsÛÕp7þÑXŸ¼éƒ«Ýdw3ß8àô‚Xð~ãpÛÕn^­€±»&´žf†gÿƒž-n»úî œŽl{‚˜žàÛw Ó@Ä2ÐÃLŸ Ø8ÀõÝëwë“a1;¸xd€»ÆÂ¿,Oaï[r=g·0ÞÓ ˜m»PCµ€üv- †jùíjØAʸiý;TjlǯKsíSCÀ|ûÔ øh7ß.õ̹K­;nnÖ °ƒ+aÞjØaÿçS}]ü’×Akèæg#ª  (_]…ùê(ÌWÀüg Zà« [„¯€âí ‘ö€¹/>#Ò°˜{bé XÐ=±tt‹º'–ZÀÌq1úMžrÀûJÁ«;àæŸ1 o¢/ s|¸9¾®,¤0E- ÔжïÐÚ¯öKé€ôN@kðö4´Ö‚ž°Gf@B¨ âHÖ¾‡…-HC0[ƒ¼U¸¸ƒ½ûÝäñæ>ç/p7þWã>~[/¿k»ÎM8šÎÙ¾G;`·J‡7æúrØþÆ8‡¯ÀÈ è_Àûƒß^ ®gƒ[p…,xzá#¤^ÊÐ4 ³ßáÀQôŠUI#ó`,м™¼ù·æ'ðmÿ—ôàȰ …ßîÈâg`"@ƒ:l¸3N]6ØKaÀlJGª-ò?Br¸~é€×7?Žà懤o``ÛK|„#¦”°Ó¿2ƒ$p”îX ±à{¸¹=ÆÂA &À€ø [Ѓì€0dÁ͇+8J>…7,×ÁG&\"¢§ðŒž´¾GfÈØe08e£ôSHå¢Vôñf7/ÂÅl—¯&¿ÑVôÇCfÄm«ƒæ”ŽB¨Á¥ÚóÃUÿáN²_ÉVô>-¸uJôî×}=xv¸²F×¢!]ÄÌÇYÛ—‡+ë ˜Y- ÔÐ-°oÝ?Ø9S¯Úñu*ÝNÀ,ý¾Õ¢ Æ"=ÛN†q—JÝüqeÑŽÚ°ÊŽ_7``Tâƒgê]ÈÇu ª]=”+a„P© —Ò)v*ÅRV%x($'Â?“ÊFF ¶_1B•€2ŠÁ?’žq2]m<«‚:F:¹²Æ »Á‹˜J,¨ÀÉB ¤¿$ñßK 4úE Wú *”ç¡AY‚„j%p_˜aÅÜB  LÝ—&t²P(Õ€ÜÏ%BXÀ}q„Jåz(ÿ{¹¹¯ÜêÈ—Gó܈©”ì¡á æºÓ 0!ê€/Ý_×exØu¨`r?•ž¼Ë:ìÌ䢸Î_€U0½‹Ê oú$ëx¼ÿ-(‘@2¯­ 0Ÿ‡fê] ýd~½¬`Öö0\dî”(M³OüéV ˜ñ¨sÍk mÓÈ„ã5uÌ9m'H>ú€[½„c7*Ì=+)nsÐâ¤0CÌß©W(ÜïÆwàü;gí}b9ñªéòN³)0À•çÜoœÇË¡€Bc2)€ÈEé9´¶¦W= èˆE̯B7®p"D•± ÀôPkÑ[ÅD@8 K²` B§$@`îKªƒÉ€EÆÛcßoEŸ °¤V4‘¢P‹þqyCM]=@£‡ 3äI‹!ìÈ1H 9¤rõB„Ô±P=ÂHº)ŸŠI¬»C- LvÄJS (ëHÊ‚bþ P&_W°<•€2Ô‹Í]¦J@‰ìø%VŸg{ èŸMÝüÉòj\-LÙS(ÍC÷LÍäæì©”塟ȤDíùbâÖ2HwÀðÅPó£™ßGµŒOl`,JÞy‰ê…²Àäá`·“Ö!–Y “°aš@Z¨PŽ›0}S+ZJŸýá–z¦×ߦ'Úiù-[À¼Š¶}l‚=@?ˆ„dá-Avµ@vâ0CÛj«Ð_ €ƒ×ïöÛô!cVn@.ö‘­Û›UhDr`€¯ó‹ƄÃVØ›CpþýøÎshë­îÝÃÞ­…¿ƒûô°É€øB¹(Ú“…Úk›dšMWg+ˆƒcKô~ IN¯Àlê94Œõo`¬/‡¾Zø;.=l`§Kq¶K qzÙþõ¿ô¿ ÀûS: m_’$§&˜A ˆ]Ô¸Å/›ŸMÏÂßqéaS’Ãú·#œ¯”…Ã"ÿŒ3ÍŽ þ=Ë÷y€ûk¨‹BšätóáÊsXë>&Ï6 …¿ã²§f± Î8ë‡ÃÚögšõ2ƒ…&9Ý@ä¢,ŒuÝ ,ˆ¾ËØõë ¶ +âô²&¨&9&®ƒ,ŒÕÞ×Áa—¶_i9§—5Ïà¬À .€¸ÙCuµ¢8ŒžÑVô“E¿; ö¾%å¬íSœi–ZUæ”Æ—j¿À}kÚÆ•’Ú+¡ PèH%Ô ¾"ìtJùV@:V"XSz?u$íèÅ¿h#“L¨ ìîøM¨†nç«*;~`à¡Å‹ ­Ê?¼$°Ë½<ŒÌ<:_"FjƒÜ "çˆ@&Ôa”ìNPÝ]À€ŠI”ðÈÈþ"µZ`WB4lÄIE*µ@?¯kQFb;P R«”c‘w“À®¼( nhIƒ¨{(7*V'ô)»$ºìE–÷3zD÷W(=½¨xp´ À®ôô¢úäøegx™ELx¯P¦Q™…‚÷v%§þ+vÁ§P®;Å~/¹€äF^®'¼’(×€…/i¥J5 ÈÓ°+·‰éðý‚’ (óL)RˆT@7lÀ"•Bêpņ•µ×P`‡7`‘g×A~Ô&ê{~I>©€Ýð}DÃ7‚Ò£>Z éªh`¤«B`ÔG«ìF~ë¦F è9èÔ1?Xm…6ñ—bÙ|\ÄÆ>ªQ2 {ð ² öÁ``pŸ·äÃQÀ``œ %!5[¾0*U€n÷ ¯)ÎE#áôc@Ò3ºŒ‰Uèv; `ïÞ[µg`:G.ŠŽè©ï‘ÑÕ¸?¾ÃÏy¶ÈV?› ö䇆ý¾5.›Óønº4I´(*j7þDÿt*°Ó×Dח×óÝ|ç€Ó ¸›ìnp€èý}³)Ä‘gø¡æ\°g 7Æj7ÁÑ¢$µá‘?ÂJìÄõ5Q@`l>:žƒÙÀ72 h=Íp€(I fÄEqì ~,=ìy$`’ÀhåÁÑ€ü.èT& ½-^QQÀ:fÿñç#Ù½ ÚËñ–X°7´ßÕÕÁÅ‹'ÛÚÛÕß0àœη´ÞmíZDuðð·‚“°²KàÏ¢ÆñûÄ^ìíÃöÿúDo´Ý!o£­¨HæO O+ˆ9Û­ÎVÝã šr˜¾˜WùÃDÀׇÌ矾¤RÉè1LT~&><ÆÌ6ãã€T"Sý²Hpö™¢» WfÞÒJ¸]’‹™×IK»”†)4‡·´^WBDŒmÒúC+d*„évÙ¨Ý&aƒÐzcô¢}²"ÓâÉ~lªki€ÅúyóWNÿ²©<ÀŸÝÑÉnPMR`t€·ˆÒ£Û” ({FV &óê‹NK)8ÎqÙʯöQèJžSwP~Èox±@±“åã*½â)ªœôP¾KtU´3‰â]”¦….g`zO¿UXª !ߊҴ°ó.ßÐ`h5€®ÜÙóéâ¯dhJJg™ÝLÈ5€á‰gŠEO<àÛw8 +½ìWè–é£D<à*·`©>J|´ÀåPe,>!<·xÀ³ÛŠ[Q2{°\F΃£Øõr'g5Pr’£Š®c×Ëœ?Ø‘úLÅã*õR «+1—S•è6Pj¶ªã*°ìJX `™>š£g[’¦)k é€e_q“Üt+%ûhIÔÍGåjfBÉ9°ùô2a ˜KP/• H2ÇÉ,±°$§þ+žM¶TjeB€Z™Pv†X¦“ •êdB5€™P  F&Tô@rÆ{³H >N*0 ÐÅ„ÊuqRe€º8©:@MœT! Nª0&QnX-ŒÏ‰ÞB%àa i„`LV‹H·ª§×1E›Í,úÔ@@?o]ÝD@µCCwš HçBy€| ¹°*ÄAP4ºŒB Iz1wµO—Ë; å›S {…æO Þ¿/Œâ€„>â×­A¿©Ð'$ëSü_qÀýƒÍÉšPFýJäcË·&ÜLÀùw«ñ)Ÿ°6? Ÿ ¹(ɆK¿©¹(NÖå€+ïaðŽOX+ÈR©"@’ —~S yãMÏ‚ç|ÂÚŽˆº>`y.šz—D©‹¨Žø|®…,H²áÒoª$ ¤,¸?M˜å¹èq@rš@€ƒ÷»"€øÍ\èHNôµ¢|ÂZñ+ÚŠ>±Ü÷æÿ.QUܦu6µ€yÕ¶€y•2ÚæU%€)>ÚxÀtüÊ{ ¶$©èøÕbLÂW ˜SÚ«µ€9ņ­ZÀœrƒM¤f|P#¶€9år¯ZHѶ>&lsÊ ½i UQÚ˜P 6&T'£‹ •êbBu‘Nj“ýf–ÂP.=œT! N*·›&T  JœõÎ)¦›³¨T†4)o¯º†ZÒFòŸš èî'ž7&GHÍ©Ì«Ž€°ËB> HƒES½ý¸R-ÓS¬`ÌZZºS«9€ôœ8]Îðã½§Ksm÷áâ_Kz«qŸmYg@æ¢8ÑélŠã;Ÿ n჉-x¿ñmX[@üJq¢ÓÄñüŒ“f"@Ë@{-ï!(àÛwÖæÃ|ûÓw¶½„«ƒ D6ÛÀ)Žïtà ‘€0§8¾óÙà=œ5 ðìöCЊž"°kÓj`ºj˜ÔÓÂPDò“*a ë˜à£- ¬ `‚6¥ãjÒeïK £.L*µ2a ("|´’F>Ú I#U¨‘ êcBE€ú˜°”6>ª P*ÔÅ„Êu1¡:@ML¨P¶€âÒÃGêaB•€a6¨Û0P8 6Ãuld@lHM ˆ ‹8i³âEⱊŠ<\²©€°ÓåŸ\®ZúIì˜VéÓã½ÕøW{{sá‚ó?‘A7­' ‹‡ý /{óÝ|ç¬OÞ¼¤ —Ã>¸:‡¯Ø¦µ$ç ÏÁÿ€±»d › 0·æ'¶i=™¨‹®‘m¤ C®_Ö)â7Q €Þ`oAcs{ʶi àúdø’.à:hÀ¥Ö@Ôx 8¿è ›úÆë¹¿ÐP@ïÎ_j(à…?/¤©€{µ€ùÕJS ëØÀŽ_ÔÖ]-`Ýõ¿ÿ>)uÕ 'IEND®B`‚omniEvents-2_6_2/doc/doxygen/a00125.html0000644000076400001440000000570010303671737020057 0ustar alexusers00000000000000 OmniEvents: ProxyPushConsumer.cc File Reference

ProxyPushConsumer.cc File Reference

#include "ProxyPushConsumer.h"
#include "ConsumerAdmin.h"
#include "Orb.h"
#include "omniEventsLog.h"
#include "PersistNode.h"
#include <assert.h>

Include dependency graph for ProxyPushConsumer.cc:

Go to the source code of this file.

Namespaces

namespace  OmniEvents


Generated on Fri Aug 26 20:56:15 2005 for OmniEvents by  doxygen 1.4.3-20050530
omniEvents-2_6_2/doc/doxygen/a00258.png0000644000076400001440000000306510240666456017712 0ustar alexusers00000000000000‰PNG  IHDR ·Ø}¢!PLTEþÿÿo___ßßß¿¿¿???ŸŸŸÿÿÿhßEàtRNS@æØfÂIDATxœíÜÁwšHðþ öâ±/m6ž·Ý§ÇÔ—]86­yrl²»%lj…k²5ñVEaæ¦Á¾¿rdLafx __Ÿ¨¤üúÍ føF^A)â•lŠŠŠŒÏŒÐÄ3´Ÿ¿V1*FÅ(%£W†%™1°µ9jÝÛš\†ã™¯ÛgÒ³áù.ѹø„-¡y&†¶tÆ„ôc ŒYF=|Ž”èÂGÊ’!û,JÒOæQ“HfÌ¢Ž!™Q'Žô!3j$ŒCŠe«2aê¬CŠdÌbÛ§Kõl»sbÔ2îχ1ûù.ÉàÃÈØ$œ™“Á‡‘9\Yû'pado.ŒìMƒ‘'y’Q<#W2ŠgäJFáŒ|É(œ‘/E3r&ã™2r¶IÁŒ¼É(˜‘7Ï’‘»M¸3¬ÙAz’P(ƒÑ&‹vçÄ`µ‰«ƒ¾Xsœˆg0OÂì“F‚¡Èg:Ê­ûD¾bXé÷„3ö‘­MÎ0†¹}£òclù<¡ Ç3-˜jŠßèÂû¶Î‘±åÃ5bF™€â«¾z ?ƶé3et.4+€„ |n F“Ðk¢”¡‘F±øgƒÑ$ô²=eLb Ž}ƒÕ$Q#ÜØš®E ~#…9J¨"}2¿ZL fÌX£¤o”x¼m¿æÃØT„  åƒ4cŽN¸06:Ʋ¶FËÂ>a#*]ÐMÉX7Él™ú D2Vÿû„a‚3*¨Õ¶œÍ31PîÀ°U@Y¦Kù?r\fÄÓ³Q1^À3Gè"¤m9ºÉqßÿë&Á¸Gö¶<ñd ÛO0ÑXF6ÆÝz#eܽF¦ùMh¤î£¹Ú$ŽÛ0hâ™;·üçÝ…î7/{Æ z‡MÃ4nž"o꓇w}͸îÀ 7§¼Á™×¸Cؘ*½}déûø[óWÙÈ4îÑ=y87ß`=`Øà– ò78°?ö‘ó»/ºM4ý<$ ú€û.Yâ˳qˆ¦n°qç‡Ó1a’ õ…0HßøhêÈ Ž{uC-Êh´obcÄŸŒ”qw¤ «à@§{&»ï”€AèH ²„ ŽŒd\¦_Ú]Ÿ.VÁ™a¤_û¯-šqÚL¿æÀ‘hÆc£$Œì_ÈE30D³Äuä_*ð$‰8d–{áÄ“á\¥¾Ú‚‡gM—–Û@AÍ“’±(€‘žÏG«33Ò—½¨C4cóZO´t÷ÁŒÍº\A,š±Ñ=¢Ž*ºQRŽõ?ü¦¶ý‡”øžÜ®‹Òl´¢g=! ÆUâd£0ª)<éÏ‘¨QÈBû¨š{ã`sè:Æ%ŒÁ¸pF:ãmûxYM™ïüÑ/°;öÆ^Ðg”F·xF*£e5ÅW½SÕµ\Lþ 5*hÉH¥ƒ2,ôe5%˜Wt¾¬Àƒ±™ŽX6¢jŠ®:9 Ò7¢jÊ|ç 5¹'Æf«$FJXM½4Ïþ¡ _åÄØH‡„“9d:^:#Ù*ÒÉtÈc$Òñâ‰V‘Ȉ§Cìti+#[<Ç¥‰ea”dÙjIñ–eIsIÖ™—eÕ}I¾ƒP–od”äû)a:Êð½¶zŽK’\¾ÉU Ô³_ÀæÁؼzý²ëHgdL‘RÆên’´YJÀ Ln_çg®Þd_<¶&Y1*†TƾqÆ|WIîÇ›ñ¥Ýi¤Þê g`pÍÔ[–p†dIw &çÇ üi|Çïùµª¦ˆa ¦W@nó5ÕðÝoua´Àa6–ÕA#åP’Û|‘rÊW•\Ä·bÕ1Œ!x=z›¯ùoxñ÷ÞŠB¸˜ÞæËûÚð5_c÷S§ÝæËÖ|­1†‚·Æ¿@j*cní÷aG×,ÁŒGîW1*FŨðø%mœ™¢bÄ£bÄã«kÕpÀ{çIEND®B`‚omniEvents-2_6_2/doc/doxygen/a00126.html0000644000076400001440000000650710303671737020066 0ustar alexusers00000000000000 OmniEvents: ProxyPushConsumer.h File Reference

ProxyPushConsumer.h File Reference

#include <string>
#include <map>
#include <list>
#include <iostream.h>
#include "Callback.h"
#include "Servant.h"
#include "CosEventChannelAdmin.hh"

Include dependency graph for ProxyPushConsumer.h:

This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Namespaces

namespace  OmniEvents

Classes

class  OmniEvents::ProxyPushConsumer_i
 Default servant for ProxyPushConsumer objects. More...
struct  OmniEvents::ProxyPushConsumer_i::Connection


Generated on Fri Aug 26 20:56:15 2005 for OmniEvents by  doxygen 1.4.3-20050530
omniEvents-2_6_2/doc/doxygen/a00259.png0000644000076400001440000000733310240666457017716 0ustar alexusers00000000000000‰PNG  IHDRó2C¢v!PLTEþÿÿo___ßßß¿¿¿???ŸŸŸÿÿÿhßEàtRNS@æØfhIDATxœíMwÚH†óXv–Ž»3f9'q,Æ>bÙ™Ø1ËØ™Ä^Æ!6l“ÚìÚLiƒî¯œº%!—J6¢T¦Êz»ùhót}¨TõÞz…îôì±ÿ€RAƒWAƒWAƒWAƒWAƒWAƒ—Ö4ˆD9PkŽìX >VAƒUÐàc4øX >–þ4‚yëkÑ8Ù¯ÒÛ+Jc«vN?1¡vkç|,hrâ5hý8t/ºÐœu Ô}`ÕiÉ™îú´Moß) þG?1kLMøÀÇ2€F•‡6€ø[±Á ?üËgVa:Œ­/ôf;–KÈ ý~ÐŽÆ2…+?ªpøÏ€†UŸB‡Ú®¸ŽË— jô(-Ý&|äcCƒ¶·¿úà5 ¯±S÷ŒÆ¸I{Øþ˜¶{´ÝØóÛcZf&ôÀní˜e Ú;ìBÆmFcrsÅú|åÍM*—Ñ>¥ŒeÆÄ>%ªq5~Ì—ÜÒb™Fc¿!zó¤1í ß<ni± £±f¬‚« ÁÇ*hð± |,}iŒJ¥ßŠÙ%_¥Òó¢êI£TÊ'®Ž4F9±ÐˆÆ¢b”ò©#¾t¡ ȯX0iBƒˆQžÅ‚IX=Fy£MhÐB‘{±`Òƒ‘oƒH> ÍiH;g.™@CÚÊñ‹‡¬piÒƒ†*4x4x4x4xåL#ó¢,n ŽA4².Ê2“FÖEYÆÒÈ´(˶ª| 5ÊFÆEYîõÔá©Qþ­h¶EY®®BJ¥!g(¤ŠF=ã¢,<È]”Rp¼Å%42,ÊŠÒÚt¤±ú¢,žFÚÕi¬¾(«vG#õú†V4¢Ê¶(Ë)-éžoY]C#Û¢,–øLž‹¾eu= Œ‹²­(kM‚oqOBÐyˆ÷~ÍKò %”¡9%o£|ÂÆåÓØß~×Çviôçm:òiŒ·ñm&®X»qGcNÛãМ’3 yÆ}âξhŸ‚4hŸBB> ÿ-9^wç’§AÇ‹êúe0t83WÕh€4ÂØ|ÊZPÔÆÓP×hÀæÓPZ46ž†Ò¢±é4T Yë&󣡬hŒØ 9C¡ELÙ4T =ü)jhèâOQQQò[-)™†‚¢‘§)C2¼ŠÆ]Ü\WßëA#Dó’b¹4rª(‹$÷åÕriäS4ØI–’…÷ÐPgO‘K#—Š¢F®4¤œ4ÿ­Î"™ÆRE‘2¾TèÕÑ€†B¯Ž\Ë͆,êTÐà%“Ærÿú¤iÄú×'M#vê•îPÁU³Kî{ñÓÇ ‚†È¡BiÄÜ)ÕðY4ˆ*É£?Mw¨àüðf¹SdÒˆQÒ*H£ë/ÁÇ•ÄÃVkÊNÍ"‘FÂ%Ý¡Bi ;…Ñ8Ù¯jç”.Ôz4wŠ "‡ ¥î߉€Ër) \¨µ‚;£K‘#‘’Ḩ;T°l@àË •‡¾í)„´Wp§ÜÍ ­)™4JÏóé¶Ê,‹y˜Â²n}wÊ&ÒÀ2I×yÒ*”ºS˜Yåd¶Ç¬ÝØ«zõîCÝ)›I£”x'Ý¡‚íÆ››2>åû”kúnÛ} ;eiˆ&‡ìP±ÄÛÄÝ)‘¯Ú<£h$;TRi,»SF<”Í£!L¸ô`‡ :SÊ‚è¢VÔÏóäÓàÌùL‹±žæ½mó/Y)»§È !nåäaEíFÐóræ|¦ÅØi|оf¥ìž"ƒ† •“µÒ$ÕÔ{©¢-ÆF.3”ºmî%]L*ç¥Ø!Y6„º£ÑoÒþhNÏü·hm`.[°‘ÆÐ7êcŸ…]—ÅŒúhZÁ•Ä´‹|ËÚ4FþDXøß\AQHcïlÐÀ…æ/ö뇰‹c£Îà£AÇA8²˜Q 4¨à*‘oY›Ö‡Àh©Ê(£CŸ>3¨ì_¬q‰c£ xúËa Ðñ 3êCŸTp•È·< ÂeøÅ!©›•9žJ¥a³T&Œ_á?,htaþiÐq‡,fÔÜ)ø>Ù4âçDêÄÓ`eã¦çeŸ†ËhØxÑåˆ5üD>â*~i4TÎ…ÅÄÓÀvã«Õ€›ûÞ3/ÿ}P¦Oi»qŒÃ!ÖnƒÍ *¸ƒŠG ¥3ƒ1ñ4h19›·á¥_*—ŒÆ¤õ ŸFú”2&ü÷)ë”å3g¥J:3‘ôF¼¾h´þºxçвquf8 €ië–8­õý-±Oß:—•´É i·fd†{ìéïÎ)¥ÑrZfÓ˜±ýý^Ï#Ã7žóãèÏ6|è" ÿÁ¹À¾ª…íÆ†Ð´k«JDƒ•÷dðîÊiÝzôWŸ:H°lxäb“hHVŒ¶¶O‰Kþ¯+¤QõiT[~»ñÞi]?´Oé][äý½g;mÒs_[”>ø} -3NË|QýŒzÉf„bŸÏy#eѸًûïÅ_‰4Ô­çÌ["g•ø±!&ÐP¹EÅÆEÔ½)KL0ùgB—bÅó«’ÂsaBd‹Šýb¾í@·ÆðêôÃú)„—bÅó«’4·NráXTn9pð‰Ñ``û)„!HìK_É…C`QñŽ(›>0ô• –BËF7ž/X•òtùТ2þ†4&>‰í·˜B¸‹K±âù‚UI! ΢2ÅÍ–*ç_}ðû?­°ö}Š/±a'ª‹Ê¼žlÈИ†ØÌU‚Ee|ò¶œQgB£_D‰•A=)¢ù4V‘Î4„–ØÌÒš†È.YZÓ%Ȭ‚¯{h¬9Y³$üSsηæ_˜þurÓ/H§¡cöîH´‚M‹ü¢4xm: w„ˆDÓ/gõ’'k¸|b°G>¯M)ùÄÜóZ%1©ƒ(šŽÙÝJž¬áò‰Ë@ÿ]!šž™ÿ}%OÖpùÄf pÑÛˆÓ6óV Ãl¯Ç`Ïû¸•^ß=2OŒÙÓWpÚÆë²ÍÍÙ^Áž÷q+½þ4Rò‰1Ì$Mÿé239Û³-Øó>n¥×y7Ád „ùÄhM™ž sh}ùÒö¼[éuÞiH0Ya>1lEÏ‚²1…Zëý²áïy·Òë¼ •`²Â|bî7ÚÃb»5¥ÑAk½OÃßó>n¥×y‡2Ád Üåó/û:íSÐOïÓŽåß§(ßÿ3"ñŽ÷ЦóΆ›¬Y%šÎ»^>p²f…h:ñcØ@9ì–»r$Û’ ù-)¿œ}aÒ¥lHo:Â%©ürL}hÀo2æ8‚yßâsŒiDCÞŸêFBy¼QšÐˆ$ÍWÐðÔåWÓ‚†¼üœ÷H9ïh¸64”(_ëLv„WÂÍ¡±Æd‡4Ö˜ì0“FÖÉ« Ï ¢‘}²Ã¢Ç™Ì¡±ÆdnÁ"™C£ž}²Ã3id›ì0–F¦Écidšì0FT'; ¥‘q²ÃÌQ[ÖÉŽbDÏ«¸Úë¸ÈËS‡CÁ ‚ôÙµ¸´ ¶¢‰çÖÌÆËÿ¡¹Ñ3ÉÁ™y\Î8·æùˆ²™•ŽÌ6=Eq-4B…;Øe–I4Öωl¢¦DäÓîm?â}ï%aC#i÷¶Ÿ}Ãû€FÂ.FÒîmt…÷6ˆd&®`oû-úÊÎy0WcÛé~LÊa#i÷¶¿—1/?WcÛé~·v&3’†hoû©3w0g”ÍÕb¹Ð˜&3’†hoû1!C–OŒ§as ‰‘4D{ÛϺð)¡l| “ŠIC´·ýÀk7îh0cJ˜TÌH¢½í·°»Ù¹äi0cŠÙ}ÊBi»¹'ª ÁËhi{Û'Êh+« Á« Á« Á« ÁË4ëÍÖFC¢ ¼ ¼ ¼ ¼þ˜ÊÉÊ•Ç[}IEND®B`‚omniEvents-2_6_2/doc/doxygen/a00260.png0000644000076400001440000001465710240666457017715 0ustar alexusers00000000000000‰PNG  IHDRâN1ûe$PLTEþÿÿo___ßßß¿¿¿???ŸŸŸÿÿÿëÁ„tRNS@æØf9IDATxœíKwÛFš†û·pÑ‹æÒÑqµœIœ#.F`9ÝmEXÚRi5'c“Ë$c¶¸kî@Q®ë ˆq© ¼²I …‡_ …¯þ:ÉÕ_TWàÅ©#.[qÙêˆËVG\¶:â²Õ—­H|óϤ,y›‰ÄS–uÄEª#.[qÙêˆËS?vÄ婇‘wÄå©×ëõ)qÏ^±k:âbÔC¢ÄWCôtM×tÄÅïQâx‰M×tÄEÈíQ¡? «l'ãç%EÝç+º¿ãöʟϺ!.±÷ˆxç*üÕ‹pƒÝ#§½Ú|<ïˆs±löoÖÇ7 s¾r{ñ%1·:â<µc'€m©Äa[\tm>r?¡¨b)ÝY>¹$¼Ý5ñðŽ8w!àn/n+ ëÉ%·—F©ë­ ÔØÞUGœ›¢Öv®:â\DY»{â©#îähµÿíķ鯀 ž·‰½Ñ€xÕ}Äc¶]¸€BEâ"|]ƒ‰'›$.—ú”×K ž~ˆ,âÔrânfƒd3EZL<·µ­ÊSÚJ<ÞG’”*Oi*ñcç —ØÝuÅNlÔ…8©¥÷õr˜¶Ò[í¾N%qŠ‘Ô÷×Ñ×fñ"°±Ô…8Ùƒ§ƒß'Ö<›šÇFë±>DÿÄ‹âVâd|Þ&Öø§æülÍÔ?ùÇÃäŸ-èKŠ:¤Ò§Äçða°þÉ»¡gÏ–sîÅd ¼‡É}zâý BÀÊ?÷îGð«ižÒ—&®2ÄI-·“_ÌõÁÛ¡¾n/›•÷ÅøífžNq7Œp†¸åÙà7aM£:*ND‹ŠÔróæÁ7·—¾ì§¹éÙ¾‰~Ü%›}*âÈK¨¥àzW1¡éÈÇKWi*4ƘŽw|e€wïCâ+ˆ“"m†DGNHœÄxiâJCœ~KM`øÀC¿üî€Nă$‰Ö!$~?ú°­@\iˆÓ˜ÿø~}p<„U÷Çàî‘ßj@<ÈÔŸAⰭ⛥‰« qÚÒ"µüny·¨êë)8ºúˆx?Ýù#åÄ-ì:ýãT ‰ïí|`¤†xò”†qU¦B\Z÷«¤œC6ž¸Ö=Yi'íõ‰«0•pcOë¾ÃT4 $x·K¸úO¿Ô^Ÿ¸DS‰‰aÛ*û%Ÿx:™Æw“=Ç$Ôµ%žÑóZ›xŽ©øE‡’ì+“Þì¯%O< LÝB¹Ä+Ô3³í=—Et!$컟S0â)^RKòˆ‹kP%^ø„²¨äâye=â¼Ã«#ž©âý%¥$¸8SãB$¸¸6s^É„¸ãÜš;K/¸ÈxGl¬ É".ðD|?q{ôîpg© <'ã­!.ð´°qvÐZú<¶=ÆEö5#~7ƒÛíôñò0Œ/àél'ŸÁÃdˆžÖËsí ý‹+#h¨®$âC<÷à ˆ_Þ[ë³ãáWoÍðÆ7LÃþðÜnVèéÍèÂ|5ºòÏwÆÊ4º­¢–¸ãÜ›wÀ77Ó·ŸÁ³õÙÿ~ø»<`˜6°ÑÓÿúŷر2=ØPo9ÄEšJ¡Gÿ!ãÕã ¬¿Yù?^þb€ÍÏDœ<ù#ÇY"ÖÌUíbczËJq‘Ý©…‰ãÿ6W‡¾y·‚d-GO(ÆW`#Ž ï7ó,_è5š\",qäã¿XBÄ_"âG„ø‘I|üƒo&ÆÊ¸ýBw,–âB¯dNú³Yâ°­òx¹‚¯!ÓÓ¹—o¦8z"m•C4Â$>VÆíqFÞxâYߟ^/ˆ¿J.ú“i†‡ Úã ì­j*ùÄÿ–\á“Ë^^%†g@.Wä'žõý!ƒ¥Rz²N‡Éek|RLì5 ŽßRÄØx0:Wo-Gä­$Ž\ÀeŽœÕ´boÖåç+ˆË¶q‰˜/‡þq:”“òÖ§“gNW$²A•—â2M%ê !Çk@…¨§$‰giñdÏ¿Bä3Ü×·eí_&ž¸Øa˜,1½«±må_ßo?q¶páÉ>Âeû‹Ä…C\BvvWbi^è¯í'Μ£ˆÜ U¢O‹i¯“ AÄåäJÛ N}Fârl\R¦ŒŽ[ÈœvT¾âÒnKÉúdƒÛ YºÏ&ynqr¼/Óäl0·«r·\Ùh#qy÷¹ùÝñ„.JÞ?À¹U°d—pýGfÖ½¬ gœþ|†­˜dU›ˆ“²¥¦9Ì20ê'”8À‰VL-‹Ôdâ$Ä%ç•Ìߦ»ùxN­DË"5™8.Zv"Ïü£4!f4ÑJ´,’h✸hù™Ss·H\ÅšÑD+ѲH &Ž‚MAªÚÜ=ŠÚ*·àéŽY©¹Ä]¡¥çl7ÏV48çzO¡¼3Vyß+ ˆ cÒS<û¼´š¸« xîv[L¼¯ xö™>h3ñžð‹š¹ÏTk‰ó{YzëÙ;¥ñ:#bÊä6^„›‚4‡8¿RãCIB¥í1/E37eÁ4!ôˆPG¼°"âµNë:â…ůÓèˆ3_GñQlÚœ ù $î]Žò¢4—8FŽßÍcFìË®ÁÛo~¸K%þü+~=ùó1Ü` ˆ›±{'ƒä'8(SùÄÑy?Ícï¾Ì¯x•Jüô&ùúÖ÷O¬µs8oÖ‡žˆ£…!ñg xøÞáÙ]HA󳇣Ï}’N"ÇăbеDð0pö”Ùâyiy4­ š©ý, ÛWþ ®l¸îgnàåhƒÑt>,ñF®€¸÷³^>¬¿¹ÞL/QòJ¿®Á3éÌg˜øðfxâ¹O2ˆÓQha1ó&>_p ðÝ6~«GÓª ™zà4¸ÄŸ×‡gǶ·Ø.¶0ð,>pƒÑt>ìlÁ"î8ghÊpâ}šƒñó%?a‰Ã5x΋9žeÄè'žû¤—¥~¸!TÌ9-ßü—`¢\˜8M«‚fêA¹Ìí¥±Ymáw̳áÑd…¾tx¸ÁQ8Oc‰›8ÎѼ?GÍœƒö'r•Í\ƒØl>ž‡Ä½xî“üŠEàÒ×߬H ˆ8t•w¨`š]ý Á%ÆÚq`é1’x£ÙÄqŒÿ6'ÿE‰&=r^Òßè*ñxî“ýGNT ,—¾ý唀ˆÃ#çkDœfWÁ1mßxžƒ÷ÉÏ"^ãЩŠ8´Ù§?ïÐÌ9h|k€ˆ{¿Âf2`ä*Ö Ü­)ñxî“=­Ã Xlš`i‘ã·¸uhÓì*è .1àâûxD|Û*â°)ñ†àzŠ÷çqycg@4Ï jh}¦Äã¹OöœsÒbPÐÇÁ× (á¢g@6Í®‚·Àx…Æ >³Äñ›O|WëaÊÂýRݯÒ`âo«!RN¼Æ¡S-ñÍ"¹¬ˆ:âÙjgomGóMÿÏi6<dŠ4MT&”xËM…ÜÿδU ßÜLý9@3¡9ÍÐ,fdj<©yPâí>n‚xpÎiЯ7ÏѬChN34‹Y@|%ƒxëC<"N΀pŒorÏifùr‰·>Ä£ùûŒ[„8šÓÌ:¢ÄçRˆ·:ÄÝ ²]fÖ ­òtGæPC³˜Ñ©.¥ï·øî$ øŽN}Îòp‹[A¹Ñl«ñ5aQ-ˆ7?Ä÷ö ºáIžÄÕÏóP]E»`£ Ò€x3Oð{Q _¨ñfà»é>½WoHˆ»eƒ:þþàõ×€tŸé½†â꯺å·Süz“Œ­r Ϩƒ¹Ú.¥‹®6&‹Ç„k¡ÔœO¯ ñº¶±OtXV¥q‡-#.˜t >¨>¶¶-ÄXGŽÜãÇO\.j*·Æ=Í%®õîÆK¾I"qR5^Ä]•¨©ú5‰°ÄÈÍÐóÒŸ:KksQ›8®[’¸·‚-ÆEb±½ó’à·Ó=­\nõû91©çOç7;ä>ýöS@üú»«§úÄò”ú£‘ÉüMÙ¤ׄ5‘[ýžeB²Ý!7q¦ñ9è_mâ½tW‰ª!fƸFêWðµñ§cg¾½5§ÿr¦SH~ψø±ã|‚kœµyäxSøX›_3tà{Ъp³Ÿx/ >¸õ&8s¶€®bð4ôl0X€‡Ép2ÞNƘøà¬—7&3ÆF/ânåÜ”øøtsñp2>úãzræ|»š,ÿGÁÖlï}g}k â··þÃìú:üâäúèÛO? Þ#Ä×gÇß,¶‹íÊ?<%Ä·Óíåúàíðvÿôç3D]¬}3º0™16º¯š_“`3y‚^ro\ïØßÃ;a‰£5ÏðsY;"î/áÏjr{ Þ¾¸¿8v~&ÄÿÝËÞ on®WÞ ÁöGèÈyì§¹on/m`#âØUЀ„10LfŒ^Äû’}ïÄ8úÛ%þÂw¾ƒ4‘‡‡®rŽÖ âç?^„ħÀOY>~{á7 D†¸ }e~–˜øæã9BŒÝØÈÖ£«áš¯pu1AÇøßûnñå3=rþãÈU¦4ÆåäÇøàØy¿ŸxŸúx,ÆM¸èËïpgâ`¶ãz¯”]=A¹õÿN/ïwž0ñëÙÕZƒˆ?Ý«‹9!þ0CË ¸êÛOßGU/òq†øh4þ¬އÄU,H|4 ||®)ñ~•| â°Ù±8½5œ?±U8ÃïŸÃ3 Ø AÄa[eáâÁ²BmüµUv|6J¦¸m‰?Ý¡¶ŠãÜm[_âµ||Wj{§‰o¿ÊŸ»÷{èD¼Z–É,âËcMˆ¿½bÿÔŽxé Ï"~y¤ ñµsÆþ©ñ>óX\Mï­U©püa)uÄ««=•ô¦WÜ#ÎÊžñ A›=ñ©šF|%lÆÍÒ ‰÷É ÛMÎkM\›1_nôK¯4qŽêíékà1BÈÕÂZ¢ÏtЩ".ç[¯ƒG»I.¾)#Þ: Vê‘ïï©$Ž®¸Šg®9cžäR·Jâ /#Î#ï)%ŽZ♫m²° 7A<–nE8ñ u±X&j[‰»‡Ìÿü~ ¢t+Tâ‰}b™+EßvÔdµABˆ‡'dB™«¼‰1±_ÄUfË“¥u76üÙ‚ŒüÀ’@<ªÐÓ…GÏ âÛ© î-Ã?<xä– âì¡\`˜+ó•ä׋G®r‡RQø&¾*Ž%™¸HkQæ+YÄßýf¡Á5˜¸Žï“A|7úÄY‹*_É"n!W±UÄx¼Jbï’¯,âw q¹>ž@!*Ì5“[ Ú*Ö…E‰Ëm«¤D ?5ȳˆ³ŠF~(".ÊZ” m3õö”hä‡âi+ÆZT g6I ÿ5ñšhä‡:€E>òD?–â¾CZ“ôÅ"¬E:ò$q¥W$‚šd-沑ïì[OõU·P™X‹dä â ¯,3ÊÀßZä^àg‰ÓÛK5'.¢¯EæÐ!†¸Û'³`•“%¾Zik¹e^‰y<2Øän*ú­_®sG!qA™}€Èûγ*H¼¿ó[™ý;[侚ðÞ¬J¢ˆW¼GB”öö¼7ý!ˆxÕ;hE©@u„4ÎS˜ "^>`Ïl]äEBÎA™BÉG*†xå;hE©X…„´¤#æäh*†x…`Ѹ –t05éG%ÄÒFÙDʯr•U,ñÂ1 脳fÏÁñàëÄëJ§¨«Š&Ä…0†/âÉ1S‰WH ˜x‰: ëaz¯Ÿ—?MÆÏhÌÔÚ‚Ùrž˜•ªñJA¢qÑaŽ·I®œ{ëÕè ,6«Ä¬TeˆW+£qAa¾ã*þœŒ™²Á`zvbVª‚ÄqlhI¼ìOD˜³­C›äʱѬTàÝ{;1GRâÕêªqqnǹrl4+Šô:Ä+ÀÓ¸07\Å"Ä_>€»G;1+U âë)šx…@æ”8Ê•ƒÆL­Cptõ11+U1âx¯ÚC\ÌèM®gù.¨>ªWKâ"œ…;ñªUÔ“¸gáJ¼† '^¹b¼Ãœ7ñÊ· hKœw˜ó&^y¿ô%Î9Ìy¯cãâ‰×¹Q‡g˜s&^}·´&Î3Ì_ñš÷ép sž#„êØ¸öĵœë³_盫?qMr41ªe*ˆs¸ÇU³0¯”;T#ˆËÉUXµl\q>·¸êd-µl¼1Ä5²–z¦"ƒ8¯dºX‹[oD\k©g*2ˆóÌU AfÉš¦Ò4â0¯âRˆsÎ:£–yÝ—Bœ{ • ±ÝºWa¥çŸZI]»¥Ê4W;’B\DžW¹¸µ÷¥±ÄC¯â’ˆ‹ÊØ&ÝÐÝú·ÿË!..}˜dCï×ßš$âÓÊdîrØIÄ…æÈ“ÆÜåâÒˆ‹M"©áÒç±YÄ…§;•ÀœOGš4ââso gΧ|yÄ%¤Uꥶ+Í;”VúÞí‘!xª¯ERð.bº:E´ÊzmŽRfæ*pxΪ©*âi¾Rd¤T)â€ù2Q›áC¼ÈWT;â)•A<Œsz'â…õˆSWñG?¾Ö áÿgÓ·÷ǽN5éǪ+qâ,.“Ù'Eå³ú¤l‡iB´±©Ö|ÓO÷ê&£ß$m‰ã–„›“]÷šqªˆø`ü“Ÿ&coµŒ'cÿ­nÁàÊFë ñÙ‚¼Ç'“œ=fÒt"¸¦$eËl9÷g·i{ „8Ø“³ÛAÜûy}ðvèŸûó™·‚0Æÿgê›ë³ãÿ>;¶Ñ:Hëð”V6è n‚0qœ²e±Yùg¨ÈĨ"¾3§% t¿üli¡Ô>wÿ·´ÊgõÉ!î8g¾¹½ô-qä*æzØ|²<­ƒ´Lj3n¯ŠðÇDnõ7Q‘›iÊ(&N‚Ä|†¦DC©}î-»BVŸl® ÇA½ùxî­à‚}j˜ðØh¢Å/½34ÆñÏ»÷¶~Q5"N]ÄœN‰ö'ø)ŸÕ'[!qˆ…4€®ð„=ƒ0Æá:†xÉ9æi€3ÄáNèãè‘Î…öçöy÷Û?Pj›ú8wâëƒã!äl!·0qÞ¡·uˆ‡5¥ÄmÿìX+'¢3s‘Ü>ÖvŠRû#Žš%Яi[åé.;"m•Ï6YW™8SSBüèê£fm*Jüçö¹C>þ/ŸÕ'[œúÇ h·¦Fúr-ˆÃ€Û*‡ô…U:«OŽ:⬄žåS©"¾N_ÞOâË;â©êˆ×QGœUG\¶:â²%ƒ8¯Bû¥Û¡4É ®™Tç=&K)&þÕ—­Ž¸luÄe«#.[ÿùáºúÙIEND®B`‚omniEvents-2_6_2/doc/doxygen/a00127.html0000644000076400001440000000647010303671737020066 0ustar alexusers00000000000000 OmniEvents: ProxyPushSupplier.cc File Reference

ProxyPushSupplier.cc File Reference

#include "ProxyPushSupplier.h"
#include "Orb.h"
#include "omniEventsLog.h"
#include "PersistNode.h"
#include <assert.h>

Include dependency graph for ProxyPushSupplier.cc:

Go to the source code of this file.

Namespaces

namespace  OmniEvents

Classes

class  OmniEvents::omni_mutex_kcol
 The opposite of omni_mutex_lock, unlocks the mutex upon construction and re-locks it upon destruction. More...


Generated on Fri Aug 26 20:56:15 2005 for OmniEvents by  doxygen 1.4.3-20050530
omniEvents-2_6_2/doc/doxygen/a00261.png0000644000076400001440000000632610240666460017702 0ustar alexusers00000000000000‰PNG  IHDRèE›`!PLTEþÿÿo___ßßß¿¿¿???ŸŸŸÿÿÿhßEàtRNS@æØf cIDATxœíÍÚ8Çç_à0—3ÙæçNwñe’1×é$›drl’&pÜ™-n F¾™—‚Ÿ¿rõæ70`[6¶~45±Ed}yI–õX?€×YŸ@~$Q8’(IŽ$ G…£<¡˜ý¾*U\ö¹B°O¢p$Q8’(IŽ$ G…£Ò¡¨ÿ)Š©fx”E…À`(Œ:Ù<ð#eDaptÆ”E¥BÞbY´ç:gP2&'a×V¯[>«`˜U€‹¢lbVXÃþjS3fŸoÊ„Âà ò¿ƒÊã ²ƒþï8ˆZÌd£À-´JЂ˜ë@”®ã½ä>• ÅZß *Š ¾AU›|ƒª4(¶˜”ÅveA‚DIP˜a•â­ÆÌƒ„ Ø BPì !(öƒ„¡ªÌ(}{â"Pì ‰ôQì‹{@±7F‘:Šý1ŠÔQìQH®RF±Gþ‘6Š=2Š”Qì“QH®ÒE±Oþ‘.н2 ‰ÂUª(öÊ?RE±_F!Q¸JÅ~ùG±QÝXY#HEöþt»m}ÊQdn…«¼ ÈÞ?$ WyA‘½äEŒ¼QR¼)SC‘£àVQç¿=¬&( [Új!(òඃŒQ ºú…®¡ÚÇo{ÓQûÔÃ(º}7eZ(ò`6Š7+-: ÕñÑY½?3¦ýEë¥vé¦L EÆFazC .`DdVsqלjSƒ¼0ЦÕ;eJ(26 Óv„ë„󯪆a(uÎ?¹( $(x\µ •8ˆL›‰"ëJÓôÆåѺbÀPŒNëƒ G±"C£¨¸ò· j »T_áäþ3Ca5ÓG!Ú(Loùyèx‹š}å%?¤—=ŠÔIx PÞÆ4”RB‘’{˜KN°1-û62G‘¤QxÊãÏf"L¸Ãv™±ËïQÆ(v%ßV•-Šø$ÂÖ”)ŠU¦™"ò7£ßB‰iÃàYà¹&å IüiÑ(–û…éÈŒ“ƒBÊï‘'¯”Q°”oTÏK E,MNqòN…ýüš,U1cœ‹—¢ë+À¢M¶ÝBp¾‰@Ç~ówÖ¨*äûˆü)Ч¯ÿö•oþtóÂQèžê­0(¢4¦©©±ºzm·D ÂæÀPŒ^Ðèe_PÐn^ Ûô£0®[#x9B?^ô9AÑÁ»1 ­…ô6>bMÐkó#šwŽÆõ1Á þ êàýyA{àÈ‹BÿÝ8Gÿ{úmôϳ¡Ò¿œ£ÇKŽÂ ðãåÕ#Šâ¤vRC=}ÀŸA¼?/(b×U¾jóÂha·¸ÖUtªUñEJÛ‹1ÚøUE"¯9úþ êàý9A¿ýö9± °ŽÐ¤˜¤°dxÃç (·Y²| ØamµŠ_NÐõ¿8ŠN›W›—Ü*†;ˆÎ­ÂBO¹B±Ëó \# Ž¿#㔢0Z=‚Bÿ7¦¤® Ò:BßGÅ_dßk~PìÒ©YAÛ‰ŸÑ)EZkÛ],Ò‚`¸Aõ÷ß—;uô×u¼G'ºë•-ŠÝ.yÖ¡xØÔ¹Ì)Š/þÖ Nb‘ÈÅ®—Á _™þÝÕØÎ‰_¤Ç¹Ç®VÚ ø´¬lPlqoµ‰ÐkÓ{̺h­ùœ°F”þïýúŠÍ#CÒG±ÅEX) ­q^ó³4˜¢5ŸsQDr.“qó›G†@f,‰£X g²®`Â*¢œ‹É®X±»º:Fu{(BŒµº(H¼Êë¢3¹;Eùß_`Ñ~†Q»N6cý¥‰OÞºPÝ0–(*¬Ø£Eç°q/Ò*B˜…âôn¨Ž¯Oë?5/à¥4¬ú%¼Î ²y×h5ñÉ[7ž0E%ŠØѨoBQl7 »Ú6I¼Ê¬sö sõÙz_ÿ¯SPšhdóHß~³TOK´æØgç_?"¤ E±Ý,l« ?¸ðÆÄ€ñ[ÃúåîVÙªÛX |ò‚3K?zµY±‹­.:4Ä¢Øj^Ô*®`v_³šYµ ²!VOÞˆÒAãÓ X±¤®¸‹b«YxQºâVQAÇe?®' ÅI“ÕWVsáEe¨Æ×Û¤-HÍ^‡%‡(p 2¹[tàö²§ÀDGBzȆµ ØZ®î{Ó8\Ýi÷+¢TY¢Øb(.ë«ûÆèzu§Û†÷’ýBZ†K#ôó,Qlñ݇nŒ°,2E±Ù,’Å¢¦’EÁQ5p,2E±ÙCñÅ"ì-¡t´Eb·„»I[ˆ§¥%£ÏÐ3¸‘^‡LšIÄt1Àd¦š¤%q3,ÌXå1Å$«$¦¥¥&ovή0(ˆYìöàŒâ<èž`؉EqV‚ ØwžîžžD›Å., …ƒåŸ…€t„Màdùì;–¢Ìh£±»æE71Y¤¾îX%Nôk<Ùž“Eú ó œâlç¯v‚B´YÄë‚‹A!È,\kˆÃ"ýåE>¼ÁEÎo“Dù° ‚Ì“ Í2Òà–€Un3ñ†!RÆBVIJœ-e±i™Ï AKÆW~ ÿˆªèróñAˆÇnŠGxw*)yŠºä¬Ê.' ¿‡ð*[¢p".~ÜðÙâ¢ð{HˆÇó•EÀñeEPÿÒ‡biš[f(Nѽ!äŸ{5m Õ€eMÈV³µ7nÚÐ(HÈ$輨„¢˜Þ7Nì¼µFÃ{üÎÞ~¢˜¡éÙ¯{o+„d…b\#ÿ˜–NKƒC€Ã@—/«é×¢ª,Øq¾Bˆbuû4¶Âs^LBQÌU˜’ɹ‹ö#-Ú(4Ú£ÛŸëê#@cÊÃ@ð†þTû¸Ð‡Vª÷[ÞD¡ûIpÈ”¾q‹Êµ_!D±j,¶Âs^LBQÐYGoWV¯KQtáh|rV4åa xC~ÈÂ& --½AõPJL;+‡´R¢ QFcT‡Áã(¿² ²FÈÒ2e@ÑþIb-`¨vá›c¡­,³Qð[«G–!Ëoܺ1že6Jƒ¢‹¶,Èø­áÆXøT( ²L[dq[sc,ʈâøãy/ ¢«nŒE¯„(&í/$Ö‚ 8¶WÜ€–ª•EÈt…“N¢pÒIN:‰ÂI'Q8é$ 'Dá¤+6 yK(ž$ G…#‰Â‘Dáèÿl.ÜÉ%ëƒIEND®B`‚omniEvents-2_6_2/doc/doxygen/a00128.html0000644000076400001440000000750710303671737020071 0ustar alexusers00000000000000 OmniEvents: ProxyPushSupplier.h File Reference

ProxyPushSupplier.h File Reference

#include <iostream.h>
#include "Callback.h"
#include "EventQueue.h"
#include "ProxyManager.h"
#include "CosEventChannelAdmin.hh"

Include dependency graph for ProxyPushSupplier.h:

This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Namespaces

namespace  OmniEvents

Classes

class  OmniEvents::ProxyPushSupplierManager
class  OmniEvents::ProxyPushSupplierManager::PauseThenWake
 Helper class that locks ProxyPushSupplier upon construction, and wakes it up on destruction. More...
class  OmniEvents::ProxyPushSupplier_i


Generated on Fri Aug 26 20:56:15 2005 for OmniEvents by  doxygen 1.4.3-20050530
omniEvents-2_6_2/doc/doxygen/a00262.png0000644000076400001440000000252710240666460017702 0ustar alexusers00000000000000‰PNG  IHDRrWëÓ !PLTEþÿÿo___ßßß¿¿¿???ŸŸŸÿÿÿhßEàtRNS@æØfäIDAThíšÏwÚFÇó/pÍÑ¥ÍCǾÆ):6*]Û££Ûâc‚ѵ?ˆ¸ËH³7„°Øù+;»HX²Û²~¼§¯dñØev? £‘´žWXV½ÊàɪȳWEž½*òì•9¤*–!9K}´Š|—¹Ò­"ße®tG«Èw™ 9@=Ñ 0ÓÅ«æ3lÃé£FË–¼upœhµ[‡Šx%rÿ¼Õ43Z¶ä:j‰V}ÙAäž‚´?b´ÌÉy×ð@™à¾§ø¶ ר™È}zøä×ã!}#[›¸M=PɆ^lÌò#÷ã§ø]ëÄûáÓÊ\žÙØ> ɹøõp¥‡|:‘䪥Z¸×:'Üo/û5/r€>7(FºþhŠÃ` 0×ãäÔÃuÚ¦(ÉQl6þC68ı2ò"×¥ßñ4¿TãÛhYõ©G¯~?Ý’ûް³7æ¹’KŸV±û}H®éázú|…-~ès†-a7Ä#òù4_rŠæë¿®%97‚ÜÿHYQĹˆc‚W^H¾'ÚÖç'Ë~;·8ßSšØÇ z¦$_:–]‰Dn!rÊ-ؼÉö|sKRžú¬Ñr$ïì|ɼw´üÈW—Ï­ºWLhñúÖûZíõýŸ|¢^Š|㬠½.‰Ïk‘‡ÉÕµø\ééEÈÒÉ‘«s¥§-9Oo G‚߸z«ÔfØL“>ù¿µ;Þ~)¥ís,/yì -9±—–<ÝÓ¤“Ò“¬x5C<|ØÌ—|ôù(ŒN­Üy?RÅ%ßlÈé0$w-p­B“³þÀE«o]Ë ¹IÍDnÀS«/a¦·éfÝS=p±I6`R{žäÎv~qßuæÚe/€a/$gâÔì3`º$o*M¾ŒÞ“ ˜Ôž#9b— (FúN«m»A7ÿã89õ°1m ä ¶¾%0©=×h~çÄ£ü)¨DGÑ2ïR Ÿÿz¸%w}agBþäÒçMèÿ’›ãð í…>ŸE‹úœÃ¨0äÍWo®µ%9L¹ó3eEç"Zu¸vCò/¢mV rÊ o¡®&É/}e]‰Dn!rÊ- þ’‡mù’'å6Hß_WÈ?=tÉü?ò<ï¸æË'—ú.·¬O%~š[d†žz´lV-R_ÕÊ€|{†.îóý3gb·ÉSVlunqké…?oä—&O®ˆ&VŽŠN~W~ùÈ¥(ìKJ.Âþyöù‘—5Z0"÷ß8ñÿËùvDä¹âhoÞ$Ë2¤r'¿®'ê\|}à£8†ä˻湓ӱkô·@=Kí¯šçO>Ý*ðÉ Ý±"¢¥q‰¼kìQOã<,lѨ~ ñÿçb¯ÇÈâÞï¨óÖ9‘{õŽÊOñÂS–ývXØ¢álÅda í!ÇÕ¾+Éõ•) /lÆõõ7VlÍ#*²E$¶,l¡½ äkĉ$§g¨¹`ŠªpEI‚ÜŽ~î䢞K”µÄ|Ž>½ ¦x|Ïh/¹7<8e-¼ß¦8?‘qÞV¹ÞC´dœßËÂÚ BŽïE”µÄsËŒ~‰=‘vqrYØRœÜI‹çò]T‘?AIrþ”ǘ†üѪȟ Š+òUð•¢lT‘g¯Š<{ý«6ŽÀÌæ+IEND®B`‚omniEvents-2_6_2/doc/doxygen/a00263.png0000644000076400001440000003367710240666461017716 0ustar alexusers00000000000000‰PNG  IHDRÊ yðC®'PLTEþÿÿGGGo___ßßß¿¿¿???ŸŸŸÿÿÿ4ƒctRNS@æØf IDATxœíM—Û6ºçï÷™¥½h.Orª–÷äúk™èÚCîfºãjkÛIìÍœ»W-»s¢ëÚMU*iG•T%âC @€$Hñ xù;)Q…þˆW>xðoÀÉ|ýÛÐ pR GÙ9Ê6ÈQ¶A޲ r”m£lƒeä(Û GÙ9Ê6ÈQ¶A޲ r”m£lƒeä(Û GÙ9Ê6ÈQ¶A޲ r”m£lƒeä(Û GÙ9Ê6ÈQ¶A޲ r”m£lƒeä(Û GÙ9Ê6ÈQ¶A޲ r”m£lƒeä(Û GÙ9Ê6ÈQ¶A޲ r”m£lƒeä(Û GÙ9Ê6ÈQ¶A޲ r”m£lƒeä(Û GÙ9Ê6ÈQ¶AŽr£&%yC'¨›åcE9UޝÆ,G¹ ˆ½ÀêT´åT€‹¿‘“¡r”‘¢>åRƒBí(#ƽ!¼P;Êâ âx;e¶SŽe”¨í¦,‹ÇØP[L9’ bD¨­¥, ËÅ¢qtÀ-¥¬ˆqÙÐ¤í¤¬þ¢;Ô²’òP—{°êÛBÊÑ ]¢hˆ2måt†”—hÛ([3ÉÅ•dåhø‚œJe¶‹òjkJê ´M”GR[ÓR4?fåqdJYÝ--öP_AÎE¦â¤Ý‡¶Pam]êÊk§-¡<ÚÚ:¼ åM˜ØAy€‚LÙô2Zt§_¯´i‰õ‡cÍ”•×ÖM4£zÚäó&’m”çÕY@YéLó³§ ÚÄšßQî e»t§´ó£ÉÄQæ—š~W_Côó†º<“£\)Mr$dJ:ƒìÊ2§ô»Ä NÔ§,“ŒÚHY~“,Ô~¬Ðûz±~ ÿî’7~vJ=eŒ9¡ìûô7¦S–Y° )Ç Éݯ³o.Ê fLùý} ð7†S–Þï /!¹=EÿqQF?Ÿç§ÇþÆlʲ›dim~Bòqö—ñÙßï.N!¶Å ý]•H‹žÖØ‹Õüâc2eÙý.‰Ý ÉÄïv·³!¶Ó×ôwU"·”òÝáÒ‚²,»I–ÙP”络AlAЬfr¼8KŽ(ÛPcK†,·¢ jì¶Ë>jhSd¬eùÕosã)K†,« “ÑPÞû‚”qYf£ìå#©¹ù5¶lÈÒ¦žI%#)HùvöæÀH½¤”—ÆSÖr:lj“fE eØÇŽÊø…êc?,óÌ£,»M–´{ZÁ,ɽkyÁ»'ì’=N–púèÑ=“j—ì/9E?Ør¶"Œ’>­)!Ȭ)ŽœÝ“¤Cý|¢ÐÙ"6cŽr³$ö±DB®0t”$ÿyrÝM&Ô•VÔ•†ž¤d;ÊM’oRAËÅ/]mËyx ³ºoóŸÚox(×Úk{ògšCY:d”›LòQèn5\‹˜äÖßG,”ÛÖºy1ô“)”@nèÁ·Rn7Ê—:>0„² ãúL-”YVNImpÌ ¬dEÃw˜2ìÿ}“Û[î6ů;‡Þ_FP–>‚Ôþ@0œÍÀԟȇ\”åöM ¬dUccuA(£?>~|”%ß§PV¹CFy·ñWó“°<»»‹)ýu“$gAÊjÖ'7GBSáöéËéíì®÷úëÉnrô§¬r †´÷uPŽƒÃ‡%$¦•÷°Ã(`e%>Cj니2®Íʲ¿^_&Ç)åM›·ì;UwÊJº×õÈ„V‘r vA‰r‹·£Ü(5rý­ÑFWXa—•Y  Œò!q*fü”GX”³Ø© Ì›UC9Ÿù‚u¶Ä¡ùè)77YeP² nT+exh3åv# áõ­±éÜÉœ=;åfŽÃåÂHÊ_Ü=¿Ûõ4=8Ëÿ{º#–ÿl”¥æ±Snæ80e"Lyúeú<™}Ä_ÏÞ€Û.ï?àSê(S\e> 9åæ»{à ;¦œü ÁŸéÁX‚óÇ+|J;eò¬ÛŒx›ÆM¹ã8Š2Ey·^¯ðÁ&!ýUº‹•r{½.¤F›rË¢(E©hU–7`–—eøÿ¿“SêúØå†ÙFÊzešò“Ù|€ÚåÄçäÊ g )ëQ”iʰk@ÊÈ<e–ù/ã(· ,ÆE¹RÛ)9¨¥\΄ue¹âX*ì2/Ó¯å:µ-UV“ Õ’ÙßdGÕ'[}ªÚ3Ò0Êm5 œ‹Ÿ2Ú-ò>ûØXÊmòh*l9”‹NQL¥ÜZT  \a;€ÃZ¬ÎVóå¹/nÀvõ% öŒ4‹rÄñTØ(ß.Cp;÷ãÓ×àÙì}@íiåVˆ&P®0à$”Q½~ÄÁ9ðjÏH£(·ÖÇ#¢ÜÕ꾞ò«ßækB9D«èóÈL¢ÜÎp<Írge^'(aÊóÃeF—e#)·34†rñ†Æ”—eÔ._I¹½(¨Âî,|£VQ^¬æïç„2êc‡FRn/¨æP.fö¸'÷5L¢Ì€ÐÊiZ(={B¿5‡2C›k@³ì•^SÞzC™¥œD¹]{žI14¨Â&F ~S(³4€rƳ@Ùš²ÌR›D™¬aÆ–º¶Pf¨³Le3§Ì°ÇÊLõ§Lå y4EeK¬î™Š²Q6²þšx‘L§S££ÌTJõ§Lç/ª“éDnl”ÙøéO™.ʯL¯Žò ¢2î®.³«16ÊlyÕžr6ï•ì *=º‘Qf̰î]ìt_8\K[G™Ÿæ”‰ù@æ6Lz„ã¢Ìš_Í)ã.uiŠS¦ÆE™•žÞ”£ò°Izveõ:šÿ°‹2sÕ5&ÊŒn™³%0Oí¢ÌšÛQ ¤6í§P§M&‰·Š236 O-¢Ì‘ÕR^Ào¦Ü°%¬=”yjáR¾‚g”›Œì¡Ì“ÓR¾û~Ù.>ƒ»‹Óxq ÀÉ XžSþ@ššoG¹ï¹Ò…ñ…á.ÜÄÓ×àvö1~ûrº}úrz;§ü8Ê€³Û4@ö«Îv”y±‡²WÆç(×KKÊd›¯¾S¶Ug;ʼ¹åˆ<}`}òذÚÍʼÔFAÙ#SÓìOk9[A™;“c œYpñÚ}UÈQ®Ò(çiæ´álL’Æ@™Ú(ç´ø(Wg(óçqxÊTšy­î+ž4Û@™ŸÙð”{¥àh{xGYÌ/D«_ ÊÆA<“êp#N¹wá+b¶€r‡,N¹l[Ùª!eí(Ù|Ê]®˜ ”iÌŽr•†¦,&þ³ù”»äp`Ê¢>ÞÑ, M¹Ó3„r6nv”…ýHœ„AI1O¹S‡¥,0v‚ÙQ®’1”qXÆûûê–Áa) -y¨£m<ånWlPÊ‚#÷å JYp# ›fÓ)wÌŸI”!æHzކ¥ÜñŠ IY|Üè9¤LG÷ÀQæ–°ÒfØ®¥Ü•–i”£‰Ì h€¦”œâ”qƒEébi”rçŒ GYFÌ^$+!äTCRî^.t¤<))ÉlÛµv—£Ì¥.IÆëœŠj”Ñö"Æ]y;kHÊÝs5eÞˆÜ(/ÞŒ¦Ý”m7£eñeÖâéάåÝU (st§¼¢‹’véD¹ª¡(³ÆË×cöŠî†Úå(K[¼¼ƒ"/­Û ,Ë}æšübÛš{à›Ý;޲°ßÊ6âq/…Ö‰rŸZw´”»ŒyK”w߬¦U§åN˜e©jK2eü*;Jè=<ý¯Îy ô¤Ü Ô8)wœ¼*QŽxytNì(«RK¬]7”)_ćz|öjº ««xq.h‡êQî·š_T*ÆÚù™R~%z‡‹_äC=~w¸<|¸ÙoâÓ×IYΪëC¹'§AÌiîþà°DìŸÝ!êñ„WÁ.Œôr¨î(ËTS¤=ž—Ë2 äC‚ýʯ~Ì(oô£ÜÓØ(÷1(Q†@‘·|öÏ‚%p”Õª>Ò^v%ÊÛóÿúùP‡`ãs°¼'”RîÛ}‚r}š{A¦‚ÅôþsuŠ|¨CÊÛKðüãψñÃ2ž9Ê*T›æ~™9¢Ü.](÷¥4&ÊGNÚ:kåÞãÝ!Ìu0{Þq޲¼:¨†f_ [s)÷®pÇC¹·µ£\«(WGÙ?!Ôµ0‹rÿK3Ê={^H޲ĸUÉS@_ŸÁ³TJÊý¯ÍH(‹XÛäå†÷fYÝ›BYH*P¸&® pqÔS®ŠQ–$\Wà ÈÎ(( IöøeàÊVS( )|e™“¶PAH=åcbÒÕØBB«‘£Ì¨#ʆÊI0;#úüeÊÂú,Ju”jAX<ìØMîC6G™QåT‹s…ŽçÕM\ÏT©Ê”E>Or1Nä(3ªÄBX${íÃROYÜøC©¼Æ·Â•#G™QÅd‹+Ê¢j”rÊG™*5¾í¬šŒ8Ê"TÏ&^“H9eqs J%…²èHª) ÊÕÀ”UHž*“cG¹K„b¢÷€©”E5hb‚é¡è“ܠ)‹ÈÅDXHíRLYÜì¯b §<ƒe6‰¦<© VšS6Ç/(f ¦œNy9Ê*Âa–Pʹaˆ‘”…ejpʬ¦Óú“º`¥ÉQfS™2·á{®¸©¥,*S›pF±är”5ðƒGG¹IÂà8Ê|r”Ù$‡²ª|(¥,ìÎu”ù¤’²¸<9Ê|r”ÙTI9^¯ŸκࡆîÞÚpÊâºêÝ}USž•ÜÒ¯à;Êã ‰;F²S†P gÝNÁ3ʪò¡²ÀwHʯ@9>›o×§ ðl{º ï>€_6€ø§‡/àäsˆüÖ/iWõŽ2£¥<™ä”w?ÅïÀ׳7Ûo?í/ï?„á.Ü⟾ܿ}"¿õ·sÊU½Ù”fI=åì°sˆ´÷õ¹¤g»ß¯ÀùãUøÕáéÿôðåqŽ–€rUï(³iHo_ØŸ—ÖØ¨Ñdʺ4˪v®Š“,{© ür~ôÑöíw§G:ʪƒ*[E7“W<>¦¼¿©øÕÉmpôYNYYË£Œò¨›e‰­”™å(« TVÏm‘:Ê5a…ÍÊKå|—fGYnPü.E–å4rã( ÌP_ÊÝœ^ ®±“48ÊR‚êᡸD¹ÏÚ JSR~¨Ðñ@YŠ(‹üt¢õu4Nç ç-›Ï´Ô‚®"jeî ¢ž|£íXD¿–@“7zRªYç^\$e¯$DÂÜzÊÌA‰u /òñõ(K))ÚZRVÞ,‹ß"@$eR˜‹+ìðð´.¶SnJÎ&")“*‚I„iIYY…-o›¡”£Ú`fË)7åHêî^åa7á*»žr!~;e¶\Ä@,åzn56²HA²ˆrõ–ަœæjÊÉKBôpqŽLöáßü³nRBYn…­1L9)Ì Á$Dã«2Ù×¥,‹ƒp’"Ä@4å§É„2@&ûÖQ._eˆhÊ€òþçwÈd_ÊâšåÂåäîšW• ”' ”Á™ìÛL9RXŒq„•Éè\ãf¸Æž/ɾ&”eTت § Ú)'}ìkð°¤>ë&­(SnDÉ.Ñ”·ŸÑoîK¼ÿ§hÈâ)W…UÌ}¥²„rúXV}mD{”žj¢loYÆá ÄÐTĤ ²B"öáúQEQV9@.K8eÆyìTvPö€ÚòqüÇG½Â«£¬£° {XÆ(Wä'аIŽ”ãÖË™jWÙ. pÊÇ÷ÿÄ‹4µûòо‚;kS÷EÜ·jOçPDQ.‡ƒãÖZ;«{G¹FeÊy›ÅI§Œ®£\%¯ŽÌ^‡£Ü(¹”éÍh¤v-åFÉ¥L™ÝËN%_å†5E¢TMYÌàÐËÙÊžëQHy½¾èoR⻾»øHåg‰sÏÄ”é5E/ÖïÒÏá°kZ8q÷þv^á’ÉÛ;ô¢òi/Ç4eÊãêQP]”S–> ›rrA0åpöê”þ*õ!Ž(ÿXüοώ²Ïª(çcËÝÇÙó´P‡³}Ú'ðòÛï—•”MÎÇoï³UQ&xåÏö¨¤ ŠW:õ!Ž(oÀî’úʯ8ª¤œÍnOÑ€DTPžð¤’òë/Ç竦¬â1ªlÊÉ•É)/‘õÃáòþÃX+CÊÈo!¢|GÜ‘Þ]œÆ‹kTcoa­ Ïö©­jÊéÌþãì‚íúÙW jo€ßNãÅÍãj~À y!?\|È9úÿäò|_“!üî_ë+?ùŘ{,—OYr¿ K)ånçÛ·/¦_½ ÎÀ3äC<¥¼¸ý#¡|;û¿}9…”ŸÌ>‚Û9ðO_“j(“5EI_ÏÞÄW‹„òü‰‚@ÞÈÃä§È y<} 3rø?2töÁçí)rˆº»9Ü`*Gå0ÆÜc¹dÊž§æ›BÊëõm°„õôþòågXö>#â)eð·÷ Ê!8C'@Ê!Ä´„×<3aœÔ)ýú*é}ÍãàòzJ(#§0¸0‰%ñMîï7‡ rn¼Û ~ò Šq–y,—LY•ыҲŒþ÷aÕ|¿Ûo7_Jù >m’RçǨ¡öwëõ*¹æÙ2¡æ² kìý[øëýÏï’ˆ`ø(LÖØ¯PLûŸNRÊÈÐÙß®×wÈ¿u‘2ìn*)GG=/M4Qä‰S2eœ šrR–߀ýÇSLyâë» 7;º,oÀŒ…2Ýûú½¸Æ>ürŠ‚À”aïëkD9žÇYY†Í¸ÿx~<.ËÊ(O¼F ?RNµË¿øs°š'ø–Û„ò7u a»ü&†'$íòÚ(£<’úޤP»<_ ‘TÃGA`Ê/Ÿ&#)HùyJ:û°Éÿ’´Ë9åƒ2ʨ¶6–2ìcß8\‚o0¾çŸÊ÷¿¢ÃBûµž”ñK>+Búذ]>…᣷ˆòû9™ ïWÏ. edèì?Ak‘N>Ó”“UPŽ©H¤È±›BÊE}Uu:¨úU_€Ìc ¥e ¶‘ö /qqeÙʃu¾Ž% 4)ŵã˱£,\BìZ(sF`åA»Ø•êMº™2÷ô€§hzÐ.ÊH½ì )ó×]PV=‹Í¡Îf&”ùCt”e«é&ÊÚOÑ$°DÊŠVmö7éÊ]pE޲"q‘®§Üi@á(«3ézÊ›yÝ)Gc™ûbÛ™Gý¥Õm€æ(¡öñt 宬<5Ot岚+ïÊ]sª=eOSÊ ±™®¦ÜUä(ªÒ•”»·­ºSƦkz+:ž ­¤Ü#Ÿš[Ý›@9Quå> å)[m_A¹×VÍGR0‰r¢¼P2Ö+—Žò…Ë4±ž˜”,Íu”ù„˜çNzfÒQ¡pÉõò¹“¾5®Þ{ÃN‰ïÞ劢ŒÔßbÐS1-â(ó©D9ê½€CÉ€ÙQæS‰2i›{iGy„*R¦u­ÄÖÂQæS‘r1ƒ@kM;¦“ø€*Ì}W¶üm´’'ÌŽ2Ÿ ”+M99 ´§Â’£Ì'šr®šÛS1bv”ùäý­{Íí(Pßæš–uy¼§Âeƒ£Ì'fÊ€±‰öT¬t”ùDñeÉ]k‚’_e;Ê|Ê)³v›kô^¶£Ì§œ2{æššh¼¯ZÏDµÊQæR”ýå݇¦q#ÙÊQæRN™;oÕM4®üåQ)£Ü©)­¨¹q8²«lG™KåŽY;j¢å*¥Ü£W\\šC”üÌÂQæRJ¹gÎòM-ÈŒ¸äM\e. ¢œo?ë¥o¥Zì:Ê\"”ELc`¬ŽòEæ6…LV%;žå†c2«lG™Käa… )IÈ8q”Ç$±”ÓnXä(JÂ)ãn˜„ÍÈ r”¹$žrÒ s”G%òHJ(eRa;Ê£‘Ê)fQËQæQj$",cŽò•‰P‹×Œª .O&ùUsÎt;ʯ°šŽýr9Ê2E&%éfYe"vv޲LÊt¾eÓ(W4ËvS6re+¹u ã(GÙPÊ…lõ¢\w;Ê£ÊOÙæ+¥ðÏý’¼ÛmÈ_>¯  Ê~Õy¥@e™Ây*¢)PNþ í6ø›ò=yó€²eªª°k)“CnÊÙù(ËQV!¼¤¢4‡émWσízzq~¸ø a„» :<‡”7ôy!æ"5öÉ5€?½8Ïæ0H äîù¤|w1¥Îä£Ì®ÊÏfïƒ'³qO_cÊððj¡¾¦Ï«1¦¼}ûb  ÿ  §¯?ý2ý)_ï7Ô™r”Ù…³Tʦwü ÆÁø³Œ2üÂHÕËL9ö—ð§ð÷sƒ„>@ÿÀ.„ägrÈyAg—WµªXTµ.:IDATÓ A<[¯WÐO')åýÏïPÌKÙ‡í/ü)¤ì`0ÀŒòÆQ–.œ£ò£å¼,oÀ Àx¶ÙaÊ`Ñ…2*Ëð§ˆ2@AÎãqSVâÆ]¢ÊRt»üQ~,·¸Æž/('íòSFAÂ1å+GY¢Jç\iû ìcŸÆÁýêÙåóÏòÃv”Q1ä¥LúØKøC$ Seò*­Dìžá4‘r•Á—£,+ìaäU|õ¢\ ÎQ^Q©(O&\6y޲ŠJE™@þ+ãÏe-ä•Zelxé¹[V؃hRj•É6GYVØC(*•ÓFYå ïšÑP¹a *n5™¤‡õ²º/RþËÿNt±º7޲GAÆ«Ž¬_óÒðpÅñuÛÙå(³iBå&Ýû¯?e ²£Ì¦ˆÚÂ-=Ðí(,“šÈ[­î(3i’#YÔ<ìˆ Êä-Vw”Y4É½Þ ­OSgnoÔk“¹&I¤lÎ@*ÊÙ ÍT4)t²=îmŠXå(3(o”Eú8Žò"«ª%¹p”Û•·•"!ç>Ý(¯n’9G¹U“¼ë%†š,«A&’HÙÎ5-DŽÔQ‰&9 1•Ó±wlŒÇe^.G¹Y¨„år‘Í›¹ãNy”l8+_T—¨7䊌²ä‹å(7iBV,#õ‚\ÓîfmäzÏQní¨¼{v¢úiK±-~½åZ‘ÙLjú˯æ‰é4TÙ]y¶"ºw¾R:Ø1P—Ü0 5ùmr”«•Á¤iæÏ ÛÓ%B™;tN9ÊUŠ&Yò“¥éœyaŸãèÛæ3ÊQ>V4¡æ(<Þ¬p="ö¨¿%uý²žšÐµE\¹íy<‡d9Ê%%†9ùÛˆr§©è$lù£i”õHá½B °@îlÉC ÈeÊDʬÒÇJf­ [ ô³ºìØç•4ŸºÖØ›¿Œh®ÍTÄ.PPÒ¶9Ê…_RX3øšó"QÆ–ÉNCÂi‘,ÊC>wìN™2º®3ÐkMË×…ï,G¹ê—©mñ[ ô¦,`‡âîêK9m›©úZÖN@‘šnª£\úe^“B&w«'Ogʃp&”ãõú¦ðéîýí|w|ø´Gâ ÍSÖÄ‚<%3ÁæRžÍê³Çàå·ß/Û(ãñ²¼D:S¸baÊAá³8xÀ“VÊY}-`Ù*“"%ÝT£)¿>òM/nÀÅù93äG¹GŸ —â'7 åÌ»x†[Ù55w“ÊîwÌ(/ÀŸ‰#ñÓ×ð-úùGnÅÑ'ðpûôåÔ§½‹§õ´ÂǦŽrG¥½¯eüßäè_B9á.ñLð0 ÞÅ'ä™”ºÔk\–+ «TV–·ßnv‰orôÖØ¯WZäVœPö×ëË‚ßéÍd’N{)’£ÜUåÃ/§û&’Þ×׈'r+ž–e° Ê”]YfU…i•JGR3°šì›þ{ù4I…È­8¡¼}úbZð.Ž}ÿx ÛeÏQæ)i»| ¾ ñMK2+"·â„2r8^ð.žÍp*ì/åÁÜö£œþϤ"OÕxÙÓv¼ì Irîó|™Œ¥"5óËè1¼¦”‡Û}&âõgYVrà%p%yp”¹•:-íÿä1éh«h›#5³„(Raç~,=VÉ y¢ e§Û’$ž²"ƒ5JÙ¤Þ½/ú—OÁôê{ii+â•vá!1òCÝ3Òóá(·êè!0iIQâ¹EºRVTa7=æïnutÈÆì©éħœ CDZPÔDX´äÆijuOv•—%Y®…kI‚Œ$_®TQVY„©XeN‚éJYR…= a$4×)-jLY»õË2R-ÙGe›P !«• «ÉtóE |=®êvøXQÏ"\> úÈ«~_-°+}–H,Vʯ~›#°>v ›Ö"z_û‹XOßúŸ¾[‡ï¿ƒÍYJyýfþ ¢ü¸~‹N€”×ÿsý°^¿Xÿ¾¿}oåR÷+¹àq°ÿ´Ùmàx†z_K>\!ú‰+ýø `WúȽ>þ+å9ª±Ceý «æ›x}÷Ÿ1l—×)å“õõKD9^_nPC}¹‚©G¿xLÚo+jì*Ê>dHQàG_ùùÐO(ï~‡¬û€—ò’¢,¶]Fÿ'eùoëÛï¿`Ê«„2l³á!U–ãõïè/Ö?²|b+åRYàGþ ú˜2XpS&F‹ÕüýœPÛÇFÿ£vùÿ\¾_ïÞ'eôá.¡üÇÏï¾ÀCØ.ÿmOHÚå¿­¯a»ü·ø­”Q»LQFþõãs€|èã{¾À®ôë(=Þ‰Js_‰þÈúè¢(ÃóÍëký®‰§ß%”o‚ÿ… }ì/ëÇÍ…E}ìR÷+ëcÚåk°½DŸÂÊ6|X¢>vÈA9ªžÇþzö¤)·jg8ÿU5 Fêš±2’¹O—UQæV座ÛõÛ~‘ÖQ^½è@pD>bI§Œ0+|&õáy%Ç/ëõ]#e:½¦ÁVCY¿çË‘Q¬‹Ý/ ”ζ"¦°–M9ÒÃî«1&ýYwOy‚×ÙiMKgÖ(Jy„²,«{u”I†´d-ƒ2":”d+`M~ȉtÄ{§@•ŠûňX[AS–éDYÀj¸¼Lvó¡£ k »QWlìë—ó¤ö¸  °%l8¬ejmkß¤ŽºÁ–JYùf§"B¸vT¤$ìE›_/©w¶`ï1"/ÃøP‹ßW:£¬‰¿¯”‡à{rT5¸xo²ÜÅ•$Ú«›”›r,5¸<Êúx[e÷ëÖ1üÁY{ÂqèG9u<+0Ä M„íÑ7±¢- „zNÆiUÒŠåLìM¬h{ ;¨Ü|Y-l/û#JŠ6”’°;‰ÂÝ—S)š8OÙÓ‘²¢­Îêb— ; YhUå©ÙPÆ®a*«ì É{Ô%¾ªòìd äìó8Xa.HB“-~á©ÙzÞ\ÊD"kq¯ð"&Dñcð ÉØ™wè*»Bbjq‚W`ö4¥<¾ÂL«gÁöJ¯ýåÉô¤›K4e £ áê\°³HÂò§+eE»ƒ ÁÿÈß“ð4³BÂ)«ˆuŠpóHÆ3ë É¡<ò*ûXL¬£ÊC6kÎÚ=×JûQVq¥eFU<ü˜}I;SF·¶”Q⣠p¾& 79°—²þݯc{_9ïZÊužtéµ¥¬æ9‹zå‰LˆWR~ )‹HY›evÕQ®,È‹[eecN)” m˜«){¸Æ>\|F¾3‘·¾“ŸýsH¹Æ+vª„²¶5¶=”óñr<}üÓÇW ä;~—”坨txžÖ” ¬²ë²”PÞ?¸ƒ°¯òŽÏÊ5^±éðô¥lhÃÜHyÿÓIðê·ùþçwÈ;vàv¹‘2~z§5e«ìFʨôΗ{°@Þ±­ lfÃÜBùy°„íò|¼c#ʇÊÄDÎQ—êr”P¾_=»LûØ×îÃ2, l^ÃÜH¹YU”ÉJ })›Ùý’AY‰©ˆDÊæUÙb)§Ë€åqÉQ.ÉÈî—XÊéÒ:Í)×0;Ê%9ÊESΜ9Êã’PÊÙúI)ÙýªËO—µQöê(K"ó“-ŸÔž²iU¶@Q~à(KyPkdu¦lЋLâ²QGŽò¸$.;yHP6¬Êƃº.J–/;ÊÆÃ£µ§lX•-ê¦-®v×™òXõ‘¨Üx…cý)›U˜Q.ã(Mb(SAÙ¨*[HfJ+fŒ lTaA¹¼,Ê Ê&fy)3õô]óˆä•^ GÎ?5§œ?@5t Ç^¡`W7!ê ¤âBBæÃQƪ¸6î®’|ÊÑxvã쩞@ª~®æ‘”ʆæ~”+]K8Ê£S/ÊÕþCŒ¡<¦ ”{ªG6jœÄèN9KþàûéŠSw"už€L¡LÜÒ®ûi#-™<êL¤¶23…2qŠÕ“Ö”ª2%~“eRÎÓ0ÛK¹qºÀ ʈ³µ”›{žFQîí‡PWÊmó~j&8UQî‹ISÊ­CHí)¯‰”9‘0 •x’²FWÓò§©ƒ,rJýχe¦‡4ÆS¾álFð ý1†2Û|Ÿþ” פ SXñÖʬ³}FRÞ®OýÅÝó;pw1õ¬o€l×Óxqó¸š/V‰Ãax8ùÒ^ĵ¢Ì>£«h %“r¡ÊƘ¾ž½ñ§_¦_Àõ~ƒ)/ÀŸàÉìc|ú¾E^ăä¬û·/BÚ‹¸>”#žI{3)‡àÌè_¤÷Ëî/ðÍŸÈ-¤ŒklxÖã|Ò^ÄÇA¹u(Åk1¡d; ˜òn|Š2*ËÛo7»õz…)¿ú ÕØè,øÒþ¥u ÜÁ(ÆÊtuTU–åÃ/§ð»¦<Ç5v^–ÇF¹¡‚íô]•µºZʨ]¦(ÏfXÍa»üSF^Äág¤]>èC¹ëtUÏÝeR¦+¸¼]h—OÁ7ɧˆòû¤½^ }lÚ‹øˆ)÷±xReC£–2³Á®ð‹±œ”°ôµv2‚2uësRÞ¾ýî”~Ÿü¼°“æ0¢Ü¾Hˆ²Ed#¥ Nnúmñç)mõFƒÄ©µ ¸Í LÝúRžI5í³(G‘P“TC(çÙùäQ l­…²ÛSÊ,×#š$àÒÁq$„Y†PÎóÑ“rf%èíôO­8I$U3_Ò)g…¹o-nád}¶„RV³TQîou?†á²X2êr$™²È{Ó"")«Ȧ,´Vê:qIP×,K§,ö†Uxaê$²°Z%²Ø¼ Y\~6@Ò) n}÷&,*oXù”s¼ ¦Ýô&PAYtWrè:[•·«Ê‚oÚÁ›f1ñ+͆Ê¢KßИÅD¯ÈÞKeÑ-ÐÀ=01Ñ+í_¨ ,¼)¸&Ä€@é­ª„²ð:vØ:[DìJ+l5”Å×ÙƒbµEYeá…oXÌý#Wœ~E”…çjÐXÿÌ(îY(¢,žÊ=°ÞžÝUWEª(‹ï0 ‰¹¯ÏoÕiWFYüí; f®EÊRÝ«PFYBK:枞ݕ÷ÕQ–p†¹'eåéVHYÂ<æ~æ÷ê‡ )Ëý ƒ¹çJ8õ£@•”et:1øë¹vC}’•R–QU5iö?°iÎiB9–fX.,©”R–SWÕWž{Æø¯Âsÿ  5& ·z]z4¡,©­«>åQ)³Ì§èNYVw)ªä,‘2Äü׿–ö\{ÊÒzÅEÎ8™”A7ÊL}sý)ËüМñÅ”J¹[F˜~de‰‰|‹G:r)wì}1ÈÊ’§~ÎxA2¦ü¼úâP®¦úP^¯¯ƒì#âêù&ó Mü•åq5Sž4§G'ÊÒgø²uç˜rrÁ?%ˆr8{uš}t£Z])ãFÇÊ &ri÷aö§ Q”Á®D.×:SN0›AY>f<™”åÇÕ?.ÎWóåùv=‹ÕöÃvwSrv_Ê(àåùb5÷aøg«yx?Þ®O·«çÈÅ;W+etk&éÁÉ„é×½Ò †¢¬¢ÒÎz_a|µ€WývþdöÜì7Ø;Ø]ïÓKÞò‹(àÛùÝáÒGŽÜC¢ø¾ž½y6{ ï¨¸(OÜ}ô†û8EŸ?ùŽŠ«Îuͱ#œL˜Þ8Ø_öI'޲’‡¬„òþçwèÒ#oëàÕåÊ0Œ$àć»þÀ¨öaˆ|¹‡ ž¡ï¨¸8Êrò¦7Κuý(«ÀœR¨ ‘·uT¢…SNN|¸ûèŠêIV–Ñw\”½´]NþÁôê\–U`Nkì9¦üdö,ï å+”QÀ‰wýAQùT»ü†Ž«•r–Bù>Œß¾Ðµ]F’Ž™P>\œƒ÷ó¤× žü™øaHÒÇž£¨îIûK|ÇL™JN&L¯¾}l,٘͘áôk>çР”ecv”‰†¥Ì¶åeg™Ay[ó9‡¦,×<Ï ÊퟷjpÊ2‹³,ʸ'ì(sIšUy”ÑÇQ攤j[*ån÷¦Í”k¬óúJ.eW–ùÕsY¥$YÝG¤Æîhuß.Í­î›%´xÁj§Ï¦ƒhL”A¿M•(¹û.RW®‘QFê· PªHÂäÎåHÐ)#QOÓÇ£ îàNºy5RÊXù¦@C§tÜF{$5å\“ ·v-qQšP&ІA­s1N¤åD"v>æ‹Oadr¤!åDêHë^Ž‘t¥Œ¤‚´èMI*éñ æ:JwÊHHfü&F&PF%2‹/–)”‘ú³§)I”‘º’2p"Ó('ЏfÊT¿‘”‰²iðºFùLD†L¦œ©néÐéR&+([/GÙ9Ê6ÈQ¶A޲ r”m£lƒeä(Û GÙ9Ê6ÈQ¶A޲ r”m£lƒeä(Û GÙ9Ê6ÈQ¶A޲ r”m£lƒeä(Û GÙ9Ê6ÈQ¶A޲ r”m£lƒeä(Û GÙ9Ê6ÈQ¶A޲ r”mÐÿD±ûú»m,ÒIEND®B`‚omniEvents-2_6_2/doc/doxygen/a00129.html0000644000076400001440000001320110303671737020056 0ustar alexusers00000000000000 OmniEvents: pullcons.cc File Reference

pullcons.cc File Reference

#include "getopt.h"
#include <iostream.h>
#include "CosEventComm.hh"
#include "CosEventChannelAdmin.hh"
#include "naming.h"

Include dependency graph for pullcons.cc:

Go to the source code of this file.

Classes

class  Consumer_i

Functions

static void usage (int argc, char **argv)
int main (int argc, char **argv)
 The main process entry point.


Function Documentation

int main int  argc,
char **  argv
 

The main process entry point.

Also serves as the 'ServiceMain' entry point on Windows.

Definition at line 168 of file pullcons.cc.

References getopt(), optarg, optind, orb, str2name(), and OmniEvents::usage().

static void usage int  argc,
char **  argv
[static]
 

Definition at line 506 of file pullcons.cc.


Generated on Fri Aug 26 20:56:15 2005 for OmniEvents by  doxygen 1.4.3-20050530
omniEvents-2_6_2/doc/doxygen/a00264.png0000644000076400001440000001317310240666462017705 0ustar alexusers00000000000000‰PNG  IHDRâþݱ $PLTEþÿÿGGGo___ßßß¿¿¿???ŸŸŸÿÿÿjG ãtRNS@æØfIDATxœíMwÛ6ÖÇç³h1‹ÇK'Ók9§“9Ö2Q‡\NÛxÌe7±WÏiâÆÒ²í‰ÇÚ-Y"w’%KÄ—{ðBJ øNW$uÿ‰-š"ðÇË .þBP°úË® °wBâÐBâÐBâÐBâÐBâÐBâÐBâÐBâÐBâÐBâÐBâÐBâÐBâÐBâÐBâÐBâÐBâÐBâÐBâÐBâÐBâÐBâÐBâÐBâÐBâÐBâÐBâÐBâÐBâÐBâÐBâÐBâÐBâÐBâÐBâÐBâÐBâÐBâÐBâÐBâÐBâÐBâÐBâÐBâÐBâÐBâÐBâÐBâÐBâÐBâÐBâÐBâÐBâÐBâÐBâÐBâÐBâÐBâÐBâÑú9³¬œ{FâÑÊΉ—Ôô€ q0M[9Ó´Å‘#qÕ¢`×:Øþ≫Qey½ÿ-/§iØ–S6åøÍ掿„ăÊÁZN R&Ù“«×î‰+Až¶ÝO!Qq¦^fIÄÉKææ¾×Õ­/¸kQ?~’æÇ›J\[?ÊH`R[åŽ<¤u!¸ñ××q5xú:ÒXâú€GÛ{â»foó£sFl¹OÄuÔ–Sñ€ÿ5bË="®ø[P[ûöÂGæð* MXâZo[¨u¿‰k=¤mâžßkâZ4mñ𶼨|ûL\/ð /ÆZ ËÌÑC¨iÄ5·»ç'7woƆ×Zk’ .:÷)nqÝÀe\E¯¦F×\¢\4/˜ (âÚÍg“Aá“Û(âš›)D"^üjjqýÀ×´J¸¯8”ƒÐB~5‡¸öZ“l@—¹šC¸«\hDÉ ýÄ!Z¹^UÊÉ¥8Äqx¦]òjjq@ŸR6«†‡ó)¥Ïm3ˆC…È£üÅÔ â>å`ó»ÜŽJï!“ô8zÇñãòH+q°{%š@xký«´@§u±B@\¿‰3·¥lœyý‰ë? \a0œú³=×..GÞžbàIóø„6n0ñû”‰gˆÌž0;R¸—Pí‰Ç€"â%g’m ñX Jˆg‹™½WÄãË_žxæécöŠx<’²Äs̬ĹJh­}"žP|AܶïÌÀÚKB.bRë¥VFî=Ñ‘‰Ï-ËæOÀ"ˆ»oÛµC2·cRlˆ;¸w^|â<®J'°EÓˆ'•Þ#¾etî{ò˜ÅÆ3æ/|OÜ«,+¢×~­{zf#>b‰WýÇËCbßÈÓ-Yõ®É¤×a³ñ­9³;î©EŒ›{/­¿Û`þb:wèŽ?œì-qÛ~0Gôr_ôß\“¥uí¾êün91Ì!²+¾øÍ¥Ô ?hÄzXlFñb¸,¶Škͺã¥5o&ñÄJÈ·qöC;™}ï¸?\~2Èâ—#F\|¸]Û3ÖÆÚ±ñÅÇsJÜäÄé~šI<±ì2qnãïÉâsÛ5G%k¹Œ8û`6în â^ÍÉb«øÄ›jãÉí,™8ó㟠‹Œ)âmFüX?6…ïš«bÄÙ‡ðãÖ†xSýxqáYeâ´­òx¹ê“”éÙÀ ã—}†~ˆ¶J›Á*@\º¢m•§‘G¼©m•¸¢ÇGƒx^õ§Ô ßì!_ABwù+Ó¿ hñX§"€ÿOø‹ùUxÝwÝÃðʬ÷œžBÄg^µÅR£ˆÇ–\4 "žduÂëfö‡ðJ'ßd’á'YG¦XØâ~¹ªOkëK<Ú©0JS©æ,&¿æÔñF¢aĽ‘òìCÑ[·,›ï ñpÁ½Ö±‡©ªo–kK1Ž`$‡Z‘ˆC=Õ—ˆ/¿žßˆýíß>ñ¿ëßׂøÓóÞ…¾ZšÕ!NÙˆ÷OFܵdžLqû½õ‚_ÚØ”øÒþ›ýD½J:Ÿª'‹—×\]º> Ìù ògć~ÌÝ_òŸ>u÷®=ù§ËPúÄì»7Œ¸k÷æØûcZã³}»ÂÄW´µE«Ÿ>…üÌ oß­‰;U"ÎmüGûáõ­ >æÄ©_ÒEÉÆ]ûkå‰S¸†Kæ ò·ßɈT“8óãÿê_Øó Žòi‰ÿùñü–.R?þ£C7à~üG{yWmⳫÞÍžŸt(d÷ŠŒ=â«(â`lBÄi[åþìΰÿ(;¯8ñ{óÙb ­rk/^¥‰“ŽÛäèŽÙú¬OŽ?d¼ŸFn·"ăú#bo°÷£¾¨(ñÛíœøødψƒ½¢#~y‰•ÞêOx)á³C!¸Þ©H\‰—Tnâp=m¸/©¼Ä¨yUB$G oûZßy·Ú2ª%ñjô;,(À.ªJÇ,W omAÕ”ø´ýÇ‹ rtžÒØ­º"¯-qzqÖ9d¡ÕŸVa`JÕ—8+úÎF,h‘UG&#»Ê$ÐËRñú!¯3qQøš¹rX?¨%ÂdÍjOØÒꉢZ«Ú¸°š"×É•_º¢a×9ôõ¨-þxmן¸uA]ËkœG¢ÈÁ+y3wÔâq9xµÎNSƒv9|;Vï|@Õ÷ÙâÁ`“7søâiŸ×-ÒÌazÄ¤ìŽ ¾J4ñ¤¹mâf¸IÀl‘}¶§õɤÜ37¥äâ¤U4 ó7 EÌâ”.ù9Cv^â‰Ô˜øÆ{FUâÉ^¼>Ä£Ä nêÍ9Vâ)-©z'ÂνÙïªA<­eX{â ·r³Äÿ›Ö2¬?q²žùW° -´`ø““¨©•×3Šg'¨-h.?9›iÉ7q'âK)Ïý*†´‡ê¿\§rÈa·+÷eþk÷…JR„¸\[°\:ùâ}·á xé×ÄYÚÇõ·u$î³~7œµ ý¿­BÄ¥Úb(vâg–8O¿&,hýˆ‰ÅSg>dP&½Îr|j‘EŸà¦k âš3æuŒ›{‘6ñum1dŒŒåØ¢;ɱU’‰Óô‚øÍøtl® ›e6¾5¥=T‡x¼‹ôî…Ö,XÜ…<2¤#ÎÖ0â‡ÝÏ”xûL¤ÍIܯ-q±ÓKŠ­’B¼u ˆOVý!y° ›åe÷BŽÎRâžÖuš5|°(,àɆ8[ÈÉ7JœE‹`òê€ì:ðr¹ãÄÙNGDŠ­’1ý„´1ؘþ+Ziµ#ÎÊýÌ , '¾ô½ [C‰wm{L¸{á›—´q‘é#£¿ýÍb¥ãć$+¤BÄÓî-6Ä¿ýNXN|Ö^¶çÎ|ÈÖÐ3a:¤[œ8!Aâ"›ìÄýšÓZõ׹טx·kºW„E@áÄië°g’ÑlÈc¢XGÔ¿_$.å²öã,›AFâìCIęԘ8õãíYŸ°(ì˜.¬ûÝ%9¾²5´Y0³Û®Y„¸|ä¿°D6™ˆËw@7cëÂòˆ³¶Ê°’ÄÓyüÁ&ÜYç~kšþì0Yá²ü)Ýz’†O›w®õÄ¿ëÊV‰xŠ[)þ$kšc^õÄgÁ?M'¾ñ*™«'¾¥*Oq+…½Š¿œ‰yJ.© ‰¹3Fæ{ô|œh#.7XR™§¾JA^/âÉŽ¼Ä; ¹_@JË%Õ§tkñR=„$ÎÓDæz%"¯O!&ýùTÎÝß1²ŽÄÞ lgÒ’g,¿t×|$²7)‡¼ =ö…4ÛÎTrh¿¢¸nÛQ‡دԖ¸:äuA»–vÓQ†ÖÈõ×o:ªÃWª3ñ@¥—-Hé#q±¶b–ó ÒÈ5‡°EÈë .¨ãQ„ÐÈuŸBŒç”YÏ­1ÄBÙBáìê)8¬ƒ|ïÞ‹)@ù@úKpF®•ø4û{÷’a‰¦uL¡ç‘Ф=J(‹ÕÉï)bfäZýx+g—ž‚ fÑ"Ó"çxÎ+=ò† h×Ö]zÁó eä:‰·€ˆ‡A;ë¯&µ€ÜÊv´‹b'Èȵ‡ª;·+Ïb'ºÄÙá§wB(!/›À§PŽÔ^Q5£ð¤›¸æ§Ï~â²Ýêácäú‰§wm*!ŸY„}fÈv‹8Œ‘7„x„}"q-Z3 ÓÊOÆ­ qIH<]f!Zˆƒ¸0â'ö¹¿"We~ñ`m":¬eÙ„}ý?ý¨è!Zˆƒ9ñùçî±Ï`;® yóýëQ$ñå¯|{ñ磿Vq#‡".ÇNÙŽ«B 9Œ$~vÞ>†xÈ>‹‡0r(âK‹ÌÙäUïŠ|O >޹_Ž­+Bº,jɪwÍ"­ðbåУÏCúÝöÀàëY¼•È'Ûöɳ5n&ÇB3òÚdôíyì˜c#‡"·”|×}ïn8ñòv?³ %C>|„E-q;g„/¡?"ÄÊõ¬ýøád8¿_ݯƒÇâ­DF8‰&Þ¹íܲŒÄ-yø¹ÿxJíK¿‘ƒ’Sw ⪸æ'úç7Bƒgcæ©áó˜^ˆ•…³r–Ö|8wØ?ƒÃâ­t##œDdkð4#ᔌÈÕrNíI¿‘z•Ň‹çœÖì{gnÛcAœz•·,¾Àâ—#Ÿ8±2³í‰k’-âÄíFÆ"ˆ%Î2 §þÌ\ßhâ¬æ¼¤&¶ «¬>µ©iwqZs~ÇcYîÚÆYˆj‹ïÂ6G|‘­0mšÑÆÆéÏßI8µ/ín¬uø+m2?nÝð¸*dlQ÷ú^óœ·)ñcŸ8‹†bœrËýø†ø*žø,‰8ÍH,0?>$î‰HíI»‘ƒÞymW…¼`qÚŒø…åÝ Ç/ûqbÅ ¶ïŽ®eâ<ÞJ^â4£õMÉbº„SGïE½s—O¶Í3>Û™ÇI\woò}$þÆÿ*ẕf¿Ò$âA‡›íâ>:uôn”«QÄÖYè._ìF+òFXgqâüÌió-H OmniEvents: pullsupp.cc File Reference

pullsupp.cc File Reference

#include "getopt.h"
#include <iostream.h>
#include "CosEventComm.hh"
#include "CosEventChannelAdmin.hh"
#include "naming.h"

Include dependency graph for pullsupp.cc:

Go to the source code of this file.

Classes

class  Supplier_i

Functions

static omni_semaphore connect_cond (0)
static void usage (int argc, char **argv)
int main (int argc, char **argv)
 The main process entry point.


Function Documentation

static omni_semaphore connect_cond  )  [static]
 

Referenced by main(), Supplier_i::pull(), and Supplier_i::try_pull().

int main int  argc,
char **  argv
 

The main process entry point.

Also serves as the 'ServiceMain' entry point on Windows.

Definition at line 210 of file pullsupp.cc.

References connect_cond(), getopt(), optarg, optind, orb, str2name(), and OmniEvents::usage().

static void usage int  argc,
char **  argv
[static]
 

Definition at line 445 of file pullsupp.cc.


Generated on Fri Aug 26 20:56:15 2005 for OmniEvents by  doxygen 1.4.3-20050530
omniEvents-2_6_2/doc/doxygen/a00265.png0000644000076400001440000000246610240666462017711 0ustar alexusers00000000000000‰PNG  IHDRZW·–/!PLTEþÿÿo___ßßß¿¿¿???ŸŸŸÿÿÿhßEàtRNS@æØfÃIDAThíÚÏw¢FðýrÍ1µÍ“c·Í>9&¬ŽÍÛšpÜh·zlâ¹&¯.• · ˆóý+ûýŽ˜…”ä½¶àè{|ý5Æá“áË(Èاx#ð¯¢ÖVµ¶º¨µÕÅ´œ•Á¶´¥ôRk‹¢ÖVµ¶ºHµmÖ­UÓ¡¦†(ëË·«®µ–ùJ«±OÚEÁòíjC…î/Fì'ÕÅvµ‰ ‘2…Oç°šŒ¢\}ê·|™Ê»f¨`ÉkiþäŽ9:øßÓœÑ]†V<ÿ ]qå¸3ZÕVm8Ò®yçN´6_ÍW³u‹^çm¯£JÓºÐåÞZ › q.Á†èZá*]Úq׌MZÌ„¸€NÚøSÿI1æaº6s\à9-VKäíïeÃtlcÀLˆÒ± @CÓ-,•‚±š±#Cý‰3å-e‚9…¯aª=¢:LÓU@y›Ñ:‹^ûm¯-%oŧÍ ¨Å9Z·©VÔÑ俇žÕºç„ÿµ¶(öG{@QJO•hŸŠèîŽíÁÁZû˜Ò]Õ’ñ0}þ;ª%æÁaNJQº¶ŒÓë=ª`Ÿ*ýìGÝ¥Øç#[j”8¶{¥…ì_»­ÅØ/mµ‘ÑÝeW{á”^=n±[ã,»È²žJ²´É¸oç´ãÏíE~™5—¯EWN;Y[HË™§gµ% Úe›9«™>¿ü‚[µèOH[„†4V” >´¶¶ YÚÑe<ð»£ÖÝͤÇ~&Þ‡¶ m<> º7-Ô~Ÿ±xÀ,{(G O–¸ýô›SæNq/ën´ìÊ<&mÂzÔµ ûž-1&˜0rÆ–nò9gþ;NŒ¶ÉfÒrf”È–‡G±ô‹IÕŠ±=ggöZë -æt‚ÅÌØr6Þ-åí¯Ö€EÁXúB{ÿ©ocóö<À"oÏY2“­Å9a~9ÓÙýš¡ž íÜø…й9ÁfI0‘¦ÍÇ]A˜­¢’µ^û¿iå|«¶ Iøñ뿬ݧoŒ{õm|ÏŽt^:ŠÜMíæ½BrEÇeYq³õ!zEg–6b"åt]6{ÖNDyû]ÚVSR7µ¶`5%uSk VC'¹ZÆf½êQ{jfIäþ[Õjï?æj]í7…^Q»lä–E ±U­ñ슗~˜¡åÌ’¨8u¶­¥Ë˜2…“P‰\ÒêXMZ‡.NáŸÎÀŸ(” Í9`kú%ß!CýÎûtBøÓMl-†.´‡©v5ùÃÚ^G}ЮQ6:*¶^`ʼnv-AËX›tB4v`”8Œ=©â_hØ¢nÀÕ['flŽàƒ­!Æ7ÀMÞøŽ~w^o~[€©Ðbr`Ôêx@•^àf»Ù®VŒígº?¦Z]ä-æ43c þEcëŒàBšóvyÿøHh¹Ù$m8zÿ‘мׯ¼½yÛV¹A(`Þ^IÓâ~S-¡]x¶ÈÛwžBÅìœ0ÃÖ®´9!aáü¯¿8×nº‘£í^u·£Úx^Ø0ćòj7õw°‚Õ”ÔM­-XMIÝÔÚg±»g?*ŽZ[]ÔÚêâoÈ”¯(]¦–IEND®B`‚omniEvents-2_6_2/doc/doxygen/a00131.html0000644000076400001440000002001310303671737020046 0ustar alexusers00000000000000 OmniEvents: pushcons.cc File Reference

pushcons.cc File Reference

#include "getopt.h"
#include <iostream.h>
#include "CosEventComm.hh"
#include "CosEventChannelAdmin.hh"
#include "naming.h"

Include dependency graph for pushcons.cc:

Go to the source code of this file.

Classes

class  Consumer_i

Functions

static omni_condition connect_cond (&mutex)
static void usage (int argc, char **argv)
int main (int argc, char **argv)
 The main process entry point.

Variables

static omni_mutex mutex


Function Documentation

static omni_condition connect_cond mutex  )  [static]
 

int main int  argc,
char **  argv
 

The main process entry point.

Also serves as the 'ServiceMain' entry point on Windows.

Definition at line 214 of file pushcons.cc.

References connect_cond(), getopt(), mutex, optarg, optind, orb, str2name(), and OmniEvents::usage().

static void usage int  argc,
char **  argv
[static]
 

Definition at line 447 of file pushcons.cc.


Variable Documentation

omni_mutex mutex [static]
 

Definition at line 166 of file pushcons.cc.

Referenced by OmniEvents::omniEventsLog::checkpoint(), main(), and OmniEvents::newUniqueId().


Generated on Fri Aug 26 20:56:15 2005 for OmniEvents by  doxygen 1.4.3-20050530
omniEvents-2_6_2/doc/doxygen/a00266.png0000644000076400001440000003210610240666463017705 0ustar alexusers00000000000000‰PNG  IHDRÄà È£P'PLTEþÿÿGGGo___ßßß¿¿¿???ŸŸŸÿÿÿ4ƒctRNS@æØf IDATxœíM{Û¶¶ïχ¸ßâ=8ƒ­¡wžô±‡÷éÎy¬a«íix÷i¼Ãa“´u†MÜÆžîxV›¶LÍ(K±ˆu ‚¢Hñ ÿ¦¶L‘xûq-€ ¸øoÄÉrý[ßpR-‡Øz9ÄÖË!¶^±õrˆ­—Cl½bëå[/‡Øz9ÄÖË!¶^±õrˆ­—Cl½bëå[/‡Øz9ÄÖË!¶^±õrˆ­—Cl½â­ÂƒD}Z1c;ØþÑoq`åWµ‰ò~#PZyŸ‡×\£–¯MÑþ">h'ZaÈûŠ˜Ó Ûà­÷±9ó½õ>"3ÍÐtÆû‡XØ÷šÎxßwé\ g¼_ˆ;ŽžÌYïb R&3Þ#ÄRccƒï bYgk.ã}A,yk,ãý@ 2^2•ñ^ š¡2”ñ †»ä1“±ýˆ!'™dl;bàY ç¹,G }ŸÈĹL«+¸Ûk c‹«™Y6±½ˆUÝË7ޱ­ˆÞ2±¥ˆ•.Ç ¦­@v"V|ýj–[‰Xõ …Y®ÚFÄêç ŒrÕ"Ƙe4ÉŒíCŒ2l’«¶1’5ÈU[‡˼Ì1cÛ£Y—9®Ú6Äx oŒ«¶ 1f»›bÆ–!ÆlvS\µ]ˆùxõC½<ðÜz•]ˆùíjÕð/bC\µUˆÌ ±®Ú&Ä"-‚Ø Wmb>Âl‚±®Ú"Äœ&ÅÖì!6ÁU[„˜³µY$D Ä&¸j{ó66 eZ@<.î!‚ØW½§ˆ2Äãÿ‹{!ÖßUÛƒ˜§©¶ÚlòË{ !ÖßU[ƒ¸½¥S®y+žÎÎfÞÝÅ8šÞ’ÅìË„í(†X{Wm â–†ÞÚ-‹<Í?¬¯|rï£ã×äÅè|ÂöD¬»«¶q£‡ù‡›XxÓ1uÔwdM¢ÉOØ‚ˆuwÕ¶ n°¤˜Äù‹¦W¿y~ 9Aì“hÂöE¬¹«¶qÚ¼Ý#Ø;b:j_ÖŠ5wÕv ®'\~¶)?¢¾Ë!îÜÍ]µˆë[x×¾ÂÍ5ÓfDí{)âÎ#j*ÍØ ĵ \pÒéK\*f·ý+›äê€Xg3¶qýMIG3îqá©“ ¸Ÿøä3¹£ËšÇlm³ÿ4¤ëæÎè²HúYúÏ݆¸WKÒÑŒ{Eü—äÝ2fñïW¿ÅŽš­m^ù~ÜýŽ}èw´/æDܯ!ihÆý f !GM¹âßuÔéÚæÃÌŠéwüˆ{¶#‡8CL¶ˆGoè£'ñfms®/~C®¹÷ÜÆzê^§„sˆãÁsü;Q'k›Óõ—Iò)ˆ{Ï¿¬^Ò•®&0›g·z·¢Þ PRˆ6v›£›æ¨ûoaí̸Ä”[’ÓùfbX{§©ÿîÿ$Û>âd9k¹%•”â’ðç H®ÝªXõ¡Cûö–…Ž8D1K0ÿăˆu(C^؈ õAÌ’MÍY Ò¢[a#.T1UÛ3.;^b›Ó~#.:1Ù¥òÉW=¨V­:”òˆ5óÔȈŸàiãÖ_Såä«‘bĹä[ݶ:Äšyj\ĪÏïݶ­|À8}NÆ!V"?]Ú\4è4—BÄzyjTĪ«Þ”þ–rÚS;Ä*Ô'b’…ì Ùo…ˆõòÔ¨ˆUל#ý,ðÖÀ!V åþ‹«e3Æ5ßC ÖÊSïâtÕg˜³âåÃåÁõúòy¸™ÜÞä¶KK#O‡X}¥«r¨¿±˜Cü8{q:¢ÞOÄ®«Ü¬µ&LvQnŸ_†A¬‘§¶qc”D‡Zžk7‹æ8˜;(k¶C¦?a!F8«w³h‰tªrŽš8ÄY´Å²UŒXO…á¤ÞiÔ¶bXaT¸˜Gëú<ňõñÔHˆ1ê[@Üç L&‡^aÍç©[*Ï]á F©n> LhÏ£´xXù±?ipš%²±­«E!b£Úæ"ððšBiáJbœó9,}èWš1R]³l4ñ±²ltiZ]N5 ÄHUÝ Õ¤eµ)ˆ}ˆµ1â=BŒÕæi>š4,ÑædsˆÕÉ!V“&íJ¥IQc™•vˆ5q(Ö!Ö£Y™ô(‹mˆu2â½AŒÖèú!Ö£0¶!ÖÃpRí b´Fwˆ«eb=5“'œC¬Rû¯ÑiNZ´éVZÇ!V)-œŠ]ˆµhÒœ´(rÄxvåWË!V)-Êcbͺb= ¤1âyìWË*ÄZøÅ‚bà¬ôC¬C‰T#F<âj9ÄJ¥C‰#Ƭb¨EÏ·# Šä«•E²1hО»Ò HŠ£ÖPGÄtƱZ9İ™9ÄUR‹·‚zØQÿ§C¬X1¤âJ9ÄŠåCªâ°åík’ê¼ebQHamŠºP1¤D‡uv Ù!†7â6· é¶bHña ¹¬4„‚ìCŠ ?:¾S¡=ˆD¤dâ¶—Aê…lrïWM6!nÛ¡1È1ZfiI÷É1RfM¯ÖkIVÒbœÌ¤lQÎ[;Ä™I÷¨2gˆC¬>3YO+™FïWMö#šÃ蜌åˆQT¥¡A˜°\J1œª€Þ"ì–˜C¬23è[ƒ Ù!V—œÞªËIÓ÷Ú^ÄŠ–qˆ'ë«ÉL… wLÙ!†RáF“ª•X]wˆ¡”Ö(^‹)fÈ1”rˆÕ¯¶1d‡J¸oÅ0侯šìAœå…´bž…Òb´Ë>ÄhÏDð²C œfƒò1vˆóÂçZô©¼Ͳq?/ÅäqÖ1úzc"‡!÷|Õd bfN=XL»!;Ä€Yq¬–W 6CvˆAÄàräÜâϼÙbq¿M/âN’ÏC¶1^טØO[ªAÜØEô<¤¶ 1WnŠ79k‡$#jD\Q↹.‡$£ofê×2vˆ!D[—oT£qÝ Ë!†Ðw^ ÜòüÞ£¿æãå<û*ù¸ý[qÍ Ë!†È‡ÛO§à^~ûýG\3èê÷ªÉÄœíÈÀ&ÿàWwÈ6#ƪÜÿJî‚ÑúòEüpyL¦³ëEp¼œ/Þ“øïa~Oñ²”ëìCdÃí/8jªÑð5E|?ú‘Ü®æ/F–óç±߬æù=ÅUîbiÅÊÑñ’ŒG1bŸœ‘ÉÒ¿ ?,oýx«OüüžÝŠS”C,­N?sÔ¯V?’¾xL^ýèSº÷o’¾XqiÐåË*ðÜDLÛ=n=¼hcÅw$¶âÆn{‚xwdÐïU“ ˆ\/…YüÒô¢éÙ÷w‘w2Júâ7äîÑ1z³œ?¾¿†A\t9Ä’ C®&LCo§>g/>¦#ê“?'#jòÉB\èbÙ<ø­oB‹s§+‡8ÏØjÄ• ¹Vól¨œ£ÞÉ2+—C,™E+a^‚˜6CoC.ÕˆwO^†xô÷ [ýÑ«ãô#Å·ü0:ñ5qoŒûA<ÉQ¢ò·+Ôé‹cú¯^f"îk¤7ÄÑ™·ާäÅâxéSÄãxóúòb<½%OYNâoÉÃå0ÞD×ÚŒ§'d ÉÝ¡û0…¸§!WOˆ—?EïÈóћŷWWï}rúž"Ž®§ãã× \ü-¹YÍãM âá—ár8ú@î=B÷a2 qOŒU#ÞõN›áÖÛÈ‹ÝóÙò÷krñt÷†˜Œ'ñ/º]üê?Þ” &ô?Ÿ|&w$Ù‡%gâ~†Õý ž$–L©Ÿò×q²æ‘"^ýüŽþŠõêí:ÜzŸZq¼i9_¦V<'#³÷Á¸OÄqoûõ_w$ºHGÞÑ$òÄË_ã‹&ÚSGíMÉÝ"E|H·­MFÜðZ9âî'83¿ S²¸J?ξ$#jú ú #êq¼‰œ|J'Û¢Éq¨ÿm¦DÛVÀrõ‚¸¨Å°{êQº–§{ HÊ­NÁf¬â—MY-Ú8ê–[ý«ÇÇ_úG¼º-mâW¡/56èüé‡\DåˆwÆêï4éiσÚ?”Ë>ÄT¡v˜ ¥ÁíŽíDL¥æ°á/Ų1•>k÷v—ô#f­q±rÀvÅ1õ¡Çl×ný 2âÈ¥òÁv©|‹úǼ‹±;ÆE ßÐü öÜ5ïæ×£"VÐÈBÖöH¹”1š[Q8÷¾J-,ØR½Qî/l""b5¢øÃ$ýP.g‰Õã!V5»ÈtkG=P®È©;FCªšX䋺U> yŒ]UJœ N+§l'B5åÊ%<ÄÊfš$ž C4åJÄ(Ý1b¢lúAê m,S®.#FwŒŠXQc†rÉ”«Ëˆp~! ÞŒ·øÞÙÝ)YcÀ0åšèQÊóEE¬¬:ñRÔ‡¨I_½ÁC¬° %=ušˆb]WDåþ ±RG©¿®KZ¹«¶1ˆ' ©3åÚPmƈ“Ê)­d?¯ rm U›±ˆ!\[©\OR±c!V|ªÇ TrK¬þµŒ-A ~E¦r=Hµƒ˜VN±3 ás‡ÜP@¥­ƒ„Xù•Š,€!7pTÚ<q“@!7™ªJ3FB¬| G§N8Òtª4‡¸-a0CnĨpòqǵ7BR×@yëæò©3‹«k% oÝ˜Šº&ÂAŒpã[é…Ì­Ææ4”•Þ&Ä*}D—ÜÜ ÊJo bå!Ÿå ¹¥|ªÉ&ÄŠÇí҆܂XÕjbÕ£:ICn+ž¢V¹.FB¬üò[ò\m9ZÑj â¤ýÔϰH9ë¶â©)>bŒá´}ò‘qÖm‡ª)>Îýb,Ä+Ï% ¹µ”ß2Ä(Ïsv6äÖÒ))>Î L4Ä8Ïúuuµ7ƒŠâÛƒ8LóÂPWÆ­‡™‹¥ÌýTŸY· µ¥¢øHO&¢!Æ ’ÒqûA Šob¬ )ÖíeS`Æö FQNÆeƒo)$ÄxCjĘeâq4|KYˆ/„¨xÈ/Ž}ÀKo#b¼¢ÂŒ9JÞT6"Æd,˜ÏîÐ…·1"cÁœxö†n+;7åÇêzΗ«c®v>?-B\Œm^»':îýÄÂ%ƒíÄ/¬˜xs©jC#bÌG¶±¬E\;G,ĘkWX3¶q]ËÃ#aì˨Ô0ÕÓÈ  0æÛ´µlF\ýÄ™ ÄüŒù ÔŒíF\€œbP‚˜›1'<Èæ²qrúìC÷Ýå‡Ê½ÇÙ'1ļŒ9Cš±EˆkóHã¦1ϺG¯ŽK;~”@ lŸ€í……{z«¨Ä€Ó×3ts²¼*íæË æ¼'áKgT#Æwû~ЇøÿE0$woÈø?/?‘‡ËáÓÌ#ãéæÙˆùã{ê}A¼…ÌöšÞÿ‹Ž>{oJ>GÃ×äf5O¬øøuº¿8bЛ pflâÆ8ƒ‚£&ÿ8¿öÉgrG¢É/K2žøÄOO¢ Û¡b®!ìЛCû8ë‹ÉÝ5Y ‚YLuñí|õÓQ†˜H ]ÕfÆû€8Qç.š|²œÏÉ(þ½þå8ò"Ä<Ý1oK€µ˜ýˆ³iÌÂÔÇ7ÿõêøpô†Ry‘w’"¾–DÌÁØ!–Pe¥þ‘¡{¼ü5QSÄßÇÙ‹+ øÜóe®†‡òÔhïLìiî£|KQÍf&¸GÓ ¬ÂnÄh·!òy¶íÀ¨ÉlFŒw3±©%q#2c‹ã- ( .L›Y…¸Ð¸uóÊ·ºj‡¸»òˆkgšÔ# ¾ã©­E\›b°0y fâ\&x먫Ô⪹ÛČѣ<ö›µÞÓ-éðmNqI›LðžiªQsmq=µˆû&ÜRþ¶€h5»§y¡Å ¨Ô‹ NV£EûhRãiæwWòdÿnšªq%w*͆ôð)&b=7/3âOF¾6–!F ÆÈ¥&8üàä«cbœ¨¹\j*ˆC,“™&~š4ޏ0=µmˆu¸`ÊÔðx"Ò gbmü4i, ¢§FCŒå? ¸*-в-g#bÀwKªañ>D"|B 9ކ8QüÃFµ#n’Õ± ñ€.»ÔhÈU[mÄ cYŠ˜heÅ5#.¤—C,.qÄÕµGòÔ8¯¨&èÏk†¸š&΀ 1î#MÚ!®¦‰ã©bquA\MH ‡8Q ñiðn³!‚aaçåù½·,?~8& •Fkbn~m÷킸zÄ…â©mBœÏ#A¼ü0:Ù˜³?å÷ýH^~ûý]%â§_“ýÙŸ›­²ˆ+q¢˜±ÕˆÇô“_Ü×'‡„V"~ý¥¼?âªpˆ•o„ñ“G–“Ep¼¾¼H½!ãøÏa4½}šy„Œ–—Ã5 FütÃ<Œ®ÉÑ?þîàzœl§aª—ɪnˆ+axj«GôÇóÑ›èzš ž’Ï4utü:þ“åòf5ߣŽÿ_<{9“O‹ãÇ·§þòv}»ž“ïh˜êeòª#â¾ÌØ~Ä>9‹Í’·¼hòKüççhB×&ˆ}âoƒQûÑdý~¼š¯çOÞÒ_Îéã,LõÈß8+G\K¸,B\Èbã¨Woçd¼úù]‚gñí|3†8vÔ¯âþÕߣöÇAp5^ÁC4!;ˆI4šË"®‚„à©­FL‡[ïc+^æ¨×¿ÇÆ;bˆãáÖsŠxŒÚâ®{ütM~,[1âŠF@ðÔXˆæ/ˈ—¿ÆM´/ö¦ô¢iBf^Ü¿aˆ_>K.šüm0jñìt8~MÈ—¤/Þ"^!–4c‡¸Åvê#QÇ}ñ1ù†¾Öå˜">÷Ò©ŒšþwtCƱuG×GŸòˆ£ âŠ{œê‹°±uG\AI½§FBŒ= Öq%åžÚ!— ⲫVî©‘–`¨µE\ÑªÍ 1ö€Z_Äå¦pˆye â’«Ví©bqÉ!.sRlÆ8ˆÑG[:#.ÍU+ßc#búPÓ¿kô4DCQYyùìÒÖ N³Ø¼ÂV}†ÚíŽÕzjĈ]qþ%ÅÚj‡±ZOm âM&.Aå/oˆ‚³+Öí ò‹¨ÔS£ÄÝœÛÒíò:ʨÔSÛ†8aĻݱJO‚±+3Œx‡•J3¶q6žVüh1¤òÎÆpÄêpûKŸ §mÊ3Vè©1#4:k!c 8UޱB3¶ ±i„ ´øË¾ŸˆY¼-ãç‹ÌßH¢Í©1Æhký0L9Æükc+jâ0ûaœ¶D¡•¯¥ö±±FL’!WJ–^Òs"x2# Vo^´‰Ì4bB§dÃÐTÄêG[‰³3ÔˆIrolPüÐ&±ºÚ€x`4ám|î{dÚ!VÝú¡Ù„I¶J…ûN·˜Ñ(G¬|´ã5šp¶ˆ?¾nˆUûiÓ ‡›Åf!ÿ‚¡ +G¬ÚO‡½y«“Âíj3‡¸J¼:+ç¡UxjÕˆUûiÃM8S¸Yùͱœˆ™±rÄ•…‰i±Ôm!,òˆÝS'ÄÕ~'’N7I!4ßIgC,â F¬Û‹\äd,âšëÄ(+ðÑ$†X¤êªWo–GL}´EnÚ`Ä5%°b[:âÔÑ "ðÔÆ"¶¦N¯ pÁ“37ôB\W†˜7k88Ý}S÷¬žÆÞ.)52+¦?–÷+"ðÔj×ùR†˜Æuo8¸Ý=­{VOy? ‹Òç슎Ú/ï§'âÚû Ðaò¯V5ÑÝó)Ø tú2uÔ‹à˜Lgg3ïî‚@ŸÎ®Yèó$ê9;€!æwcJ×ÎO3@4®; ;IõOg3ɪ×-®aÝ}<}8yXΣ¤†Y=mC|"~>zCÖW>¹÷hôÛÕœ…>O¢ž³´B\;æe€hÿºx{:¤áÚãjQÄIuhÝâ^:î>~~‰'5Ìê©ñA/¢9/ç>9#ÔwÝ}² šœD=Ÿ$ÅK]:·§V‰¸þ>îq4Y%qdҘϴ:´nwdÝ}1¦i ³z†ím&ÕØx*X±?kûê76 €þêÇ-b¢!âú¶Êõ«qræú´ZbZ7Ÿl¢»oêi™£Î.š¨{ë䬧ÐïˆÖˆî#fíç+ö¨£§V×Í'›èî{ø`ë‹ïbýî1E¼.!æîŒU"®?ÏÒ‹¦gßßѾ˜Ö'®Vä1Ä´n>ÙDwÏ!^Û‹xÓ³µw»j:=ùðó2í¼tDÜЧå¦>âzPÄqµg_b¶mÝ=‡8WO[gÁ L-W1›­º_l´6Ëy’ßÑ9jÂß«C\mÄIuöqJuû¾ At@\]6¶€¹™h *Ò¦ Åózjeˆk ué™¶à  —©ÛÍD¢â#>8Ø«ûÅ|'µyˆËƒ-VQö¦/Öž±ˆÇGÌëÇ”!Îÿ‘«)èpKcÆÂÝÿκ .–Ímg@¨uìùŸ>ËK$Fúæ˜~S#®¬*Û ·TþÏ¿l—Ê«)~G.†„Ôé0ÎΘ!–8aGsÞ¸”#«‹×—¹v0{Ò7â?›W–|ÿk¸º9æR ]ŽãÛM™+Vf1}š±”éfêîÞù2qvUÖÏóãò¦»“”C\¡Œ±ú¬ ‚1ÝÝ;i;âŒ1š+ZöÓýmÖ#Þ0Æx-Ò5]½_Ísˆ Y_î`š¦gôBvæ­ÎµB¼©¢J3–è)¹…‡øé÷w_ ˜~ÿíŸyÄÿãÃW½¥fÜ}¤+¨AW!Ž˜‘Übº ®òˆÿ'ù§befŒE—*ìÈ~0™A7‘áˆIec§÷ñ%Ó/×3¬ËPkÉzºþ'*6zòQ®³.>MÁÞŠiÝDxˆ¡”­ùÞq@¹æOC>‚"ÖzÌÜ$é[døˆ©Ëм…ÑC.&AêÁIDATnè:Ä5RñLmóÊÂgñÐ0ˆ7Æë7IÍckaý»0ÓõnÒˆó=¯±¯¨–>-ûCÜð¦ÄÜËÅ$’/¬â&©z¾ø ®ÅC@G)éä¥RìGF#®} ZíEÓ˜^º w·¦‘Ô6»l¶îìejgl6â–ÈeÄÄò’àù|ˆ 6±¼ãéqó#ƒUŽÚ¯øÓ!–NAe ̦6gˆÁq4ž–'Lßñd £éíÓÌ›Î<Š˜†þ<úä7Å”Ï.Œ’ñˆÃ&;fˆŸÞ$AãÉÍjÎOÉgr8ú@cÈû4Ô9KÕÒ`¶Ép+¶Ú_â?>Ó¨µI¨yŠ8Þ‹¦ÎÅ”/!‰C\'¥ˆJ ^ÎÉ8‡˜ZñâÛù’®íM¿ú:jº /ßpÜHÄîqØ0¬®²bŠxýËqü݈!ö˜£ÞZ±CÜ! µ/ñ©÷EÛ¾8‡x4š™÷Åobj>Þ–öŹ˜òåš™8Þ(oïˆÃúK§íˆºÐ“o’­ñy2¢‚÷éˆ:S¾tgØ!®•Úê j !8¹žÞ•º=µ-ˆkºcAÄ‹·ßçþ,DZ51DqûG\?ë$zâè~’û«ÇÖÀù-;×OI@ÜiÊuˆk…ñ¢ù*W ¸0”3o¼e⪦¹_œ¯ yS˜'¤ˆÓ5ÎåÚÀ, Èù‡¸Nª×=þ ´êcÛLÆ!)¬>ˆËݱäRüä‰C\/Õˆ7v¦j$”¥kܤ¬:!V6:,|pˆ+¤q¸óZ›–2 1L{h…XÕK• §A±ˆU™Ø¦'(f¦½`ZC Ä;"xm’5l-µ•ˆU¹êü˜Ý3*¨ˆs¥Pcca>qS̨œÚ!VdcƒÒOíÕÚ!Väªó÷: ñÔv!.–#ËwÃf˜1T)5D¬ÆÈòLF kMŠ¡ÄUçá©ÁÎC«±²üm&Ìî4Ô±+Ë#6ÀŒ­C¼cW*\uþ„ˆážˆ•xÒüâ<í=5àI¨ â°ñOåkoƀ砦ˆU¸jšEÖršG„<uE¬À•ŸwÑÚUƒ®Ñq©É¸ÒÂrZ»jÐóO[Ä \iñH]5ìé×oP¦œªŸø†Îb÷Ù=[2ƒ/È,Œ·ªm%j_žÝ°b›O-yÌ›ýËê‡6í¡1bøîr'èDES–„ðHð –Ýçͧöª-ùÒ:#w¥»qEÊŒ5@ügó Á2ÄЮºs¢”¾ˆ[†–!†vÕánŠán{j€¸…ˆmˆ]u q)§ˆ[žÇ4quI`]uâ,ö…RÄiV§G[‡ÖUï\5¥r¿Xó»qÍOƒ·åÔjÃ"×fÏ\F–Çͳ$È6žT-bvt`ÕñÆ!†uÕ»Cj¦¤íØ›BXóïÆ5_þ:úfR:¬â$§mÃ1‹™Nø'Ggé‘Ù·&#uÕ¥!ušÇA‚x5ñkqLâ»ê‚˜žG¹<ÆYV\ˆéÑÁb!MF êªk§¯z‹gÍÿu¸ôÉÑ-sþ4;óÈê*nÄd À¸ Ž¼>¸yÒ÷ùey,çã§™'ywA–qFl¯FÄ)ÁéìlæÝ]Œ£¸ ‹Ù—IîxC߯IŽ1Κ}µ~¿xörx³ŠÉÒ­sŠ˜n¡ˆGš‚›×åÎN¤Éo"b@W]8mÀ¿$ÄC!ÏÿzMÖï}]5CL·PÄ>ùœ nž½ ŽSi7 bšä]ŒÛßx^®£è9rGcpG“‹¸$¹ãMD ¼±:µ0߀´±þ:&ã ¸J?m5Ý#Á¬)òu]îUVÌ2!I7ˆËŠ_ýæÑ’YÀfsÝdİ«Æë“üPèóÇ,' âÅñêðx9_útKŒ~2'£®ˆ )"f™ð"ÞôÖWbfņ#sÕ­Á>² šItAÏN‡ âø¢érBî>ÝyGq_üfÝ qî¢)ë‹i&×\ˆ·Mw9Ä´/¾61œ«Î¯Â¬R6-q¼¸"äè†&çÞiðã{ròɧ[ãlð\q~v+E|î±L8çg·¦3ïÜKӵ߀X›…=Í'”牨R=-¯þ Pì žÐsÔÿÊMrUí âÆ’@¹êAö£Z]ç¨C÷×C#~>:lÜÁÄP®ZbR|Y2ÇîµF¼(N ‹ÈUZr’¼ÓÄûf¢1ˆa\õ ÷³JÒ79 ;Ä]¿ÈD!bÈØ {ÌA ²¶=lÉ dI@ ä6+nž[¢;n ö´ê£r«£n^GÝV£¸êVÄ]VÊÿY·Ì SóæzŠ/•7 1€«VÏ%¬*3<_”Ø*mË×]U<—Š ®Ò^Ôä Ó!5}K×]a<—2Ò׶JÄÒ®:ËÚŒ©J†Ü¹´v>BÎiX’uK U2äîŒ%KRG›ip§)“dÝU‚اº•ðºÓ6é„XÒU#‚(Ríêr×¶I+Ärçw®åÔ˜1Ùu×]Ï8ÄRçwXùZ…+¨ŽŒ‹gb)Wë#ß%wc¼×ˆeØ„5ŸÁUȨSáÎ@K\5°* Ë”O¼SáÎ@KÔ¾%¤ò‰‡m ŠÚ+I´CܽöaÃ_À wÿ´ÞoÄ]õT4WMÿ¨ºÕ$°#!ýw®þîqh®š xWhV/!3w­þnmñ\uòLJ[ÊQ)CM((uÕÅ©ÌQÆPçŸ.ˆEëÓ±þ¥6Véª çaxÀ½˜~sT1ÚwÑqG6¥£Ð\õ&Ö„€€N?cCÍa¹êü3êâGËÈXÄÝ쯢ՔºêüÂf åaÚóÔq'6Ç(uÕ¥µ>­‹dsËd!ŸÇl”®ˆ»¸êªCTºêR~­KÝó»ì=b0ËWèªKEB ä`Ú“Ñq6•G€¿¢ !C‡Xð a6Õ(d¼[/!Ä@þÅdÄ`WÓ 祿Lj‘V±Õí¯Ž±bÈøMÒ±(šÚÝ•1Þ¡ä K°ê³QƸ˜®C¬úÀ†6SŸ˜¥b¬ÎXoÄbdš*«ˆqâåÃåÁ59ºÝ|¸!ÑÙÿ¢±,³]R9ÄTBά9€›šy®BÕâÛõíz¾xöò[öáíé0zwF^äv©:¶³´@,ÓéÎì+a\xNÿ‹&ë·é‡ÕUä=yŸr»T T„ éŽXÄÁ¶åÓùQBÞоxBf^n—ŠC%d>b~ÓãÉÜY× ŽÒÙÛú›ü.ጷôG,p8O“;ë\z ×Å­ÚÅIJ5á>žkGÑZÓÛ~¬G¼¼¨ÚÆSÛ€˜Ûð8÷ŒÏŸk=â×ê]p:cs7“ARÞæ*8 ˆ»^F æ6O‘4CáçZsí qKµÍ@Ì骅Ÿèâçje…sˆ%Ä ¯KNUï´SV8aÄ(1bzðÁ8™:<»’eëK%ÂÕèpC(!Ê›¶Ç“Þ(á©MAÌ— äÃ"”‘Ö<ÔÉÄ|SW0YeÉñRîœ/ÆýDss¹jð[Iœ¯ZCZÖ){ss¥£bùÏ0*>‰Šdƒ5;‡=)z±Ýaw­$BglbŽ””=lÚvó¢kƱQˆ9ÚQáLÍN¤ëãÝÉÝ(Ä®Zå3ã†Üolê¦j›…¸=-µ\šN±^cS÷‹´ÑÛÛQáãĤùmz½Æ¦nÈÛ0Äí©©EÜè­ûŒM=¨ïÄLCÜÚ+õÔIõ%è16uÃqˆÛÎz创 ¹c3n˜Ÿ1q[zª=5i"Ùe¡6D5ÝU¼É[ZÁŒ›¬Uœ1@숸-E3nd,œ?ÐB›·ôxfÜTáÈŒmBÜÖ&f Êbq[ýxËHÄ-i¢˜qcØ ÁhÀUórÄJÚ»ÅNP̸1ü7EÔ_›‰¸%U$3nd,D&%[hÛ·˜ ŽÆ 噬½£m*âfŠ8fÜrž -»ˆí^¥ºsÄXÄÍéâ˜q[—+à­Ã»ê 4oIãß«—m+G¬¬±›·áàYÏNåñ¢mœrú°MÆ6Ä%¦_˜‹¸9åú/9žJIÄ…¸µå†2Æq^Í[oÆ ˆ¹BÈp5A:ÍìÔØ¼µùÂ"æ©×rûô¹H‡˜?íZFÌw­Ó9}"Ò!.ªÙU×| Œ˜÷’¡r˜>Þìï¨yò¡:khÄÜ“•Tl³]–ç÷“ø×8ùœ‘­EœÖ4)ñxœÿÆ|Ä-WN•yƒ#æ¿ümzÒ1-,ÃøòÙw‰b–,CüH>MØ7 n™äªú–!>©&¸mOÄ"sµ”SL,ÿÃäŸâ¤`ˆ“-Ñ„}ƒXõTbËýˆŠædˆ}úãcéËnˆÅæ—«)‡ù© BÎÈÝÅxz“„0²]Çinõtæ]¦¡Ül@ÜÒV´}±_ú²#bÑ{a9pLáº8þ‘{oüöô˜,oVi¡š 6ˆÖW6Yqëò€œÅ°FM?Íþyyñ4óî.Á0>í¯ÇÓ‡“‡¼Éˆ!îrŸ¨!(Ì_4%ˆïÈx²º"Ks*´()El—£noÜ-dÖž©G×Ó¸éî½ÃÑr»š‡_†_HÎdw¾X…‰9jŸÐpåô_Š˜×Š_ýæÙ…˜#ÒxÚp¬3ÄÔQßÅÿ&“¥?&ô¿œÉˆ"–u]°âd¸å§V̉x{ÑäÙæ¨¹ž,O ˜9ÆñêçwqÓùË ˜‘W?fˆçKƺ.܆H.šbÄoO‡×|ˆé¯ â;ûsùÈÌnê¨ý¸ÝFÔ–!KrЉaL¦>bÄñˆÚçA\œúˆGÔ_ïØ7¶ æŸCÜpüÈcˆGoÈÝcŠøZ±Œ!¦>ª¥é&Î>ëa½]jÅëøÒñÜóÉ"8&'~fˆ}YÄÒoŸpˆëÄÕ°ùáV»º!\²U’C\+®î8ÙI5ânÞºx¢Z{Ž˜ÿ²T=â.ÞZæfbÃéXñ]ˆ­¸# îbÈ«>6ˆ{²b4ÄÜþ±¸!ä稫UûÝAnv«(»óÞšÇA,üÈKêi%÷Õ#"ædŒ…XÄÃAz3±ÓRùôü¨‰pnb>Æhˆ¹ 9™C猊\“@éÞdNV!æÊ ôiˆñ¬¡În’tŸk$lbE¯“—P›·Þž‹~0h^ùgb 7Z'ÀûÓ{h {X†mªE@µ† ðR¿4íÆ3Û6Äâ^©WÍr<ét3'ÐkTy|Ç©#ã’C†xÃ.o¶ÌQç¤#㢷yí*w"Ö“q†ÂC ݲ´±¦ŒÓˆ®Kè,±±¦Œa^ŒÝ<ÏQ!;Ë-†T$ŠFÖˆEñRYŠÈ!Â)ë%ºâ.|‰½ˆµ‚¼ã ;‘êÈ—ØŒXȰ`ŸÜ¦–C¦?_ܬþ!×ÁáonËš½vÙX~]³dæïîje'—ÊvIJ뚻‹ÇNú•“í+nùe?â^ ]oVPæY–}@Œ d†Nû²f|Éþ º½Ó"ýø’}B¬ØøXƆï&¹I„Z‘ µgˆ©`­­e…«ÚCÄÊe7¾©Pí'b"ë²g&”koSu˜C á§&Tk¯3m'—aCÎ)¢ÊÌw&*RÅL¢š9ET9ÄÖ˼Í; Ê!¶^±õRØuÆ=Ë!¶^±õB@ì:ã~å[/ÄÎS÷+‡Øz9ÄÖ ±ëŒ{•Cl½bë…ØuƽÊ!¶^(ˆ§îS±õrˆ­ b×÷)‡Øzá vžºGá vfÜ£bë…„Øyêþ„„Ø™qÂBì̸7a!vfÜ›Ð;3îK±õBCìâ°‚±C¬Pøˆ«ºc‡X¡z@\Ñ×"gŸâ®êq™q%⧉C ¡^“ì]8iÇ\‰8š8Äê1 SÈéïñúò™Î¼õå9º%ÑÙÿ¾ˆOoÓ#â®ê 1…Ë~&ŒÄÑð5yX_E×Óų—Ãè]bÅǯÓýâ®ê 1óÖ!{Y‚xIÆ“‡˜ôuì¢×ï#/A<¡?©â®êqör³C¼úéhòê7oõó»q\EÖ;IJê1ÙP0GÛ­·¾Z‘iD–‡JZ fc®È;™ÜÅ}±÷ŧCŠxíHÄ©£~œ½¸ÚŒ¨ob´_C,¯Þo/ššåwUψS9Ä å[/‡Øz9ÄÖË!¶^±õrˆ­—ˆÝRy…Ò±“B9ÄÖË!¶^±õrˆ­—Cl½bëå[¯ÿ¿[žùûo©IEND®B`‚omniEvents-2_6_2/doc/doxygen/a00132.html0000644000076400001440000001556510303671737020067 0ustar alexusers00000000000000 OmniEvents: pushsupp.cc File Reference

pushsupp.cc File Reference

#include "getopt.h"
#include <iostream.h>
#include "CosEventComm.hh"
#include "CosEventChannelAdmin.hh"
#include "naming.h"

Include dependency graph for pushsupp.cc:

Go to the source code of this file.

Classes

class  Supplier_i

Functions

static void usage (int argc, char **argv)
int main (int argc, char **argv)
 The main process entry point.


Function Documentation

int main int  argc,
char **  argv
 

The main process entry point.

Also serves as the 'ServiceMain' entry point on Windows.

Definition at line 172 of file pushsupp.cc.

References bindName2Object(), OmniEvents::daemon, OmniEvents::Daemon::daemonize(), DB, OmniEvents::Daemon::foreground(), getopt(), OmniEvents::insertArgs(), OmniEvents::Orb::inst(), NP_MINORSTRING, OmniEvents_Orb_bumpTraceLevel(), OmniEvents_Orb_shutdown(), optarg, optind, orb, OmniEvents::Daemon::pidfile(), OmniEvents::Daemon::runningOk(), str2name(), OmniEvents::Daemon::tracefile(), OmniEvents::usage(), and OmniEvents::version().

static void usage int  argc,
char **  argv
[static]
 

Definition at line 437 of file pushsupp.cc.

References OMNIEVENTS_LOG_DEFAULT_LOCATION, OMNIEVENTS_LOGDIR_ENV_VAR, and PACKAGE_NAME.

Referenced by main().


Generated on Fri Aug 26 20:56:15 2005 for OmniEvents by  doxygen 1.4.3-20050530
omniEvents-2_6_2/doc/doxygen/a00267.png0000644000076400001440000000620710240666463017711 0ustar alexusers00000000000000‰PNG  IHDRšGjˆ—¡!PLTEþÿÿo___ßßß¿¿¿???ŸŸŸÿÿÿhßEàtRNS@æØf IDATxœíMwâ8†û/x1–Õ9='¬gª,«¨äØË™éÔ„euRÕd9©T,§gšK>ö0Ò¯l]I6†`°!ºH:~“b‹DO®$;òËÕÔ&ýpê ¼¨ }UÐè«‚F_éEóóey½^4õôC³,¯/hÔÉšq‰?ØBãpkh‡ZEÓ¤ ƒµÆÑ8¥ˆfá±Mu­„4#RIî%Þ³‚úÓŒãú'c³l>4ȇ£f•žï‹ºÓ¬B!iä(@:mâ‘Û0è΂éÍ…4| ‹5ßJÖÒH= ú´¿¨‡ÐŒïgÏÙç[FãqÖô§I´±5 ÚŽiLˆ“v@´´úŠÆ€~“ C£1m>4úié0ϯl–^tI )͘ç4“›·eñLOš]0[®:ÏŸ<ñDKš0¦]Cï†1Œf¼ç¸Y4)'ÍXFÑì Y4ûBcÔìàÞÐ-Lš½¡9Zˆ4êCƒI£>4ˆ4¡A¤A  Fhðh0BƒFƒ4”Ð`Ñà„‹'4ÍBjhÍBjh84X¡)hò «¡4¹…ÖÐ šÜÊÑÐfÇÌ?éG“sÿ†hò4´‚&¡‚&§²uqgÇŽc X"´§ÉØm¸ Ê.ÇšØtÇ¿sۣʈ¶‡ÒîŠãÚÐìë6Ò4˜Œ[}¬>ÒÞ, 7—ÂiÛÔ“¤á^Ø'Þ¬Å÷˜@“tÜ 'a’æêcŸDÎ[ýiÖwɳ§ PsbãluÜ­ÑLûäæÂ„~ã¤XT’4•ûÏfŒi©v›Z»)ûÓ¤œfËéfÓ¢šy4iUÐF­')ûÓ„N³#0Tÿ«Î šñîK³höÀ˜E³Æ(š½0FÑìÿ/T÷ÙÁÍ‹ê ‘ÆGW̰¿Ó/<+ˆ#fÒ¬2)2šÑ²¥_l²wá\ÑèØÒòÒ§£¹úZ7˜&J¤Ŧ®_Kgé6ÒŸšÌÙÉh&Ò¬œ£ÓæqÄ'éºKÏu« Í®ÚÙ0¦ç!Ö†&mØDYÉ4šq: Õ™f¼åšs¼Ë;Hµ¦Éçƒä2ˆf·’K_šÍn³70Ôš ¡Ï®7´,9Rx4¶!¥4Ɇf¾*Aƒ£”&ÑÐp`”Ò¬BƒƒB“md~ )¤‰†=U F%lhhÍŒ*¥ˆ÷pUÒˆî‚Øi¨J\u4œF „F € Ã(£qN£Š†‘ üsöLŠhÔ“f,54c¼ Í5©¡9E+)¡9AÿRB“fWêþuíX² ¢ñ_VùùwÖ1{É‚¦ )hÌ£qTÑÀÚ`É:”¶åÓ!M}ÖØÀËä§IZ…Ò‹­ûÌJ³øvû¸Fóíë¿“5ýòæ~®€fµ@áTî‹liÇÑ$+4M¿•¬éüóåià2h­Ž[V÷<Œf~áw–]·wý‡ßj1VÅ…~žxÿÂ÷¿±£~p6e»-¼‰÷#=÷;S?¸i ¡ÌA4±…žw£Õ=뿺l~—©Ôhk}æ¤y¸ž5F*¿}iÞøšÃŸ9ͤ{¹|">üíáhðxÇv¹@3íN»dÔþR ®ü!”9Œ&² Mn.ªruOúªvOª×2• »³  ¥³æœµ¯'÷Ë[¿ßxË^þAÐøÃ{ ¼õ=¹A3hN|hÈ}ÍîuÐe„œÜ6.HÉ%W÷¤}ú{H]O¤„¢a?Z3{là«ÅÚ[ø£7¬–¼3,üÛ÷Ÿáµ´[8 4·ï1M‹Õƒ•åE‹ËúG´º'ûݳOç1Mp Í?ý§w‚†ýÉÝK¨)þŦ-­%cã›GÑD£\Ý“´FêäXèÿh5ü°4þ|´ðç‚æKû~Îû «û¼ëŽ µaßùÁ4qE¿«{²~ó ©W$MçP6jõ®»®ÿ?ŸÓTßò1 jÊÏž0¦16¦õ² ûÒ$êi°º'øåéðuKÐôóӬ뷧–}ÊAC3Ô1{É4šá…M4w›hŽRASÐ4ÆÑ¼°òOB¿èìà kŸU™ͪŸh&ZÑÒip”Ý: Žª;…§ÁQu·T²è..7@Ùs‡; PC µÎì{¹Š]C¶ølNbRHÃ{-þ4»¼ƒQX,ñuÚå¹¢b‡Ú.¯z"(6¼ ôÏ( RçQûN¯JçA£1ÿ]x½Gx²ÏÕ©?ƒâÒìÏÎ:f/‰û^ÜÔ™6#h¶ŒdÛyL¥Ùà‘mÑ𔋀Dºi|0™†qäÇ1FäB˜²Žþ-<¸a°ª¹ñ†ë”4û.h"› ¯cx_«À cihÒ54)çÎ4û¦dÖ$^ÇE†^{Øš6¸:¾ƒ¹Ã¥?ÁŠŸ=ùÝiâQ€À¦7 €ææ¢Lª×ӛ˪;¹c4åkù‚SÒìÍÑ%Ï=+/ì7k…Ô½¬ÏênÅc4^dÔšF*ji³»«œœjŸÎ]|ªB¿1ŽF»bCê„ņõ¢¾>4ÙfÅý6B¦}Ñoª¤^yÇ\úzi" ?{Vî?Ë1 ìi|L[{ֲƮõÖ,£±ke?»Ö´g}O‚œ‚&—Ɖ­r!ÑØ²žôxíA±°h,Ȩ Šƒ‚ÑÖðh0jx4]‘¡ë`ÒìÀ!û§ž²¼•T9ÍZïOÅ!Øžr¸4©8fÒ¤áJ“‚c*Ívo§±4[­·æÒlkm¢–á_‡Õm?b•¡KGšç­MÔr~öþã³² Owš„SUĉDÛËgE‰V4)—gãØØ [IÓa›ó%®ªa¿=ìv6ÙÓt¥¡DÔD-—Í_½ÉÙe•Ü.[Ë»Þ, åk›8{šÆ4œGxe-g¯GÄ[ÞAú´yÇ ûß hâìiZÓľNJÛ®ïÃÚ‘?ºôêcLBáðç¬â.¡!üþ_: †Ò”D-'ï?NÎ.ª €<ÐÁTÒ,5¢Ù3!è›al¶>­N5`™HÍ~ؘ+›L“5Í!Ðd™«)h¶&KS+h¶ƒ&CS³ŒÆ”ÙAj“_d=î]4öx9¸ì¢±Æ™"d‹—CÈ.[œ)B øÇ ‰†–ÌÏ“ÐØ±ŒÆ/‡”cÍ8žU*$Ç*š±ƒÒÔG‹h’9lÔ 匃Gƒ‘;‘†Žÿ’=Q~Õ‘iÔ^I£ÓÌTþð‚æ(4™UÐ%A6žêrñýÞzHó|Ï0 ç¯.)=Qð°*{"šË¿½È¤VóÇO¡¶•æ[™®ÖʬF{OOóŠrm¬äI<žBmÍl<+¯Í¥5pl´‡u¨Ý¼öÁ”6jV›<…$K“æ4øšøÕ0˜”Gt2¬x|½Ï0€ýܶ¶J¬v"ø#Ê„£%˜(XÑÀ”ÖÄãw!YZdNc_¯j÷a°è¼¢¯k ¯÷òcܶ¶J¬vBX-rÄGXÑÀ”Öç–'Nã/6§Vú ®é# ª\ï3 bÛÚ*±ÚéZÚäG»úÊ[XÑÀ”Æix 5Ha›ÓHÍ÷‡apîû>%ë4£¡'¦aCÀO›ºhi`ES§á)Ô †±9x­…Áw:/?‹4—gïÐoŒ¦V« Liœ†§Pã4Ó˜æUí—pÐeÀûÍŠ¦£ ?{Ê1Í÷»`EƒoÍ| Ϟēæ4ø˜øå°[¦t4>&iúZÐ(RAs” šÌ*hŽRA“YÍQšY5;¨\¾*hôÕŸFôûŽÒ~IEND®B`‚omniEvents-2_6_2/doc/doxygen/a00133.html0000644000076400001440000001254110303671737020057 0ustar alexusers00000000000000 OmniEvents: rmeventc.cc File Reference

rmeventc.cc File Reference

#include "getopt.h"
#include <iostream.h>
#include "CosEventChannelAdmin.hh"
#include "naming.h"

Include dependency graph for rmeventc.cc:

Go to the source code of this file.

Functions

static void usage (int argc, char **argv)
int main (int argc, char **argv)
 The main process entry point.


Function Documentation

int main int  argc,
char **  argv
 

The main process entry point.

Also serves as the 'ServiceMain' entry point on Windows.

Definition at line 59 of file rmeventc.cc.

References getopt(), optarg, optind, orb, str2name(), and OmniEvents::usage().

static void usage int  argc,
char **  argv
[static]
 

Definition at line 189 of file rmeventc.cc.


Generated on Fri Aug 26 20:56:15 2005 for OmniEvents by  doxygen 1.4.3-20050530
omniEvents-2_6_2/doc/doxygen/a00268.png0000644000076400001440000000265410240666464017715 0ustar alexusers00000000000000‰PNG  IHDR„WöN/Õ!PLTEþÿÿo___ßßß¿¿¿???ŸŸŸÿÿÿhßEàtRNS@æØf9IDATxœíšÏw¢HÇç_ðºÇÄ·óô<›<=&Fw'?䘘™ÁãªIàšÝçèm…æ@…ú+·ªñ‰3»jÃ<¿F0ÝÐÔ‡ªjêd^ïD\„4è€Ò ½"„lëÚ;ÂNF< l~Àíx@Øü€Ûñ€°ù3äX+cùÙGß¡…:R6Q‚Y¹*ÆZ+·³¡öá|¸Éˆ""K—­2H³¼ãˆÿýÿ! ;P0Ýk$!ÚnB×úhkeèT°Âî› ÝdkϬ…„× u¹¬(¡Ú)n£Z>®É×pÊþ'Ž`mcìy‚zÃb›tBƒÀqóµrx^£V>©´„"06’‡>c½öSå Ó¹!€o⊨7”CÙ ÇÇW(ÍPÁ=ÆJ.…"˜ü-a8y¸Ð4ž&\=|¤ÒõÂÕƒ²@C,J>„xî…;·Š:@ Ú„€¹üëÜ ’4óøØB^èwà&í_$,…`èš0Œjùó!Ï4xè¡RˆÜ<µõ=ì:©Ü¥'¯èðžG”žøŒDü«f$DÀɳzBÔf¦aFŠë8ñˆ¢üNâE#ÔˉG°…wˆ‹ÿû’ËåÖo˜@;ExY1˜¬Ïý’5/äæçü%²~qÀíj‡D›ŸüØ·«%ÂvoO9Üö¸õÑ·{ÒŽþ‰¶Ÿ¼ëµ/ÀO€°’ÎÙE ©(ó{Ó @ ½²¤;ûhÑ\b)cõ;†[‹ùFÂôñ¾Cx|¸Y5¯}Úš¤aÅ n‰ÆôUó¾ò¿Ô#Lª¬Ò þ•é:" ]S–÷?»r‰U{Ä^æä=lRut“+Cõ=æ4T‹¶ŽÐ©UûºSznk ö›£Y—Á5jÁ(dt–©×é5±I"ÏðŒÐî¶KγhÁcm‚á3’ÚgÌTÏÐ’ëYS\…<¸F’£9šË!„¾ͨ;j´p/Ð[Çp„Ì>EÓx€OÙýÅgZa ÝS/!Ü_¨ ±¢MSÀ½ð÷"<¹ªQ#ó0—ÿž{A¥@Òg^`––*Šößu•ù*!°‰=e“¡ÝmMx. ÁCrÔ~„`w©­œsuCb1ŽP>ã3™Ç¿ÚhFBœ‘~1BˆÚ¦i@ˆëù;_ÿ¡” XÕ¤Â/óš¥d™¿ØÎüOžŸá‡çË^vô“'"Xs#;ót~Yï¤wcÖ ì@«7$ßP$¼'ß}_·…ã÷Ʋ‚ðV‹°Ê.B$ôFÖ’_{¤!ó´°Áo­>ióÍù%®kÓröˆ_‚7JÂ$¿(D"ùÎhú'-gÞ·vŸK$.k+Ë*¥z–&|K)Bèó:9ì`kE ¤¨äè{ -SêÚ%· "%zà{æ¿”H„@û"s„F­<ª´aVrôä½FՔʽr¨H N*­XÒRBg¤ñ‰Íä±nÂ5"D%Gc'p¦ŠoJ½¨H :p«BZJ¨ºÓÀ ¢’#—1;”!Ž`¾ªBZJh.È ¡‰«^à%GÓ>Ü®ñÂM¬ i)‘nçâ6T ˜ UÌ…;ž TrTèñ\X"˜ w±*¤¥„æÂ©Uô¬^lF¢’£#š¬ O«]iœ‘æ’àUåêf»~Pq\||÷4 $Üý€°î~@ØŠ w„‰[aûÓ! : ¤AÿÞJCÔK¾àzIEND®B`‚omniEvents-2_6_2/doc/doxygen/a00134.html0000644000076400001440000000322510303671737020057 0ustar alexusers00000000000000 OmniEvents: scour.h File Reference

scour.h File Reference

This graph shows which files directly or indirectly include this file:

Go to the source code of this file.


Generated on Fri Aug 26 20:56:15 2005 for OmniEvents by  doxygen 1.4.3-20050530
omniEvents-2_6_2/doc/doxygen/a00269.png0000644000076400001440000002443510240666464017717 0ustar alexusers00000000000000‰PNG  IHDR²w[üpt'PLTEþÿÿGGGo___ßßß¿¿¿???ŸŸŸÿÿÿ4ƒctRNS@æØf IDATxœíKwÛF–ÇûûÌR‹^ —Ž'9âr&I¸Ly€ÝL'V K[Ž#mæœÈJ,-»3æH»‘ Qàiõ¡¦ X ñF=P…û·%RxPøáÞz pëOd§þ¤û@’dmµU@ÖVY[dmµU@ÖVY[dmµU@ÖVY[dmµU@ÖVY[dmµU@ÖVY[dmµU@ÖVY[dmµU@ÖVY[dmµU@ÖVY[dmµU@ÖVY[dmµU@ÖVY[dmµU@ÖVY[dmµU@ÖVY[dmµU@ÖVY[dmµU@ÖVY[dmµU@¶ 4+Ù÷§]yÈvDEôÊÈzÙ‹€l'dmí°ö •»û²ÝRX…SÞV{{òd»"†iÐtÇ=þo’J#²q*@VˆÂ*Z®$•ø“Ñ; NðïýÃI¶Í'ËNƒ’u~ ­£°©™æ+ñäJoñëø+·YŠ–‘}"¿Ÿ]¶ÈVT(œi¢5Zò}>$ÿk‘%;z›Í#—­²å’•*v˔޳‡–WÑÑ—CŒjroRHŸÛÚO¦Þå[d %*O6Â?³èÝâaü£Ç›“ݬÉ>®®ÀfK*€JÅ{cFÖ[øè£rטŠÊñ¾„,xãRɧnÁá¼±‹ËY‡œkLUmöõo-RؾMS¬”“ç[=´…É2›­Fv°iõxà‹$Û\·ÛÂ|Omõ`²ã·«ŠdÉÇšì=Í•\s K{IO&‹ëÆ‘[…,ûàêÆŸï7‹€l"‰æš_͆'²%Ñ\«T³¬$É3׊}Ì@V†¤škù±K»£l3…òJ× wÌš,جhÉãZÑð½‹9²õ%kå‚;öÅ@V¤dr­±)½ €¬8IãZ«Bw.ÂHra’Ƶ^ûiObż—d%r­·9ù‘U$ôlW¸²žEim®Þ‘•X¾ÖÜAòÞ‘•ȵnÂ’ÁöŒ¬¼vNí„eƒíYYW³¶#Æ»H8´zD¶Áõ¯˜p}OÐ`—ºêÙyb`{CVžÁ6HXؾ•÷H§AÂJÀö„¬¼GëM )Û ²ÒÄ +‘e&!Kö}JÖÙT€ÍèWŒÉ’_û@UÉÒ×÷²~j-M¤¤/£OÈ.fÎóÔÛ¿C÷hñx9âWg)äBO£ÉôhêÝ_8Ñäͧ×.—BßÉ*›õ(€'‹üùËW£-n—3~ufb\[xÚGž Ñ·ãS—K¡çdÕô¹gU½×5¨[J6rWg÷˜²¿v®e‘§ãêü#¹9‘{—K¡ßdÕ€ÍJÈ'Þ”³‡#ÝT$K>Ù{Ž,)go€,R5Šwç(!€-&{êíßâï~%²|OÅdêz1YR7ö¬6°ëx˜%GoлøJM†Ö[²ºÀ®k@âû¿¿àÿì-Y`ù6K ºÒ‡»dçtêÃD}%«¦‡"…'Žé–‡ÃDdLEIÚð¬'[JÀn쎟Á#,Ÿ<–®.9E ›)%íÍvu)ÕêÉÕ¬¬¼²YRR{ÚË™l'>x9ÙâÛÈf¨lÉHàm%²·W{¯ÙÂÓ²»*³ØÒG–¢Ô_Z¬F’-Œ$ßU™+nKVÜd¥Š_×B†“-­·!+vba [Gåí¦d«LTOª"Êld0Ù «YÚJY¹ÑšK¶J{§¹Í ¡ÜhÍ%[åÚ'#G©Å‡énY¦äéJ$%p9­ªâB6ï¹ Ìé›yg—„¬¤ÎÕîØT²%µ§Ô“Óô0^äÓùÔwvÙØlë“Ë>%9ÉæÊP²e—)䧈Äd?>Ú¿C—£ç鑇–WtÄ^BfÝžoíLîØ¾@V£JfÈO‰É®®Vgd 0Âët3B–,!d_ŒÏ1Ùá1ÛWYÕîØL²¥)žo.©Ayþç2˜Œ!Û%KY}ÂdÝÈ¥›Ë"«Øh$[>3JÕ ðÏbñ¿çµ7&K0ÙqLuËtsYd­‰dËn~Rq⟉²ŸþŽØ@`ŸÔ –/†‹Ù‚ ÆÄÝÙ¨¬¥ <»ÑbÉ€Ñ_Ç—.ºŸÓ¡Á‘·ËÙ·+dÕºcɃ#ôðÏÄq9;œ_!Ä£Sï0xs†>údÉÓôׇ‘+Ÿ¬Z£5lq!›î>Êï],xÚ dõ¨lúOOÞEJ©;6lñÅ©Ï''yQLT­ad‹kO;kÚ¬¸¡[Ri´†‘­¶7–BÈæ©¸ÝѲœOW¡;6Šl½B ©A…BáÙlÕôÅ¢êÆÅUªò1¥Ü¨R…îØ$²u}± ‘䍨pKÇó#Ál–jûb±GÏ+sk‘UèŽ "[|QT\²4ݬ¨‰Ù²…*ø¤è,8ºÛQóÅ‘UçŽ![rI”vɲbw;jb¾€lÊÝ©ˆ 65±P@¶@%äÔ¿\‘ ¬GVÝ-hÙ2rê_ˆª3ˆÈæªÌk0Ùd|dM›Uvªf-»Ñu˜lªåLÑ<­¿ Ñý1Ø€,¯ÒqãJÎb稬ÆÈŽ®G×èÅøœ}ùrü=ütõtƶLE#Puš@¶tܸ“]‹‘¥ÿ|ôiýåÝ£‹ç¶ ÍQé JÎ"O²‹ ˜²/3J÷‹õ«B@6[¥àºBÍÐxc³øç_ãMRdU­dKor­Î˜'ûbü–}!嬢‹x ›©ÒhzM–'‹«ÄÉL–Œq¦JÇsRt#vžl97½&[О¯ß´²Y*¿%ûj½*MV‘é:ÙòË Ùç“]Þ%ßRË,U¹Av–ìF@vW‚kvÆ@¶‘ª\ ›­n“­@M·3®OVѽØi²U¨Ùušl•K Û×INd+Íý l}õžl%?«Ý7PïÉVº@6OÝ%[™Î¸÷d«åßD²jüLgÉV˾‰Î¸ïd«#ÍUWÉV̽‰Î¸çd+"²¹ê(Ùª™²¹ê(٪Āl®ºI¶êœ²FV Ý$[ÍW'ÉVÎ9ÍWÉVçdóÕE²Õ3dóÕA²5pÙ|ul|Ùèé-Ù:vdóÕ=²u² dóÕ9²µŠN ›¯Î‘­•k ›¯®‘­WÛíÙeùhÔD½$[+Ó]jô,+.#²e²êÙz¬€l:F¶^žlºE¶&* [ n‘­™e [ N‘­K ȨSdëæ¸³dŸÝÝeœzG¶6¨Î’ç(²±jg¸{dW—hÿ]^pËvdËÔ=²ÑÍdþòÕl6¥úœºH{âÕM©~~»GvùþW@–WL$‹&Z¸@–WƒìvläáröÊY^M(u†ì›$®ߢÏ÷ô/ KÔ$· ËæcÚûsÆ* Kd,Ùxª-è]ÌQ#H"[§ß¸_oY6º;A±Éñ€l¶še¶;dk=ë²’ö¬xi ›­fuŠ. É ÃÈæ¨a^;@–ÌÙG›²@6S ›úÉÒÉéÙ×IdK¥Ÿl‡«ô Û4«ÚÉv¹â× ²Mûdt“-7g7Á§‘­.mžSÍol5<|â›J¶éy÷‡lóœê%Ûôè½!Û¢ØÑJ¶ñy÷†l‹Œj%Ûøà@Vê®ídKÔ¦  “l×ë}úɶɧN²]¯÷YõÇî ÙV2É6?ï¾Ì?Û Í—n²í²©‘lóCÙ ÒG¶Åy÷„l;6@6_šÉ¶Ì¥¾Çx-î©~mit@6_@Vù!zɶ%dó¥—lÛLj#k@Çm¤õ‰GAEeì+YZɶ“J kÀ¯0m8![ñDùíú@¶uSd½¶©hk´r\ ›)¾”¿J@6% [I[d“Ã6 «ªn “¬€›ÈæJ#YYÔCvsæ@6K"Ê›n]|5eíµ˜¥·ÛÚY®€l%“ýüò‡7;»<»}%+$‡»dƒwëA¤Miqúàm®v"Íɧ¿þsý±Ù6MvsÔhýûÕNªQoÉ ©üï]œÖÆëÇü¶Ы¯¿¿Ï$ûü+Ýžýù´^Zì þµ‡¢£×£…?™ÞDãxñx9â·£²µ¡@çCòŸÉOo룽È${|½»} ²«Ë_\ÖøÝêjuv·œEÃcj³·Ë¿•õdÅdp‡ì³‡î<’ˆ„Ô[äà?G؈ž§ÞBcbG«Ëˆ˜ùÁ¦æ ØêöÏ}¼îÁC—#gr·±¹b²hùí# kì!ÿó»ð#—üC }·ô‰¬˜ž˜²ô~9~ÝLèU OèÅøœ‘ˆ;ŠFLj˜þ!¦æ óáÓÉ¡¿¸[Ý­f]‡œáñÆæRd96±ÍâãÄa¿pÐë7 Ù‘ʆ¬ŽHчkP^äþ‚ÿüD.tLÛÑ21'ü˜š³œ­fÏÞÂ_ÌÈ?‡®Á›DãÄæŠÉbˆNÖøÓßÑ=ê5YAùËòÆË“r–ïßÑ«:ÿz¶‚)#‹½ñkrµ—?ï¯ÉSsæA€½)Ú"‹¢ñ¬ÙùÅoâ°ÆÑºŠÉ®zIVŒÉî>ë!5¨3l³Kļñê—!6Õ1#‹kP_’«yQb³ØÔœçôf×f«“E™IXcLv~…Îß“Ã}¾çö²5µKvñ+nõrÖ›V‹¦.gß2²¯^ÒV&{°&KLÍ9Fèš–³²«²Ü¹Cïâ¶e/ãù,é©ˆëÆ¸œ¢¯ù“=õâž ÿiúíUL–˜šó‚4I÷?òd#WYUc¤5‘”=-OÞùƒÙmYéÒCVTY£…,ÈnITî€l¾´V=²ù²•Ä‘MȦ%,sºÉ†{õG’ÛLV\[]Ù ™N PW@¶nJáŸÕ¼#°&&S¦Õ“ÍdÅå-e?ÂR-Ôúfb3k5HÀb²;N“«Ôð*7ÐúìC6S}Ù*НÒ^Ó«Üü±Ídf%ÕØ16?$;j£œØKVäS,v•B…d“³›ÈVçU;ãAØðö’˜3¾ž*.Õ*G ÈnI¤ÉòõTÉ–‘NçÒð@¶FZÕÎxÀ}o˜„t)'+2ck ÂF+0Õò¶:­ p¤*²q+K@ò¥š¬Ð‘{aò[Íå ¹ß-‘/Õd…"ˆO²PJÃÉðÒ‰(ùdFû"Çk ÖV²b³Õ¦ŠÚ@ää[ƒµ•¬X Ô†„¦Xv¸ö`l…ÂS,®‹h6ÛIVl®Bá)–MHÛ È–K©3Æ~XL£ÙN²â‹YeÎXX;ÉìŒÅ=s²•R+2ÙÊQ¥3´€Fà³$+ɪuÆUÇïg)M¶é£ØLÙHVpž%)Š"‹¹Jè•.sÉ–³‚Èî «;Ų¬Ø,•>âB–<üˆÈVHM2Y6pNô³_ûÈ*.f[“ç ¨oßìiâ±D²ëq®FkÙb•¤`dƒàÖM-=Cè4g'ù¶æ)cäœudU;㘬?~=L-õÑ"ÈÚñd×ålãÓ+’š‚VYÁù©L¥#GoÑS¹Írå¬xÙ"UÖ¶!{öoWWOg/ã|BŸ¯Qá˜|̧×4ò‘GBÇûÎÄö;¥eYåÎ8!{xöàÍOG_¼rз‘ã:Š#“oǧ.‰€üކ4Ž÷•:4È–¤VvÖ5¨÷EîòêÕGôì}Œ¾ýÝAq„còqA¿~Š<ÒØeûn?~òò¥Œ¬ðnŠÒë³¶YòƒYΞf$ÚqôÃÙ/Š#³hL# ÓÀ·.ÛWªÍÚEV¼3.½ôh±ðâìåÅ$Y\ì.ûrü"+…ø‹”âÈæ'Vä&Ãl†Ív—̓“Ý…³Mì ¯lKIJYÁÃMòÁRÌbÛ?ŸeÅ£µˆ¬`“ÍI. WÁ× š‰S±7B…;6‘ìŽÅþ7YÌ‹á&¼ß²Bs²u™3®;³\q£RÑ@0]îØ<²¼Å† H–S ]kÈ’Œ´±Ÿçs‹/´ÈwDGžRàŽÕ‘•Ø,¿¹*QÜÑD˜®-dI>„‘UŒt­‹Ö¦«À›GVê£Ó|íTÈÛ™®|£UA–Þ ¦“Í2³fSDPÙ]é"›ÝñÕ®|w d«+a#¸v垃ïŒë‚—ñW:xô»Ës~µ“Œ(Ý ¬Cù4Ô¨¤»cÅdwÆux¥ߤ×;h”|[KÙÒG‡uhÙ@–Ýê9ãºÝ„]1C‹+nµ“ñM#Ù2ZÇ/KwÇȦÆu»Ôãúh2ýññr„göx9Dø‡¬Û¿Cx~·6U QýI½l£UNvk\·»ø™’}\}¸]ÎÐäáJöa|Žð&;ùjôàqƒ¼5’­D£êl_eYÈ×'Œ,Zød$Ú_OoY῎0ÙÈ]Ý+ä]¢Š.´’S–펓Ý×íÒÖG¯û‘|Ü Õ!;ÃÛàLÖ ‚+¡ía…šTÕÐ*nÙ0½¶ÒB–×MÈbsõVYR;ôuŒÄfÑÂíÙ,JB¢#›lI>ÙøbäëÆ îç>ºgd¿úñõ0òöq9û—³oi9{8¶lYT·ñ\NÕ¤…,?®/8øHëÆ„ìÓå¯èizªß[æ_¹Ñño­º, γE¯s)&›VƸn&Ò¶]äg²x—š7ÕhóàJž?J'Ù¬qÝñš*dÓGQĸY¥'ó¬$ûùdã:FÎèztÉ’ñõT$Ê¡`ÙØ;d˜ntƒ½qä!}"¡ÒDþÅãë‰:HV}îXÈ‘ùVC†Ö/ß¿#‘xA0%¡Ò×dg]%;G@›ÑŠÌÑÆf—ˆxc‘øè^Ôk²ÚŒV’ÉJ÷–æºã¡Ê‰Xa:YMF+à°žRÀJ&+À·¹î8 HŠ|u#ÓÉêrÇÉäLA$™¬ÔÔ©Œ-hÃh(ÉŒ'klAK^ecŸrò`ªS¶²È²Ó”Ür°ŠlÎe“ݲò•yH‰d÷¸è‰ÙÊ'+ùêÈ$+3FEž²fë•N¶hž‡ ²JŠYëÈf±•YƒJç)—¬ì:‰dåF):ðúJǾ™ñ: Þ‘‡L$ŸÈI~q[Öo³[óæfURÌJ%«1æe<úž}ÐK½8RÉ>»ø×(µ*—¬ìÛ^"Y™A¾JE¡Æ=D”×|HþK&›T|—¬šbÖZ²”m\R^ÏZ¸“é !;!Q?’`‡ú“ÜÅû´"ÿqFˆïŒÃ%ZH6Ô;«Ú¼¢JyÑYRï–3BöäpŽŸN^œù&;<Ž÷hE6*¾˜Ý.gO'‡¹dÕ³RÉjª@q§ÀÐnȺ Ÿu—W ä¼ò–žsàb²îÚ‹¶$KƒŠ/f>òŸ½…½d%Æ¿­*>öÆË³×o(Yüç}ÇÅP‘rVÙuPqB'˜GVÉãÔ²ƒM êì­m6ò"l³¸ÔõÅ‘eAÅËlVQ1+¬¼ jœßêù·zîŸ|VÎŽ"ïà{üá oW¢ÈÆAÅ)Ù‚rVÅSw"‰duW mz*ÎßÇucö›ÖŸ¯]Adã â”lAÝØx²'¨+¹½‹D;ýÆ+wݵMVŰE* ÛlË´vÈÎO¾²o9då_Yd»PÌ®%›lÖó¥ý—}Ù&«bØ"•,²ƒ¾­ù/Üú”' ÛlËXµŸ¼++fe‘]Ga脺4Zf°õ)OòÈv¦Õ¥nÉE1–ì 'dãÈz•Év¾H“<²qÆ2߈»¥«¾#î|‘'9d;UÌÊS¸GÜq’kb,ÙN9ci ÙmÙü2¾I“²!êY6~®†Érƒ¡M%;@=pÆaíjܦ†’¥§m=ÙÚäi*¸:2È’Ó¶Þ׃tó]’$ “_«~þR·‚Ád-wÆõ_FKÛ¸™dÉ/kÕ¬™dûàŒÛ‚UqyÄ“íÉÖ®=mï`$YvÒV“­ÍeçN0‘,+¬vƵ Ù]7‘¬š7uJXÉÆ¹°˜¬°’U6äR›„€5¬ªñïÚ$¬ydãlØk²‚ÀGv kM¶ö”“y _³È&aõÄ£U Ö‰TÜûÂÈ&ŽÊV_\;’qÁ&‘Ý8*K}qí"¶hsÈr·§¥&+¬9dù\tËd«5æ´›L­Šl”‘]€ª—E§š¼6í,©? {É@¶µD­? {é@¶µÚ“•ÀÈ P[²õ¹VjÙÖjG¶ ×JЀlsÅL“ Ùë“õT¹ ­–,¾“-F«Ëøëþ™þ±8àÖN£«N“eX(Yœ½—ÉŠ8šO4J‚@Å›’X¸Q“Vªµ“b²¿ÿö·£çßß]sdï'©õÓè®Ûd)ZFvüÛ͚"¦#?Ÿ¬l®ÊÉ^i+|Æô8²³ ø"› ¶Cd“ÐÆ¡“^¹Ñ—¹d›LYRófPOvvrúˆ®_ß<^OŸŸ©Ç]Þº‡W/Ÿ‚Ù>Åù<{¹ ðY÷ˆðÁÍ »îÙ$´1!»‡¢£¿]^,f,Âô+/Þ¿Eûç>YÇůÞí©(?XMTªÉNš½þç÷¿>þåÕƒswü\²³ý—W×gÁ­û_—”ìчüóLöÿïq‡|óû÷$»mì.~ž¿|5ŠÞE7“ÅŒE˜þ«ÈŸþÛÉ¡OÖqñ«ë’­_ÓR÷|v]ƒ:šb|2ï‡þ>BËKF6¸ºÄýðÍœ’½|pðÏ+Lö9ø¼‡úpzü“Ýë”qöN"wuyÑ "d‰7vÏɯåïÞÂ'ë¸øÕµÈÖ‹fìÕ`ŸºJycb·.TGAð°⯩SÆ5LJûdüó]MIMó’îøÜÅrvc³˜Î ùþÝbG˜>v\-ùdå¸ÙFu-¤‡,µÙ‚“É^]>/©éârxMy›‚ßñRl³û‡Á›î‘åjPׂ˜(ÂÞ8ŽW…Øõ˜IDAT0=ßOl¯k@v¯vñšH Y\ÎÞõ9˜R²³Ó›ËÙ)%ûxˆ[=Ÿq9{ËÙ VÎþÛò^ðÍïíYò‘¿<‘(ÿ¤œ#L›röp´ªE¶Q?¿‹}«j‡,®å~¼ Jön1¤uc²æëÅu0ú.]7¾&¶Üɺ1ûHÈ’j0.Oãº1‰0XÝø£ÏÖU#Ëß-¤–lZÙÍUÖ¶Íî~êÙXMzâ*™˜ÓÒIöÃioÉF¨lÃÖÒHöá)Ýcüc3Y¢fí™jÒi³¥àœkHõS¼Š²­¥þÉ{%ÙÖÒ1Z¦‚€lkéáV* ÛZºF¥–Ȭ7¶bÁHò 2’l“çÖH,[cÞþHÉÖ—,EÞ²f’­ý6¢)ˆÖL²h`§?‰ÖP²¡¥/Z Dk(Y4°Õ Ck*Ù°cM„ÖT²h`­?„ÖX²­´Æ’ÅFk1Zi˜K6´5 ‘€ú¡Éd-öÇí³¦ä¶—6—¥ÅFÛº¨1™¬ÝFÛ­Éd1W‹É¶Ec8Y‹ÝqÛZ”ÑdívÇ-3g4YÛ¶UQ d»¬6¡•x3idmwÇmÊZ ÛqQ´M<“Ùd­wLj¡mâ•'k½Ñ´M^Ú3Ÿ¬õF‹öì}ÌåO9ÊÚIÍe‘G6ìY¿.½ÌY¹Ü²ö»ãøù~‘í‡;fdµÈª¹ßå’µßhãðÎY dUId;Ɇ¨_Þ˜RµÞh™êUt·Ë&Û£íYf¯ý0Ú>’í‡Ñ2‚ÎäñàM¦7Ñä–_ž–¢{]:Ù~mLvt=ºFwËYtBba#ËÉöÂhc²ôŸKba/¯¸å)©º2ÉÆyèƒÑòd_¿!“gÜò”,"kñ;>‰x²÷¨ÐfU] dûàSdŸüèä0¯œUv1Tí?æÉœ¿/¨ÛEÖþ~Æ-‚NÎr¤ð.WB–dGj$híªLVÝ .“ìæþÄ•(‰q ; -‚óœå* &5dQ(3ÂwT¹wÑ:²m&·1AUÉ*¬m($k³ÑV%«ðîVIÖb£í/Ùxˆ_˨ØMâP«QE²*›~JÉZ¢é0Ùj#ÉUz-UÞÙM¶š”öÖH%›Î FÛo²j($Û¾Êp²jkJɶEc6YÅ=ç@V™7út“uHKh´½4ž v½IþîIõÃ.©dwnÓ]4OÈùÈ/ɪî§ÑM!?ãO É*ï[ÕAv ÙÈÜÇË‘CQ¾EŽ;FÑäîyêM¦™=Ò©º‘3¹Kín¤Ô<ÐAöËñ[62÷v9cd'èz1>†ÇøÏÇÕ!‹·z:9$dñR~w#¥¾Ï\Y±C>òi Ûè/øO‘¹˜,óÆx«goAȺkçl.Y Ϲä’ÝöAÍb†Ž,±Ùù׳ELÙ׿oL¶Â„,2¬–iÇ4ݲYBvõ˯3²óÆ›5¬žÇ—:È’r–#;»hêárö-#{Éâeq9»2¬®yu%uãT9;D_Ñ¥„ì)­ÁY\7ŽÜ Ù¢¸]•¶ñ:ÈVÖÊ]¤ö ì•„†è’tŽë“Kv»r\“ìüä»aþî{gêÔi²hÿÁ­²û†qg†ZiÆŠºNvKåÆv²~¬È0²³:~—ƒ¬Ð]뾩6’Lv« ÕúùlÃk¶·-á×¾{E¾adE5ÃÖµ§÷sZ"%™ì–‘ S!õæÏ”Ìó!µdŒ$ïCl!’MVüsI@[Mæ‘´Õ$›¬ŒG΀¶ŠL$ h«H:Y)€ìg"Ff’íA¢Ö’NVðÇ¥2”,øãRÉ'+‰m‰ä“£Õ#cɂіHYpÇZd.YpÇÅR@ܱ© F«C*È‚Ñê²P‡Ò %d¡I«AjÈJêæ£-²’Ì Œ¶@ŠÈJzâ##Q[¤Š,<¦U-Ud³ äEŽÍ"[!QP,ed3*Q^ù^y¡×‰6<™>HÙ íÉ‚ÑæKÙ] @V¦’ÝyÛJYpǹRHvçm+ +SJÉnZ@Üq®Ô’=r\OÎ%»‰Ž dK1Yæ‘Cf»™dŸÝZdÁçI9Yâ‘Cöbq&YÕ È z²˜kÈ"P²«Ëh2õV—hÿEGÿtÁG4.% î8OÈ®C< (ÙhtL#ßLæ/_¢wÔf“ˆÆ@¶±´ ¹x ä¸$¢ñ ö볈†#ßD4.' î8GÉ2o¼üyß}ý›·|ÿÎ ‚«Èeålu²`´9ÒFÅ5(b¥Þêj‰&Z¸ È‚ÑfKYú“=pIDc—³‡#BvU,m¶´EÉ>M¿½Z×o1ÑÏ÷|Dã*dÁh3¥l±ª£Í” dÁh³dY0Ú,YAŒ6CV£ÍdÁhweY³“u]–¼#dÛ$ßüñ¶t’*ðÇ[²†lÚeï€U¡x0Gö-˜®ji d;ªÜ÷¯¬é sÌÈš¯ìù|€¬ ÊB d­PÊ#3Î@Öñ¥-› ‹‘=ÈÇM^ d»® [6”Ž‘õɯ;Y£Æ3×±ެ¿³)5OÉÜ„”ìóôo—ÏSïþbŒÐdzãL1ÙÇËQ¼5G ml³ÑÍÛìƒ÷b|Žî–3gt=ºÆdo—k«²æˆŸQ“%Þøÿ|BîÂwù‡~⢬9â¼1ò—ïßaˆþ"¦èõ›„ì È(¾Õã/ñÆ>š¡1±\ k¾Öå¬ÇȾ¿E÷O1Ù k°b²ä “SÏGó`ˆÎß3²>5Xлh«€¬­²¶ ÈÚ* k«€¬­²¶ ÈÚ*I²H@ÖVY[dmµUÿïÙÌY#‹,IEND®B`‚omniEvents-2_6_2/doc/doxygen/a00135.html0000644000076400001440000001050410303671737020056 0ustar alexusers00000000000000 OmniEvents: Servant.cc File Reference

Servant.cc File Reference

#include "Servant.h"
#include "Orb.h"
#include <stdio.h>
#include <assert.h>
#include <iostream.h>

Include dependency graph for Servant.cc:

Go to the source code of this file.

Namespaces

namespace  OmniEvents

Defines

#define OMNIEVENTS__ADDR

Functions

CORBA::Object_ptr OmniEvents::createReference (PortableServer::POA_ptr poa, const char *repositoryId)
 Helper method called by createNarrowedReference().
char * OmniEvents::newUniqueId ()
 Generates a unique object ID string, based upon the current PID and time.


Define Documentation

#define OMNIEVENTS__ADDR
 

Definition at line 95 of file Servant.cc.

Referenced by OmniEvents::Servant::activateObjectWithId(), OmniEvents::Servant::deactivateObject(), OmniEvents::Servant::Servant(), and OmniEvents::Servant::~Servant().


Generated on Fri Aug 26 20:56:15 2005 for OmniEvents by  doxygen 1.4.3-20050530
omniEvents-2_6_2/doc/doxygen/a00270.png0000644000076400001440000001347310240666465017710 0ustar alexusers00000000000000‰PNG  IHDRêí ñø$PLTEþÿÿGGGo___ßßß¿¿¿???ŸŸŸÿÿÿjG ãtRNS@æØfÅIDATxœíMwÚHÖÇç³x1‹ñÒÉIŽY>§'sÌ2¡í‘–OwÇc-c»{5§ºËî>aÌnŒ0H;°0T}¹©7„$ôbÕ-IÔ?Á’ñãêª^nÝú Ö‚×_TŸÀ^JSW!M]…4uÒÔUHSW!M]…4uÒÔUHSO•³CnÊkŠÊšzí"›F݊ߤ©§JSW!M]…4uÒÔUHSW¡BÔøBS/*NöÔ¹"=öÄØÚ£ƒƒCº`Ô #¸GSÏ$FÖû¥óÚÌEaçÔéߥÉ÷hê»uÀÝ#;oÑÿ¹¨Ó—[›Ã‘É÷hê»ÅÈr²K /úèüÇi¯E0FâÝÔ}3˜X½.ߣ©ïÖ@G×y¸èÚ{è| [áCÅ^K¨OW}mëÙ$À1{æÔ-ÏÆç£é#ÌjëSíaR4Û²Ö€‡1‰_7¨£ÎDýpS†yÿ«¥©'h¶ñ TâÉænJ¨s[ÏD.|ê–ö0± ñ^o¢‹MÉ‘Pè\®2Qç ŸúXSJðle‹M-‰P'edf .(Ã<7›4õY[ÏHÝ¿›¾ÿÕ¢˜u›¦nؼÃ~Sßvê³` Ÿ:ž™:]pêõ0vÐÖ5u¦m§> [ÜøõÓ¶‡™¨kIãuêׇš:SĿ̂ÃÑõëøž¬ÛY¨ ùeëÆÔiÆÖÔ©¢…ÆYz \¨æOJEºÇÔ·;áÖ ÓËoýzÕ9 >Ý_ê!èÂÂgé©p†ží(õ9KØ»ÖÞR@ß$ ÝM¥û’ j=š4ìÆÅfÝo*E ®ŸÞ" qdˆØy@Ó¨§Dª$hëMH]h¶³¤’N}w¨XÓ¨§â„ÂOg‡i£Õ3”aö*æùÔw[9W–د]¯oZì×ó¨ÇxòÂ-Åõ¤Îl¼4æEGŽ=Gu£Î½J®ü]éÚ£˜ÞBÔg¼œX¶O€ö15£Ž²ÜAó ÚǨ¦NÊíÐæÓp3׺•OÖà罫±‰T 苘—hKkê(²«»êÛ½½‡?ÔÇæb`¨ÇuF”A§øøÔh–pu¦^ônÚêJLÝoVfÔÁôdŠçNÛ_iáñ¿[^ìØh ‘N]‰©ûâÔÛwí;|ÔùÌW^u.ñÃOýÇ[~H#©«1u_œ:ûgãoþÊ9ãîrÈ S:]ÙÔ•šz€ºç8¾â2ò/üÐIM½tlÝÅ­“Çÿ‰C¶ÆÐÁœ¯dêjLúQç’¯P¿ncÔ‡hê¥+@]Ö+„:Áaj"uµfGy}îÙ¢c&r©+6õÔÏü]šzéJ¤¾­×Â;š@]±ƒÉÝ" ©—¡üÔaNY*uÕFSW¢ÔAÎY*uÕFSW¢œ±_L'-“ºrSHšº Aœµ¦¾-M]‰\ŒLêÊo¦Å¤©«À%ª©G%ÿ¼5õ¨jM½¦7Sˆ×Ôc$ÝØ5õiê*$ýÌ5õ8J¶wM=N³HÖƒr%‘z] Ž˜R/7ð¶4õXIKÌÁ¥©ÇJSW 2sêÇISÓ¦¯YÖ|E%z Žþ aiÒÔc%Ù±kê ÒÔ•hvð×,á4L¢BÒÔ•c6 M½^ê&Mí³øùxMÝÕÔKT0C³õ¦Ƥ©}…4u) fƒä~ÝâÔ:—È:Ô‡šz© f>õË0OcB}î´'oú"••¦^¢òdùÒÔŸ%nâÙ3Z iê…µé ÎžoV¨:Ôë³}¦!M=§âB_²ÏÊ!¤©gWZ¬‘¦^¶²wiêe*c\W-#3ªI={$]=£ªG=WìbM#îªE=g´hm£K«C=?ÁúFRW‚z1›­ñ¨åÔŸ1Ïr}GÈ(¥þÌ™­k;L]ãWs‰×uä£"ê%áÒÔ³din¡¶#Ú©—áV6:¬kö@êåÇüÜ뙩†ºœêL}s!ɧ.­&SãlkRO]n-¦Æ™¥ºä ÖÔ·%Ÿ8®wÆØÒ©ƒ§ª1õrOŒ8UsR—G”8ÕÞS/¯ŽŸCûM}&·*ñc>CõŠ7µîÐÞRWáWÖªóÌ=…Ͻ…òbÔAîá .«´wÔ3_¦2+ž…¨×yåLç.»ª¿wÔS/Sˆª>§é½ž´ãönÒŒ4…zÊ©Uõ9ͧ—߈ìZšIÔa*ÄàÔáZWÿ÷,º«‰ÔO´uEP’?Ç#ŒÎß·={0¢Á÷º”:Aê@ñ$€Ô¡[W8ÍUï“9yÖF׫þêv´pQë‚Ùú:¥NC¨Çº‚-AsñfŠÌÕ-Í©ó44=›&¿ Ô×)u‚Ô®DêjÚ…­c<0§O@¿0ðûkênèO]v$ø ¿nba‚þö;ãÔ¡Â%PœúLU×§9ï~ÿaþò´M@£.? ꫦQ_ƒVÆœ•ÍLZ4±Í©ÓÇ'Ÿ?RæOcÔ‰£u¾åS÷íEYœÈËìØA¹Ò>8AýoÞP‹þ.:¥­9Ôó·~Õ–úL±™R¥å§æË¥®$j((~囹ª9uRfQ›ìËL4c¿}nêp'_uf_ ‹ç–5N?7u¸“/‹:÷,ªL}˳ñÓÈKðäK¢.¾sfkÉ!#wë½’šóF!^§œú3ĺ²ÚaœÔËŸyÖ—zÙå%È[R-©Ëe zKª!u) <9Ú• Rß¾›–"Ø"¯¦Î\ä§Îï€U£\» P§ýéA„äÛ Äê„–}¿šï‚»û¿@ÜÏE=Potœ{3¸Ýb|“ðºÍÌh¨C7¨/»¾ Qÿíשÿ+¼¿ïœ£¾i™²;ï[Á}ÈÆ^Ò{ȤÞb¤îLBÕ9··æÉv gb„¨G×2| ¯Øê,*t‰Ø:|3éõ§Sg¸º7Fÿqúýó"Kç¥÷qnž8sØíÍÍ;‡<è¾á£C^Ñù˜“úÁ†ú¸‹ïWýÇÛ#lßðÓ¦sžM{lê³ùäΜ;mtnac0ïP6umÓ!êÝ‹ÅÍô¼{òÇ—Þ•ów·7ù‰QŸßŸ­órñšQ_üöÎ!B}:ør²¸qúw·‚úAf±µñéíƒE§Æyqfžã7È0 Ó9Ïî.]¼éܘt´kbë­ )”䦚JPènºè=ªÆ—·Ž}ó–ØÔ9§îL–dá\ZÇ”úÒ¹"Ï®u·wñD.€qFElÝqÌ1¦Ó@}ÅKë+zÛþÝÀtÎ3ÛtÑe«ßE¨›þ¬‹nySU£ZC¶N}âgFÈ™þQ”Œúõ÷éâØ¹7(uDŽ!B½O`,¹ÛÉEýpí×éƒNyöèâùw.úþö“éœg„:_ = “úõ5u\BUr&7±OŠ"Ô™­ÿà<¼»ãÔ‰™ßÜŸQêÔï÷‰alÝ™ôòS§À‚Ô™­_âÅç2Ç.¡k!J.¨­ÓYÐÌ õ°«*2îLÝÀm¡uê×ÿ¿ãx7 åÓté~M¸^ Lç<#Ôé‚—aZ4\kËÃzŠíõ9Jlø#f-»Oúi2l\‹À‹è¦?ã&ëæ%GbµJŠ¥(‰ú䚺×n{Õ9ŠnôËëÄÖëŠ=‰úíIuçN.FvÖ{Èæöú¸és úöYmº®åÏf×Ü®©Ÿ€y™Ú¸Yªv˜{ñЀØÕÔƒJŒÈ> .ѵq1`3²%p/›z=Œp¦Í­ñ)üw)•zm\ ðü¦îü[6õz¸ðÙÂ×ÏcÏ5õRµëÛ³‘‡œ~¹ÔëâØ¥QOŸ3‰a/z-Œ]u;gyê\Ó…á¹1wÆúSVêu0vÅÔKïsçÄÂ%P§†¾×ÔÓ®ôuÂn¢y‹þ/‰z\ŒRêX°\ZØ3“!¥>¸g bŽï ðW8oZú¡50veÔ…K6^f´p)õ«Ój_<^µùm0-Lfê50öêP7=›R7}gÖÂ2NÌPZ˜,o7[ÿ©´äQÏöÝ}³¸}ÿQÇž»øùØ0 ðŸÛÛia²}¨¦ž&Æ’ÞMoÇØ·ud!bëÄËÛŨWßÅT‚º÷ )9Žmî×ÛÈ:yG~³*F½òÆ.z6‹ÛÔ’N>eš†•a–wfNêâC«nìÕ ^Þ‘üC«nìͤ^uco(õŠ»D꙾¹$ê7ö¦Q÷?´ÚC!%RÏdo²¨WÛÇ4–z¥}ŒLêYÌMõ*ûÕÔKý ælÝűø)F¾Pi’I]ÅE> ¯óX¿EÌqÛÀÔdêø@„ìuåˆÐ/-ú5uÙÚ &fý„ûE]…‹‰R?ÐÔ¥+†úážQWàb"~è¯1Çiêe*Žz(t~i²Eƒ©+p1qŸ",ú¦šLÞØ“©¯z]|<½n`›"5ŽzÜ'rÂh8˜¿£ÖyJM×»_¸¨}É‚>h…¿Î[W§¶7ZV®ÁöѬ1[¡Š©eVÝØÁ©Ûø ÙÝÔBæ'òô2‘)¨ÛØöÈ@ô£0îÊ]Zží¹ôŸÁöЬ1Û÷:šz’|³¸r±±øx͈Ϳs=Ç™pêÄü'¾Ú^ü|ìS§qÆÜq¦ÈÄ[Ô1ê¸;¨WÝÅ@ßMo‰­/0÷0«O-bâNÜM_QêÈBk['·c9Ä¢¶®©g/9Ò40Ô¯[Zr4ñÄ"~ý’S?{ÉJŽ„ú‰OÆQß1¿¾¡¾J¥^u^Keâ×[ø5¦O)õKÔ’lšFPg‰îŽh¨Üñ× ud¦R¯¸±7±E€ªÚÆÞTêÕ6ö¦R¯¶±7–z¥]SW¡ÆR¯ô¼Í¥>^!‡šKÎ`ÃZsˆ:dì—/9_à•ÒD]‰x€åŽËLY$Rƒ©‹ÐyMT"t^S•˜¸CS•ÈÜ ©Ck¶{Ä‚¦.MA[ß ýÐԥɧÎò„ãÍ4uiò©ûs¤©K£¾êu{]tþ£Ë‚›¾îèûÑžPGÃ2ѵçÞ/\Ú÷ÍwiêÒ$¨ƒ,ϵ±Mã<ø.M]šõÅÇkŠÀ¨Ó˜&¾KS—&NÖÔµ­ˆ{kC]ûuùe˜§± ®Ë0Š´Ã¬L¿Šª©KS„úüêm‹¯iêÒms<~0ùЦ.Mº¥W…4uÒÔUHSW!M]…t’—¦®Bšº iê*¤©«Ðÿÿ¶–Õr,¼IEND®B`‚omniEvents-2_6_2/doc/doxygen/a00136.html0000644000076400001440000002401510303671737020061 0ustar alexusers00000000000000 OmniEvents: Servant.h File Reference

Servant.h File Reference

This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Namespaces

namespace  OmniEvents

Classes

class  OmniEvents::Servant
 Base class for servants. More...

Defines

#define OMNIEVENTS__DEBUG_REF_COUNTS   0
 Define the macro OMNIEVENTS__DEBUG_REF_COUNTS to 1 in order to compile in debug versions of _add/remove_ref().
#define OMNIEVENTS__DEBUG_SERVANT   0
 Define the macro OMNIEVENTS__DEBUG_SERVANT to 1 in order to compile in servant object count checks.
#define OMNIEVENTS__DEBUG_REF_COUNTS__DECL
 Declares debug versions of _add/remove_ref().
#define OMNIEVENTS__DEBUG_REF_COUNTS__DEFN(C)
 Defines debug versions of _add/remove_ref() for class C.

Functions

CORBA::Object_ptr OmniEvents::createReference (PortableServer::POA_ptr poa, const char *repositoryId)
 Helper method called by createNarrowedReference().
template<class T>
T::_ptr_type OmniEvents::createNarrowedReference (PortableServer::POA_ptr poa, const char *repositoryId)
 Helper method that creates a new CORBA object and then narrows it to the appropriate type.
char * OmniEvents::newUniqueId ()
 Generates a unique object ID string, based upon the current PID and time.


Define Documentation

#define OMNIEVENTS__DEBUG_REF_COUNTS   0
 

Define the macro OMNIEVENTS__DEBUG_REF_COUNTS to 1 in order to compile in debug versions of _add/remove_ref().

Definition at line 49 of file Servant.h.

#define OMNIEVENTS__DEBUG_REF_COUNTS__DECL
 

Declares debug versions of _add/remove_ref().

Definition at line 68 of file Servant.h.

#define OMNIEVENTS__DEBUG_REF_COUNTS__DEFN  ) 
 

Defines debug versions of _add/remove_ref() for class C.

Definition at line 70 of file Servant.h.

#define OMNIEVENTS__DEBUG_SERVANT   0
 

Define the macro OMNIEVENTS__DEBUG_SERVANT to 1 in order to compile in servant object count checks.

Definition at line 52 of file Servant.h.


Generated on Fri Aug 26 20:56:15 2005 for OmniEvents by  doxygen 1.4.3-20050530
omniEvents-2_6_2/doc/doxygen/a00271.png0000644000076400001440000000257610240666465017713 0ustar alexusers00000000000000‰PNG  IHDRjWße!PLTEþÿÿo___ßßß¿¿¿???ŸŸŸÿÿÿhßEàtRNS@æØf IDAThíšÏs¢HÇç_È5ÇLjSrÝlé1atá¸ÉÄÈqÔÍêqŒášÔºrTš[ø¡ðþÊ}¯%Ô 55‹ U|µcÛÍÇׯŸÐyïàõ®h€ŸRIŸJêüTRç§Ü¨C–…켩3¥¤þ•Ô%õn5uuwUÑéP™×¥”þb¨½XUvõ$À†ÚMé/†Úè¹U¾EXušŠ¡^)àÉÂñ uèÙ`Hc«jÃjaSq¬™UÑRŸ™.¥Öð3•)=‹¤æۡЂPsêÚ¤63qva¥ŸÁ¥ØgÁ,°%˜úHév:ZáÔ4C:pj ‡ÿ„ ´`CDÛÃ54=~Sñ•"©ÑCüŽ QûÝ µÇ˜‰î\aL7 LPcó7G/n5ö#[û€âE¶¶AD¶,…[_/’Úû‚‘üšÅ¿©oÅK°ó¨êÑWê Þ-y©_6ojC¼â­¡øñsT借“ýÔ¶•+5$­Ê›|Þaƒ§ÅºÓrq êù*Ó@sûg I2÷Ææ-¥‚X5”-U,ÔW™~ÂaBòß»ùR×û ÅéÔkïr.CÙû‹S[Á#¥‚Œ/œz! R;çÚBKqà&RDò] yŽT¾ÖÁJáj쬩Áãé 7=¨ hR R‡rП áÓ*‘"’¯­©Hè'® ί6¥}p껯·ô¢C µÍ3/$¤–Ó ˆ²DbcåOÍmÝ ¬©ÑÌJðhóôJTâ¶ß¡­ïW‰‘ü©É¯ÿ–0n¿¹cÀ|M}q{'„Jýº~Ýæ~]¯á\Šm7‘"’?5F·hp±žõêˆÇ¢vÕ/àš“D ™ÒC’z¿í`ŠÝé?‹›± £ö†Û>dêVêÏ5—•íc•×|»Ï”åX%õî3e9VI½]G°‹“ƒJêüTRç§ÿeóZõ -ÔøIEND®B`‚omniEvents-2_6_2/doc/doxygen/a00137.html0000644000076400001440000001254710303671737020071 0ustar alexusers00000000000000 OmniEvents: SupplierAdmin.cc File Reference

SupplierAdmin.cc File Reference

#include "SupplierAdmin.h"
#include "EventChannel.h"
#include "ProxyPushConsumer.h"
#include "ProxyPullConsumer.h"
#include "Orb.h"
#include "PersistNode.h"

Include dependency graph for SupplierAdmin.cc:

Go to the source code of this file.

Namespaces

namespace  OmniEvents

Defines

#define MILLION   1000000
#define BILLION   1000000000


Define Documentation

#define BILLION   1000000000
 

Definition at line 33 of file SupplierAdmin.cc.

Referenced by OmniEvents::SupplierAdmin_i::collect(), Time::operator+=(), and Time::operator-=().

#define MILLION   1000000
 

Definition at line 32 of file SupplierAdmin.cc.

Referenced by OmniEvents::SupplierAdmin_i::collect(), and OmniEvents::SupplierAdmin_i::SupplierAdmin_i().


Generated on Fri Aug 26 20:56:15 2005 for OmniEvents by  doxygen 1.4.3-20050530
omniEvents-2_6_2/doc/doxygen/a00272.png0000644000076400001440000000534610240666466017713 0ustar alexusers00000000000000‰PNG  IHDR×ê95!PLTEþÿÿo???¿¿¿ŸŸŸßßß___ÿÿÿeT¨0tRNS@æØf sIDATxœíKw£6Çû¼˜M–ó8i²œÓž9ñ²™Lê,g¦‹x9MO/3ÓCͲ]$ö2~XÛ€>eõÀlÀBºáŸ86FAü|ïø"‰ÐóÑ÷ªÞj`몶®j`ë*M°.‡Ôï…&Xow‘Pý^4°ðj`Ój`aÕÀÂ+¶¿ªì¬u@ž’°s{õê¼v°X)Ø0†uêÛbæ Æ×và¶;ghð€¦á|ÜEý«QT²6°Ô²o­#ûÎ: íàð¦}oRË/£’¦Ã¶Z+»RØ3Ô·ô%´C{qá ÏÖ^yµÑ°Ø¦ì/ña ë ÐrÝqh÷‘ïy8\iÌÖ6j… ,y[ÖCVÚ²æÃF-JzX̾ZÅì+ Û3–ùïjQSXÖ'QkŒŽºŽá°±Q“¢°&ŽªþÖ9•‰°­Ìw)Ú¿Ö]üF`gÙ¬‘»‡ëw†›EŒƒe¹0Q ¿õä²Ö6Ÿµ~°¬µƒ-b­lkÝ’ä3 í¨l¡ï‹ `M`…‚5Á‰¡`pb(X3Xa`Ípb XC kŠaA`M1l[RÆx1¬1†€5ǰ°æ¶-%ƒ¼¸-%ƒ¼¸-#“¼¸-#“¼¸-!£¼¸-¡gkTÈ6°%ôœ`Í Ù–_ ìþJÖ¬ö©å×s‚5,dXnæÅ ,·ž¬i!ÛÀòêYÁš² ,§d¼¸•!‰ÍqªØ<0õ¼šawXP1¯lÙåsÕVæð6i‚-“3eæ‡å÷âòΩȼÊaÃP‰yÅay>{©WìL¾i…Ɔ-öâPÔÁ⪀mA¶/M•0lÎ>ÀŸ÷ÍàpEa³ «ê Wv«zu§lÜ ì¦aUžäÑú@6«áë­ l²jßDahÅ`†ÕƒŠ@2^b°ñ§œ7/… ÉW%»úU7K’¦‚eˆÚ8–l…"°´Nœ®Y\°Ô‰õ:p,¹Z`ªðàHrMryØ™ÒÃ]’2myX^ü nÖ–¥LË`CžBJL²Ù¥•2a¥LÛÀî3¬Œ+cZó`%Lk¬„i¡aÙ!X)¬¸i·a/ÆÅèÅÛc' Ö?º_í0Þä(]ðÆ}³õÏd2Æõ„Œy°â¦…‡%' öÛ»¯“èíвìD©¹íŸZ'[4œ°Â¦U‹Ë`ïè/Uh§J…v0DøwCœ°Â¦MÀz·KÌ9ǰStíâ‡wûäÞúG.yíö–ü°-{†E怽w ìcÛwÐ`„¦vçlÞE¾WúÓÎïn¯5=™bP¼Š>ôpÌ~á•\°ôotè¹ý:!1;Á°–e¡ð ·7m ëÿŠ=$f°½°3‘Ë]éÖØmÿ“l1,n½N‰Ö%`éIEÔ»î .YİvR[ã¬SVè’aö¢ððÊyœMÂJªVä’·±°3Ó&`§æÁ–4­_ñ˜Dz²[δÆÂ®¾s”‘Á°ˆî‹2ih³a9 ­J–¿"À&ê®d pJv¿¦÷U [Ý%¼,©†ôn“jXµûC«vÑsHÊaéµwS! ÛÏ_ŸJV w ÚZ û-¬oK–k÷ã”rãP ,1í~o#7< eç¬s~în{Ùù€©è¸¤DGÍJzBmŠÁ’LWØ» íð "7l_¢D*:.)Õ+uh,Éa†=ìÆa9è‹úv"—”ëo\=-ƒ%ÙéÅë7ä^оëŽ/v";—”ì6_yÜ®-»@ÄmDn Ù Aa#ÓÒVªÊ±ï‰˜í2XrÉî‰HEÇ%e‡ºÐv¹BoNµÆ ¸Ã§ñÛ‹D*:.)=®§¥½ÛqJêO‰bßmÁŽÐ*)Ͱ‰/@éMލ¶ØŠYì:hEòÕPª¶‘Q,iÔ»yö’+ÎS‹5{QÆ9àf ©¶ìh“a/l ©bXáK–bJפVüb´˜*…9oƒ†ÝÙÇx;Ç‹¿… z(Î Fù@ò´.›ãÆB}*Ä”ZÎ>Æ™°ï‡hm¯ÞÝ [r‡¡awö1΂]L½­ò;a¦s›Q“³qÿj„WöBüDÛö½`8EÁøÄ¦¹^ß#ïÓ„/)Ë”{ ÚéKP°ÄD…}ŒûÃK4ÂKø‰<î¬Sß›÷îÐ[ëȦ¹^Ÿ®£ _R–)£È©€-ìcÜ·CÛöÉý!Y^ï]c—ˆr½¾Góf$áKʲoÊtK…›ß˜»qhüqk¹îØ÷®ÛsP˜†õ0,Ê…%U—þR »³1˜ Ø²²|ïznY¶VèÛ34ìÎ>Æö)†½³^ù-=³kØ^1¬XªnvÎ>Æàäôõ 6p‡þái0¾NÂ:ŰbihXEÚ€•!ªd¥:aó] ,¿µj„•±%¬VÒ°¢)j¸»§éƒ•R*¬g›ð(>ÆI߬:KÊÀ{YÊŽy¯¢fa‰¾ ¬žª%=)‡„´ÃJT( «Ûå'Ò©¨rÝõIÃêöc™êLƒ˜Ö¬²êKK꣕‡ÕjZÝSï@9É}°°M«úÐ-i3­lE°ÚL+[¬&ÓJW«g`„ü@"X-Ž,_¬†á[Þ«>l!" VuØ‚l ¶(¤8'…ðò·óQÂÁ„m_1 ·ƒ-[YX¨„Íß'IX°æ6w¯ä`áš>Pؼý’…1 ›3½8ìžÜ=-G™ŠÂBß„†MãF‡£mØ~ÖËbðã¢àa“ƒ2"ðmاõËlØ=»—e¡¢]n|XèÆ°P÷KÜ”"Øwƺ¶3Ši‡L MhL–ÐàƒƒaãNÅÓÁ/e°ë1z,ésܾôÙ„ÆdééðÆa×ÿ loˆ¢x´)ƒ%“£¾MŽŠ—æ]ßaYiÎF[\:`#·Äx‹—ƒ,†$°¨N°+7&xÝpÛ²õMz(ìI–Äì²>°‘bاñÛó5,iI_ù:ÂniiûG18U þ3ä(§*aÑàÞæ)¦JaÅŠ‰«…V+\L\ ,´ä¯ÀH 쾨­«غêûÿ67û¤s‘–»IEND®B`‚omniEvents-2_6_2/doc/doxygen/a00042.html0000644000076400001440000003475010303671737020064 0ustar alexusers00000000000000 OmniEvents: Consumer_i Class Reference

Consumer_i Class Reference

List of all members.

Public Member Functions

 Consumer_i (long disconnect=0)
void push (const CORBA::Any &data)
void disconnect_push_consumer ()
void consume (CosEventChannelAdmin::EventChannel_ptr channel, const char *&action)
 Consumer_i ()
void disconnect_pull_consumer ()
 Consumer_i (long disconnect=0)
void push (const CORBA::Any &data)
void disconnect_push_consumer ()

Private Attributes

cdrMemoryStream _memstream
long _disconnect

Detailed Description

Definition at line 190 of file events.cc.


Constructor & Destructor Documentation

Consumer_i::Consumer_i long  disconnect = 0  )  [inline]
 

Definition at line 193 of file events.cc.

Consumer_i::Consumer_i  )  [inline]
 

Definition at line 159 of file pullcons.cc.

Consumer_i::Consumer_i long  disconnect = 0  )  [inline]
 

Definition at line 172 of file pushcons.cc.


Member Function Documentation

void Consumer_i::consume CosEventChannelAdmin::EventChannel_ptr  channel,
const char *&  action
[inline]
 

Definition at line 211 of file events.cc.

Referenced by main().

void Consumer_i::disconnect_pull_consumer  ) 
 

Definition at line 163 of file pullcons.cc.

void Consumer_i::disconnect_push_consumer  ) 
 

void Consumer_i::disconnect_push_consumer  )  [inline]
 

Definition at line 206 of file events.cc.

References orb.

void Consumer_i::push const CORBA::Any &  data  ) 
 

void Consumer_i::push const CORBA::Any &  data  )  [inline]
 

Definition at line 194 of file events.cc.

References _memstream, Time::current(), and STDOUT_FILENO.


Member Data Documentation

long Consumer_i::_disconnect [private]
 

Definition at line 178 of file pushcons.cc.

cdrMemoryStream Consumer_i::_memstream [private]
 

Definition at line 227 of file events.cc.

Referenced by push().


The documentation for this class was generated from the following files:
Generated on Fri Aug 26 20:56:15 2005 for OmniEvents by  doxygen 1.4.3-20050530
omniEvents-2_6_2/doc/doxygen/a00273.png0000644000076400001440000000533510240666466017712 0ustar alexusers00000000000000‰PNG  IHDRÚê÷Ç™…!PLTEþÿÿo???¿¿¿ŸŸŸßßß___ÿÿÿeT¨0tRNS@æØf jIDATxœíKsÛ6ÇûtèÅÇ&®ã;ÓéX×ÄI¥c›¬c«™ŽutÜQÉc¦3ŽuŒÓäM±$>e±)’âX€Í¿%[|˜Ä»©åüŽ<'}×v´ª§í®zÚí®4Ñnµ<õÅÐE[cžY=­õ´ûêi‘Õ6í6fìí`¿S´ï£+»{´TiZ'út“–˜Ü¾sÈíÝê~⻋`úHFçdû0†kv‡–ÙöéäÊño®‡ù4œ\Á¶ëˆÒtÚå ²,£]M¶N`o^;Ô—?öz ´Îαͦ Ž·mØJQ8ÇrݱC+«Ð*Ëëmh—aU%¼Îƶ%[;eÛÐ.™Y™g ^o¯¢z{EëíÆ|ÚAÌJ'Øo~bmò#9Úäo_ƒ¹á´‘ §Äh7vâìjeÖ1‘65¤õOþ]ìæt‚66òä/önŽŸYÇ<ÚØn~*‚í$m!li—Űݣ]•,ìmlç¢çK¬ ©m©iEX´%-Ô ‰Ö?F£5±h 1-­!¦Å¡5Å´8´¦˜…ÖÓö´eŒ#cКcZ ZsL‹@ki{Ú†2È‘{Úf2É‘{Úf2É‘{ÚF2Ê‘{ÚF2Ê‘{ÚFzV´fUÛž¶‰ž­YÕ¶§m ù§m ù§m gEkZµíië«§=hIÑšÖHõ´õÕÓ´dhk¤zÚÚ’pä]Æ„4Ô‹h—dKõÀši‹HãÅJ%h›VÛ Òx-±âÔ‘&Úz¤¡ÔX‚¶v‘šû§*+§­ŠJ ,N[Ç‘¥Z%>¯BZùS(:¯8myA85™Wí •©¬w`c Ó82*i´I´M Óæ˜Vi´a¤ ‰ÒfM«ò«+™(í¾i•²,\ZÕ¬ W6éÈJ¯ãcaìD66­‚+žÊ} KŒ66miÿq\!ìJŒ6Ú¯–ðÊNòq0!Z^…4Õ×Ì~%$B˱V³†’Å¡LÔË×f»–í@gC¼'É–ª9íRsÛ´¿w5§­Õ6ý¡Ü-KhN[c¤‘jmv"S¦PëܹRÆíišVʕͣ•1®y´2Æ5V¸شáéI%­„q3´÷ÁXŠ–_ypÚ+÷8šOÿq˜Zq{ú%{H,’è±Vܸø´ —lßÌÏ""g>O®öž\ÿòñkæ¿ëÑŠW-\l1H/.'½šC>xí©&­°q´¾}9v½·”öf{J?è ïfC—œ=lF¹3J:½cï Zaã&h×o?†´þ£´t†÷áý™ëþüö#}…´9ù!#l ?“‡VKo „CŠD«Á—1º…bÑ*÷e”>°X´ª}§Ã/m™/ï÷S l¶ÍNH½›ñhK ÔÛB1-VWn<Ú’"ÉÒ¢õ[G¤-.”$-^'}LÚÂbÉÑ"ŽH€J[T0ZÔžF¸´[â´ÈýnióË'L‹}G§MóòYÚD&küqVA×O´ÉºÆ œcÛ8M;ŸVÍ“p•ÐÆ"á9Ä¥žœG«ª¤"Úˆ—çþsÚ`zG¦÷3>`²Sþý¥‘Â#‚#jKmÜ¿oÑ..ÈÝÚã&{0õÓüÔNŒH¡¾c«BZÇ iíÀ¶·N8ð*LËNŒHQò­IZhÖ™òýö*IëÀÈ2q?þnВض_IÖ¶]¢…ß Ú§$-ÔÛY‡h¹bÚ³7/´Ð&;¥Íêïô¨_§ý4O= ¡ã´¾{’œì8ížzZ\õ´èêisÔZé{HÒB{0êi»«ž¶»úõIŸÎn—íüIEND®B`‚omniEvents-2_6_2/doc/doxygen/a00274.png0000644000076400001440000000537010240666467017713 0ustar alexusers00000000000000‰PNG  IHDRßêîRÁ!PLTEþÿÿo???¿¿¿ŸŸŸßßß___ÿÿÿeT¨0tRNS@æØf …IDATxœí¿sÛ8Ç÷_P±Ëd3Ž]fngÇ*Ïq|r™äfÇ*s¾¹³J'3\±Ü+l©´~Ð`µ²%QÄ_yx E‘I‘À(Ðü:²EðÑ{¤žð'úºô×OU·@³ຫ®»àºK#0) õ­Ðìî/â«oE¬N ð®`|5Àê” ÜžÕxÖ:‚?q๽~vYK`¦£°;unf^oíiw.èà‰N;Ãù¸Kû7£°d­€¸…?X'öƒuîÛ«ã»ö£uÎ-<¼KÖ¸ÕZÛ—_оíÐo¾íÛ‹+‡~åÀöÚÃf¶ ~ƒ?s`‡ú!cßîSÏuYøò® pØ;0<‰,ìR+iáz‡½Mž–‚~»Žá· ¸WàÀ—×9zéáó$ì¥éIשpdܸ8ðbg]oçÚËTàVê^Ž÷§õí¨ ð,7tir¼Ù3Ü.b$ð,ÍA5ý´”É[SàlÞzçðÖ8·–Ày¼uLÄÏ_K•0súP„ l/&°  l„Cc›Á‹l†C#b`4`S ŒlŠ`AãÑXÀÆ Ø#›càXHyt,$ƒ<º‘IÝ‹È$n€d”G7ÀzuÀF…p, ×lV7ÀåÕ¶äÍê³àòj€[ÒÀ†õY piæÑ pY™æÑ pY½:`ÓB¸.)n¥Hª1…Tpœzæ €÷XR1³$pÙ.æ¶­Ô©|8Ò\&FgÊÌ,\Ü£Ë;ª"3k K%f–.b©NY-ðL¾ËÅF–Î÷èRâ"«naö9˜Ý—pF;ð¯gxÈØÀª.ˆÑe€w=ZåU!Ò¼(àí(¾ðÇ!–Þ2°úÏv(ÄXÀ:>Ê¢KÇjׂKQ2hâÀ›Ê³îP ùšÄ×VùáuWÒÄÂÀAÍê>·æ×+.QàÀ¡µ7”$±(0jŒÝíªÅ%ÜB½¾-'¹®Z x¦¹«JJªf1à"]ÕâŸꦽ²”‰`¿È**%TYÈ4k­T`)7À&Ëø´‘À2&6XÂÄfK˜XppÎR ,nâTàñ¾7 ÿ5ƒ³tì<®Í^t”,xGÞíügXìr³àe°¸‰ÕÃeXüã·ï“p·oYv¬ÔÜöέ³¢‚ÀÂ&VÌŒ?ð\¾(åÛ«!eÿ¶TXØÄ1`÷~ÉHçOöÝxeŸMé-a÷þ…°=ž“Þ²8p+¾ Ô‚uwoÆ]~n{Œè´Óî\̻ԳÙAoÚùéõo¦¬RÊ6ÚðØ,jâ8ð×Ë¿1`wp?^>ú¿~üNþýñ‹{{JØBØöèëåYœ6%}€ Ø VVž.¯xyµ<]Ýÿh?-\ßæk²ƒ¿–£¥Ûoß¶o0;}À¢&Žwp`2ž“ùyCæäØí°Ÿ;ʶ“Ç“²††ÃÚÙS^É„:Ï=ß^ž:Ô ÙÁK×c?} ?”y€½À‚&Ž3Püøûgðì9å+f{ƒgïHñ>¢‘K†ÕÑ?ÿ»4ý£"äŠ3—^œ²ƒNØeÀn`~ö+oæm çä€ïÈûµ…Ù°ð{fáA1`hGÔiý î.M¿ý—ú,r90tZ§;. Ìhr.‰¾8{žÎÝüëÇ/<†Á¥OîŸX ±…€ùïð´tÿ}1]zðD—‹Î…ÿµ»"íe祺£’’ƒK+¹”T ™3¿wãÛþ; 7 m_ÓXª;*)=šöˆ`Èú=æÒ~—:ô›Gûv,Õ•” ^=q ÙïÅ/ïàž™!ãÅ›ËüF%¦TÇ /(¸´Máf¡]8Då=W•kÄb¸ÃÍB»gv,Õ•Ę·Tuï•襟' xE†/ãW±TwTe¢VK÷¨é¤ô\ZrEƒÄqg¢•TÀÉ4DiŽºªY•ÄÕWäÔc3=*$®¸…‘©,ÁÔ ¼u½’‹ÎR¼nÃÏeœwñ¡ €ËΜ2XðË4qU ,üu©¸’A¬Xü qqU ,r}§xïéÝ2û7èÑ(çæáϦl†K ñP¢¾‚c¤S?é&ÉÚ^ïÝ\²½*€÷Ž‘N^LÝò{–¾Á]›¶àéþ͈ìùì°Ð§oÀ{ÇHsà—øÁzëM\ºty o€{ùÀb©pÜû<# g翬Wdè= )®Æ·q`'X,½¢X‘¶€¥&yȨ*`ÁüY\^±š5ËÍL“R¬HI`Ñ8î]ñôKN§•Ò«ŽyÊ霤rZ%eè½Keרªva‰¿Ç °Þê%½p‰¤´KTˆ¬Û§åª°ºëCÖíÓ2Õ™Œ°D\¥M(-©·X«‰«Xæ¹å$÷æ"k4qEKµnK›‰e+ÂÖfbÙzЀ5™Xº4`=“=ä'Jákqjù:5LSCð"D`õaŒ5˜ÀªÃååQóB¬à‚nö+༸À9aœCR¬’ûà焱,0V¸ g·K­{ÀÎl™0^wˆœÕ6`ÌQøÀ·÷> »âe(uñEQ`ìi«*€“Èá©j¸Ÿöt«þÜ/5ÀñÉ&!ü.ðËæi:ðÞ»4W­èE@œëÒ)ÀX÷ÅÜ–Bày ÓH¦X`#\P¶èà“À£AÑ.š«R\J7sB`3ݾö‚¥aëåøÎ PoþƒÒ)¦ÑLÛ¦}+\Œ–mÍ»ž  JìÌÅ¥ 8tQ†¸x3ˆ3P¦u^»4 vý] × 8vZâÀg1`ˆáe½€CEÀ/ã—`è¥aÜ]w´´=·@1 OmniEvents: Class List

OmniEvents Class List

Here are the classes, structs, unions and interfaces with brief descriptions:
OmniEvents::CallbackInterface for classes that wish to receive callbacks from deferred requests
Consumer_i
OmniEvents::ConsumerAdmin_i
OmniEvents::DaemonInterface class that contains various methods for running omniEvents as a background task
OmniEvents::DaemonImplUtility class that contains various methods for running omniEvents as a Unix daemon
OmniEvents::EventChannel_iServant for CosEventChannelAdmin::EventChannel objects, also inherits from omni_thread
OmniEvents::EventChannelFactory_i
OmniEvents::EventChannelStoreContainer for Event Channels
OmniEvents::EventQueueThe EventQueue is a circular buffer, that contains _size-1 events
OmniEvents::EventQueue::Reader
OmniEvents::FilterEvent filter interface
OmniEvents::FilterByRepositoryIdAllows only events of a certain CORBA RepositoryId to pass
OmniEvents::FilterByTCKindThe most basic event filter allows only events of a certain CORBA TCKind to pass
OmniEvents::MapperA dummy servant that installs itself into the INSPOA and redirects all calls to the real destination
OmniEvents::omni_mutex_kcolThe opposite of omni_mutex_lock, unlocks the mutex upon construction and re-locks it upon destruction
OmniEvents::omniEventsLog
OmniEvents::omniEventsLog::IOError
OmniEvents::omniEventsLogWorker
OmniEvents::OrbSingleton class that owns the ORB and various initial references
OmniEvents::PersistNode
OmniEvents::ProxyBase class for three of the four Proxy servants
OmniEvents::ProxyManagerBase class for ServantActivator classes that manage Proxy servants
OmniEvents::ProxyPullConsumer_iImplementation of the ProxyPullConsumer interface
OmniEvents::ProxyPullConsumerManager
OmniEvents::ProxyPullSupplier_iServant for ProxyPullSupplier interface
OmniEvents::ProxyPullSupplierManager
OmniEvents::ProxyPushConsumer_iDefault servant for ProxyPushConsumer objects
OmniEvents::ProxyPushConsumer_i::Connection
OmniEvents::ProxyPushSupplier_i
OmniEvents::ProxyPushSupplierManager
OmniEvents::ProxyPushSupplierManager::PauseThenWakeHelper class that locks ProxyPushSupplier upon construction, and wakes it up on destruction
OmniEvents::RegistryKeyOpens a windows registry key, and closed it upon destruction
OmniEvents::ServantBase class for servants
OmniEvents::ServiceSingleton class that contains various methods for running a Windows service
Supplier_i
OmniEvents::SupplierAdmin_i
Time
OmniEvents::timestampThis class can be used to generate timestamps
OmniEvents::WinUtility class, contains functions that Windows should have, but doesn't
OmniEvents::WriteLockObtains an output stream to the active persistancy logfile, and locks it for exclusive access

Generated on Fri Aug 26 20:56:15 2005 for OmniEvents by  doxygen 1.4.3-20050530
omniEvents-2_6_2/doc/doxygen/hierarchy.html0000644000076400001440000001036510303671737021230 0ustar alexusers00000000000000 OmniEvents: Hierarchical Index

OmniEvents Class Hierarchy

Go to the graphical class hierarchy

This inheritance list is sorted roughly, but not completely, alphabetically:


Generated on Fri Aug 26 20:56:15 2005 for OmniEvents by  doxygen 1.4.3-20050530
omniEvents-2_6_2/doc/doxygen/functions.html0000644000076400001440000002751610303671737021270 0ustar alexusers00000000000000 OmniEvents: Class Members
_ | a | b | c | d | e | f | h | i | j | k | l | m | n | o | p | q | r | s | t | u | w | ~

Here is a list of all class members with links to the classes they belong to:

- _ -


Generated on Fri Aug 26 20:56:15 2005 for OmniEvents by  doxygen 1.4.3-20050530
omniEvents-2_6_2/doc/doxygen/a00039.html0000644000076400001440000000647610303671737020076 0ustar alexusers00000000000000 OmniEvents: Member List

Consumer_i Member List

This is the complete list of members for Consumer_i, including all inherited members.

_disconnectConsumer_i [private]
_memstreamConsumer_i [private]
consume(CosEventChannelAdmin::EventChannel_ptr channel, const char *&action)Consumer_i [inline]
Consumer_i(long disconnect=0)Consumer_i [inline]
Consumer_i()Consumer_i [inline]
Consumer_i(long disconnect=0)Consumer_i [inline]
disconnect_pull_consumer()Consumer_i
disconnect_push_consumer()Consumer_i [inline]
disconnect_push_consumer()Consumer_i
push(const CORBA::Any &data)Consumer_i [inline]
push(const CORBA::Any &data)Consumer_i


Generated on Fri Aug 26 20:56:15 2005 for OmniEvents by  doxygen 1.4.3-20050530
omniEvents-2_6_2/doc/doxygen/a00075.html0000644000076400001440000004214210303671737020064 0ustar alexusers00000000000000 OmniEvents: Supplier_i Class Reference

Supplier_i Class Reference

List of all members.

Public Member Functions

 Supplier_i ()
void disconnect_push_supplier ()
void supply (CosEventChannelAdmin::EventChannel_ptr channel, const char *&action)
 Supplier_i (long disconnect=0)
CORBA::Any * pull ()
CORBA::Any * try_pull (CORBA::Boolean &has_event)
void disconnect_pull_supplier ()
 Supplier_i ()
void disconnect_push_supplier ()

Private Attributes

bool _connected
long i
long _disconnect
CORBA::ULong l

Detailed Description

Definition at line 235 of file events.cc.


Constructor & Destructor Documentation

Supplier_i::Supplier_i  )  [inline]
 

Definition at line 238 of file events.cc.

Supplier_i::Supplier_i long  disconnect = 0  )  [inline]
 

Definition at line 156 of file pullsupp.cc.

Supplier_i::Supplier_i  )  [inline]
 

Definition at line 163 of file pushsupp.cc.


Member Function Documentation

void Supplier_i::disconnect_pull_supplier  ) 
 

Definition at line 168 of file pullsupp.cc.

void Supplier_i::disconnect_push_supplier  ) 
 

void Supplier_i::disconnect_push_supplier  )  [inline]
 

Definition at line 239 of file events.cc.

References _connected.

CORBA::Any * Supplier_i::pull  ) 
 

Definition at line 173 of file pullsupp.cc.

References _disconnect, connect_cond(), i, and l.

void Supplier_i::supply CosEventChannelAdmin::EventChannel_ptr  channel,
const char *&  action
[inline]
 

Definition at line 244 of file events.cc.

References _connected, Time::current(), Time::is_nil(), Time::sleepUntil(), and STDIN_FILENO.

Referenced by main().

CORBA::Any * Supplier_i::try_pull CORBA::Boolean &  has_event  ) 
 

Definition at line 190 of file pullsupp.cc.

References _disconnect, connect_cond(), i, and l.


Member Data Documentation

bool Supplier_i::_connected [private]
 

Definition at line 287 of file events.cc.

Referenced by disconnect_push_supplier(), and supply().

long Supplier_i::_disconnect [private]
 

Definition at line 163 of file pullsupp.cc.

Referenced by pull(), and try_pull().

long Supplier_i::i [private]
 

Definition at line 162 of file pullsupp.cc.

Referenced by pull(), and try_pull().

CORBA::ULong Supplier_i::l [private]
 

Definition at line 164 of file pullsupp.cc.

Referenced by pull(), and try_pull().


The documentation for this class was generated from the following files:
Generated on Fri Aug 26 20:56:15 2005 for OmniEvents by  doxygen 1.4.3-20050530
omniEvents-2_6_2/doc/doxygen/a00040.html0000644000076400001440000000711710303671737020057 0ustar alexusers00000000000000 OmniEvents: Member List

Supplier_i Member List

This is the complete list of members for Supplier_i, including all inherited members.

_connectedSupplier_i [private]
_disconnectSupplier_i [private]
disconnect_pull_supplier()Supplier_i
disconnect_push_supplier()Supplier_i [inline]
disconnect_push_supplier()Supplier_i
iSupplier_i [private]
lSupplier_i [private]
pull()Supplier_i
Supplier_i()Supplier_i [inline]
Supplier_i(long disconnect=0)Supplier_i [inline]
Supplier_i()Supplier_i [inline]
supply(CosEventChannelAdmin::EventChannel_ptr channel, const char *&action)Supplier_i [inline]
try_pull(CORBA::Boolean &has_event)Supplier_i


Generated on Fri Aug 26 20:56:15 2005 for OmniEvents by  doxygen 1.4.3-20050530
omniEvents-2_6_2/doc/doxygen/a00077.html0000644000076400001440000005764510303671737020104 0ustar alexusers00000000000000 OmniEvents: Time Class Reference

Time Class Reference

List of all members.

Public Member Functions

 Time ()
 Time (CORBA::ULong sec, CORBA::ULong nano)
 Time (const Time &right)
Timeoperator= (const Time &right)
bool operator< (const Time &right) const
Timeoperator+= (const Time &right)
Time operator+ (const Time &right) const
Timeoperator-= (const Time &right)
Time operator- (const Time &right) const
void operator>>= (cdrMemoryStream &s) const
void operator<<= (cdrMemoryStream &s)
bool is_nil () const

Static Public Member Functions

static Time current ()
static void sleepUntil (const Time &futureTime)

Private Attributes

CORBA::ULong _sec
CORBA::ULong _nano

Detailed Description

Definition at line 89 of file events.cc.


Constructor & Destructor Documentation

Time::Time  )  [inline]
 

Definition at line 114 of file events.cc.

Time::Time CORBA::ULong  sec,
CORBA::ULong  nano
[inline]
 

Definition at line 115 of file events.cc.

Time::Time const Time right  )  [inline]
 

Definition at line 116 of file events.cc.


Member Function Documentation

static Time Time::current  )  [inline, static]
 

Definition at line 95 of file events.cc.

References _nano, and _sec.

Referenced by Consumer_i::push(), sleepUntil(), and Supplier_i::supply().

bool Time::is_nil  )  const [inline]
 

Definition at line 182 of file events.cc.

References _nano, and _sec.

Referenced by Supplier_i::supply().

Time Time::operator+ const Time right  )  const [inline]
 

Definition at line 144 of file events.cc.

Time& Time::operator+= const Time right  )  [inline]
 

Definition at line 133 of file events.cc.

References _nano, _sec, and BILLION.

Time Time::operator- const Time right  )  const [inline]
 

Definition at line 166 of file events.cc.

Time& Time::operator-= const Time right  )  [inline]
 

Definition at line 150 of file events.cc.

References _nano, _sec, BILLION, and operator<().

bool Time::operator< const Time right  )  const [inline]
 

Definition at line 126 of file events.cc.

References _nano, and _sec.

Referenced by operator-=().

void Time::operator<<= cdrMemoryStream &  s  )  [inline]
 

Definition at line 177 of file events.cc.

References _nano, and _sec.

Time& Time::operator= const Time right  )  [inline]
 

Definition at line 117 of file events.cc.

References _nano, and _sec.

void Time::operator>>= cdrMemoryStream &  s  )  const [inline]
 

Definition at line 172 of file events.cc.

References _nano, and _sec.

static void Time::sleepUntil const Time futureTime  )  [inline, static]
 

Definition at line 104 of file events.cc.

References _nano, _sec, and current().

Referenced by Supplier_i::supply().


Member Data Documentation

CORBA::ULong Time::_nano [private]
 

Definition at line 93 of file events.cc.

Referenced by current(), is_nil(), operator+=(), operator-=(), operator<(), operator<<=(), operator=(), operator>>=(), and sleepUntil().

CORBA::ULong Time::_sec [private]
 

Definition at line 92 of file events.cc.

Referenced by current(), is_nil(), operator+=(), operator-=(), operator<(), operator<<=(), operator=(), operator>>=(), and sleepUntil().


The documentation for this class was generated from the following file:
Generated on Fri Aug 26 20:56:15 2005 for OmniEvents by  doxygen 1.4.3-20050530
omniEvents-2_6_2/doc/doxygen/a00038.html0000644000076400001440000001034510303671737020063 0ustar alexusers00000000000000 OmniEvents: Member List

Time Member List

This is the complete list of members for Time, including all inherited members.

_nanoTime [private]
_secTime [private]
current()Time [inline, static]
is_nil() const Time [inline]
operator+(const Time &right) const Time [inline]
operator+=(const Time &right)Time [inline]
operator-(const Time &right) const Time [inline]
operator-=(const Time &right)Time [inline]
operator<(const Time &right) const Time [inline]
operator<<=(cdrMemoryStream &s)Time [inline]
operator=(const Time &right)Time [inline]
operator>>=(cdrMemoryStream &s) const Time [inline]
sleepUntil(const Time &futureTime)Time [inline, static]
Time()Time [inline]
Time(CORBA::ULong sec, CORBA::ULong nano)Time [inline]
Time(const Time &right)Time [inline]


Generated on Fri Aug 26 20:56:15 2005 for OmniEvents by  doxygen 1.4.3-20050530
omniEvents-2_6_2/doc/doxygen/namespaces.html0000644000076400001440000000311010303671740021351 0ustar alexusers00000000000000 OmniEvents: Namespace Index

OmniEvents Namespace List

Here is a list of all namespaces with brief descriptions:
OmniEvents
omniORB
std

Generated on Fri Aug 26 20:56:16 2005 for OmniEvents by  doxygen 1.4.3-20050530
omniEvents-2_6_2/doc/doxygen/a00138.html0000644000076400001440000000530110303671737020060 0ustar alexusers00000000000000 OmniEvents: SupplierAdmin.h File Reference

SupplierAdmin.h File Reference

#include <list>
#include <iostream.h>
#include "Servant.h"
#include "CosEventChannelAdmin.hh"

Include dependency graph for SupplierAdmin.h:

This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Namespaces

namespace  OmniEvents

Classes

class  OmniEvents::SupplierAdmin_i


Generated on Fri Aug 26 20:56:15 2005 for OmniEvents by  doxygen 1.4.3-20050530
omniEvents-2_6_2/doc/doxygen/a00041.html0000644000076400001440000001462110303671740020050 0ustar alexusers00000000000000 OmniEvents: OmniEvents::Callback Class Reference

OmniEvents::Callback Class Reference

Interface for classes that wish to receive callbacks from deferred requests. More...

#include <Callback.h>

Inheritance diagram for OmniEvents::Callback:

Inheritance graph
[legend]
List of all members.

Public Member Functions

virtual void callback (CORBA::Request_ptr req)=0
 Invoked when the CORBA::Request has returned.
 Callback ()
virtual ~Callback ()

Detailed Description

Interface for classes that wish to receive callbacks from deferred requests.

Implementations must override the callback() method.

Definition at line 43 of file Callback.h.


Constructor & Destructor Documentation

OmniEvents::Callback::Callback  )  [inline]
 

Definition at line 52 of file Callback.h.

virtual OmniEvents::Callback::~Callback  )  [inline, virtual]
 

Definition at line 54 of file Callback.h.


Member Function Documentation

virtual void OmniEvents::Callback::callback CORBA::Request_ptr  req  )  [pure virtual]
 

Invoked when the CORBA::Request has returned.

This method is never invoked when req has returned an exception.

Implemented in OmniEvents::ProxyPushConsumer_i::Connection, and OmniEvents::ProxyPushSupplier_i.


The documentation for this class was generated from the following file:
Generated on Fri Aug 26 20:56:16 2005 for OmniEvents by  doxygen 1.4.3-20050530
omniEvents-2_6_2/doc/doxygen/a00001.html0000644000076400001440000000363510303671740020047 0ustar alexusers00000000000000 OmniEvents: Member List

OmniEvents::Callback Member List

This is the complete list of members for OmniEvents::Callback, including all inherited members.

callback(CORBA::Request_ptr req)=0OmniEvents::Callback [pure virtual]
Callback()OmniEvents::Callback [inline]
~Callback()OmniEvents::Callback [inline, virtual]


Generated on Fri Aug 26 20:56:16 2005 for OmniEvents by  doxygen 1.4.3-20050530
omniEvents-2_6_2/doc/doxygen/a00275.png0000644000076400001440000000536410240666467017717 0ustar alexusers00000000000000‰PNG  IHDRâêŒã[I!PLTEþÿÿo???¿¿¿ŸŸŸßßß___ÿÿÿeT¨0tRNS@æØf IDATxœí¿sÛ6Çû/hèⱉë(cïz=kMTÛt°ÆTw=itÜSÉ1×;Ç#Ç4µ)ÖeñR$Å"P øMdMâÃ÷Rø95}Ww´«%n¾Zâæ«%n¾4ûîa-ÔC'q‰mZbj‰ª%ÎRK¬@Ç@¼8›BÜéÀÏñ»ð—•ÝLbª$±þâ7—˜šÜ¿uÈý|õ0ôÜ™?z"ý+²}ì÷‚-›EÌlü|qãxw·=‡|š¾ð/n{`ã§uHÚâe'´0#^ ·Žoo^;Ô¯ßûözÄÎÎÉÍ'îtηqÐrQ@ÇrÝC+¯åÓ*ÌëqCˆ—AÕ%¼G6&[;aã†/™y™bW'^oÂz|Cëñ¦Ĉ—&ØO~ubmõé†mõ·¯þ´Ä¡;'Ĉ7vìêk¥¶1•8‹7 ö.þíÖ4†88ôê/ön—ÚÆLâàæ~wÊn,q.pC‰—ùÀÍ$^žd6’¸¸‘ú%æÎT •¸ÐÄÇ"Lâ‚V누Hl„O£áӘĆ˜‘Øã›bbˆ…#^ÿú‘1>Yƒñk4EWB†ëþüëÇùûw—œ8Õ+K¬HlE˜¸y2bÄ#ò|ž¾ñg×4¹2­Þ¸7ÞÎ7ó ]cÑ,ø"5rŒxå^0bêÕ}¾ )º2\÷ÆýÁé~éVµ1#†É¹'ì(Cßþ‘&?ø¶oÄ4Ó¢nlmðÓ,ø"5rŒØwÀxþO7¶ +!ÎM•¯ÇgA=¦^½¾XkýòœÙØûe±uÝNL½úw˜=IL(1)A ß“ ½oãA¿ËÝ™-q¿¢6¾/I ‹]ËõššqM¸Wo~œQÓN91m¶>¥m\–p¾¦'êñ‹î¤ÿÓ¤èJÈx¢õøùû«ËRÄ|Á¯N¿Ñ«Ôãá®N6yÒzü‚ßÞÑ«ÔãˆxS˜úµ@à8ÙVÏ·³~ÐHÓ¤‚¶zѯÐV“1» Újú‡3ò$w‡ìÚꈘӖ$^ŠÄb"⇬YZaeFFb9 õä4Ÿ¸ª‘c^=Î f+Ó¥v}üÄTj×ꉗ"Ñ@\ÑÈFÌÕvi81èïKG¿¡HæW9PD\U¥IÝ3‰ Žr'Æï*#Ä::ö”—br†Ð#Kzˆ—P¤‡˜6^Gƒ¬‰˜~9=–¸Œ8ý®¨¢whÉ/æu Œø9H¬ìT>1DÖŽ9áÕ¾Bbpê£@¼úþ‰lúWý+ÿýÐs{›þ[Ââà$ö–RIb>=dNìÁ« '#ßöÏYD¼wMXœÄÞRŠA| Èœ˜½®rB½ÚBD|K,›ÅÏHì-¥²Ä¼­®™[´¾®_žCÌ"âëîwÄ ,âà©@íȑ׼Úfñ¡¯€8¸ 3äoGbõxȉ!">¼ ˆ'ˆÄ!&kÂêCN´Õß¾RbÏ=?ü4àÄŽbz¿©³[ù¾tÝe‚ÂûÌåÙRë IÕAÌ#luùµN⨽‰£b©FâšüZ+ñ®"kŸ¬&¦Z‰Ë‡ŽãšZ‰÷o<0bÔyÊ]Ÿñ²¼caïE~j {î$®º‰EŸ´‰«^b‘ä9ØôK<1—PÄähˆõ©Ž‚‹;YÄ{„¥&ÃE´m±X? %+2ïµv¨Ou&ñê7¶=O>‡k‹‰E¾±© >ا:“øzœÞþ±È\X*ˆö©†2Ä“!Ž Ÿû9eûìOÈý‡w³¶Øzèg›³m,ØgOBÄûTCâÉG¦ïî¶g‘·ÞìùâÆáݬ-–ý¬£`sñ™À£{äù«#â¢>Õ@†x2Ä‘é?ßÞ¼¶Ö‹Íb5Ü:¼{¦År ¯õtlθ:‰tVPA\¦Oµñ䀨rÝå¹î£o“=bâOùÄg"!TÄûT1Ä“CÓjo­&äUÚÆ…ÄbOsUìS͉/Cbïî¦g]2fõ8"Þ  2!¿]!º)êS ÄOˆ!ÒlQÛû“û·qbÖÏ:ŸXð½b5Ú'Œ#"¿F#±Üè)ÕD,*F~¿SKŒ©$±ä¸E)ÕC,üüù]|-1¦IJ#®å;ºº&ŸI ±6‰?Æ4ômÀÒsEHêôˆõ»µÄ96“X~–Yévk™ãµÄbÒìÖósÕZ„ê’r)b½n]Ç̂ȅ¨(¹Ó‹D¬ÓÈ’g‹XŸ‘e‡Yaë3²ìЈuYú8hĺŒ,}1Öv\â‚bÉ£áG&Î/˜$1Þ¤ØÄ¹E“#Fœ¥8¯p2Ĩ#©ð‰sz•‰#)R@œ]Fab싼â$3ÿ5MëýºG¬`È«"âxÝã…ΰqÔÕ<›XÍ›I”GoÊá}  ½:‹øHß\,ÎÌÇ2pb4'£‡ Ÿ°z)ïalÇfìXÁ¥¥”8ÏØ ‰g×d¾^ð «úiÚµc3v¨Ô«˜Ä‘bÛ·í­Lt ©+bÙ±; ¾I IqÐbSÆß_ʼn˜‰'šÛ 9Ä$²ñW’¶qÓˆágŒø9N õxÒ0b®ˆøòÍË1´ÕNƒ‰Óú;9{Ú š&^¢qÄž{OžñžZb|µÄÊÔç¨IÄÒÏ$¤øhÔ7_-qóõ? ù÷i"ÄIEND®B`‚omniEvents-2_6_2/doc/doxygen/a00055.html0000644000076400001440000002074210303671741020057 0ustar alexusers00000000000000 OmniEvents: OmniEvents::omni_mutex_kcol Class Reference

OmniEvents::omni_mutex_kcol Class Reference

The opposite of omni_mutex_lock, unlocks the mutex upon construction and re-locks it upon destruction. More...

List of all members.

Public Member Functions

 omni_mutex_kcol (omni_mutex &m)
 ~omni_mutex_kcol (void)

Private Member Functions

 omni_mutex_kcol (const omni_mutex_kcol &)
omni_mutex_kcoloperator= (const omni_mutex_kcol &)

Private Attributes

omni_mutex & mutex


Detailed Description

The opposite of omni_mutex_lock, unlocks the mutex upon construction and re-locks it upon destruction.

Definition at line 35 of file ProxyPushSupplier.cc.


Constructor & Destructor Documentation

OmniEvents::omni_mutex_kcol::omni_mutex_kcol omni_mutex &  m  )  [inline]
 

Definition at line 38 of file ProxyPushSupplier.cc.

References mutex.

OmniEvents::omni_mutex_kcol::~omni_mutex_kcol void   )  [inline]
 

Definition at line 39 of file ProxyPushSupplier.cc.

References mutex.

OmniEvents::omni_mutex_kcol::omni_mutex_kcol const omni_mutex_kcol  )  [private]
 


Member Function Documentation

omni_mutex_kcol& OmniEvents::omni_mutex_kcol::operator= const omni_mutex_kcol  )  [private]
 


Member Data Documentation

omni_mutex& OmniEvents::omni_mutex_kcol::mutex [private]
 

Definition at line 36 of file ProxyPushSupplier.cc.

Referenced by omni_mutex_kcol(), and ~omni_mutex_kcol().


The documentation for this class was generated from the following file:
Generated on Fri Aug 26 20:56:17 2005 for OmniEvents by  doxygen 1.4.3-20050530
omniEvents-2_6_2/doc/doxygen/a00032.html0000644000076400001440000000456610303671741020060 0ustar alexusers00000000000000 OmniEvents: Member List

OmniEvents::omni_mutex_kcol Member List

This is the complete list of members for OmniEvents::omni_mutex_kcol, including all inherited members.

mutexOmniEvents::omni_mutex_kcol [private]
omni_mutex_kcol(omni_mutex &m)OmniEvents::omni_mutex_kcol [inline]
omni_mutex_kcol(const omni_mutex_kcol &)OmniEvents::omni_mutex_kcol [private]
operator=(const omni_mutex_kcol &)OmniEvents::omni_mutex_kcol [private]
~omni_mutex_kcol(void)OmniEvents::omni_mutex_kcol [inline]


Generated on Fri Aug 26 20:56:17 2005 for OmniEvents by  doxygen 1.4.3-20050530
omniEvents-2_6_2/doc/doxygen/a00069.html0000644000076400001440000005076310303671741020072 0ustar alexusers00000000000000 OmniEvents: OmniEvents::ProxyPushSupplier_i Class Reference

OmniEvents::ProxyPushSupplier_i Class Reference

#include <ProxyPushSupplier.h>

Inheritance diagram for OmniEvents::ProxyPushSupplier_i:

Inheritance graph
[legend]
Collaboration diagram for OmniEvents::ProxyPushSupplier_i:

Collaboration graph
[legend]
List of all members.

Public Member Functions

void connect_push_consumer (CosEventComm::PushConsumer_ptr pushConsumer)
void disconnect_push_supplier ()
 ProxyPushSupplier_i (PortableServer::POA_ptr poa, EventQueue &q)
 ~ProxyPushSupplier_i ()
OMNIEVENTS__DEBUG_REF_COUNTS__DECL
void 
trigger (bool &busy, bool &waiting)
 Sets 'busy' if some work was done.
void callback (CORBA::Request_ptr req)
 Sets _targetIsProxy, if it is.
void reincarnate (const string &oid, const PersistNode &node)
 Re-create a servant from information saved in the log file.
void output (ostream &os)
 Save this object's state to a stream.

Private Attributes

CosEventComm::PushConsumer_var _target
bool _targetIsProxy
 TRUE if _target is a ProxyPushConsumer.

Detailed Description

Definition at line 101 of file ProxyPushSupplier.h.


Constructor & Destructor Documentation

OmniEvents::ProxyPushSupplier_i::ProxyPushSupplier_i PortableServer::POA_ptr  poa,
EventQueue q
 

Definition at line 296 of file ProxyPushSupplier.cc.

OmniEvents::ProxyPushSupplier_i::~ProxyPushSupplier_i  ) 
 

Definition at line 308 of file ProxyPushSupplier.cc.

References DB.


Member Function Documentation

void OmniEvents::ProxyPushSupplier_i::callback CORBA::Request_ptr  req  )  [virtual]
 

Sets _targetIsProxy, if it is.

Implements OmniEvents::Callback.

Definition at line 353 of file ProxyPushSupplier.cc.

References _targetIsProxy, DB, OmniEvents::omniEventsLog::exists(), OmniEvents::WriteLock::os, and output().

void OmniEvents::ProxyPushSupplier_i::connect_push_consumer CosEventComm::PushConsumer_ptr  pushConsumer  ) 
 

Definition at line 249 of file ProxyPushSupplier.cc.

References OmniEvents::Proxy::_req, _target, OmniEvents::Orb::deferredRequest(), OmniEvents::omniEventsLog::exists(), OmniEvents::Orb::inst(), OmniEvents::WriteLock::os, and output().

void OmniEvents::ProxyPushSupplier_i::disconnect_push_supplier  ) 
 

Definition at line 274 of file ProxyPushSupplier.cc.

References _target, DB, OmniEvents::Servant::deactivateObject(), OmniEvents::Orb::deferredRequest(), OmniEvents::Proxy::eraseKey(), IFELSE_OMNIORB4, and OmniEvents::Orb::inst().

Referenced by OmniEvents::ProxyPushSupplierManager::disconnect().

void OmniEvents::ProxyPushSupplier_i::output ostream &  os  )  [virtual]
 

Save this object's state to a stream.

Implements OmniEvents::Proxy.

Definition at line 423 of file ProxyPushSupplier.cc.

References _target, _targetIsProxy, and OmniEvents::Proxy::basicOutput().

Referenced by callback(), and connect_push_consumer().

void OmniEvents::ProxyPushSupplier_i::reincarnate const string &  oid,
const PersistNode node
[virtual]
 

Re-create a servant from information saved in the log file.

Implements OmniEvents::Proxy.

Definition at line 378 of file ProxyPushSupplier.cc.

References _target, _targetIsProxy, OmniEvents::Servant::activateObjectWithId(), OmniEvents::PersistNode::attrLong(), OmniEvents::PersistNode::attrString(), and DB.

void OmniEvents::ProxyPushSupplier_i::trigger bool &  busy,
bool &  waiting
[inline]
 

Sets 'busy' if some work was done.

Sets 'waiting' if there is an outstanding request.

Definition at line 315 of file ProxyPushSupplier.cc.

References DB, OmniEvents::Orb::deferredRequest(), HERE, IF_OMNIORB4, OmniEvents::Orb::inst(), and OmniEvents::Orb::reportObjectFailure().

Referenced by OmniEvents::ProxyPushSupplierManager::run_undetached().


Member Data Documentation

CosEventComm::PushConsumer_var OmniEvents::ProxyPushSupplier_i::_target [private]
 

Definition at line 125 of file ProxyPushSupplier.h.

Referenced by connect_push_consumer(), disconnect_push_supplier(), output(), and reincarnate().

bool OmniEvents::ProxyPushSupplier_i::_targetIsProxy [private]
 

TRUE if _target is a ProxyPushConsumer.

Definition at line 126 of file ProxyPushSupplier.h.

Referenced by callback(), output(), and reincarnate().


The documentation for this class was generated from the following files:
Generated on Fri Aug 26 20:56:17 2005 for OmniEvents by  doxygen 1.4.3-20050530
omniEvents-2_6_2/doc/doxygen/a00035.html0000644000076400001440000001536010303671741020055 0ustar alexusers00000000000000 OmniEvents: Member List

OmniEvents::ProxyPushSupplier_i Member List

This is the complete list of members for OmniEvents::ProxyPushSupplier_i, including all inherited members.

_default_POA()OmniEvents::Servant [virtual]
_poaOmniEvents::Servant [protected]
_reqOmniEvents::Proxy [protected]
_targetOmniEvents::ProxyPushSupplier_i [private]
_targetIsProxyOmniEvents::ProxyPushSupplier_i [private]
activateObjectWithId(const char *oidStr)OmniEvents::Servant [protected]
basicOutput(ostream &os, const char *name, CORBA::Object_ptr target=CORBA::Object::_nil(), const char *extraAttributes=NULL)OmniEvents::Proxy [protected]
callback(CORBA::Request_ptr req)OmniEvents::ProxyPushSupplier_i [virtual]
Callback()OmniEvents::Callback [inline]
connect_push_consumer(CosEventComm::PushConsumer_ptr pushConsumer)OmniEvents::ProxyPushSupplier_i
deactivateObject()OmniEvents::Servant [protected]
disconnect_push_supplier()OmniEvents::ProxyPushSupplier_i
eraseKey(const char *name)OmniEvents::Proxy [protected]
keyOutput(ostream &os, const char *name)OmniEvents::Proxy [protected]
moreEvents() const OmniEvents::EventQueue::Reader
nextEvent()OmniEvents::EventQueue::Reader
output(ostream &os)OmniEvents::ProxyPushSupplier_i [virtual]
Proxy(PortableServer::POA_ptr poa)OmniEvents::Proxy [protected]
ProxyPushSupplier_i(PortableServer::POA_ptr poa, EventQueue &q)OmniEvents::ProxyPushSupplier_i
Reader(EventQueue &eventQueue)OmniEvents::EventQueue::Reader
reincarnate(const string &oid, const PersistNode &node)OmniEvents::ProxyPushSupplier_i [virtual]
Servant(PortableServer::POA_ptr poa)OmniEvents::Servant [protected]
trigger(bool &busy, bool &waiting)OmniEvents::ProxyPushSupplier_i [inline]
~Callback()OmniEvents::Callback [inline, virtual]
~Proxy()OmniEvents::Proxy [virtual]
~ProxyPushSupplier_i()OmniEvents::ProxyPushSupplier_i
~Servant()OmniEvents::Servant [virtual]


Generated on Fri Aug 26 20:56:17 2005 for OmniEvents by  doxygen 1.4.3-20050530
omniEvents-2_6_2/doc/doxygen/a00277.png0000644000076400001440000000073510240666470017710 0ustar alexusers00000000000000‰PNG  IHDRÇ'IoAw!PLTEþÿÿoŸŸŸ¿¿¿???ßßß___ÿÿÿ¾T2ÕtRNS@æØfjIDATH‰íÖ=O„0ðû ]%¦ŒnÇè&ãm²C¸ñŒwÀ Œˆ@;É;ôSÚ‚AKÍ)æŒ< 4ýõé¿dúzYÌÈŒüg‰ wˆh$ÁâuÌÈßG¢³ ¹D@ˆ$Ïfsc‰D@ŒTVò-€/!D€ CMRS·B1Ê·H>$F;$%rˆ(™Ä>(rõô9R†÷«‹¥·’.’H¾^·A}£<înI˜áÊ2}Ë熃 Àð ýMÝ Ý.ˆaƒNÕj¬eZ@V$ Eb­`ˆÕîܹ{XC„3$f·-2Ú ®À4…¡O !Äw†o׸Cd,xÚ‰ú¡’ÓL$–É2÷(öþ¦)Ô™4Ë$å#ÝéBÊž"öþÿvº„.vá #5œ¼ô*µ <òóH©ïÉbûÖ`Èé}êgä7‘cK´8ôþçnÚš‘D^ox“ÿÇHÍsIEND®B`‚omniEvents-2_6_2/doc/doxygen/a00279.png0000644000076400001440000002475210240666471017720 0ustar alexusers00000000000000‰PNG  IHDR„Øç³;­!PLTEþÿÿo___???¿¿¿ßßߟŸŸÿÿÿÆ\²štRNS@æØf IDATxœíKwÛ¶º†÷_ÐpkèžæÄ¦±Óx¸ÓÝÆžœ•µ­aÝêXî¬vÙ¶r²íYm™9£bS&~åÁð’ D^Œ7Ž­+@âᇠ¼ü2ê¸þÖô‰Ê ì¼ ÂÎË ì¼ ÂÎË ì¼ Bý Q¹lr¡~Â)„ Ë ì¼ ÂÎË ì¼ ÂÎË ì¼ ÂÎ+ÐwñXñ.÷²]”‚Aذ8Q8 ¦S‹yþDž„m¯" ,ÎSƒ°­ îßø÷W¿9óàüW¤B_'¾öïÐýÕäj±¹Z„û7h½º°ègD¿j6,Šp}xúñns·qƒÑ1E¸¹Þ­_œMnðÓ`~ñ§&¦o-ôxx†\Ò †EÖÃg×w^0…îÌÙ_çµ9²‘ IEŠ?u½@3 =Æ ôMÁ lXá ù6ƒÐÂ/};C3ǹ&¾ ñ§\šFø@Ü6„ ‹…~éÓ¿ñ{¾E¢ólÎè'š‚Aذ’¶A8NQ°@ë§Z‘Ž1Âé4j çäÁMÁ lXI4Õâç5éxb„_—Ð#uœÛ¨Gj›i›TõÛï¸ELË lXU~3Ý˼b6¬ª×Îa惰a™+×`0Nà lPÞÀDa—å CdvX„2;+/nÍlîNÊ‹BP¾ B-ò”4õH%AƒP‡”45H-AƒP½4ÕK1AƒP¹ÄψîA¨XÊ „Š¥ž A¨V„J¥ƒ A¨RZ„Š# = B5‚ëš„Jä Ú„*„ J˜ãTV¡AÕ§Õ„ò50;.Ï Ô,á¹Hý5 Ò¶¡»û#•4¨Œ°ÄŒ¶m_ïÂAU¯¿d#¬žÞîy¥[?ÑJ„^‹ÀWK 5¥Ê«J»RÜ’¨A(GòÙe‘ËÅ •zv9y)–¡€ôö½9ò’£÷ú&©÷N×¹%î¡eá’“”“£ªìW76N/-r{:e_üì_NOÆ\„‰eᓞ‘J¯ÒÎua‹è…Ó/ÚëZ¸­ø ë^˜BèUÛÃ4 ŸS·aÅ}Ó¢!cDø´z?F¾5;¿Cç«9¼à‡kgúÝ]}˜«ü^.öÐÌòñg¢ôª¤@“ŸHK#BOs¯¥¤b„Œ!²I¡ÍFÇè?kBüpozI“c0& ,ðfº¿GߢéUÌv¤"m)?!ÄÝ™qbD!´ËòésüÐFŸHwfä£ÙÙøa ¯=\/ÑÓø "Ÿ"ª~Z‚äE½Iq|ã,ÎÁã™u{ja{ù!¶-LŒ‘ý4FG3Üܽ{!œ:ΊFáÃwû3 ÚBêS¸þèB "LGa©³‚ðAŸz“NÀ›G|Ú´a„­æ‡X„‰!í΄KG¡‹¦aE:pÎiÚèárÄ"¬|ÑžF!ñcÃñ ®ˆAÆ´I„m燘A…•"Ûÿƒ *0ÂÇáÞô Bxò+ni[ˆÉ­Æ!;S^ Bß!”ÿhs.0—§¸-%F„èí˜íëäòû!nš(ÂÇÕ‡küÁ¯KúqôÓÂCûÐq$Q˜ø6†° ¥œ`ûV,½ÂŠ0í?ÚÂöùGè/ÄÒcâøþìÒÞoã=R¯#e Âä‰{;ú:R…ðÛÍ 0õ³lôÌÁås‰ =;ñÇßw=°mm!ìÇ.šµCœ†¯ „¦P?A­¯@U…k-Šð|5_;£§ÕÿÞÿc„‹,¡öoÂ$År‹;Døîëï`êg¹hà¥.Ÿ…ž‰²÷zaÀ–ßõÚ¶:eöã}‹að‹LDê'¨µàüj-ŠðîÁSR}3=^?\?!ü¼JiÂêÇÄÔ/ŽBâòYÛ³3>zËíºÉòñ±b÷Ãq–õ—Ä'ðZ ÷ì3‰ 1”™ µtgnåÛ`J Õ×û`ŒOs„ŸƒW)MR!ÿRaˆpý1õ³nñ±sx:¡.Ÿóºžw½D…][BgZãCqýÑõgE÷×&ï d Ö ÷j-…ï^ÙðÇö¡>³À·^Né#*öÃ=1õ»Ž{¤ÄåÓ¯éÙYq×™hOAãŠ÷cóf„ŸLé~à6ýØâ`ć"¸ó“}X"LIiZèýÿ …?W)MR!çxô†œ[.äïõ€ªŽô*îzaKF=ë)Zqƒp@·ûìéYÛPk…ûµVˆðÑSRÚZ(X 9~^¥4IÉá’ªB„¥w©°ÿj!Bhâ^"èXÂV]†ã[j­p? Ö¢O.¿‡è[Ò#µÐú郎i¾%Å3§¹GxS w¦´ªîz«£PHëIæ©é´†–]©ha élœyA&°¯Ö2„n¿>Üe_‘ˆ0*¤¶!Ô}ù­jÙ•Št©Ä‡yËJÎIS›&UËFma;¦,·!S@*¦ Ìÿt½6…a‹*-\ü¢ÓŸ†-aØ^„ k)zÆNôªý°â=”T©þ|Øb!)ÕàaZééô!j|6¾JÕDèqÊ•¬)ô”^;êRj-BÙEî »gÞ_NâÕÜÒ‹bºŸ …* B½ö²2F¨ PÔt=0êíc¯F¡ü TÖd †Ã^2E(»D®äô<Øêvœk“)A„² Decå!ÃþõiZ…Pñ9”! î­ìTM„ÃÌ_R~̣طæP ¡Ä Ô1ðRz=c(†P^Yh±…aØ3†í@¨éBBØ¡éC!„’êQ}'/ÃM¿†-@¨ñ¬—)z4´B(£ìõ^?Uô¥›UÃuÛjyq+ØŸæP¡x=ªýÊç%gwûR—6‰°‰Bdï+؆"C¨‘‹w[öƒac›ªÇRN/ ªG»~ž>túÀ°B/þUS%‹®ääðÝs-™MOgMgYÉɧ!ÃêF–®DK.Ѩ”H6þó‹“ë«kkW…å+QsB‰.mÏa•~Œ„õpwêy ¬ÔQ‚s=S„µšÂŠC y])ƒ°´ª%$"Lš@ÎF„e¿U¹×š ;7VêUÇy}w†~¾ºdßšÅ67‰ßM@óÞ°V>)u a妰ƵÐÒmún”zuúË+ø Eû*ýÞì1~”JÄ”@X+Ÿ”:„pˆª#¬s>&,Z”ö , ŠÖEþ5óÖŒó( ã†8{Ρ$OJ½FXï”hR´ËÚ¿Ù\?íáJ -8÷ -1)rß­úù¤^{‹°þU‰(:àÿ ×d.x’›¨hçhóŠ6²ža)|c¯æ¢°è†oµòI9¼v aé1…È…A¶hIt ‡Ë-ZŸ-n¿l×g£ÃEÓ Bê•GÃÜ!%OÊáµ;« …¦±E mÔ›Ù­Æ„ÍrMŠöåïFø! -¤Iu€ìMazéþv„óI9¼ö¡Ø¥]¶hq¿ïñhs^R6'_HÑ>^ýS=Ÿtg²‡Ò0W/äÓÑii„¢³+x™|Ëû`¡ÿ0âœ=æoA,#ÔG„³+þžÉ_ð>Xav»8«çƒzˆPøBê€S´ÇîGGÒˆ‡0×›–’êBq‚r® ä/Ó—AXKÝAXfX(>ÉГu±);¯ÂË]!G–,Èš–dݹ½\bæ%aš(”º„é³Üafó œ$Ì#IHºjŸ16wO~’@Vu’¦gntàå¶þÙMÞÑ!•²ZBê|}/‡°ñ#ÉG(eí¥äµðÙ¶ðÙ¯µßŠPÎzÉ‹fò{³ÆW>B95”ì ñ ´ŠW¦ÉZ4(½€©SÛCî¬ü®ª.Bn!Ë:¶å—ï u^Ô ,B(mÙ§üZ.]w9§I»+‰¥uÔEkFýÌòGö×Ϋ*Ýaò š´»ª‰°à&¢R¤îÞ%у!ïšagU!¯C*³“®®l‡ÉßaÂPB©Ã,u£­F?½Pu„«©UFÇ0þc¦ÊYî©•%›BØ—š´:Âaü+”ä“U*zqÕ×fµVâ%TÃèwñIÂΩ2BºßÌ%pÉDzÚr·>W—tW¢¥ŸòW\¬:ò·aXazߥT]ª)„ýC1„ò/»©F¤ދˆUzÌo% ºLÓ{Q•Š Tq +‹p4Áœk뺪"dÚsQ!}b`!“¡ØLDùeQV&cc5íH¡øÌÌL ¡ëQœQrLh>°¬ÉÄ5T !¹Ü¤¤ Ò0aøL†9e}¹\ªÒæOF ŸÂø¦Uªzãzfæ‡s~žÂèL¿*‚ù>¾|„^~:7µI|V•Ý¡@¤×ÂAˆÄ=Ö»‚P݈># àÔy½íkûs{0…f‰§!yÀ®ŠòUxƒAäæLRï@Þy‡?slua„*6„Í€))ÿrz2ÞòµÿŒPŒ04 M#ìDˆ¢Ý²§SöÅÏ$ï¾!Tx£—„ëüêá>•8¡R¥&þAŒl’woÒÝh˜b–ˆ”ÔÓù`³œß¡ÍÕ¬ífç÷'÷à ¼¯GøÑêdzõ›3Ÿ¡û+\úä7M·Bt¯ßFûwÐÓê=ä æ¦ç«9¼Û€³„x‹Àû‰ùr#ª‚ð@å©á„¤|¾™£cÌÏ ÂÉÅäLßNï6ww†nð—|ò›¤0¨Šps½9Z¿8›@6yÌMïð3ü lÎ~˜^âö˨*ÂŽI‚Œ„ăÿ›ƒÉ‚6úŒÑ1º@ 4›º¾KM 1bZHTÂ4mJêŒí¯óÀÚA!Bœ±åÓçø!Î.Ðø‡æÒ „PÀ¥“÷ŠâŠôáœ@qñ=|ÿ:Fž ¸ Üwœ¹‚4B7B˜‹B2“{k[ø-NÛq® 2Èû<ùÞ½ŠNq¶€ÐfZÎn ÄèžÒz4“tìS]Š£0 Ð9x„Ò(tÑ#ü‚¾ŽrQ˜ Ì.µ'kb8Ça‚ðÓ¿ñß"ÈHÞ€p‰â(ÄÙÒ(ü ÿ°_nDå“o7ó”§![±ÑAŸcm!T¤ãsð¥÷à5ÜFm\h „s!õ¥²á.lŠît0µ‚Z¿8d$o‚ð1Fˆ³õ]bEŠØ/7¢R=Êo]´.W^ªM • í¡GŠ‹÷HÁ”"$¯Áxã~½º`Úi„é±ìV„¸-­¯Á•”$ôvL‡öurù}„gë»äOgz¤ƒ!þGJA ÂAèíSÔŠ%žßàá„5Õr„´-Äd*•"§\Åþ•?ê†oç~#Lª·¬›™€¼(ô)Aèæ·Ù{n½¤Ê·UUÂx‚:„Y+ÄBÑ[‰¶!Sä9]•œ” äu’²<ÉÃþF!SãÕl KƒWÕî@ŸýEÈÅUk›2‘ÇJMEš¹Y Ècö~î ;Z+Û•ñª² ¥aÖŽ!v\˜leo²4Jê³r¾'e*p~›âî s˜õu*0{óFZûŸ#q(›’“‹Ãð†1ÍršAXþx.ÚkáÁ‘²swxã¼Ô–S6…ó4ª*B/Ûªˆ)<ýJ®M°Ó؆¨/ÖÀFõjÜÉ‘Zê ƒb_î$ò†Ã^T¢ Š•‹¥¶^#‡^˜…çõbu(Q5„ ñÔ–ªÇ0ÄŸ'šýÒR\ªŒé‘ÚK×zU!ïT•T©.Õp "Ý™>¬Ñ&J®~÷OxàVñ7œÝ]„±á Lê!ÂåùŸ?åøÙW„J¥¼n£ç&†ø_|„®ã|Î7ýBÛ< ÷ªo'Å ÜÇ¿æŽ{øúdõôÂßw_<:Ö©³Z['}A,Hw´75i‚ðÆúÇÕýùç÷ÝÍìæøñ6p/ŽHnn¡Â!±„ÃphÑ—0dz¤·ÿ»v¯nŽÝ·ÎÓrÿjõä^Á?gõä<ééÎh‹èŽ[äêgO‰BÇyqÐ SûíÚyýSŒ0HªTè(Òa88„èI2má•sí:+ ö_ÿí|uòU u DÌúÓ&ïOÿüéþ|q‚©¹§Î×»á …ÜùÖò¤£"D9y½é”2máGÿ™o ïgÎä×àò«û¦"® ªá¨at÷-â}4è‡båë… ;é-”#$ `’Ó W k\µÏÞ%~K¦*„‘QÇ ~nè aXá¶‹Ý‚m¥ªÛm…íß0É$žüÔ‡M „%T¤šò §ŠÄŽî©ú0{F BªAÅ ä#šMa*ùÂx&·H&LnMH%ÂXF[>V€°n®ô»¹\³¦3âþkLnMH BV[Xª@˜ïfå=ôðûaåAòÛ%!„œÃ%gý„‹ƒÎ#,—]Y© ígÇ#òòwäÂnJ ¶aÎùJ‡WB.Á¶0m%¿¦0ìkæ¦j+8“Ü;"R!'Î_L¶ç¦^Û—Åpê›ý.’¢ã¿\M˜÷|;j˜×÷ð;4(™¥þ”Fˆ¼0“··ã-ÛÇf•uB,ÌM½¶#Ì,5“º€"/^-È׿¼b^öÝèÓð;Dš‘VF¶…g]nÙ¾TV“üû­Dˆx•µ‡Ûº3ø÷óbÇð;í"º!oîýàù)/«|"Úµ¡—FÖ Â9"LÁù º¿AEº‡‚÷ã=üÎþeèOš‘‚}(óÝŒxWzéMÁö 9_mõ8…¬– Äfå»ɤP»–ˆbd^¦1T¶-Ûn®ÞXááÙävz‰‚chð}YOCÒÐŒìC™ïfTŒB{}xJŒHï7×€xœBV¸•d³ò‰1i+[Ò ltO¢žúºAVK”Ê ^„LZàIº{­}ÜÕG¡²ë3[n:'q3èâ´]p +;çe!ª‡W¤ïf8HäÝŸã!5'Me!l'énÇ‹øQêVÄó_ÛB Íf$¼â(D>~ö4G¯òQ!Ì 1£)Ê÷e¾‰¢p ièqJÍISY%Qظ'i%{õ\›Q¶$h+Âõâ—WÁx·…§¸-< máé$°p{tA¨ᆉB.BÎ1H39{ñëÚB@¸Ü\ãü(BjNšÊŠ"l…'iµ»Å@׆ë¨+CÛÛ­F«‹Tô“ÚƒÎêþa`%¹#ÙB„dh‘âécäqJ_KeE¶Â“´âÓÔU‰¶# 5ãŸ)PÀ=¡TˆPPÝ@Hïq u¥½Bž•Ñ3GˆÔÕ¤¥®ñÿQé$®ŸÑsGS ÕÔ¤¥VSt±©dTPA詺ۈ"„p¢<=Ó"ÊYpׄá"YùR„x¦æ?åöø’oÔÜn¤(Ma„0_„M<‹?7„ž’ѽ2„ѽ¦âŒ2³ŸD3Éä¦]µ*±N*DXr~W¼ÔSÃ1cç§WÕPÅâJÅSã“äÙ:¤K›ê!T±A‡{Í(~¨t2—6ÕB¨âò5FÉ¢ŠÔbµî«.Bé%®aœA´Ò·‹šˆj!„Ù´² @ýJ¿duZj±ZçU¡ôŽ€úMÖˆûDð9!ŒØH^ý!X¡äÃXËŠéÄs¦'=¢z‰U¹ÔíЂ0²ö‰ B¹a¨§b#ý˜~ è=/„d»{á‘À¨Âì™caé2’ZÔ DHúÈJW¡Ò®´Aˆº‹Ö¢!bo Aª&ãð4èÙ ÕFHo<&g<5³rÙ_Cƒ0TT2¤éÎ-ƒ!o`RQ„r‚Gå‚76rnÞ ŒžçRŠ}4¨È²ºh(d¢h'e”ÐÝK+YåŠ Bª!ý%¡0<µ«¿™L ”ÂâУÑF0DhÚÂPÑ-ΰ˜ œ™ ÆŠƒPZ6ކ›"å%ŠPxHçÇ ´©µ¬›ž—Ÿ»%³Ø»†PÆÙî-þgÒ² „‘„‚-Ë–vÐ ,% ÅšÃ-A¬ a¦ò¦=ö÷ ~óÿ×–<” æÏª„Be½í«’zñXÖ éC7ÇL½ê8/‡Ä8áç«KöíYì¦0K¾¿B›êB„µóᤥUbÃ&Q)B{ún”zu;“’R|•~;…¦F®Ô…kçÃIK«:€0ãRV^áCò†‹ükæíçQÀóÆ9®X>œ´´ª%¹ýÒáröo6×G{h6³H%þL?‚q(¸-ƒÝÓýÕ|¡à=j»’¦ìg†ùuY®X>àþ´“JK«Ò?ÂùƒÃáéÑí¬Ñ¾=³Þ£åGŠö~óŒCÏo'E{;½DøÿÌìCcWÒÈÇkšù|˜^>žMØ´´J"Â\à¡·_O[/œc‹’½µ–Ä&ôì zÁÝŒCZ´È'¾‡ÿ|;‡¢µÑ{üìý,²M\IÙ;(ð4Ëg~x?ŒiVÝF˜ë઩hù9‹Ð+:ÑE!ü›ÐG­?ºÀ…í»?„?sDü{-ÿŸEö¡‰bÙ(¬™âŒºˆFA¿ã=–ˆBîõBæEZ´$:ÐÃåˆ­Ž¡Ÿ]bZˆ ‡Ä>”E˜\ò¥— ‹ÖÈg~ÂQ8gÓÒ*ÉSýOèëÚ\}»rø³^]Xkg¼3èŒÝdöŽ1lBõf6F«1á²\ƒc()Ú—?¾Séíô·Q³È>tžBÝæŽ"LwI]±|>Lñ·Ø´´J*ÂL`fÍp1NŽÁóþ|˜¾µö¦—ÁkÆm¦²çZY„øÈx<Ú\£—”ËÉÒS„¢}¼úS)ÛS$–¢„ôìÌ.„5òéx”E˜ëü<ù7nZHÝcßyø)³è[n_Âëè~[´AP‰Ù\2 #”OAZŠ%Šü-èwürôf†¾Û„ôO0uœÀc ÐwtgRòET aº1ä|«^>ü´TK:B¶?°Äí0†~¸  ]4Í"Ü1¨Hé˜{V‹h„ J«#¬—?-Õ’Ží¼ÂŠðÄ¢mḒgoCPº"­¥ Âì¨âY_©@´0ŠúǸWø¸ú7 €?´G:Wòíw’¥aª14K÷;~çœ6…%Œ”ìw|3Íß—L7BbÖa‚v!äõÖÎa¦ÃçŽ CÕõBit™D9¥eãtj*°„J4”3ƒ¹EGè„Íê¹"ìÑÒƒ°óGˆ C ßñWÁU e¢ØÇ«'’‚PDM!ìO¶¡PU( Âä¡XYl¹^¨D1ÂÞÔ¤açÕ8BZ“ê3yMNÍô¥&•€Pðp{3º„‘ä!Œæjê”&ûR“¶!©i DæwOÂPBaøH,¡Rbö$ e o £ƒ@CöJS?°=æÜŒ†‘™¿Ö0”PxdÈø‘ªoÙ)ˆ½C)]¼Ò®Àª„¡¼-Ϫ*3A^1Ca/jR9…çÔ÷Õ6ˆ©¹Ü}CI…ÍôÒÏTb aÂPBÑÃ9›œB†ééø=CYE}I³_‡û‚3ó“ÓEÌÇŠ$V•% ¡h•Ä9Ø¥¾µÅ™×™u®˜d kIDAT^§-¿*Õ=HBÑÁ!ï5ó«F(¿À»‹Pìp.ø¶70wIBÁ0,ú¶`džƒ0màõ|rŠ\¬GSôeùQh†â¹PUZôeùÓwH1w¾VVÛV1K©$Â]f¤þÛÛq™ì’õI*B‘ªt;Â*æ`)•D¸ËŒôìã¯Ë2Ù%)ê“T„BUiþêæ`)ñz„;ÌH÷ÈO9u¡Hÿq'²æ`;ݘRw|+gzº@h ‰çwø¥ñ ‡éýÕoÎ,I!Oüdˤ¨O’ 0,ˆàêæ`»ýA‡„ÛÍH!x7ã—Àqz·¹ÛKRœ'䇳eSÔ§Ú‹êÌÚÍáV„UÌÁvûƒæî2#…dà]0\¹'ÎGS×w©%)ÎòÃÙ²)ê“t„µ»4;¢°¼9ØnP^n7#Åé;x¾ûs#KRüÙ0[6E}’ްv—¦Âræ`»ýA½„Åf¤¸/óM…c¨Hga" !?œ-›¢>ÉGX»9ä‡ous°Ýþ l—´œééÙ‹_—¤-ÄÀ–›ë`¼O‚%i`Í!?œ-›¢>)@X—án„åÌÁJøƒ2[XÎô” í¡GŠÓÇ=ÒÇÕEH_³»Ù#ÝÖo©×nC˜VIs0PI„;Ó¯ ^ ¬×¥)°¬9ˆéÏT2=-¥^ ¬Ç°4²æ` >Bo+Â-f¤eÔ„µ–¯H+¨BAuáöÁC †ü• dCƒ°øíÊ ÂzR†°:C“¼ž3ÂC‡ª µ"Œ·Í ܦРŠMË-@oüàùNFeð×Fèœ/úünÔI)ŠE¤!d¦Ñ±H¡–º$Qe¡™Ö%*CMê¥a•‚ÒŠp º§5@X¶ÈKWWZË´7u Œn¸S:×kzú\ßTKa…"÷Ê„¢F„ž>Ó7åÒ„• E‡=ªIEVm¼v…¢>„°žÎz[¥t"D…w*¤ÒV¦4£aOÂPa­2/¦¨ aX…„¨~™89kB5‚}©I…ŠŒä8w6P_¤ä¬ZœkO°1„ ì˜U)œ)bòëIŸT ¡Œ¸a0ª.RœQªïÇаy„ ¢b„^¶ îGŠ!”XèÐ4*.Ñ|ëÛ‹0D(µ⩽uç–&!’\÷Á5†p!‘~¹bWÚûv”Âú~‡Own#ŒK¾ÂЊoéÃ<–âšAX4m‡\…¢~}g@ˆ€>ýA¶‡>y̧Ñm„uúåeŠù„¦f礽…?wÆMàø‚nO‘:Ž0b(ŠPºO¨Ÿ “ã]©`w!D8'>‡Vp~ƒî¯FP‘Ò¤öð;û—öìüþä‚$¼vFy>%’ƒUî——F(äêÃghráiîâ-¢n®ÞXááÙävz‰†I}YOíÙäbr’„?L/s!M$ ¡Wµ_^¡ O(ù ÝÀÁNÑ>|¸'q¢6zÒ¤Üû4öí¢ÿH ôCc.¤‰$!DUû奣PÈ'”|”&W6 :'ñw]\iÛaRkÇ¹Ç ¦Ú º&’…tET!¬íÊ Üщ2„þN…B’ÔÓ½âDáO¹&’†ÅýòŸ¯.wºÀX+y(Å'4…pÇŠšázñË+œ n Oq[x@ÚBHê¡ Ò&‰óic.¤‰ä!Ä%DwãUf,Gô9ó¼ÂÚ>¡„['Z„Ÿø×j„SIõH!©=è¬îaçÓþôH©h¹È¿Î½•P•D˜–€OèîNb†2#Rñ TI*Bºp&jíLÐrq€fÿGo%ñ´*qÿˆ]E|B Âr¢»q~û;ÚÃÃ¥Ûñ9úÞJ¢p÷ý#ØþŒdŸÐª×øÿHnª¤!úçÛ¹>!Ͻ o%Ž¢vÜ?bB ›V¨­=¨“„s´ùì8+èI~tÃ[I„C¨÷h á` œa¯ÚdT<Å7oFá­$ÂQÔŽûG(4™Ü– @ƒDwãåïF{x¸„©á½•þ7ß}ÿˆfV?G_1ÅR€ðñêÒûÄ_F·’@oÇv‰)S“j›„hf°±>ÁÆ"œ™[r¦.ãð¬&õj-B=2Ëb2’€P« ų÷#Í«[)Gê«Iû°.èÙ"ì Áö!ÔlÕµ¡¦0ìAÉË¢Šj Þôdˆ¤"”"ûD°…5Ôq½"ØF„Êð_Ÿ#žl#BÅ5iß¶¡Ò0ìÁV"T†äÈèÁv"T†°¤¾‡Û‰PI‚}W ¶¡‚0ܱ(¦Ãz6{K°¥åפß±j)BéaXàeÙµ¡ì0ìZãÛaµ¡7”9 ñ¯m%OwÔ\PíEˆ«R‰“k·F ÜI¼ú§·¡Ô‚[W „Ê$±0 Âfd–“Ahª“t„«A¨LÛI}wVÞ”<(ê çÃIM§Z°È‘ж´)<(WçÃIM§Ú°À‘ж´©»mh(œ'5êBž#)mäF æ Y7RüÄÔåÝùNZ>ðVƒ.P@Èw$…¢ÜHÁØ&ëFŠ[¯ÄÔÝvŠT8pÓiЗ´õ‹I£¢¥–…`Pšv#]"Æ´„©@>à¦Ó /ië9’†q#µ‰AiÚÔFŒ•e©(¬|´A_ÒŽ Ì;’†ÝŒo¢èȺ‘¦n›w!œ¸é4èKÚ„yGRÒÙÝH¡h³n¤6š³Éu{Eù€›Nƒ¾¤A˜w$‡Ü¸;hËü´©ì4Âggò1=Ò"It$­|Ž´¾ó©AÈH¢#iU„Χ!#‰Ž¤U 8Ÿ„ŒÌŦr2 Bu2ËÉ 4ÕÉ ,§6#”7=w;Byù€tO¬#4*'ƒ°ó2;/ƒ°ó2;¯ÿ×ÎUºÞË&BIEND®B`‚omniEvents-2_6_2/doc/doxygen/a00071.html0000644000076400001440000002363110303671741020055 0ustar alexusers00000000000000 OmniEvents: OmniEvents::ProxyPushSupplierManager::PauseThenWake Class Reference

OmniEvents::ProxyPushSupplierManager::PauseThenWake Class Reference

Helper class that locks ProxyPushSupplier upon construction, and wakes it up on destruction. More...

#include <ProxyPushSupplier.h>

Collaboration diagram for OmniEvents::ProxyPushSupplierManager::PauseThenWake:

Collaboration graph
[legend]
List of all members.

Public Member Functions

 PauseThenWake (ProxyPushSupplierManager *p)
 ~PauseThenWake ()

Private Member Functions

 PauseThenWake (const PauseThenWake &)
 Dummy, no implementation.
 PauseThenWake ()
 Dummy, no implementation.

Private Attributes

ProxyPushSupplierManager_p

Detailed Description

Helper class that locks ProxyPushSupplier upon construction, and wakes it up on destruction.

By contrast, just locking & unlocking the mutex pauses the thread, but doesn't wake it up any faster than it would have woken anyway.

Definition at line 85 of file ProxyPushSupplier.h.


Constructor & Destructor Documentation

OmniEvents::ProxyPushSupplierManager::PauseThenWake::PauseThenWake const PauseThenWake  )  [private]
 

Dummy, no implementation.

OmniEvents::ProxyPushSupplierManager::PauseThenWake::PauseThenWake  )  [private]
 

Dummy, no implementation.

OmniEvents::ProxyPushSupplierManager::PauseThenWake::PauseThenWake ProxyPushSupplierManager p  )  [inline]
 

Definition at line 134 of file ProxyPushSupplier.h.

References OmniEvents::ProxyPushSupplierManager::_lock, and _p.

OmniEvents::ProxyPushSupplierManager::PauseThenWake::~PauseThenWake  )  [inline]
 

Definition at line 142 of file ProxyPushSupplier.h.

References OmniEvents::ProxyPushSupplierManager::_condition, OmniEvents::ProxyPushSupplierManager::_lock, and _p.


Member Data Documentation

ProxyPushSupplierManager* OmniEvents::ProxyPushSupplierManager::PauseThenWake::_p [private]
 

Definition at line 87 of file ProxyPushSupplier.h.

Referenced by PauseThenWake(), and ~PauseThenWake().


The documentation for this class was generated from the following file:
Generated on Fri Aug 26 20:56:17 2005 for OmniEvents by  doxygen 1.4.3-20050530
omniEvents-2_6_2/doc/doxygen/a00034.html0000644000076400001440000000500210303671741020044 0ustar alexusers00000000000000 OmniEvents: Member List

OmniEvents::ProxyPushSupplierManager::PauseThenWake Member List

This is the complete list of members for OmniEvents::ProxyPushSupplierManager::PauseThenWake, including all inherited members.

_pOmniEvents::ProxyPushSupplierManager::PauseThenWake [private]
PauseThenWake(const PauseThenWake &)OmniEvents::ProxyPushSupplierManager::PauseThenWake [private]
PauseThenWake()OmniEvents::ProxyPushSupplierManager::PauseThenWake [private]
PauseThenWake(ProxyPushSupplierManager *p)OmniEvents::ProxyPushSupplierManager::PauseThenWake [inline]
~PauseThenWake()OmniEvents::ProxyPushSupplierManager::PauseThenWake [inline]


Generated on Fri Aug 26 20:56:17 2005 for OmniEvents by  doxygen 1.4.3-20050530
omniEvents-2_6_2/doc/doxygen/a00281.png0000644000076400001440000000411210240666472017676 0ustar alexusers00000000000000‰PNG  IHDRr·ýXȉ!PLTEþÿÿo___???¿¿¿ßßߟŸŸÿÿÿÆ\²štRNS@æØf×IDATxœíÏs›8Çû/øÚcvêÙpì¦?’ãfwšèÚΚcÓ°c;³µ}Ü:máèØéfì`Kåê lãc9YÌðM½¨¿<†Ç㫪žàѪÉÕ«&W¯š\½KþG†d÷°ähsÕTöwkòÇ m®ªÉKÚ\¥;ùø¹xC›-Ú“7:‚‰m§[ô'èæí{˜Î¸¥䀎`>v9uâ–*stó^ç^߇ÆcËd·hEžì03„6WéD¾•[sòq#§m®Ò…|{ ¡ÍUšçsëKž(Bhs•ä»Ît%ßép¦)¹ ¸–gФÀŸ¤’ÈË/‰\x9äã2:}¨RÈw‡¨ r±R ¹’X)…\I¬”A®Èå%+ryñäª\^<¹*—N®Ìå…“+syÑäê\^“/¤.X &Wèò‚ɺ¼&¥2XjòXrÁ’uª"[(¯›"É%]ޤ;̵,’\rûDÒæZÖäL~ûDÒ=æZH.;˜#és-‹#—‘t—¹–‡"···GdÍr›Š#—Þó#˜Ü' ‹´–”4'_hqé9%Õäò{~›÷ÙÌí¹=zBlÎÜÌnû-Ÿ“û®™²Ü¦ÂÈåLìðõ•I»mêÐvdÝRó’ÙfÇìpòþ”¤,·©(ò=¶LlêL=ÚåÑB±/³›Á‹F|ÅÊr›Š"ßãÈÁĶyRI>–‹òtÚ™”P^c!ä²±’J;“R®eä»c%Î7k¤ÒΤ”kYùŽXY$ú­o¡Rʵ,€|;øxE j¤ ¥”kùtò-±’±-6$xÖ”kùdòŒXyàê½xä-ŸLþЯ»‡=$Ýw®¥ §øñZuµÃÕKy¦¨ò½ö0…¨r)_ëG.#ú‘»òq§Éƒ£VŠ(˜/>Ât/xkozÚßÞ¥ÉéâsŒþI‘5$'_#_Ì)r¬#ù1—4g8t:-Ý{L^Ÿ~å-Ýë¹× Í[„ÿcxÍ{}ÈûÎï® ¿øÞšþ¼æä~û{‹œã~gxÑ›{-£epòÙ7÷:gú㻿BAîÞÙsüš“·INïhŸŽNƒ¹‡ãŸ9ŽÇÍ´!ïcÜä<Ä)ö8¹Ç¿è×g,ä˜ȱFäÅó„3—>Ç_ãw›>׉ܿúöŽœvyœ÷xœÿ)â¼×".hCÄùм¯9þu†‘±6¶Ì8àWvºÓäÄÕ‹|5T{T—\£#.Ÿ¿:ûø\ý—Š-ä{Jô²ã¶!Éã/¡Õ$íwºS'rì ýÈ…ò/ý¿I?EÛ³œ/SÉžwØ•qvn¥ôñ‚.ä;Ïž§B'žÓ†\æ†qúÔ¿>ä²×B—[4"—¼Àµd—´V@._኉¢_3Ëf•i¡‚\öªz 4?½Ü0˜;ªÉ%C=cb">½Ù0 êÉ÷ÉkMÈ»|r\'Ï©`Ô²œTû܉n­Ê$ÿi°U}s±V-ù‘ø'ô R uBƒ…FùÔ'öÊÉ{ŒYp¥¹ˆGÊLÌhI-¾kº½9b‘c·‡,InWˆÍˆ„†Ï åˆz.õ"íl•‘ƒó ‚Eò"He¤–þ”PG\M±K¶Hná¯#ë6"óî{o:¢žK$ÚDÚ Ø*%‡ª!¾ØBÊI-#‘Z!Èê,“[¨•\È%ëð?VRÏ%"Ë´°UFΣå*µ,@ô‚³`ì r-Ó3›°er µ0"¸ ®;btœpr¦œož¿€Ï úò™AR‹ ‡-T/“[¨C˜‘lblø\5ùMózq ², RY ©EGÿ‰Q‘“ß/ɬWÑ€°q¾"ï*'{¢dlÁ¸©,°ÈÉ'ƒdOD$¹~BlD}ƒ1? :iò‘rò’„XMž¡š OmniEvents: OmniEvents::ProxyPushConsumer_i::Connection Struct Reference

OmniEvents::ProxyPushConsumer_i::Connection Struct Reference

Inheritance diagram for OmniEvents::ProxyPushConsumer_i::Connection:

Inheritance graph
[legend]
Collaboration diagram for OmniEvents::ProxyPushConsumer_i::Connection:

Collaboration graph
[legend]
List of all members.

Public Member Functions

 Connection (const char *channelName, const string &oidstr, CosEventComm::PushSupplier_ptr pushSupplier, bool isProxy=false)
 Constructor adopts 'pushSupplier' parameter.
virtual ~Connection ()
OMNIEVENTS__DEBUG_REF_COUNTS__DECL
void 
callback (CORBA::Request_ptr req)
 Sets _targetIsProxy, if it is.
void output (ostream &os) const
 Save this object's state to a stream.

Public Attributes

const char * _channelName
string _oidstr
CosEventComm::PushSupplier_var _target
bool _targetIsProxy
 TRUE if _target is a ProxyPushSupplier.

Private Member Functions

 Connection ()
 NO IMPLEMENTATION.

Detailed Description

Definition at line 106 of file ProxyPushConsumer.h.


Constructor & Destructor Documentation

OmniEvents::ProxyPushConsumer_i::Connection::Connection const char *  channelName,
const string &  oidstr,
CosEventComm::PushSupplier_ptr  pushSupplier,
bool  isProxy = false
 

Constructor adopts 'pushSupplier' parameter.

Definition at line 329 of file ProxyPushConsumer.cc.

References DB.

OmniEvents::ProxyPushConsumer_i::Connection::~Connection  )  [virtual]
 

Definition at line 346 of file ProxyPushConsumer.cc.

References DB.

OmniEvents::ProxyPushConsumer_i::Connection::Connection  )  [private]
 

NO IMPLEMENTATION.


Member Function Documentation

void OmniEvents::ProxyPushConsumer_i::Connection::callback CORBA::Request_ptr  req  )  [virtual]
 

Sets _targetIsProxy, if it is.

Implements OmniEvents::Callback.

Definition at line 358 of file ProxyPushConsumer.cc.

References DB, OmniEvents::omniEventsLog::exists(), OmniEvents::WriteLock::os, and OmniEvents::ProxyPushConsumer_i::output().

void OmniEvents::ProxyPushConsumer_i::Connection::output ostream &  os  )  const
 

Save this object's state to a stream.

Definition at line 377 of file ProxyPushConsumer.cc.

References _channelName, _oidstr, OmniEvents::Orb::_orb, _target, _targetIsProxy, and OmniEvents::Orb::inst().

Referenced by OmniEvents::ProxyPushConsumer_i::connect_push_supplier().


Member Data Documentation

const char* OmniEvents::ProxyPushConsumer_i::Connection::_channelName
 

Definition at line 108 of file ProxyPushConsumer.h.

Referenced by output().

string OmniEvents::ProxyPushConsumer_i::Connection::_oidstr
 

Definition at line 109 of file ProxyPushConsumer.h.

Referenced by output().

CosEventComm::PushSupplier_var OmniEvents::ProxyPushConsumer_i::Connection::_target
 

Definition at line 110 of file ProxyPushConsumer.h.

Referenced by output().

bool OmniEvents::ProxyPushConsumer_i::Connection::_targetIsProxy
 

TRUE if _target is a ProxyPushSupplier.

Definition at line 111 of file ProxyPushConsumer.h.

Referenced by output().


The documentation for this struct was generated from the following files:
Generated on Fri Aug 26 20:56:17 2005 for OmniEvents by  doxygen 1.4.3-20050530
omniEvents-2_6_2/doc/doxygen/a00031.html0000644000076400001440000000713610303671741020053 0ustar alexusers00000000000000 OmniEvents: Member List

OmniEvents::ProxyPushConsumer_i::Connection Member List

This is the complete list of members for OmniEvents::ProxyPushConsumer_i::Connection, including all inherited members.

_channelNameOmniEvents::ProxyPushConsumer_i::Connection
_oidstrOmniEvents::ProxyPushConsumer_i::Connection
_targetOmniEvents::ProxyPushConsumer_i::Connection
_targetIsProxyOmniEvents::ProxyPushConsumer_i::Connection
Callback()OmniEvents::Callback [inline]
callback(CORBA::Request_ptr req)OmniEvents::ProxyPushConsumer_i::Connection [virtual]
Connection(const char *channelName, const string &oidstr, CosEventComm::PushSupplier_ptr pushSupplier, bool isProxy=false)OmniEvents::ProxyPushConsumer_i::Connection
Connection()OmniEvents::ProxyPushConsumer_i::Connection [private]
output(ostream &os) const OmniEvents::ProxyPushConsumer_i::Connection
~Callback()OmniEvents::Callback [inline, virtual]
~Connection()OmniEvents::ProxyPushConsumer_i::Connection [virtual]


Generated on Fri Aug 26 20:56:17 2005 for OmniEvents by  doxygen 1.4.3-20050530
omniEvents-2_6_2/doc/doxygen/a00283.png0000644000076400001440000000075610240666473017713 0ustar alexusers00000000000000‰PNG  IHDRÒ'ˆè Û!PLTEþÿÿo???ŸŸŸßßß___¿¿¿ÿÿÿ¬\dtRNS@æØf{IDATX…íÖ=OÂ@p¾«3jp6íHŒI;wg#\G“vD Ê&¥àso}y>¥1W"šHîmÒô®÷ëÓkš–ð¯RÒ’–´´C@žK™zìr¸4…#´t¤Òèä ’';ŽÊ*ÉÞKI£²RJö’¤åq)%Y6¥xÌJ`\‹œš!š0s|’Üd%Í¡"É6B?Dc`Ù²qwX¤’ ·¡qï§U^w=¸zèÀ¤Gžy‘K*”30q˜r£”Î<^7’ÊM “8ks½×é‘ÅP¡=&‰q¶Þ˶-š3íÛØ§†M|»iW&…O™GÄÐ{iyƒLhs rIQ“h­Ó\¢-säëµMF¸_kZKˆJé×5=SM–L‚i54š~ ¼º\'’¢Minm—’…4¡u:O*5é:Á%€5¡éWïIœ}“ ¿ Éoœ )s¶¼{ÊïVKZ:¤ôÃìv“ÿëoYK¿ŸO9 ¨#²ÍIEND®B`‚omniEvents-2_6_2/doc/doxygen/a00285.png0000644000076400001440000002337410240451457017710 0ustar alexusers00000000000000‰PNG  IHDRæÔñïr$PLTEþÿÿo˜2Í___???ŸŸŸßßß¿¿¿ÿÿÿrû˜tRNS@æØf IDATxœíÏwÛ8–ïsjõΫU¶M?¯ÞéÚNNf¬e¥Ž;ÖÒ©8e/»ÓÙËŽGmrYí®q´tUâH›é¶-ZÔ&±eQ&þ¹Á)þþ‰ßÄ6‚ ‰ï@‘Op§ªõåIÕGЩƒPuj B ÔA¨:5P¡ê Ô@„¨ƒPuj B $‚mJ“ìC««@¨aI5W¡ê Ô@„¨ƒPuj U¬ƒÝOÓ0épö’r¿_ä”´Rátçý'?íÃa0“·îÕð¬+âS°¤ */è_F8“÷qŽ­I¬#XÒH„KŒÏ­éøOæ±=¸"îˆÔëCÏ2ð{³Œ/Iš§™$Þ^îaí¿Æ1Éþ8JÚ©‚0' ÖÕòj9·ûËÉòp±sÚ»^ͱað1ù7¸y‡!ñf4ÀoíÞ Ù;KUÂþÙº­Ó†yd<Ûúò €@p³ÿ|@o±­¿¶°¦Cö‚¨î(êõ{ k¦9¡V?½¡ùމ8‰‹çóÕ»)òæ(„·&+-Ý€4ŸIš¸|Ý·GvAŠü.jÂp¨Û—ÄýŸôw4rÚ„—¿œõD<Ù£í‚ùƒµH›Ð_LHGèšvŠÖ½£ûñ¯n"~‰ïgÏ&ý ë ª»mÁ­B ÔA¨:5P¡ê Ô@µ‡ðõ)’V`]Uo_Ÿ!iÖU%>üõôwÞâ?™žýúçÓ§™‚k:ð‰}#Uœ²S¤f—©*BÔ­ëâU_ma22K.BÔØ!À¦ÌyK•LÐåA}FÛ²ç­B_%XE9m‚ü•#oE5ˆÒ  ðÇ2öZ¦„Üf9 ó×p­·qLe@xõ?í„*æ˜J€#³P¥ËhËê«g§mXQ(¥Õ@œö BBçæ«¤îuÅÕT !©ƒ©ö@]ô•ÝÚCHìäoŽûj!¤ ´R’Û&VŸ¤BÚ1¤¥·Nl>I)„´#`ü:¡b1•R¯‚M‚Àâ“BH¯ê‚Àà“ÔAȸû¹ar}’:ûÝ89>I„,Ü<Ù_‹¨‚鑚}Ö[AȾ֑’}Ö]éu¢BÎW’Ùk[+”¶B „ÔÝ1­n«R/M%òúÅHÁ>› 4‡¤Bîý$ŸÍPJÍ(€ßEÒ÷Ù¡ÄTùžÊÏÑV%_ Ò!°<«Å¥­JtH²!0=/Ç’§­B i’!°=³È”©¥JrHr!0>7Ê–«¥JpHr! ©ÙZ*K‘ õ!øal’âîB&æmbG±YŠ5 !°K€¤í³™B‘Ïò p¼ÌÁž³ŠV•<(7G‘¬íTÄiHƒÀóœ5’´ÏÆJ®gÝ‘œ}6X(ôI¾÷ Pn޶ …>ÉÀùøÊÍÑv…+L Þ·\9³·P ÅùÛ'ù¸ŸåBâûlºPðƒܯÜoâxQ¡àqüa:²!=ÑAˆÔ(„"á?:‰ŠÏQú»ü,±‰Lk¡øIgkδwXv °mWTÑø5 ê¤;ê Ô@ÕBVB¡¢r;T„¨ZÁF¡ƒPU¹È_ B81÷ýÖÜ6Í«¤­IúN8áヌÝÕët¹±ôð†±rs¨…ë×áË@±={8 îåqýÁþíU¨8ÛÀVt@ZŸ¾û*åTët¹±ôð†±rs• aчÿ¾l=´‘÷‘,há5{ø¾±–À:]n,=ºa¤Ü\%CxáÕDL·§0Q,L†ñÖô…Ùƒ™dÇ—ƒ™;# p{¹0ûülÑ· û-~8ƒpv9þˆw?Òéfíó”ùÒÛa*–SY¬Óå¨ 8/:Q®3±%I'õ£‘+s±vW¬m ò– ®æZï¨w„¯Ws¿Å/†05¬­O—“%^’ëG|3úa¸·xþi5¹?´5]ÓðÕŠN8k÷>ÜïŸ0³¬íL¯Yo¬ÓåRô¼èD¹Î¯`à €@þËÍò–b°FÄ  ó­­¿&Þ:0u6!éûø–$Ÿ[Ÿñåã±ý¾÷g ëÄ$H& k§#X\Ú#wƒôÝW©†ér!Ô=/:3¥Ô@ ‚åæ yK1w€ c˜Ö2Í™áì7Z«´q ëI¾m:µ¬ý·Ã×>{E!¬~ÜÕtlÀ̲ëV¤ÖX§Ë…tRÎyA•¯ÝÔ©ƒ!ù,7_È[Š6ÌË×}²rè@-'Ï@-á·>ÿ7’pK,ˆØÍ6²©%`Koöérim8ç^à¿Ã†`CRg:ù,7_È[ŠvQƒ†¤W6Ÿ·ç@¸]· ô˜H›ððîÛ—$á%w{ïBØþ+mNz€À:].¤“ÚpÎ œîœøvaÐúí’6a/Xn¾·¬…Û„kü’XˆÙ‡Ý>Üú½#L;ýgä*YL„ÇÄ5]üë`&YÚ;ºÆ€À:].¤CmÐó‚‰rɆ?àí´"îgG¤wÔ–›/ä- ß¶XôbIKrVÁϵ† ¢•P¹È[†p:Š%-öß}í… V.ò–D!¬’n/í†ïªt…¼¥*î¢v¨·ÔA¨¬\ä-u*+yK•@¨ÇmÔB T7ÜO™%=x·žƒ/¾&ºûz@È<Ámý!ðé¡u[ÙuS·’ÞQ[ÏM™¿u= ¤k ø|÷]hõÝVøsA!oI"ö™{ë "Õs – È[* %¦¶Â]Ôp´Êc yKE!$;V¸£»¨!Ä Ä1ò–äB 3¨åc¨7­áXÇTDÈ[* %¦;“l溤¼õ•êKÌb^)—»SÿyS˜d¯­VwßÞE\MÜõÜÕ¤MHó9nÑÙ²ÖU,ÒЏŸ„¯ ”“%k&™¼m«í†+8©ÆëâŽò{AéYPÚŠªåŒÂõ›ÔºÛŠø…¼%•Ò[è”äÊ•X±)„) oIÊÍ•Ú4°lZ«õ.qL9ïÄö†¼%é sT‰MJH«^i—v´·äIÌ·TøÞÊÍãåc`߸D¥º—Ô+þ‹Ðþ_NÑ7úQn_1ŸTÇ!ó—oÓÖ¤_ðBá¿ë¢åpÕcÔ'ÕB:ƒ,¯“¾Q¾¿ïR D¡~2dAqHÈ/¥$ac¨„,™í¯€) ïeACÝ d2Èì‰ ˜ò )BÀj!“AÎp ¸) ÿ…x”›#®µ1Ô B6ƒ_ _F©ÖÆP+w9sÎêÂãfä-• a=t+¸± åÞÊs8EMyKÅ!¾šÊÍU–r|·PÔ åC€¦åæ)Iy¾34½MyK•@Èýú³41ÜŽÎï„4äï¢ÕËW #b¦€ü]¿…rsdn›õõgIbúZ†B1S@þ.*ƒÀðdŒbù v?ðR>Þ½¢ïèïßc2ä/«Ö'ù_ÕC0#dçô9ñ+ül,CâB7/¿y•*õIoËG…`ëË}ˆ)¢/ý•LWy‘›È[ªBu>)ø¥ Á8ÈoÍ4?͸þJ&ELù[W ¡"ŸôMðƒc šnck8wârø+Ùü}S@Þ’±>j° ò}Rø¬¤M€ð¸âvAãrxë{>‡P¾OŠž4éAx \±íÄåðÄ¡€?BþƵ€P®OúòûxšOrÄ:à7ä-ÕB™oÙ¥B`ð›ò·­BÂÆ%5 +“†í§äf‡qØHõõ±<åߺ‰ýŽD[ ”€“‡—ᾄüC‚[dK¼z6¥õÕ„ü|šk´ˆ6¾_îÌ-b[I·ŒKºø–”8 ãÛ3C$ªw€ “vâùÜ2Í™áì7zÉÒÆ¬'ù¶1þžºmêV?½¡^‰…=,‚e®9E`ãìáÝ|õã.…pöÊ0H“NÖx/“G d†IT!øþÈo˜#–¯ûdåÐ0ZN ŸZÂo=|þo.ËX¹•O›+h ´²æ)•´+°11%°²&Áíjf…IV!øEø]Ô „ápˆg#âÐ÷·ë6Ò&<¼»Åö¥“@ªÉQ‹KÒE…û'¤M8qÚ„=€°ø l;î §MØKƒz$Y-€@ká6á¿$W¤Ù·~ï äg¤á^L¤š w}Éÿ˜õác¨wÔ+ÒVÜÏžMÂöÅON糖àw÷S£^$«ã„€?¸m±è¥­ÑÜŸT½‹¬ÞL^NGikr!ü0|úìx£¼Ð#ÉÚT«ôaìÂýIϼWåEÁ{¸©Öþ¨VwQ;UÊ9 ¹› a]H 7„¦BpM¡FD&Õì ˆKB#k^)ŸÖ è_âE8 x£ÆB5Í‘àÔ¼rÊÙx"Wp@BÅ4‚¬b¶$A(é]Cä-Õ‚$SAl–åÆBTNÚâœ2„‚b†Ð`RüÑÝ–$f † ¥ ‚ d$‚ 7jêm D Hh ¡Éd”$‚¨!4‚SØ’AØ¡5‚„¢‚hŠß~j4qSA¼eo4e‰Wá¦CÐ*W¡„›á͆ ¡0aÆ ‡ n Õ7Ë1Ë)M‚è@ï·T'¦ Ax Æw Èßq 'A,z'ÿ1 Ïu‚ j b¤0h>Ñò„ªQŠ3j„¯b Ac-€ èDêQ,Œ­¯@+1 ^Iq•¬ÇZAÈâRc\D%鑥ƘŋŒCHq‘œ‡eâÇ%ä-Õ‚HÛ 0÷áÕòåøR\á`Œ ²ÜÑ.I=¼ä&͵‚ˆC‚ ¸^Ð`Ç­ÿc\5ı߄·“õëúØ„¼¥úA(êÒÀ熠c\Àëÿs b„Ø£øv²ÔÅTækaõÓê•1.æiAƒ!‘(JQk wHP›Ô4}…Nˆ?Æ…k ØÒÃd:£ö@ÀEg17Ã=ˆb(„`Œ ²†¶ '½0© Ú¡h¹ô "ôŽ àE ÆÅºwtê&k¨ìª= 6 w©#-u¤ûvžÚ¡`³P‚œ/jÃm‹µŠ4 4"Hr<ˆo‘¸F6ƒVA(D¿¯)Ûµ B‘²¹«Tº3j„37ù Z¡@ãÌ Areø›Nòî_Ô6Üø (aÐ>¼¸ ¨aÐBœx (bÐF|8 H½}T‹n[øâ¡À^³ro_ÕJ<˜!¨cÐR<ëVÁ@ÙSK!pP`ƒ ’Ak!°S`‚ ”A{!0σÍA-ƒC`½›ÇA1ƒ6C`¤á÷Š´…\ªÆÉ‡à yKÀD!ç2¼SÏ åð×üNR6…C4_-‡ÀÐIÊ„P ƒöCÈuIYÊa°ò\RÕ]Óµ6BŽKJ¯è'%1Ø ™.)µ¦U|¥Ÿ¬Í€å’Ò¾Õ)Á¦@ȸ¡—ò…B‰ 6B*…d% Ñ|µë¶…-ar6I=ìBA²:ÜåÈW»ùê p—#_îräËp‰ÏýÚšÙsŒï+òŸeÕóñ.ù5»¥¸‰“BžhUÍþëó»±_—ÛóÏŸMcýaö×Ͻƒ Ã#‚¹í&^uòD!L࿯yAàc4_D7 ;¾±'©‡ v?ô%êÝ+éqe’„¼¥šC0Ìm²³è-Ì…¾MܩǟÍÉxŠ·ç;÷¦~²cÌÇó1É7#‰GëZ?!çÑÙŠd4N¦GdÉêi)e‡ú4%îè;â0÷O(„ÅÎésâÊ$åDÞRÍ!ÌÉ=Ùîo÷Íåí@Ø1ÿhþåó_çG‡äÚ^\k׿5ÍgþççŸ!×|w‡B [‘ŒæêÀØý‹ùïŸGcšFJ!›*„ð8² '°ÆrŸF˜Y&åDÞR# ˜ðïÑ|¤ óÃ|üwòá`‚ë—à×£¹¹æ»&…ànõGóÁ<4ûæ 1 š(©gR8" A3ÍOÄ•Iʉ¼¥šCpÜQ©¼éØ3xAŸBxó·ƒu¾sÛÉuóË™2’´c⧉ݔÁ±M·±5„3ØÒ“r"o©æhƒpý÷#Ó6?;®µu¾®%ܘÄÍ\K IÚ{óö¨>‚š¼}p{Gt°½#’‹ôŽÌÞ{MƒÞëbjõË‚¡¯rÕ eHêa3C@þbA.i&%¢LXÈ_ÜT‡dëÛR›ù¶ò7BPR»ƒÐ Áð)„B†Z–;)Z?ôRÊ|ñ|b„ЍÕÞvqrfŒç#üÐ|þ£ ç/cz`>±A‡–k>¿ŽS H˜¯œC !Pà çW:6»C¡OM‡l’.ÂÒýÓÎ".›áÛ”åµî:Êê%ºãZB@á ‡ðmꇵˆ)”ôò¬#–}Eßqi6„ðÈ ñüïˆ!”IaW±ÐÇ͆¾ö“ϼ‘²Øq1@@Ñ„FCˆ ‘“ÏŸ(¯—š!þÂ]£!D¬ó/íÎ\ qØ› !êd2Ï¿, ¹P<©É¢ç›}þ%QÈ»m‘ôöoƒ!ÄZÛœ‹°œè9{Iœ¢Ábuž¡œŽj””Ø\ñngÞ¥^ …ìƒHEÐ\ñÍõ7ePÈ<ˆ”p¡ Y‘’£±Á -¯üyÕ8"58Mc!$\Ó,ÝåÕôƒHŸ-«©’.i¦>he‚3"–µ “¯©*VvVÔ¸¦BH:W6‡¯¸YHiú3ƒ‰6BbM2V¯ÚRréÙ]Û!ÐaÒb+ýÖ~êb ¿´S”XxNP݆BHö¼~dA`ýŠçñWøíB¸g<°Dy› !¥!0:¤Gð›áí³”cð”ï¾™RjÑMÞ½ÆÚà fÇ6ù? ³„°f¸0ûðcÓÌ# ÛÃéøOæ1d·ÏG/ìc¼{aX4MÃÓq¯Ø¡åÏ9ÐL)ý@§î÷O{Zÿ¾ZÍmò~^ /´xFülxîAŽér®–WË9d·ßà‹>„ ±hš†¯Ws–C‹A`˜÷¡‘ÒºAÎþ8Z4ÝÖuË€ ðÏÀoµxF|‰ÿ›¸›sÈ1‡eçÖœFÇykVóå$X4M#‰Lž) eîFBH9ukë´Bõ³WkCÓœ…[ §Bd` òœý6ò XL_˜æB…ˆA`š…¦‰R{7ž%„[ìYÂÃ[ºÄÿX[ÂÜ‘æZÉnëÇøUK_ ló1µ ‚SÄ‘÷(„{‹á^¤¿DOûÙp¶ $Çírbv]/ íÆG´M€À83Y!¤÷0€Þ°}ñÓéE;­uÝ;"9Hïè~väB i/ˆc;Þý(u޾vAà¸/¤ê’a"&W „1àå©YEwS½bYÍ· þ?&ïÁ $gOÊñ„µ†À3™w!dÝtà15O ;Ø]¨2ý“QrO›‡+5BöÅÎsy+1…oyÍo6%¦ð-¯à&BÈq8<«Âÿã5¼áäû£¯O‹€m„¼þO¥þˆx¢¨:S  òF@È­7®Š•9lv䀒<+ïÒº_ÚA âªXY¦àõK;ŽÊ7…Àðl °xü²MákpxÖApU®)„GÈWešBôFQ‘âšíB+Ïb7Š6Û9ÞaŽñ‚À°9á~iÁÓw1Q Cøšt¿t °úŽ»ï0süÁ‚÷.t‚ºãˆK[ÈÒ¾5è Äг€)Ä>rCöÀÖë=µ‚yX‰è ’~Ðýì ÜŰì]ãÚ0G ,_÷p:nÈG7{ûgHw À†‚²ì`²gÓ!$wÝRƒ]Ô „ápˆg#'œŽd‡¶ n_Bºl]TáÞƒ°Ù“¡üÁZÉày!ÐÁZ¸M¸Æ/ñ:ÄÎÃíºwé‹ ¿C2>ܺƒ5»!{Â:dO:„BO’5 Âÿ‡ð!ýXò‚üÄS«¹mQ„’[fNS¯B¡§ù:¼ Æè‰í¡Øs­E÷Ppº˜FAà¼ÎJ‡PtnAå¶Ì5†°µµõäIÑ7¯:"röðå›'ßÓA݃ø1‚Êm8ßñczönk‹ñ!½$„/ï¼­Ï«ÅòÅóÐpŠdL”$ ¡T$ÂÏãó)’2Y•(„rMAÆûº79† C(Õ@*AÒ¤m› çåÂäí%0„Rý‘|"ÞH°9ñ%¡LSÛ2oÝ ‚4 ”i R!Ü‘FAÀä1h™ÑᎧ@EJd B‰þH&„ï°@l‘»ßK<Ê4ñ[k ]ÉnU„Š“qú’vòB­Ká{Ö)’¡D‡$ˉŒ²¤T™‚‘ŒBX$ ‚Éf€eA(Í!I‚ pÒ²FÉAI²­Ò’”zG¢,zIDATF¡xƒp'³gêI–ƒCrŠÉ•”;Ç… )ø4EždA(Ë!É€P¸&E¿J“´¦¾$‡$áÆEa"½W´–¼þ’UP¦Ä!nÛ•1¡$‡$ê »uu dŽ<Ê¡ ¡ ù#4E…—BAÐlîŒ|I%\1E]ÓµäšYDê£àA1Ù¾® "â1ˆ¿^•øÂ•£'ŠHopÔS¸}äŸ+•M²#é­¾r Å!švJ»EÊöÁ=.¯ ;‡µ3Z˜}k:î-ÇiÀ øÙ½J àÆuÂN€VL¡¨)xgúlxA+ìž°‚ü,vNŸ'BPÛ5]K‰µñÏHÌ¥‚/†yK—ø¿!h……57`…aëËý$ªîØEM‰ËSÛ0º:ÝLƒ¶ÆêÇÝ5Í4?%@PòåA‚µ;J†BãµÀ5}‰ÿì‘íY¶†1_ÄÞâ²Æ_%…¦¼¨Ÿ ÷Ûk‹“X›PJ“ìîJYLaÃÀ_=¡ÆzGÂýìÙÄ…€w¯£½£¨ì«k¸ýÿ}Õw*BR9Q×0ð^¥õf x@¨Ê%qVQ … F¦HW¹ TÊSf„ßxûKf þÖˆŸÄ»Q~×4ªîO©0ŽjâíæÈ}êIeÜ$Tà“ØM›AÙf€Ë À'±CàdPÒÝ¢°Ê ß'±Ö-ŸoQó¨i®Ê‚ Û'1¶¶|ݨ2GÉ¡ý–A6¦úâsð*žzgR‰äb`ª0¹"P©db`ñG<ÕZI‹ìªd1äWGƒPÞw‰{/ëD¢¹Ê­bŽ÷\e¿ŽÉ© à¼y¥•WÇÌ[Á9¬j HÁð]6櫲5pT î2{ ¬·í£iJQuÄ1|—)‡qÜUåéûªö(Ä0dÅíbcPqƒ¼VÕ—ì÷iºËÜÅ4B¨¼A^«j=ÖŒXŽ, ¾|Syƒ¼VõpAsȨÉ2J«‰'¢ª„bæZ–á¶]MNÛU}ކßÒ ä^ãw¿¯‘à:A æ€¸6H†wFBᕨN0/‡»¤F!g”ö¤ôg)òU3˜CÒEéižÔîtAõƒ€y8Ä¿‰É8Ÿ»­:ž,® ;6=Ä?ŸþŽi‰E>ÿOzÖ­?dTåé×BÕPítjp„A¡GÐA¨Átjpu‚`Üè~š†Ó^ª1Ík=)Áškøýø"¸F[¿xƒñCÖäw· NwÞòÓî±13yëŒáY?´¹›^…×i¸ç,˜:Ö:™rªàýïËg2ü…Èû®n@˜ckX³žÇßôð³B¦œ*¸ÄøÜšŽÿdÛƒ+R¤Öz–w¯ ËãìãK÷µcknŸv¯—“ûÃ4BÔ¿=$¿¦jÞÖ§ã>Ù¨îˆl~{9=įçx0£E“?x÷£á¬ AEªr¥ÚÖÕòj9·ûËÉòp±sÚƒh,†}<ÀÇäŸOí7‹ý“Þ÷§ú9~F\ƒ›wÂÍð“6¿†eÌñÕŠMþÜïŸΚàT¤ÚA˜Ã?[·uÚ0Œ‡c[_:(ŽÜ¦y£C`ŠÕäô#~}¤ .üóÁ1@0ð9Ùä\ƒ²–‡·Øø~¹3Ǻe@ÑäÏãaMð*R Pw€À÷ÖLÓ °úé Íé°ÞšßÏñâùœ&¸މñ„9†öA#ÜÍÏÞÍñÙ+ þ¡±]&Fè*R @Ã…ðöÏd¥åYáÍç@ –°‡W}‚œæA Z‚³¹ý4·˜B ¨%Ð5Á#¨Hu‚]Ô„áP·/ñbç¤ç¸£ÑºMÐ&¼ÖFx6rF»áå/g}²HÚ„=Ò&ìÑ6n¾ø Ü;î §M€5Á#¨Hu‚ƒµH›Ð_L0Þ½¦]¢¿wHòýár‚_:¦q?;÷ã_a1Ô;¢›¯¦dqûâ'(šüqzG׸ƒàI¤ ¾OJ„qCF¤SÒíÒë;"U`]&¦æAX쿺;"Uð¡—˜ÜwRµ¼OÕAÀÝ]ÔBõGÐA¨Átjp„AM 0=è¥TUž~= l¸:5P¡ê Ô@„¨ƒPuj /ÿ |û!)¾UIEND®B`‚omniEvents-2_6_2/doc/doxygen/a00043.html0000644000076400001440000006012410303671740020051 0ustar alexusers00000000000000 OmniEvents: OmniEvents::ConsumerAdmin_i Class Reference

OmniEvents::ConsumerAdmin_i Class Reference

#include <ConsumerAdmin.h>

Inheritance diagram for OmniEvents::ConsumerAdmin_i:

Inheritance graph
[legend]
Collaboration diagram for OmniEvents::ConsumerAdmin_i:

Collaboration graph
[legend]
List of all members.

Public Member Functions

CosEventChannelAdmin::ProxyPushSupplier_ptr obtain_push_supplier ()
CosEventChannelAdmin::ProxyPullSupplier_ptr obtain_pull_supplier ()
 ConsumerAdmin_i (const EventChannel_i &channel, PortableServer::POA_ptr poa)
virtual ~ConsumerAdmin_i ()
OMNIEVENTS__DEBUG_REF_COUNTS__DECL
void 
send (CORBA::Any *event)
 Queues a single event for sending to consumers.
void send (list< CORBA::Any * > &events)
 Queues up events for sending to consumers.
void disconnect ()
 Send disconnect_XXX_consumer() to all connected consumers.
void reincarnate (const PersistNode &node)
 Populate this servant from log information.
void output (ostream &os)
 Save this object's state to a stream.

Private Attributes

const EventChannel_i_channel
EventQueue _queue
ProxyPushSupplierManager_pushSupplier
ProxyPullSupplierManager_pullSupplier

Detailed Description

Definition at line 54 of file ConsumerAdmin.h.


Constructor & Destructor Documentation

OmniEvents::ConsumerAdmin_i::ConsumerAdmin_i const EventChannel_i channel,
PortableServer::POA_ptr  poa
 

Definition at line 54 of file ConsumerAdmin.cc.

References _channel, _queue, OmniEvents::Servant::activateObjectWithId(), OmniEvents::PersistNode::attrLong(), OmniEvents::PersistNode::attrString(), OmniEvents::PersistNode::hasAttr(), OmniEvents::EventChannel_i::properties(), and OmniEvents::EventQueue::setFilter().

OmniEvents::ConsumerAdmin_i::~ConsumerAdmin_i  )  [virtual]
 

Definition at line 80 of file ConsumerAdmin.cc.

References _pullSupplier, _pushSupplier, OmniEvents::ProxyPushSupplierManager::_remove_ref(), and DB.


Member Function Documentation

void OmniEvents::ConsumerAdmin_i::disconnect  ) 
 

Send disconnect_XXX_consumer() to all connected consumers.

Definition at line 118 of file ConsumerAdmin.cc.

References _pullSupplier, _pushSupplier, OmniEvents::ProxyPullSupplierManager::disconnect(), and OmniEvents::ProxyPushSupplierManager::disconnect().

Referenced by OmniEvents::EventChannel_i::destroy().

CosEventChannelAdmin::ProxyPullSupplier_ptr OmniEvents::ConsumerAdmin_i::obtain_pull_supplier  ) 
 

Definition at line 46 of file ConsumerAdmin.cc.

References _channel, OmniEvents::Servant::_poa, _pullSupplier, _queue, and OmniEvents::ProxyPullSupplierManager::createObject().

CosEventChannelAdmin::ProxyPushSupplier_ptr OmniEvents::ConsumerAdmin_i::obtain_push_supplier  ) 
 

Definition at line 37 of file ConsumerAdmin.cc.

References OmniEvents::Servant::_poa, _pushSupplier, _queue, and OmniEvents::ProxyPushSupplierManager::createObject().

void OmniEvents::ConsumerAdmin_i::output ostream &  os  ) 
 

Save this object's state to a stream.

Definition at line 147 of file ConsumerAdmin.cc.

References OmniEvents::ProxyPushSupplierManager::_lock, _pullSupplier, _pushSupplier, and OmniEvents::ProxyManager::output().

Referenced by OmniEvents::EventChannel_i::output().

void OmniEvents::ConsumerAdmin_i::reincarnate const PersistNode node  ) 
 

Populate this servant from log information.

Definition at line 127 of file ConsumerAdmin.cc.

References _channel, OmniEvents::PersistNode::_child, OmniEvents::Servant::_poa, _pullSupplier, _pushSupplier, _queue, OmniEvents::PersistNode::child(), and OmniEvents::ProxyManager::reincarnate().

Referenced by OmniEvents::EventChannel_i::activate().

void OmniEvents::ConsumerAdmin_i::send list< CORBA::Any * > &  events  ) 
 

Queues up events for sending to consumers.

Takes ownership of the events. On exit, the 'events' parameter is empty.

Definition at line 106 of file ConsumerAdmin.cc.

References _pushSupplier, _queue, and OmniEvents::EventQueue::append().

void OmniEvents::ConsumerAdmin_i::send CORBA::Any *  event  ) 
 

Queues a single event for sending to consumers.

Takes ownership of the event.

Definition at line 99 of file ConsumerAdmin.cc.

Referenced by OmniEvents::EventChannel_i::mainLoop(), and OmniEvents::ProxyPushConsumer_i::push().


Member Data Documentation

const EventChannel_i& OmniEvents::ConsumerAdmin_i::_channel [private]
 

Definition at line 88 of file ConsumerAdmin.h.

Referenced by ConsumerAdmin_i(), obtain_pull_supplier(), and reincarnate().

ProxyPullSupplierManager* OmniEvents::ConsumerAdmin_i::_pullSupplier [private]
 

Definition at line 91 of file ConsumerAdmin.h.

Referenced by disconnect(), obtain_pull_supplier(), output(), reincarnate(), and ~ConsumerAdmin_i().

ProxyPushSupplierManager* OmniEvents::ConsumerAdmin_i::_pushSupplier [private]
 

Definition at line 90 of file ConsumerAdmin.h.

Referenced by disconnect(), obtain_push_supplier(), output(), reincarnate(), send(), and ~ConsumerAdmin_i().

EventQueue OmniEvents::ConsumerAdmin_i::_queue [private]
 

Definition at line 89 of file ConsumerAdmin.h.

Referenced by ConsumerAdmin_i(), obtain_pull_supplier(), obtain_push_supplier(), reincarnate(), and send().


The documentation for this class was generated from the following files:
Generated on Fri Aug 26 20:56:16 2005 for OmniEvents by  doxygen 1.4.3-20050530
omniEvents-2_6_2/doc/doxygen/a00002.html0000644000076400001440000001167210303671740020050 0ustar alexusers00000000000000 OmniEvents: Member List

OmniEvents::ConsumerAdmin_i Member List

This is the complete list of members for OmniEvents::ConsumerAdmin_i, including all inherited members.

_channelOmniEvents::ConsumerAdmin_i [private]
_default_POA()OmniEvents::Servant [virtual]
_poaOmniEvents::Servant [protected]
_pullSupplierOmniEvents::ConsumerAdmin_i [private]
_pushSupplierOmniEvents::ConsumerAdmin_i [private]
_queueOmniEvents::ConsumerAdmin_i [private]
activateObjectWithId(const char *oidStr)OmniEvents::Servant [protected]
ConsumerAdmin_i(const EventChannel_i &channel, PortableServer::POA_ptr poa)OmniEvents::ConsumerAdmin_i
deactivateObject()OmniEvents::Servant [protected]
disconnect()OmniEvents::ConsumerAdmin_i
obtain_pull_supplier()OmniEvents::ConsumerAdmin_i
obtain_push_supplier()OmniEvents::ConsumerAdmin_i
output(ostream &os)OmniEvents::ConsumerAdmin_i
reincarnate(const PersistNode &node)OmniEvents::ConsumerAdmin_i
send(CORBA::Any *event)OmniEvents::ConsumerAdmin_i
send(list< CORBA::Any * > &events)OmniEvents::ConsumerAdmin_i
Servant(PortableServer::POA_ptr poa)OmniEvents::Servant [protected]
~ConsumerAdmin_i()OmniEvents::ConsumerAdmin_i [virtual]
~Servant()OmniEvents::Servant [virtual]


Generated on Fri Aug 26 20:56:16 2005 for OmniEvents by  doxygen 1.4.3-20050530
omniEvents-2_6_2/doc/doxygen/a00287.png0000644000076400001440000000121110240451457017674 0ustar alexusers00000000000000‰PNG  IHDRø*l ‹!PLTEþÿÿ˜2Í___???ŸŸŸßßß¿¿¿ÿÿÿ‘P_tRNS@æØfIDATX…í×ÁNã0Ðrí‰\ùÒZ>€nö¾@8" ÇV»Úå¼ZœI“ÍøMÚÆþJfì:¸i¨X‰6—L[©ód{R©=Ùbô:¼Ã;¼ÃwŽÃ®¢Ã[Á{½ƒVW~¸…ßö;‡N_cáûø£üõ6-\ÊYÓ ñúe£Ä£êëÄÆ1žµ>3ùß:žÝ²ó·éàrƬR“pöÇ®ûntiOz7Þk-Å/kuÂåK_m{ æÑc™=ÔðÔ‡i8ñòAù½‹ÛŽ÷Á$J¤Ë½Üßx ŸGôÂ:oñp@—'2 )<2³ƒM\¾(<^rqu¹¹rŽ1qOÝS˜O…Æ=8ïìšßp]yÆÓ31› ÐålDSWé¯oâòˆðT¦âªaÛ5ô*¡T WðhŒÉ‰^p^ín&¢¬¤S~FS7é6|ùu¸‰ëm·p\yr,2)Þù+|”4 Ê3¡§Ó­¸lØvÕp5<x/¦q?«†+°þcåÏÒlûC®5gŒÁÂÇ£i¼X9=jÅSIºœÎÜ—tÝÆó¬)»]úõnW?2ëg>‡s ^&ú_aº]bÝàú' èrêv ¯w»Cx_6Äçÿ¼b TA˜ƒ¸ò÷;*Ðøé`ç8^Ù{Z¹N›¸:ñÖðUõ…ß"þ~´ÿ§¡Ã;¼Ãw¯Çm©Ùlµ’IEND®B`‚omniEvents-2_6_2/doc/doxygen/a00289.png0000644000076400001440000000166510240451460017705 0ustar alexusers00000000000000‰PNG  IHDRÒtòq‚!PLTEþÿÿo___???ŸŸŸßßß¿¿¿ÿÿÿ/l:ZtRNS@æØfBIDAThíÚOSÚ@p¿מ;“c;Eå¨c­uÀ£ƒ±ÉQiG9ÚÎäV0$››$ö}ʾ·K €TˆJ©³pvß¾å—ý‡Ý€U• %)II/'±g+á#R8È]”¤¤EM<å"¼ ~wyI<¹“ûÔ†m:f%rbxö`3(É D.h·‡”ûËHÏQ”¤$%-òñ÷³|³\¤Üç”K*¼y…RaEÒýë”rlÔzK…UJ96j­¥ûB®å[ki•¿a•¤$%)IIJR’’”¤$%)IIJZ^âOú«÷"EIJZ© ×㮀‡Ý‡ÍÆ›PfoÖý˜–‚sûÄ'j¡mgš¬“6fâÁ™­ΑZI^•^™{w&Žš3qX™#¥eBê”Ùé#=b‘¥áêá'^2×ñ@ ‹]fÕŠI9tèbÌׂÆ)ѪáÀÀÆ+&;”IU윿z!¾¹«•´ëÝq)ÙûjŸ…Õ#¼÷¨m¶Y[Ì k7§D¤q`€5ÖÅfR;“]6'"+llÉ©DÃåÂ8ø;§Ä¡„5æÔr¨Šó%¹z ïÝÛäý'†.Ê£}úìR\J4ðšcýà{*Qç|Iœˆ)©}UeœÙR*·Í‘´õ‘âR¢BŠÙhNØùÈ)ÏJ¶m³¤ŒK~)¥x¸Ok—¤SŽRk$aç|I<¹“ûÔc'8W¨Òx?NÏÅ=“â”èÇÃ'wÀô³©„‘^²¼é?Y[‰”-Jú¿¤•%)é_I*¾ví·®YIEND®B`‚omniEvents-2_6_2/doc/doxygen/a00044.html0000644000076400001440000003434610303671740020061 0ustar alexusers00000000000000 OmniEvents: OmniEvents::Daemon Class Reference

OmniEvents::Daemon Class Reference

Interface class that contains various methods for running omniEvents as a background task. More...

#include <daemon.h>

List of all members.

Public Member Functions

 Daemon (int &argc, char **&argv)
virtual ~Daemon ()
void tracefile (const char *val)
 Set _tracefile.
void pidfile (const char *val)
 Set _pidfile.
void foreground (bool val)
 Set _foreground.
void daemonize ()
 Redirects output streams to tracefile.
void runningOk ()
 Called to signal that all startup operations have completed OK.

Private Member Functions

 Daemon ()
 No implementation.


Detailed Description

Interface class that contains various methods for running omniEvents as a background task.

Definition at line 32 of file daemon.h.


Constructor & Destructor Documentation

OmniEvents::Daemon::Daemon  )  [private]
 

No implementation.

OmniEvents::Daemon::Daemon int &  argc,
char **&  argv
 

Definition at line 96 of file daemon_unix.cc.

References OmniEvents::DaemonImpl::_foreground, OmniEvents::DaemonImpl::_haveParent, OmniEvents::DaemonImpl::_havePidfile, OmniEvents::DaemonImpl::_haveSyslog, OmniEvents::DaemonImpl::_pidfile, OmniEvents::DaemonImpl::_pipe, OmniEvents::DaemonImpl::_tracefile, and OmniEvents::daemon.

OmniEvents::Daemon::~Daemon  )  [virtual]
 

Definition at line 112 of file daemon_unix.cc.

References OmniEvents::daemon, and OmniEvents::DaemonImpl::shutdown().


Member Function Documentation

void OmniEvents::Daemon::daemonize  ) 
 

Redirects output streams to tracefile.

Definition at line 110 of file daemon_unix.cc.

References OmniEvents::daemon, and OmniEvents::DaemonImpl::daemonize().

Referenced by main().

void OmniEvents::Daemon::foreground bool  val  ) 
 

Set _foreground.

Definition at line 109 of file daemon_unix.cc.

References OmniEvents::daemon, and OmniEvents::DaemonImpl::foreground().

Referenced by main().

void OmniEvents::Daemon::pidfile const char *  val  ) 
 

Set _pidfile.

Definition at line 108 of file daemon_unix.cc.

References OmniEvents::daemon, and OmniEvents::DaemonImpl::pidfile().

Referenced by main().

void OmniEvents::Daemon::runningOk  ) 
 

Called to signal that all startup operations have completed OK.

Definition at line 111 of file daemon_unix.cc.

References OmniEvents::daemon, and OmniEvents::DaemonImpl::runningOk().

Referenced by main().

void OmniEvents::Daemon::tracefile const char *  val  ) 
 

Set _tracefile.

Definition at line 107 of file daemon_unix.cc.

References OmniEvents::daemon, and OmniEvents::DaemonImpl::tracefile().

Referenced by main().


The documentation for this class was generated from the following files:
Generated on Fri Aug 26 20:56:16 2005 for OmniEvents by  doxygen 1.4.3-20050530
omniEvents-2_6_2/doc/doxygen/a00003.html0000644000076400001440000000527310303671740020051 0ustar alexusers00000000000000 OmniEvents: Member List

OmniEvents::Daemon Member List

This is the complete list of members for OmniEvents::Daemon, including all inherited members.

Daemon()OmniEvents::Daemon [private]
Daemon(int &argc, char **&argv)OmniEvents::Daemon
daemonize()OmniEvents::Daemon
foreground(bool val)OmniEvents::Daemon
pidfile(const char *val)OmniEvents::Daemon
runningOk()OmniEvents::Daemon
tracefile(const char *val)OmniEvents::Daemon
~Daemon()OmniEvents::Daemon [virtual]


Generated on Fri Aug 26 20:56:16 2005 for OmniEvents by  doxygen 1.4.3-20050530
omniEvents-2_6_2/doc/doxygen/a00045.html0000644000076400001440000012221510303671740020053 0ustar alexusers00000000000000 OmniEvents: OmniEvents::DaemonImpl Class Reference

OmniEvents::DaemonImpl Class Reference

Utility class that contains various methods for running omniEvents as a Unix daemon. More...

#include <daemon_unix.h>

Collaboration diagram for OmniEvents::DaemonImpl:

Collaboration graph
[legend]
List of all members.

Public Member Functions

 DaemonImpl ()
 ~DaemonImpl ()
void tracefile (const char *val)
 Set _tracefile.
void pidfile (const char *val)
 Set _pidfile.
void foreground (bool val)
 Set _foreground.
void initialize (int &, char **&)
 Does nothing on Unix.
void daemonize ()
 Puts the current process into the background.
void runningOk ()
 Called to signal that all startup operations have completed OK.
void shutdown (int status)
 Exit handler called (indirectly) by on_exit() - shuts down the daemon.

Static Public Member Functions

static void log (const char *message)
 Callback, used as a parameter to omniORB::setLogFunction().

Public Attributes

char * _tracefile
 The tracefile name (if any).
bool _foreground
 TRUE for debug mode (run in foreground).
char * _pidfile
 The pidfile name (if any).
int _pipe [2]
 Unnamed pipe for child->parent comms.
bool _havePidfile
 Is there a pidfile for us to clean up?
bool _haveParent
 Is there a parent for us to clean up?
bool _haveSyslog
 Should we close syslog before quitting?

Static Public Attributes

static DaemonImpl _inst

Private Member Functions

void fork ()
 Performs the actual fork.
void redirectStreamsTo (const char *filename)
 Redirect stdout & stderr to filename.
int openFileFor (int fd, const char *filename, int flags)
 Opens a (new?) file called 'filename' for writing, and uses it to hijack stream 'fd'.
void checkPidfileOrShutdown ()
 If pidfile exists & contains a running process then shutdown() (Unix).
void writePidfile ()
int waitForChild ()
 Called by the parent process (Unix).
void notifyParent (int status)
 Tells the parent to exit with the given status (Unix).

Detailed Description

Utility class that contains various methods for running omniEvents as a Unix daemon.

Features: pidfile support, forking, redirect omniORB trace to syslog (or tracefile).

Definition at line 37 of file daemon_unix.h.


Constructor & Destructor Documentation

OmniEvents::DaemonImpl::DaemonImpl  ) 
 

Definition at line 119 of file daemon_unix.cc.

OmniEvents::DaemonImpl::~DaemonImpl  ) 
 

Definition at line 122 of file daemon_unix.cc.

References _pidfile, and _tracefile.


Member Function Documentation

void OmniEvents::DaemonImpl::checkPidfileOrShutdown  )  [private]
 

If pidfile exists & contains a running process then shutdown() (Unix).

Also shuts down if pidfile is inaccessible.

Definition at line 298 of file daemon_unix.cc.

References _pidfile, and STRERR_FILE_LINE.

Referenced by daemonize().

void OmniEvents::DaemonImpl::daemonize  ) 
 

Puts the current process into the background.

Redirects the omniORB log output to syslog (or 'tracefile', if it is set).

Definition at line 158 of file daemon_unix.cc.

References _foreground, _haveSyslog, _tracefile, checkPidfileOrShutdown(), fork(), log(), PACKAGE_NAME, redirectStreamsTo(), omniORB::setLogFunction(), OmniEvents::shutdown0(), OmniEvents::shutdown2(), STRERR_FILE_LINE, and writePidfile().

Referenced by OmniEvents::Daemon::daemonize().

void OmniEvents::DaemonImpl::foreground bool  val  ) 
 

Set _foreground.

Definition at line 137 of file daemon_unix.cc.

References _foreground.

Referenced by OmniEvents::Daemon::foreground().

void OmniEvents::DaemonImpl::fork  )  [private]
 

Performs the actual fork.

Definition at line 378 of file daemon_unix.cc.

References _haveParent, _pipe, PIPE_READ, PIPE_WRITE, STRERR_FILE_LINE, and waitForChild().

Referenced by daemonize().

void OmniEvents::DaemonImpl::initialize int &  ,
char **& 
 

Does nothing on Unix.

Definition at line 152 of file daemon_unix.cc.

void OmniEvents::DaemonImpl::log const char *  message  )  [static]
 

Callback, used as a parameter to omniORB::setLogFunction().

WARNING: Performs magic! Sets the syslog priority to LOG_INFO or LOG_ERR depending upon whether the message string starts with 'omniEvents! ' or 'omniEvents: '.

Definition at line 265 of file daemon_unix.cc.

References _haveParent, and OmniEvents::daemon.

Referenced by daemonize().

void OmniEvents::DaemonImpl::notifyParent int  status  )  [private]
 

Tells the parent to exit with the given status (Unix).

Definition at line 477 of file daemon_unix.cc.

References _pipe, PIPE_WRITE, and STRERR_FILE_LINE.

Referenced by runningOk(), and shutdown().

int OmniEvents::DaemonImpl::openFileFor int  fd,
const char *  filename,
int  flags
[private]
 

Opens a (new?) file called 'filename' for writing, and uses it to hijack stream 'fd'.

Definition at line 446 of file daemon_unix.cc.

Referenced by redirectStreamsTo().

void OmniEvents::DaemonImpl::pidfile const char *  val  ) 
 

Set _pidfile.

Definition at line 143 of file daemon_unix.cc.

References _pidfile.

Referenced by OmniEvents::Daemon::pidfile().

void OmniEvents::DaemonImpl::redirectStreamsTo const char *  filename  )  [private]
 

Redirect stdout & stderr to filename.

Also redirects stdin from /dev/null

Definition at line 426 of file daemon_unix.cc.

References openFileFor(), STDIN_FILENO, STDOUT_FILENO, and STRERR_FILE_LINE.

Referenced by daemonize(), and runningOk().

void OmniEvents::DaemonImpl::runningOk  ) 
 

Called to signal that all startup operations have completed OK.

Notifies the parent process and redirects stdout & stderr to 'tracefile' (or else /dev/null).

Definition at line 215 of file daemon_unix.cc.

References _haveParent, _haveSyslog, notifyParent(), PACKAGE_NAME, and redirectStreamsTo().

Referenced by OmniEvents::Daemon::runningOk().

void OmniEvents::DaemonImpl::shutdown int  status  ) 
 

Exit handler called (indirectly) by on_exit() - shuts down the daemon.

Deletes pidfile (if we have one), notifies the parent (if we have one).

Definition at line 236 of file daemon_unix.cc.

References _haveParent, _havePidfile, _haveSyslog, _pidfile, notifyParent(), and STRERR_FILE_LINE.

Referenced by OmniEvents::shutdown0(), OmniEvents::shutdown2(), and OmniEvents::Daemon::~Daemon().

void OmniEvents::DaemonImpl::tracefile const char *  val  ) 
 

Set _tracefile.

Definition at line 131 of file daemon_unix.cc.

References _tracefile.

Referenced by OmniEvents::Daemon::tracefile().

int OmniEvents::DaemonImpl::waitForChild  )  [private]
 

Called by the parent process (Unix).

Waits for the child to return an exit status. The status is usually '0' - indicating that the daemon has started successfully.

Definition at line 460 of file daemon_unix.cc.

References _pipe, PIPE_READ, and STRERR_FILE_LINE.

Referenced by fork().

void OmniEvents::DaemonImpl::writePidfile  )  [private]
 

Definition at line 353 of file daemon_unix.cc.

References _havePidfile, and _pidfile.

Referenced by daemonize().


Member Data Documentation

bool OmniEvents::DaemonImpl::_foreground
 

TRUE for debug mode (run in foreground).

Definition at line 43 of file daemon_unix.h.

Referenced by OmniEvents::Daemon::Daemon(), daemonize(), and foreground().

bool OmniEvents::DaemonImpl::_haveParent
 

Is there a parent for us to clean up?

Definition at line 47 of file daemon_unix.h.

Referenced by OmniEvents::Daemon::Daemon(), fork(), log(), runningOk(), and shutdown().

bool OmniEvents::DaemonImpl::_havePidfile
 

Is there a pidfile for us to clean up?

Definition at line 46 of file daemon_unix.h.

Referenced by OmniEvents::Daemon::Daemon(), shutdown(), and writePidfile().

bool OmniEvents::DaemonImpl::_haveSyslog
 

Should we close syslog before quitting?

Definition at line 48 of file daemon_unix.h.

Referenced by OmniEvents::Daemon::Daemon(), daemonize(), runningOk(), and shutdown().

DaemonImpl OmniEvents::DaemonImpl::_inst [static]
 

Definition at line 40 of file daemon_unix.h.

char* OmniEvents::DaemonImpl::_pidfile
 

The pidfile name (if any).

Definition at line 44 of file daemon_unix.h.

Referenced by checkPidfileOrShutdown(), OmniEvents::Daemon::Daemon(), pidfile(), shutdown(), writePidfile(), and ~DaemonImpl().

int OmniEvents::DaemonImpl::_pipe[2]
 

Unnamed pipe for child->parent comms.

Definition at line 45 of file daemon_unix.h.

Referenced by OmniEvents::Daemon::Daemon(), fork(), notifyParent(), and waitForChild().

char* OmniEvents::DaemonImpl::_tracefile
 

The tracefile name (if any).

Definition at line 42 of file daemon_unix.h.

Referenced by OmniEvents::Daemon::Daemon(), daemonize(), tracefile(), and ~DaemonImpl().


The documentation for this class was generated from the following files:
Generated on Fri Aug 26 20:56:16 2005 for OmniEvents by  doxygen 1.4.3-20050530
omniEvents-2_6_2/doc/doxygen/a00004.html0000644000076400001440000001334210303671740020046 0ustar alexusers00000000000000 OmniEvents: Member List

OmniEvents::DaemonImpl Member List

This is the complete list of members for OmniEvents::DaemonImpl, including all inherited members.

_foregroundOmniEvents::DaemonImpl
_haveParentOmniEvents::DaemonImpl
_havePidfileOmniEvents::DaemonImpl
_haveSyslogOmniEvents::DaemonImpl
_instOmniEvents::DaemonImpl [static]
_pidfileOmniEvents::DaemonImpl
_pipeOmniEvents::DaemonImpl
_tracefileOmniEvents::DaemonImpl
checkPidfileOrShutdown()OmniEvents::DaemonImpl [private]
DaemonImpl()OmniEvents::DaemonImpl
daemonize()OmniEvents::DaemonImpl
foreground(bool val)OmniEvents::DaemonImpl
fork()OmniEvents::DaemonImpl [private]
initialize(int &, char **&)OmniEvents::DaemonImpl
log(const char *message)OmniEvents::DaemonImpl [static]
notifyParent(int status)OmniEvents::DaemonImpl [private]
openFileFor(int fd, const char *filename, int flags)OmniEvents::DaemonImpl [private]
pidfile(const char *val)OmniEvents::DaemonImpl
redirectStreamsTo(const char *filename)OmniEvents::DaemonImpl [private]
runningOk()OmniEvents::DaemonImpl
shutdown(int status)OmniEvents::DaemonImpl
tracefile(const char *val)OmniEvents::DaemonImpl
waitForChild()OmniEvents::DaemonImpl [private]
writePidfile()OmniEvents::DaemonImpl [private]
~DaemonImpl()OmniEvents::DaemonImpl


Generated on Fri Aug 26 20:56:16 2005 for OmniEvents by  doxygen 1.4.3-20050530
omniEvents-2_6_2/doc/doxygen/a00291.png0000644000076400001440000001564210240451461017677 0ustar alexusers00000000000000‰PNG  IHDRó,¼«!ƒ*PLTEþÿÿ§§§o˜2Íÿ___???ŸŸŸßßß¿¿¿ÿÿÿ†âªtRNS@æØf&IDATxœíOsÛÆ’À]•=mÕ~ƒwÒîñ¥*µÙãcÕÖn®{]—+â1ÎS,åg;ò1ñ¦$-cà˜çde•gËÔe«$$Xå’V!a¾ËvÏ$Ì?b(¡iÊä`ÐÓóC£1ž¤‘zäヺ-¸·Ò ¯MôµIƒ¾6iÐ×& úÚ¤A_›4èk“{ˆÞ7&“RvÜCô候ÓÔ ¯MSƒ¾6M úÚ45èkÓÔ ¯MÓ½Eà?_“Ð÷Oy•ƒ'ã¶BSQ¹¯èƒß{OÜEY;ìõ_Émüåzëç§ ñÒ}N¡À¦ü·Ð]ª3ÿò:£!^Ú Ï)ØmŸÜœ8{ÃÍ!Úp\BvˆãNýv¸wJÇ{ã~è« •±ððM;ðöÆ]¬>8Nh*,÷}ˆœö~{ŸœÝLú=òŠ<î…·à×ÃÙÉŒÀkðÌ¥…/àûËÓ› Vo¼¾ $Ð|yÄ£‡ÙQè>ƒ/¯¨³»Ã¨öÍÃ!-ìïºëVoДDÀI w!®<š¾?fèßü­õf°3°Bò•CÞ¡¿ØØØ æÐGê Ë}CòGîíL‚âD…¥5™ª½¦\qé8p´ö§*]ÚrÿÐ Ê?U®¾„^¨L_îz‘Ÿêúo viö÷=¥$Ž6Nm£¥¯Ÿ’ðïú˜Ÿð…®÷^¤6û¦·Ù8rçÑ' HÚ#}4Žô]ƒ·Ñ_,»$ŸPÚ™%ä—Ø/޹àßaôzD/>½ÐØâí§mW,w½¶'_|šÇg¡â…¨Å¼Ž'ÑçôÑ#e>í‚ò¼ŽçÐç¼²BëæôW¡þ|#Í»…^ÿ€‰(z(š‘ ¯å¡/pnyQpH.iH߈;‚¾àÜ‚äå+êZrÐkŽ"³Rü"€|wÑ3gíÑæ^4Ð묫ÈÖ} îÅ=ù££{Ñ—âNJzÕ5د+ú²ÜËúÈ{¥þµDŸ{øÎÓQÚ Õ¡BÕÂú¡/ù³\¬Å€ÕæWøÇz¡/{ÿÅBÑJ”ÈcÒ¡7fb1£H©EºqÖ½1wgbH—zß‘mœu@_~4“VhJQ)··½É0‹1…êh/Yf5zÃaf®Öœ*¥y’­l/ú*ÜJ¹ )Qé’lfKÑWãîLŒnPÕ´^è+ 3±Ö­Úâå¶¡¯,ÌÄb0Ðké/· }ÅîÎdÕÃ¥5@_¹»GÍרr{a¯¬@¿wg-U ³¨Û×~EîÎ¤Š–Šº}½èË>˜‘Wªpzåö´ýê¢ÌB*:G+¶¸ô9î«6)Umêbn_úz°“ªÂZ±èëˆ2s©nƒ+~!ç¯}mîΤ2§/qV†¾NwgRáf/qV‚¾Ö037¢JåE"Nõèÿ¼WP*5¢HÄ©½-Ü+vúB§RôÖp';}¡ˆSzâûBªuz›ÐÛÅTîôE"Nèõ^™TíôV ·çÀš”êMÊqÌ¢¯ù|U(•;}qôffCüß?&gD4£TSä¹ä—°Ê¶óG†¾’üƒæ”æk7+–°Ê¶ô\‰ú])úüç> »]-zÅãœÙ¢û€>öÇjÑ+Ü>»ô Ÿ;\ƒ¾‘46ïtÅèóFœ$zÍׄì*Ìȯ4S~࿲@òÓàHÞnJ}fèƒÝs7©F‡mÞz¾æ&ªQ½HWBGܶÔí¥èugD =ø¢Ò赕¦Ëƒ£Þæo<ôO{o:·nº\ýë­ŸÞ/–^¯×KVŸ/ó D5j”ïFŸ]š@¯=#â¹Òözm¥ér\q‹‡~B‚“Tm"C¿è2Cÿ˜þ[ˆ·\Ý[|Hït¡{öR†^qdèµgD|E®÷ÉÞ¸î|ÓÙûËfäV å×íÀƒr6Á"¬ôàkè ±!‡à uƒc²}FFð÷”dÚ]–†þ˜Ã`8øÎ§jqn$Ú0ª‚6nÇ¿‚r:û GkFh¢fôÇ.šúéxÓå´/â$ÐëΈ:®ãÓ›IøüußtvÄ,‚|J¡'X„r6Á"®À'ÚÔİœÿ€;Åóƒöyºõº­@ŸÀÆ5Ãàtv:£j)zlUa^ØÝ#]xyä€ZsÞa‹Ï`_óö øëÞÎÃÞ®Ëi»$zõŒˆáOíïâ^èÞœà›ÍŽ(C¯¡Êq‚E(góQôè{´!è5uÄWp¼ûe·‹7'#س—…ÐOê¡K³}hU±©Öº¬¶ïŸ»hÍ÷3º³·m¬sx û-§í|'pÔ3"†?¿|FgB qÄ|Øìˆ|ôÚJQÁW–3ô¸âspBÚC ðGô?Úöˆãû'rôI‰€“@ïц©*Šþæ[¶Cyd ˜èà0âÆƒ>Ç{ymKÝ^‚^FÄøñˆÌ½žÍŽÈGŸcšE‚,B9C+Rô´!æõ°Ð¡1˜y= +GŸìïâ0›F £*†b„>²¦§Oy¼ðzNÛR·O/L.5fD Ý'stå…oñÍfGä£×VŠåá1–3ô°".=ÚP„:äÉoo:,ÖÃoë =.—ÐðFU,àôãXO"kFˆ~ÄÐ;‰XŸm»(zÝC÷m×Á™#œŽ½¶R,Ÿž`y4Á";¥òhCzXè«ÁïÃàÀ_)ú¥î.N©R±¾ 3…Ù]ŒpHdM<¹yä*áì»Ü¶eG†>¯8d~š7Ë.$,¡¨øBŠÔíSÛ¥Ao¶m™ÛD?Þ3,@¿ì„u£OíwûÊå2ˆU —Eœ}µmKÜþ>¡Oõu%èen¿¼Yô¦Û–¸ý=BŸ¢°ô·ç¡/vëÏçLþ”¹ˆI!RWáŠz©†Ï‹6n[ìöË[¥Ì— }«¸†¬U&ÿÙhI Õ·j=aèK(ÈÈeË 2ý;-znÄ)w»ëÝ@ix绽Aô—¦ãÑ ©íõ†=HÜ®Aôf÷Tb½v¨7Ý aÃK¥$zp{“Aâ²ô—†Ã¦ÐíM¢«Mh£èµãÍå'†Ã¦p£EOGƒ—Ÿ•TK-èÁsÌ:ýªÐ3yðFÔÝñ5ã î³¦Ñ ·zÒ&SÏR™ÑSz-ŽiemW¿UZ…ѱª^¼aÐ/M5ªj¼ô\§ôÆšÓk–ˆø-cV(Ñ4ÖTªE_æhÛ2fƒ ýG3çßy ¨=)½GŸ¸ä¡ yÎr@¤ñF:|Íj*#<+Vˆžw´e fƒwd8èÐ÷ö)‰²,´X•©ßÆL X¾wz;îÒsöN [‰¦Q€•}—XŒÏ#ö§óì*’)ÐæÖà³#škanÁáøØ2>-h¢çµ£Ïm£ í·äsôŽ0Ý@”e¡Åª<îí‘W´¼ó–>¬ qs*´Y¶xÃÂG“Ùà™ËÒÀú˜Ñ€‰0Þ$lÁìç}škançP%CöuYá:À´ULnƒ=µ€W{侯tQ–…«BS(<£åô™YŠ>±•Ø£Åîìù„Ü<Ò¯‡°>f4`"Bÿ±µøgYÀ§Îc <‡*šé·è ùdéCó—mwBóÛ8˜n zè™…bLN0}4aåˆÎ9ÁJzXø~2Ã<#4mlÌh@E8Trÿ Y–ø»°ÀcI¢¼ ¥…ç«F¿<Ò‰žÕÆt‘דÀ]BÉ fÏ:¬œ¦& äkDÏVb^O‚¦\p"¯wiFƒT÷–d9òEY"¯gxUÒ7pì@¿tî£ßtÏ{;ëw0Ý@ü¨?«‡É àèIËöë-\"úÍ=,|4™Ãà’Åz—®D…>uÌ Y–ëc h¬ßÁ|F:múä(“¡¿?<™pÎÈ2zLNð„°òÐÝí³SªÐÅ•"ô°Í—ãÙí³, ¸Š`V–ÔÑG8,Ë‚Ý?P%†F8¶ ç]OÃäbéc.%pþ2=ΚŸ&pò kÐgGø<ôü“ª\ÂëqözÒ Ðóv¿zÐcc7~2¡e'z'åï}A*L]áæŠ_&ÿÚøÏ%+*‹ÐÃ(³¥¬R:âp:¼š ô± ½„²'oj"ozëi%Ý>ÛߺÈÛ†^ãæÀrnŸéomä¹üZÑ+½*‡>ÓÝV)u¥Ä:ôªFKÝ’qúýÈ•,úÕ^4æÉ'Ò¥­šÓèë$o%z9‘2nŸê­|W-V¢—ÿj+[&—”Ó×Õ»HìD/xwûeô5“·}ö‚VBZE•.'€(ªÅpÆõv —µ]Ôí—Ç®ünb…Ø‹^vo`AjKÏ¥ÖMÞjôä£hR,V,õµvò<ô•?ÚCD#Bà’}5•2£„XŽ^t=­Û':Vë©T$¶£J\/`X¢«Æ³ûÑ ŒÈr]­ñjeBÖ=¨“¼ULOæý²ƒ¼üÂ¥-è¹C¼Acád­R¶éɬ5è¹Cœ‡ÊyOm8Ä¢¬ zÞP'Ãy·¬éÒÚ ç uò°;Z÷•›…¬zŽ5úæÅ½ªÿúÁ\²è—.tX…žƒZÛ¾½EäåcKëÐg‡™º²^YD~íÐgÇäz²~Ê~X¹dÑW‘bÔ¤dØkk™?¥W­UäGYÑËçµ0!+êHƒ¾A¯-w½â(Û ¯Nôµ¡—_·lÐW(k‹þ˜.Xà !W<ŠÙòcòfœÝz'ó?5¢78/U5B¹ÿûùÍɇ‰¯¾É”üÐþV€þt•èåw‚{Ñ÷ñ_»K$ç_3å¸âž},+éÆÚ¢÷výsçdkÚžúSw þÅ? ÉædëÊw¶‚ÝÉ_¾?ÚßB9Vt`ÅñøäoÛX?ÂÂÕÕÇZôx‡'›ÍŽ?;ú-ÿÿ¿>ü8Ù Þ==sÎü3êõðé-”cEذâ>ùWð jâGX¸zôª£¬åè}|Ýú·ô0{=ü¾|Ü}E(÷oGÛPŽ#ôðÉŒñÛ?½Ž$N=x÷ðËpŒwSô/~ÞÇúïN°œ¡ÇCøüâ×=.´=w‚k«dq˜M¡?ûë¾úúÝ3gŽþ›?c9C+Rô×þÜëaáÊÑ+²Ö¢§ƒË$ú>øÁ.„í_úë(ÖcùäËzX—€þtŽÚ€>µØŠžžR-Çú™ÿì dŽ®ã–,ÇŠ£ëè”êÖoÿø[Œ®½2ÔÛ‹¾JYE/ôu¡W‡úûƒþ%hÞ\zŽÓß[ôIYA'ôu¡—çaÒ ¯DäYϘ4è+xsOÑžÆ=#ŠDÒL,DÏDņ{›™Î½g8³jÕèyñfMЫ§¸çßÉ­uÇeMè3e6¢¿Ô@#`¬uo}åè)¼#±=óJEÑ­Û]«f¯êmD¯áôâÜ´;¤ñì²:úZ¡ÞZôò*-ÉÚšMÐÿ”š¡U$zñÆFôD‰^ŠWë–ðù#sh$œÍ)ë‹þRoÊ,YjOg }Ñ‹7¢¿l©X(bJ'?`ƒj¶XìCß7lIk¨âs¡.™ƒ¯oìC.-wzµW;v~b(îpg.XôhOKZC ¶èc„F‚¾n¼±½Ú¥uByál8Ÿ—DZ¶èÕþªw¾ZØ€Ò1_7Þ¬zÍñK‰ÐQn¤ÏŸh Л‰7(­V¨†X2á:=w{X†ÞP¼!e“Ÿ]òó±iȺ¢WóÒ'Z²c‹]ÞÑ7–¡o)käpæ²WÆ ÁçB¾èÕ5æR>%Qþ¹ÑùN/˜™Ï&ô&ã 1’ˆ+ïñ–ïôk€¾e FR \ŒÏ—¶Q0Ñ-ƒ¬ú|0M¤»Ì•agmÑŽ7êó$Ï¡<ñÆ*ôêãbn”­"v¤DŸ}.§· ½¹ó©¹ɰ«=T0^ôÙù_ç%YôÁ$ž7v:Ä¿û2ŸL6ß~²Ý%$žï9aÆ¢Y‰mB§N2oúعr¢¿Š>ÝþŽ#ôWó ¹ú÷¡CæèI{^¼Ø~EÐ œ~½ÐsöüEå·ûø×ËÔÈÑÁ›!j‹Ñ'¤•mŽS’/ÞØ„žºôÔïÃA{6xGà?úÞ>]B?Ãwge:p¶OIxØvÉö‘kçwº&“¥nŸE3¹·#=ÎÞpBèO;C2oº´,˜„{ñlÏÌí¥¶åŽ7Ö¡Ø; În&aû-ÿð=Ýzý(ê%v÷(úç¯ÛçPyâ@…vø‚¼›v®žxÁéìtÛ×N*frkMŸ´± ¦Çiï·÷ ê8ïßvƒ».-ô·$ѰܶÜNoúcò?G¼€8.ü‡¯Ð=º×Â?àܽ{sâ‘C@^†ý›ÉlrÛ¼`‚/‡®Ib˜sÛ¿é³5½HCð…:Fä-Ù—–zw{ZJÛ„Þ½èY ÷hôônþ²wÏñý÷Q÷èÆ¹ùöEõ&È '¡;õý!â¡O&‘¥kÂÒHC:<²íû]êdÑ_*mËo,BÏø“_)XðÍØ³HÐKzý @$½žÀè¶Kž ¼>1Qx}7òúHOäõ Ã#ïÈu‡ïõ´i©m"ï^ô{;¬{›q÷¦[QýG…mùÞ:ôÚ5Þ [²n+¯=Ë¢º˜ B¼èÕ—ºÊ /}SqùHWÄñÆ*ôo}ßoK*\’D)¼;yÔ?¸•OÕõø¢²-¼± ½ªBÉÊõTq Ä›Ð+CBÙßûJuU޾@¼± ½ò²xéŸZKÝH,k}CP.sz›Ð+Ñ–ÿ•» {‰g 7èòYqô°"‹7V¡WEœ–6JŒï…kŠÂÜé­B¯rk#ϸ^žøº%(–:ýýC_| #  ÷&V¡WDœ–¡f vY€^XAÞ.ô ¿n™jæA1MܵŠnPìB/?«j™k§Ð(“×þ…(ÜÌÅ.ôrºÒ…9¥ÈS#œö7Š“· ½Ôí[&[âMf®Œqâp®&oz ^ãéƒr;~z ñlÕ!–ª³ ½ØíÍgnÊÛ÷za°Ñ#ozñeu®–ü’s¨“ÜM$ÁF¼}è…!G°€ä»®°@!qyÙFIŠ}è…çUU ÏÇ>6mC^gli³½ðd³ô¹®éPôR¯Ö&o#zûjÐs&’ÊG&Šh¢OÞJôöe2Håc´IUê/¤†UÑ'o'z>ûÊÐÇ¿ Èôvà®2@¹i’b'zî³BôôÜV˜s”aG‘ ;´‰Û´=×+ÍCüy+sâ€È76’QFf€l¼É[ÑóF}E²Zò4Óñ?'J²(³6-É ÞbôöùïÝcuTg™Z3ÖP©ýÿ}!•ý»TÁ¿Ëë§ ñň›O×gÄ?ÿ‰J‘ÿöORKøFÔŠ~mHЧU—Z½A¯XTћЈ}mF4èk3¢A_› úÚŒhÐ×fDýèƒÝswQæÑ“3? Ž’_ù“TÜL*ñ%úÿù¢(˜„¢‡~übU#âÔ0¶¢½õÓûEÙñz½d¥ù²§½7Ég§œyÒ~&•èƒ }ð{(k‡½^â+¹¿G½Í¾X߈85Œ­èÓ I¥U™à$Q>O6$̤BE…~ÚÁ Ié™M×KI#êGLÈ!ˤ‚IPðYcrݤҋ3©äCOÖÇ|+x˜…î3øò 5zV™¢gM/§sŠDd„íèiÀI ÇàþUœ&…%O¡õº°3 ú ôÞ˜ŽE’I%_ÀI ‡•§&ïú7ëÇõžOX­d:¬HDFØŽ³iô¯¾Ò¤°ä)´žG³û9I¯—dRÑEOŸ)ô³gظ=†¾?;‰ë½Œ¼~) T$"#lGƒË%ô0¼ Yš%OÁXÿä·7°¿ ±~býõâL*ºèéà2‰¾cÛqBøC?b±êmö1Ö§Ó¹<Æ2¶£ÇSªT¬ïLOâÔ)d7á\ ~'Wãý¥Ž8“J®SªåXFžÐ,¨ézpè)ŽpÒé\h™ÀÛÑçdš#%Hs!+ úÚ¤Øå³QecI&P© ½ÚˆõCŸO¯çJƒ¾6iÐ×& úÚ¤A_›(î>3"9î>[µöÞsyç¥A_›4èk“}mÒ ¯MôµÉÇÿ>Ÿ¯Ø¹Nø¡IEND®B`‚omniEvents-2_6_2/doc/doxygen/a00046.html0000644000076400001440000015115510303671740020061 0ustar alexusers00000000000000 OmniEvents: OmniEvents::EventChannel_i Class Reference

OmniEvents::EventChannel_i Class Reference

Servant for CosEventChannelAdmin::EventChannel objects, also inherits from omni_thread. More...

#include <EventChannel.h>

Inheritance diagram for OmniEvents::EventChannel_i:

Inheritance graph
[legend]
Collaboration diagram for OmniEvents::EventChannel_i:

Collaboration graph
[legend]
List of all members.

Public Member Functions

CosEventChannelAdmin::ConsumerAdmin_ptr for_consumers ()
CosEventChannelAdmin::SupplierAdmin_ptr for_suppliers ()
void destroy ()
CORBA::Boolean is_alive ()
 'ping' method inherited from FT::PullMonitorable.
 EventChannel_i (EventChannelStore *store=NULL)
 ~EventChannel_i ()
 Cleans up the _poa, if this object is deleted before its thread starts.
void activate (const char *channelName, const PersistNode *node=NULL)
 Creates the channel's POA, and any child objects.
void start ()
 Warn about interface change.
void * run_undetached (void *)
 Entry point for the channel's thread.
void mainLoop ()
 The main loop for a channel.
void _add_ref ()
void _remove_ref ()
 Shutdown the thread when refCount reaches zero.
void output (ostream &os)
ConsumerAdmin_iconsumerAdmin () const
const PersistNodeproperties () const
CORBA::ULong pullRetryPeriod_ms () const
CORBA::ULong maxQueueLength () const
CORBA::ULong maxNumProxies () const
unsigned long cyclePeriod_ns () const

Private Member Functions

void setInsName (const string v)
 Construct a new Mapper object, and registers it in the INSPOA.
void createPoa (const char *channelName)
 Constructs the main POA for this channel.

Private Attributes

EventChannelStore_eventChannelStore
SupplierAdmin_i_supplierAdmin
ConsumerAdmin_i_consumerAdmin
PortableServer::POAManager_var _poaManager
bool _shutdownRequested
PersistNode _properties
Mapper_mapper
omni_mutex _lock
int _refCount

Detailed Description

Servant for CosEventChannelAdmin::EventChannel objects, also inherits from omni_thread.

Each EventChannel contains five POAs, one for each of the proxy types, and one for the XXXAdmins and EventChannel itself. This POA also contains the ProxyManager objects that are used to manage three of the four proxy object types.

Here's a summary of the POAs, and their contents:

     +-POA: EventChannel-----------------------------------------------+
     |                                                                 |
     |                      Obj: EventChannel_i                        |
     |                                                                 |
     |       Obj: SupplierAdmin_i           Obj: ConsumerAdmin_i       |
     |                                                                 |
     |                                 Obj: ProxyPushSupplierManager   |
     |                                                                 |
     |   +-POA: ProxyPushConsumer---+   +-POA: ProxyPushSupplier---+   |
     |   |                          |   |                          |   |
     |   | Obj: ProxyPushConsumer_i |   | Obj: ProxyPushSupplier_i |   |
     |   | (DEFAULT SERVANT)        |   | Obj: ProxyPushSupplier_i |   |
     |   |                          |   | Obj: ProxyPushSupplier_i |   |
     |   |                          |   | .                        |   |
     |   |                          |   | .                        |   |
     |   |                          |   | .                        |   |
     |   |                          |   |                          |   |
     |   +--------------------------+   +--------------------------+   |
     |                                                                 |
     |  Obj: ProxyPullConsumerManager  Obj: ProxyPullSupplierManager   |
     |                                                                 |
     |   +-POA: ProxyPullConsumer---+   +-POA: ProxyPullSupplier---+   |
     |   |                          |   |                          |   |
     |   | Obj: ProxyPullConsumer_i |   | Obj: ProxyPullSupplier_i |   |
     |   | Obj: ProxyPullConsumer_i |   | Obj: ProxyPullSupplier_i |   |
     |   | Obj: ProxyPullConsumer_i |   | Obj: ProxyPullSupplier_i |   |
     |   | .                        |   | .                        |   |
     |   | .                        |   | .                        |   |
     |   | .                        |   | .                        |   |
     |   |                          |   |                          |   |
     |   +--------------------------+   +--------------------------+   |
     |                                                                 |
     +-----------------------------------------------------------------+
 

All five POAs are single threaded, and managed by the same POAmanager. This enables the top level event loop (EventChannel::run()) to hold all incoming calls while it passes events from the ProxyConsumers over to the ProxySuppliers. This single threaded model simplifies[*] the implementation and avoids all of the locking overheads of a multi-threaded solution.

[*] That's the theory anyway... Actually the single threaded model complicates the underlying implementation, because omniORB treats single threaded POAs as a special case on top of multi-threaded ones, rather than the other way round! Ironic!

Definition at line 111 of file EventChannel.h.


Constructor & Destructor Documentation

OmniEvents::EventChannel_i::EventChannel_i EventChannelStore store = NULL  ) 
 

Definition at line 69 of file EventChannel.cc.

OmniEvents::EventChannel_i::~EventChannel_i  ) 
 

Cleans up the _poa, if this object is deleted before its thread starts.

Definition at line 127 of file EventChannel.cc.

References _consumerAdmin, _mapper, _supplierAdmin, DB, and OmniEvents::Mapper::destroy().


Member Function Documentation

void OmniEvents::EventChannel_i::_add_ref  ) 
 

Definition at line 248 of file EventChannel.cc.

References _lock, _refCount, and DB.

void OmniEvents::EventChannel_i::_remove_ref  ) 
 

Shutdown the thread when refCount reaches zero.

Definition at line 258 of file EventChannel.cc.

References _lock, _refCount, and DB.

Referenced by activate().

void OmniEvents::EventChannel_i::activate const char *  channelName,
const PersistNode node = NULL
 

Creates the channel's POA, and any child objects.

Must to be called just after construction, and before start()/run().

Definition at line 83 of file EventChannel.cc.

References OmniEvents::PersistNode::_attr, _consumerAdmin, OmniEvents::Servant::_poa, _properties, _remove_ref(), _supplierAdmin, OmniEvents::Servant::activateObjectWithId(), OmniEvents::PersistNode::attrString(), OmniEvents::PersistNode::child(), createPoa(), OmniEvents::ConsumerAdmin_i::reincarnate(), OmniEvents::SupplierAdmin_i::reincarnate(), and setInsName().

Referenced by OmniEvents::EventChannelFactory_i::EventChannelFactory_i(), and main().

ConsumerAdmin_i& OmniEvents::EventChannel_i::consumerAdmin  )  const [inline]
 

Definition at line 168 of file EventChannel.h.

References _consumerAdmin.

Referenced by OmniEvents::SupplierAdmin_i::SupplierAdmin_i().

void OmniEvents::EventChannel_i::createPoa const char *  channelName  )  [private]
 

Constructs the main POA for this channel.

Policies are: PERSISTENT, USER_ID, SINGLE_THREAD_MODEL. POA name is set to channelName.

Definition at line 322 of file EventChannel.cc.

References OmniEvents::Servant::_poa, _poaManager, OmniEvents::Orb::_RootPOA, DB, and OmniEvents::Orb::inst().

Referenced by activate().

unsigned long OmniEvents::EventChannel_i::cyclePeriod_ns  )  const [inline]
 

Definition at line 181 of file EventChannel.h.

References _properties, OmniEvents::PersistNode::attrLong(), and CYCLE_PERIOD_NS.

Referenced by mainLoop(), and OmniEvents::SupplierAdmin_i::SupplierAdmin_i().

void OmniEvents::EventChannel_i::destroy  ) 
 

Definition at line 51 of file EventChannel.cc.

References _consumerAdmin, _shutdownRequested, _supplierAdmin, DB, OmniEvents::SupplierAdmin_i::disconnect(), and OmniEvents::ConsumerAdmin_i::disconnect().

CosEventChannelAdmin::ConsumerAdmin_ptr OmniEvents::EventChannel_i::for_consumers  ) 
 

Definition at line 35 of file EventChannel.cc.

References _consumerAdmin, and _shutdownRequested.

CosEventChannelAdmin::SupplierAdmin_ptr OmniEvents::EventChannel_i::for_suppliers  ) 
 

Definition at line 43 of file EventChannel.cc.

References _shutdownRequested, and _supplierAdmin.

CORBA::Boolean OmniEvents::EventChannel_i::is_alive  )  [inline]
 

'ping' method inherited from FT::PullMonitorable.

Definition at line 121 of file EventChannel.h.

void OmniEvents::EventChannel_i::mainLoop  ) 
 

The main loop for a channel.

Work is strictly separated into two phases. Most of the time, all of the POAs are active, and receiving incoming calls. Periodically, incoming calls are held and the channel collects new events from the consumers and sends them to the suppliers.

Incoming call handlers are all designed to complete in the absolute minimum time. This enables the POAs to be single threaded, and to hold incoming calls without having to wait a long time for ongoing invokations to complete. Sadly, it's not possible to implement ProxyPullSupplier::pull() 'properly' without blocking, so our version just raises TRANSIENT if there is no event immediately available.

Outgoing calls are always sent as deferred requests, to avoid blocking while we wait for them to return.

Definition at line 221 of file EventChannel.cc.

References _consumerAdmin, _poaManager, _refCount, _shutdownRequested, _supplierAdmin, OmniEvents::SupplierAdmin_i::collect(), cyclePeriod_ns(), and OmniEvents::ConsumerAdmin_i::send().

Referenced by run_undetached().

CORBA::ULong OmniEvents::EventChannel_i::maxNumProxies  )  const [inline]
 

Definition at line 179 of file EventChannel.h.

References _properties, OmniEvents::PersistNode::attrLong(), and MAX_NUM_PROXIES.

Referenced by OmniEvents::ProxyPullSupplierManager::incarnate().

CORBA::ULong OmniEvents::EventChannel_i::maxQueueLength  )  const [inline]
 

Definition at line 177 of file EventChannel.h.

References _properties, OmniEvents::PersistNode::attrLong(), and MAX_QUEUE_LENGTH.

void OmniEvents::EventChannel_i::output ostream &  os  ) 
 

Definition at line 281 of file EventChannel.cc.

References _consumerAdmin, OmniEvents::Servant::_poa, _properties, _supplierAdmin, OmniEvents::ConsumerAdmin_i::output(), OmniEvents::SupplierAdmin_i::output(), and OmniEvents::PersistNode::output().

Referenced by run_undetached().

const PersistNode& OmniEvents::EventChannel_i::properties  )  const [inline]
 

Definition at line 170 of file EventChannel.h.

References _properties.

Referenced by OmniEvents::ConsumerAdmin_i::ConsumerAdmin_i().

CORBA::ULong OmniEvents::EventChannel_i::pullRetryPeriod_ms  )  const [inline]
 

Definition at line 175 of file EventChannel.h.

References _properties, OmniEvents::PersistNode::attrLong(), and PULL_RETRY_PERIOD_MS.

Referenced by OmniEvents::SupplierAdmin_i::SupplierAdmin_i().

void * OmniEvents::EventChannel_i::run_undetached void *   ) 
 

Entry point for the channel's thread.

Calls mainLoop() and waits for it to exit. Handles any exceptions, and shuts down the channel once the main loop has finished.

Definition at line 153 of file EventChannel.cc.

References _eventChannelStore, OmniEvents::Servant::_poa, _shutdownRequested, DB, OmniEvents::EventChannelStore::erase(), OmniEvents::omniEventsLog::exists(), OmniEvents::EventChannelStore::insert(), mainLoop(), NP_MINORSTRING, OmniEvents::WriteLock::os, and output().

void OmniEvents::EventChannel_i::setInsName const string  v  )  [private]
 

Construct a new Mapper object, and registers it in the INSPOA.

Definition at line 293 of file EventChannel.cc.

References _mapper, and OmniEvents::Mapper::destroy().

Referenced by activate().

void OmniEvents::EventChannel_i::start  )  [inline]
 

Warn about interface change.

Definition at line 135 of file EventChannel.h.

References DB.


Member Data Documentation

ConsumerAdmin_i* OmniEvents::EventChannel_i::_consumerAdmin [private]
 

Definition at line 198 of file EventChannel.h.

Referenced by activate(), consumerAdmin(), destroy(), for_consumers(), mainLoop(), output(), and ~EventChannel_i().

EventChannelStore* OmniEvents::EventChannel_i::_eventChannelStore [private]
 

Definition at line 196 of file EventChannel.h.

Referenced by run_undetached().

omni_mutex OmniEvents::EventChannel_i::_lock [private]
 

Definition at line 203 of file EventChannel.h.

Referenced by _add_ref(), and _remove_ref().

Mapper* OmniEvents::EventChannel_i::_mapper [private]
 

Definition at line 202 of file EventChannel.h.

Referenced by setInsName(), and ~EventChannel_i().

PortableServer::POAManager_var OmniEvents::EventChannel_i::_poaManager [private]
 

Definition at line 199 of file EventChannel.h.

Referenced by createPoa(), and mainLoop().

PersistNode OmniEvents::EventChannel_i::_properties [private]
 

Definition at line 201 of file EventChannel.h.

Referenced by activate(), cyclePeriod_ns(), maxNumProxies(), maxQueueLength(), output(), properties(), and pullRetryPeriod_ms().

int OmniEvents::EventChannel_i::_refCount [private]
 

Definition at line 204 of file EventChannel.h.

Referenced by _add_ref(), _remove_ref(), and mainLoop().

bool OmniEvents::EventChannel_i::_shutdownRequested [private]
 

Definition at line 200 of file EventChannel.h.

Referenced by destroy(), for_consumers(), for_suppliers(), mainLoop(), and run_undetached().

SupplierAdmin_i* OmniEvents::EventChannel_i::_supplierAdmin [private]
 

Definition at line 197 of file EventChannel.h.

Referenced by activate(), destroy(), for_suppliers(), mainLoop(), output(), and ~EventChannel_i().


The documentation for this class was generated from the following files:
Generated on Fri Aug 26 20:56:16 2005 for OmniEvents by  doxygen 1.4.3-20050530
omniEvents-2_6_2/doc/doxygen/a00008.html0000644000076400001440000002013310303671740020046 0ustar alexusers00000000000000 OmniEvents: Member List

OmniEvents::EventChannel_i Member List

This is the complete list of members for OmniEvents::EventChannel_i, including all inherited members.

_add_ref()OmniEvents::EventChannel_i
_consumerAdminOmniEvents::EventChannel_i [private]
_default_POA()OmniEvents::Servant [virtual]
_eventChannelStoreOmniEvents::EventChannel_i [private]
_lockOmniEvents::EventChannel_i [private]
_mapperOmniEvents::EventChannel_i [private]
_poaOmniEvents::Servant [protected]
_poaManagerOmniEvents::EventChannel_i [private]
_propertiesOmniEvents::EventChannel_i [private]
_refCountOmniEvents::EventChannel_i [private]
_remove_ref()OmniEvents::EventChannel_i
_shutdownRequestedOmniEvents::EventChannel_i [private]
_supplierAdminOmniEvents::EventChannel_i [private]
activate(const char *channelName, const PersistNode *node=NULL)OmniEvents::EventChannel_i
activateObjectWithId(const char *oidStr)OmniEvents::Servant [protected]
consumerAdmin() const OmniEvents::EventChannel_i [inline]
createPoa(const char *channelName)OmniEvents::EventChannel_i [private]
cyclePeriod_ns() const OmniEvents::EventChannel_i [inline]
deactivateObject()OmniEvents::Servant [protected]
destroy()OmniEvents::EventChannel_i
EventChannel_i(EventChannelStore *store=NULL)OmniEvents::EventChannel_i
for_consumers()OmniEvents::EventChannel_i
for_suppliers()OmniEvents::EventChannel_i
is_alive()OmniEvents::EventChannel_i [inline]
mainLoop()OmniEvents::EventChannel_i
maxNumProxies() const OmniEvents::EventChannel_i [inline]
maxQueueLength() const OmniEvents::EventChannel_i [inline]
output(ostream &os)OmniEvents::EventChannel_i
properties() const OmniEvents::EventChannel_i [inline]
pullRetryPeriod_ms() const OmniEvents::EventChannel_i [inline]
run_undetached(void *)OmniEvents::EventChannel_i
Servant(PortableServer::POA_ptr poa)OmniEvents::Servant [protected]
setInsName(const string v)OmniEvents::EventChannel_i [private]
start()OmniEvents::EventChannel_i [inline]
~EventChannel_i()OmniEvents::EventChannel_i
~Servant()OmniEvents::Servant [virtual]


Generated on Fri Aug 26 20:56:16 2005 for OmniEvents by  doxygen 1.4.3-20050530
omniEvents-2_6_2/doc/doxygen/a00293.png0000644000076400001440000000211110240451461017664 0ustar alexusers00000000000000‰PNG  IHDRÿt¸Qùâ!PLTEþÿÿo___???ŸŸŸßßß¿¿¿ÿÿÿ/l:ZtRNS@æØfÖIDAThíšMsÓH†ù >²gŽl­“øH6 æÈ°sLy Ò1x©ÄG °¤£m}´N`ÉŠf~åvÏXþˆm–] ‚‹ÙÉôÛÝãgfz¤r•ïÈÛmŸî00|Á •µøÿlOû¯`·:p¼²X 7gû‘ùM²÷Ý}{¡™¢Û]2e^iýÕáÚ…· @Ò ×¢ {%fn )_¯PxËä}yíY-ßð¥ïš¸8æciÙ ˜¢5”î õ…×Ñ¢xÙ3³ Q¸;( ¨c™m³-G×±hÉSù[÷h\áý©7•x¹G¶OÐ~:¼Ž)¼ŠÐ’®@ªCa¡qª&nû³èë{¾û2HÏì, ðê¶` ÇLîÇ@¤zú7Å…Ñ¢|dÉÞaeªoLèìj€þÔS+ec„åéŸ2”•¨c¸ ÐíveÔÇí~¬B]É¡¥ÈpR€º­ÖÀHîSÁ7èãÓpv äè¡E™xÒx÷„ÂÓ°€*0ì*ÀW}ç¸û ¿˜|Uû¥\zi€Ï5(·¥j P+W;ðùG(U;P«•܃¸ý‡00000000T ÊüL«D‹€`` /¾H w²%ë†>½h}àÈÍ\D¯D9/ÜE;Î’ Aa¬éѹc>Ù;Na¼^õ›ü6½-vWrææšN‰­ #_s¯M[^=1Hl·?è<×—F\Ÿ€Ý©gÍØ¥ 4¢u ´;˜9؃zv@‘ÔE§@Í—í kâßøø¨‘¸y b| Ïh ˜Ž…¨ÃÉH¶O2’í“oŒ„‘‰5·Lg4š_Ab…S&+´¨^2’µCŠê%#Yk1¤¨^¾U’*+Í«lËa¬ÖÉÞ3óë,.# ê«ìÈ ÿi\…û“Ø_j{õy]Þ©ÕvùÔÛ>,yµ~’¨Fzûª–ûFrP»(Në~ýɨˆsq–›ÏvÎϼZ?Id£~=v,„‘XÜnùZsÉ´ÁïZz¥—ëñž‘‡D€æ¯¸^±¼Sisãºb6œ:l§ø Aùù"o÷+æ)67®ÃI"ýÌ^šƒŽv J`K,B¥Î{`¼íwøÛa$ôüIþ„wî,é´Âùϵ+§x ‡©7iM8lÆa](`ÿMûÎÂæ«bÕ(êÑè¥9ìhC‰ƒl‰E¨Ôy¥ûCVªæ»Qá,¿’„ãÖç}18NývŽåQë¹/ñP6x|Z·ûØ|=ÉýFQæ@/Í 4 °ðÂuÎÏ˧¨¸k €hòfev-8…7úɲ3¥Ó‹ØnGU*ù _¬%‰jTô¡£^šÃŽ% ÊàÀ%ÁJŸB윺ó`ŸëŒµBHÄàô9¡²&6&-ש.•üø7>àkIbåhôÒv$>‹ T¢´‚1éCÄí¹_ß,¼è´V«q³ÙùJ:È”]Ã,,”ܹæƒáZ’¨F…Ì^šƒŽ8 ÷ÑG•:ßûtQ”㤳[5lœˆ“ØrJwøNSE45¸Ó n¥’Zè7ö§©·»tGr.;;©M$ Ù}šÚ«Onv6AÂwAR»]ÑR[IFBв³³!’[b’>¹’’•›‘šäJHB:{‘Ì\‰H¨çáM’<½%ð<í†"¹}c £„rÄÃHÑì$!Œ[:MÀ¤—¤ßb“å Jâïã©‚¢ÙINB”¯4fxš5$Aùú…!ÉIH‚B’fÝ Á[ºÜJ·'u~Ýhi-,H’Ôù¥¥5°(©VE¥ Ù©DH*’”A!î<íJµTƒžr¸óÔkîÒämHÒ’¤È/â¤^™<(šû¬j‚š(’–$qPf×¶$Šæ¶†$á5—{å¾ßáz¥í-NÁ±8¥b6b[L¿^8Q~¹¹5,åõ⥷8ÿÅ┞\oKV>' Š&Ÿ¦»†^wêîâùÅû±\0WHÅ›qi…îâØjbqŠ»š%–P¬Fï¤19Ewq nbqJc3Ù?(³“â°TÍ ’áŒD,Nlˆ$nP.yqîwq nbqÊfæ.;(Äo¸\¡¹k#VP¨ßp¹BC+(š|ºc+Ö'¢;ib…öJq.D$1‚¢Ñx ÕÝM‘¯)¾* ²û´"æ—ªÜ"$‰˜_jf`º{ç"EÑ ŒBG)(êBBy?c„ ( %I„«GÎ[@(ï1½7¿ÔM\œønÙû‚¢Q:ó )É=AQâ;˜×EáÄÅ©IÖEåÄÅÉï*_Â/GC…˜dMPƒßé¿2(Šs‹ždeP4bG!ÿõ…AQ;£“„…ôûêp¡ÿEŒÐ«GÜM@ü¶GH~©Ï-%$!ù¥zFQñ{+ (ŸQTø/TTŸÝ¥(ù _~i*|Dͯù,å!†;@⤺W'Õ]>IF’‘d$‰KrÍ?Ϙ¸®pïÓ_ó 3x0Z ,—C ¼ÖŠHÌ¿šïŒ¹·œÕl.ì²¾·Лï›ù×a$ÓfÓÛ9[®Ë)%éàß\,cÉùl7 ÇŽ•P’ùÎ4P­¤_f]½UåGlTÏAvÁ+>g-£ÇsVaÈêÕ‚]¶ ÜäÌ)è±a½ Í&”XÁÞÇ–X„JIº?éÛex´J‡'&*g—ÿN+WÌÙ¤ëH’{É~o¾·NÞÀ±uô눘@éôØÐðµA‰ aZb*% èžAÃ)û£yn]tõöåC‘°–H‹©ñcËø;/e(F3÷c6샺$Pb†‰{¡GüuUö«Ð”¬2«ö÷Õ“ÈìZ cß{î˜øãb‚äèCy6NÞ¶P/I°ãgÊG{$X)c:|{¬=ß¶˜z1â}$'ÌaMIRîè3’—¿ ^’`GA2f³˜@¥$]•¸11XéÇ ³ð"I&Q» ).IÆî8A½UE½$Ž8 I{F•.I{úL4Äqb`?õ$â̸ßöˆI|’‘d$É&Hd$Û'ÉöIF²}ò?cR“¨´ÔÜ–IEND®B`‚omniEvents-2_6_2/doc/doxygen/a00047.html0000644000076400001440000005741410303671740020065 0ustar alexusers00000000000000 OmniEvents: OmniEvents::EventChannelFactory_i Class Reference

OmniEvents::EventChannelFactory_i Class Reference

#include <EventChannelFactory.h>

Inheritance diagram for OmniEvents::EventChannelFactory_i:

Inheritance graph
[legend]
Collaboration diagram for OmniEvents::EventChannelFactory_i:

Collaboration graph
[legend]
List of all members.

Public Member Functions

CORBA::Boolean supports (const CosLifeCycle::Key &k)
 Returns true if the key passed has the following contents:.
CORBA::Object_ptr create_object (const CosLifeCycle::Key &k, const CosLifeCycle::Criteria &the_criteria)
CORBA::Boolean is_alive ()
 'ping' method inherited from FT::PullMonitorable.
CosEventChannelAdmin::EventChannel_ptr create_channel (const char *channel_name)
 DO NOT USE.
CosEventChannelAdmin::EventChannel_ptr join_channel (const char *channel_name)
 DO NOT USE.
 EventChannelFactory_i (const PersistNode &node)
 Builds an EventChannelFactory_i from the parsed logfile data.
virtual ~EventChannelFactory_i ()
PersistNodeparseCriteria (const CosLifeCycle::Criteria &criteria) const
 Convert CosLifeCycle::Criteria into a PersistNode.
CosLifeCycle::Criteria extract (const char *name, const CosLifeCycle::Criteria &from) const
 Utility function: constructs a Criteria that contains a single criterion.
void output (ostream &os)

Private Attributes

unsigned int _port
 The EventChannelFactory listens on this TCP port.
string _endPointNoListen
 Stores the value of the endPointNoListen ORB parameter.
EventChannelStore _channels

Detailed Description

Definition at line 52 of file EventChannelFactory.h.


Constructor & Destructor Documentation

OmniEvents::EventChannelFactory_i::EventChannelFactory_i const PersistNode node  ) 
 

Builds an EventChannelFactory_i from the parsed logfile data.

Definition at line 47 of file EventChannelFactory.cc.

References _channels, OmniEvents::PersistNode::_child, OmniEvents::EventChannel_i::activate(), and OmniEvents::Servant::activateObjectWithId().

OmniEvents::EventChannelFactory_i::~EventChannelFactory_i  )  [virtual]
 

Definition at line 68 of file EventChannelFactory.cc.

References DB.


Member Function Documentation

CosEventChannelAdmin::EventChannel_ptr OmniEvents::EventChannelFactory_i::create_channel const char *  channel_name  ) 
 

DO NOT USE.

Only for OpenOrb compatibility.

Definition at line 128 of file EventChannelFactory.cc.

References create_object(), DB, IFELSE_OMNIORB4, and STR_MATCH.

CORBA::Object_ptr OmniEvents::EventChannelFactory_i::create_object const CosLifeCycle::Key &  k,
const CosLifeCycle::Criteria &  the_criteria
 

Definition at line 87 of file EventChannelFactory.cc.

References _channels, OmniEvents::newUniqueId(), parseCriteria(), and supports().

Referenced by create_channel().

CosLifeCycle::Criteria OmniEvents::EventChannelFactory_i::extract const char *  name,
const CosLifeCycle::Criteria &  from
const
 

Utility function: constructs a Criteria that contains a single criterion.

Used to generate Invalid Criteria exceptions.

Definition at line 293 of file EventChannelFactory.cc.

Referenced by parseCriteria().

CORBA::Boolean OmniEvents::EventChannelFactory_i::is_alive  )  [inline]
 

'ping' method inherited from FT::PullMonitorable.

Definition at line 70 of file EventChannelFactory.h.

CosEventChannelAdmin::EventChannel_ptr OmniEvents::EventChannelFactory_i::join_channel const char *  channel_name  ) 
 

DO NOT USE.

Only for OpenOrb compatibility.

Definition at line 172 of file EventChannelFactory.cc.

References OmniEvents::Orb::_omniINSPOA, DB, IFELSE_OMNIORB4, and OmniEvents::Orb::inst().

void OmniEvents::EventChannelFactory_i::output ostream &  os  ) 
 

Definition at line 314 of file EventChannelFactory.cc.

References _channels, _endPointNoListen, _port, and OmniEvents::EventChannelStore::output().

Referenced by OmniEvents::omniEventsLog::output().

PersistNode * OmniEvents::EventChannelFactory_i::parseCriteria const CosLifeCycle::Criteria &  criteria  )  const
 

Convert CosLifeCycle::Criteria into a PersistNode.

The caller is responsible for deleting the result.

Definition at line 197 of file EventChannelFactory.cc.

References DB, and extract().

Referenced by create_object().

CORBA::Boolean OmniEvents::EventChannelFactory_i::supports const CosLifeCycle::Key &  k  ) 
 

Returns true if the key passed has the following contents:.

  • id : "EventChannel"
  • kind : "object interface"

Definition at line 75 of file EventChannelFactory.cc.

Referenced by create_object().


Member Data Documentation

EventChannelStore OmniEvents::EventChannelFactory_i::_channels [private]
 

Definition at line 114 of file EventChannelFactory.h.

Referenced by create_object(), EventChannelFactory_i(), and output().

string OmniEvents::EventChannelFactory_i::_endPointNoListen [private]
 

Stores the value of the endPointNoListen ORB parameter.

omniORB4 allows us to encode backup server addresses into our object references.

Definition at line 112 of file EventChannelFactory.h.

Referenced by output().

unsigned int OmniEvents::EventChannelFactory_i::_port [private]
 

The EventChannelFactory listens on this TCP port.

Equivalent to ORB parameter: endPoint = giop:::<_port>

Definition at line 107 of file EventChannelFactory.h.

Referenced by output().


The documentation for this class was generated from the following files:
Generated on Fri Aug 26 20:56:16 2005 for OmniEvents by  doxygen 1.4.3-20050530
omniEvents-2_6_2/doc/doxygen/a00010.html0000644000076400001440000001226510303671740020046 0ustar alexusers00000000000000 OmniEvents: Member List

OmniEvents::EventChannelFactory_i Member List

This is the complete list of members for OmniEvents::EventChannelFactory_i, including all inherited members.

_channelsOmniEvents::EventChannelFactory_i [private]
_default_POA()OmniEvents::Servant [virtual]
_endPointNoListenOmniEvents::EventChannelFactory_i [private]
_poaOmniEvents::Servant [protected]
_portOmniEvents::EventChannelFactory_i [private]
activateObjectWithId(const char *oidStr)OmniEvents::Servant [protected]
create_channel(const char *channel_name)OmniEvents::EventChannelFactory_i
create_object(const CosLifeCycle::Key &k, const CosLifeCycle::Criteria &the_criteria)OmniEvents::EventChannelFactory_i
deactivateObject()OmniEvents::Servant [protected]
EventChannelFactory_i(const PersistNode &node)OmniEvents::EventChannelFactory_i
extract(const char *name, const CosLifeCycle::Criteria &from) const OmniEvents::EventChannelFactory_i
is_alive()OmniEvents::EventChannelFactory_i [inline]
join_channel(const char *channel_name)OmniEvents::EventChannelFactory_i
output(ostream &os)OmniEvents::EventChannelFactory_i
parseCriteria(const CosLifeCycle::Criteria &criteria) const OmniEvents::EventChannelFactory_i
Servant(PortableServer::POA_ptr poa)OmniEvents::Servant [protected]
supports(const CosLifeCycle::Key &k)OmniEvents::EventChannelFactory_i
~EventChannelFactory_i()OmniEvents::EventChannelFactory_i [virtual]
~Servant()OmniEvents::Servant [virtual]


Generated on Fri Aug 26 20:56:16 2005 for OmniEvents by  doxygen 1.4.3-20050530
omniEvents-2_6_2/doc/doxygen/a00297.png0000644000076400001440000000335410240451464017705 0ustar alexusers00000000000000‰PNG  IHDRßt6‚%ò!PLTEþÿÿo___???ŸŸŸßßß¿¿¿ÿÿÿ/l:ZtRNS@æØfyIDATxœíœÏwÚFÇó/pl®ÍKŒŽýá¸ÝÚ)9ö%yÀ1¡Äâ褯6Ç41· Xb „´egv…?-ÐΚ VF;ûÝvg$žño˾>zèh¶xß-ÞwË÷Ýrà}·¬À!Óm9pœçÀ9ð¦Àm~1Ñ t9¿[6ÖEÿL`jl'ÂìÙs<øÓz“Tѵ¬ä{“ƒÿ\`lõÅÜe`§Š?«F8=\ðÏÆÀ°Lv¸Wf7fçÐ3<æ5‹°¤a„ç¬c;¼èÞ±fýÐ/»6¾ëø±a³.‘¨vˆ¼1l02hÕm¾cŽoˆŽNË»ìÂvŠ¥b‰nB |Èž³×Ö[·ú¼®Ùe]1U°w ~lh"§ºruÀðVĆûTÑÅ—ì™Õ²q÷ãÍp4n|,EkèÚà๜X/Z›àgAÿðcðkw/Bôt/#¨2F`™ÔaÃŽÊ;­Ì)0̤s8÷%ð‹÷å8ÿè _ÇKºÃùÛ)s¸kb«›¿këZ¢£µg¸û¡ yhIàr׌ŸÿŒ~ ìTo^c LõÀ ¼ÙÚ`4¤>ΰèh‡€ÅÝ% lYóË…çxå0úÝ:ú%06m·\ƒn‡N€o2‡¡„atÙ°eŸï°x~˜Íá{3Ï«ˆÛNª4úýذ?„À¿.¯ýTé3Þø–¨ÒÕkÿ™éÀiÑÑ.g±òýMf켩åÀ9pœçÀ9°+¸/|«ÆÛA 0?q„hsÜíÊ5Exë~à º0µ>D¦Ó^XÒ a¸ÒÞS×Ç? &„?~Á"©à<´+rþƒ)“†É¢Xma®)Ã×gÖÿþB¬ìTÚóEkNxtR‚“ )Üu¦ÂâJ6øÅ÷‘°/rX¤•Ÿ¼Ê"|pfÝqšJ{þ¶”n4|ЂD8–ÂýI. aÈ¥á›>ÛÒÑ÷ØkívÃÓ:äQ]æÑñzà̺aK§Óžð˜Í¥.?‚`%”ö§Õ…ÁýЋבÂÅ/"‡%Ü©”¥õÀ™u±Jp:íÌ–ž±ÌkNEæMÑ£årÝûµ3Ÿµ6M¹îýÚYÇK{¹m“Vlú|¬x…îm~ âF¬ýMÿ¶¤M4¶˜^;Ö!ÛƒgÿH£OÿcÓª+µó?Š¿ï–ï»åÀûn_ÿOFõ‘@éIEND®B`‚omniEvents-2_6_2/doc/doxygen/a00299.png0000644000076400001440000000242710240451464017707 0ustar alexusers00000000000000‰PNG  IHDRò„X=kK!PLTEþÿÿ˜2Í___???ŸŸŸßßß¿¿¿ÿÿÿ‘P_tRNS@æØf¤IDAThíšÍvâ6Çç²ídÆ^––$,§'é1Ë63gÙP{™LO/ÓN°½+Ž?¤Uccë){¯dˆùH'„¸ "ô×½ú!]!à’7l]å$K²$o/¹ 5•/“kšâܸ’,Éë!wÉÉ£–Qx­ Ž7§O9¾€œýiZ¢ZF¥ÉòqcNŸq\žœ´ðVQ§G›4çôYǥɹÍFžÙ ”€® « „÷Ì´¢sûØ.,¼ªY:º}áˆÏèhQBµÿRSÕUù#*ÈvÊÆMѺ†ƒÔKYÊç Ú £!<oöö •ú2Ã+d!ßaQaCãTL5(­Agáð t4¬ +=¡¨¤í¬v… sKöiFH,ÈŸþ²¹5èì[uAž¬¶IÈ-¡ò–"ó2CN[Œ2CíÔ›OF]“Ö¨Ž0ùÌ Y•µ™¿8ªdÃ0XlCœß rTÆõ¢º ƒ£köĹ«FIˆÕRd~ LÇÙg‡°¤…Üa4ÞÛ¨'êh8ŒÀñ‡öC¬ÃÞö™ò9Äj9ò*Å^$nÀ¹-É’¼}ä%>¼ÿýªŸô—)÷«8¯DÞûfÉ{k"ßï&y…@o&yo佑äû½•–{#Éë|ÇdI–ä×&ÿ#É;Kδ;kä[Ökžß®ƒ²ÃÛÿANˆŠ Ñ£+:ƒ<¶ûŒ]ñ„'t”ùÏÈx’4Œ›;Åô&&DCFáë('CG™ÿTë!óLè1¦71?V!CG™ÿl×BÆŒg²O1½)ÈãÕÆŽ2ÿéÕBÆŒgzÜÂô¦ 7Øe#£NÞ(óŸV=dÌxÆ6¦7¹×ì…,JBž"-óŸõ1ãyÈ0½‰d͆“ä;žð„Žqþ³ò‚2z–óf¾?È¿bÕNþÊÞ«$Y’%yç]üv#É’,ɯMÞÅÓS’%y[É›|†Õöµÿõ¼$Kòûìê±+.(c‹œæõ)Çêè#·âæN÷UÈñ¯ÎÇJ¯B§jŽsúŒã¤äÎgóYä@ÇÛS¦Í9}ÖqB†…{9ÔÈé55!‰¥ÀjƒéñÜ€)´ù@¬n3Ó¨‹!‘ç £¡ÕŽ8ôÙ°r¨šå„¬|뜙Ê:Ñ)Ü Oi)-’Þ‚Ü$äƒó ÕÛ0Vâ›>ñù“‡G× £!0¸#N¾sûÈP)h˜“{+mòÖ±]|øiÑœËðÊIÎwغ—Ð8SMÊeäÑèhX!S׿*Pñ¯ËÑ5ôŽaáºpÇ´§W»B†¹ïŠÿqœ“üM›ì'uAž¬¶ÇXÈP™"ξ‰Vwœ•:| 'wØ Ù¿Ô!VŽ k¾9!|º úÝt„ÉÇNçP¹‚ 6è ÛçÌZDæ/Ž*Ùq’i© A–qFvQdp´\ªAœûÊ0ȱq†ý†ÞšêŠ8_,&óa:Î)ùkÁtäFÃñÞF=0QGÃhŽ¿_²ì픨ç9V•½­²·fÝ| …äUŠöe“©òµœÛ’,ÉÛG^K‘dIÞVò¿H!ðTý;›øIEND®B`‚omniEvents-2_6_2/doc/doxygen/a00048.html0000644000076400001440000002652110303671740020061 0ustar alexusers00000000000000 OmniEvents: OmniEvents::EventChannelStore Class Reference

OmniEvents::EventChannelStore Class Reference

Container for Event Channels. More...

#include <EventChannel.h>

List of all members.

Public Member Functions

 EventChannelStore ()
 ~EventChannelStore ()
void insert (EventChannel_i *channel)
void erase (EventChannel_i *channel)
void output (ostream &os)

Private Attributes

set< EventChannel_i * > _channels
omni_mutex _lock


Detailed Description

Container for Event Channels.

Definition at line 209 of file EventChannel.h.


Constructor & Destructor Documentation

OmniEvents::EventChannelStore::EventChannelStore  ) 
 

Definition at line 381 of file EventChannel.cc.

OmniEvents::EventChannelStore::~EventChannelStore  ) 
 

Definition at line 385 of file EventChannel.cc.


Member Function Documentation

void OmniEvents::EventChannelStore::erase EventChannel_i channel  ) 
 

Definition at line 398 of file EventChannel.cc.

References _channels, _lock, and DB.

Referenced by OmniEvents::EventChannel_i::run_undetached().

void OmniEvents::EventChannelStore::insert EventChannel_i channel  ) 
 

Definition at line 390 of file EventChannel.cc.

References _channels, _lock, and DB.

Referenced by OmniEvents::EventChannel_i::run_undetached().

void OmniEvents::EventChannelStore::output ostream &  os  ) 
 

Definition at line 408 of file EventChannel.cc.

References _channels, and _lock.

Referenced by OmniEvents::EventChannelFactory_i::output().


Member Data Documentation

set<EventChannel_i*> OmniEvents::EventChannelStore::_channels [private]
 

Definition at line 218 of file EventChannel.h.

Referenced by erase(), insert(), and output().

omni_mutex OmniEvents::EventChannelStore::_lock [private]
 

Definition at line 219 of file EventChannel.h.

Referenced by erase(), insert(), and output().


The documentation for this class was generated from the following files:
Generated on Fri Aug 26 20:56:16 2005 for OmniEvents by  doxygen 1.4.3-20050530
omniEvents-2_6_2/doc/doxygen/a00009.html0000644000076400001440000000517510303671740020060 0ustar alexusers00000000000000 OmniEvents: Member List

OmniEvents::EventChannelStore Member List

This is the complete list of members for OmniEvents::EventChannelStore, including all inherited members.

_channelsOmniEvents::EventChannelStore [private]
_lockOmniEvents::EventChannelStore [private]
erase(EventChannel_i *channel)OmniEvents::EventChannelStore
EventChannelStore()OmniEvents::EventChannelStore
insert(EventChannel_i *channel)OmniEvents::EventChannelStore
output(ostream &os)OmniEvents::EventChannelStore
~EventChannelStore()OmniEvents::EventChannelStore


Generated on Fri Aug 26 20:56:16 2005 for OmniEvents by  doxygen 1.4.3-20050530
omniEvents-2_6_2/doc/doxygen/a00049.html0000644000076400001440000003511210303671741020057 0ustar alexusers00000000000000 OmniEvents: OmniEvents::EventQueue Class Reference

OmniEvents::EventQueue Class Reference

The EventQueue is a circular buffer, that contains _size-1 events. More...

#include <EventQueue.h>

List of all members.

Public Member Functions

 EventQueue (long size=1023)
virtual ~EventQueue ()
void setFilter (Filter *filter)
void append (CORBA::Any *event)

Private Attributes

long _next
 Always points to the next slot to which an event will be written.
long _size
CORBA::Any ** _queue
auto_ptr< Filter_filter

Friends

class Reader

Classes

class  Reader


Detailed Description

The EventQueue is a circular buffer, that contains _size-1 events.

Events are stored as pointers to CORBA::Any. The Reader class is a mix-in for classes that need to consume events from the queue. Readers that cannot keep up with the flow of messages into the queue will skip _size events whenever the back of the queue catches up with them. This implements the usual 'fresh business first' pattern for deciding what to discard.

Events are not scavenged from the queue. This means that once the queue has filled up, it will never contain fewer than _size-1 events. This strategy is usually somewhat wasteful of memory, but guarantees that the worst-case memory usage will never rise above the defined maximum.

Definition at line 56 of file EventQueue.h.


Constructor & Destructor Documentation

OmniEvents::EventQueue::EventQueue long  size = 1023  ) 
 

Definition at line 43 of file EventQueue.cc.

References _queue, _size, and DB.

OmniEvents::EventQueue::~EventQueue  )  [virtual]
 

Definition at line 57 of file EventQueue.cc.

References _queue, and _size.


Member Function Documentation

void OmniEvents::EventQueue::append CORBA::Any *  event  )  [inline]
 

Definition at line 78 of file EventQueue.h.

References _filter, _next, _queue, and _size.

Referenced by OmniEvents::ConsumerAdmin_i::send().

void OmniEvents::EventQueue::setFilter Filter filter  )  [inline]
 

Definition at line 72 of file EventQueue.h.

References _filter.

Referenced by OmniEvents::ConsumerAdmin_i::ConsumerAdmin_i().


Friends And Related Function Documentation

friend class Reader [friend]
 

Definition at line 95 of file EventQueue.h.


Member Data Documentation

auto_ptr<Filter> OmniEvents::EventQueue::_filter [private]
 

Definition at line 93 of file EventQueue.h.

Referenced by append(), and setFilter().

long OmniEvents::EventQueue::_next [private]
 

Always points to the next slot to which an event will be written.

Definition at line 90 of file EventQueue.h.

Referenced by append(), and OmniEvents::EventQueue::Reader::moreEvents().

CORBA::Any** OmniEvents::EventQueue::_queue [private]
 

Definition at line 92 of file EventQueue.h.

Referenced by append(), EventQueue(), OmniEvents::EventQueue::Reader::nextEvent(), and ~EventQueue().

long OmniEvents::EventQueue::_size [private]
 

Definition at line 91 of file EventQueue.h.

Referenced by append(), EventQueue(), OmniEvents::EventQueue::Reader::nextEvent(), and ~EventQueue().


The documentation for this class was generated from the following files:
Generated on Fri Aug 26 20:56:16 2005 for OmniEvents by  doxygen 1.4.3-20050530
omniEvents-2_6_2/doc/doxygen/a00011.html0000644000076400001440000000575410303671741020055 0ustar alexusers00000000000000 OmniEvents: Member List

OmniEvents::EventQueue Member List

This is the complete list of members for OmniEvents::EventQueue, including all inherited members.

_filterOmniEvents::EventQueue [private]
_nextOmniEvents::EventQueue [private]
_queueOmniEvents::EventQueue [private]
_sizeOmniEvents::EventQueue [private]
append(CORBA::Any *event)OmniEvents::EventQueue [inline]
EventQueue(long size=1023)OmniEvents::EventQueue
Reader classOmniEvents::EventQueue [friend]
setFilter(Filter *filter)OmniEvents::EventQueue [inline]
~EventQueue()OmniEvents::EventQueue [virtual]


Generated on Fri Aug 26 20:56:16 2005 for OmniEvents by  doxygen 1.4.3-20050530
omniEvents-2_6_2/doc/doxygen/a00050.html0000644000076400001440000002326110303671741020051 0ustar alexusers00000000000000 OmniEvents: OmniEvents::EventQueue::Reader Class Reference

OmniEvents::EventQueue::Reader Class Reference

#include <EventQueue.h>

Inheritance diagram for OmniEvents::EventQueue::Reader:

Inheritance graph
[legend]
Collaboration diagram for OmniEvents::EventQueue::Reader:

Collaboration graph
[legend]
List of all members.

Public Member Functions

 Reader (EventQueue &eventQueue)
bool moreEvents () const
CORBA::Any * nextEvent ()

Private Attributes

EventQueue_eventQueue
int _next
 Points to the next event to read.

Detailed Description

Definition at line 59 of file EventQueue.h.


Constructor & Destructor Documentation

OmniEvents::EventQueue::Reader::Reader EventQueue eventQueue  ) 
 

Definition at line 70 of file EventQueue.cc.


Member Function Documentation

bool OmniEvents::EventQueue::Reader::moreEvents  )  const
 

Definition at line 78 of file EventQueue.cc.

References _eventQueue, OmniEvents::EventQueue::_next, and _next.

Referenced by OmniEvents::ProxyPullSupplier_i::pull(), and OmniEvents::ProxyPullSupplier_i::try_pull().

CORBA::Any * OmniEvents::EventQueue::Reader::nextEvent  ) 
 

Definition at line 84 of file EventQueue.cc.

References _eventQueue, _next, OmniEvents::EventQueue::_queue, and OmniEvents::EventQueue::_size.

Referenced by OmniEvents::ProxyPullSupplier_i::pull(), and OmniEvents::ProxyPullSupplier_i::try_pull().


Member Data Documentation

EventQueue& OmniEvents::EventQueue::Reader::_eventQueue [private]
 

Definition at line 66 of file EventQueue.h.

Referenced by moreEvents(), and nextEvent().

int OmniEvents::EventQueue::Reader::_next [private]
 

Points to the next event to read.

Definition at line 67 of file EventQueue.h.

Referenced by moreEvents(), and nextEvent().


The documentation for this class was generated from the following files:
Generated on Fri Aug 26 20:56:16 2005 for OmniEvents by  doxygen 1.4.3-20050530
omniEvents-2_6_2/doc/doxygen/a00012.html0000644000076400001440000000441110303671741020043 0ustar alexusers00000000000000 OmniEvents: Member List

OmniEvents::EventQueue::Reader Member List

This is the complete list of members for OmniEvents::EventQueue::Reader, including all inherited members.

_eventQueueOmniEvents::EventQueue::Reader [private]
_nextOmniEvents::EventQueue::Reader [private]
moreEvents() const OmniEvents::EventQueue::Reader
nextEvent()OmniEvents::EventQueue::Reader
Reader(EventQueue &eventQueue)OmniEvents::EventQueue::Reader


Generated on Fri Aug 26 20:56:16 2005 for OmniEvents by  doxygen 1.4.3-20050530
omniEvents-2_6_2/doc/doxygen/a00301.png0000644000076400001440000000307410240451465017667 0ustar alexusers00000000000000‰PNG  IHDRÄtéÌ_í!PLTEþÿÿo___???ŸŸŸßßß¿¿¿ÿÿÿ/l:ZtRNS@æØfÉIDATxœíœAsÚFÇó86×ô`8&©8&3vð1mg0×0¤kÓ Ö1£[ˬn  Øý”Ý·2 )B±´ï‘î_xû–}ûÓ{ûö3qòzö£'@/ƒx 2ˆ§ ƒx 2ˆ§ D¦«s6±š ¢A4ˆ¥E‡8sW£Ý¤=&Ûëy8²ý=÷Žñ¶óO7é1[ßÝ%)¶6h¯{¬Ÿ4 âê¶Ó:¨uꎗ6 b±‹Yè¼Íà|3<ÔgkÖ]°Ð©ûÑ;§'Ûà`3îùQ[‚‹ö1!r9ÓÙb²˜ðàú*FœØ“›ûÎm}9ål4ÏYS1"[ƒ!øtTQTˆŽ`ŒT¹i¯šÁhr£‚47åf©Á´ Q%jÛyBØ qúùÓf-*D0££B„r“Eüõ°Ù(Fdç)D0"l)Ä»»QÐc÷a=NÔvv-ëG†[f-^ßÛŒu—ªŒºéŠÊܶ4¢Ž b9Äj2ˆÑ ––ADÔ¼–×Z{NîøPˆµZ>Ì|O;¢ƒXí7ÑBq^+à¨àãè Q,¢˜ŸâÞd$ÏÔƒ ΋( :â~ë) ΟBÈ 0§d<¢œa=™Kþ9¡zDˆPq” Ä„5•芃4ßt£9âSÃC·©Ÿ¾ÈȉËÌ›Š‘±Ô¬‰Ê*-bÉ:IFRIJa¡ #)bé¨ìŽ”ˆ&L‘ª„ˆUÒŽ"Ué«í©J†Xu—Ãg¤B¬¾£3R!jÔ ì’C„¨S6°_ÈÑ ê͹¬Ò jÆ7Œ$ˆºaÀMUDí¢¦*"BÙÇÜ9QB€˜ªˆ(³CLU|D¤ÃKUtD´Ë–ªØˆxõm$dDÌ +pq÷l¤åˆ‹ˆüg8TDì_õp’ÿFDDŠ7ì1ÆDD$y/!3ð‰>Õ ‘ì£líäÀB¤ûT{d,D¯\èæ"é7¼4ÇA$%Թÿ­üá'ºþ©ô”6Ú j]¤òJ"»‚ñ "‰ "¦ "™ "¦ÒˆQ{êìl6üÉL#ïY²ýs`oÇ`ì"yNÈN>àNüúQËu$[D] _„·öÎÝ·ˆýó·»Ñ·¬äð[´7ìÍcnYïÏo2ZˆÄx…ˆz®-Ûr¢/VÝõÅgQ„øJÝvòÓöSwìÍc9–<ç?ç;ˆz®áNØ’7±½ùˆC!ÑýèëòÎ8èk#òEs,îGõì¯ÑP¶Á!¢À^Ï\iàƒé'lE¾S£ú¶Ds"–£!ô Y‹þTöpV߇¨çxÖ®ˆÿ  å3v®ÒˆÒ1ÆËñ2à­›ØÏÒ[^…çýÆdŸw;¢+ØðÁÀ/¹½Zy‹+y~! ij} /z Ù†xm½å—±ýg«½Qϵˆ/¯ã)ÄX>cç*1€ƒ;ÜQkÞõ¿v¹³¼RWwãg16Q~ÀÀ]k}¸îªsÜwÀ•'{Û꺸«ìÎPØ…ˆ•]ogƒG§;W9‰šðÿÒ6cžò³z¹YÊ §8ƒnòÜQ}aÛ²ƒì-ûDò‘´(»¿-ê¹~LÔÕÕÃÒý‚r“õóûoÒ(“\ù‘ I?`P~¸3x_ɸ¯Š¢ì½‰¢#”½ Šz®7åFFüuq¡r§üX–Çr}õq¶¸Ù!Wœ#+÷™ÝTyƒ¦©õV­Ew»Ø^°õ\ƒïèoµiô» qßZ„ý7³ Z¡' <‚Ÿvº¬‰¶+ ²'쿲ÛcE$+ªìÕ‰íáìz¢žk••ñÖ¿ôâÎÚ ¸°±½åýpž‹ˆã:Ohˆ}w{71aa"f†Î q5N°ógÔ绸RÐóY(­S¤ =ùýðý3}|²|(~K)è¶òö â{W ª¼A¨ø!½jèv“PáCzÕP¥Rbï^5´¹_ª R‚¤ )HA R‚¤ -Blý?Z¯, RЋC]~5‹…Œr~·ì.l½ð~nœ]üáá0FØÔ…:™DÓ¥Pø•ÔÝÙx%$W…á´"Ú{!›ÖSÒ5ÅÝ$%p³Ý‰©ëŸƒ¶ òMñÊÍ<Ïäªò.x Ádu8ê ¾¨»uãrhhÀÀöjQ5‚ÈѲ‘.Às}®ÑÚ8­Ú÷E\¸Q!sZ€¸% ì&FmÚ9ÓÀ;NÏ–CßÌÓtM‡dÀ2¨;pBΨy„ ‰úvú0¨‹)ü2ࣜ¾‡V¯dõ®º« W ©LÜðK¬ìd ‰î“Á” ƒC£9ƒZM¹±ôÆWm]™ûÛ,ÿD ¡ÃoÆôŒD0 zBÏÆn0ÙºCj讄²Ý|, þ¥‰Ó$dôí<äb@BÎÌi2|Á¬»^½"™Þyˆ#Ïè"ƒâgt!z’Ž-º è¦!Ò;lJ¨óØÉvþŒ¨ãJ¹)˜ žÏº Æö”l=ËåÉ«¹§ÍG 5ÊçÕágƒÂÖ† #mCÐSEAÿ´¢ ½ôw7k}›§öIEND®B`‚omniEvents-2_6_2/doc/doxygen/a00051.html0000644000076400001440000001673310303671741020060 0ustar alexusers00000000000000 OmniEvents: OmniEvents::Filter Class Reference

OmniEvents::Filter Class Reference

Event filter interface. More...

#include <Filter.h>

Inheritance diagram for OmniEvents::Filter:

Inheritance graph
[legend]
List of all members.

Public Member Functions

 Filter ()
virtual ~Filter ()
virtual bool keep (const CORBA::Any &event) const =0
 Returns TRUE if the event passes the filter and FALSE if the event should be discarded.
virtual void output (ostream &os) const =0

Detailed Description

Event filter interface.

Definition at line 49 of file Filter.h.


Constructor & Destructor Documentation

OmniEvents::Filter::Filter  )  [inline]
 

Definition at line 52 of file Filter.h.

virtual OmniEvents::Filter::~Filter  )  [inline, virtual]
 

Definition at line 53 of file Filter.h.


Member Function Documentation

virtual bool OmniEvents::Filter::keep const CORBA::Any &  event  )  const [pure virtual]
 

Returns TRUE if the event passes the filter and FALSE if the event should be discarded.

Called by filter() once for each event.

Implemented in OmniEvents::FilterByTCKind, and OmniEvents::FilterByRepositoryId.

virtual void OmniEvents::Filter::output ostream &  os  )  const [pure virtual]
 

Implemented in OmniEvents::FilterByTCKind, and OmniEvents::FilterByRepositoryId.


The documentation for this class was generated from the following file:
Generated on Fri Aug 26 20:56:16 2005 for OmniEvents by  doxygen 1.4.3-20050530
omniEvents-2_6_2/doc/doxygen/a00013.html0000644000076400001440000000415110303671741020045 0ustar alexusers00000000000000 OmniEvents: Member List

OmniEvents::Filter Member List

This is the complete list of members for OmniEvents::Filter, including all inherited members.

Filter()OmniEvents::Filter [inline]
keep(const CORBA::Any &event) const =0OmniEvents::Filter [pure virtual]
output(ostream &os) const =0OmniEvents::Filter [pure virtual]
~Filter()OmniEvents::Filter [inline, virtual]


Generated on Fri Aug 26 20:56:16 2005 for OmniEvents by  doxygen 1.4.3-20050530
omniEvents-2_6_2/doc/doxygen/a00305.png0000644000076400001440000000166710240451466017702 0ustar alexusers00000000000000‰PNG  IHDRÏtТ{Ú!PLTEþÿÿo___???ŸŸŸßßß¿¿¿ÿÿÿ/l:ZtRNS@æØfDIDAThíÚOSÚ@ð~Ží°†kgÐÉÑuâ±£”xššµåH[Ùä„äí©š²û)ûv± ­³Ù}›ý퟇}Ç7S~¿S‚ôO X»Ð¿ƒv+Z¤ rP fM#ÊzËÆÄöÀ-Œ\ý°vY[•YV®ÊÓiE´ßhš‚"]¼r3ŸiV•pÁ¥¡´ÍÇžÝð5Ÿûn5iÛNUÖèq·ÛÛÌç¸un<臘ø`WͪÉûcšA ~Ì?Y¦_ãBüÄKxÂ's0Àí²×e2ÌÙÇÊq¶?ëŒíº„0ÀƒÒ[—ƒpæÑ„ôý§œþtE°gqH&Ôìë´2¨xyÈÁ@)H¦w²,‹‡m<£½ œÑ^)H>°ógÔ绸RÐóY(­S¤ =ùýðý3}|²|(~K)è¶òö â{W ª¼A¨ø!½jèv“PáCzÕP¥Rbï^5´¹_ª R‚¤ )HA R‚¤ -Blý?Z¯, RЋC]~5‹…Œr~·ì.l½ð~nœ]üáá0FØÔ…:™DÓ¥Pø•ÔÝÙx%$W…á´"Ú{!›ÖSÒ5ÅÝ$%p³Ý‰©ëŸƒ¶ òMñÊÍ<Ïäªò.x Ádu8ê ¾¨»uãrhhÀÀöjQ5‚ÈѲ‘.Às}®ÑÚ8­Ú÷E\¸Q!sZ€¸% ì&FmÚ9ÓÀ;NÏ–CßÌÓtM‡dÀ2¨;pBΨy„ ‰úvú0¨‹)ü2ࣜ¾‡V¯dõ®º« W ©LÜðK¬ìd ‰î“Á” ƒC£9ƒZM¹±ôÆWm]™ûÛ,ÿD ¡ÃoÆôŒD0 zBÏÆn0ÙºCj讄²Ý|, þ¥‰Ó$dôí<äb@BÎÌi2|Á¬»^½"™Þyˆ#Ïè"ƒâgt!z’Ž-º è¦!Ò;lJ¨óØÉvþŒ¨ãJ¹)˜ žÏº Æö”l=ËåÉ«¹§ÍG 5ÊçÕágƒÂÖ† #mCÐSEAÿ´¢ ½ôw7k}›§öIEND®B`‚omniEvents-2_6_2/doc/doxygen/a00052.html0000644000076400001440000002330510303671741020052 0ustar alexusers00000000000000 OmniEvents: OmniEvents::FilterByRepositoryId Class Reference

OmniEvents::FilterByRepositoryId Class Reference

Allows only events of a certain CORBA RepositoryId to pass. More...

#include <Filter.h>

Inheritance diagram for OmniEvents::FilterByRepositoryId:

Inheritance graph
[legend]
Collaboration diagram for OmniEvents::FilterByRepositoryId:

Collaboration graph
[legend]
List of all members.

Public Member Functions

 FilterByRepositoryId (const char *rid)
virtual ~FilterByRepositoryId ()
bool keep (const CORBA::Any &event) const
 Returns TRUE if the event passes the filter and FALSE if the event should be discarded.
void output (ostream &os) const

Private Attributes

CORBA::RepositoryId_var _rid

Detailed Description

Allows only events of a certain CORBA RepositoryId to pass.

Only passes events whose type matches exactly.

Definition at line 84 of file Filter.h.


Constructor & Destructor Documentation

OmniEvents::FilterByRepositoryId::FilterByRepositoryId const char *  rid  )  [inline]
 

Definition at line 87 of file Filter.h.

virtual OmniEvents::FilterByRepositoryId::~FilterByRepositoryId  )  [inline, virtual]
 

Definition at line 88 of file Filter.h.


Member Function Documentation

bool OmniEvents::FilterByRepositoryId::keep const CORBA::Any &  event  )  const [virtual]
 

Returns TRUE if the event passes the filter and FALSE if the event should be discarded.

Called by filter() once for each event.

Implements OmniEvents::Filter.

Definition at line 36 of file Filter.cc.

References _rid, and STR_MATCH.

void OmniEvents::FilterByRepositoryId::output ostream &  os  )  const [inline, virtual]
 

Implements OmniEvents::Filter.

Definition at line 90 of file Filter.h.

References _rid.


Member Data Documentation

CORBA::RepositoryId_var OmniEvents::FilterByRepositoryId::_rid [private]
 

Definition at line 92 of file Filter.h.

Referenced by keep(), and output().


The documentation for this class was generated from the following files:
Generated on Fri Aug 26 20:56:16 2005 for OmniEvents by  doxygen 1.4.3-20050530
omniEvents-2_6_2/doc/doxygen/a00015.html0000644000076400001440000000542310303671741020052 0ustar alexusers00000000000000 OmniEvents: Member List

OmniEvents::FilterByRepositoryId Member List

This is the complete list of members for OmniEvents::FilterByRepositoryId, including all inherited members.

_ridOmniEvents::FilterByRepositoryId [private]
Filter()OmniEvents::Filter [inline]
FilterByRepositoryId(const char *rid)OmniEvents::FilterByRepositoryId [inline]
keep(const CORBA::Any &event) const OmniEvents::FilterByRepositoryId [virtual]
output(ostream &os) const OmniEvents::FilterByRepositoryId [inline, virtual]
~Filter()OmniEvents::Filter [inline, virtual]
~FilterByRepositoryId()OmniEvents::FilterByRepositoryId [inline, virtual]


Generated on Fri Aug 26 20:56:16 2005 for OmniEvents by  doxygen 1.4.3-20050530
omniEvents-2_6_2/doc/doxygen/a00307.png0000644000076400001440000000175210240451466017677 0ustar alexusers00000000000000‰PNG  IHDRìttÈà !PLTEþÿÿo___???ŸŸŸßßß¿¿¿ÿÿÿ/l:ZtRNS@æØfwIDAThíšAoÚ0Çû8n÷v"ÇNc¢×i¬áØ­pÜ"ÔäXµä>ˆs$$}4!ö§Ü{v) ƒV%¬U©ŸAÆþÿã_í÷’"µ{âYbOc5Vcw ËiéØ[b7­ ±ûÔØÔ;‹9[Àma¬rÃü³·†=«ý,æ&"êvó¦; ç [ òb ì{ùZDT4E…vQ. ÑKCrB;¼5RëÞi$ê##‹/Éæ°‰”ÙYì‚À{nY,ƒé(%Œõ6ñ“æ´vf3&"Þi‰4… üKéÝJ,ÃÆîÈ’r£›w’¦Ü$ï(7¥Ä¢ÀÝÒXyÈ9,&ïÐ6¥¾ÄÎŽÕÖæ»E;¥±XRËØo_AL…­…-`ñ*`»]‡Å´fêÝåÜZưø¸XÊíÑÔ¢Èò5‹•,L„-`Ë„Æj¬Æ>9ö¡/ßoþË×óãíæ—–Àþ©¼.ìæ§\[yeØÍ“ûâ°ž»qr_¶R)qÊ/û\¿ 4Vc5Vc5Vc5Vc5Vc5Vc5Vc5öÕaËþË#Cc5v±±;# ÉG±ºæ¢cîÏGLˆ^¾Ï…Ÿ0¢Þÿ`­ßg Ûˆfž—¿îNÃùª?3Ï»¼í¿/aG4·ÞZì©|-"+.’>øó1,åçûÕ×܃µ(mÄSçPÔYm¢Ö½®ÆíLèÔ©Fé'Ç‚9l4æ~”š °Fpa;Î`IF•·M;  =¡h³Æg©‡©± Ëálj'Á$à¬ÝTØÀúakPMÆœf¬^£uh K3Ø#ñéØõ¡ß§85ó~†½aܸÄïœ](ýç®ÅrlŒ0"KÊÌ®ëŒ}¹IVŸ_”H, Ì„Rº¡VT—½ò6ÛàöåÑ4˜)ubQí!ç°˜˜ŸúBØ;¾º˜'LbQ@'=@ô5éåÔ÷ÁnðÄ0EêÙú’ZÆ~ü‹‰Âºy, ËHcŸÊÜ*¯Ü-¸ç»%Têkv‹7Pëy„Y¯aU²¹œ[È 瀂MV2Nͼs™[ó.·Dékr‹‹¥Ü¶C›bY"Ö-V2uMÀ‰ °ÝVr’¯dð`%¥‡éÑ*l‰³xÕŸÖÃâãn[Øy?6§o;žäíôía»ûاÕØÝÀþÜ6ä žIEND®B`‚omniEvents-2_6_2/doc/doxygen/a00309.png0000644000076400001440000000175210240451466017701 0ustar alexusers00000000000000‰PNG  IHDRìttÈà !PLTEþÿÿo___???ŸŸŸßßß¿¿¿ÿÿÿ/l:ZtRNS@æØfwIDAThíšAoÚ0Çû8n÷v"ÇNc¢×i¬áØ­pÜ"ÔäXµä>ˆs$$}4!ö§Ü{v) ƒV%¬U©ŸAÆþÿã_í÷’"µ{âYbOc5Vcw ËiéØ[b7­ ±ûÔØÔ;‹9[Àma¬rÃü³·†=«ý,æ&"êvó¦; ç [ òb ì{ùZDT4E…vQ. ÑKCrB;¼5RëÞi$ê##‹/Éæ°‰”ÙYì‚À{nY,ƒé(%Œõ6ñ“æ´vf3&"Þi‰4… üKéÝJ,ÃÆîÈ’r£›w’¦Ü$ï(7¥Ä¢ÀÝÒXyÈ9,&ïÐ6¥¾ÄÎŽÕÖæ»E;¥±XRËØo_AL…­…-`ñ*`»]‡Å´fêÝåÜZưø¸XÊíÑÔ¢Èò5‹•,L„-`Ë„Æj¬Æ>9ö¡/ßoþË×óãíæ—–Àþ©¼.ìæ§\[yeØÍ“ûâ°ž»qr_¶R)qÊ/û\¿ 4Vc5Vc5Vc5Vc5Vc5Vc5Vc5öÕaËþË#Cc5v±±;# ÉG±ºæ¢cîÏGLˆ^¾Ï…Ÿ0¢Þÿ`­ßg Ûˆfž—¿îNÃùª?3Ï»¼í¿/aG4·ÞZì©|-"+.’>øó1,åçûÕ×܃µ(mÄSçPÔYm¢Ö½®ÆíLèÔ©Fé'Ç‚9l4æ~”š °Fpa;Î`IF•·M;  =¡h³Æg©‡©± Ëálj'Á$à¬ÝTØÀúakPMÆœf¬^£uh K3Ø#ñéØõ¡ß§85ó~†½aܸÄïœ](ýç®ÅrlŒ0"KÊÌ®ëŒ}¹IVŸ_”H, Ì„Rº¡VT—½ò6ÛàöåÑ4˜)ubQí!ç°˜˜ŸúBØ;¾º˜'LbQ@'=@ô5éåÔ÷ÁnðÄ0EêÙú’ZÆ~ü‹‰Âºy, ËHcŸÊÜ*¯Ü-¸ç»%Têkv‹7Pëy„Y¯aU²¹œ[È 瀂MV2Nͼs™[ó.·Dékr‹‹¥Ü¶C›bY"Ö-V2uMÀ‰ °ÝVr’¯dð`%¥‡éÑ*l‰³xÕŸÖÃâãn[Øy?6§o;žäíôía»ûاÕØÝÀþÜ6ä žIEND®B`‚omniEvents-2_6_2/doc/doxygen/a00053.html0000644000076400001440000002276410303671741020063 0ustar alexusers00000000000000 OmniEvents: OmniEvents::FilterByTCKind Class Reference

OmniEvents::FilterByTCKind Class Reference

The most basic event filter allows only events of a certain CORBA TCKind to pass. More...

#include <Filter.h>

Inheritance diagram for OmniEvents::FilterByTCKind:

Inheritance graph
[legend]
Collaboration diagram for OmniEvents::FilterByTCKind:

Collaboration graph
[legend]
List of all members.

Public Member Functions

 FilterByTCKind (CORBA::TCKind kind)
virtual ~FilterByTCKind ()
bool keep (const CORBA::Any &event) const
 Returns TRUE if the event passes the filter and FALSE if the event should be discarded.
void output (ostream &os) const

Private Attributes

CORBA::TCKind _kind

Detailed Description

The most basic event filter allows only events of a certain CORBA TCKind to pass.

Usually used to filter basic types.

Definition at line 66 of file Filter.h.


Constructor & Destructor Documentation

OmniEvents::FilterByTCKind::FilterByTCKind CORBA::TCKind  kind  )  [inline]
 

Definition at line 69 of file Filter.h.

virtual OmniEvents::FilterByTCKind::~FilterByTCKind  )  [inline, virtual]
 

Definition at line 70 of file Filter.h.


Member Function Documentation

bool OmniEvents::FilterByTCKind::keep const CORBA::Any &  event  )  const [inline, virtual]
 

Returns TRUE if the event passes the filter and FALSE if the event should be discarded.

Called by filter() once for each event.

Implements OmniEvents::Filter.

Definition at line 71 of file Filter.h.

References _kind.

void OmniEvents::FilterByTCKind::output ostream &  os  )  const [inline, virtual]
 

Implements OmniEvents::Filter.

Definition at line 76 of file Filter.h.

References _kind.


Member Data Documentation

CORBA::TCKind OmniEvents::FilterByTCKind::_kind [private]
 

Definition at line 78 of file Filter.h.

Referenced by keep(), and output().


The documentation for this class was generated from the following file:
Generated on Fri Aug 26 20:56:16 2005 for OmniEvents by  doxygen 1.4.3-20050530
omniEvents-2_6_2/doc/doxygen/a00014.html0000644000076400001440000000535110303671741020051 0ustar alexusers00000000000000 OmniEvents: Member List

OmniEvents::FilterByTCKind Member List

This is the complete list of members for OmniEvents::FilterByTCKind, including all inherited members.

_kindOmniEvents::FilterByTCKind [private]
Filter()OmniEvents::Filter [inline]
FilterByTCKind(CORBA::TCKind kind)OmniEvents::FilterByTCKind [inline]
keep(const CORBA::Any &event) const OmniEvents::FilterByTCKind [inline, virtual]
output(ostream &os) const OmniEvents::FilterByTCKind [inline, virtual]
~Filter()OmniEvents::Filter [inline, virtual]
~FilterByTCKind()OmniEvents::FilterByTCKind [inline, virtual]


Generated on Fri Aug 26 20:56:16 2005 for OmniEvents by  doxygen 1.4.3-20050530
omniEvents-2_6_2/doc/doxygen/a00311.png0000644000076400001440000000156310240451467017673 0ustar alexusers00000000000000‰PNG  IHDR¢tô»ô!PLTEþÿÿo___???ŸŸŸßßß¿¿¿ÿÿÿ/l:ZtRNS@æØfIDAThíÙÍOÛ0ðý ½î)¤(E)JQŠR”¢¥(Å×-Ò}óŸ/R|­â«)ŸÄyÙCä`XKô¿Y‡öjN!–•ëÂlÙ! ø•ßbD·Ç_¹\ìBìM—œÁ¸^޳L §¨¦ÂV͈3plÒžƒyÒŽ;Äfu< Úñ&iGÀØí”ˆ„5ê(š¢A4¥©Ø†uøj“Þ>Ë1˜˜qlÇù”’Á…7Ð/Ë1×q2!±ÏYg]¤fÙª+Ÿ°ý„ØSƒ7Щ^uNd9ºkÔçÿýâÞ©xŽ\]œ;°÷#!üB€Ÿˆ€Ê“¹%NÎ{@ÁJÅÎÄH(dK á&GP&ŠÛ“-Ë‚¸Ãöñ,ÃlíCöÆá8!ƒ‘›(Å /îc‡,wìqÏ —gmïo: ÿ\u¯B¼oq²VyŸèf­9±¬H±Y±Ñ"Å×#þl´gk…‹·IEND®B`‚omniEvents-2_6_2/doc/doxygen/a00313.png0000644000076400001440000000156310240451467017675 0ustar alexusers00000000000000‰PNG  IHDR¢tô»ô!PLTEþÿÿo___???ŸŸŸßßß¿¿¿ÿÿÿ/l:ZtRNS@æØfIDAThíÙÍOÛ0ðý ½î)¤(E)JQŠR”¢¥(Å×-Ò}óŸ/R|­â«)ŸÄyÙCä`XKô¿Y‡öjN!–•ëÂlÙ! ø•ßbD·Ç_¹\ìBìM—œÁ¸^޳L §¨¦ÂV͈3plÒžƒyÒŽ;Äfu< Úñ&iGÀØí”ˆ„5ê(š¢A4¥©Ø†uøj“Þ>Ë1˜˜qlÇù”’Á…7Ð/Ë1×q2!±ÏYg]¤fÙª+Ÿ°ý„ØSƒ7Щ^uNd9ºkÔçÿýâÞ©xŽ\]œ;°÷#!üB€Ÿˆ€Ê“¹%NÎ{@ÁJÅÎÄH(dK á&GP&ŠÛ“-Ë‚¸Ãöñ,ÃlíCöÆá8!ƒ‘›(Å /îc‡,wìqÏ —gmïo: ÿ\u¯B¼oq²VyŸèf­9±¬H±Y±Ñ"Å×#þl´gk…‹·IEND®B`‚omniEvents-2_6_2/doc/doxygen/a00057.html0000644000076400001440000000371410303671741020061 0ustar alexusers00000000000000 OmniEvents: OmniEvents::omniEventsLog::IOError Class Reference

OmniEvents::omniEventsLog::IOError Class Reference

#include <omniEventsLog.h>


Detailed Description

Definition at line 187 of file omniEventsLog.h.


The documentation for this class was generated from the following file:
Generated on Fri Aug 26 20:56:16 2005 for OmniEvents by  doxygen 1.4.3-20050530
omniEvents-2_6_2/doc/doxygen/a00054.html0000644000076400001440000003421010303671741020051 0ustar alexusers00000000000000 OmniEvents: OmniEvents::Mapper Class Reference

OmniEvents::Mapper Class Reference

A dummy servant that installs itself into the INSPOA and redirects all calls to the real destination. More...

#include <Mapper.h>

Inheritance diagram for OmniEvents::Mapper:

Inheritance graph
[legend]
Collaboration diagram for OmniEvents::Mapper:

Collaboration graph
[legend]
List of all members.

Public Member Functions

 Mapper (const char *id, CORBA::Object_ptr obj)
 ~Mapper ()
void destroy ()
CORBA::Boolean _is_a (const char *id)
CORBA::Boolean _dispatch (GIOP_S &)
void do_redir ()
string id () const

Private Attributes

CORBA::String_var id_
CORBA::Object_var obj_

Detailed Description

A dummy servant that installs itself into the INSPOA and redirects all calls to the real destination.

Copied from the omniMapper application.

Definition at line 33 of file Mapper.h.


Constructor & Destructor Documentation

OmniEvents::Mapper::Mapper const char *  id,
CORBA::Object_ptr  obj
[inline]
 

Definition at line 39 of file Mapper.h.

References OmniEvents::Servant::activateObjectWithId(), and DB.

OmniEvents::Mapper::~Mapper  )  [inline]
 

Definition at line 48 of file Mapper.h.

References DB.


Member Function Documentation

CORBA::Boolean OmniEvents::Mapper::_dispatch GIOP_S &   )  [inline]
 

Definition at line 55 of file Mapper.h.

References do_redir().

CORBA::Boolean OmniEvents::Mapper::_is_a const char *  id  )  [inline]
 

Definition at line 50 of file Mapper.h.

References do_redir().

void OmniEvents::Mapper::destroy  )  [inline]
 

Definition at line 49 of file Mapper.h.

References OmniEvents::Servant::deactivateObject().

Referenced by OmniEvents::EventChannel_i::setInsName(), and OmniEvents::EventChannel_i::~EventChannel_i().

void OmniEvents::Mapper::do_redir  )  [inline]
 

Definition at line 58 of file Mapper.h.

References DB, id_, and obj_.

Referenced by _dispatch(), and _is_a().

string OmniEvents::Mapper::id  )  const [inline]
 

Definition at line 68 of file Mapper.h.

References id_.


Member Data Documentation

CORBA::String_var OmniEvents::Mapper::id_ [private]
 

Definition at line 71 of file Mapper.h.

Referenced by do_redir(), and id().

CORBA::Object_var OmniEvents::Mapper::obj_ [private]
 

Definition at line 72 of file Mapper.h.

Referenced by do_redir().


The documentation for this class was generated from the following file:
Generated on Fri Aug 26 20:56:16 2005 for OmniEvents by  doxygen 1.4.3-20050530
omniEvents-2_6_2/doc/doxygen/a00016.html0000644000076400001440000001016410303671741020051 0ustar alexusers00000000000000 OmniEvents: Member List

OmniEvents::Mapper Member List

This is the complete list of members for OmniEvents::Mapper, including all inherited members.

_default_POA()OmniEvents::Servant [virtual]
_dispatch(GIOP_S &)OmniEvents::Mapper [inline]
_is_a(const char *id)OmniEvents::Mapper [inline]
_poaOmniEvents::Servant [protected]
activateObjectWithId(const char *oidStr)OmniEvents::Servant [protected]
deactivateObject()OmniEvents::Servant [protected]
destroy()OmniEvents::Mapper [inline]
do_redir()OmniEvents::Mapper [inline]
id() const OmniEvents::Mapper [inline]
id_OmniEvents::Mapper [private]
Mapper(const char *id, CORBA::Object_ptr obj)OmniEvents::Mapper [inline]
obj_OmniEvents::Mapper [private]
Servant(PortableServer::POA_ptr poa)OmniEvents::Servant [protected]
~Mapper()OmniEvents::Mapper [inline]
~Servant()OmniEvents::Servant [virtual]


Generated on Fri Aug 26 20:56:16 2005 for OmniEvents by  doxygen 1.4.3-20050530
omniEvents-2_6_2/doc/doxygen/a00315.png0000644000076400001440000000530110240451470017663 0ustar alexusers00000000000000‰PNG  IHDR’ß.HÏ'PLTEþÿÿo§§§˜2Í___???ŸŸŸßßß¿¿¿ÿÿÿÍ×ÇàtRNS@æØf HIDATxœíœKsÛÈÇU•cpñ9û!¶ŠGï1q¥BGkñh—åHÇ]9¡xŒYˆ€££8O)ïÚ|RYQ¬)>0*Ýð ÉÐCQÊü©ØôàÇn !ªgöØcÑÞ}Ÿ™4ÉîI“ìž4Éîé‘‘xdòçžéœÊõËI|1eùÂMõÒ$k= 6ÕK“¬õ(ØT¯ÇJRóç»F~àyW¢ƒF/ÝÒ:Ë›’N“öš÷v”|1,ö¾õIÜïœdô“ùÒžï+¦¹ð”M¦Oîöÿþ:áiº7N"ë4a}2‹E$¯ÍóòÄŽÛ—Heüš+Xn>{0v–èaº7N"í4nÇ÷E$>µc­YŒdRgã¶U黬Û*A"@óW̲^)¨\±V£âÖUØ?+­$aøp˜Ã/Î^`¿''á«ÖNqü¬ËuæÜU푃ÍדlvŠvtöÐ'A×ж㽰‹±GU4ŒÛ= ¯Ì®…Náä¿÷Gžç†žÿ\ÇvCxUC#{n±ó×kIdòãŸ[hÝá‡>lC î´XbØŒƒ³<¯- ág¬Óá›2ì4ÃNëÃvÔ©ÙɬÇÖ’¤pÊÐØCwx 'é±YL`'ºA/">š÷…;5M“¹uÈÎWa§½0¥ …¹‘ Öë¯%‘uÊíàì¡;8Ga;˜’ÀN‹½üx^¯F·šè:áobË)Ýa/q˜*£«»^4̰?¸åÐÈmVüôgl~דÈ:åvpöÈ]øÎè`SØi±~ë'»aìrþ‘Ph7îVˆ< 6ÕK“¬õ(ØT/M²Ö£`S½4ÉZ‚Mõò3|r÷dÓ'hS¥ûèí—§éÚ'ûMýiêͺWr®ÛBnH Üî„=¡G) ßåv’‰„¥pO$7Ô(’?¹²’¢î„§×7ù{žê–&¹²’äïx.šd!¹! I7™H¾¡%¹¥H®Lÿ1}Ân(Q¾c÷F7]G‚̺¥ð“õ¿ØdA!¡@e%!Ë/ŠÄâÊ\Y@”__iܰ<54A1H¼ ²“….$yêV‚òÕÈïcª$A!»ÜY¾Z¢ÜA!QyHr…2$ùê»rÞ“†$g¥Z®ü¢¼ÜY^’\ùeäê:¡œÕƒ9ò‹ð­„+odöüš^îVbOÒ"£¼$™ókv¹ï Iæ ÌFà!Éx{ýå~ÐaVåjZœ‚ß¼8¥âÖS{Ì_/œ)¿¢Üêž•¬òå´8¿yqJ7¬7H%‚Êç,A‰rkR×-;°£â”ðï'aÁPZdÊtÆÒ ~FÅ)ð0yqJTÍ’JÕèéƒbD¿!&U$‰ŠSðÁ‹Sê÷“]éƒ2{SìÖJœ¤?#áÅ)½{"Ic¶…cDÅ)øàÅ)÷3v±Ô$Ô÷)¡HHR¦—AÑgB4óOR% ÉØ[Q;œQ4$©‚Bú—â\Ds‚RÜÝSü‡A$ªÙMÒùEû'H¤óKQnÎ8“̯_Qõ—ÝÜ9©üRóVÂEG"•_Yw Îg”ŠÂP’Hüõ¨ìrg´sL7æ—²E:[vSPT†„–dCP”†„xóú ¤}ÅEK²6(*.F>«|MPˆ?šOˆ˜dMP Úž¢žé¿2(Šs‹ždeP”ŽÀ(òÕVEíŒ"'åVyH¬ˆ!üCE=ˆŠµ=ù¥>·”òË ï%!ë­$‚¢|F© IÅPÐIBJÖÀ‰e+!QC Ê.&A’iŠÎo–¦ûd›æCN²ÕéV Ò I”K“¬–&É+U$ä‹òÀ0+þ÷î´µ"úEyÓœ>ù²¼¯¹ÚtbqÉ‘Ð/ÊãÌŸ8‰ÝüØM'— ý¢F¤’„`±¡Ò$2¢YéBV*IH„‘–&‘ÍŠ0²Ò$"Z¥GVŠI¶x¡h ­0&+M"¥Gs©I²I“HI“d’&‘Òã!1T:K“HÉPé<.M"%¾‹éWÈ&å$³ZŽ/«Û‘h{$âò:©&™¸uay ½”¿3:âòzmDXžB¯-ËSèµay ½¶A"*O¡×H„å)ôÚþ]ýry ¶Or¦èöE%‰p½ž1å >‹Ò÷ÂR2T:K“HÉPé<.M"%C¥ó¸4‰” •ÎãÒŸAJI“d’&‘’&É$M"%M’Iú=^J†Jçqi)*Ç¥I¤d¨t—&‘’¡Òy\úQJ;Kä™â#£\3©4‰&Y«ÿ…Äÿº÷í^Öab·H°—ÛBá[ü=›(o?T’è¬&¦r·>nÍ;oã Êâ¦St8­~âÄ[qÃÂiêI¾T>ŸÍ;¿ò&ÍæâÙœy"ýfsñ¼Öz¶×úw´Ê _GÄ+³ƒÏë+wÒ“¼ã_sM–Ï&ötÅëïo"aOÍh•$ya¾êÖ¨IjžwèìçìÀßïCvÁ©÷ŠîÄ«ö½]tF¯íØ&^—¶÷¥Z!»Za³.+âav­c×8IuèUßO’$­2ƒ$»˜Ô7TS¥'Ÿ¾Ûïô;z’t¬Îe·ò¥8¼¼‰°ïÀã¯Ííb¹XöÀ’`³wÍ¿áa~ š¡­{ÑøíECH⇫ÌIT»£„$pùÙù-~ÅMz~«s‰¡’iš¶½6Gð+þ΃fï{< Ixvù­kóÈ]E.M£*&<»Hð,~€3fÌâ$×ϱ™xíE’oæâû'fhk{.ky’_s\šÆ4m5× ^ñq’ïÿäùžÛ I¼}QLZa³ÀkF$ÞþŠ˜ðU•¿Þý×W™^ÕŒ]8 /‘Àøê×¼n¥Q ³ëh~,4a°†fì:ÚÇ‘9yðyÏÉ%ᇶ`•¹|$øÎ»NN»„¤¾8v-]'CšëÝáØÅØeb쩃¢I܃Ã÷å„1 ¹:ðÂLInù„;áMäÁµ½ë$݋ϧÉÚ¯:½‘û¥ðÀIfòÙã! ¯øÇA,†$£þ?Iv[šd÷¤IvOšd÷ô?E¨—¥]½wíIEND®B`‚omniEvents-2_6_2/doc/doxygen/a00317.png0000644000076400001440000000675110240451471017700 0ustar alexusers00000000000000‰PNG  IHDR’:ÎãÉJ'PLTEþÿÿo§§§˜2Í___???ŸŸŸßßß¿¿¿ÿÿÿÍ×ÇàtRNS@æØf pIDATxœí¿wÛFÇÝ×—?"ï©tÊ;¿‹ÉÒÉS,–ö‹ªtœ„byæ1KÛI$V÷œœ)¢ºMˆ@a?ñHìu3»  ¹f!ŠÙ/- X,fñÁì.@r0¾ÇöE÷nûȤIvOšd÷¤IvO{FâÉ -Ó•k—“¸é”ä¦.ª—&Yk1eQ½4ÉZ‹)‹êµ¯$ ç8Üä¹¾ã\¥íä=”×Y\^”4š,o8ϽäÉ0Ù«î»ôvCï÷æ“V¸­ì7›‘U6›¯Œ~–°4ß'‘5š(÷Þ5K¿¦‘sP.ÌÁŽ^–4€5q6š¬V¡µ£»†ßWi$>.˜åÓò)ëM]Ñh½d_5ßù• 8Mý‰5aðê~Ûâ…ÏaýäjêbõU>‘5ŠåhÊ…9Üу% `M\„&«}ø]vÜ(hÏÊ+I¾lfóÁyí·¾…•—â¬õƒCœ>ìóÂ6³Çõ–gcõõ$›b9šƒraŽ“ ihëñVØK“±×Õ:L­k šœ¬ì]‘FáàFÿp=LjFßþÑÆz8«¢=6ÙÛgkIdòý›X.ÌáŽÇ.,C n4Y|ç·L˜mf:Ž•BÂg¬ÑÉ·ØØ¶'VШ) ÙËïÙ5[K²…Q†æ \˜Ã9É5[ø6¢´‚>±Áã^ØnlŽ6Úl6Ù  ½ó©hôZtéQfa^Èü»®%‘5ÊËÁ” s°#ÎÂ660'&{òëÛŠ'6Ìn´qÂ/bË]ºÇžà4UASãë`šaQÈF+½û«¯ÓIdòr0å9qe´±9 l4Ù°û;ƒÍ0wÙ §‘Ph7îVˆ,¦,ª—&Yk1eQ½4ÉZ‹)‹ê¥IÖZLYT/7Ã'w÷7}‚6×v½ýïÁvõ“ínýiê§ûtg2ÔÍAnH ÜÜ »OrppðEn#™HˆQn‰ä5 ‚äï\YIQn„w¯Ïò·<× MçÊJ’¿áP4.ÉBò‰Ô%Â)f2‘|FKrCѹ2}czŸ}¢Dù‚Ý `|"h:ô¬ ;Y¿Å&s *+ Yÿ¢èX\™# ˆú×G3,OŒS +¨ì$$N¡sIž¸§|4òÛ˜+ SȆ;ËK”Û)d30*In§Pº$_|WN§º$IN§ùv)_Ì]®÷)„30*gô`žþeäk:®œ$9ú×Ü%fbK²DFy#:³;e>qí If§,&®]!Éìá’£3kWóàüáÁ)µA{kƒ¹I2¾QŸA ÏÊfåbœ‚?<8¥/â ¶RþÈçLý+è[³ö´m¶üVœ"¾x)†¶A w§ÃC+Lø§À«ÉƒS‚h–­D@’Á)ó|RG’ 8_<8¥}+½+‹SŒàïð¸Qæ$à N¹¾%’­Þ§àÜ$Ap ¾xpÊ­Ì]¨-BùN1 É–N1(ÚLˆæù“­œô­©³"v8£hH¶r é;ÅPDÏmáÚwŠ¡ˆH¶pŠ"—=§%ýî‘âKŸT‘=q&Ù¿Tõ-BÉþePµ—ÝS€RN!þ"*:©7*Ys >™)Ñ¿>§k-!ÊgL7:EÝpg´$û—ªK és¿ú—R—?Á¼Þ)i[qÑ’¬uŠÂEüTù§¨yŠ˜dS Ú–¢~Ò¥S÷-z’•NQ:£È³/¬pŠÚEN’î”å.Q#õ=—z¹=Rú—ú¾¥„$¥ô­$¤"ßJÂ)Êg`” ’„S $¤$NÌ)…¸D IÌ)L\L‚$Ó#:]zÜ'Ûc>ä$…>n‘¿íšD¹4Éji’¼REBž”¦Ùô¯w絑Ð'å±›ÍùÊûåmåÀÔ¦‹KŽ„>)®Ø‰Í|ßM— }R<|(9•Ù ù1ÎßT<,TÜ»è“òàACÙC¨h³¯›OýçSkxR eRÌJeö/9÷Û¬3««'¡Oʃ>2üö˜)r©'Q‘”‡aY‡ýø¤ÅÎÿ^ }RN2´òŠ_Ïs©'¡Oʃ$P†«íEn HŠÐ¨]»Ë$gK·/w˜dzµ(u‡IbÒ$«¥IòJ“¬V¶Ý„äÙ™œ$Šù5J‚dC[H“Ȉ&Ó…¬T’$„‘–&‘MFYi eé‘•b’Š&‘Q†1Yi)íͤ&É&M"%M’IšDJûCb¨4—&‘’¡Òx\šDJü”¶Ï>MÊI±ïW×#Qq$éá)tRM2´SÃSè¥üÊh§‡§Ð«’Ôðz@’žB¯HRÃSèUIZx ½ I O¡WñwõËá)t*žäLÑí‹J’Ô|=SÊ >Qé{a)*Ç¥I¤d¨4—&‘’¡Òx\šDJ†JãqéÏ ¥¤I2I“HI“d’&‘’&É$}—’¡Òx\šDJ†Jãqi)*Ç¥I¤d¨4ןóʨþIš¢H”?è´õMQi%Ú’\ IwŠÄÿxïó{Y'¼Ý"Á_óg¢Ê·ävÞ=`ùŽjÖTNâU?Dló¼<åM{¦çÿIc8âï1_=ÉÙá«H€Ó0š—•ü”šÿg »×ýwe†çq*ìè?ë#w¶'ùŠÿ ³¿¢¹´ü?ëH؃fek}Ý|:áY•?ŽÿëŠÁÞ¼2ÆÆI#`B’jtîŠåÿy~Dþœ»àl'æ.þè`J²ëÑñ«J¢0 ¹Â³íóg W<y½µHÑ„gÛ¿YɱY;@ží5Ù¬] YÈgûCŒø,Ú9`Ù’Œús’ìÏg[kg?ÞVû”G¡ñ„t6íSœý!Ù“Ì1ûC¢³ùd”&‘ÐþäÀÙ’=ºƒÔ$Ù¤I¤¤I2I“HiH •ÆãÒ$R2TK“HÉÌàG­Š"ÎË”%õ)Šd!eI}”“ðð•Ð]1‘ÔGQcʯŒøµüq£bb\‹Hê£Hd)97[SËĸ‘ÔG‘T“ˆðÏ5E\Ë]'K>a^K$õQ¤‚ÆIÙĸ‘ÔG‘”“„sW‰¤>Š+ê®þŽ_ã#$*Ûá*(›Ï´§°!}/,%C¥ñ¸4‰” •ÆãÒ$R2TK“HÉPi<.ý¤”4I&i)i’LÒ$RÒ$™¤¯ñR2TK“HÉPi<.M"%C¥ñ¸4‰” •ÆãÒWF)퉿õ£@Ò$šD“h ’;›ø.cÃGcáñ”⥳ÅRÿ©;=^¹’Á¿.ì†í”ÜËËȪcw]9³ËËhÁÙ2 @´ª€S(Iÿÿ…r—ÝM%‰u¸– ƃIÉ.KbW¦u8*œQ«½ ýµcuû¬äVãЫº](­O£Öcv„¥?j¬Vân¶W…jXÖg§}¯Ò}Õ{sáVagܰœŸ¨6n(&qáÇ·J•RÅ™|ðÉ¡óóÃå?ÝÓðɨgöœžÓ?ï<ö†=K Të×Þ—`7X…jXöÓåë//ÛÝúüܧ4­Zý ¬6­BâXüèf|ÄÝîXù]$ónöá @Õíò®zãv{3ÜщÞ5sŽàªC»Úø÷1ÇŽUîbµq1½+B>:À`!NòüçªèíƒY„„÷¤G¾Å˜)H Ú ç>Çšuâ¼xûø3Çú­$ª1âc$½7§Žï\ ’jÏLñ TsAWTEï |bÿæ6¸O€d0Õ“ðY8Jr ó«W…qòZŒÃq%ÁÉÚ«ök’ j83ã¤?r,Ÿ q¾Õ“ð+ãò8™8?òIùz™»–ÇÉ)VƒÙ 9Ú8waH0wõfÎõE°Õrì#¾ š„\OâWeÝ!’Ÿ.Ø’~ôFîN“l&Ñ$šävHîŠ4ÉîI“ìž4ÉîiHþõg´$ôàpßIEND®B`‚omniEvents-2_6_2/doc/doxygen/a00056.html0000644000076400001440000013171210303671741020060 0ustar alexusers00000000000000 OmniEvents: OmniEvents::omniEventsLog Class Reference

OmniEvents::omniEventsLog Class Reference

#include <omniEventsLog.h>

Collaboration diagram for OmniEvents::omniEventsLog:

Collaboration graph
[legend]
List of all members.

Public Member Functions

 omniEventsLog (const char *logdir=NULL)
virtual ~omniEventsLog ()
bool fileExists (const char *filename) const
const char * activeFilename () const
const char * backupFilename () const
PersistNodebootstrap (int port, const char *endPointNoListen)
 Creates an initialState from its arguments.
virtual PersistNodeparse ()
 Creates an initialState from the logfile.
void incarnateFactory (PersistNode *initialState)
 Constructs the EventChannelFactory from the information in the initialState parameter.
virtual void runWorker ()
 Kicks off the worker thread that periodically checkpoints the persistency logfile.
EventChannelFactory_ifactory ()
 accessor method
void checkpoint (void)
 Entry point used by the omniEventsLogWorker to perform checkpointing.
virtual void output (ostream &os)

Static Public Member Functions

static bool exists ()
 Library code may create Event Service objects without the need for persistency.

Protected Member Functions

virtual void initializeFileNames (const char *logdir)
 Sets the values of 'active', 'backup' and 'checkpoint' file names.
void setFilename (char *&filename, const char *logdir, const char *sep, const char *logname, const char *hostname, const char *ext)
 Helper function that sets the value of the first parameter to the concatenation of all the subsequent parameters.
virtual void openOfstream (ofstream &s, const char *filename, int flags=0, int *fd=NULL)
 Helper method that opens an output file stream using whatever method is available.

Protected Attributes

ofstream _logstream
char * _activeFilename
char * _backupFilename
char * _checkpointFilename
omni_thread * _workerThread
 In charge of checkpoints.
EventChannelFactory_i_factory
bool _checkpointNeeded
omni_mutex _lock

Static Protected Attributes

static omniEventsLogtheLog = NULL

Friends

class WriteLock

Classes

class  IOError

Detailed Description

Definition at line 137 of file omniEventsLog.h.


Constructor & Destructor Documentation

OmniEvents::omniEventsLog::omniEventsLog const char *  logdir = NULL  ) 
 

Definition at line 283 of file omniEventsLog.cc.

References initializeFileNames(), and theLog.

OmniEvents::omniEventsLog::~omniEventsLog  )  [virtual]
 

Definition at line 298 of file omniEventsLog.cc.

References _factory, DB, and theLog.


Member Function Documentation

const char* OmniEvents::omniEventsLog::activeFilename  )  const [inline]
 

Definition at line 150 of file omniEventsLog.h.

References _activeFilename.

const char* OmniEvents::omniEventsLog::backupFilename  )  const [inline]
 

Definition at line 151 of file omniEventsLog.h.

References _backupFilename.

PersistNode * OmniEvents::omniEventsLog::bootstrap int  port,
const char *  endPointNoListen
 

Creates an initialState from its arguments.

Used when the server is cold started with no saved state. Aborts with an error if there are any logfiles in the log directory.

Definition at line 324 of file omniEventsLog.cc.

References OmniEvents::PersistNode::addattr(), and OmniEvents::PersistNode::addnode().

void OmniEvents::omniEventsLog::checkpoint void   ) 
 

Entry point used by the omniEventsLogWorker to perform checkpointing.

The active logfile is moved to backup, and a new active logfile is created.

Definition at line 433 of file omniEventsLog.cc.

References _activeFilename, _backupFilename, _checkpointFilename, _checkpointNeeded, _lock, _logstream, DB, mutex, OMNIEVENTS_LOG_CHECKPOINT_PERIOD, openOfstream(), output(), OmniEvents::timestamp::t(), and OmniEvents::ts.

Referenced by runWorker().

static bool OmniEvents::omniEventsLog::exists  )  [inline, static]
 

Library code may create Event Service objects without the need for persistency.

We use this method to check for the log object, before attempting to write out state changes.

Definition at line 144 of file omniEventsLog.h.

References theLog.

Referenced by OmniEvents::ProxyPushSupplier_i::callback(), OmniEvents::ProxyPushConsumer_i::Connection::callback(), OmniEvents::ProxyPullSupplier_i::connect_pull_consumer(), OmniEvents::ProxyPullConsumer_i::connect_pull_supplier(), OmniEvents::ProxyPushSupplier_i::connect_push_consumer(), OmniEvents::ProxyPushConsumer_i::connect_push_supplier(), OmniEvents::ProxyPushConsumer_i::disconnect_push_consumer(), OmniEvents::Proxy::eraseKey(), and OmniEvents::EventChannel_i::run_undetached().

EventChannelFactory_i* OmniEvents::omniEventsLog::factory  )  [inline]
 

accessor method

Definition at line 176 of file omniEventsLog.h.

References _factory.

bool OmniEvents::omniEventsLog::fileExists const char *  filename  )  const
 

Definition at line 317 of file omniEventsLog.cc.

References STRUCT_STAT.

Referenced by incarnateFactory(), and parse().

void OmniEvents::omniEventsLog::incarnateFactory PersistNode initialState  ) 
 

Constructs the EventChannelFactory from the information in the initialState parameter.

Definition at line 379 of file omniEventsLog.cc.

References _activeFilename, _factory, _logstream, OmniEvents::PersistNode::child(), fileExists(), OMNIEVENTS_LOGDIR_ENV_VAR, and openOfstream().

void OmniEvents::omniEventsLog::initializeFileNames const char *  logdir  )  [protected, virtual]
 

Sets the values of 'active', 'backup' and 'checkpoint' file names.

The files are placed in the log file directory, that is specified by:

  • command line parameter -l, OR ELSE
  • OMNIEVENTS_LOGDIR_ENV_VAR env. var. (default `OMNIEVENTS_LOGDIR'), OR ELSE
  • OMNIEVENTS_LOG_DEFAULT_LOCATION (set in defaults.h), OR ELSE
  • Unix: /var/lib/omniEvents, Win32: C:, VMS: []

The current hostname is incorporated into the file names.

Definition at line 611 of file omniEventsLog.cc.

References _activeFilename, _backupFilename, _checkpointFilename, gethostname(), MAXHOSTNAMELEN, OMNIEVENTS_LOG_DEFAULT_LOCATION, OMNIEVENTS_LOGDIR_ENV_VAR, setFilename(), and VMS_SEMICOLON.

Referenced by omniEventsLog().

void OmniEvents::omniEventsLog::openOfstream ofstream &  s,
const char *  filename,
int  flags = 0,
int *  fd = NULL
[protected, virtual]
 

Helper method that opens an output file stream using whatever method is available.

Available flags are:

  • FLAG_TRUNCATE
  • FLAG_APPEND
  • FLAG_SYNC

Parameters:
s reference to the ofstream object.
filename the name of the file to open.
flags see description for available mode flags.
fd reference to a file descriptor. If used, this parameter is set to the fd that was opened, if any.

Definition at line 685 of file omniEventsLog.cc.

Referenced by checkpoint(), and incarnateFactory().

void OmniEvents::omniEventsLog::output ostream &  os  )  [virtual]
 

Definition at line 426 of file omniEventsLog.cc.

References _factory, and OmniEvents::EventChannelFactory_i::output().

Referenced by checkpoint().

PersistNode * OmniEvents::omniEventsLog::parse  )  [virtual]
 

Creates an initialState from the logfile.

Used when the server is warm started. Aborts with an error if there is no logfile in the log directory.

Definition at line 337 of file omniEventsLog.cc.

References _activeFilename, _backupFilename, OmniEvents::PersistNode::attrLong(), OmniEvents::PersistNode::child(), and fileExists().

void OmniEvents::omniEventsLog::runWorker  )  [virtual]
 

Kicks off the worker thread that periodically checkpoints the persistency logfile.

Definition at line 414 of file omniEventsLog.cc.

References _factory, _workerThread, and checkpoint().

void OmniEvents::omniEventsLog::setFilename char *&  filename,
const char *  logdir,
const char *  sep,
const char *  logname,
const char *  hostname,
const char *  ext
[protected]
 

Helper function that sets the value of the first parameter to the concatenation of all the subsequent parameters.

Parameters:
filename  OUT parameter.

Definition at line 661 of file omniEventsLog.cc.

Referenced by initializeFileNames().


Friends And Related Function Documentation

friend class WriteLock [friend]
 

Definition at line 217 of file omniEventsLog.h.


Member Data Documentation

char* OmniEvents::omniEventsLog::_activeFilename [protected]
 

Definition at line 209 of file omniEventsLog.h.

Referenced by activeFilename(), checkpoint(), incarnateFactory(), initializeFileNames(), and parse().

char* OmniEvents::omniEventsLog::_backupFilename [protected]
 

Definition at line 210 of file omniEventsLog.h.

Referenced by backupFilename(), checkpoint(), initializeFileNames(), and parse().

char* OmniEvents::omniEventsLog::_checkpointFilename [protected]
 

Definition at line 211 of file omniEventsLog.h.

Referenced by checkpoint(), and initializeFileNames().

bool OmniEvents::omniEventsLog::_checkpointNeeded [protected]
 

Definition at line 214 of file omniEventsLog.h.

Referenced by checkpoint(), and OmniEvents::WriteLock::~WriteLock().

EventChannelFactory_i* OmniEvents::omniEventsLog::_factory [protected]
 

Definition at line 213 of file omniEventsLog.h.

Referenced by factory(), incarnateFactory(), output(), runWorker(), and ~omniEventsLog().

omni_mutex OmniEvents::omniEventsLog::_lock [protected]
 

Definition at line 215 of file omniEventsLog.h.

Referenced by checkpoint().

ofstream OmniEvents::omniEventsLog::_logstream [protected]
 

Definition at line 208 of file omniEventsLog.h.

Referenced by checkpoint(), and incarnateFactory().

omni_thread* OmniEvents::omniEventsLog::_workerThread [protected]
 

In charge of checkpoints.

Definition at line 212 of file omniEventsLog.h.

Referenced by runWorker().

omniEventsLog * OmniEvents::omniEventsLog::theLog = NULL [static, protected]
 

Definition at line 281 of file omniEventsLog.cc.

Referenced by exists(), omniEventsLog(), ~omniEventsLog(), and OmniEvents::WriteLock::~WriteLock().


The documentation for this class was generated from the following files:
Generated on Fri Aug 26 20:56:16 2005 for OmniEvents by  doxygen 1.4.3-20050530
omniEvents-2_6_2/doc/doxygen/a00018.html0000644000076400001440000001500510303671741020052 0ustar alexusers00000000000000 OmniEvents: Member List

OmniEvents::omniEventsLog Member List

This is the complete list of members for OmniEvents::omniEventsLog, including all inherited members.

_activeFilenameOmniEvents::omniEventsLog [protected]
_backupFilenameOmniEvents::omniEventsLog [protected]
_checkpointFilenameOmniEvents::omniEventsLog [protected]
_checkpointNeededOmniEvents::omniEventsLog [protected]
_factoryOmniEvents::omniEventsLog [protected]
_lockOmniEvents::omniEventsLog [protected]
_logstreamOmniEvents::omniEventsLog [protected]
_workerThreadOmniEvents::omniEventsLog [protected]
activeFilename() const OmniEvents::omniEventsLog [inline]
backupFilename() const OmniEvents::omniEventsLog [inline]
bootstrap(int port, const char *endPointNoListen)OmniEvents::omniEventsLog
checkpoint(void)OmniEvents::omniEventsLog
exists()OmniEvents::omniEventsLog [inline, static]
factory()OmniEvents::omniEventsLog [inline]
fileExists(const char *filename) const OmniEvents::omniEventsLog
incarnateFactory(PersistNode *initialState)OmniEvents::omniEventsLog
initializeFileNames(const char *logdir)OmniEvents::omniEventsLog [protected, virtual]
omniEventsLog(const char *logdir=NULL)OmniEvents::omniEventsLog
openOfstream(ofstream &s, const char *filename, int flags=0, int *fd=NULL)OmniEvents::omniEventsLog [protected, virtual]
output(ostream &os)OmniEvents::omniEventsLog [virtual]
parse()OmniEvents::omniEventsLog [virtual]
runWorker()OmniEvents::omniEventsLog [virtual]
setFilename(char *&filename, const char *logdir, const char *sep, const char *logname, const char *hostname, const char *ext)OmniEvents::omniEventsLog [protected]
theLogOmniEvents::omniEventsLog [protected, static]
WriteLock classOmniEvents::omniEventsLog [friend]
~omniEventsLog()OmniEvents::omniEventsLog [virtual]


Generated on Fri Aug 26 20:56:16 2005 for OmniEvents by  doxygen 1.4.3-20050530
omniEvents-2_6_2/doc/doxygen/a00319.png0000644000076400001440000000107610240451471017675 0ustar alexusers00000000000000‰PNG  IHDRÃ*üòÓ!PLTEþÿÿ˜2Í___???ŸŸŸßßß¿¿¿ÿÿÿ‘P_tRNS@æØfËIDATX…íÖ½nÂ0àtíÔ¬Ÿc¡ñ¢cª•DI”Ä¿ ~ô"ˆ/M».¾Šé•®ÿÁFé'JɳSi,éibÀßwÏ… 3gÊ)e^¸]×vÊÔ¨¦ÃµsH„/¤éî&2(!™!Œ7ƒ4OAlŒ4ØØÉ7SÈ Ó<Á£J²Q¬5䭰£¶gÆÕbÇÀÂ9;à¹7¨9çÙ\ZÔ¥®È£ûر ¢þÁƒ…w\ÅóŒºQ‡ÅˆI„<’'j?`±ßöÁ—y´®ÈÛ)ÂaN Ú(I@òYÃZ´{NÝ.jÉâ‘Hg„®¡q†è}ö ¹Q«nY˜<$ˆ»Wk›G]ì…w†è«6J´ñ€ð»60 ’°üö6 e×b¢"ÄaÌ„XZØ‹Ž$æ²"‰éd qLù†À5Ÿâ•ÚïÅš¸jn'Àdžž(‘‡Äþ‰’wÔÞ{‘F^ˆžÑBÈ‹@Aô _ápX‘¨#B/œø.ž <*žÀˆŠ'NÇ%ý,‰’Èø›´mðKuIEND®B`‚omniEvents-2_6_2/doc/doxygen/a00058.html0000644000076400001440000003021210303671741020053 0ustar alexusers00000000000000 OmniEvents: OmniEvents::omniEventsLogWorker Class Reference

OmniEvents::omniEventsLogWorker Class Reference

#include <omniEventsLog.h>

Collaboration diagram for OmniEvents::omniEventsLogWorker:

Collaboration graph
[legend]
List of all members.

Public Types

typedef void(omniEventsLog::* Method )(void)

Public Member Functions

 omniEventsLogWorker (omniEventsLog *object, Method method, priority_t priority=PRIORITY_NORMAL)
void * run_undetached (void *)
 ~omniEventsLogWorker ()

Private Member Functions

 omniEventsLogWorker ()
 No default construction allowed.

Private Attributes

omniEventsLog_object
Method _method

Detailed Description

Definition at line 220 of file omniEventsLog.h.


Member Typedef Documentation

typedef void(omniEventsLog::* OmniEvents::omniEventsLogWorker::Method)(void)
 

Definition at line 223 of file omniEventsLog.h.


Constructor & Destructor Documentation

OmniEvents::omniEventsLogWorker::omniEventsLogWorker omniEventsLog object,
Method  method,
priority_t  priority = PRIORITY_NORMAL
 

Definition at line 721 of file omniEventsLog.cc.

References _method, _object, and DB.

OmniEvents::omniEventsLogWorker::~omniEventsLogWorker  ) 
 

Definition at line 757 of file omniEventsLog.cc.

References DB.

OmniEvents::omniEventsLogWorker::omniEventsLogWorker  )  [private]
 

No default construction allowed.


Member Function Documentation

void * OmniEvents::omniEventsLogWorker::run_undetached void *   ) 
 

Definition at line 736 of file omniEventsLog.cc.

References _method, _object, DB, IF_OMNIORB4, and NP_MINORSTRING.


Member Data Documentation

Method OmniEvents::omniEventsLogWorker::_method [private]
 

Definition at line 233 of file omniEventsLog.h.

Referenced by omniEventsLogWorker(), and run_undetached().

omniEventsLog* OmniEvents::omniEventsLogWorker::_object [private]
 

Definition at line 232 of file omniEventsLog.h.

Referenced by omniEventsLogWorker(), and run_undetached().


The documentation for this class was generated from the following files:
Generated on Fri Aug 26 20:56:16 2005 for OmniEvents by  doxygen 1.4.3-20050530
omniEvents-2_6_2/doc/doxygen/a00020.html0000644000076400001440000000533010303671741020043 0ustar alexusers00000000000000 OmniEvents: Member List

OmniEvents::omniEventsLogWorker Member List

This is the complete list of members for OmniEvents::omniEventsLogWorker, including all inherited members.

_methodOmniEvents::omniEventsLogWorker [private]
_objectOmniEvents::omniEventsLogWorker [private]
Method typedefOmniEvents::omniEventsLogWorker
omniEventsLogWorker(omniEventsLog *object, Method method, priority_t priority=PRIORITY_NORMAL)OmniEvents::omniEventsLogWorker
omniEventsLogWorker()OmniEvents::omniEventsLogWorker [private]
run_undetached(void *)OmniEvents::omniEventsLogWorker
~omniEventsLogWorker()OmniEvents::omniEventsLogWorker


Generated on Fri Aug 26 20:56:16 2005 for OmniEvents by  doxygen 1.4.3-20050530
omniEvents-2_6_2/doc/doxygen/a00321.png0000644000076400001440000000671410240451471017672 0ustar alexusers00000000000000‰PNG  IHDR\¿óÀF!PLTEþÿÿo___???ŸŸŸßßß¿¿¿ÿÿÿ/l:ZtRNS@æØf YIDATxœíKWãÆÇóØf{93±—3¹{ɈYN&s—ø"-'d.xÉŒ¼‹²[;l,[ý)oU·@’ñc½ŠS0Ç.u·ªë§~H@÷w’EHßeík1.Rb\¤Ä¸H‰q‘ã"%ÆEJŒ‹”(âòDlʺ*ëŠ$®–”’)1.Rb\¤Ä¸H‰q‘]\n¥k6C´¼8/õ‰uµ¢$B¢‹ëlçä&° ¥]¯‡=ûP?/?)â&\!ÑÅõ^}²£‰?:Òm=)—DHtq5¥¼p{ÖGQóªmè À}ѵe©-{Vq:øËj‚Í–=L Æ~sOX×’OPI„D—oÜö¸=v¼ò¥Æ5nF;gÅÎÄ‘¶W«Ê|U»Ÿ%»ªüä/%&çÖ•žB¸üòLÏTS†}_óÌñ6*Àå'ÿRQƾôÌ}W&&g\é)Ô†p!w†4„h)\“_Uº4:m½q&?—WÊ ¦³¸>ý ]Sã’U•ΖBÇûe¯á1®”Lä#¸êuÓkÂ0uZÔaC]»_ÏËÚ( ¯Q`\)+¸Mž»Ê£L;jBXy˜­o¾QîÊá`»…É+<3LMüŠ”)1.Rb\¤Ä¸H‰q‘ã"%ÆEJÏú³ÐøÏB)é.kѫŵõ}Ö$!ÆEJŒ‹”^/®­¬=HB¯×ã¢$Àõ{CÆEJ¯×ã¢$Àõ/ÆEJŒ‹”^)®»­×9x1.Rz¥¸ø‰<11.Rb\¤Ä¸H‰q‘ã"%ÆEJŒ‹”)1.Rb\¤Ä¸H‰q‘ã"%ÆEJŒ‹”)1.Rb\¤Ä¸H‰q‘ã"%ÆEJŒ‹”)1.Rb\¤Ä¸H‰q‘ã"%ÆEJŒ‹”)1.Rb\¤Ä¸²Õ³–t}±œ¬«÷<1.Æ•ˆ—d\Œ+!1.ɸWBÒ¸‰¹…ëöæ…_ʱ1L„è/!θb–ŽõMõú,r[LooÃQ<6½=<Žò³D‹q¥'ëßÔw i4êÓàÍ gRoWzÒ±>â`02ßÉ’³3„Îøô ƒ©¨ ÅÈ,ØîólS…Ë9¨ÔÆ£}ù›hY£Kñ§×1O0™ØqK=·lõ #½?e\IHゟÎ`Øv<çøHãêË^õ¦0îzbê”vD ¾¦¢yéœ÷.š…7Öx+¦ÓÁÔs G“ »ÞÛÛ†õÛíïbRa\I(„ËÃ/Çr,5Õ¨Lû%Çê\ªFå”ü¡JN,§âX]ãæDØ•1ýØ©zhf˜ÌLOÕÛŸÄ=w†‰(Ô†pá`õ±%ZR W÷ëùã †Ç^Û½ Ýöw½îÿj ×á_Ó©pn¥tF;Ƴ‚©Æ,®Ÿþ-1°4.±Â¥Z×ÑýýÚÝäö†Éî…j]ž¸e\ )˜ÈGpÝÞZΩèU›ÝVÆ.Ä…cן­Šp+bÚûq5®öT]_WB n“gÆ®ãž!Dm¬¦ƒ`fˆ¸Àܾìâ34·î:F÷­ê3‹¿Õ3ÃcÆ•6yõñ©i¦•!1®˜µ®ÁéSÛn#·ÛŒ+fm€ëhÎcÅž¼`\ ŠŸÈKÆÅ¸ã’Œ‹q%¤(®¶¶¶^gëInÆ•¨Ôž4Ë6}Zøg¡+sæYTqIóÅ›-þ+^Æ•VÐZ¶Íõª¬9Q\w+C¾%Y^$qÝA¬W|Yo‡°¿¿£Œ .çÛŽ/?¬wU&Œ®‡ß-Ÿ+¬¤)ŒŒ¨ázŒïŠÿßZµ+ùÝc:RÀházþôûù›È“F ×:÷JëLýVô«y\ëu½a27ÍTp­Ûe­ûÜ‚0"¸Ö_^°Í5‰!Œ®õ/ý—ìJNaÎA×Ëú©—,Ôÿ9Gîq½4„/[W#ïCXÎq½¼ƒzé2(ù–o\Œ&/_µ&ÏCXžqmt¡o°ÈPŽçùŵa¯´ÑšP¹–W\!.á•S`ùÄÃx¿ñŠk¹–G\±Üþİ@^oÃò‡+¦«:–õ s7«Ï®Øº ˜–ŸÌ°|áŠq¼ˆmµÐ\Ë®X÷wͰáŠw&ëZ¼¹™$æWÜ—p¼K'çeVŸ\ñ÷7q¯tY}.p%18Ä¿0y†°àJ& I¬#Ÿ=°Ìq%ÕÉ$³ìÖCXƸ’ÂÚ¥!ã9G¦¸’¬{b›jd ,C\ÉÖ;Á=P2–®¤ëœè–5™ËWòõMx‡¡Œ€e‚+º&¾!T&À2À•N=SØ¿+`©ãJ«Ž©l·–:°”q¥÷÷)펷âŸjãVª¸Ò¬Zz›¦Y«q¥{¦¹÷dz5K WÚGÓÝ*4­Ú¥„+ýgÙiïìšN SÁ•Å/Ò߈7Z¦€+›ße±orò5MWV¿ÒËf›ë¤k‹¸’\6u­%=C~mìÓ?›öf\¬aºJŽ+Ù+âÙò¼ÏFaò±ô+ãZ"ƵBŒk¹×1®b\ËŸ–ˆq­ãZ®(®Sqr¸óiÏËö¹Ãu ŒÃ%çëJy¿¤æOq¹•®Ø ¼ÿ)ÎË)DÇœgpCžXWá#èåsœ™ƒkÓ©\ðÚ„+>>Ï£.÷[}× Ž½z=ôQN>xõÿ~ˆzã îU½ÐX|>aJc-\g;'7m(íz=œáñ˜]?/GŠò ŠÑc†,>Ë™§¸6Ô¸îw"Ç]g(ŸçQרŒß¡“˜‘´á1{D×l3êåöZ¸Þ«ï@v4ƒ¼q™#Ê€¸é¶BG}_áÌS\Hj\PðYèhàù*"¸¦ 9iÕ^¡'{VÚ:œ~OæH½j[ZÍê á™ø'ï7G¢\•Û£²k£ÎiÃ(Ã… e,al5•U•…@žÞ‘ÜwÆÖµÄ«ƒš,]Û²Ô†#O¤ßƒýÂíYE sÈç¾èª|Ò×Lϯ†€·æ ÷¶&›Ó¸à–‘²ú%~Â<ïÆ;Ž $gºö´—Þø¨ÿ4@!\Ž«bã™jªÑ°ïk˜ÇöÏ¡$D×ôàÒž´Î®¡\+ƒK~©Ô—vë½T§TÎH=˜çÌ"\#‚nO¶{ê#¸ ¯G…ÇkáÁDàQS½ÅÀÍÁ¥ÛzȸxFoWˆöæüoEYõÑpÒ¤|g(CÐN]Âä—ÃG\XÚÎï?;“ŸKº¸ØK؆-{.Õ†paB8£Î£Ï!õ‚~8l;è´2ø¸jÐ ÑIt ^य़‘Ê‹yÎ,ê 7‘14J… {p躈 è ˜·áÚµ´7…kûá6g†¶š)«*Ñ·M Ó¶[XJáê=ëÈ…¸ð6yfì*Ãu[V‚™¡º¨Ká\Ỻ¹ Ljkh}÷‘™açÁ ^ÌwfÁmò&òçÊò‡A?Ff†eÄõ¬x¤g†å¸^¤QqƒÌc3r»×C¨wóŒêy²»šgâzµ8@† ÝÎÓç™Ã1à:[òc¥F'‘ûÎï×”Ûœk]…kÆ™¸p-ÐJ\?Ö#ÏbÀ5™ûÔìÙ*… Æ…ë²8×\ö_Ït&&\K4ò_‹„ŸQJ~"¿Ty"Ÿ¹×r1®%b\+ĸ–‹q-Q~q%÷‡§ë)äZ| y“µ+ZNæ‹ ±Öã"%ÆEJŒ‹”)1.Rú?²¦\¶“j¸IEND®B`‚omniEvents-2_6_2/doc/doxygen/a00059.html0000644000076400001440000007711210303671741020066 0ustar alexusers00000000000000 OmniEvents: OmniEvents::Orb Class Reference

OmniEvents::Orb Class Reference

Singleton class that owns the ORB and various initial references. More...

#include <Orb.h>

Collaboration diagram for OmniEvents::Orb:

Collaboration graph
[legend]
List of all members.

Public Member Functions

 ~Orb ()
 Destructor needs to be public to keep MS VC++6 happy.
void resolveInitialReferences ()
 _orb must already have been initialized before this method is called.
void run ()
 Parks the main thread, but also picks up (and ignores) responses from orphan requests.
void deferredRequest (CORBA::Request_ptr req, Callback *callback=NULL)
 Adopts the request and then stores it in _deferredRequests.
void cancelCallback (const Callback *callback)
 Called by Callback objects when they are destroyed.
void reportObjectFailure (const char *here, CORBA::Object_ptr obj, CORBA::Exception *ex)
 Called by omniEvents when an object has failed (fatal exception).
void shutdown (int)
 Sets _shutdownRequested.

Static Public Member Functions

static Orbinst ()

Public Attributes

CORBA::ORB_var _orb
PortableServer::POA_var _RootPOA
PortableServer::POA_var _omniINSPOA
CosNaming::NamingContext_var _NameService

Private Types

typedef pair< CORBA::Request_ptr,
Callback * > 
RequestCallback_t

Private Member Functions

 Orb ()

Private Attributes

list< RequestCallback_t_deferredRequests
omni_mutex _deferredRequestsLock
bool _shutdownRequested

Static Private Attributes

static Orb _inst

Friends

void OmniEvents_Orb_shutdown (int)
 Signal handler, sets Orb::_shutdownRequested.

Detailed Description

Singleton class that owns the ORB and various initial references.

Definition at line 69 of file Orb.h.


Member Typedef Documentation

typedef pair<CORBA::Request_ptr,Callback*> OmniEvents::Orb::RequestCallback_t [private]
 

Definition at line 73 of file Orb.h.


Constructor & Destructor Documentation

OmniEvents::Orb::Orb  )  [inline, private]
 

Definition at line 77 of file Orb.h.

OmniEvents::Orb::~Orb  ) 
 

Destructor needs to be public to keep MS VC++6 happy.

Definition at line 42 of file Orb.cc.

References _deferredRequests, and _deferredRequestsLock.


Member Function Documentation

void OmniEvents::Orb::cancelCallback const Callback callback  ) 
 

Called by Callback objects when they are destroyed.

void OmniEvents::Orb::deferredRequest CORBA::Request_ptr  req,
Callback callback = NULL
 

Adopts the request and then stores it in _deferredRequests.

run() later picks up the responses and forwards them to 'callback', if it is set.

Definition at line 187 of file Orb.cc.

References _deferredRequests, _deferredRequestsLock, and _shutdownRequested.

Referenced by OmniEvents::ProxyPullConsumer_i::collect(), OmniEvents::ProxyPushSupplier_i::connect_push_consumer(), OmniEvents::ProxyPushConsumer_i::connect_push_supplier(), OmniEvents::ProxyPushConsumer_i::disconnect(), OmniEvents::ProxyPullConsumer_i::disconnect_pull_consumer(), OmniEvents::ProxyPullSupplier_i::disconnect_pull_supplier(), OmniEvents::ProxyPushConsumer_i::disconnect_push_consumer(), OmniEvents::ProxyPushSupplier_i::disconnect_push_supplier(), OmniEvents::ProxyPushSupplier_i::trigger(), and OmniEvents::Proxy::~Proxy().

static Orb& OmniEvents::Orb::inst  )  [inline, static]
 

Definition at line 81 of file Orb.h.

References _inst.

Referenced by OmniEvents::Proxy::basicOutput(), OmniEvents::ProxyPullConsumer_i::collect(), OmniEvents::ProxyPushSupplier_i::connect_push_consumer(), OmniEvents::ProxyPushConsumer_i::connect_push_supplier(), OmniEvents::EventChannel_i::createPoa(), OmniEvents::ProxyPushConsumer_i::currentObjectId(), OmniEvents::ProxyPushConsumer_i::disconnect(), OmniEvents::ProxyPullConsumer_i::disconnect_pull_consumer(), OmniEvents::ProxyPullSupplier_i::disconnect_pull_supplier(), OmniEvents::ProxyPushConsumer_i::disconnect_push_consumer(), OmniEvents::ProxyPushSupplier_i::disconnect_push_supplier(), OmniEvents::EventChannelFactory_i::join_channel(), main(), myShutdown(), OmniEvents_Orb_shutdown(), OmniEvents::ProxyPushConsumer_i::Connection::output(), reportObjectFailure(), OmniEvents::string_to_(), OmniEvents::ProxyPushSupplier_i::trigger(), and OmniEvents::Proxy::~Proxy().

void OmniEvents::Orb::reportObjectFailure const char *  here,
CORBA::Object_ptr  obj,
CORBA::Exception *  ex
 

Called by omniEvents when an object has failed (fatal exception).

The failure is logged as an omniORB message with traceLevel zero.

Definition at line 204 of file Orb.cc.

References _orb, inst(), and NP_MINORSTRING.

Referenced by OmniEvents::ProxyPullConsumer_i::collect(), and OmniEvents::ProxyPushSupplier_i::trigger().

void OmniEvents::Orb::resolveInitialReferences  ) 
 

_orb must already have been initialized before this method is called.

Definition at line 55 of file Orb.cc.

References _NameService, _omniINSPOA, _orb, _RootPOA, DB, IF_OMNIORB4, IFELSE_OMNIORB4, and NP_MINORSTRING.

void OmniEvents::Orb::run  ) 
 

Parks the main thread, but also picks up (and ignores) responses from orphan requests.

If _shutdownRequested is set, then run() shuts down the orb and returns.

Definition at line 124 of file Orb.cc.

References _deferredRequests, _deferredRequestsLock, _shutdownRequested, DB, and IF_OMNIORB4.

void OmniEvents::Orb::shutdown int   )  [inline]
 

Sets _shutdownRequested.

The parameter is ignored. This method may be used as a signal handler.

Definition at line 126 of file Orb.h.

References _shutdownRequested.


Friends And Related Function Documentation

void OmniEvents_Orb_shutdown int   )  [friend]
 

Signal handler, sets Orb::_shutdownRequested.

The parameter is ignored. This method may be used as a signal handler.

Definition at line 311 of file main.cc.


Member Data Documentation

list<RequestCallback_t> OmniEvents::Orb::_deferredRequests [private]
 

Definition at line 74 of file Orb.h.

Referenced by deferredRequest(), run(), and ~Orb().

omni_mutex OmniEvents::Orb::_deferredRequestsLock [private]
 

Definition at line 75 of file Orb.h.

Referenced by deferredRequest(), run(), and ~Orb().

Orb OmniEvents::Orb::_inst [static, private]
 

Definition at line 39 of file Orb.cc.

Referenced by inst().

CosNaming::NamingContext_var OmniEvents::Orb::_NameService
 

Definition at line 91 of file Orb.h.

Referenced by resolveInitialReferences().

PortableServer::POA_var OmniEvents::Orb::_omniINSPOA
 

Definition at line 90 of file Orb.h.

Referenced by OmniEvents::EventChannelFactory_i::join_channel(), and resolveInitialReferences().

CORBA::ORB_var OmniEvents::Orb::_orb
 

Definition at line 88 of file Orb.h.

Referenced by OmniEvents::Proxy::basicOutput(), OmniEvents::ProxyPushConsumer_i::Connection::output(), reportObjectFailure(), resolveInitialReferences(), and OmniEvents::string_to_().

PortableServer::POA_var OmniEvents::Orb::_RootPOA
 

Definition at line 89 of file Orb.h.

Referenced by OmniEvents::EventChannel_i::createPoa(), and resolveInitialReferences().

bool OmniEvents::Orb::_shutdownRequested [private]
 

Definition at line 76 of file Orb.h.

Referenced by deferredRequest(), run(), and shutdown().


The documentation for this class was generated from the following files:
Generated on Fri Aug 26 20:56:16 2005 for OmniEvents by  doxygen 1.4.3-20050530
omniEvents-2_6_2/doc/doxygen/a00022.html0000644000076400001440000001123410303671741020045 0ustar alexusers00000000000000 OmniEvents: Member List

OmniEvents::Orb Member List

This is the complete list of members for OmniEvents::Orb, including all inherited members.

_deferredRequestsOmniEvents::Orb [private]
_deferredRequestsLockOmniEvents::Orb [private]
_instOmniEvents::Orb [private, static]
_NameServiceOmniEvents::Orb
_omniINSPOAOmniEvents::Orb
_orbOmniEvents::Orb
_RootPOAOmniEvents::Orb
_shutdownRequestedOmniEvents::Orb [private]
cancelCallback(const Callback *callback)OmniEvents::Orb
deferredRequest(CORBA::Request_ptr req, Callback *callback=NULL)OmniEvents::Orb
inst()OmniEvents::Orb [inline, static]
OmniEvents_Orb_shutdown(int)OmniEvents::Orb [friend]
Orb()OmniEvents::Orb [inline, private]
reportObjectFailure(const char *here, CORBA::Object_ptr obj, CORBA::Exception *ex)OmniEvents::Orb
RequestCallback_t typedefOmniEvents::Orb [private]
resolveInitialReferences()OmniEvents::Orb
run()OmniEvents::Orb
shutdown(int)OmniEvents::Orb [inline]
~Orb()OmniEvents::Orb


Generated on Fri Aug 26 20:56:16 2005 for OmniEvents by  doxygen 1.4.3-20050530
omniEvents-2_6_2/doc/doxygen/a00323.png0000644000076400001440000000201110240451472017657 0ustar alexusers00000000000000‰PNG  IHDRÌt;•ÀÙ!PLTEþÿÿo___???ŸŸŸßßß¿¿¿ÿÿÿ/l:ZtRNS@æØf–IDAThíÙOsÚFð|ÛsZG:¦Sl8¶‰]qLStŒ ±tÄvÓ¤=êz{ HB»Ÿ²oW¶A6ÎL\»+<#½}«»û™áöL1ŠQÌ}[kßd¶öþËwRŒbVufF`/bÇòÔWÝêØý|æ¤v$>ˆ»uèDuz¡ýJÀÅiaR ddˆS@»m‰ÁÙ„/XÌyV0‡ŒëMÂ~ÌÓÞ _§Ï%|2‰ 9áܺÚÍ%pƒñOÛÀÀ)÷ŒœÍ ~Â@‚«€ó“i•³Ø]ÍÈ‚^fÇÌÀ½éLrµ7’Á½™ì'@;8·—x—ŒþYîÍX[ÍÈgyoR8ÂYò¶?I•& ïb‰„2Í:.໢ÏËv-Yi)ÜÁlÔBíVÈwãÒogÛ`FÆm¹ÑÞ2¬zì™óÒäIÿ#PÌZÌ÷oŠQÌÃ0ÿfîw °ntŠIEND®B`‚omniEvents-2_6_2/doc/doxygen/a00060.html0000644000076400001440000007046610303671741020063 0ustar alexusers00000000000000 OmniEvents: OmniEvents::PersistNode Class Reference

OmniEvents::PersistNode Class Reference

#include <PersistNode.h>

List of all members.

Public Member Functions

 PersistNode ()
 Create an empty node.
 PersistNode (istream &is)
 Create root node and read tree from stream.
 ~PersistNode ()
 Free node and all its children.
void output (ostream &os, string name) const
bool readnode (istream &is)
bool readtoken (istream &is, string &tok)
PersistNodeaddnode (const string &name)
void delnode (const string &name)
void addattr (const string &keyvalue)
void addattr (const string &key, long value)
bool hasAttr (const string &key) const
string attrString (const string &key, const string &fallback="") const
long attrLong (const string &key, long fallback=0) const
PersistNodechild (const string &key) const

Public Attributes

map< string, PersistNode * > _child
map< string, string > _attr

Friends

class omniEventsLog


Detailed Description

Definition at line 48 of file PersistNode.h.


Constructor & Destructor Documentation

OmniEvents::PersistNode::PersistNode  )  [inline]
 

Create an empty node.

Definition at line 51 of file PersistNode.h.

Referenced by addnode().

OmniEvents::PersistNode::PersistNode istream &  is  ) 
 

Create root node and read tree from stream.

Definition at line 32 of file PersistNode.cc.

References readnode().

OmniEvents::PersistNode::~PersistNode  ) 
 

Free node and all its children.

Definition at line 37 of file PersistNode.cc.

References _child.


Member Function Documentation

void OmniEvents::PersistNode::addattr const string &  key,
long  value
 

Definition at line 143 of file PersistNode.cc.

References _attr.

void OmniEvents::PersistNode::addattr const string &  keyvalue  ) 
 

Definition at line 137 of file PersistNode.cc.

References _attr.

Referenced by OmniEvents::omniEventsLog::bootstrap(), and readnode().

PersistNode * OmniEvents::PersistNode::addnode const string &  name  ) 
 

Definition at line 97 of file PersistNode.cc.

References _child, addnode(), and PersistNode().

Referenced by addnode(), OmniEvents::omniEventsLog::bootstrap(), and readnode().

long OmniEvents::PersistNode::attrLong const string &  key,
long  fallback = 0
const
 

Definition at line 162 of file PersistNode.cc.

References _attr.

Referenced by OmniEvents::ConsumerAdmin_i::ConsumerAdmin_i(), OmniEvents::EventChannel_i::cyclePeriod_ns(), OmniEvents::EventChannel_i::maxNumProxies(), OmniEvents::EventChannel_i::maxQueueLength(), OmniEvents::omniEventsLog::parse(), OmniEvents::EventChannel_i::pullRetryPeriod_ms(), and OmniEvents::ProxyPushSupplier_i::reincarnate().

string OmniEvents::PersistNode::attrString const string &  key,
const string &  fallback = ""
const
 

Definition at line 154 of file PersistNode.cc.

References _attr.

Referenced by OmniEvents::EventChannel_i::activate(), OmniEvents::ConsumerAdmin_i::ConsumerAdmin_i(), OmniEvents::ProxyPushSupplier_i::reincarnate(), OmniEvents::ProxyPullSupplier_i::reincarnate(), and OmniEvents::ProxyPullConsumer_i::reincarnate().

PersistNode * OmniEvents::PersistNode::child const string &  key  )  const
 

Definition at line 170 of file PersistNode.cc.

References _child.

Referenced by OmniEvents::EventChannel_i::activate(), OmniEvents::omniEventsLog::incarnateFactory(), OmniEvents::omniEventsLog::parse(), OmniEvents::SupplierAdmin_i::reincarnate(), and OmniEvents::ConsumerAdmin_i::reincarnate().

void OmniEvents::PersistNode::delnode const string &  name  ) 
 

Definition at line 118 of file PersistNode.cc.

References _child.

Referenced by readnode().

bool OmniEvents::PersistNode::hasAttr const string &  key  )  const
 

Definition at line 150 of file PersistNode.cc.

References _attr.

Referenced by OmniEvents::ConsumerAdmin_i::ConsumerAdmin_i().

void OmniEvents::PersistNode::output ostream &  os,
string  name
const
 

Definition at line 43 of file PersistNode.cc.

References _attr, and _child.

Referenced by OmniEvents::EventChannel_i::output().

bool OmniEvents::PersistNode::readnode istream &  is  )  [inline]
 

Definition at line 66 of file PersistNode.cc.

References addattr(), addnode(), delnode(), and readtoken().

Referenced by PersistNode().

bool OmniEvents::PersistNode::readtoken istream &  is,
string &  tok
[inline]
 

Definition at line 83 of file PersistNode.cc.

Referenced by readnode().


Friends And Related Function Documentation

friend class omniEventsLog [friend]
 

Definition at line 74 of file PersistNode.h.


Member Data Documentation

map<string,string> OmniEvents::PersistNode::_attr
 

Definition at line 72 of file PersistNode.h.

Referenced by OmniEvents::EventChannel_i::activate(), addattr(), attrLong(), attrString(), hasAttr(), and output().

map<string,PersistNode*> OmniEvents::PersistNode::_child
 

Definition at line 71 of file PersistNode.h.

Referenced by addnode(), child(), delnode(), OmniEvents::EventChannelFactory_i::EventChannelFactory_i(), output(), OmniEvents::SupplierAdmin_i::reincarnate(), OmniEvents::ProxyPushConsumer_i::reincarnate(), OmniEvents::ProxyManager::reincarnate(), OmniEvents::ConsumerAdmin_i::reincarnate(), and ~PersistNode().


The documentation for this class was generated from the following files:
Generated on Fri Aug 26 20:56:16 2005 for OmniEvents by  doxygen 1.4.3-20050530
omniEvents-2_6_2/doc/doxygen/a00023.html0000644000076400001440000001103110303671741020041 0ustar alexusers00000000000000 OmniEvents: Member List

OmniEvents::PersistNode Member List

This is the complete list of members for OmniEvents::PersistNode, including all inherited members.

_attrOmniEvents::PersistNode
_childOmniEvents::PersistNode
addattr(const string &keyvalue)OmniEvents::PersistNode
addattr(const string &key, long value)OmniEvents::PersistNode
addnode(const string &name)OmniEvents::PersistNode
attrLong(const string &key, long fallback=0) const OmniEvents::PersistNode
attrString(const string &key, const string &fallback="") const OmniEvents::PersistNode
child(const string &key) const OmniEvents::PersistNode
delnode(const string &name)OmniEvents::PersistNode
hasAttr(const string &key) const OmniEvents::PersistNode
omniEventsLog classOmniEvents::PersistNode [friend]
output(ostream &os, string name) const OmniEvents::PersistNode
PersistNode()OmniEvents::PersistNode [inline]
PersistNode(istream &is)OmniEvents::PersistNode
readnode(istream &is)OmniEvents::PersistNode [inline]
readtoken(istream &is, string &tok)OmniEvents::PersistNode [inline]
~PersistNode()OmniEvents::PersistNode


Generated on Fri Aug 26 20:56:16 2005 for OmniEvents by  doxygen 1.4.3-20050530
omniEvents-2_6_2/doc/doxygen/a00061.html0000644000076400001440000004622410303671741020057 0ustar alexusers00000000000000 OmniEvents: OmniEvents::Proxy Class Reference

OmniEvents::Proxy Class Reference

Base class for three of the four Proxy servants. More...

#include <ProxyManager.h>

Inheritance diagram for OmniEvents::Proxy:

Inheritance graph
[legend]
Collaboration diagram for OmniEvents::Proxy:

Collaboration graph
[legend]
List of all members.

Public Member Functions

virtual ~Proxy ()
virtual void reincarnate (const string &oid, const PersistNode &node)=0
 Re-create a servant from information saved in the log file.
virtual void output (ostream &os)=0
 Save this object's state to a stream.

Protected Member Functions

 Proxy (PortableServer::POA_ptr poa)
void keyOutput (ostream &os, const char *name)
 Helper method for constructing persistency output.
void eraseKey (const char *name)
 Helper method for constructing persistency output.
void basicOutput (ostream &os, const char *name, CORBA::Object_ptr target=CORBA::Object::_nil(), const char *extraAttributes=NULL)
 Helper method for constructing persistency output.

Protected Attributes

CORBA::Request_var _req

Private Member Functions

 Proxy (const Proxy &)
 NO IMPLEMENTATION.

Detailed Description

Base class for three of the four Proxy servants.

Proxy servants are stored in a ProxyManager. There is one Proxy servant for each CORBA proxy object. (Compare with ProxyPushConsumer_i, where all objects are implemented by a single servant.)

Definition at line 104 of file ProxyManager.h.


Constructor & Destructor Documentation

OmniEvents::Proxy::~Proxy  )  [virtual]
 

Definition at line 163 of file ProxyManager.cc.

References _req, OmniEvents::Orb::deferredRequest(), and OmniEvents::Orb::inst().

OmniEvents::Proxy::Proxy PortableServer::POA_ptr  poa  )  [protected]
 

Definition at line 172 of file ProxyManager.cc.

OmniEvents::Proxy::Proxy const Proxy  )  [private]
 

NO IMPLEMENTATION.


Member Function Documentation

void OmniEvents::Proxy::basicOutput ostream &  os,
const char *  name,
CORBA::Object_ptr  target = CORBA::Object::_nil(),
const char *  extraAttributes = NULL
[protected]
 

Helper method for constructing persistency output.

Definition at line 201 of file ProxyManager.cc.

References OmniEvents::Orb::_orb, OmniEvents::Orb::inst(), and keyOutput().

Referenced by OmniEvents::ProxyPushSupplier_i::output(), OmniEvents::ProxyPullSupplier_i::output(), and OmniEvents::ProxyPullConsumer_i::output().

void OmniEvents::Proxy::eraseKey const char *  name  )  [protected]
 

Helper method for constructing persistency output.

Definition at line 189 of file ProxyManager.cc.

References OmniEvents::omniEventsLog::exists(), keyOutput(), and OmniEvents::WriteLock::os.

Referenced by OmniEvents::ProxyPullConsumer_i::collect(), OmniEvents::ProxyPullConsumer_i::disconnect_pull_consumer(), OmniEvents::ProxyPullSupplier_i::disconnect_pull_supplier(), and OmniEvents::ProxyPushSupplier_i::disconnect_push_supplier().

void OmniEvents::Proxy::keyOutput ostream &  os,
const char *  name
[protected]
 

Helper method for constructing persistency output.

Definition at line 179 of file ProxyManager.cc.

References OmniEvents::Servant::_poa.

Referenced by basicOutput(), and eraseKey().

virtual void OmniEvents::Proxy::output ostream &  os  )  [pure virtual]
 

Save this object's state to a stream.

Implemented in OmniEvents::ProxyPullConsumer_i, OmniEvents::ProxyPullSupplier_i, and OmniEvents::ProxyPushSupplier_i.

virtual void OmniEvents::Proxy::reincarnate const string &  oid,
const PersistNode node
[pure virtual]
 

Re-create a servant from information saved in the log file.

Implemented in OmniEvents::ProxyPullConsumer_i, OmniEvents::ProxyPullSupplier_i, and OmniEvents::ProxyPushSupplier_i.

Referenced by OmniEvents::ProxyManager::reincarnate().


Member Data Documentation

CORBA::Request_var OmniEvents::Proxy::_req [protected]
 

Definition at line 128 of file ProxyManager.h.

Referenced by OmniEvents::ProxyPullConsumer_i::collect(), OmniEvents::ProxyPullSupplier_i::connect_pull_consumer(), OmniEvents::ProxyPullConsumer_i::connect_pull_supplier(), OmniEvents::ProxyPushSupplier_i::connect_push_consumer(), OmniEvents::ProxyPullConsumer_i::triggerRequest(), and ~Proxy().


The documentation for this class was generated from the following files:
Generated on Fri Aug 26 20:56:16 2005 for OmniEvents by  doxygen 1.4.3-20050530
omniEvents-2_6_2/doc/doxygen/a00025.html0000644000076400001440000001054310303671741020052 0ustar alexusers00000000000000 OmniEvents: Member List

OmniEvents::Proxy Member List

This is the complete list of members for OmniEvents::Proxy, including all inherited members.

_default_POA()OmniEvents::Servant [virtual]
_poaOmniEvents::Servant [protected]
_reqOmniEvents::Proxy [protected]
activateObjectWithId(const char *oidStr)OmniEvents::Servant [protected]
basicOutput(ostream &os, const char *name, CORBA::Object_ptr target=CORBA::Object::_nil(), const char *extraAttributes=NULL)OmniEvents::Proxy [protected]
deactivateObject()OmniEvents::Servant [protected]
eraseKey(const char *name)OmniEvents::Proxy [protected]
keyOutput(ostream &os, const char *name)OmniEvents::Proxy [protected]
output(ostream &os)=0OmniEvents::Proxy [pure virtual]
Proxy(PortableServer::POA_ptr poa)OmniEvents::Proxy [protected]
Proxy(const Proxy &)OmniEvents::Proxy [private]
reincarnate(const string &oid, const PersistNode &node)=0OmniEvents::Proxy [pure virtual]
Servant(PortableServer::POA_ptr poa)OmniEvents::Servant [protected]
~Proxy()OmniEvents::Proxy [virtual]
~Servant()OmniEvents::Servant [virtual]


Generated on Fri Aug 26 20:56:16 2005 for OmniEvents by  doxygen 1.4.3-20050530
omniEvents-2_6_2/doc/doxygen/a00325.png0000644000076400001440000000513010240451472017666 0ustar alexusers00000000000000‰PNG  IHDRÜ¿?x‡!PLTEþÿÿo___???ŸŸŸßßß¿¿¿ÿÿÿ/l:ZtRNS@æØf åIDATxœíMwÚH†û/x9³î“³tf\®JJ?Q ~ªúüXBÜ BÜ BÜ BÜ BÜ BÜ BÜ Ò7ñ¤©êPv¥%n G’$Ä *Ä *Ä *Ä *Ä *}q‡Í‘·”Mëjûö¾²?g$¤/îÞùÕ}Ü6£n·›Üi³íU÷¦ñdˆûäHI_ÜÏÅO,w{§Í¯> 'C¸É‘4’¾¸û”Þ†cûÂëö€Fð[-ti}@Çvm9ùÃî³6—Žùάñ±ÿ’ÿµ¿P¶ûrb%FÒHúâöÙp Ÿ4î"Ü´æç½ÚpáS—tÚ´ÃníÑ{ÊGV›¾#µ;ÊwÇìήnŸßˆILq¨´Üob-žÔ ÷j÷MÑøH‰ù:¤†ÉwGÜÙ•(& Üœà™A ÏsîůoÅ~–ôQãü™¿ø¥Ž¸s*>Tîâ~÷ÛšnÚû¹”í!ƒ× bÄSñDp w·k’>+Ó×µ¨˜XQí~ñé¦5Ò‰E¬SÄSñiÎNínÌ6 Š Is=3™Ù®é :›üìðÝ›83É,<‰âââââââU¦õ|Åõ@jZõ(¤£Å}ò÷ªA!nP!nP/A+î)â†Ã}ŒÕqƒêXqŸ nH1ÜÇX¼7¨7¨Ž÷ôä8‹7âÕ‘âÆw…¸A…¸A…¸A…¸A…¸A…¸A…¸A…¸A…¸A…¸A…¸A…¸A…¸A…¸A…¸A…¸A…¸A…¸A…¸A…¸A…¸A…¸A…¸A…¸A…¸A…¸A…¸A…¸A…¸A…¸A…¸A…¸A…¸A…¸A…¸eªøeÎ6ò«Ža7¨7¨7¨7¨7¨´Æ=±vŒÏá‹0žîKi`?mEÜÙ%€Ý·¿ôb|oùðä¹Ù¶|x{‰¸ËHû]üÄZnó\Æw&{2EÜÙ%€]{Þ›ÉÜ<£uÿ|ÆŠ ãûx:Yz™77OÝð•yÍÚ–·ÿ¦Ù †ÆàîwϱwN `,eýÉl8ÿ²áûqûþ4oé×Ͻ:»-½þ3¾íŸ^ÜÛo¼`vçUŒ›ð›oû¶8T6—ußÞ‰¤öëëCåÂö›¾=2î¯<·y…¸ó*.& ܼX_8žC©!p>ÝlŠ8ß>!âÿIw^m•»¸ÿóoÏ÷&v„Û;OàÙýÑ}¸DÜy%€ñ‰àî‡Û¿öÆíþiTLšëÚÍqóÚý?§é…MÄW?ÍÙ©Ý—cÃó:˜ŽXñÌ„ãf̓»¡á½Ç‰`n=FgÖâέâ´'׈;·Šãn­ßVAÜÙU÷Fˆ;»7¨7¨7¨7¸NVÚ»qÿÇz¦i]4ÐàÞ¿ñOQ!Ð>x™"Ä]TÓ4r‡pë½²·Î¸Sóôà–)fw1f)yšrU(ÞKWàºâžr^)U!í"\¢›žEOÜÓÖô0Ò´«BEݦ:×÷TÊGæS/Â5]ï#ñ1É‘†¸3QÊ6ýÐ.Áõà QÆéÇT3ÞºáÎZ²Îö4+(šáÎúêÏq2£UAÑ wöÙržsG\#ÜùNMò|ÑOŸ“mpçE’ï{•º×w~y¿Æªp-p©®ù¿5¬ppš;ù’võ“”êqLºB߉¯|’R5î .APq‚WŒ»xôEW|¨6Á+Å]&ôâ lT™àUâ.w‰õL*Lðêp—œ—•Z>¦²¯ wé +·ZOUê©wùhË.ŽTME©·ŒP˯EUE‚W[Jœ–þª ÁáqKzëBÊJkà [ZFÉYØú Œ[^t²Ö„­( ¸e†&oÙFȇÄ-5.‰«d&8nÉAI]”,ÁÁpËŽHî°P „[~8²—Ü…IpÜ b‘¾Â1H‚CàVò7Y JüíX=nEA(Y¿[9pÕ¸• h¹tÅÀÕâVX•­N¯ô˜©·ÊG®îb*ßGQˆ[íëRåµÔ½(•áV=¯R{© U©¢ ·ò³ÕWQ€ܧ Ê/ä¢$¸AÞ³¸nނТ7Ì» —)’ ǽg©ñ:É»”N1û¯…zåõýú·b6‡¼nÉOa%Ãþ|WÞˆÔqƒz#nPoÄ ê¸A½7¨wŒ;lŽÌx“Áש¬íëäyCs_Cè| +ÝÒˆ­×’geÞò c—õ]é¾Q/šÑ;ÆÝ;¿ºwŸQ·ÛMößls»7-ßU·÷ìÃã¾Çšwc½–<ûWÛÛ Z‹©)òŒhFï÷sñ“nkðøW—&ž¸DwwŒÃz¶ {Ÿ†Nb‹AŸJºïÚ(›wŒ»Oém8¶/¼iØîÌè[-ti}@Çvm9ùÃî³6WØ[«> œYë95LW„Jºì?6F—Ö‡”ОX¼UŒÈa}hJ1‘a?ÄÛ Ö©Á_Ьû#úp1)ëkò8YÏlÞ1nö Á ðIã.ò œ 5?ïÕ† Ÿº¤Ó¦vséu‹¼¿¹®õÌ[ú³hXÅËÇå[øãÀá­bD>y›|ÖŸ„-þ=z/Bu?Sö…Ì»‹ÃÉAÜe}M'ë™Í{·ÏoÄ$¦8fXî·1ƒ–xvI'êäy#“XÄ\8½/ti} Ü| a,žíîjÄ E¬ïã.iO?6;Ý4Ø]V?_²úùÒˆŒÓq—õåqrÜÙ¼·OsvŠXcîP>Ñà¾ÍøÍ}Yó¬8ôEô¼Ï&—ÝõiŸ™˜âˆ-ZùˆQ[*nö3ûO~wkv0¤é¸ËúšÑ ÌÌæ]ö$þ¬`?I'Ó{íyx;“dß Þ%q‡ý‚儽ß^=îÃa«Å}W˾N ëµäÛ7VÿÖ{%ÞQê»Ç;4¾#*Ä *Ä *Ä *Ä *_ŧ¨2¢höà»ò®zÁLˆTˆTˆTˆTˆTÄïˆX71JÿIEND®B`‚omniEvents-2_6_2/doc/doxygen/a00327.png0000644000076400001440000000153010240451473017671 0ustar alexusers00000000000000‰PNG  IHDR¢tô»ô!PLTEþÿÿo___???ŸŸŸßßß¿¿¿ÿÿÿ/l:ZtRNS@æØfåIDAThíÙÍSÚ@pÿ®=·ÕäØÎ rÔQ‹ÇÖZâ±C£ÉQí9Z§$¹ÈÇËMóûþʾM€€Mk˰œÉî¾ü|ûvů5,»­ Qˆÿ›¥5,ú¥%(Äå[°—MÅ>è-z(®yr11þ©ÖôlNfª:ÓÅѤVOvîI“Ù91¨óWÖ˜>÷Ì´ËOÙ9qÔÁ¡¥5mÉFÛ”iÕ´š€Ìš=4»M¯ÃtºŽù§§Áö…;M›Ý"ã7š¬È ö‡~*6ñß«W¬~IYØ‘!]殞 îSÿ 7ôyøÂSùå “ìŒËô]ê&©éöx…Ã×v2ØA'<Öc‡‡?°ê‘‚‚·~ à¥âÅu‡ÇE”z:ˆï4¼ØÉ“¹#F»ušTS±YãMÐÒA<ü„.æ‹Éé™UUE¯C%ÛNE7­cÐ¥Ó“ "ë¢{›/&'|¾Ž}¬ñm­s/tÇ{^=ÄÀBéêÝEbMˆB|ºXä{ûï¿ú  H»)XX¬¼Z±R²x³bÁB¾œXy±`!_L¼©^ö‹‰ÏñN!D! QˆB¢…(D!®¼ø¤¿ýOÿâ*‹]lg£˜Ûœg›ÅDï›qdf!’o3]p&߸þ^L´þš‰1ç1³«˜è4` YÕ@ Ð%Z5g`™6J~õôV5nø&¿H [6*UX·o”+úôÁ,©.Õ!°T¬Â&|6¾úÊ¥ôµ>ôéÆûÃÆãÌÞ8h½ËGDà×FÉ΄¾yNÍ4µ`º¾6„4¼ç©[Ðr¶YõŒH9ÚÌãÿJÄý“Æ´ 4Oq2ÀG둹#öÏ``¤b£¯eb’ã‰{oòÅäôÌŠ†a@Ü :ž¥b8©c"RÝZ~+_LNø|#8¢ÜQážf{ÍE^§³µÄj¶T¶ø«Q²8˜|é/í»Ùª‰å5!®ŽøÅjr·X)pIEND®B`‚omniEvents-2_6_2/doc/doxygen/a00062.html0000644000076400001440000004660210303671741020060 0ustar alexusers00000000000000 OmniEvents: OmniEvents::ProxyManager Class Reference

OmniEvents::ProxyManager Class Reference

Base class for ServantActivator classes that manage Proxy servants. More...

#include <ProxyManager.h>

Inheritance diagram for OmniEvents::ProxyManager:

Inheritance graph
[legend]
Collaboration diagram for OmniEvents::ProxyManager:

Collaboration graph
[legend]
List of all members.

Public Member Functions

void etherealize (const PortableServer::ObjectId &oid, PortableServer::POA_ptr adapter, PortableServer::Servant serv, CORBA::Boolean cleanup_in_progress, CORBA::Boolean remaining_activations)
 Implements etherealize() method from ServantActivator interface.
void reincarnate (const PersistNode &node)
 Re-create servants from information saved in the log file.
void output (ostream &os)
 Save this object's state to a stream.

Protected Member Functions

 ProxyManager (PortableServer::POA_ptr poa)
virtual ~ProxyManager ()
void activate (const char *name)
 Creates the Proxy-type's POA, and registers this object as its ServantManager.

Protected Attributes

set< Proxy * > _servants
 The set of all active Proxies in this object's _managedPoa.
PortableServer::POA_var _managedPoa
 The POA owned & managed by this object.

Detailed Description

Base class for ServantActivator classes that manage Proxy servants.

Each ProxyManager manages its own POA (_managedPoa), with policies: PERSISTENT, USER_ID, NO_IMPLICIT_ACTIVATION, USE_SERVANT_MANAGER, SINGLE_THREAD_MODEL. This POA is only used to contain objects of a single Proxy type. Specific subclasses must implement incarnate() & createObject() methods.

Definition at line 57 of file ProxyManager.h.


Constructor & Destructor Documentation

OmniEvents::ProxyManager::ProxyManager PortableServer::POA_ptr  poa  )  [protected]
 

Parameters:
poa parent POA.

Definition at line 96 of file ProxyManager.cc.

OmniEvents::ProxyManager::~ProxyManager  )  [protected, virtual]
 

Definition at line 152 of file ProxyManager.cc.


Member Function Documentation

void OmniEvents::ProxyManager::activate const char *  name  )  [protected]
 

Creates the Proxy-type's POA, and registers this object as its ServantManager.

Parameters:
name e.g. "ProxyPushSupplier".

Definition at line 103 of file ProxyManager.cc.

References _managedPoa, OmniEvents::Servant::_poa, OmniEvents::Servant::activateObjectWithId(), and DB.

Referenced by OmniEvents::ProxyPullConsumerManager::ProxyPullConsumerManager(), OmniEvents::ProxyPullSupplierManager::ProxyPullSupplierManager(), and OmniEvents::ProxyPushSupplierManager::ProxyPushSupplierManager().

void OmniEvents::ProxyManager::etherealize const PortableServer::ObjectId &  oid,
PortableServer::POA_ptr  adapter,
PortableServer::Servant  serv,
CORBA::Boolean  cleanup_in_progress,
CORBA::Boolean  remaining_activations
 

Implements etherealize() method from ServantActivator interface.

Reimplemented in OmniEvents::ProxyPushSupplierManager.

Definition at line 41 of file ProxyManager.cc.

References _servants, and DB.

void OmniEvents::ProxyManager::output ostream &  os  ) 
 

Save this object's state to a stream.

Definition at line 87 of file ProxyManager.cc.

References _servants.

Referenced by OmniEvents::SupplierAdmin_i::output(), and OmniEvents::ConsumerAdmin_i::output().

void OmniEvents::ProxyManager::reincarnate const PersistNode node  ) 
 

Re-create servants from information saved in the log file.

Definition at line 60 of file ProxyManager.cc.

References OmniEvents::PersistNode::_child, _managedPoa, _servants, DB, and OmniEvents::Proxy::reincarnate().

Referenced by OmniEvents::SupplierAdmin_i::reincarnate(), and OmniEvents::ConsumerAdmin_i::reincarnate().


Member Data Documentation

PortableServer::POA_var OmniEvents::ProxyManager::_managedPoa [protected]
 

The POA owned & managed by this object.

Don't confuse it with _poa (inherited from class Servant) which points to the POA in which THIS object resides.

Definition at line 95 of file ProxyManager.h.

Referenced by activate(), OmniEvents::ProxyPushSupplierManager::createObject(), OmniEvents::ProxyPushSupplierManager::incarnate(), OmniEvents::ProxyPullSupplierManager::incarnate(), OmniEvents::ProxyPullConsumerManager::incarnate(), and reincarnate().

set<Proxy*> OmniEvents::ProxyManager::_servants [protected]
 

The set of all active Proxies in this object's _managedPoa.

Definition at line 90 of file ProxyManager.h.

Referenced by OmniEvents::ProxyPullConsumerManager::collect(), OmniEvents::ProxyPushSupplierManager::disconnect(), OmniEvents::ProxyPullSupplierManager::disconnect(), OmniEvents::ProxyPullConsumerManager::disconnect(), OmniEvents::ProxyPushSupplierManager::etherealize(), etherealize(), OmniEvents::ProxyPushSupplierManager::incarnate(), OmniEvents::ProxyPullSupplierManager::incarnate(), OmniEvents::ProxyPullConsumerManager::incarnate(), output(), reincarnate(), OmniEvents::ProxyPushSupplierManager::run_undetached(), and OmniEvents::ProxyPullConsumerManager::triggerRequest().


The documentation for this class was generated from the following files:
Generated on Fri Aug 26 20:56:16 2005 for OmniEvents by  doxygen 1.4.3-20050530
omniEvents-2_6_2/doc/doxygen/a00024.html0000644000076400001440000001026310303671741020050 0ustar alexusers00000000000000 OmniEvents: Member List

OmniEvents::ProxyManager Member List

This is the complete list of members for OmniEvents::ProxyManager, including all inherited members.

_default_POA()OmniEvents::Servant [virtual]
_managedPoaOmniEvents::ProxyManager [protected]
_poaOmniEvents::Servant [protected]
_servantsOmniEvents::ProxyManager [protected]
activate(const char *name)OmniEvents::ProxyManager [protected]
activateObjectWithId(const char *oidStr)OmniEvents::Servant [protected]
deactivateObject()OmniEvents::Servant [protected]
etherealize(const PortableServer::ObjectId &oid, PortableServer::POA_ptr adapter, PortableServer::Servant serv, CORBA::Boolean cleanup_in_progress, CORBA::Boolean remaining_activations)OmniEvents::ProxyManager
output(ostream &os)OmniEvents::ProxyManager
ProxyManager(PortableServer::POA_ptr poa)OmniEvents::ProxyManager [protected]
reincarnate(const PersistNode &node)OmniEvents::ProxyManager
Servant(PortableServer::POA_ptr poa)OmniEvents::Servant [protected]
~ProxyManager()OmniEvents::ProxyManager [protected, virtual]
~Servant()OmniEvents::Servant [virtual]


Generated on Fri Aug 26 20:56:16 2005 for OmniEvents by  doxygen 1.4.3-20050530
omniEvents-2_6_2/doc/doxygen/a00329.png0000644000076400001440000000324010240451473017673 0ustar alexusers00000000000000‰PNG  IHDR¿5Å$!PLTEþÿÿo___???ŸŸŸßßß¿¿¿ÿÿÿ/l:ZtRNS@æØf-IDATxœíšMwÚF†ó¼l·uãH˶‡–Nl/Ç–6Á––‰“Ë4  % Ñ*A 4÷WöÎH6&¾JŽâ΋íƒîŒ^=¾sG:îÈ—>?øÑKR@”%Déçb™Éψ¶I+´¾“¢ô3ÕÙÁ,úœ±þªÉá®§ß PøocלÅtÞhÌBtu0.œ?¹áp5š%PP?3qsaÎõ!¸¸áp5š%PÔ†©eTlÍ»§ã’á5öÀ0¦óJzŠ×æ&¾j‚ƒÍK=t*^MLïu²ââ¡Wõ* ¦~ Tcø³ñž—Z˜{bM_½}Sñø¨?õÅôMd(ñrÀ‘EírsŽebL;™=ݶe° θf†Ž˜¾¹%›Âký1/ºüÐó&˜¸8pùdc@²¨—€&û%lÄ@í‰%æa܈ƒpü\ØÜöó@F¼6–Ë^ äÆ5tpÛË ð¸£Éãb `Wl¨’À»É.ƒG^)B`öþo1}ìn( ) õ%DéçJõð—;ü ˜J¿fc“З­l|¥ ²)¢Ì€¶ò”ÍšÝ[ /yʤˆ¥¬€¶¶2*¢{ ”¿§½"¥€() J ˆ’¢¤€() J ˆ’¢¤€() J ˆ’¢¤€() J ˆÒÿˆcWiªoéïoZûŸ½U ˆ’¢t€R6œb¼°8(o(mÃ)o,5œrB¶ Ô §¢7oadF›ÈPê†SävVªÀvP ~ ã*T¼š˜6é}„âGŠ}àÍöZ@iN¹>…aû¯Æ^ððÓÔqÃ4 èO}9MoêNP¸ÐùázJÛpŠñÙEÙ »5èD5~¦?7ÀÄTᤌ‹¶x;9âíõ€Ò6œÊbÂqœ§è9åçGû²óTLš>-&8cÕb™ª¨Ó5œ‚ì2m†thþ†3ë‚âm.3¡¹.PÚ†Ókh|⊞Snîâ?⎠íTÖP]_(mÃi„ám,úÀB Vͧbläm[r— ÈÞóÍ<:ýFhb† w tѾ Îæo°w 4]õ¸+Í”F ˆ’¢ô@yû ø­ÊÛgû6Vfã£:=)Ýg |5VæHµžRÊPî+s”¿‡«"¥€() J ˆ’¢¤€() J ˆ’¢¤€() J ˆ’¢¤€() J ˆ’¢”)з~{¸)) J ˆ’¢´ÔælÌã>ÀhÕY¯¬ XGË[.8=~©¼—Ý“ÞlPó»Ý¹Cæ\øÝo’y§]½|Ë{ÌJdWÅÏÜuz “¯ñµ?øÑKR@”%Déçb™Éψ¶I+´¾“¢ô3ÕÙÁ,úœ±þªÉá®§ß PøocלÅtÞhÌBtu0.œ?¹áp5š%PP?3qsaÎõ!¸¸áp5š%PÔ†©eTlÍ»§ã’á5öÀ0¦óJzŠ×æ&¾j‚ƒÍK=t*^MLïu²ââ¡Wõ* ¦~ Tcø³ñž—Z˜{bM_½}Sñø¨?õÅôMd(ñrÀ‘EírsŽebL;™=ݶe° θf†Ž˜¾¹%›Âký1/ºüÐó&˜¸8pùdc@²¨—€&û%lÄ@í‰%æa܈ƒpü\ØÜöó@F¼6–Ë^ äÆ5tpÛË ð¸£Éãb `Wl¨’À»É.ƒG^)B`öþo1}ìn( ) õ%DéçJõð—;ü ˜J¿fc“З­l|¥ ²)¢Ì€¶ò”ÍšÝ[ /yʤˆ¥¬€¶¶2*¢{ ”¿§½"¥€() J ˆ’¢¤€() J ˆ’¢¤€() J ˆ’¢¤€() J ˆÒÿˆcWiªoéïoZûŸ½U ˆ’¢t€R6œb¼°8(o(mÃ)o,5œrB¶ Ô §¢7oadF›ÈPê†SävVªÀvP ~ ã*T¼š˜6é}„âGŠ}àÍöZ@iN¹>…aû¯Æ^ððÓÔqÃ4 èO}9MoêNP¸ÐùázJÛpŠñÙEÙ »5èD5~¦?7ÀÄTᤌ‹¶x;9âíõ€Ò6œÊbÂqœ§è9åçGû²óTLš>-&8cÕb™ª¨Ó5œ‚ì2m†thþ†3ë‚âm.3¡¹.PÚ†Ókh|⊞Snîâ?⎠íTÖP]_(mÃi„ám,úÀB Vͧbläm[r— ÈÞóÍ<:ýFhb† w tѾ Îæo°w 4]õ¸+Í”F ˆ’¢ô@yû ø­ÊÛgû6Vfã£:=)Ýg |5VæHµžRÊPî+s”¿‡«"¥€() J ˆ’¢¤€() J ˆ’¢¤€() J ˆ’¢¤€() J ˆ’¢”)з~{¸)) J ˆ’¢´ÔælÌã>ÀhÕY¯¬ XGË[.8=~©¼—Ý“ÞlPó»Ý¹Cæ\øÝo’y§]½|Ë{ÌJdWÅÏÜuz “¯ñµ OmniEvents: OmniEvents::ProxyPullConsumer_i Class Reference

OmniEvents::ProxyPullConsumer_i Class Reference

Implementation of the ProxyPullConsumer interface. More...

#include <ProxyPullConsumer.h>

Inheritance diagram for OmniEvents::ProxyPullConsumer_i:

Inheritance graph
[legend]
Collaboration diagram for OmniEvents::ProxyPullConsumer_i:

Collaboration graph
[legend]
List of all members.

Public Member Functions

void connect_pull_supplier (CosEventComm::PullSupplier_ptr pullSupplier)
void disconnect_pull_consumer ()
 ProxyPullConsumer_i (PortableServer::POA_ptr poa, list< CORBA::Any * > &q)
 ~ProxyPullConsumer_i ()
void collect ()
 Collects responses since the last trigger.
void triggerRequest ()
 When _req is NIL, sends out a new pull() or try_pull() call.
void reincarnate (const string &oid, const PersistNode &node)
 Re-create a servant from information saved in the log file.
void output (ostream &os)
 Save this object's state to a stream.

Private Types

enum  Mode { Pull = 0, TryPull = 1 }
 This proxy can call out in either pull() or try_pull() mode. More...

Private Attributes

CosEventComm::PullSupplier_var _target
list< CORBA::Any * > & _queue
Mode _mode
int _exceptionCount
 Only when two consecutive exceptions have been received from each mode, do we consider the connection dead.

Detailed Description

Implementation of the ProxyPullConsumer interface.

Tries to get messages by using pull() then try_pull() method calls, but prefers pull(). Switches between pull() & try_pull() if it gets an exception. Only gives up when both methods have returned two consecutive exceptions.

Note, our own implementation of ProxyPullSupplier::pull() is very basic.

Definition at line 100 of file ProxyPullConsumer.h.


Member Enumeration Documentation

enum OmniEvents::ProxyPullConsumer_i::Mode [private]
 

This proxy can call out in either pull() or try_pull() mode.

Enumerator:
Pull 
TryPull 

Definition at line 123 of file ProxyPullConsumer.h.


Constructor & Destructor Documentation

OmniEvents::ProxyPullConsumer_i::ProxyPullConsumer_i PortableServer::POA_ptr  poa,
list< CORBA::Any * > &  q
 

Definition at line 154 of file ProxyPullConsumer.cc.

OmniEvents::ProxyPullConsumer_i::~ProxyPullConsumer_i  ) 
 

Definition at line 165 of file ProxyPullConsumer.cc.

References DB.


Member Function Documentation

void OmniEvents::ProxyPullConsumer_i::collect  ) 
 

Collects responses since the last trigger.

Definition at line 170 of file ProxyPullConsumer.cc.

References _exceptionCount, _mode, _queue, OmniEvents::Proxy::_req, _target, DB, OmniEvents::Servant::deactivateObject(), OmniEvents::Orb::deferredRequest(), OmniEvents::Proxy::eraseKey(), HERE, IF_OMNIORB4, OmniEvents::Orb::inst(), Pull, OmniEvents::Orb::reportObjectFailure(), and TryPull.

Referenced by OmniEvents::ProxyPullConsumerManager::collect().

void OmniEvents::ProxyPullConsumer_i::connect_pull_supplier CosEventComm::PullSupplier_ptr  pullSupplier  ) 
 

Definition at line 114 of file ProxyPullConsumer.cc.

References OmniEvents::Proxy::_req, _target, OmniEvents::omniEventsLog::exists(), OmniEvents::WriteLock::os, and output().

Referenced by reincarnate().

void OmniEvents::ProxyPullConsumer_i::disconnect_pull_consumer  ) 
 

Definition at line 131 of file ProxyPullConsumer.cc.

References _target, DB, OmniEvents::Servant::deactivateObject(), OmniEvents::Orb::deferredRequest(), OmniEvents::Proxy::eraseKey(), IFELSE_OMNIORB4, and OmniEvents::Orb::inst().

Referenced by OmniEvents::ProxyPullConsumerManager::disconnect().

void OmniEvents::ProxyPullConsumer_i::output ostream &  os  )  [virtual]
 

Save this object's state to a stream.

Implements OmniEvents::Proxy.

Definition at line 274 of file ProxyPullConsumer.cc.

References _target, and OmniEvents::Proxy::basicOutput().

Referenced by connect_pull_supplier().

void OmniEvents::ProxyPullConsumer_i::reincarnate const string &  oid,
const PersistNode node
[virtual]
 

Re-create a servant from information saved in the log file.

Implements OmniEvents::Proxy.

Definition at line 262 of file ProxyPullConsumer.cc.

References OmniEvents::Servant::activateObjectWithId(), OmniEvents::PersistNode::attrString(), and connect_pull_supplier().

void OmniEvents::ProxyPullConsumer_i::triggerRequest  ) 
 

When _req is NIL, sends out a new pull() or try_pull() call.

Definition at line 241 of file ProxyPullConsumer.cc.

References _mode, OmniEvents::Proxy::_req, _target, Pull, and TryPull.

Referenced by OmniEvents::ProxyPullConsumerManager::triggerRequest().


Member Data Documentation

int OmniEvents::ProxyPullConsumer_i::_exceptionCount [private]
 

Only when two consecutive exceptions have been received from each mode, do we consider the connection dead.

Definition at line 129 of file ProxyPullConsumer.h.

Referenced by collect().

Mode OmniEvents::ProxyPullConsumer_i::_mode [private]
 

Definition at line 124 of file ProxyPullConsumer.h.

Referenced by collect(), and triggerRequest().

list<CORBA::Any*>& OmniEvents::ProxyPullConsumer_i::_queue [private]
 

Definition at line 120 of file ProxyPullConsumer.h.

Referenced by collect().

CosEventComm::PullSupplier_var OmniEvents::ProxyPullConsumer_i::_target [private]
 

Definition at line 119 of file ProxyPullConsumer.h.

Referenced by collect(), connect_pull_supplier(), disconnect_pull_consumer(), output(), and triggerRequest().


The documentation for this class was generated from the following files:
Generated on Fri Aug 26 20:56:17 2005 for OmniEvents by  doxygen 1.4.3-20050530
omniEvents-2_6_2/doc/doxygen/a00027.html0000644000076400001440000001534310303671741020057 0ustar alexusers00000000000000 OmniEvents: Member List

OmniEvents::ProxyPullConsumer_i Member List

This is the complete list of members for OmniEvents::ProxyPullConsumer_i, including all inherited members.

_default_POA()OmniEvents::Servant [virtual]
_exceptionCountOmniEvents::ProxyPullConsumer_i [private]
_modeOmniEvents::ProxyPullConsumer_i [private]
_poaOmniEvents::Servant [protected]
_queueOmniEvents::ProxyPullConsumer_i [private]
_reqOmniEvents::Proxy [protected]
_targetOmniEvents::ProxyPullConsumer_i [private]
activateObjectWithId(const char *oidStr)OmniEvents::Servant [protected]
basicOutput(ostream &os, const char *name, CORBA::Object_ptr target=CORBA::Object::_nil(), const char *extraAttributes=NULL)OmniEvents::Proxy [protected]
collect()OmniEvents::ProxyPullConsumer_i
connect_pull_supplier(CosEventComm::PullSupplier_ptr pullSupplier)OmniEvents::ProxyPullConsumer_i
deactivateObject()OmniEvents::Servant [protected]
disconnect_pull_consumer()OmniEvents::ProxyPullConsumer_i
eraseKey(const char *name)OmniEvents::Proxy [protected]
keyOutput(ostream &os, const char *name)OmniEvents::Proxy [protected]
Mode enum nameOmniEvents::ProxyPullConsumer_i [private]
output(ostream &os)OmniEvents::ProxyPullConsumer_i [virtual]
Proxy(PortableServer::POA_ptr poa)OmniEvents::Proxy [protected]
ProxyPullConsumer_i(PortableServer::POA_ptr poa, list< CORBA::Any * > &q)OmniEvents::ProxyPullConsumer_i
Pull enum valueOmniEvents::ProxyPullConsumer_i [private]
reincarnate(const string &oid, const PersistNode &node)OmniEvents::ProxyPullConsumer_i [virtual]
Servant(PortableServer::POA_ptr poa)OmniEvents::Servant [protected]
triggerRequest()OmniEvents::ProxyPullConsumer_i
TryPull enum valueOmniEvents::ProxyPullConsumer_i [private]
~Proxy()OmniEvents::Proxy [virtual]
~ProxyPullConsumer_i()OmniEvents::ProxyPullConsumer_i
~Servant()OmniEvents::Servant [virtual]


Generated on Fri Aug 26 20:56:17 2005 for OmniEvents by  doxygen 1.4.3-20050530
omniEvents-2_6_2/doc/doxygen/a00333.png0000644000076400001440000000237510240451474017677 0ustar alexusers00000000000000‰PNG  IHDRô¿;žìb!PLTEþÿÿo___???ŸŸŸßßß¿¿¿ÿÿÿ/l:ZtRNS@æØfŠIDATxœíÚKwÚFàü/ÛuNX:§Ô°LjS±tóÀZÖ„"-Sšc´ti)¬™]šù•™;âm¤ZI¹ƒ¾3ºŸçlìûŒÖž!4ÒÇC3’[ûj:ó¬Ë„4ÒÅÓ¡2ÒW1‹—J9iôµy›7Ý©\÷W1Ÿ»íöú eßëv·ö E?ýR~¬š»9hù%å¡õ …›‰p~ŽÍK¢²¦-\d›–C—Wm>6Ë‘÷91—a°Þ^qíƒyÇÅðÈ3²ÐT< íÀ(«õb:°‚ƤÒ);3Ê]¦6¹*ÍÑ;Á‘ÑäoX¹Çax¶YKšÂƒéL—ÇÌp§*ÓƒLVÐóá¼çL?¹¦Ãð|†l§×±$=û½.Ç©b1âàä':û­š Çl›~ó‡è õ˜æM9Îåb„ ç5f°hxqmÐí¶Îb[[åxÁx¯Ï>ukq{3J9ÐpKÙÚëÚćّ[YœpßüwägÜ÷ž[0\ÉtÂóhH#ô7C§ùåþ‡ÿä-@ªöc–‹3ÑŸO~b:Ëfg¢OФ³¬øwJ.–ΰÙHm;9É´Ùß)]äO.¤‘Fi¤‘Fi¤‘Fi¤‘FéÄ–ÇèaôžËR7¤‘þÖé´µ@„8úÃh&:m-›T ”N[ E9Óikd}ÈQuËo¼äšžN[ äòVƒÕ'­òiG¿áÏs˜uÚZ BF:Ã̬ÎŒ»è´µ@‡þúÊr Ó×-gýŠÏnk9Ðikböú\3ø¼Ö,û-%M-PL‹°ß,~¶‘ã@ú°vZ £{åÂè49FZooXôÔôqVã`!ÐSÒXôÄ4Vã 4ÒH#4ÒH#4ÒH#4ÒH ýøŸûsoH#}D´gÌÌU—¥ä‹3)à1 r(ûI+‰î7ï:«!6‰†Ãõk–}Ѱ~µ‘mºÿâvºŸ¶“è·òc-ãæ5Ñê‰Ç¶zdèí»ÛÝ"ä›觼J+¾XaÝ—¼ˆ¨>™è%7|­·D,’½PÔÀÑìÞ[b™‘TéP|9†D d¨„ DeFH"®!;\|çÔóßaôªÓŽæôÆÍ~)1Ñj…TÅ#"ƒíŽo¥Ë¾yA~–9 ³‡È0q4ˆÊŒ„vÉ^šÁƒšÔ”ÇL‰î«Ôtzr²´º¸hfR…š#­M\åZÖhè pD4Îèô¨²“– ¾FÃæ^ZÄâ\“ôèSw¹éÐï1›‘ñ &«¯Cd¨ÿ¥,iHBÍ4‘mú×_%žÓ¤²FËY$£?¯æ´5ŒÙûŬXpk>k‘d /® z84i‹Œ›ƒR¼àÊb¯†ýÛRH¨ÄEºß¼Ê½¦Ž&£’ì¡á–²µ×WcÀÚXp EØî9y/ƒÖ†‹[ œp‘Aœp…Œql'}X»<ðºì´×*Œn$Þæ“ÛHH~~ôÁ é㣋iH#ýÿ¦¿Lœ«Åº‘UIEND®B`‚omniEvents-2_6_2/doc/doxygen/a00335.png0000644000076400001440000000237510240451475017702 0ustar alexusers00000000000000‰PNG  IHDRô¿;žìb!PLTEþÿÿo___???ŸŸŸßßß¿¿¿ÿÿÿ/l:ZtRNS@æØfŠIDATxœíÚKwÚFàü/ÛuNX:§Ô°LjS±tóÀZÖ„"-Sšc´ti)¬™]šù•™;âm¤ZI¹ƒ¾3ºŸçlìûŒÖž!4ÒÇC3’[ûj:ó¬Ë„4ÒÅÓ¡2ÒW1‹—J9iôµy›7Ý©\÷W1Ÿ»íöú eßëv·ö E?ýR~¬š»9hù%å¡õ …›‰p~ŽÍK¢²¦-\d›–C—Wm>6Ë‘÷91—a°Þ^qíƒyÇÅðÈ3²ÐT< íÀ(«õb:°‚ƤÒ);3Ê]¦6¹*ÍÑ;Á‘ÑäoX¹Çax¶YKšÂƒéL—ÇÌp§*ÓƒLVÐóá¼çL?¹¦Ãð|†l§×±$=û½.Ç©b1âàä':û­š Çl›~ó‡è õ˜æM9Îåb„ ç5f°hxqmÐí¶Îb[[åxÁx¯Ï>ukq{3J9ÐpKÙÚëÚćّ[YœpßüwägÜ÷ž[0\ÉtÂóhH#ô7C§ùåþ‡ÿä-@ªöc–‹3ÑŸO~b:Ëfg¢OФ³¬øwJ.–ΰÙHm;9É´Ùß)]äO.¤‘Fi¤‘Fi¤‘Fi¤‘FéÄ–ÇèaôžËR7¤‘þÖé´µ@„8úÃh&:m-›T ”N[ E9Óikd}ÈQuËo¼äšžN[ äòVƒÕ'­òiG¿áÏs˜uÚZ BF:Ã̬ÎŒ»è´µ@‡þúÊr Ó×-gýŠÏnk9Ðikböú\3ø¼Ö,û-%M-PL‹°ß,~¶‘ã@ú°vZ £{åÂè49FZooXôÔôqVã`!ÐSÒXôÄ4Vã 4ÒH#4ÒH#4ÒH#4ÒH ýøŸûsoH#}D´gÌÌU—¥ä‹3)à1 r(ûI+‰î7ï:«!6‰†Ãõk–}Ѱ~µ‘mºÿâvºŸ¶“è·òc-ãæ5Ñê‰Ç¶zdèí»ÛÝ"ä›觼J+¾XaÝ—¼ˆ¨>™è%7|­·D,’½PÔÀÑìÞ[b™‘TéP|9†D d¨„ DeFH"®!;\|çÔóßaôªÓŽæôÆÍ~)1Ñj…TÅ#"ƒíŽo¥Ë¾yA~–9 ³‡È0q4ˆÊŒ„vÉ^šÁƒšÔ”ÇL‰î«Ôtzr²´º¸hfR…š#­M\åZÖhè pD4Îèô¨²“– ¾FÃæ^ZÄâ\“ôèSw¹éÐï1›‘ñ &«¯Cd¨ÿ¥,iHBÍ4‘mú×_%žÓ¤²FËY$£?¯æ´5ŒÙûŬXpk>k‘d /® z84i‹Œ›ƒR¼àÊb¯†ýÛRH¨ÄEºß¼Ê½¦Ž&£’ì¡á–²µ×WcÀÚXp EØî9y/ƒÖ†‹[ œp‘Aœp…Œql'}X»<ðºì´×*Œn$Þæ“ÛHH~~ôÁ é㣋iH#ýÿ¦¿Lœ«Åº‘UIEND®B`‚omniEvents-2_6_2/doc/doxygen/a00064.html0000644000076400001440000003706510303671741020065 0ustar alexusers00000000000000 OmniEvents: OmniEvents::ProxyPullConsumerManager Class Reference

OmniEvents::ProxyPullConsumerManager Class Reference

#include <ProxyPullConsumer.h>

Inheritance diagram for OmniEvents::ProxyPullConsumerManager:

Inheritance graph
[legend]
Collaboration diagram for OmniEvents::ProxyPullConsumerManager:

Collaboration graph
[legend]
List of all members.

Public Member Functions

PortableServer::Servant incarnate (const PortableServer::ObjectId &oid, PortableServer::POA_ptr poa)
 ProxyPullConsumerManager (PortableServer::POA_ptr parentPoa, list< CORBA::Any * > &q)
 ~ProxyPullConsumerManager ()
OMNIEVENTS__DEBUG_REF_COUNTS__DECL
CosEventChannelAdmin::ProxyPullConsumer_ptr 
createObject ()
void collect ()
 Collects events that have arrived at connected proxies.
void triggerRequest ()
 For each connected proxy, if there is no request in progress, send a new request to the current operation (pull or try_pull).
void disconnect ()
 Send disconnect_pull_supplier() to all connected PullSuppliers.

Private Attributes

list< CORBA::Any * > & _queue

Detailed Description

Definition at line 49 of file ProxyPullConsumer.h.


Constructor & Destructor Documentation

OmniEvents::ProxyPullConsumerManager::ProxyPullConsumerManager PortableServer::POA_ptr  parentPoa,
list< CORBA::Any * > &  q
 

Definition at line 48 of file ProxyPullConsumer.cc.

References OmniEvents::ProxyManager::activate().

OmniEvents::ProxyPullConsumerManager::~ProxyPullConsumerManager  ) 
 

Definition at line 58 of file ProxyPullConsumer.cc.

References DB.


Member Function Documentation

void OmniEvents::ProxyPullConsumerManager::collect  ) 
 

Collects events that have arrived at connected proxies.

For each proxy:

  • If an exception has arrived, increment the exception count, and switch to the other operation (pull/try_pull).
  • If the exception count is 4+, then deactivate this object.
  • If a method has returned, then decide whether we have an event (hasEvent). If so, the read the event and push it onto the queue.

Should be called BEFORE triggerRequest().

Definition at line 74 of file ProxyPullConsumer.cc.

References OmniEvents::ProxyManager::_servants, and OmniEvents::ProxyPullConsumer_i::collect().

CosEventChannelAdmin::ProxyPullConsumer_ptr OmniEvents::ProxyPullConsumerManager::createObject  ) 
 

Definition at line 66 of file ProxyPullConsumer.cc.

Referenced by OmniEvents::SupplierAdmin_i::obtain_pull_consumer().

void OmniEvents::ProxyPullConsumerManager::disconnect  ) 
 

Send disconnect_pull_supplier() to all connected PullSuppliers.

Definition at line 94 of file ProxyPullConsumer.cc.

References OmniEvents::ProxyManager::_servants, and OmniEvents::ProxyPullConsumer_i::disconnect_pull_consumer().

Referenced by OmniEvents::SupplierAdmin_i::disconnect().

PortableServer::Servant OmniEvents::ProxyPullConsumerManager::incarnate const PortableServer::ObjectId &  oid,
PortableServer::POA_ptr  poa
 

Definition at line 37 of file ProxyPullConsumer.cc.

References OmniEvents::ProxyManager::_managedPoa, _queue, OmniEvents::ProxyManager::_servants, and DB.

void OmniEvents::ProxyPullConsumerManager::triggerRequest  ) 
 

For each connected proxy, if there is no request in progress, send a new request to the current operation (pull or try_pull).

Should be called AFTER collect().

Definition at line 84 of file ProxyPullConsumer.cc.

References OmniEvents::ProxyManager::_servants, and OmniEvents::ProxyPullConsumer_i::triggerRequest().


Member Data Documentation

list<CORBA::Any*>& OmniEvents::ProxyPullConsumerManager::_queue [private]
 

Definition at line 89 of file ProxyPullConsumer.h.

Referenced by incarnate().


The documentation for this class was generated from the following files:
Generated on Fri Aug 26 20:56:16 2005 for OmniEvents by  doxygen 1.4.3-20050530
omniEvents-2_6_2/doc/doxygen/a00026.html0000644000076400001440000001344310303671741020055 0ustar alexusers00000000000000 OmniEvents: Member List

OmniEvents::ProxyPullConsumerManager Member List

This is the complete list of members for OmniEvents::ProxyPullConsumerManager, including all inherited members.

_default_POA()OmniEvents::Servant [virtual]
_managedPoaOmniEvents::ProxyManager [protected]
_poaOmniEvents::Servant [protected]
_queueOmniEvents::ProxyPullConsumerManager [private]
_servantsOmniEvents::ProxyManager [protected]
activate(const char *name)OmniEvents::ProxyManager [protected]
activateObjectWithId(const char *oidStr)OmniEvents::Servant [protected]
collect()OmniEvents::ProxyPullConsumerManager
createObject()OmniEvents::ProxyPullConsumerManager
deactivateObject()OmniEvents::Servant [protected]
disconnect()OmniEvents::ProxyPullConsumerManager
etherealize(const PortableServer::ObjectId &oid, PortableServer::POA_ptr adapter, PortableServer::Servant serv, CORBA::Boolean cleanup_in_progress, CORBA::Boolean remaining_activations)OmniEvents::ProxyManager
incarnate(const PortableServer::ObjectId &oid, PortableServer::POA_ptr poa)OmniEvents::ProxyPullConsumerManager
output(ostream &os)OmniEvents::ProxyManager
ProxyManager(PortableServer::POA_ptr poa)OmniEvents::ProxyManager [protected]
ProxyPullConsumerManager(PortableServer::POA_ptr parentPoa, list< CORBA::Any * > &q)OmniEvents::ProxyPullConsumerManager
reincarnate(const PersistNode &node)OmniEvents::ProxyManager
Servant(PortableServer::POA_ptr poa)OmniEvents::Servant [protected]
triggerRequest()OmniEvents::ProxyPullConsumerManager
~ProxyManager()OmniEvents::ProxyManager [protected, virtual]
~ProxyPullConsumerManager()OmniEvents::ProxyPullConsumerManager
~Servant()OmniEvents::Servant [virtual]


Generated on Fri Aug 26 20:56:16 2005 for OmniEvents by  doxygen 1.4.3-20050530
omniEvents-2_6_2/doc/doxygen/a00337.png0000644000076400001440000000343210240451476017700 0ustar alexusers00000000000000‰PNG  IHDR¿ÀìN”!PLTEþÿÿo___???ŸŸŸßßß¿¿¿ÿÿÿ/l:ZtRNS@æØf§IDATxœíœÁ_ÚHÇû/xݳ[MŽºK…£]µpl­Ž[659ªýT9Ú*$· ™¹•„À¼¿rçM@ˆƒ vÚÝù…˜äÍËË——7ðá“÷ñäEÏþk€iYšD–&‘õ„Hˆ2Ñï$yàü¤IVޤId=9’ÙŸ™Êé,rNvBóÇ’$Ÿ­gf3™eÍÂxz>¼”"LG•D%|ÍÄœŒÏÍ!8–"LG•Œ›0òìªoøà»&¿;<ø.ØNDLVí€Ûª†Mæð¥ŽØÜx~f&A5¬£»ÛRHÂpÇ6kf º#š’Tá¶­KVºàïÚzCà‹»çã?®tFÝ•æ$%\DÅö™³ÇE*â=Z÷…± A\w’ÝÀÝ™#áÁ£ç4!$LIξ4ÑoÈS•aˆ³—êIDÅÞ"î•ø •’4‡úq»áð ôA=‰˜Åó$–eAØä%±›’ôÓ:‰Z| #°ôêIÄ'[¶Nº°ƒÓ¤„q2w`3,¥Fˆ<0._¡{ÜWI¢BšdåHšD–&‘õ„H–ùMõõ§üòZFßTQB²ö›‚ šD–’5AT|ˉ‚Ûók‘¬å‰DA¡hY H¾­))”_Š$OßÅšD–&‘¥IdiYšD–&‘¥IdiYšD–&‘¥IdiYšD–&‘¥IdiYÿ ’û—{æõÀÓ¯Å$êþ-^“ÈÒ$²žIRî93›sÛ\äMH×Ézñ}ofe’ãÂûë™meÍ;ÝŒÖÙ| GsÀVJ²-^3Y§`¶“dc÷LXWJÒ8O|÷5©cK!6KAl&;ØD8?º­´O »CÏ›ÅîÐT¶Ávü ìÑ¡{…nP ëQXÃÆDèß×wx ÿ˒ΰ3¤ØR(H°‰0*›Ý…€Õ«PçK ;ˆöæÖ±sëI@™y½†ÐÑu«ìl[—Ðk~ MDŸ#sDÅ6ƒ¸Îœa%mT«§Þ„ôÖdÎÈ;¾‚qó ‚­a&<9èæ$AKìB?~qwæH°0¶l° ñÉèÕðC;Ž't@± ‚³øˆŽþ* ’³—AÌ"$¼©¬GUìm’Ã7À qR¨Î‘ˆœìÂè²Ä³uÁÏáYB·>ˆœP°O‚³8CbYkATh˜éÝiNëI°Nöì&6!Ñg$1R’AÖÉîãIð“íV”" Ø¦<›;¢÷²ØT†6!#Ÿß©p]ÜDãòU:wJ'yœ¶dÓŸx†WN’´dÛVæò'‘\˜²-šï‘ÿi$ËH“,^“ÈÊû/¯•ŸßÅ9ê¬ËIŽ:ëDùåHrÒY—Ým(+7$ùé¬ËIž¾5‰,M"K“ÈÒ$²4‰,M"K“ÈÒ$²4‰,M"K“ÈÒ$²4‰,M"K“ÈÒ$²4‰,u$lÅgVê¥I4‰&QAÒ‚óÙPÈ(À`ÑIÜ^]hðB%ÆÜHȼ‰Ë!Í¥IÂÚGîlÌ íöÜ! ¦´ýåc–dbà$ýjf,d‰Ë˜„÷>˜Ïø5|Í]ÀÍøÞòïöˆ7!¡„\gH¦.'¤³|N‚2éÙ^!2#9Ê/}B<׃Äi’2uqáŽ>Ô dï…c4ðkŽ‘¤(.?¦…!á+Þ<}¿ò‚ôK¤ë¼Çиñ“’¼_^@ÂßažQ2JdØc)I¼ oÛÓZ…¿ó¨kwI—Ȩü®}âo÷ìÎ&$]çÔ$ç×_79 ž~F=×ó5*7í¦+Få$%!¸ŒÉXTlLÝS~ð"ME4É4ðÊŽ¹y?´Š¤Ñ0!!½H¸=›¯Ç̧—é•ñ§GBža Í7 ±ËGî¾;s$<'þ& ñÿ€ ’ƒ囂áãÜÏ$äµ' Óœð4 œ{$3orú—‹Sô>Õ‘$Ýж¹³bo‘tOk„‘vJRîÚ3‘“Ùÿ}BŠ:%ÎçdrzÌwyn7˜1²ˆDÌây’v»M’2¿Ñ')I<­AÂ뤿ÚH ±$~ƒÏb¾KÏ[¼NZiˆÓjHb¦$¦›ÖÉÉbñÉ–­“!9⹂†êdz¹ƒ$ܼÁ+Ú·S󽨓çI w3sGœ^)z¤“lØ<4nÒ¹S»ƒäQòEVo²Þ©[à H®Ë‹¬’¼k¿ULÒ[øÕDüÉz§üùï8%$ª¤I4É*$¹&‘¥IdiYÿOõ‡‰´†âIEND®B`‚omniEvents-2_6_2/doc/doxygen/a00339.png0000644000076400001440000000567010240451476017710 0ustar alexusers00000000000000‰PNG  IHDRo„4ÑÓ*PLTEþÿÿr%™˜2Íoÿ___???ŸŸŸßßß¿¿¿ÿÿÿ³·OÚtRNS@æØf Æ^bqt25¶Ž™Ä]¶ ¨UåuÂúÙ÷º…‘„¢é¶€Ñ— ÕýžúC«»…ôÚ[4“ˆn¶ÒÞƒ5UNP8Aeà•TNP8AeàÅÁý]­|þ\¢H>_W‡Õˆƒû‡Ò/狜"~»_bsÉÒ— œ˜2p‚ÊÀ *'¨ œ BàNÈÞd›cÃÌ¡U ÒóÁ„}JK³ÝLòÒ]…Ò§íúü9¥ëê$M§0eÑ¢JN¥CACŸÊæØãÿhœó{e×çJs+ßG:p+o_wºMBã5 .¹«Pz¨`Ø®ßßiþør’Ö¥íJÅ_ànÛTúé“7pT»óà×+â?ß¾÷ðî#¼ Úu_Ðîb-nWÁôpÁ]¿¿gìßDí`vl:Œ7ñà72èÐÔ[¹mÕ58~`¯_P½Ú#š{Ø õ«CËp«øp«)Òǽ¢Óvh¿L­#Ì6¨¢…OmZhP÷ÜðUÄ_Á\Ѿæ´!3Ö¯xAZh@U˜›pW”ž;­ú„í–Ž€Ð–S#ë×ú¤µ8ô;|ØY¬è^M '–æÞâUômëZY+ÓæÐæµ9¤ôYåƒ[¼€m ÌÀç;zm|[yÑ{r94»û®^ÕuÚÚ,›vÑÝ;i÷ò§šû½¿"þ &wE)¼Û‡tÌ$YAlzùÓ'ÝÄ€ƒ:ºNcаÝbàЖS´íÒ#x 8ðÍv2¶± ÕyM˜Sx˽ÍGuæ¤ÍzìŽ[}ø·ßòêN ƒî@ò¹S;¢W£#÷XûI§UhzÉ¡ú©oû®1\"Wà¨é˜ÑìïaíÁÍ,p¶Ã¾·ÊLa ÖÐÜ#žÓÁ7ÛaÈèã5©r§ž·8pÞa0© |ݽ'¶CˆÅ ¿ÿÈH°Ž¶C¾¥ß@5Þî¿Òéû—ÌÇð»‚^¥msÜCŪ ]}£c:ww¨‚ýK›»‰ÇU¸63E±7ü˜¾ù#8(ø]@MÆà¸·8p¬ã Õfðªß@…ׯ˜p¬Å}Ôèù?!¡­ ã}9†ËZuªñàruð¦sp½âð„¦çTlî&öñap` Kppp€ŽÁo¾Ã ~˵áÞµ8ô Ž õþÚT` ¶ èx^ðÚt&ä€>®ÿºCÝ+HØ…Êtº¸ÜÖÇhñà»Âtð鬃‹BíwzÌM 8œŽÀÁÔLa ~¨^‡SËà;Œ¨Nó8a5ƒƒ3ú86¹ v{D[pbäpŒqaQ±[ñ T¨»wªa\Ö8Ð žÏ*Öœ972œvTìV¬‚õCã²¼@3r°NàDÈ!8ãÂ"b·âšõbŒ ÷ÍàQ!ÄZ+pä&-n:v+FákYÐâŽÜ8Ð 6­¬¸ÅÉ!¸ôqQ±[Ñšº]¤ÆÀuïÀ=«¼X3p “c¿ŽÀ¨»©ˆk§8ª8/ÐŒ´‘âº[ôôËûY©=;×n”\”‰õv¯Ë -vúµ¸[Õg§AÝóúq ~ýGOE®ú0¥ék§þà+ùº÷…÷ ·È)—ü›7çèþW,LÞÑ%'ý–šùJa©ÇÄ]bpê®eÍð™Â™IÉ%·}¿ÃW*‹‹&$—Üý¦¨tVeMF.¸t¸¥µœm"r‰À¥Ä-µu€“K.µeŒS[@9¹WòÓ[þ9½•§ç“›.Åe³S\²{îé×\piõo¨T×:ŸCn¸{ý5$¬t‰ŸMn¸t—·Oyuý™äf‚KûϤí¹YàTßS3Wiƒ›En¸Ô¹¥nÆÏLñà¶Rø9$¤ôÁÅOèbÏÒßç•;¡‹· »¼*{}¸FƒS˜% Õ}¸F‚KólÁ¯y¸F€KáâBŒV\Ô¼dœ²£Åµ:à¦ÉM[!n«nŠ\Ü*q[)par¡ pãµRàBä‚àÒ?Ë H%8e./±ÔÕ-'ª œ 2p‚ÊÀ *'¨ œ Ôƒ»¢ç“šX®Mi7ªŽ~™`Z®õÚÉù¶X®ée¹ ÄØTpÖj¯ë“ªäìZÍ÷‘´ÇìÚÇ_ƒà¼×9 l³Ü†—eD,º©àZeüçãQTíî#¼1Ã[LœMÈeÜ8Ëill‹k—ȵnæ{Zôª9€¤ÎˆYoÑœï’êIÞ)Ùu|§þI‹–ód§U¶F˜ˆF®Àhìü€ÀU,¾·ÿœtФY=FÓøÒrŠÌð^iýÁAk!®™+æŠdpírpyòœü\{c—÷¡]õšz“4áõ–~©µžž^ë LðÀ5«ïê ÜùežOo›uÓ$vnMãËNͨ³-Ðâ88‚±Á¡o×ßÁ‡ç¼¡õ¼ÃŽÂ Ò‡ä=«R 'í&xàÈõN«_ëðÇZÜÛÙû—Îb}ëî,‹óŠ÷á-´<‡/ØâØ– Ǧ#~pµZ8%è¤Î8¸þ¸cà ëìö‰}Âú-×:鼵ϯ »â}+þºŒà4N«ó>îl#À± p°×ÐikÞéOFUÉ;0x´tN;f}ܧŒo£*+¾_0IÃÙÑÁ4¾ðQµ¼à„ÔÊE¥šÞ3V»¡Íê궪à.KQ©sÁýRûù î:òt–´¼g¬Zþóâ?"8YRW· œ¨2p‚ÊÀ *'¨Õº’¿FÊÀ *'¨ œ 2p‚ÊÀ *'¨›ÿÿôߨ;(ÈIEND®B`‚omniEvents-2_6_2/doc/doxygen/a00065.html0000644000076400001440000006062410303671741020063 0ustar alexusers00000000000000 OmniEvents: OmniEvents::ProxyPullSupplier_i Class Reference

OmniEvents::ProxyPullSupplier_i Class Reference

Servant for ProxyPullSupplier interface. More...

#include <ProxyPullSupplier.h>

Inheritance diagram for OmniEvents::ProxyPullSupplier_i:

Inheritance graph
[legend]
Collaboration diagram for OmniEvents::ProxyPullSupplier_i:

Collaboration graph
[legend]
List of all members.

Public Member Functions

void connect_pull_consumer (CosEventComm::PullConsumer_ptr pullConsumer)
void disconnect_pull_supplier ()
CORBA::Any * pull ()
CORBA::Any * try_pull (CORBA::Boolean &has_event)
 ProxyPullSupplier_i (PortableServer::POA_ptr poa, EventQueue &q)
 ~ProxyPullSupplier_i ()
void reincarnate (const string &oid, const PersistNode &node)
 Re-create a servant from information saved in the log file.
void output (ostream &os)
 Save this object's state to a stream.
unsigned long timestamp () const

Private Member Functions

void touch ()
 Update the _timestamp to the current moment.

Private Attributes

CosEventComm::PullConsumer_var _target
bool _connected
 Can't use _target to keep track of whether this object is connected, because it is legal to connect with a nil target.
unsigned long _timestamp
 Keep track of when this proxy was last contacted.

Detailed Description

Servant for ProxyPullSupplier interface.

Does not properly implement the blocking pull() method - to do so would need us to create and park a thread for each waiting pull() method. Instead pull() throws TRANSIENT if the event queue is empty.

Definition at line 84 of file ProxyPullSupplier.h.


Constructor & Destructor Documentation

OmniEvents::ProxyPullSupplier_i::ProxyPullSupplier_i PortableServer::POA_ptr  poa,
EventQueue q
 

Definition at line 183 of file ProxyPullSupplier.cc.

References touch().

OmniEvents::ProxyPullSupplier_i::~ProxyPullSupplier_i  ) 
 

Definition at line 196 of file ProxyPullSupplier.cc.

References DB.


Member Function Documentation

void OmniEvents::ProxyPullSupplier_i::connect_pull_consumer CosEventComm::PullConsumer_ptr  pullConsumer  ) 
 

Definition at line 110 of file ProxyPullSupplier.cc.

References _connected, OmniEvents::Proxy::_req, _target, OmniEvents::omniEventsLog::exists(), OmniEvents::WriteLock::os, output(), and touch().

Referenced by reincarnate().

void OmniEvents::ProxyPullSupplier_i::disconnect_pull_supplier  ) 
 

Definition at line 128 of file ProxyPullSupplier.cc.

References _connected, _target, DB, OmniEvents::Servant::deactivateObject(), OmniEvents::Orb::deferredRequest(), OmniEvents::Proxy::eraseKey(), IFELSE_OMNIORB4, OmniEvents::Orb::inst(), and touch().

Referenced by OmniEvents::ProxyPullSupplierManager::disconnect(), and OmniEvents::ProxyPullSupplierManager::incarnate().

void OmniEvents::ProxyPullSupplier_i::output ostream &  os  )  [virtual]
 

Save this object's state to a stream.

Implements OmniEvents::Proxy.

Definition at line 213 of file ProxyPullSupplier.cc.

References _target, and OmniEvents::Proxy::basicOutput().

Referenced by connect_pull_consumer().

CORBA::Any * OmniEvents::ProxyPullSupplier_i::pull  ) 
 

Definition at line 150 of file ProxyPullSupplier.cc.

References _connected, IFELSE_OMNIORB4, OmniEvents::EventQueue::Reader::moreEvents(), OmniEvents::EventQueue::Reader::nextEvent(), and touch().

void OmniEvents::ProxyPullSupplier_i::reincarnate const string &  oid,
const PersistNode node
[virtual]
 

Re-create a servant from information saved in the log file.

Implements OmniEvents::Proxy.

Definition at line 201 of file ProxyPullSupplier.cc.

References OmniEvents::Servant::activateObjectWithId(), OmniEvents::PersistNode::attrString(), and connect_pull_consumer().

unsigned long OmniEvents::ProxyPullSupplier_i::timestamp void   )  const [inline]
 

Definition at line 99 of file ProxyPullSupplier.h.

References _timestamp.

Referenced by OmniEvents::ProxyPullSupplierManager::incarnate().

void OmniEvents::ProxyPullSupplier_i::touch  )  [inline, private]
 

Update the _timestamp to the current moment.

Definition at line 218 of file ProxyPullSupplier.cc.

References _timestamp.

Referenced by connect_pull_consumer(), disconnect_pull_supplier(), ProxyPullSupplier_i(), pull(), and try_pull().

CORBA::Any * OmniEvents::ProxyPullSupplier_i::try_pull CORBA::Boolean &  has_event  ) 
 

Definition at line 164 of file ProxyPullSupplier.cc.

References _connected, OmniEvents::EventQueue::Reader::moreEvents(), OmniEvents::EventQueue::Reader::nextEvent(), and touch().


Member Data Documentation

bool OmniEvents::ProxyPullSupplier_i::_connected [private]
 

Can't use _target to keep track of whether this object is connected, because it is legal to connect with a nil target.

Use this bool instead.

Definition at line 106 of file ProxyPullSupplier.h.

Referenced by connect_pull_consumer(), disconnect_pull_supplier(), pull(), and try_pull().

CosEventComm::PullConsumer_var OmniEvents::ProxyPullSupplier_i::_target [private]
 

Definition at line 101 of file ProxyPullSupplier.h.

Referenced by connect_pull_consumer(), disconnect_pull_supplier(), and output().

unsigned long OmniEvents::ProxyPullSupplier_i::_timestamp [private]
 

Keep track of when this proxy was last contacted.

Definition at line 108 of file ProxyPullSupplier.h.

Referenced by timestamp(), and touch().


The documentation for this class was generated from the following files:
Generated on Fri Aug 26 20:56:17 2005 for OmniEvents by  doxygen 1.4.3-20050530
omniEvents-2_6_2/doc/doxygen/a00029.html0000644000076400001440000001560010303671741020055 0ustar alexusers00000000000000 OmniEvents: Member List

OmniEvents::ProxyPullSupplier_i Member List

This is the complete list of members for OmniEvents::ProxyPullSupplier_i, including all inherited members.

_connectedOmniEvents::ProxyPullSupplier_i [private]
_default_POA()OmniEvents::Servant [virtual]
_poaOmniEvents::Servant [protected]
_reqOmniEvents::Proxy [protected]
_targetOmniEvents::ProxyPullSupplier_i [private]
_timestampOmniEvents::ProxyPullSupplier_i [private]
activateObjectWithId(const char *oidStr)OmniEvents::Servant [protected]
basicOutput(ostream &os, const char *name, CORBA::Object_ptr target=CORBA::Object::_nil(), const char *extraAttributes=NULL)OmniEvents::Proxy [protected]
connect_pull_consumer(CosEventComm::PullConsumer_ptr pullConsumer)OmniEvents::ProxyPullSupplier_i
deactivateObject()OmniEvents::Servant [protected]
disconnect_pull_supplier()OmniEvents::ProxyPullSupplier_i
eraseKey(const char *name)OmniEvents::Proxy [protected]
keyOutput(ostream &os, const char *name)OmniEvents::Proxy [protected]
moreEvents() const OmniEvents::EventQueue::Reader
nextEvent()OmniEvents::EventQueue::Reader
output(ostream &os)OmniEvents::ProxyPullSupplier_i [virtual]
Proxy(PortableServer::POA_ptr poa)OmniEvents::Proxy [protected]
ProxyPullSupplier_i(PortableServer::POA_ptr poa, EventQueue &q)OmniEvents::ProxyPullSupplier_i
pull()OmniEvents::ProxyPullSupplier_i
Reader(EventQueue &eventQueue)OmniEvents::EventQueue::Reader
reincarnate(const string &oid, const PersistNode &node)OmniEvents::ProxyPullSupplier_i [virtual]
Servant(PortableServer::POA_ptr poa)OmniEvents::Servant [protected]
timestamp() const OmniEvents::ProxyPullSupplier_i [inline]
touch()OmniEvents::ProxyPullSupplier_i [inline, private]
try_pull(CORBA::Boolean &has_event)OmniEvents::ProxyPullSupplier_i
~Proxy()OmniEvents::Proxy [virtual]
~ProxyPullSupplier_i()OmniEvents::ProxyPullSupplier_i
~Servant()OmniEvents::Servant [virtual]


Generated on Fri Aug 26 20:56:17 2005 for OmniEvents by  doxygen 1.4.3-20050530
omniEvents-2_6_2/doc/doxygen/a00341.png0000644000076400001440000000437610240451477017704 0ustar alexusers00000000000000‰PNG  IHDR—¿ÀÀŒÑ!PLTEþÿÿo___???ŸŸŸßßß¿¿¿ÿÿÿ/l:ZtRNS@æØf‹IDATxœíA—Ú8€ç/pÜ\'›Ž›yL7ÇdÓrœÉf¡;½¤ñ1éyËpÌfðm˧¡ ëWn•Á€M»ìVˆŠæ!—¥R}²Jðh—øŽŸŽüùÝC{@(FUÑ0ªŠ†QUN†‘‰ûð0t.h*Ñ0DÃPÉÉÂ\±‹Í ß F5ñÏœJ¬=U`üÿ¶ÎŒÍ™JÐj…ùr}0«¾¹gg}V¯† Œ­š_ί÷ì¬Ïª³ìò…ÙnXe‹[ƒ L3ƒó¼mx¬4†|Ðk8ÝÀ€Ç%TFeç¦âÛ ç«zÒž*0Ú•f¥ÉG WÂ4ø[þ¼õ)¨ýcoÍÍ9‡Çà•!”¯áøÍpábuÕ®Œ„áø°¹-€I`¼‚ƒ·â‚ÖªÍâ±%”]nÏ. ߯êªÁÈi‚1`6=q}Æ só¹‹õæpÁ¤’ÿ­Ío^* #€˜ù«œlI˜îÜÄz oK%û Ÿp%aÄÒ†iµZÜéBx¼03^–f¡äAOošÛ13âg¸pÕe6Y­fü™S“Jüé'¬>›H{ÊÀPˆ†¡ s@4 •h˜¢a¨$ù—€|-_&‘ižnÐHr˜Ò£<ý  £ªSÊÓI 3=1åçÙ· S:1åƒFè*Ia¦¥¯ h¾I˜ûÔ¬aŠ £ªhUEè*FUÑ0ªŠ†QU4Œª¢aT £ªhUEè*FUÑ0ªŠ†QU4Œª¢aT•5L@q'`ÈîýöÈ%C00AL¹ 4Ì!s‘åbDÃ4Y.FN&aF0è«‘ævÊ~}lltm¼¼eoO¿Ý0ÜoÈ?nïô¾ “4#8hEdGÀ\W½Ýèî¸Ýj…|9·§ßn¸±Új…Ã$ÎÆ„Àý®öÊÏÅ_Lï¡Ã=ýnÃè~Ã$ÎF£“žÇj þØ«ùv LóŽo ~f—Øóø¬µÏ‡héü6èÉÌH.û=T\:]ÑÐ=ôÜxYå‚a¨…IÈ矄¡I/&iFp`øçãî­Þ“Û…y÷&Æ…‚?œç.60˜BìU¯+`œ»lðKx ôƒz¬hˆ=# ¼`Eè÷{޵† ÷îâÊÆâ¸{æþŒ`ˆ˜nÚñû—¼·¼<ãúbXC,]{>ÍßÈìNÙPè¡ÔcÅ ôŒ0ð²êw±–áÛË®ocqrxšÝŸ,‚ÎC½2ǤàCÓ,ƒWj·3Ìâ§×¢ê¡ÔK˜õ4Þ¦/«~¢õÍKœr¶4sDF0ÃÖñ?Wxçû8Œã]˜·¿ÀIß0àÛúA½„yÎ?bC¼D-ðÆ€—U¿h ³B\a(&iFð bfön‚IÁ10¸ÂnÁÀRµ½êUEN³î*fð-Àé¢^Â\W¯m>ñlÑs÷bæ…Œð kMîl3h(&iFð Ôal=3ßûvb¦†µÏGâºÖ׫ê±ÐcÅzþÀËÿ]Ü9MXÍj¡Õl$’Ïá´0“J¼JLYYŸæz³8†M,40‹õÇ·S€ ›‹,#æ ¹Èr1¢aš‹,#Á1_n¤ÿ5ÜÆôq_àýñ—ãêG÷žf·Æ)uºU¦a:Úì²<£Tûh–(ÓœJt™9©`¦„4%B[éaˆ&åÀ¤Û®•2g‹ÐV:˜)qÌ™zxB[)w&Œ™Gt36%Ì´Dõ?ÎGh‹HÒÃpJüáaø£Õ3£L×¶H$ËNÚÓÌ^d·°%™¶Ï6ÄX³íqžq¶S§±gܰ=ÓÐ’ßó‘&“?äIìY·ÒÏàý^ YaÒ¯G9ÜX”ùGRû”ÃN Ù±!¥SyÜñ•&ÝD#~»”Bð[©Æ8—í8(~$Ų”Ï®/$¿rrô0çt‹$ ÌѾå´ç ÍïÏé\^[ ÑÀ·6åv. Ìqþå¶±Ì1æwƒ4Lò‰–ËÛ¥*˜äããîUd0I—¨<7I£ƒI6ä¹fÂ$ ††“Â$õ|·{£„¹?rÞUæ¾Ï;‡æpHä0œæðØç¾?"1Ì¡¨ÈNj˜øá/ g&Öç6á$‡‰›MEìõJ} IŒÌ&ÒïBvzÍ&jF³¡p0û®”}› ÌÞ¤*h;á¤0E¦÷¦þq £a4Œ†ùaz¼³éÓ  ×»o‘ Ó œw~9tÆ ÌÍY$Œóïþ»Á¦ï²Û½>pûŸÛ†Y)fÒØ:çÃÍÁ°H«‰!Ã(¡C(˜»gÌŒËØí Û“b`ì:·ÍªWñ˜g”Á1ðþ3/»Õ;f\Uýº;Àø>»²x³ÊžZMg‰ p{‰0ç‚`éVç ž8ͰùE<Í`TY`–kå› Se?²ôÿå6ßÀø{£öˆ àü‡-êÿì°ž]ÛÃßQ±‚¦s[†ç3€Áæ7ìa`>–l)€™;ø?Ê â}ñ¦Ãf ¾pZçìÊ>GÅ †Ÿzf0nÃó:0Eózá0rš…`àÊXÏ÷A0¯ß׿œ‡zÆ~6…b}eàb \ ™³ LÙ¼p±ìÀŒ>6YÀú¦>jo`Ä•y_f]Á8"fDø8á+#š#–æ0L¿ßg~&ý 3[ÇŒ€˜™œÍ˜{%3 a¬+Xš¡èvz3=3F¼inÇÌœ½ƒ+Æ›ˆ2™mV3„õSX ¬¶„©ü*bæ‰ßÄâÖjÖ|˜Tb•£´æÆù]Qæ¶~:0ãÈoÌZ=×µøæsžÂ0Ç‹†Ñ0F1˜¯B4Œª¢aT £ªüùeË+ha'eIEND®B`‚omniEvents-2_6_2/doc/doxygen/a00343.png0000644000076400001440000000512610240451477017700 0ustar alexusers00000000000000‰PNG  IHDR—ÒtªU$PLTEþÿÿ˜2Ío___???ŸŸŸßßß¿¿¿ÿÿÿ:^ÅtRNS@æØf àIDATxœíM›ÚF€sß“¯áÆq}×6×yÈ G{m³^渙ÅG{òì„£×;€nA¨uY3úÏmU F$¡jLº2R©«ªßþLZ¥oøñÈÿ¾¹ïŠ‚)ª(˜¢Š‚)ª! #3(ûè`.L`RI ':÷Ñ~LÿáJ ÁLÿáJ ÁŽ朽ò.Ø¦ÃØ(È…}bTcû÷)íÆM×ÓupÁô³§ß6Œ惱ÿÓ>ñUvÛïcµ9™×Þ¿Øó»¹sQûåÚÓÝr½Ýöº»¶§ß6Üóë‰ƪã'Nw«äÝ©õÚó»¹óLüx¢oÒCõ»†;~=ñÁ¬z|©uš“Ê„O†UfP¿ç¼ÓµXÕiŽø°ß4zN^gP•W—U[ogX|Ø?%®ìÉð'v†î:Xé98à§#t°2~ºx¹qAWFOš ‡ h6k3 #`<èT[Õ/M¦ÉßògíONý7p2Yh ¯áË®P¾†ó7£¥‰Åcô ü×±G‹ÑÂDwXµ‹*8àºsÖägðBˆ‹z,¨»†A~Å„áG ÀÔ龄“·¢Cº“µÍòÑD({\ŸŸumÑšqaL[4“Ó @8ÝÅ×Å™[õõXÐA~„q‡™êg=6mÆ æòsË- á\%ÿk‡_¾ˆ ãŽ{tÓ„‹å¯E9ÔC\Ô»0›a†A¦ ¿ˆ`fñ²Û.Lo¡‰ìB ¡äoÿΧ<. Îã]pàp»ëÂÀàÚÀ@\Ô»0ÏøG4Ä.jCíºðë ŒXšý0mX#ŒÔç.ÌÔ3V–f¡äNŸOoãÂà »K?8°jçU×Eo=gðO‚ÑC½ sQ»ÐùÔÒEÐÞ)Ì™çaÄÍí93æ'¸pÕÑé|º^ÍøS£î*¹¥ñʧ±ø|zÿöíÌ™:8à§cѹÍj†zŒ z,Øèá÷¼ò_\Íê·F V³úa ‘ôqf+ØW/˜‚Ià?\)!˜‚Ià?\)!˜‚Ià?\)!Xü/Oõ½ë~#ß&( GfÉZ-­”2ØÆ‡)?Ì&¶|yÁXÁH”/JéÀ”ÓG‰/ùÀÌòyð Ã8K“Ç8S0‰ SÎæ À”R['ÉaÒLúqö‡„™•s™4È’~œý!aŽìS³‚I.¥ ¶ F¦”2Ø*™RÊ`«`dÊŸ2Ø*™rô0¡›gvä+€‰Ø<³#_LÄæ™)$ŒÅª‘›gp»MæYûSäæ¼d[8˜çînˆÍ3x%ȶˆ0¸G&jóL¯Ù÷ÈDnžÁ+A¶…„ÁÍ1Q›gðJm!a¬›gðJ&@‚7ÏìÈ×Kгd!»©ãHÑ`ŽªgŽÿŸqEÁȳ#SÌZ SÊ`«`dJ)ƒ­‚‘)¥ ¶ F¦”2Ø*™RÊ`[8˜£ú `Ö¢`dŠ‚Y‹‚‘)GSÊ`»qÞFãÎ&ŸßÃþB$ÉM»Ñï`24È@Èq>â(˜(wÇùˆ‚‰txœ9LÌ G ¯ºÛ9¦Îhq}õÛN·³7ÑÓÈpCÑêsâ;†‰áœì‡Ú;¦Îh´7&v†#t:í[¬Þ䬺­‡Àf4rs¨€c(…I•N? GÓ~LÜ GN×þ¿é}ß~n=¾^j·oB`H3AAˆûÇR£¥yûê\ÇÛ^$Ìá Gb"búœ+{pÆû«³(ÂŒFXŽ¥º¶¾êÙ:N£‡Ùá GbòÀu(W9Š¢†aF#ˆÛÖ—/pÈ鮣˜ޏh¶+ûs•_}CÑHÌ,£BôŒp7ÃÑæÌüÝ“…Àf4sj†¥¦·º;gÐQLÜ GkP?‚¶µ´0ÒŒFÞj6I•Ná²p“J¬jL‰µ)k;"Ì…·8ú]ç,40ËÍÇ·c€ñ» <ÎGL¤»Àã|DÁDº <ÎGœ$_ú¤ú5œç:éWx¿ÿ9©Å~ôTÙç%d:!ñ˜†övúMæ„tÏ(Óf jœt03R2g)ŸØP&L©Q&s–†ªcf÷ C4c]!k™´¡\ÈZ&-̬üpF9ÎH¥‡7ÍÃQ/§~þ †§¡)“eµK #„âÿ@ψüð¬0œ`¬~.Ê“½*”Û ²Âd® åÖ¬0™Z¡`2Ö†tKv˜lë3é?‹²Ãd¢¡Ý]D“†ì‘+0éÛ—8• LÚ%z  LÊ&¦Î1H“ªÉ÷Á¤häÉ©`RÔŒ~Ó'LòU–>+'L↖°—&é´‘.•&ŒmÒ”0‰[F[R˜‹€”ýë¤0 h¤$¦…‰M#çÆb˜¸µ”“ù™&Þ’&éŽr˜X.)%7=LŒV—u+=LŒ&+Wº˜ƒu•v” ˜Cë³´$ö2`ÐÈ»yM L4¼§ ȉj}‰wJ‚‰XÒ$>öAL(ÌÛ=¥Á„ÑÈ|‡<˜àjK½W"Là’&õA)a‚zAî Ò2a¦Ü'ØH…Ù«»ä;ד侟<…$|ª¨‚Q0 FÁ$†éó+/¦á@ÔÛÚ4šáïìŠïŠáhÞ‰–'Œñ¯Á»¡»b¾S¦oNÌÁç_·aÖ €™6·®ÎÈ;å 3iᯎ~ß)h»W´5ŒÉØõ Û“|`ô»éh5«j1«[ŠAí?0m8á³v˺ç5»añuŸŸOx«ÆžLZÆ Píœ ‚•Y[0xã0CóW –ó0ƒVeŽV©Wêlqã¸05öûÇàŸfë ´¿5îŒÙŒ³eãçÁ‡ÉÓ‹›Îè7T¬aÆÝCsu]÷S€AóKv?0 _+¶ ÀÜ~„“ܱîjsÅæ ~e´OÙ¹~ŠŠ5 »yb ˜áMÞŽ&̹øÃÌ=3yꘫBÀ¼~߸› OmniEvents: OmniEvents::ProxyPullSupplierManager Class Reference

OmniEvents::ProxyPullSupplierManager Class Reference

#include <ProxyPullSupplier.h>

Inheritance diagram for OmniEvents::ProxyPullSupplierManager:

Inheritance graph
[legend]
Collaboration diagram for OmniEvents::ProxyPullSupplierManager:

Collaboration graph
[legend]
List of all members.

Public Member Functions

PortableServer::Servant incarnate (const PortableServer::ObjectId &oid, PortableServer::POA_ptr poa)
 ProxyPullSupplierManager (const EventChannel_i &channel, PortableServer::POA_ptr parentPoa, EventQueue &q)
 ~ProxyPullSupplierManager ()
OMNIEVENTS__DEBUG_REF_COUNTS__DECL
CosEventChannelAdmin::ProxyPullSupplier_ptr 
createObject ()
void disconnect ()
 Send disconnect_pull_consumer() to all connected PullConsumers.

Private Attributes

const EventChannel_i_channel
EventQueue_queue
 Reference to queue shared with ProxyPushSuppliers.
int _maxNumProxies
 Upper limit on number of proxies.

Detailed Description

Definition at line 50 of file ProxyPullSupplier.h.


Constructor & Destructor Documentation

OmniEvents::ProxyPullSupplierManager::ProxyPullSupplierManager const EventChannel_i channel,
PortableServer::POA_ptr  parentPoa,
EventQueue q
 

Definition at line 62 of file ProxyPullSupplier.cc.

References OmniEvents::ProxyManager::activate().

OmniEvents::ProxyPullSupplierManager::~ProxyPullSupplierManager  ) 
 

Definition at line 74 of file ProxyPullSupplier.cc.

References DB.


Member Function Documentation

CosEventChannelAdmin::ProxyPullSupplier_ptr OmniEvents::ProxyPullSupplierManager::createObject  ) 
 

Definition at line 82 of file ProxyPullSupplier.cc.

Referenced by OmniEvents::ConsumerAdmin_i::obtain_pull_supplier().

void OmniEvents::ProxyPullSupplierManager::disconnect  ) 
 

Send disconnect_pull_consumer() to all connected PullConsumers.

Definition at line 90 of file ProxyPullSupplier.cc.

References OmniEvents::ProxyManager::_servants, and OmniEvents::ProxyPullSupplier_i::disconnect_pull_supplier().

Referenced by OmniEvents::ConsumerAdmin_i::disconnect().

PortableServer::Servant OmniEvents::ProxyPullSupplierManager::incarnate const PortableServer::ObjectId &  oid,
PortableServer::POA_ptr  poa
 

Definition at line 37 of file ProxyPullSupplier.cc.

References _channel, OmniEvents::ProxyManager::_managedPoa, _queue, OmniEvents::ProxyManager::_servants, DB, OmniEvents::ProxyPullSupplier_i::disconnect_pull_supplier(), OmniEvents::EventChannel_i::maxNumProxies(), and OmniEvents::ProxyPullSupplier_i::timestamp().


Member Data Documentation

const EventChannel_i& OmniEvents::ProxyPullSupplierManager::_channel [private]
 

Definition at line 73 of file ProxyPullSupplier.h.

Referenced by incarnate().

int OmniEvents::ProxyPullSupplierManager::_maxNumProxies [private]
 

Upper limit on number of proxies.

Definition at line 75 of file ProxyPullSupplier.h.

EventQueue& OmniEvents::ProxyPullSupplierManager::_queue [private]
 

Reference to queue shared with ProxyPushSuppliers.

Definition at line 74 of file ProxyPullSupplier.h.

Referenced by incarnate().


The documentation for this class was generated from the following files:
Generated on Fri Aug 26 20:56:17 2005 for OmniEvents by  doxygen 1.4.3-20050530
omniEvents-2_6_2/doc/doxygen/a00028.html0000644000076400001440000001354110303671741020056 0ustar alexusers00000000000000 OmniEvents: Member List

OmniEvents::ProxyPullSupplierManager Member List

This is the complete list of members for OmniEvents::ProxyPullSupplierManager, including all inherited members.

_channelOmniEvents::ProxyPullSupplierManager [private]
_default_POA()OmniEvents::Servant [virtual]
_managedPoaOmniEvents::ProxyManager [protected]
_maxNumProxiesOmniEvents::ProxyPullSupplierManager [private]
_poaOmniEvents::Servant [protected]
_queueOmniEvents::ProxyPullSupplierManager [private]
_servantsOmniEvents::ProxyManager [protected]
activate(const char *name)OmniEvents::ProxyManager [protected]
activateObjectWithId(const char *oidStr)OmniEvents::Servant [protected]
createObject()OmniEvents::ProxyPullSupplierManager
deactivateObject()OmniEvents::Servant [protected]
disconnect()OmniEvents::ProxyPullSupplierManager
etherealize(const PortableServer::ObjectId &oid, PortableServer::POA_ptr adapter, PortableServer::Servant serv, CORBA::Boolean cleanup_in_progress, CORBA::Boolean remaining_activations)OmniEvents::ProxyManager
incarnate(const PortableServer::ObjectId &oid, PortableServer::POA_ptr poa)OmniEvents::ProxyPullSupplierManager
output(ostream &os)OmniEvents::ProxyManager
ProxyManager(PortableServer::POA_ptr poa)OmniEvents::ProxyManager [protected]
ProxyPullSupplierManager(const EventChannel_i &channel, PortableServer::POA_ptr parentPoa, EventQueue &q)OmniEvents::ProxyPullSupplierManager
reincarnate(const PersistNode &node)OmniEvents::ProxyManager
Servant(PortableServer::POA_ptr poa)OmniEvents::Servant [protected]
~ProxyManager()OmniEvents::ProxyManager [protected, virtual]
~ProxyPullSupplierManager()OmniEvents::ProxyPullSupplierManager
~Servant()OmniEvents::Servant [virtual]


Generated on Fri Aug 26 20:56:17 2005 for OmniEvents by  doxygen 1.4.3-20050530
omniEvents-2_6_2/doc/doxygen/a00345.png0000644000076400001440000000206610240451500017665 0ustar alexusers00000000000000‰PNG  IHDRütSfBá!PLTEþÿÿo___???ŸŸŸßßß¿¿¿ÿÿÿ/l:ZtRNS@æØfÃIDAThíšMsÓH†ù 9îž)ùµûK‚r d‰1‘ŽYCaÙÂÖÌQ²Íܰ#Y3¿r»ga»R‘)“Ê´|pÞþxjº[R¹*ä^íÁ¼ÁüÜÛ™Ý _áT7­dðÿ»â {èÏ5OÂmT[}F¾ý üyý¬?×F2ítƒf¾—nó§ýÊø§ê3·t9hö'—ý©DZ?òk‘æ '‚æCÅ«Z‘ÊF$R+³ÏdZ* ñrðBzÉw áeTÅsøRDy”sÑìi|Nóãqý¼O¸L…ëH.gøN¢8 ùVÔzëŸ^á9^¾Z½ ½r…Ÿã¡? ¿°•x)…ÿªžá;jþ+>ñ¤ÇUøÉë#çBS´8~Ä'ÿ4v„ÇÕ[Å¿}ÎÂ×x騸TB„óWMˆáñÆ[Âw:¾À˜Û5Ýü@Ïþù—nS‹2 D`í•Ù7Ç–öâ^âô­|(XÉuÖ€«dƒï&_ÖIŸ²¿”€qìQÈTx^`”o5­&; ?ð.ÛŠxqè´ËË'qOš7®“&„Ûœ ½þKí3%(<†L¡rˆUPB<£ê<ϸ½¯š¿€ÇaŸ@š”žÂ¿tgK€þLD‚%…rôIuêÁ2P¬2•>“²àd#WfÿìoÆYF4žÕðêôlø¡5ÅSbëNC÷×§Wž^°p o¼%|Þf‰3°tóíëÙ#gÿ/µYakÁvÉ•Æ÷¸ñpöP$ôhü)jñøØY™}+ñssµîÁ|órÔ‹=öN·#*šdºæê±ƒ›OÔÍ€WÚFüíì¤Bnu|ÖÞ+þxíka[«äwzãü½ÄïÏ Þàï'þœgÈÊÒlIEND®B`‚omniEvents-2_6_2/doc/doxygen/a00347.png0000644000076400001440000002622310240451500017670 0ustar alexusers00000000000000‰PNG  IHDR{â£Èr'PLTEþÿÿ¾¿¿˜2Ío___???ŸŸŸßßß¿¿¿ÿÿÿœÙí¦tRNS@æØf IDATxœíMwÛH–¦u<ËÂÈ£ma1çxY¹-;Å¥Gmq©,É)/»49”–]j¤€eµ»ÇâÒ™6-.útI"Hp¡¡DâGMÜ@ >"@Æ+Ë"7..ãa|/vRsu¿SuJ%¤ð5Z _£¥ð5Z _£¥ð5Z _£¥ð5Z[†Ï¦qÕ/…hËð‰kt…¯)|–Â×h)|–Â×h)|–ßèÎñ²È{Žs“fì¾µ öñuÐ)zk|öÚW¸ fýÂ?×G)|Ÿ¸™Á\õ¾ Á‡àÇF6Yº =ë?9%ÎÖóWRØEöÓ¹åÚ`®ðU¨ÈàÁgá1òõØuœ‘ïãï]°›áNé¢7&úø“ÂWµ–K—¾ÙQo4||ÝYìp¹é¢Ó¿¢!RøªÖòÀ!ŠÏ0 4êâiîÐÇ7ôç¾i8BäõÐðQá«ZËÃöøÜw‹ÞÁ"³ ðž†ÁÊý0jû…hÚG{Ÿó§aÔSÕÚJ|õòTF _åžÊHá«ÜS)|•{*#…¯rOe¤ðU¾Ê=•Ѷà{xùò%Š<~/̧¶ ÖŸr.¼ýÇrã?Š.Òõ½)|ëR€/× ò¤ˆËƒÂ·V=Ћo}ȱ¤ó·&m¾¢¾—ìJÅø—Uw¿ÍÇ´r!½èæ .¤ ¡Lm4¾‡•¼ž²2>ÐŒ‹~*SiÚP|«+‹Ün’4~ C› n¾`AŸÒž¹8’Uè–% Ÿ•M‚›ïe66*­àb^•T4 6_Yj }Ÿ¤Å±¨¬`ñ £êaåHË{„O8µ…¾OÅÇÁbí€OµPheeÃ}D¾f€µÆ'[¨”/±”\+Àšâ[8_ieß?ð;\#ÀÚá[û¹àTNß§Sû\ÀZá«â$pægCå¡8é-BµÁWÕç/™”ʾÖòF¬¾‡ªÐ¡Œ¡“¨të¯c­_µšå|¬^jò \HSVŒ¯ê¬sÞ9ðÉA«ÄWíGe$Îm { °:|UP Ê@PxR_gUøê¯ ƒ Pâk­_õ×øå!fôô]Éz½Uà«|Ê TÀG >iׯ.ð GG¡ø$E¬ßšN&Ѩèþ"¡®_áÕçëSq(Âc?‚®_=V,¾ŠCÉobfÑÇ#Ô( pøj6t2LÄëx㕸|uë| ï¦õ„^ || ]u2Û–7@ùøjF-žµÏy/_݆N¶xÖ÷Þã;#_£;ßZß|<eãkvç[søì%ã«Ûº…u0X÷» d|u£Ç¼Â[û `(_ÇNTÉûàvác‡QÉðAP.¾šÇ½in>•+YñRˆ6_Q¦é å%²Ž*–¯<ç%xœq*ðÿ°H9¹—ø”^*>Yo]ÉIø©ñIÚÔïj‡‹ñSø ÜWŒ/EQ~ _ûœ×P¾è;J*>Y+…/”ÂW྆ø"!)|Eî³_„ÂÇ'…/”L|ÒyýöuOî¬e™ Gƒ­4kǹµbw=å½ñÁŒ"72¾Iµ^)U\õ›©ÍÀw¹ÿ·¯Ë²GdFÔh±Í6>¶cÕ ™ôø²_…ßÌä6âË–g‘§è9|²Rž¨˜ô›£å;ªÁøÞ’KÙq#{ùÀ¹k¡WâðMÛð/RjŬ¬òdń߭Ÿ´3ž~ûöúä®ÿÅ9÷:7äìè©åÚèà ®[Ï£ÿ¸îÁÖ >ïS÷àvÖüð™Öà:Ï®¿€êŒÎ§£3kŠÞa/ê>T¾ç.š÷ÍÎ`oþð®,„ñ^°GˆëºÜÊ!>Ø6¼îùëÁ ~ƒ‘À#~s´øðÿž{3»™½ö•oÖŸ}˜î_¶nç¸9¼ó:Ç?6ºøà½Ÿ_´Þ\ZŸÐ+dÛ®=öZWÌnæãWƉõÖøŒîºQ÷Å/Ã[ü?6[g­3ðçãë S„=B\ž5ÀQ¡é}ì bž¤"tÃýË×8^<â7G›ƒoì’ó,²téÚOçž5û@:wî[;Îåá0ï_~Á}å ²ßÌöÇ.î `f¹v<ØD·Ä‡#>†·<â7G ž|0Ù½Á­è8}‚oþó{bå°Ý?ŽÑÞçŸ~Ïÿr@ð}üɶñ²ÂqF‹Ù2/sôŒž|‚½¸Ø£ïãï¤W“¹ïéú{°ƒ'Žø+Ž øÍÑFàƒ¥Kßé_ñ‹w-Ã@>>ÒûÑüs7Ý®ƒû#˜á½oŒ N|d’À7;jc/†¯;ëkËÏß“ K—ù[¨ˆ»¡kŒ]øÍÑFàƒ‡>¼2÷zhºÑòÏn8÷‘užûŽÌ.uñ,óàÛóñ=ÚþÜwȉ¬ÿ£ø |ƒ÷‚=úø†ÁÜå8>O®xGõ "Nmøñ›£À‡í‰¹¯=í#tpK–›'Ë•'yëÜ>~ÀýàîŽóHG¯È»÷ùgåÙΗù:"‡íñ¹ïö‚=B\OÃpå å8>OöÓWüéÃ#Þ7D¼÷ņ?Q¿ÙÚ||z³Zô nù<÷øÊ¨Ëåw{ñ¹½Õ²Øáÿ:ññùÝ^|W­Õ²iâÜcÒ}Öä§ðñi­Ÿ8(|¢¥ð…Rø(Üg¼…O _(…½Â'NÁEÇ/i¯™vœ0^伂/cò[½Êz×דåÿ}¼²uEEM° øj”Þ%­a€oµ<öD/O“ñ±ßY³töEj|“tz |iLj>>ßå“gÒ: øô”â¤Ñª _8ÍÃ÷À|Íò™ûhw÷"Ìî ¾rüŒïå÷Œ7kp£2ºW²³3I…»eù5ßKvkÂ7–L¥7I”NÒ'Hžpš…Ïÿr"ã\¶ò=UŽý›øÝ)µS%a•žüŠ/ÀÀèwøB@zúÆÝ‚F5ç(àî¸øî_äm]·²÷ñÎ`"îKûRîµÜº«3ÝdWŸˆ‰¦9ø¸ÈÆ÷–_7 _Æ0ËMcðq`?NLQNý¢i,m©ãb!Ñ4_‰»VÁ—=ù/B2uþhš†¯\bBßtÊr1¡YBNR­Jt¿†á+™VR¾‰NS9Ȫnªš…¯lRPß3L aG£ª«§ów¿Fá+ÒU>Ú¦ËĤsÆÒ,|¥ÝÈÁ·«QVÍÄwÏK£ð•¿’|I §½²I/–&ᓸlä÷Aµà ¥gnáí~ÍÁ'"—¹p|;:KÕc#Ô$|BÞ|ð7YÞ“³û5Ÿ;ÿ‰ÅGy´°P."F_š‚OLf¡ø¾c­˜‹¯û5Ÿ˜µ«@|Lk_Z‰­j>A7M‚8áù”UËÝÊuê¥øD%Õ†ë-wëãvÎTŒ“üK"²T4»é>OØý¦ÅôâØŠs::3 ÙÔi‘´Vé©(AEøxº_ð‰ËG(ÂÓýNìÕ¼2N¾·ÆgÀyÊ2¤yÖÙƒi>ö–w±«Åãé!“à³Ñ)àƒÑ߉g×}9 {\í>ÙÜ*|™Ê¹œE>ÆóžµÆ'ü¾q s/ˆ`L£5Ô™ÜÖŸðt0ôÍž .ûˆÚ’môTøÒ4)¸Wá£ø{nRz,¼ˆ“9²"‡|¦ _š(.âd}AºÓzã>vR᣺ú14–‘iôTø¢ûÚD|L§=kŒOÂí¦ ]N(ñé ¶ ·Kê/žHÄÇtÚ³ÆøÄø¾óÅxöÉZc°Uø¢KŒDáhÕ3“5ËèY_|ÆÎ\ŸLYØ‚cñ¬ðñød|õlÁiLÖ ³OêÄH¡˜^£sóúâ“0õe¦dÿ²,Kt¬°è¶Ü:¾> uŠ”Šëu³D§1úfX¨n=>ΗÍ23kŒ¾7_Jû0Þ;1E«·_ü¯?°úg…—%æ+ß7߸| ¤ðÑhsði̻Щ->VQп$y:µ¥ÂÇ*V| tjK…UkÀ§Q[*|¬bŧ³ïB£¶¬-¾”*~Ã]8ÇË"wì9ÎMZ}\¾ŸUàbOî»Q+²Õ›Á£;„žòÞ(Á6굋Nk¸”FmÙ8|îoÆ;kYÖò #ò=‡O<ãןbµ#€ïi?¶Ý? ™ññd*Ó¨-‡oÚ†K%,žâfrKXø<„.#[ݱ»z%ßÁRf¡ƒ2h¤ i”¾ˆï¹‹æ}³3Ø Áu žB‡È„T~^ç]÷:£®gÁ¦5ìMv½š¶]  íf×=×ôÎ 3ÛëÜ"ü ƒ'¸øÔ|@GãÙõp:£ó)ÉÖÒ¾"QÐãÓá¿Çã ‚oºùïÿiåÕÑ(}7ŸÌÖYë ÝÎÇ>¾:…Œ~^û 7Ñ`ÖŸ¡~àþÝu4§¯¿Îû €ð:︸æìúÈ"O/[ø÷5Æ.Þ#Ûví±×º÷èf>~eœþNº ™ñvl·‡Ð2óÑrþó{2†âNKðÁ꛾ d|úe<ÿËÁ÷ñ'ÛòÚÑ(¨_“†ü ¡÷™Þä¯Ã¬¼J:•ëx ÁG–. |³£6dôóñug}°óñ‘Þ÷{ }ús€Ïµç62ºÑÞG\à-WØk×#øp÷íyËà›â¹ÖM÷/Zé ò*éT®ãA49pˆâ3 º$£Á7 ç>øðÜ÷ôËy=¿·×%ø¦=|àO/ðÜwáÏ}‡€oúàÛóñ=ÚþÜwȇ/ü´¯Ž^õßÞ矧AžÀRøÐ¢:tjËæáãÒ´•µÅ ~3õKbsÕÒS[]@,ô>¾P‹—OzŸiÍQÇÏá¸Ì}ô>äZ™øDt>uÖ…GZð÷Î8„ôq^—à‹æ>Ã[ÈÜwÑÊħ‹Œ¤X ßBaÇÁëKH+OH„É}®!Oáã’ê:vd·”™²eŸ.$ÚRá‹H‡ÿÊàpÌÒ¨-¾ˆ&$}\;uä=KnYÁ§‰‰ƒÞÂã'I|‚:ŸÂÇ+É:£&( z? _LLý'Ùù¾…Fm©ðÅ¥1Ø&ð‰9h` Bá‹‹¥û%BÔ„¡s„ ð1´B‡|Dµ¥Â—*­È Úù&…Ö¢÷¾Â—ªÂþŧ‹Þ»Fm©ð¥K+Ø OôЩð•W“—KMøÎé=*|ÊmÈÐ)žÂ'@Zö¦‡epå²¢±ï:!…/K9Ãg¤Ñt»Ö¨-¾LéY–C§”¾§ð Qæ±û"4Iô>!Ê8¶è|2V-D:µ¥Â—#=µ4ŒL=…OŒR‡Ï°óíèÒöKïYáË“¾Z4Hl-…/GLwÙ\-ú“ÿç¿Xî³É*Úrûðq7êúö¤S[*|ò¤ðIÂÇ,…I:µ¥Â'O Ÿ5ŸFm¹­ø.œãe‘;öç&ÕúÂyŸçìàÿç§™X~õ=L©ðIiT÷7ãµ,ky†yŠžÃ'îgc¯›ãì[-ð¡VP¦ŒTø$ˆ4ê´ ÿ– $Ÿ&íšÆ«•ã{⑆¾Ø$­ÌÁ îÕ6d1LÓ–â{î¢yßì öhp݃§…Ð!2­©Óò:7èº×u!!¶sqa¬f×=hI¿6DÃÞ´ö,R†½tH#‹</¾éþåk¼SÈb˜f¹¥øöñuÐ)zk|öÚW¸Ù³þ ͈úÑ8+ïœä¦ókaCt×}>‹^')Ã^pU$ßs×µý”j³c’Ïpö!Ír«ñ!ø±‘M–.CÏ:ÂON¡É0>ߘà³Ñ'°òÎÁÔ:ECt…ÎPwZRo2ŽŠÀ‡|¦ã|…:N?ÍrKñùƒgŸ…ç¹×c×qF>¾¿wC;üî'VóŸß/ð!ÌHŽsnC# Çç÷>Óòk@>C<†§Yn)>²$Ià›µñFÃÇ×õC»Aï›CbO7è}Ø—}AOm9½oŠç>Èké ‡Sþ¤F/XÜ&|äÀ!ŠÏ0 4êâ)íÐÇ7ôç>l·×…¹Ïn2CúµÞBÙ|Œfc2÷‰Å§#²ò„¼†¾pï‹ R´­øÈa{|î»Eïð›Þiƒ§a°ò$‡í°òÄVxå -é×"epL1˜âF–€¦ÜB­_ÞM^³´Í'Ítò?¾H#)|uÙÉk¸š¿0E Ÿ`]á¦o•Ý“Nk¨ðI”Â'A„/Ú® _mö¤SÚ)|2%_´$âãA!ßîî®.Åqš>ÑÚõõÇ‚ lw£Oþ°rñîn²DðeºYlPÛ |_Õ‹Ø3me{±‡rZÝcªbM´Eøòm ‘ò-Û Å[ Œ4*«DN¼Ç·»»ó‚‚žžò5#ÿM ‹ŠkEZ¡h]øxž‚ñ…ýeÂL/õ[bµÀo¡ÍÅw¿óBµúj‚«•$}ôLÛ劭º¡øîwv´ÈÓ"z«›µ•äw?î •ºË¤¶_‚*<¤ZÝœž¤x.#Æ(Ñ@òðq‘(og‡yzJA’‘ÞÂòøi6/Ï7 WïH«’‘Üëì{ “Vl²zï¹ÁÇ;²½H+Ô³ö!6y<Í>£Ziiø¸¦>n|÷/xWôé¯_˰†È>õB‹äйøîw“Kze¼ü\Ü;Ë—^dÒ¤ÍÇwÏÏ.;ž[©Äs”»OPJãHÃÇ7 2×*/DÁü&>“.H/ؾ:t6ßýÎ k72³‰-OJí5KzþæÔᬹøðJSãÚÇRz¦ï‚ŠRºŸž¿9µidáã›ú¨ñMDœ;Î^BâÑJï|UzîÖ´¡³™øîÅœ÷Ïéb…ødäôÌu™NO>θâj“G qéÙ›ŠG ïzζ¬ÞÐ0|åš1å}SÀÑEű–½é!«]$áã; ð „—OˆŸøî§enÉ¤× |«•R®/š•¥.$Œˆ´Ì-Ù­" ï¹Ë¬z“Ýï4N—éÊDƒOx÷Ó²6d,[@À¹ìA”´Ü­TÇuù.Ø•å/‡ž$|¼cg*¾ÝïJD’¡>TøÖtÿ¾ÃqFf¬l8ñ}FDAO >þ±ð)à·ûyðv%ƒnY Ç¢¢Æ;|C´è}cdDñM„ßçR4ô¤à+q±æ÷G x¢É&™p ¸e%‹J§ˆã>ÜÁ÷¸À÷Ö8Œ­EõòádÄEE¯føvþ'U°ÔK&#e Ç"¢:Wyîðí}þ9Ä7uÚI|%Éû õ@GO>Þ±s²»#/³ÄR:••FçLäyk}ùð%m;HÀLJÀ?RòL¥NéŽÖŽÅm×C2ðqu¾ð3…"|AÞ¶¢Ä÷ÿ¨vT>œˆôàoö‡³«ª¾åÉ1ù½O£3£ý8Aàè©ù¨Nx|Ìv#!HÇGý)&ØåN²{ÑøX;ß$v¤P|”†‚ñ1u=T9¾äÙ1éø4Ñ–ô‹=1v=$€•‹¤ãÓ©-)g5+ŒTO¬]‰ÇÇÒùRö-ÃJƒÒTØèùð?8*‰ÆGßþ“´o˜ÈƧ ·…ïå÷G­ªðe|$T'|ë=aÖãq$娙y¹´d|LGikÄGf=G‚ñQ5ÿ$ûriÉøt Öå܃§ÆQuýørÓæÔ ˜ÒøÂ§ÎQW,¾â±³àâ1¹øX[Z£²ÒYÈiy¬ÇãG,¾¢Ö/¼òO.>ÑžnU©³†ÑCäXÇP|â‚ézᣫPbôŒ¨ëÖ‡ï>5ûTBRñ±¢QÕàÆ—8G¦s¸Š/¯ñ龜W3|YI—bâÅ—hÔ¢è9ü>¤œž.ØKªâËì|ú¯ ÉÄÇwvr¢.¹Ø§~¶ 3»Y ¾¼ Þ“ª>4)LÄêøeúÇzù;ÉØµ8|éMÏöõJ™ø4Îz… ÈÙðe~&«1¹ v- _jçc7‰êŠOå9mÒc÷²8|iÙ&™“WIÄÇýÁœ@|9ð*Æ·ÚùR?-D|¼‡g7@Òè<½Ì¿‚ÒKLÂð%#cïyi^Jç¬Gqë"šŽý2cÁ²”FQtÏ‚ð­ÜÝCãrSC|7¿)ìØ…ìPµøâíξª.øVx{ïÆ‚;¾üÍ]5Žåãóèn )Z«áÈÃÇ6õå&`"…I ŸÂ'P “t&ë*ðé^¾T)|uÆçÚc÷ݨ-Ǿ³®ðÕ _|êÃøžöý)Z2~Œ4_}Z6íÈÃ;xLkt\ÞÉ*yÄÏÇ|l#oíøâ'F0>¡e)•\ IDATËhI¼9ýgÎqÔÂËø&ôjù…ó>%ù£¹øIÀ7ú·o¿\/Ûxoüí[ä©c‡OÆß~ÿ8¾e€ýë·ÖI>¿½ªðy[È{øÎ 3 ®Û¤Ô„|shØ#v¤qÝߌwÖÒEË3ŒÈSô>Y)w?{ÿ™/ìäÂñ Îà_„Êu¬ÉOñƒ~rKXø’~²µŽ4|šÿÇ;¾|íã›]Yßñ™”šoÝu‰iÜiþ-•HɲxºR÷3ð…ŽÏ>qîÌþþ´5u¦Ö<1¯¿;ýëÚï?:Öž{2¾†Lëéb€Îöœž¡s{¾µ.F¸&ö3ºvÎgàŠð\ü8縞SÉà©ù‘R?:ECߎ4îsÍû~vÇÁu rê tˆL ÷RHìxÝ댺~¶„žZ® ½^÷pE×ÀÂT’ð0L%)mðã_¯¿×Þk;³;ÏÇ·ïü³ó¿¿ýëøìîcÓ[óÖ¹ÅFÿ×™ŸüŸoüpygÞ\A@ìpÍ1éÊŸz{ð¾ÇÛÇ[oÐùº7?©L{~ïCˆdoÄíh’RÓÅáçDcß?ð³;ÞÎÇ>¾FŒ{)Ii fýš‘Þ‡}€Þ i!-¨èâGa*Ix¦’”ŒÏŸgÜâ°ty_ÿ;~òÏ~§›c%ÂKœ'\|<2œ û ||Î×ûêùì>oDÞ·WONõ½Ï%sŸIªÜhï##Ép…ÍÈÒeèYGÐKýN7œârd?CïµIú:«#ü8H%i“N~Z€OãxY+ƒgî}ƒ¼Lñßû_O“ ÞŽíZŽó/}Rîþó#ü?W}\ò¼(òñõqðÏùøJ$#Ì™Á_ïø¢5œ¾i8à‡xî;Ä¥þÜwÃçž|ž_¡—úø>þNfJ2÷½ {/¡g©$¡v˜JR>²äHà»ý÷3Çs¾ùøNnÍ%>Òû~ÝsŽÿW€oô|ç‘ü\½ÂÞ‡çĪñun!iŒ ?ŒÚð0¶òlÇð‘¥Kßì¨ ½ÔÇ×õ‰S\ŽNÿô^Û_º|A*I›ŒÑ†\|äÀ!ŠïÛ·oŽ{‚羿ûøžÂ¹àÃsßðÝ“3¾ð žÏã¢û7|às ž'û°ÅÇ7è@Y%øÂ£öÕÌâp|¶Zº-Wž€ÿ^Ú L_ëoÏÁ2Ó?lÇ+Ïg²…->>¿¬9øÈa{|î»EïôR€ò4 WžP>í½×~‡í6 RI¾0•d&>®K©JŸ4ìñ×M‰GÒÚð]á=þyu>²›®VpÒ¬|_ N°Ô‹*À§ñx)‹ï.õ´h^´<•šÏFã»Â¯¹•±¾ëkö‰ƒ´?Í|í½óf¸uÃ'kí¢³™¯ï­Œ¾T­ßý î{Kn >Í|}øv¿+sO׺á“5ùilæëÂÇú ¬¤dÝø›[õÀGõî+¸ô:_Ë7WSU;|’FOM´ÃâïQø(EíðIê~‚o4»[üµ# 'åã¨>9ÝO0>Š/ýJ=…O“òO½â“3zоKwÙÎw/„^ñÉé~šXw%;_ÑÇ©ýl >]¨·I¹Î'Š^ñÉ=u±Þrn\,aôj‰OJ÷ÓE:Û-µòG¯–ø¤t?‘7J_:wí2ç8“ª%>–;ØÑJ >ÞOw|}'( ¢Zâ“2|êÂØùÒJÖçg ‹^½ñ æ§—«ÎÍ@øÁúRõÆ'vùYî¬5wí{½Ô~ó}ןÐåK9|g=) çõÆ'–Ÿ^¢î²V¿J½Z²”TzµÇ'”ŸÎ_5²leÂÇq/ ÕŸH~%FOmùŸ¼E‹¯úãÉOç­¸h¥ƒ[dvnÂdeð&+K‘Ä%g àÈO笷:/[fû*LV¿a²²U‰ÿ|h5°àÇ÷Ä‹>xîλ¦åYA²2?iËi:>™ ‹}4Ÿ0~œø–WAþ+ÿ$+Ã?F˜¬,)9ç¨j>aü4žJ‘ ÷¾sÀ$+ƒŸ0YYBëi׆àŧûE׫Ç-‚ïq/LV¯#ôrÀl5_ö=C™Ä/¾•'Æ$+ƒŸ0YYTe¿¸I­Æà˸Ý2«4Ö <ËGéÇ 5ŸÈ|ä®3ïbMÚ$|B>@ÒÙÌ_,ÎŒû8ĵ–g¨fá0€êLÖìsåzÛ³aøÊ L£'óÇëZq†j¾òPg°Õ}¯ãDK|‡ÃW¶2t?Ö¶Yë´GÔ@|%; ýtÆ:ñUДÄW®j”vZC_•´d3ñ•ꀴJgòÊ[šŠ¯LÔ¨¬ØN”ΠȧÆâ+Ñ5#¶ŒªZ±Áø¸; ÍèÉrªó~ý+Î宫ڳqv@]ˆI(É“åªÙøpäX<0¾(´XøZßÇ )j8>ÎT/ØNÄWÑ’%Tãñá” žOúTgå­Wy"Ä<‚Nò—&¥îÛ/ÓFàcŸõ¼|Ž”M²¶+"r´ø˜NrðÑM|Õ.YBm >F€9ÉpéŽø*^²„Ú|,'Ùø¨è}W—VÛ$|ôsÒøëŵë1nm>Z€“L|dê°d µiø Åq`ÖèY¼lyQŸ®‡6¢:Ÿ¤â+<^ß©Ysm$>€©£§VPgÍבkCñQLÁ—;tæ*V¦ÅW peôÌ:ï_$­k¡æã˹ÅáË?åÞ1yóÄ?d›îälsäßj3SÍÇWaãUÂ×è¾FG ð5:…¯Ñ(|Ž`Sð]8ÇË"wìe|—律îØ}7jE¶¸ã ã€÷¡“â*цàs3ÞY˲–g‘§è9|â¿þ«`|Oû±mîø10±‘ëFP6ß´ ÿ–‚ìGiOñ3¹…`|B—‘-nHÅ;Dª÷Éi¼ç.š÷ÍÎ`o€×-ŒÂBè™ÖÔiAÖ¿ë^gÔõÓ°`ZÃÞÔiwЫi2“9d¾sÂÌö:·ÿÂà Õ?]¢§34»þ®áÏttFêF"¨F‚σfë¬u†nçc_Bº?’ùÏÌú34ÃÜ¿ »îÆáôõ×yÿñøf×GÁw|Ù¿¯1>¨þÞ3-ÓD^ë \ßWƉE¶D#¨F…Ál²tzÖ~rêwºoŒËÑr¿£Þó9øÐüÕ€à³æ}üûul’ê]ïo­¿šÈÅ}\ã?=òo‰FP6Ÿ?xFðYx>|=vgäãûø;il2 âíØn¡7&){î°¬\‘kÍ ú¯ŽL4ÿËàóÿ<‚‹ Uá+¡åÒ%ovÔÆ _wÖ;é}¿·Ð§?ø\2÷‘iÐö¾ ú?ĽðÁè}dK4‚j´!øÈCŸahÔœסoÎ}ðá¹ïé—!òz~Áp ø¦=|à€zÇxî»ðç>Rý]ðíùøö,î;TøDhyØŸûnÑ;Ü+6´ÿÓp¹ò|¸ø^ÚLû>¾½/dîûaÔ†‡±•'©~un¢ÇÑ«>v ü•g[á¡7m¥•š(ÿÎ è—Äf…¯„J4Þe7­´߯[Q”Õ6㛧眿™šFϯ–Š ´¶ßD ð5:…¯Ñ(|Ž@áktÍÇ—{%îZ¤ð)ñIák´¾FKák´¾FKák´¾Fëþÿâ›á‰TG=IEND®B`‚omniEvents-2_6_2/doc/doxygen/a00067.html0000644000076400001440000007462010303671741020066 0ustar alexusers00000000000000 OmniEvents: OmniEvents::ProxyPushConsumer_i Class Reference

OmniEvents::ProxyPushConsumer_i Class Reference

Default servant for ProxyPushConsumer objects. More...

#include <ProxyPushConsumer.h>

Inheritance diagram for OmniEvents::ProxyPushConsumer_i:

Inheritance graph
[legend]
Collaboration diagram for OmniEvents::ProxyPushConsumer_i:

Collaboration graph
[legend]
List of all members.

Public Member Functions

void connect_push_supplier (CosEventComm::PushSupplier_ptr pushSupplier)
 If pushSupplier is provided, then it is stored in _connections.
void disconnect_push_consumer ()
 We may not have a record of the supplier, so this method must accept calls from any supplier without complaint.
void push (const CORBA::Any &event)
 Accepts events from any supplier, not just those stored in _connections.
 ProxyPushConsumer_i (PortableServer::POA_ptr parentPoa, list< CORBA::Any * > &q, ConsumerAdmin_i &consumerAdmin)
virtual ~ProxyPushConsumer_i ()
void trigger ()
CosEventChannelAdmin::ProxyPushConsumer_ptr createObject ()
 Constructs a new object.
void disconnect ()
 Send disconnect_push_supplier() to all connected PushSuppliers.
void reincarnate (const PersistNode &node)
 Re-create all servants from information saved in the log file.
void output (ostream &os) const
 Save this object's state to a stream.

Private Types

typedef map< string, Connection * > Connections_t

Private Member Functions

string currentObjectId () const

Private Attributes

Connections_t _connections
CORBA::String_var _channelName
ConsumerAdmin_i_consumerAdmin
list< CORBA::Any * > & _queue
bool _useLocalQueue
 Switch between RT/chunked modes.

Classes

struct  Connection

Detailed Description

Default servant for ProxyPushConsumer objects.

All objects are implemented by a single instance of this servant class. This enables us to deal statelessly with anonymous connections (where connect_push_supplier() is called with a NIL callback reference).

Definition at line 60 of file ProxyPushConsumer.h.


Member Typedef Documentation

typedef map<string,Connection*> OmniEvents::ProxyPushConsumer_i::Connections_t [private]
 

Definition at line 133 of file ProxyPushConsumer.h.


Constructor & Destructor Documentation

OmniEvents::ProxyPushConsumer_i::ProxyPushConsumer_i PortableServer::POA_ptr  parentPoa,
list< CORBA::Any * > &  q,
ConsumerAdmin_i consumerAdmin
 

Definition at line 116 of file ProxyPushConsumer.cc.

References _channelName, _consumerAdmin, OmniEvents::Servant::_poa, and DB.

OmniEvents::ProxyPushConsumer_i::~ProxyPushConsumer_i  )  [virtual]
 

Definition at line 178 of file ProxyPushConsumer.cc.

References _connections, _consumerAdmin, and DB.


Member Function Documentation

void OmniEvents::ProxyPushConsumer_i::connect_push_supplier CosEventComm::PushSupplier_ptr  pushSupplier  ) 
 

If pushSupplier is provided, then it is stored in _connections.

Otherwise this method does nothing.

Definition at line 34 of file ProxyPushConsumer.cc.

References _channelName, _connections, currentObjectId(), OmniEvents::Orb::deferredRequest(), OmniEvents::omniEventsLog::exists(), OmniEvents::Orb::inst(), OmniEvents::WriteLock::os, and OmniEvents::ProxyPushConsumer_i::Connection::output().

CosEventChannelAdmin::ProxyPushConsumer_ptr OmniEvents::ProxyPushConsumer_i::createObject  ) 
 

Constructs a new object.

This method is almost completely stateless. It makes a new objectId, and returns it to the caller. But, only when it's USED the first time (connect_push_consumer) do we store it in _connections. (Note, The POA doesn't store objects either.)

Definition at line 194 of file ProxyPushConsumer.cc.

References OmniEvents::Servant::_poa.

Referenced by OmniEvents::SupplierAdmin_i::obtain_push_consumer().

string OmniEvents::ProxyPushConsumer_i::currentObjectId  )  const [private]
 

Definition at line 295 of file ProxyPushConsumer.cc.

References DB, and OmniEvents::Orb::inst().

Referenced by connect_push_supplier(), and disconnect_push_consumer().

void OmniEvents::ProxyPushConsumer_i::disconnect  ) 
 

Send disconnect_push_supplier() to all connected PushSuppliers.

Definition at line 203 of file ProxyPushConsumer.cc.

References _connections, OmniEvents::Orb::deferredRequest(), and OmniEvents::Orb::inst().

Referenced by OmniEvents::SupplierAdmin_i::disconnect().

void OmniEvents::ProxyPushConsumer_i::disconnect_push_consumer  ) 
 

We may not have a record of the supplier, so this method must accept calls from any supplier without complaint.

Definition at line 71 of file ProxyPushConsumer.cc.

References _channelName, _connections, currentObjectId(), DB, OmniEvents::Orb::deferredRequest(), OmniEvents::omniEventsLog::exists(), OmniEvents::Orb::inst(), and OmniEvents::WriteLock::os.

void OmniEvents::ProxyPushConsumer_i::output ostream &  os  )  const
 

Save this object's state to a stream.

Definition at line 284 of file ProxyPushConsumer.cc.

References _connections.

Referenced by OmniEvents::ProxyPushConsumer_i::Connection::callback(), and OmniEvents::SupplierAdmin_i::output().

void OmniEvents::ProxyPushConsumer_i::push const CORBA::Any &  event  ) 
 

Accepts events from any supplier, not just those stored in _connections.

Definition at line 102 of file ProxyPushConsumer.cc.

References _consumerAdmin, _queue, _useLocalQueue, and OmniEvents::ConsumerAdmin_i::send().

void OmniEvents::ProxyPushConsumer_i::reincarnate const PersistNode node  ) 
 

Re-create all servants from information saved in the log file.

Definition at line 222 of file ProxyPushConsumer.cc.

References _channelName, OmniEvents::PersistNode::_child, _connections, OmniEvents::Servant::_poa, and DB.

Referenced by OmniEvents::SupplierAdmin_i::reincarnate().

void OmniEvents::ProxyPushConsumer_i::trigger  )  [inline]
 

Definition at line 86 of file ProxyPushConsumer.h.

References _useLocalQueue.


Member Data Documentation

CORBA::String_var OmniEvents::ProxyPushConsumer_i::_channelName [private]
 

Definition at line 135 of file ProxyPushConsumer.h.

Referenced by connect_push_supplier(), disconnect_push_consumer(), ProxyPushConsumer_i(), and reincarnate().

Connections_t OmniEvents::ProxyPushConsumer_i::_connections [private]
 

Definition at line 134 of file ProxyPushConsumer.h.

Referenced by connect_push_supplier(), disconnect(), disconnect_push_consumer(), output(), reincarnate(), and ~ProxyPushConsumer_i().

ConsumerAdmin_i& OmniEvents::ProxyPushConsumer_i::_consumerAdmin [private]
 

Definition at line 136 of file ProxyPushConsumer.h.

Referenced by ProxyPushConsumer_i(), push(), and ~ProxyPushConsumer_i().

list<CORBA::Any*>& OmniEvents::ProxyPushConsumer_i::_queue [private]
 

Definition at line 137 of file ProxyPushConsumer.h.

Referenced by push().

bool OmniEvents::ProxyPushConsumer_i::_useLocalQueue [private]
 

Switch between RT/chunked modes.

Definition at line 138 of file ProxyPushConsumer.h.

Referenced by push(), and trigger().


The documentation for this class was generated from the following files:
Generated on Fri Aug 26 20:56:17 2005 for OmniEvents by  doxygen 1.4.3-20050530
omniEvents-2_6_2/doc/doxygen/a00030.html0000644000076400001440000001357210303671741020053 0ustar alexusers00000000000000 OmniEvents: Member List

OmniEvents::ProxyPushConsumer_i Member List

This is the complete list of members for OmniEvents::ProxyPushConsumer_i, including all inherited members.

_channelNameOmniEvents::ProxyPushConsumer_i [private]
_connectionsOmniEvents::ProxyPushConsumer_i [private]
_consumerAdminOmniEvents::ProxyPushConsumer_i [private]
_default_POA()OmniEvents::Servant [virtual]
_poaOmniEvents::Servant [protected]
_queueOmniEvents::ProxyPushConsumer_i [private]
_useLocalQueueOmniEvents::ProxyPushConsumer_i [private]
activateObjectWithId(const char *oidStr)OmniEvents::Servant [protected]
connect_push_supplier(CosEventComm::PushSupplier_ptr pushSupplier)OmniEvents::ProxyPushConsumer_i
Connections_t typedefOmniEvents::ProxyPushConsumer_i [private]
createObject()OmniEvents::ProxyPushConsumer_i
currentObjectId() const OmniEvents::ProxyPushConsumer_i [private]
deactivateObject()OmniEvents::Servant [protected]
disconnect()OmniEvents::ProxyPushConsumer_i
disconnect_push_consumer()OmniEvents::ProxyPushConsumer_i
output(ostream &os) const OmniEvents::ProxyPushConsumer_i
ProxyPushConsumer_i(PortableServer::POA_ptr parentPoa, list< CORBA::Any * > &q, ConsumerAdmin_i &consumerAdmin)OmniEvents::ProxyPushConsumer_i
push(const CORBA::Any &event)OmniEvents::ProxyPushConsumer_i
reincarnate(const PersistNode &node)OmniEvents::ProxyPushConsumer_i
Servant(PortableServer::POA_ptr poa)OmniEvents::Servant [protected]
trigger()OmniEvents::ProxyPushConsumer_i [inline]
~ProxyPushConsumer_i()OmniEvents::ProxyPushConsumer_i [virtual]
~Servant()OmniEvents::Servant [virtual]


Generated on Fri Aug 26 20:56:17 2005 for OmniEvents by  doxygen 1.4.3-20050530
omniEvents-2_6_2/doc/doxygen/a00349.png0000644000076400001440000000246610240451501017676 0ustar alexusers00000000000000‰PNG  IHDRGtäþíï!PLTEþÿÿo___???ŸŸŸßßß¿¿¿ÿÿÿ/l:ZtRNS@æØfÃIDATxœí›MsÛ6†ótlÏiòØvKG'qL;i"ùè*ŒÉ£ã´nj“<Š"ð”èƒ"ð+³ ¢¤‘l7e»ÆKkL,‹‡‹${FøÝ×çG·Mp iHUÒª¤!UéIUê¦ Óÿâ|…Øõ]5ä¥Òª¤!9ïнʔ¥ŒÒþZï}%=œ¬z:g;Ù?öŽ[ÙLfÛ Mž—ìÌ6¼Û‚7ñ§s—|æÍÒïV sÏB§1–¨v¹ãŽ©ÉZ}\´ˆÇ\æ‚_æ¶È!BÆAsüË@þ¶ HŒž:fÛlóh–JÈ͵ÏX³™Œ§á”O%E=œl`?gfo´wl:ãƒíAr¼žˆ3dîKh¼Æä…›%™ðnÆcoæ9†» H¹Ü 0ëøç4£”HÈÓO^éwpú<‘5éÌ^4ðt^˜Û€brú² ¶„ô¦aéw0äe&™Ç “‡x¿Hq-Bڶ͉5¹+!‡²&ÁÏð†£DÖä.󌣽ŽéðÇÛ€‡ùrMF|2G›ˆ8»[æÆÙ~±»Gäq(vw~¸ H5Òª¤!UICªÒƼÞ_ý?Üî?®§U¼È/5Õ.¤êõ¾Èš†T¤ZMuQ>PÈ/÷RqQ>PÈZMùz?PÈûñCC*“†T% ©JR•4¤*iHUÒª¤!UICª’†T% ©JR•4¤*iHUÒª¤!UICªÒ A²oþnÀÍ+ÕŠ¤!UICªÒ äïV}„AïhèÖ&a"Îéåó’r¾µ~d9eËäÿ&¨:Ô÷š4)©ÿéãr˜Ê€#ß´.§4„ïz¿cÙ»2nãÏBo°ìT7ájOi@ÈÕ8›´Á/_i/C&8a}lŽéØ5`¹ê„†AÌ´>¢n§žYi€0M:1o×铸Mr4]¹#! èᣠ zÀü oÐÃŒ‚Q„DÁàø‚y`T’í³bð:È^,4šF“NLBÖé3ú‡”¶ _ãȉh7äo:³Þú'ñÓãÓï¡QÒFÀÈT¤©{aà=˜r"·Î™% Eôƒ("8¼`ž~÷ÜÈ +o†¤xå7Î$ >@ã™Làx>ªK'`Þ#vƒv’$$%02•%0priBHFÄSG½IYr>Œ"ƒ§Ì“X g–ƒ7/÷$d2~Ê~YEDyõÞš'ôƒŸIéï¡0 Êà¯Sü…qz!Xò¹IB†œ;y‰~]ˆR@úb¹¼Rò dô¡Mõe+r*H‘É÷Ýû©€$ù€ŠµÅ8½"ÂDÊLB .@ ¿…LÂ<ÉÆå™GÐ"¤ïû4³ VNd”IY“ªi¸3¡iG&qžZ²ßÁÑ‚e…ËmÕ±GBÆ-´ÍkRø½-ƒ§ÌÓÇQ²&7@ŠÃ|¹&§ô <1l@ˆ1œT»!Áü6VìHHóϼØÊò† š‹ =RÚæ»[øÁñ‚[ôðö ÇõߤظÚ绤òüŠ7—ï–ÈÁÚ·÷Ëð  6é>~ º›Òªt¿ ï¸4¤*iHUÒªôù+MšÀ-¼ß;IEND®B`‚omniEvents-2_6_2/doc/doxygen/a00351.png0000644000076400001440000000246610240451501017667 0ustar alexusers00000000000000‰PNG  IHDRGtäþíï!PLTEþÿÿo___???ŸŸŸßßß¿¿¿ÿÿÿ/l:ZtRNS@æØfÃIDATxœí›MsÛ6†ótlÏiòØvKG'qL;i"ùè*ŒÉ£ã´nj“<Š"ð”èƒ"ð+³ ¢¤‘l7e»ÆKkL,‹‡‹${FøÝ×çG·Mp iHUÒª¤!UéIUê¦ Óÿâ|…Øõ]5ä¥Òª¤!9ïнʔ¥ŒÒþZï}%=œ¬z:g;Ù?öŽ[ÙLfÛ Mž—ìÌ6¼Û‚7ñ§s—|æÍÒïV sÏB§1–¨v¹ãŽ©ÉZ}\´ˆÇ\æ‚_æ¶È!BÆAsüË@þ¶ HŒž:fÛlóh–JÈ͵ÏX³™Œ§á”O%E=œl`?gfo´wl:ãƒíAr¼žˆ3dîKh¼Æä…›%™ðnÆcoæ9†» H¹Ü 0ëøç4£”HÈÓO^éwpú<‘5éÌ^4ðt^˜Û€brú² ¶„ô¦aéw0äe&™Ç “‡x¿Hq-Bڶ͉5¹+!‡²&ÁÏð†£DÖä.󌣽ŽéðÇÛ€‡ùrMF|2G›ˆ8»[æÆÙ~±»Gäq(vw~¸ H5Òª¤!UICªÒƼÞ_ý?Üî?®§U¼È/5Õ.¤êõ¾Èš†T¤ZMuQ>PÈ/÷RqQ>PÈZMùz?PÈûñCC*“†T% ©JR•4¤*iHUÒª¤!UICª’†T% ©JR•4¤*iHUÒª¤!UICªÒ A²oþnÀÍ+ÕŠ¤!UICªÒ äïV}„AïhèÖ&a"Îéåó’r¾µ~d9eËäÿ&¨:Ô÷š4)©ÿéãr˜Ê€#ß´.§4„ïz¿cÙ»2nãÏBo°ìT7ájOi@ÈÕ8›´Á/_i/C&8a}lŽéØ5`¹ê„†AÌ´>¢n§žYi€0M:1o×铸Mr4]¹#! èᣠ zÀü oÐÃŒ‚Q„DÁàø‚y`T’í³bð:È^,4šF“NLBÖé3ú‡”¶ _ãȉh7äo:³Þú'ñÓãÓï¡QÒFÀÈT¤©{aà=˜r"·Î™% Eôƒ("8¼`ž~÷ÜÈ +o†¤xå7Î$ >@ã™Làx>ªK'`Þ#vƒv’$$%02•%0priBHFÄSG½IYr>Œ"ƒ§Ì“X g–ƒ7/÷$d2~Ê~YEDyõÞš'ôƒŸIéï¡0 Êà¯Sü…qz!Xò¹IB†œ;y‰~]ˆR@úb¹¼Rò dô¡Mõe+r*H‘É÷Ýû©€$ù€ŠµÅ8½"ÂDÊLB .@ ¿…LÂ<ÉÆå™GÐ"¤ïû4³ VNd”IY“ªi¸3¡iG&qžZ²ßÁÑ‚e…ËmÕ±GBÆ-´ÍkRø½-ƒ§ÌÓÇQ²&7@ŠÃ|¹&§ô <1l@ˆ1œT»!Áü6VìHHóϼØÊò† š‹ =RÚæ»[øÁñ‚[ôðö ÇõߤظÚ绤òüŠ7—ï–ÈÁÚ·÷Ëð  6é>~ º›Òªt¿ ï¸4¤*iHUÒªôù+MšÀ-¼ß;IEND®B`‚omniEvents-2_6_2/doc/doxygen/a00070.html0000644000076400001440000005734110303671741020061 0ustar alexusers00000000000000 OmniEvents: OmniEvents::ProxyPushSupplierManager Class Reference

OmniEvents::ProxyPushSupplierManager Class Reference

#include <ProxyPushSupplier.h>

Inheritance diagram for OmniEvents::ProxyPushSupplierManager:

Inheritance graph
[legend]
Collaboration diagram for OmniEvents::ProxyPushSupplierManager:

Collaboration graph
[legend]
List of all members.

Public Member Functions

PortableServer::Servant incarnate (const PortableServer::ObjectId &oid, PortableServer::POA_ptr poa)
void etherealize (const PortableServer::ObjectId &oid, PortableServer::POA_ptr adapter, PortableServer::Servant serv, CORBA::Boolean cleanup_in_progress, CORBA::Boolean remaining_activations)
 Pauses the thread, and then calls the parent's implementation.
 ProxyPushSupplierManager (PortableServer::POA_ptr parentPoa, EventQueue &q)
 ~ProxyPushSupplierManager ()
CosEventChannelAdmin::ProxyPushSupplier_ptr createObject ()
void disconnect ()
 Send disconnect_push_consumer() to all connected PushConsumers.
void * run_undetached (void *)
void _add_ref ()
void _remove_ref ()
 Shutdown the thread when refCount reaches zero.

Public Attributes

omni_mutex _lock
omni_condition _condition

Private Attributes

EventQueue_queue
int _refCount

Classes

class  PauseThenWake
 Helper class that locks ProxyPushSupplier upon construction, and wakes it up on destruction. More...

Detailed Description

Definition at line 49 of file ProxyPushSupplier.h.


Constructor & Destructor Documentation

OmniEvents::ProxyPushSupplierManager::ProxyPushSupplierManager PortableServer::POA_ptr  parentPoa,
EventQueue q
 

Definition at line 91 of file ProxyPushSupplier.cc.

References OmniEvents::ProxyManager::activate().

OmniEvents::ProxyPushSupplierManager::~ProxyPushSupplierManager  ) 
 

Definition at line 105 of file ProxyPushSupplier.cc.

References DB.


Member Function Documentation

void OmniEvents::ProxyPushSupplierManager::_add_ref  ) 
 

Definition at line 214 of file ProxyPushSupplier.cc.

References _lock, _refCount, and DB.

void OmniEvents::ProxyPushSupplierManager::_remove_ref  ) 
 

Shutdown the thread when refCount reaches zero.

Definition at line 223 of file ProxyPushSupplier.cc.

References _refCount, and DB.

Referenced by OmniEvents::ConsumerAdmin_i::~ConsumerAdmin_i().

CosEventChannelAdmin::ProxyPushSupplier_ptr OmniEvents::ProxyPushSupplierManager::createObject  ) 
 

Definition at line 111 of file ProxyPushSupplier.cc.

References OmniEvents::ProxyManager::_managedPoa.

Referenced by OmniEvents::ConsumerAdmin_i::obtain_push_supplier().

void OmniEvents::ProxyPushSupplierManager::disconnect  ) 
 

Send disconnect_push_consumer() to all connected PushConsumers.

Definition at line 119 of file ProxyPushSupplier.cc.

References OmniEvents::ProxyManager::_servants, and OmniEvents::ProxyPushSupplier_i::disconnect_push_supplier().

Referenced by OmniEvents::ConsumerAdmin_i::disconnect().

void OmniEvents::ProxyPushSupplierManager::etherealize const PortableServer::ObjectId &  oid,
PortableServer::POA_ptr  adapter,
PortableServer::Servant  serv,
CORBA::Boolean  cleanup_in_progress,
CORBA::Boolean  remaining_activations
 

Pauses the thread, and then calls the parent's implementation.

Reimplemented from OmniEvents::ProxyManager.

Definition at line 64 of file ProxyPushSupplier.cc.

References _lock, OmniEvents::ProxyManager::_servants, and DB.

PortableServer::Servant OmniEvents::ProxyPushSupplierManager::incarnate const PortableServer::ObjectId &  oid,
PortableServer::POA_ptr  poa
 

Definition at line 52 of file ProxyPushSupplier.cc.

References OmniEvents::ProxyManager::_managedPoa, _queue, and OmniEvents::ProxyManager::_servants.

void * OmniEvents::ProxyPushSupplierManager::run_undetached void *   ) 
 

Definition at line 133 of file ProxyPushSupplier.cc.

References _condition, _lock, _refCount, OmniEvents::ProxyManager::_servants, DB, IF_OMNIORB4, NP_MINORSTRING, and OmniEvents::ProxyPushSupplier_i::trigger().


Member Data Documentation

omni_condition OmniEvents::ProxyPushSupplierManager::_condition
 

Definition at line 79 of file ProxyPushSupplier.h.

Referenced by run_undetached(), and OmniEvents::ProxyPushSupplierManager::PauseThenWake::~PauseThenWake().

omni_mutex OmniEvents::ProxyPushSupplierManager::_lock
 

Definition at line 78 of file ProxyPushSupplier.h.

Referenced by _add_ref(), etherealize(), OmniEvents::ConsumerAdmin_i::output(), OmniEvents::ProxyPushSupplierManager::PauseThenWake::PauseThenWake(), run_undetached(), and OmniEvents::ProxyPushSupplierManager::PauseThenWake::~PauseThenWake().

EventQueue& OmniEvents::ProxyPushSupplierManager::_queue [private]
 

Definition at line 96 of file ProxyPushSupplier.h.

Referenced by incarnate().

int OmniEvents::ProxyPushSupplierManager::_refCount [private]
 

Definition at line 97 of file ProxyPushSupplier.h.

Referenced by _add_ref(), _remove_ref(), and run_undetached().


The documentation for this class was generated from the following files:
Generated on Fri Aug 26 20:56:17 2005 for OmniEvents by  doxygen 1.4.3-20050530
omniEvents-2_6_2/doc/doxygen/a00033.html0000644000076400001440000001500210303671741020044 0ustar alexusers00000000000000 OmniEvents: Member List

OmniEvents::ProxyPushSupplierManager Member List

This is the complete list of members for OmniEvents::ProxyPushSupplierManager, including all inherited members.

_add_ref()OmniEvents::ProxyPushSupplierManager
_conditionOmniEvents::ProxyPushSupplierManager
_default_POA()OmniEvents::Servant [virtual]
_lockOmniEvents::ProxyPushSupplierManager
_managedPoaOmniEvents::ProxyManager [protected]
_poaOmniEvents::Servant [protected]
_queueOmniEvents::ProxyPushSupplierManager [private]
_refCountOmniEvents::ProxyPushSupplierManager [private]
_remove_ref()OmniEvents::ProxyPushSupplierManager
_servantsOmniEvents::ProxyManager [protected]
activate(const char *name)OmniEvents::ProxyManager [protected]
activateObjectWithId(const char *oidStr)OmniEvents::Servant [protected]
createObject()OmniEvents::ProxyPushSupplierManager
deactivateObject()OmniEvents::Servant [protected]
disconnect()OmniEvents::ProxyPushSupplierManager
etherealize(const PortableServer::ObjectId &oid, PortableServer::POA_ptr adapter, PortableServer::Servant serv, CORBA::Boolean cleanup_in_progress, CORBA::Boolean remaining_activations)OmniEvents::ProxyPushSupplierManager
incarnate(const PortableServer::ObjectId &oid, PortableServer::POA_ptr poa)OmniEvents::ProxyPushSupplierManager
output(ostream &os)OmniEvents::ProxyManager
ProxyManager(PortableServer::POA_ptr poa)OmniEvents::ProxyManager [protected]
ProxyPushSupplierManager(PortableServer::POA_ptr parentPoa, EventQueue &q)OmniEvents::ProxyPushSupplierManager
reincarnate(const PersistNode &node)OmniEvents::ProxyManager
run_undetached(void *)OmniEvents::ProxyPushSupplierManager
Servant(PortableServer::POA_ptr poa)OmniEvents::Servant [protected]
~ProxyManager()OmniEvents::ProxyManager [protected, virtual]
~ProxyPushSupplierManager()OmniEvents::ProxyPushSupplierManager
~Servant()OmniEvents::Servant [virtual]


Generated on Fri Aug 26 20:56:17 2005 for OmniEvents by  doxygen 1.4.3-20050530
omniEvents-2_6_2/doc/doxygen/a00353.png0000644000076400001440000000351110240451502017662 0ustar alexusers00000000000000‰PNG  IHDR¿Ó;`!PLTEþÿÿo___???ŸŸŸßßß¿¿¿ÿÿÿ/l:ZtRNS@æØfÖIDATxœíœÏWÚJÇû/¸}k_•,õ*,íS ËÖZ`ÙÒÔd©´U–¶’Ý#?ÈdW!sÿÊwï„(Ó¢Æ>ì›oHOæÎÍ3wàäpëX%=ù¯2R4r)¹\ކå¦0šŸÆXZŠæ‘\”¦Éög¦8äŒõ9Ç;öð4ñ}ÇœÙ4®ësMH¦añÃ󦽹ÑDezÍÄÍŒÏU“߈0íÍ&iÃØ6j^ÁÏÒp¥p€]0̈i¼Ö«S ÚÜÄ£AèhE!͹vÓÍÿÿƒ_J³Œ\ŠF®[Ò¬ÖÓÝ-µZÏá+V}¸Z4+V}˜Kœß”f…ªW‹FUfʵR4«U}¸Z4«ö­©häR4r)¹\ŠF.E#—¢‘KÑÈ¥häR4r)¹\ŠF.E#—¢‘KÑÈ¥häÊ“†ßò—·‡‘¢‘KÑÈ¥häÊÒtàlÖð`°è&´×d†#Gqa®7àöäjL pYšà}÷ÈšõÂnw®Éüi#ì~ý˜¥™ˆ¦_Ëô¼7ÍböÒ4^^sƒXß«&^Ø×{¦¢ »ÌÐL¯Æ¶±4_a®a#-b‘YÀ•ÂáO˜myP‹f6‹q%´èÀÁ‡MêE¶áÕƒ„ 8fâ˜Íï K! ‹#†'­…دDçì”;æ; ÏŠqÉ‹Ëc- Á÷ĸ](Êläò”¦Èž±×Ý·a½Š39†Ã¼>³qåM÷ÄÛÊÐVœâi¡=¤çÕ«¤?ÕÎ'B£J½BƒÐÝņ‚é§{: {£w_÷ôa… Lv?S˜±O<}Ï%šNw …M° íÝ/ѲÊèÃÛ¯ƒå×xô¾$ ûY”Ãß¡ÐÕ}ReûõìÁŒÃ½²gx¢ÐÅ8„¢ªº×„°8)øÌðceçÛyÙ7ÛðŒ¼€(ô9+eǂŪÍ.åa˜MŒd‡ ìWÝ]jã!‰’Be¹$J I”å’()”ä#½ŸÅGz±ô÷^pQ”»mþÝà!‰"¢¡ˆ, P¶_Š˜3ìor÷²P„ ‰’AORku”ímAƒåoò’ÎŒ%Jæ’("J¢ˆ(‰"¢$Šˆ’("J¢ˆ(‰"¢$Šˆ’("J¢ˆ(‰"¢$Šˆ’("J¢ˆ(‰"¢$Šˆ’("Š¢¬šïÚÉÈ«(9¦[ϵÁP²}·¼Û¼Û(«6µÍ» ‰²j3QÛ¼Û(«6µÍ»Ê ÚŸ–¹­ÈZÆ !Ê’fÂÛq3ÇçìáŠ3~§(î_êN`¿‚§ªÁj㇞úù]ØM¸O%Ì£ÄÍŸ³‡+Îø¢8eú(ÕÃ;ëÓ -\²K«JÜÌñ9ûlÅß)ÊØ #K«vó]š¾MS" Ù%šî Íï6›U{’ (ý¦ƒÊUòÊ)»=ïÜ×HÕfiàCóŠ”®X¸w1Ÿ!¹Zæ8E¡] ÎXθŸ vè”oªó0Ã(ô/Ö µB´GØG©’CòF½¤ ÛžÞZC2„ ÷=éoÕ]çõõÈTŠ1´¦(lT¾ÈÅ?ÁЇфqb»âê‹Qâg޳.øÎ(Êò…V¤Ã£BGuxŠBa‹qE…¥Ð6`Zîú(ý‡Xa@¬Üê¯ †x úƒ JþˆÅÊIa1JÜÌqj‡.øÎ(Êiñ´GúNuÊ(A¬ìF¡°Cd8VÚdF •©Ÿûþt#l )¿‚7ϱ¥Q‡Évù–Ñün¶‚µÉb”¸™ãÔN»ÀœÑœq¨ø–ä¯Xë»+X9%‘œÂœiÝ ¾æ{â2Š´ò@95æLÎþqèî.ÏätrušV Ÿ(=”¸ÍDmónC¢¬ÚLÔ6ï6$ʪÍDmón#ɧ“ýwûÇXŸ>6ÓïVíI ÍílÒ¥¶ÔI‹r·ÌÖ&PH(·[¹µR£ÜeúµµÂåöå lm fØO\Y€$IÔó¸Ÿ1Žq»Azƒ‡;~,[DaCrÇÁ¯MŽŠ/~á’pãxïožS,—¤?nárKnsIêq¼#;/–Û„õxÞ\žSèçÖãzŸ|>¡ŸKXï-ÿy°$_¼¿½€C¸ä’VäŒÂ!ôsI+òþN‰Ô,‰çÿ¯ÇH»Œý#qMþßô‘2ôEBIÇò¿äU³øþ•4á’|P2AIú‚¡¤`I1¿²AIÎ"Jb–ó++”„,ìøèØ55ê:–eÊ %Ù¡’¡¼R5ê:–eÊ %Ñá%Gÿ4‰¦F]DzLÙ¡$9¼äèŸñÔ¨ëX–)C”ÕÃÅ?•d£qË2eˆ²:‹òVUô¨ëX–)K”•C?Çþ ¦G]DzL™¢¬ú¹ÉóÌe›1•-Êj¡ÿø_—(+… œµ4½´ØIÔVÆ(+±¤9k!Ù£¬ú¢£Äý4gÅTÙ£Äfy(q—±”ók-(1Cÿ9 ÄcI;¿ÖƒkË¥md=(qB?—¶5¡,gIþYñƒÖ…²tË¥nam(ËB?—º…µ¡,aI?¿Öˆòô2ö¼Pž ý\z÷ëDyŠ%—ÞûZQ/c©õdÝ( Cÿù¡,dI{*Iµf”E,Ï%š…ÇüZ?Jäá噢D-É<æ×&Pæ—d.ƒ²”¹pÉqq» ”9–¯A™ }§’T)QVMþÉDX¢H”,%Q^8ŠmŒÌ©c‹æ(棚$dh.2Xð¸Ò‚¥–=É¢Ä „Œõ \W¯N§Ž[h|slé±l|sP õ!` (_Ãåš¼!xŒì§ÆŸ#Êì7ÐÃpKãé†íÍ”<(Їl-„òÐÕ3ÔZÓ¨œ ´o;ú/¤„‹èô½Ÿ·Ç¨>@Žžï¹ïô°YÏñ¾R¶µVãd™Ô`!l]Å‚šë?6½kt‚‹ûüê—QÑeîÛú1ª3çà‹7 ¼³Ø´m×*>J[k7ºÕëü°ã¡1.Q ~ƨÙÀçÝ‹fþãµ¹~fÖ÷¶fAÍâh‡¡ŒnŽ<…º)Ø2- :Ì=ÎWZÍ1-ÁçÜG…¡xô›Øda¯Œû%l¶l0pÉo’‘‰lv´ëcÔSŽ™¡Àh@M´k”èË1Ú‡jûõ×nÜ#|•ÿÕB¦=¦îmd]+t³ÝÀJ6,€Bƒã£…,B4†Òùvþ4´ÜöZêþËcÚ÷ƒÏ }*Á`ÒgŒðßþÞøb¡ƒ¯ ¥óïºe¢1-Áf&a?‹òÛ¯#ÛôQP1€ÂFå uŽjËT|?t¬à¨0ؼû=b(0¬lT $º‡PnnL|‚ºÕfÞŸ`ÊC¬P+_,¹ŠoPêæ½òéÃA¾ÝœA¬œ±X¡. ¤(­ Já’ÅJ3Ÿ =DÎÄJ­ Ëj}È–-cº‚Q0·m }ò‡©å–Ù %-ýOö2¸‚Qج@ ޾Q÷-÷g­`C”J2}\T@5öS·Kh›áâM£Ø'‰QºW5‘P*‘§iLµÉc¡ê£Ð¹Ü¦Q8J¢H”L%Q–DQEDIõ‚Pþ_qWj tIEND®B`‚omniEvents-2_6_2/doc/doxygen/a00072.html0000644000076400001440000004134310303671740020055 0ustar alexusers00000000000000 OmniEvents: OmniEvents::RegistryKey Class Reference

OmniEvents::RegistryKey Class Reference

Opens a windows registry key, and closed it upon destruction. More...

List of all members.

Public Member Functions

 RegistryKey (RegistryKey &right)
 Copy constructor, adopts ownership.
 RegistryKey (HKEY hkey, const char *subkey, REGSAM samDesired=KEY_QUERY_VALUE)
 Constructor, opens the key.
 ~RegistryKey ()
 Destructor, closes the key.
 operator bool () const
int setValueStr (const char *name, const char *data)
char * queryValueStr (const char *name, const int maxlen=2048) const

Private Member Functions

 RegistryKey ()
 No implementation.
 RegistryKey (HKEY hkey, bool open=true)

Private Attributes

HKEY _hkey
bool _open


Detailed Description

Opens a windows registry key, and closed it upon destruction.

Upon failure, it emits an error message and then quits. Why do I have to write this class myself??

Definition at line 86 of file daemon_windows.cc.


Constructor & Destructor Documentation

OmniEvents::RegistryKey::RegistryKey  )  [private]
 

No implementation.

OmniEvents::RegistryKey::RegistryKey HKEY  hkey,
bool  open = true
[inline, private]
 

Definition at line 92 of file daemon_windows.cc.

OmniEvents::RegistryKey::RegistryKey RegistryKey right  ) 
 

Copy constructor, adopts ownership.

Definition at line 103 of file daemon_windows.cc.

References _open.

OmniEvents::RegistryKey::RegistryKey HKEY  hkey,
const char *  subkey,
REGSAM  samDesired = KEY_QUERY_VALUE
 

Constructor, opens the key.

Definition at line 110 of file daemon_windows.cc.

References _hkey, and _open.

OmniEvents::RegistryKey::~RegistryKey  ) 
 

Destructor, closes the key.

Definition at line 123 of file daemon_windows.cc.

References _hkey, _open, HERE, and OmniEvents::Win::perror().


Member Function Documentation

OmniEvents::RegistryKey::operator bool  )  const [inline]
 

Definition at line 97 of file daemon_windows.cc.

References _open.

char * OmniEvents::RegistryKey::queryValueStr const char *  name,
const int  maxlen = 2048
const
 

Definition at line 150 of file daemon_windows.cc.

References _hkey.

Referenced by OmniEvents::Service::readParameters().

int OmniEvents::RegistryKey::setValueStr const char *  name,
const char *  data
 

Definition at line 136 of file daemon_windows.cc.

References _hkey.

Referenced by OmniEvents::Service::install(), and OmniEvents::Service::writeParameters().


Member Data Documentation

HKEY OmniEvents::RegistryKey::_hkey [private]
 

Definition at line 88 of file daemon_windows.cc.

Referenced by queryValueStr(), RegistryKey(), setValueStr(), and ~RegistryKey().

bool OmniEvents::RegistryKey::_open [private]
 

Definition at line 89 of file daemon_windows.cc.

Referenced by operator bool(), RegistryKey(), and ~RegistryKey().


The documentation for this class was generated from the following file:
Generated on Fri Aug 26 20:56:16 2005 for OmniEvents by  doxygen 1.4.3-20050530
omniEvents-2_6_2/doc/doxygen/a00006.html0000644000076400001440000000643010303671740020050 0ustar alexusers00000000000000 OmniEvents: Member List

OmniEvents::RegistryKey Member List

This is the complete list of members for OmniEvents::RegistryKey, including all inherited members.

_hkeyOmniEvents::RegistryKey [private]
_openOmniEvents::RegistryKey [private]
operator bool() const OmniEvents::RegistryKey [inline]
queryValueStr(const char *name, const int maxlen=2048) const OmniEvents::RegistryKey
RegistryKey()OmniEvents::RegistryKey [private]
RegistryKey(HKEY hkey, bool open=true)OmniEvents::RegistryKey [inline, private]
RegistryKey(RegistryKey &right)OmniEvents::RegistryKey
RegistryKey(HKEY hkey, const char *subkey, REGSAM samDesired=KEY_QUERY_VALUE)OmniEvents::RegistryKey
setValueStr(const char *name, const char *data)OmniEvents::RegistryKey
~RegistryKey()OmniEvents::RegistryKey


Generated on Fri Aug 26 20:56:16 2005 for OmniEvents by  doxygen 1.4.3-20050530
omniEvents-2_6_2/doc/doxygen/a00073.html0000644000076400001440000003623510303671741020063 0ustar alexusers00000000000000 OmniEvents: OmniEvents::Servant Class Reference

OmniEvents::Servant Class Reference

Base class for servants. More...

#include <Servant.h>

Inheritance diagram for OmniEvents::Servant:

Inheritance graph
[legend]
List of all members.

Public Member Functions

virtual PortableServer::POA_ptr _default_POA ()
virtual ~Servant ()

Protected Member Functions

 Servant (PortableServer::POA_ptr poa)
void activateObjectWithId (const char *oidStr)
 Calls activate_object_with_id() to activate this servant in its POA.
void deactivateObject ()
 Calls deactivate_object() to deactivate this servant in its POA.

Protected Attributes

PortableServer::POA_var _poa

Private Member Functions

 Servant ()
 No default constructor.

Detailed Description

Base class for servants.

Stores the servant's POA. Provides some useful helper methods.

Definition at line 113 of file Servant.h.


Constructor & Destructor Documentation

OmniEvents::Servant::~Servant  )  [virtual]
 

Definition at line 109 of file Servant.cc.

References DB, and OMNIEVENTS__ADDR.

OmniEvents::Servant::Servant PortableServer::POA_ptr  poa  )  [protected]
 

Definition at line 99 of file Servant.cc.

References DB, and OMNIEVENTS__ADDR.

OmniEvents::Servant::Servant  )  [private]
 

No default constructor.


Member Function Documentation

PortableServer::POA_ptr OmniEvents::Servant::_default_POA  )  [virtual]
 

Definition at line 118 of file Servant.cc.

References _poa.

void OmniEvents::Servant::activateObjectWithId const char *  oidStr  )  [protected]
 

Calls activate_object_with_id() to activate this servant in its POA.

Definition at line 124 of file Servant.cc.

References _poa, DB, IF_OMNIORB4, NP_MINORSTRING, and OMNIEVENTS__ADDR.

Referenced by OmniEvents::ProxyManager::activate(), OmniEvents::EventChannel_i::activate(), OmniEvents::ConsumerAdmin_i::ConsumerAdmin_i(), OmniEvents::EventChannelFactory_i::EventChannelFactory_i(), OmniEvents::Mapper::Mapper(), OmniEvents::ProxyPushSupplier_i::reincarnate(), OmniEvents::ProxyPullSupplier_i::reincarnate(), OmniEvents::ProxyPullConsumer_i::reincarnate(), and OmniEvents::SupplierAdmin_i::SupplierAdmin_i().

void OmniEvents::Servant::deactivateObject  )  [protected]
 

Calls deactivate_object() to deactivate this servant in its POA.

Definition at line 159 of file Servant.cc.

References _poa, DB, IF_OMNIORB4, NP_MINORSTRING, and OMNIEVENTS__ADDR.

Referenced by OmniEvents::ProxyPullConsumer_i::collect(), OmniEvents::Mapper::destroy(), OmniEvents::ProxyPullConsumer_i::disconnect_pull_consumer(), OmniEvents::ProxyPullSupplier_i::disconnect_pull_supplier(), and OmniEvents::ProxyPushSupplier_i::disconnect_push_supplier().


Member Data Documentation

PortableServer::POA_var OmniEvents::Servant::_poa [protected]
 

Definition at line 131 of file Servant.h.

Referenced by _default_POA(), OmniEvents::ProxyManager::activate(), OmniEvents::EventChannel_i::activate(), activateObjectWithId(), OmniEvents::ProxyPushConsumer_i::createObject(), OmniEvents::EventChannel_i::createPoa(), deactivateObject(), OmniEvents::Proxy::keyOutput(), OmniEvents::SupplierAdmin_i::obtain_pull_consumer(), OmniEvents::ConsumerAdmin_i::obtain_pull_supplier(), OmniEvents::ConsumerAdmin_i::obtain_push_supplier(), OmniEvents::EventChannel_i::output(), OmniEvents::ProxyPushConsumer_i::ProxyPushConsumer_i(), OmniEvents::SupplierAdmin_i::reincarnate(), OmniEvents::ProxyPushConsumer_i::reincarnate(), OmniEvents::ConsumerAdmin_i::reincarnate(), OmniEvents::EventChannel_i::run_undetached(), and OmniEvents::SupplierAdmin_i::SupplierAdmin_i().


The documentation for this class was generated from the following files:
Generated on Fri Aug 26 20:56:17 2005 for OmniEvents by  doxygen 1.4.3-20050530
omniEvents-2_6_2/doc/doxygen/a00036.html0000644000076400001440000000523010303671741020051 0ustar alexusers00000000000000 OmniEvents: Member List

OmniEvents::Servant Member List

This is the complete list of members for OmniEvents::Servant, including all inherited members.

_default_POA()OmniEvents::Servant [virtual]
_poaOmniEvents::Servant [protected]
activateObjectWithId(const char *oidStr)OmniEvents::Servant [protected]
deactivateObject()OmniEvents::Servant [protected]
Servant(PortableServer::POA_ptr poa)OmniEvents::Servant [protected]
Servant()OmniEvents::Servant [private]
~Servant()OmniEvents::Servant [virtual]


Generated on Fri Aug 26 20:56:17 2005 for OmniEvents by  doxygen 1.4.3-20050530
omniEvents-2_6_2/doc/doxygen/a00357.png0000644000076400001440000000717310240451503017677 0ustar alexusers00000000000000‰PNG  IHDRÄ,¯fÞÃ$PLTEþÿÿo˜2Í___???ŸŸŸßßß¿¿¿ÿÿÿrû˜tRNS@æØfIDATxœíËÚHÇç¾§\W·\÷ºùÌ,“áèLìÀ1“dcìa,'ctÌÄé4ÃS­ËÆ`ên«Z`n°Ý ìþÙ¨VW×—~ÉDßѯﶀ|)ć …ø¤‚¢G„i;<-# s,ÎSR)ÄøRˆ”BŒ¯”#Ž mcnÓ)lY^åcëËJÇ)G<Ý;¾šÛú´[­º-{Y=Ïßñxô”q_°ß¹º‹Ý>uéȾã±ô”që”^Œ:ÖRñJM¨õMvÔ¥¹&íXÙ‰óɪƒ­K;x0{õªÿf]R8|â˜OiÑ…£æ°9t½|ÍGÚÃâ`ï4Û»´ëUJ´?¥ö{ŠÆ¶Y¢o½lâá»Ñ‹ ÑÅÏð ¶Ü˜Ý›Šg ‹Øy€8=ü¬ÀŒ=ê¯FT7ððÝ@d5€ˆQ?שNˆÍǯØqè\ß8øÞÿ’Û!D\n–ßþ …#ÃG¤%v\—ÂÌ8|•÷Lo‡qÓX@¬V ¯Óî$ëTÓŸ‹ûŸÏó¾‘:¦gfv·þ¥¹˜ذx¶ØBZ˜­¨}ëÏ©‘îÓ¾óÌÆÃ ;±¢ŠBÜ b|)Ä J!Æ—BÜ â¼UüÏ~«8”4ÑAÈU ÄoOć!S ‘§oO4áaÈT Ä' 1mŠ…¸[“Q!rôíq jâ‘'…ÈÑ“';6R"Wšè äJ!r¥‰B®"Wšè äJ!r¥‰B®"Wšè äJ!r¥‰B®"Wšè äJ!r¥‰B®"Wšè äJ!r¥‰B®"Wšè äJ!r¥‰B®"Wšè äJ!r¥‰B®"Wšè äJ!r¥‰B®"Wšè äJ!r¥‰B®"Wšè äê‘ FÍîÚpîUâÓ”¬lƒ‹(÷UôV<–ÕÆ²¢èæ¢6–¥E7¿eÄr8·\Xß›\o„ì-Š”B6-MÉûbÅm,kŽ8ú³º¨ŸõªÕ »Éì‰Wýýå¢û.­Û—î"†MSrǾXqEËš#òø¨e,:1æôÅ’ÚÖ‹aӔܱ/Wä¶±¬9âĤc[/u2Ì‚Ÿw§ô€êÆ€d1™ˆU/9Ó䀨«H¾DŸ ò£®÷–Þ”iÉa9G†Ö%Í]²Œ#ÞÅÝ¿GKS‚ˆ:c Jü´`‡ tx±³ÿuõl9[¦­±ë#–è[ú¢ú³ƒxFghéŒ~¡móÇêÁàû«±Ý/zº¡ë´9f9G¼l­xÒÅä"ÞÑÝæ£¥)AD9c JüäØÕ/ˆwѩΚì²å¦ç¯àÉ[¿ó:So–¥˜/F ­O*ÞqöWÐpЈê§&>=s-bˆ4%h‡˜3–÷á‚BD¸‹‚èÔ"ôâà{wDˆã#že1³I åp\†eñ~/¾ÒéùK†8þ%§´‹ÉEf³wÅ@ ‘¦í‚ï fƒ‚†«p‘-7KˆÃWyxåª>¢9´çˆ¬¿féÅ¿ÁЃއ~e‡™ëE:2V#†OSÂBð!â ú+bwV!Pî¢ ²M#ˆX…%Û1aØøˆ½Ù\dÃ\¼yߣ^ ûðÒôúSÄÌ6O²«æ)A;„à;CÄÓ½Ó.í º,(3sñ "Ûúçb‹îCï’<ú¿éÍWTÊÖ´ü3x±6 Ö*0h¿¼Æ2L&ÂVÔ]6M Ú1æ ”@Åiæ’µÞwʰ¢æ#!ÆÒ {Ç4„ðƒÏÅžÀ¹V™ˆ§æÓàðx!uZŠÎQãhÌ;Í-žHî8bÔæ¢6–¥E7¯…´±¬8oôדhoã†mêï¨Üƒ˜D’>®ùT ¯¤ˆß¤|&õ:uˆÂ?>ýô_%Np/ñ:]ˆFêõÓt!RñˆOÓ†(ÕFC-9Âÿ/c¦Í †Yrvñ~Fiãtcˆ÷.«Ò:qsˆ÷-9ñFyãtƒˆë—Õ‡¸vÉ‘7N7ЏŽQÖ© Ý0âêeUÖ)8j³ˆ+—œ‡ƒ¸’Qâ8Ý4â F™¸qD>ãÃBän2Çé9[‡ÔNÜâÝ­Câ© Ýâé(ñÔ†nñcšã~~õ¯d9ðÔ䈉j‹Ò=Q(ÄdÎ7$…¨“9ß6€>ÿ`ËXeÀìyÇÖÂ¥`ú,3P”Œˆ‰@ Ÿð|ñú’€_.–ë4;m%BFDŽD †Ï?¸˜±)h@D—Žì@émZÄ(9>ÿàÈõ.Ì\kh÷‹/¨n ¯ä+9¦5;ŒË3:V*æq ‚‹^=JFDIˆáóž½£ÁáIöù©qAŸ1ƒî§BÔ¡f©ýž!¶«_(Ü]´Í(e"†Ê?ØÆTxÆØ>½¤ó’"ô&_;+TüË3/0“žŽþ†Å’Qb”üƒX>rû.&"dd:ÿjâ]:ï1"ÜÑw%#¢$Ä(ùY”öéÉOuL…è÷NM=Ø‹ÌE”Œˆ’Cçdˆ8_é&æBd3‡©qÿóyŸ¶«0Ø\DQ2"JB ›ÐGs¿8´1!ðzL\Q¡¤oýÉžWTt%#¢$Äxz¾ª÷Ê¥ tQë2"r´5ÄQ}eÉ}ˆë2"r´5ÄZveQ~z[©59Ri$s¾!)D…˜Ìù†$1雼Þ'&rß* ¹ÿeƒÚ:¢ØÜ6<)Dù›gЧm#^+DJ¢ìɨ¥KpŠIžR€({2*DÙb %T…(_à4\! B”/…(@ Q¾¢Ü‹¦Q Q¾¢)DùRˆ” D¼DCž¶Žˆ[;iNµJ"^.%O©@t—¾’[¬Røz±4'áZ¥ñᯨk¯K.…(]cBHSæ0Ý>âc9“+…(_ Q€¢|)DÚ:â#x7\! B”/…(@ Q¾¢mñœÝ(DRˆò¥H!Ê×#@|[:|Nt[r¢BÜ)D…¸Š„è˜ck^ÕÆtžSJ‡Ö*ƒ ·KãC°Ôv¦éÜ!æºPK‹x=OЩ‘ iásÇ[¬ñªty:¯Ú$“F#ØâmÙ¤qT^ˆ%`@ÄO‹å6™¾Pî„8«Ç‹ÛøúiÑâ4& ÐàL‚øŽý"_lq2àxK%·Dôˆ£/ ΂9#Í5½hÍä¶äÜ8ÃL7“ñ„Cg`<§9w¯íS/ãLH¥OF¦;ziœ€mÂv •aKoÖÞÛBƒ 1î 6Ô0.×e¨XÆ .nNÜŸI/OöFÌ}Ë8&•cæÜ=,Z®…ˆhœ:Âl Z&šÁ*Ç­5·Ç8^§Ö™M¢HˆðÚ¸N¿Õoyn¹è#¶ôV­SºÊ Û™¸¹=’ƒŸ ©×ÜóÎE=óæÊ:$?0cjé6ÔÜï³@Çn€ˆ.Æ×¶l›ôÛ̽›)6/ê,qÏ[¤Ç;€‘La"bËï°Ê»Î¿”XîxMÀ+Ë ÙÑï¼ËAçã½F¸¢ïÂýZûh“£O ±ýGŶÈK\k: ­™#(ðçâÄÁ«¯0¢"yóiŒÏЗ›eÄŸ".q,‘ìY/ž‘ö‡òѶ >š?5í`/2®uöÂa°^„’9"Ž©#,˜"ÂëÔÀ*Ý?ÈÞ Óðlxý1qÓX@l4,÷„tJõŒ?P ³¹ˆá\üh¬ ÌP¨X7>âû×Ge|:nœÁ\b‘{ËTžÞVª2¶Ö‡“úKC!î„âcBÜq)ć …ø¤‚þ$L‘ßl`õuIEND®B`‚omniEvents-2_6_2/doc/doxygen/a00074.html0000644000076400001440000011547310303671740020065 0ustar alexusers00000000000000 OmniEvents: OmniEvents::Service Class Reference

OmniEvents::Service Class Reference

Singleton class that contains various methods for running a Windows service. More...

#include <daemon_windows.h>

List of all members.

Public Member Functions

 Service ()
 ~Service ()
void start (int &argc, char **&argv)
void tracefile (const char *val)
 Set _tracefile.
void pidfile (const char *val)
 Set _pidfile.
void foreground (bool val)
 Set _foreground.
void daemonize ()
 Redirects output streams to tracefile.
void runningOk ()
 Called to signal that all startup operations have completed OK.
void shutdown ()
 Exit handler set with on_exit() - shuts down the service.

Static Public Member Functions

static void log (const char *message)
 Callback, used as a parameter to omniORB::setLogFunction().
static void ctrlHandler (DWORD controlCode)
 Handles control codes from the Service Control Manager.

Private Member Functions

void Service::setArgcArgv (int &argc, char **&argv)
void install (int argc, char **argv) const
void uninstall () const
void readParameters ()
 Populates _parameters from the Registry.
void writeParameters (int argc, char **argv) const
 Writes args 2+ to the Registry.
bool Service::setServiceStatus (DWORD currentState, DWORD win32ExitCode, DWORD serviceSpecificExitCode, DWORD checkPoint, DWORD waitHint)

Private Attributes

char * _tracefile
 The tracefile name (if any).
const char * _regSubKey
bool _serviceRunning
int _callCount
char * _parameters
 Stores parameters read from the registry.
char ** _argv
 Replacement argv array, read from registry.
std::ostream * _logstream
SERVICE_STATUS_HANDLE _serviceStatusHandle
 Windows thing.


Detailed Description

Singleton class that contains various methods for running a Windows service.

Definition at line 40 of file daemon_windows.h.


Constructor & Destructor Documentation

OmniEvents::Service::Service  ) 
 

Definition at line 180 of file daemon_windows.cc.

OmniEvents::Service::~Service  ) 
 

Definition at line 192 of file daemon_windows.cc.

References _argv, _logstream, _parameters, and _tracefile.


Member Function Documentation

void OmniEvents::Service::ctrlHandler DWORD  controlCode  )  [static]
 

Handles control codes from the Service Control Manager.

Definition at line 340 of file daemon_windows.cc.

References OmniEvents_Orb_bumpTraceLevel(), OmniEvents_Orb_shutdown(), and OmniEvents::service.

Referenced by start().

void OmniEvents::Service::daemonize  ) 
 

Redirects output streams to tracefile.

Definition at line 292 of file daemon_windows.cc.

References _logstream, _tracefile, log(), omniORB::setLogFunction(), and OmniEvents::shutdown0().

void OmniEvents::Service::foreground bool  val  ) 
 

Set _foreground.

Definition at line 216 of file daemon_windows.cc.

References log().

void OmniEvents::Service::install int  argc,
char **  argv
const [private]
 

Definition at line 383 of file daemon_windows.cc.

References _regSubKey, HERE, PACKAGE_NAME, OmniEvents::Win::perror(), OmniEvents::service, OmniEvents::RegistryKey::setValueStr(), and writeParameters().

Referenced by start().

void OmniEvents::Service::log const char *  message  )  [static]
 

Callback, used as a parameter to omniORB::setLogFunction().

Definition at line 334 of file daemon_windows.cc.

References _logstream, and OmniEvents::service.

Referenced by daemonize(), foreground(), OmniEvents::Win::perror(), and pidfile().

void OmniEvents::Service::pidfile const char *  val  ) 
 

Set _pidfile.

Definition at line 209 of file daemon_windows.cc.

References log().

void OmniEvents::Service::readParameters  )  [private]
 

Populates _parameters from the Registry.

Definition at line 485 of file daemon_windows.cc.

References _regSubKey, HERE, OmniEvents::Win::perror(), and OmniEvents::RegistryKey::queryValueStr().

Referenced by start().

void OmniEvents::Service::runningOk  ) 
 

Called to signal that all startup operations have completed OK.

Definition at line 309 of file daemon_windows.cc.

References _serviceRunning.

void OmniEvents::Service::Service::setArgcArgv int &  argc,
char **&  argv
[private]
 

bool OmniEvents::Service::Service::setServiceStatus DWORD  currentState,
DWORD  win32ExitCode,
DWORD  serviceSpecificExitCode,
DWORD  checkPoint,
DWORD  waitHint
[private]
 

void OmniEvents::Service::shutdown  ) 
 

Exit handler set with on_exit() - shuts down the service.

Definition at line 319 of file daemon_windows.cc.

References _logstream, and _serviceRunning.

void OmniEvents::Service::start int &  argc,
char **&  argv
 

Definition at line 223 of file daemon_windows.cc.

References _callCount, _parameters, _serviceRunning, _serviceStatusHandle, ctrlHandler(), HERE, install(), main(), PACKAGE_NAME, OmniEvents::Win::perror(), readParameters(), uninstall(), and writeParameters().

void OmniEvents::Service::tracefile const char *  val  ) 
 

Set _tracefile.

Definition at line 202 of file daemon_windows.cc.

References _tracefile.

void OmniEvents::Service::uninstall  )  const [private]
 

Definition at line 448 of file daemon_windows.cc.

References HERE, PACKAGE_NAME, OmniEvents::Win::perror(), and OmniEvents::service.

Referenced by start().

void OmniEvents::Service::writeParameters int  argc,
char **  argv
const [private]
 

Writes args 2+ to the Registry.

Definition at line 502 of file daemon_windows.cc.

References _regSubKey, HERE, OmniEvents::Win::perror(), and OmniEvents::RegistryKey::setValueStr().

Referenced by install(), and start().


Member Data Documentation

char** OmniEvents::Service::_argv [private]
 

Replacement argv array, read from registry.

Definition at line 75 of file daemon_windows.h.

Referenced by ~Service().

int OmniEvents::Service::_callCount [private]
 

Definition at line 73 of file daemon_windows.h.

Referenced by start().

std::ostream* OmniEvents::Service::_logstream [private]
 

Definition at line 76 of file daemon_windows.h.

Referenced by daemonize(), log(), shutdown(), and ~Service().

char* OmniEvents::Service::_parameters [private]
 

Stores parameters read from the registry.

Definition at line 74 of file daemon_windows.h.

Referenced by start(), and ~Service().

const char* OmniEvents::Service::_regSubKey [private]
 

Definition at line 71 of file daemon_windows.h.

Referenced by install(), readParameters(), and writeParameters().

bool OmniEvents::Service::_serviceRunning [private]
 

Definition at line 72 of file daemon_windows.h.

Referenced by runningOk(), shutdown(), and start().

SERVICE_STATUS_HANDLE OmniEvents::Service::_serviceStatusHandle [private]
 

Windows thing.

Definition at line 77 of file daemon_windows.h.

Referenced by start().

char* OmniEvents::Service::_tracefile [private]
 

The tracefile name (if any).

Definition at line 70 of file daemon_windows.h.

Referenced by daemonize(), tracefile(), and ~Service().


The documentation for this class was generated from the following files:
Generated on Fri Aug 26 20:56:16 2005 for OmniEvents by  doxygen 1.4.3-20050530
omniEvents-2_6_2/doc/doxygen/a00007.html0000644000076400001440000001372410303671740020055 0ustar alexusers00000000000000 OmniEvents: Member List

OmniEvents::Service Member List

This is the complete list of members for OmniEvents::Service, including all inherited members.

_argvOmniEvents::Service [private]
_callCountOmniEvents::Service [private]
_logstreamOmniEvents::Service [private]
_parametersOmniEvents::Service [private]
_regSubKeyOmniEvents::Service [private]
_serviceRunningOmniEvents::Service [private]
_serviceStatusHandleOmniEvents::Service [private]
_tracefileOmniEvents::Service [private]
ctrlHandler(DWORD controlCode)OmniEvents::Service [static]
daemonize()OmniEvents::Service
foreground(bool val)OmniEvents::Service
install(int argc, char **argv) const OmniEvents::Service [private]
log(const char *message)OmniEvents::Service [static]
pidfile(const char *val)OmniEvents::Service
readParameters()OmniEvents::Service [private]
runningOk()OmniEvents::Service
Service()OmniEvents::Service
Service::setArgcArgv(int &argc, char **&argv)OmniEvents::Service [private]
Service::setServiceStatus(DWORD currentState, DWORD win32ExitCode, DWORD serviceSpecificExitCode, DWORD checkPoint, DWORD waitHint)OmniEvents::Service [private]
shutdown()OmniEvents::Service
start(int &argc, char **&argv)OmniEvents::Service
tracefile(const char *val)OmniEvents::Service
uninstall() const OmniEvents::Service [private]
writeParameters(int argc, char **argv) const OmniEvents::Service [private]
~Service()OmniEvents::Service


Generated on Fri Aug 26 20:56:16 2005 for OmniEvents by  doxygen 1.4.3-20050530
omniEvents-2_6_2/doc/doxygen/a00076.html0000644000076400001440000005720410303671741020065 0ustar alexusers00000000000000 OmniEvents: OmniEvents::SupplierAdmin_i Class Reference

OmniEvents::SupplierAdmin_i Class Reference

#include <SupplierAdmin.h>

Inheritance diagram for OmniEvents::SupplierAdmin_i:

Inheritance graph
[legend]
Collaboration diagram for OmniEvents::SupplierAdmin_i:

Collaboration graph
[legend]
List of all members.

Public Member Functions

CosEventChannelAdmin::ProxyPushConsumer_ptr obtain_push_consumer ()
CosEventChannelAdmin::ProxyPullConsumer_ptr obtain_pull_consumer ()
 SupplierAdmin_i (const EventChannel_i &channel, PortableServer::POA_ptr poa)
virtual ~SupplierAdmin_i ()
OMNIEVENTS__DEBUG_REF_COUNTS__DECL
void 
collect (list< CORBA::Any * > &events)
 Collects all events that have arrived since the last call.
void disconnect ()
 Send disconnect_XXX_supplier() to all connected consumers.
void reincarnate (const PersistNode &node)
 Populate this servant from log information.
void output (ostream &os)
 Save this object's state to a stream.

Private Attributes

const EventChannel_i_channel
ProxyPushConsumer_i_pushConsumer
ProxyPullConsumerManager_pullConsumer
list< CORBA::Any * > _queue
 Incoming queue for the PushConsumer.
pair< unsigned long, unsigned
long > 
_nextPull
 Next time to retry pull (sec,nsec).

Detailed Description

Definition at line 53 of file SupplierAdmin.h.


Constructor & Destructor Documentation

OmniEvents::SupplierAdmin_i::SupplierAdmin_i const EventChannel_i channel,
PortableServer::POA_ptr  poa
 

Definition at line 53 of file SupplierAdmin.cc.

References _channel, _nextPull, OmniEvents::Servant::_poa, _pushConsumer, _queue, OmniEvents::Servant::activateObjectWithId(), OmniEvents::EventChannel_i::consumerAdmin(), OmniEvents::EventChannel_i::cyclePeriod_ns(), MILLION, and OmniEvents::EventChannel_i::pullRetryPeriod_ms().

OmniEvents::SupplierAdmin_i::~SupplierAdmin_i  )  [virtual]
 

Definition at line 83 of file SupplierAdmin.cc.

References _pullConsumer, _pushConsumer, _queue, and DB.


Member Function Documentation

void OmniEvents::SupplierAdmin_i::collect list< CORBA::Any * > &  events  ) 
 

Collects all events that have arrived since the last call.

Definition at line 104 of file SupplierAdmin.cc.

References BILLION, and MILLION.

Referenced by OmniEvents::EventChannel_i::mainLoop().

void OmniEvents::SupplierAdmin_i::disconnect  ) 
 

Send disconnect_XXX_supplier() to all connected consumers.

Definition at line 137 of file SupplierAdmin.cc.

References _pullConsumer, _pushConsumer, OmniEvents::ProxyPullConsumerManager::disconnect(), and OmniEvents::ProxyPushConsumer_i::disconnect().

Referenced by OmniEvents::EventChannel_i::destroy().

CosEventChannelAdmin::ProxyPullConsumer_ptr OmniEvents::SupplierAdmin_i::obtain_pull_consumer  ) 
 

Definition at line 45 of file SupplierAdmin.cc.

References OmniEvents::Servant::_poa, _pullConsumer, _queue, and OmniEvents::ProxyPullConsumerManager::createObject().

CosEventChannelAdmin::ProxyPushConsumer_ptr OmniEvents::SupplierAdmin_i::obtain_push_consumer  ) 
 

Definition at line 38 of file SupplierAdmin.cc.

References _pushConsumer, and OmniEvents::ProxyPushConsumer_i::createObject().

void OmniEvents::SupplierAdmin_i::output ostream &  os  ) 
 

Save this object's state to a stream.

Definition at line 167 of file SupplierAdmin.cc.

References _pullConsumer, _pushConsumer, OmniEvents::ProxyManager::output(), and OmniEvents::ProxyPushConsumer_i::output().

Referenced by OmniEvents::EventChannel_i::output().

void OmniEvents::SupplierAdmin_i::reincarnate const PersistNode node  ) 
 

Populate this servant from log information.

Definition at line 146 of file SupplierAdmin.cc.

References OmniEvents::PersistNode::_child, OmniEvents::Servant::_poa, _pullConsumer, _pushConsumer, _queue, OmniEvents::PersistNode::child(), OmniEvents::ProxyManager::reincarnate(), and OmniEvents::ProxyPushConsumer_i::reincarnate().

Referenced by OmniEvents::EventChannel_i::activate().


Member Data Documentation

const EventChannel_i& OmniEvents::SupplierAdmin_i::_channel [private]
 

Definition at line 80 of file SupplierAdmin.h.

Referenced by SupplierAdmin_i().

pair<unsigned long,unsigned long> OmniEvents::SupplierAdmin_i::_nextPull [private]
 

Next time to retry pull (sec,nsec).

Set to (0,0) when we should pull every cycle.

Definition at line 87 of file SupplierAdmin.h.

Referenced by SupplierAdmin_i().

ProxyPullConsumerManager* OmniEvents::SupplierAdmin_i::_pullConsumer [private]
 

Definition at line 82 of file SupplierAdmin.h.

Referenced by disconnect(), obtain_pull_consumer(), output(), reincarnate(), and ~SupplierAdmin_i().

ProxyPushConsumer_i* OmniEvents::SupplierAdmin_i::_pushConsumer [private]
 

Definition at line 81 of file SupplierAdmin.h.

Referenced by disconnect(), obtain_push_consumer(), output(), reincarnate(), SupplierAdmin_i(), and ~SupplierAdmin_i().

list<CORBA::Any*> OmniEvents::SupplierAdmin_i::_queue [private]
 

Incoming queue for the PushConsumer.

Definition at line 83 of file SupplierAdmin.h.

Referenced by obtain_pull_consumer(), reincarnate(), SupplierAdmin_i(), and ~SupplierAdmin_i().


The documentation for this class was generated from the following files:
Generated on Fri Aug 26 20:56:17 2005 for OmniEvents by  doxygen 1.4.3-20050530
omniEvents-2_6_2/doc/doxygen/a00037.html0000644000076400001440000001170610303671741020057 0ustar alexusers00000000000000 OmniEvents: Member List

OmniEvents::SupplierAdmin_i Member List

This is the complete list of members for OmniEvents::SupplierAdmin_i, including all inherited members.

_channelOmniEvents::SupplierAdmin_i [private]
_default_POA()OmniEvents::Servant [virtual]
_nextPullOmniEvents::SupplierAdmin_i [private]
_poaOmniEvents::Servant [protected]
_pullConsumerOmniEvents::SupplierAdmin_i [private]
_pushConsumerOmniEvents::SupplierAdmin_i [private]
_queueOmniEvents::SupplierAdmin_i [private]
activateObjectWithId(const char *oidStr)OmniEvents::Servant [protected]
collect(list< CORBA::Any * > &events)OmniEvents::SupplierAdmin_i
deactivateObject()OmniEvents::Servant [protected]
disconnect()OmniEvents::SupplierAdmin_i
obtain_pull_consumer()OmniEvents::SupplierAdmin_i
obtain_push_consumer()OmniEvents::SupplierAdmin_i
output(ostream &os)OmniEvents::SupplierAdmin_i
reincarnate(const PersistNode &node)OmniEvents::SupplierAdmin_i
Servant(PortableServer::POA_ptr poa)OmniEvents::Servant [protected]
SupplierAdmin_i(const EventChannel_i &channel, PortableServer::POA_ptr poa)OmniEvents::SupplierAdmin_i
~Servant()OmniEvents::Servant [virtual]
~SupplierAdmin_i()OmniEvents::SupplierAdmin_i [virtual]


Generated on Fri Aug 26 20:56:17 2005 for OmniEvents by  doxygen 1.4.3-20050530
omniEvents-2_6_2/doc/doxygen/a00359.png0000644000076400001440000000543210240451503017675 0ustar alexusers00000000000000‰PNG  IHDRG¿3e™!PLTEþÿÿo___???ŸŸŸßßß¿¿¿ÿÿÿ/l:ZtRNS@æØf §IDATxœíMÛ6‡û|Ü^ëM"7ù©¶Žyq*ÛlÖò±õ*&‰»ëè˜M£—[­7‚§Ú’(Ÿrg*¢,щéÈó—‘ 0À<Âd”ßIÖ:ýõ]Þ-øÄbH1$‚A ‰ †DC"HCÆäçí iHæ\cH1$‚A ‰ †DÐÎC:Gó  qµªHpàíí:¤àµw~¥Öj±S9ŒJï^,Ù™]ÝuHÃ2þ̺ 9¿ž†Rž/Ù™]ÝuHÓºœ´“^¡'{­"„›+åsé¸CQ O®d«qâÕC^§//ŠAÿÄ;Åì­†¶·ëBý„ÙGmoç!™C"ˆ!ÄbH1$‚A ‰ †DùÚñχþå$E×6›q¿E‡´÷½ÍvÜk1$‚A@Ú³ÙŽ{-2¤k†´^éÁÆC"ˆ i!­@z°ƒC"ˆ!D…t½÷€%†Dÿ-A ‰ †DC"ˆ!ÄbH1$‚A ‰ †DC"ˆ!ÄbH1$‚A ‰ †DC"ˆ!ÄbH1$‚A ‰ †DC"ˆ!ÄbH1$‚A ‰ †DÐ RhâNÆì®·g\±Ú Ûý Éð0á8Åk4ùŸ\C†D²ËvÁ.C"ØeH»· Wv…ôÒJs·ŽƒJ×§985WÙ[J_,¯7Ö>ÙOª}£ej!ßkà æt˜ÝEHÔ•]ÃÚŠ•]W@:/ýöežv#ûµZ¼À×kKé‹çVkµƒØéݨΟj\ö ‰¼²«;7²º™úø©ú™kÁ«ØéRúí‚«ë½Õ™Y>*$òÊ®ØØAc(Ê'rXúKÍÔÇ )/ƒ^ëgqŠÅqA=9*BîÃ+´?õ~o5ô ŒR×éqêÕUAÒ¡fü·h B0 ¹p1ÙÃOÊР‘‰ê ä \0ˆz­ò¸õ‡<ì@cŸ%@¢®ìºÁKÙ­?«=>ú2iß'@‚ƆÁÕøjìcq —‚–΋`œ>=‘§ðBHP¦cƾ.ˆ f„o˜êýAb®«‰stÖÇÃn=ÙÌ|…9œ [{?ÞáñÖ¯ìªP\†ó2hžÊÆôô.H~ Zºjà®÷GàëøX¯N© ªt¨Ó1c ÔŒà-ªw 1—ô§õ ‡ƒ…— œÁ?À BB¤s^ŸÔ‚›‰º²«Šg¸ù wM€¤£f { äv„h+H“ŸÔ¼¢Ò¡L×fá†5¤¼Eõž¨Ò/0ôúÚP$ª3˜ï ê1É™¼Òšx,“ ¥ÑdÃü÷üÙí|Å$¼ËÏnÛh2{"bH4s+³CÚ°v†D¨!jgH„ÚmAÚæk»½Hó¯ñ榷ý*ðoÛLøròv·±›j÷Òë¨)L,ÉôÊ:QS™M·Åëuú,Y4hLLßÄ”ûà~+ÒÙH»Y°ép»6½’Õµ¦…„m0¹,®éå¾ö¾7ÐÕSo;­–{½6æ™Ù~‰Æ `O¿7·jƒ±¡Ä$$Ý(M3°¹þ  …‰Áy 2dà_è™ÛåÝHÈ]›ƒd0lÍA2BÉÄ\2a%’AH&f ’¹™e’.nèæÔ,#ÃRßf ™¾!5 )ýg˜Þ?ó ›†”z`J ÉøÃŸ´)mgOÉø£Ÿ’HéB.•“–Öy¶)U—O㦭UÕ­@JÓÜí!Ù´,AÚ¾ão Éâ’ê¶ mý¹nëªÍ ¬AÚ¶ÙÛA²j(‹¶ €­ YÞ½À&¤­î¶(b·I˶iþæ ?Í®]H[ÂÆg°QˆmHÎf·j(ë6uc3HöC eÒ†±‘×íÉ“¤žÍ7p;“PCeiè² 5TFè‘Aö<Ãí¯2ƒDýà©®g¹Ù\vˆ!Gƒ”Ùp¤”!$Z„ e¼Ó\¦(!Gq?ë}³…D“õ² 5TÆÖGÊZH9lê˜9¤ua ‚\¶PÍÒš¾p'¤ì#M)Hwúz¤¼¶OÍÒ]î&sÈ©ÉÜ %ß $BÊqÞ¼ %ö‹ùu#™#¤¤®±R¾›9çiuÈ­¤‘óÖéyBZC+ åj¨\!­ê"˲û˵$å i™Ò‘üÙƒ”ùº®–ü@1$‚A ‰ †DC"ˆ!dRC^ÎÝðB_Ê›UBúIR‚–¼·A!vÕ Ûó“Ù¡%?Pv!yÿn¾mÍý)øÍfìTôg'~óóï‹æ ip²pÝ ¯æ'³CK~ ìBêUñ'æ{QìÚ·¯Ì’/Ä—HbY–ü@Ù…Ô¯ˆ®Ó. ‹C1t n@å½h·z²à—n„{V *~ _ÀdtÖ“Õ’xÜ«zSLÓŽ{æAIÿP‘™ú¥±€_ 74qT;nÐDØ.” e1î†RIü(þÙüÕ¯CvœŽèÀ÷_1©ü«ù¾÷ä¼ë\}ÄEå°äAÉŽû¡¥N/¿à÷ @Bbw |MÅT Ü#¿õN~ÔhE—„~ÉG^íPœõ1AC”ÝÇCuÚê:ð{¶•‰ÊN@Òáƒ=©÷$ôp]géõ»Ê×Á ®C¾¢?·URéþçBEt@ gHÀ¶µ‰€¤î[:ª"M ©ÒqæTOzWG yÓnG Q^¼');IÝÄ!5›MT`@y¯!fc’‚cÒà`$ü30êMýŠ‚Ô;ƒ[<½lÀ˜ÔÐcÒû¤n&Ǥ±x =LVÑ`4ŸÝ$?†½çhHÅßÔìÄ£ Š§ ³[uW m¥^!éJ;å¶,ùº¾TÒ:uW>Þ)õ¢ß™Ž¡¢Y·³äêBÚR–ü@1$‚A ‰ †DPÞßà~bH1$‚A ‰ †DC"è¯ÿž ¸O ipIEND®B`‚omniEvents-2_6_2/doc/doxygen/a00361.png0000644000076400001440000000635410240451504017673 0ustar alexusers00000000000000‰PNG  IHDRGÒ²Yy'PLTEþÿÿr%™˜2Ío___???ŸŸŸßßß¿¿¿ÿÿÿÃÓ»ÿtRNS@æØf sIDATxœíM{Û6Çûò ö–ëúæc÷Ú4‰tlò¨±Žyq*ÛlÖö±õ*&‰»ëê˜M­—[m½:ô©M‰ñ¡v ,J"¥! €²üeÇ$Î?a†T$_1£Múó«¢[pd d d d d d d $ ¹Ò4Œs"Ï<Á™2Hò¼ÅZRÕ)«32222ŠB:q÷çüaທq§ø/œr¢½5üZמ—Yxckg¥|ñÄMÎ(Éÿ_ýE¤1å ^ì²élgTùðjÅÎìèH§•_.æe7¬_¯G+Ý[)_ÒÐçø›'îìñ0q,jc9øÅr¬NüYãLVÂ-Ɇ¨z<ô]×ξ4°ÞžhQȾ³ØÙ+*$5sH8bÀ€åºnbòÃ[^ËÁ/– H³pC§©Ö8S åĽiü¦ ëRcÜÁzPn‰Böî'6`TH˜—!€ù¶€A†Ârð‹åÒ3ö OÄ!U‡ÖÙðg3Z¾ˆBªÃµØi@&x) DNòšp À YÐdƒ*$¼’/@‚[ 0àUNÊÂD#ÌIxëá4°\@:­œöÙÀës§=ÈI/×8S å›ÉÅœtÅ^à…¬Š «{êTE!ó:¬ôù¬>¬i÷üfr)'UÁۻ⃱6»ºa9ú…r¬XkÀ‰ÏYéw¼ºUoœ#¸ºU×8S ;ò²dBw¦@wR g d d d d d d Dsòìï¦yÃñï)êê…DѵÊf̵£ÇM*Ñ!íþCe;fúë¡/)e ´}vt¸I§vU¶c¦» éZ¤‡·0ÞÒ@ÒoAwÒ®H¤õnR* $ IÉ@"!m_¼HQ!]ïjIJÈhûâÍ@"Èü/AAAAAAAA[é7©d d t7 -Ìzѯ;ij/ÍzÑ®;)°—g½èÖvBÚ»ÄY'8‡„O[ ?†Øp`6ÉDOk„¶’W9ý¶3>À9$|ÚJ8¡†Tåôq8ÉDOk„¶ÒÃôGÇ8‡„ŽþØ'™èiÐVBÂi%ßY8•D@º 78pN2ÑÓ¡­„„ÓJÞý„SI$¯:y†³^`Hùõp’‰žÖm%$>­¤‰SI$¸hÛ8«„“Lô´Fh+!á´¯ƒSIÂi+'U‚ÂI&zZ#´bÔÐã>VwR‘Ú:Hs¾. @m¤=nRië =Ðã&• $‚ $‚ $‚ $‚ $‚ $‚ $‚¶ÒŽ7©d d d d d d d d ´uèq“JAAAAAAA[iG›TšA 6~íᛸ"v7ÛKPšoâJôžÙF¼Ý[H€ Ûzõ(ó{̉d×@"Ø5v $‚]‰`w q¥ (¯Äš[Ú–½2øÎéZXf±3Pï­¨aùsºVÄî"$êJAA=f¥ H²W‚ö¼ˆì®‡DíŒÿ¹^ÂÏöR!‘W ²çFâ›)¶e¯ ´äw=$jgfõ¨È+acMÏ­²G^Õï¯4SlK]H¬iàD/†‹í}æ†ÍHÔÎ@=߃©×®ŽÛ¿ãgê-ö<u¥ Àö_³nãyý¥÷øbÒ¹9H€$ue ¨~¿Á‰^åËÉðfÿ¤›ÝF$rg°ò%Ö°ünýUPþífÿ´lyk!m^)ˆ'P\ÖåÜo³æôx$‰+a{øD/ÛïO~7 W :ƒÿ€A„„=bÖicÒ°Jv$êJA<žá8Ô+ñµ~ É^üò³Ï^aèõ…¡HÔÎ`½0(r’5y½gAMëu9RŠ•‚šÏý/evþM$Ù+ñœ„µ`ó‘Ä %@¢vëÁxœ¤ ÀH:¶ÂD›p @X)(„9iô~€‹%@’º2ÏIÐ2>Ÿë¦/rJ€Dí Ô+5À ÈIà®ôóþ \.%@¢®B‚âG0¼N$©+ͯnW|q¢=8Ì %@"/{„7“`0¼ºÝ8:üê6Ï´2^–xå$Hy¿2P²¶üµÛiÌEø>¿vË¢Éì‘D3»­GRJïÁ»Dðn ¼«‚”á]»?v…¾ž¿77õ­À¯7ÖHRÄ{´x¹‘ìÒßæŽQè_ê—+Kÿ¦æ°‘yLä‚tßÿªI™Ö„ÅÜOd.HaòXXµ(Óš°˜»ù 1éÑv-ÿ›Ñó·1'¤kÙ#Iþ×ÇKxsBÂ&0™”¤/×°+a£¼x $öKAŠËÁy!±kl¼‘›ã„­ÜØsC76×’zv-RH'·Áü„$]ºe^äÝMÈ‚$)1I„$qDʃ$¥UÒ^æHÍÿ!Éß’ I¾o— IJÈIF’oHåB’Ð<1›ßÄ¢$CÊ?ÐsC’ÿY:¤Ü)3/$K‡É‡”³9û¨d¡>rø\„J ¤2+@HC×½X€ä®JQ?Pj!õkn×êT¼²çzv  ¨|t;í+ +7®}RñkÃ6>€Éè¤ÇŽ*î“Þ‘3Å@1½²O8s¸ÇÉL‡•± ¿nhb¿æÞƒpƒàRµTuÇÝ@@ª¸ß»ÿlý<<:€ñâ]YWîl8ÿu'µµ>öžžv­Ëß°€SÙ«8pæ•ý©ÍwÏ/Jðû ¡‰3÷þ@rñ1u§ OmniEvents: OmniEvents::timestamp Class Reference

OmniEvents::timestamp Class Reference

This class can be used to generate timestamps. More...

List of all members.

Public Member Functions

 timestamp (void)
const char * t (void)

Private Attributes

char str [29]


Detailed Description

This class can be used to generate timestamps.

The t() method normally returns a timestamp string, but if the same timestamp (to the nearest second) would be returned as last time then an empty string is returned instead.

Definition at line 252 of file omniEventsLog.cc.


Constructor & Destructor Documentation

OmniEvents::timestamp::timestamp void   )  [inline]
 

Definition at line 256 of file omniEventsLog.cc.

References str.


Member Function Documentation

const char* OmniEvents::timestamp::t void   )  [inline]
 

Definition at line 261 of file omniEventsLog.cc.

References str.

Referenced by OmniEvents::omniEventsLog::checkpoint().


Member Data Documentation

char OmniEvents::timestamp::str[29] [private]
 

Definition at line 254 of file omniEventsLog.cc.

Referenced by t(), and timestamp().


The documentation for this class was generated from the following file:
Generated on Fri Aug 26 20:56:16 2005 for OmniEvents by  doxygen 1.4.3-20050530
omniEvents-2_6_2/doc/doxygen/a00017.html0000644000076400001440000000356610303671741020062 0ustar alexusers00000000000000 OmniEvents: Member List

OmniEvents::timestamp Member List

This is the complete list of members for OmniEvents::timestamp, including all inherited members.

strOmniEvents::timestamp [private]
t(void)OmniEvents::timestamp [inline]
timestamp(void)OmniEvents::timestamp [inline]


Generated on Fri Aug 26 20:56:16 2005 for OmniEvents by  doxygen 1.4.3-20050530
omniEvents-2_6_2/doc/doxygen/a00079.html0000644000076400001440000001231510303671740020061 0ustar alexusers00000000000000 OmniEvents: OmniEvents::Win Class Reference

OmniEvents::Win Class Reference

Utility class, contains functions that Windows should have, but doesn't. More...

List of all members.

Static Public Member Functions

static const char * strerror (DWORD e)
static void perror (const char *s=NULL)


Detailed Description

Utility class, contains functions that Windows should have, but doesn't.

Definition at line 54 of file daemon_windows.cc.


Member Function Documentation

static void OmniEvents::Win::perror const char *  s = NULL  )  [inline, static]
 

Definition at line 71 of file daemon_windows.cc.

References OmniEvents::Service::log(), and strerror().

Referenced by OmniEvents::Service::install(), OmniEvents::Service::readParameters(), OmniEvents::Service::start(), OmniEvents::Service::uninstall(), OmniEvents::Service::writeParameters(), and OmniEvents::RegistryKey::~RegistryKey().

static const char* OmniEvents::Win::strerror DWORD  e  )  [inline, static]
 

Definition at line 57 of file daemon_windows.cc.

Referenced by perror().


The documentation for this class was generated from the following file:
Generated on Fri Aug 26 20:56:16 2005 for OmniEvents by  doxygen 1.4.3-20050530
omniEvents-2_6_2/doc/doxygen/a00005.html0000644000076400001440000000332010303671740020042 0ustar alexusers00000000000000 OmniEvents: Member List

OmniEvents::Win Member List

This is the complete list of members for OmniEvents::Win, including all inherited members.

perror(const char *s=NULL)OmniEvents::Win [inline, static]
strerror(DWORD e)OmniEvents::Win [inline, static]


Generated on Fri Aug 26 20:56:16 2005 for OmniEvents by  doxygen 1.4.3-20050530
omniEvents-2_6_2/doc/doxygen/a00080.html0000644000076400001440000002160310303671741020052 0ustar alexusers00000000000000 OmniEvents: OmniEvents::WriteLock Class Reference

OmniEvents::WriteLock Class Reference

Obtains an output stream to the active persistancy logfile, and locks it for exclusive access. More...

#include <omniEventsLog.h>

List of all members.

Public Member Functions

 WriteLock ()
 ~WriteLock ()

Public Attributes

ostream & os

Private Member Functions

 WriteLock (const WriteLock &)
 No implementation.

Private Attributes

omni_mutex_lock l


Detailed Description

Obtains an output stream to the active persistancy logfile, and locks it for exclusive access.

The lock is released when the object is destructed.

Definition at line 242 of file omniEventsLog.h.


Constructor & Destructor Documentation

OmniEvents::WriteLock::WriteLock  )  [inline]
 

Definition at line 245 of file omniEventsLog.h.

OmniEvents::WriteLock::~WriteLock  )  [inline]
 

Definition at line 249 of file omniEventsLog.h.

References OmniEvents::omniEventsLog::_checkpointNeeded, os, and OmniEvents::omniEventsLog::theLog.

OmniEvents::WriteLock::WriteLock const WriteLock  )  [private]
 

No implementation.


Member Data Documentation

omni_mutex_lock OmniEvents::WriteLock::l [private]
 

Definition at line 256 of file omniEventsLog.h.

ostream& OmniEvents::WriteLock::os
 

Definition at line 254 of file omniEventsLog.h.

Referenced by OmniEvents::ProxyPushSupplier_i::callback(), OmniEvents::ProxyPushConsumer_i::Connection::callback(), OmniEvents::ProxyPullSupplier_i::connect_pull_consumer(), OmniEvents::ProxyPullConsumer_i::connect_pull_supplier(), OmniEvents::ProxyPushSupplier_i::connect_push_consumer(), OmniEvents::ProxyPushConsumer_i::connect_push_supplier(), OmniEvents::ProxyPushConsumer_i::disconnect_push_consumer(), OmniEvents::Proxy::eraseKey(), OmniEvents::EventChannel_i::run_undetached(), and ~WriteLock().


The documentation for this class was generated from the following file:
Generated on Fri Aug 26 20:56:16 2005 for OmniEvents by  doxygen 1.4.3-20050530
omniEvents-2_6_2/doc/doxygen/a00021.html0000644000076400001440000000434010303671741020044 0ustar alexusers00000000000000 OmniEvents: Member List

OmniEvents::WriteLock Member List

This is the complete list of members for OmniEvents::WriteLock, including all inherited members.

lOmniEvents::WriteLock [private]
osOmniEvents::WriteLock
WriteLock()OmniEvents::WriteLock [inline]
WriteLock(const WriteLock &)OmniEvents::WriteLock [private]
~WriteLock()OmniEvents::WriteLock [inline]


Generated on Fri Aug 26 20:56:16 2005 for OmniEvents by  doxygen 1.4.3-20050530
omniEvents-2_6_2/doc/doxygen/a00139.html0000644000076400001440000000567710303671737020101 0ustar alexusers00000000000000 OmniEvents: version.cc File Reference

version.cc File Reference

Go to the source code of this file.

Namespaces

namespace  OmniEvents

Defines

#define NEED_PACKAGE_INFO

Functions

const char * OmniEvents::version ()
 Returns the constant version ID and copyright string.


Define Documentation

#define NEED_PACKAGE_INFO
 

Definition at line 24 of file version.cc.


Generated on Fri Aug 26 20:56:15 2005 for OmniEvents by  doxygen 1.4.3-20050530
omniEvents-2_6_2/doc/doxygen/a00140.html0000644000076400001440000000443510303671737020060 0ustar alexusers00000000000000 OmniEvents: version.h File Reference

version.h File Reference

This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Namespaces

namespace  OmniEvents

Functions

const char * OmniEvents::version ()
 Returns the constant version ID and copyright string.


Generated on Fri Aug 26 20:56:15 2005 for OmniEvents by  doxygen 1.4.3-20050530
omniEvents-2_6_2/doc/doxygen/globals.html0000644000076400001440000003237210303671741020672 0ustar alexusers00000000000000 OmniEvents: Class Members
_ | a | b | c | d | g | h | i | l | m | n | o | p | r | s | t | u | v | y

Here is a list of all file members with links to the files they belong to:

- _ -

- a -

- b -

- c -

- d -

- g -

- h -

- i -

- l -

- m -

- n -

- o -

- p -

- r -

- s -

- t -

- u -

- v -

- y -


Generated on Fri Aug 26 20:56:17 2005 for OmniEvents by  doxygen 1.4.3-20050530
omniEvents-2_6_2/doc/doxygen/namespacemembers.html0000644000076400001440000000452610303671741022556 0ustar alexusers00000000000000 OmniEvents: Class Members Here is a list of all namespace members with links to the namespace documentation for each member:


Generated on Fri Aug 26 20:56:17 2005 for OmniEvents by  doxygen 1.4.3-20050530
omniEvents-2_6_2/doc/doxygen/graph_legend.dot0000644000076400001440000000420510303671741021502 0ustar alexusers00000000000000digraph G { edge [fontname="Helvetica",fontsize=10,labelfontname="Helvetica",labelfontsize=10]; node [fontname="Helvetica",fontsize=10,shape=record]; Node9 [shape="box",label="Inherited",fontsize=10,height=0.2,width=0.4,fontname="Helvetica",color="black",style="filled" fontcolor="white"]; Node10 -> Node9 [dir=back,color="midnightblue",fontsize=10,style="solid",fontname="Helvetica"]; Node10 [shape="box",label="PublicBase",fontsize=10,height=0.2,width=0.4,fontname="Helvetica",color="black",URL="$classPublicBase.html"]; Node11 -> Node10 [dir=back,color="midnightblue",fontsize=10,style="solid",fontname="Helvetica"]; Node11 [shape="box",label="Truncated",fontsize=10,height=0.2,width=0.4,fontname="Helvetica",color="red",URL="$classTruncated.html"]; Node13 -> Node9 [dir=back,color="darkgreen",fontsize=10,style="solid",fontname="Helvetica"]; Node13 [shape="box",label="ProtectedBase",fontsize=10,height=0.2,width=0.4,fontname="Helvetica",color="black",URL="$classProtectedBase.html"]; Node14 -> Node9 [dir=back,color="firebrick4",fontsize=10,style="solid",fontname="Helvetica"]; Node14 [shape="box",label="PrivateBase",fontsize=10,height=0.2,width=0.4,fontname="Helvetica",color="black",URL="$classPrivateBase.html"]; Node15 -> Node9 [dir=back,color="midnightblue",fontsize=10,style="solid",fontname="Helvetica"]; Node15 [shape="box",label="Undocumented",fontsize=10,height=0.2,width=0.4,fontname="Helvetica",color="grey75"]; Node16 -> Node9 [dir=back,color="midnightblue",fontsize=10,style="solid",fontname="Helvetica"]; Node16 [shape="box",label="Templ< int >",fontsize=10,height=0.2,width=0.4,fontname="Helvetica",color="black",URL="$classTempl.html"]; Node17 -> Node16 [dir=back,color="orange",fontsize=10,style="dashed",label="< int >",fontname="Helvetica"]; Node17 [shape="box",label="Templ< T >",fontsize=10,height=0.2,width=0.4,fontname="Helvetica",color="black",URL="$classTempl.html"]; Node18 -> Node9 [dir=back,color="darkorchid3",fontsize=10,style="dashed",label="m_usedClass",fontname="Helvetica"]; Node18 [shape="box",label="Used",fontsize=10,height=0.2,width=0.4,fontname="Helvetica",color="black",URL="$classUsed.html"]; } omniEvents-2_6_2/doc/doxygen/graph_legend.png0000644000076400001440000001031410303671741021476 0ustar alexusers00000000000000‰PNG  IHDRæß­æ-6PLTEþÿÿ˜2Í¿xÿ¡Šc§§§ÿo¿¿¿???ŸŸŸßßß___ÿÿÿíõKtRNS@æØfDIDATxœí‰šâªFíS}î© Þÿe/CˆI$°!Dþõ}ÕZˆl†%EЖ—àëyÝ]ÒÍA@sPÐT4ÍA@sPÐT€£ùÔÜÕ*àOÈÝmsp5'.šNB¡9(hN4/hN4/hN4/œÊ5ï§«åæjq¼ß-”ÉêâÇï¹ûÛ'Až ¹èûžËŸÏÏÝ<ÐüQX.~qWóÏ‚í´ÈÄN]0ý"P)j§¥…æâ`§eŽæöN‹œ¶ÝìB-å[ñÆS4'šŽ‹ïædEçš× 4§šŽ—‹Ãç,¡Egš×LåŸP$š4§š4§š4§šN¥šã{Zê¢Îïiñå—ºàüÜ] 9ð¤6Íáy}üü<Øshü€æ ~žìy æð¼:jÓüšWÈÏÏ“=ÕžW4P›æ¿Ð¼B~~íy°æð¼* 9¨€Ÿg{͵iþû ÏëãççÙžCsàAuš+`x¿«nŸ€æÀ“Ñ Ó |Gs¹j/xuÍ'ê£[rÆVwmÍWKò–µçϾh<Á'A@sPÐT4€â‚ €æ  9¨h*šƒ €æ  9¨h*o €æ  9¨h*šƒ €æ  9¨h*o €æ  9¨h*šƒ €æ  9¨h* :Íx‹æ<“Å+§A›ÜÜ5´qJócÕ<ª˜c›(^9•8ÔkÞO›‡/ÀMœuÏ^ùÇé{íwúXš»š÷}ß°åŒÇUsÑ9yzæq¤æn<ÍøÖòMŠÒÜ·ž=nÕ¢Ûæ\£G·<æï}sÏɵޕ-RÍ:,ëõÚ=ïã´Wþaú½š »e–æ‡yŽñÒü½¬÷–o›Ýû×Á¿ÇKã½_>  4xN®³"\Ž›{ò´‡h®Û&ï÷¼ù0/Zù—]Xƒ-S‡ÿªÕŸòaw&¼ 9oT:€)Íf"ꔩô­ù§:\Ò\ÕBÞ°N÷ÁT´}õ0ì%ÍUwKËæF›§ÐãÐvœ·k0ó4··¦vã×ÏXsSÆ6{õWk>ÉÙ:äyÕwã° tUóù÷ÝF¤Z´,+Í­^è?齕GlÝ06È_ä ]Ï‚ŠÑ§zïñÌÐÜ™ÍuaVÄ©ôe6÷­Cæ-kÕʤYGÔ”»zÖGs½]­Ù›ÍÛy ÞìëÝÙ|é­ˆÙ\˜]—Ù\zØÎyw5WóùIùûéKûNÌ:›«qø¼6ïÖµ9Ó+e‰šÓd¦ÎŒù¼¶b!kóåv³67 T¶®Í™½6÷¬CæB_ME[Ñ·QÃúhÞ±Æìbš;ksÝt=¶}s0K6«·‚57e8šÏc/ËæøŽæòU°]ûtúÚ~»3­Í§[~´Ó2¿I"3uòÊĺR¾üšv4ŸJ`¼q·tÊtw0ó®C˜æÃ(–¢­èÛ¨‡a}4—«®¯[ç—’iÙ¦éf lûì /ùãôÖTÂ~¼ÃúYïhnï´èW·p4gæ=¥–µb‹O§/íw;ñ½x³¿ÔJxiž˜7ûýÞï¼V~X‘мÐJ@óð¸TÏšæÙƒ>IsáóQŠ‹åCóT@óR4O¯œJ@sʸмÐJ@ó™?.‘¥…ͳ­]sÌæ©€æ;d\´8Sù½š§â¨ÚY¹¥A+üžgÁ]ZI¾uë×%E—ÿý7}‹¿ceÿ&?ú‹[•SæËårk®<Ï©úß¿¹DÏÓ}V4òSvßmyªïPÌlùìy6ÕsyžÑò46¹}¯äé¾*ô6Íó˜þ7‹çùº/Í´ôzÍnßlyºoÄÍk¹ãy†hÿf=gÿÑ[þzYnÝ+yÊ/~Îþ6ƒéÉ—èiŠM¾&')¦¸w¹»¢=;yŠB×Ò¿ô­Îî¯jú)=Ö¤BÒÝr\” ¹Èò¾QÂÂÉ=/þÂóaŽ‹B4éMO(úƒ4§èä¢ß:¢ÍE†wHS•Lìy²^ ‘<¾Œ(«ÖiMO%:­æ©z€æÓ‡ñeÜBYš‹ÔŸH#:¥ç‰Z_µäj.ÒšžÄóâ5'ù„ís%/Ss‘Òô$:ç)šý½#÷¦PÍEBÓSˆNåy‚&tã÷V\ÊÕ\¤3^ôb5§üº#úü&Ƨ“„  hÍE2ÓÉE§ñœº­÷H®5WgC÷o ¹'iL§ÂsâvÆ÷[è{úúxIug ¹?OÀsÒVRHný¢Íl;ÎCp•ÐÖY‡¾Õq©:i:KWåPO39çü9y†æ‰¦tRÑã5§la|wm6Wzép«ÖaNÀm—“kGëlb+—|Z£3ëœSþ¬]‚jÍÕçZssÊŸ•Çi.˜N%zŒçDMŠíšÃ­•wÍ•½j’æÍ²6gëÚ¼‡eCQæèô¢Eçœòg剚 zÓ‰Dðœ¤=É$ßÕ¼ãcëî´ úF§ÚoÉŒ±Ó±é4¢{NÑ–è¯Íz® ŸxtËÊ=Ts‚†DvFá_›ÉÃG;¥ˆèyt+âúáÒ§l›éÃ.&bf®¹ 6=^ô Ïc[ÕÏþ$¹Ï×\К-z€çqµk}Ž‹/Ñ\šyàÅuÍ£jÕîGþ/ý¾EsAlzÄ“/{QíHÉ#žü,¾«¥t¦Çˆ~Ñóð*Ç´ö›·ßùº¶’™.ú5̓«ÓÐ:Vä+_§¹ 9EG,úÏCkÑĶV6|£æ ÓCE¿àyP5#ZW¡ãâ{5D¦‡m»økRŨ‰<ø©æ‹5d¦_Ž·ç×ëÞ¤º®:¾¾á¦_ÝWó«u‹hM½Ž‹ 4$—¤—E÷ôüZ½0‘‡RKë£M¿*º—ç—êÜ‚:¯:jÑ\ÄOêE÷ðüBuÂëÇEUš+âT¿´íB©9&òH*Ó\iºwÖžûV#´¾/8>S¡æ"nR÷ŸÒ?xîYƒ`ÉëÚ}êí‹ ¦Ÿzî=°’µï¬l©º7"&u/Ñ£5«£ú 6ÝgJ?ñüsÔ šÉkÎê‡tôIĤþQôÍ¿þ¤*€æ†@Õ?‰~èù‡`•ã'@ó• Ó?¬] OmniEvents: Graph Legend

Graph Legend

This page explains how to interpret the graphs that are generated by doxygen.

Consider the following example:

/*! Invisible class because of truncation */
class Invisible { };

/*! Truncated class, inheritance relation is hidden */
class Truncated : public Invisible { };

/* Class not documented with doxygen comments */
class Undocumented { };

/*! Class that is inherited using public inheritance */
class PublicBase : public Truncated { };

/*! A template class */
template<class T> class Templ { };

/*! Class that is inherited using protected inheritance */
class ProtectedBase { };

/*! Class that is inherited using private inheritance */
class PrivateBase { };

/*! Class that is used by the Inherited class */
class Used { };

/*! Super class that inherits a number of other classes */
class Inherited : public PublicBase,
                  protected ProtectedBase,
                  private PrivateBase,
                  public Undocumented
                  public Templ<int>
{
  private:
    Used *m_usedClass;
};
If the MAX_DOT_GRAPH_HEIGHT tag in the configuration file is set to 240 this will result in the following graph:

graph_legend.png

The boxes in the above graph have the following meaning:

  • A filled black box represents the struct or class for which the graph is generated.
  • A box with a black border denotes a documented struct or class.
  • A box with a grey border denotes an undocumented struct or class.
  • A box with a red border denotes a documented struct or class forwhich not all inheritance/containment relations are shown. A graph is truncated if it does not fit within the specified boundaries.
The arrows have the following meaning:
  • A dark blue arrow is used to visualize a public inheritance relation between two classes.
  • A dark green arrow is used for protected inheritance.
  • A dark red arrow is used for private inheritance.
  • A purple dashed arrow is used if a class is contained or used by another class. The arrow is labeled with the variable(s) through which the pointed class or struct is accessible.
  • A yellow dashed arrow denotes a relation between a template instance and the template class it was instantiated from. The arrow is labeled with the template parameters of the instance.

Generated on Fri Aug 26 20:56:17 2005 for OmniEvents by  doxygen 1.4.3-20050530
omniEvents-2_6_2/doc/doxygen/doxygen.css0000644000076400001440000001604510303671736020553 0ustar alexusers00000000000000BODY,H1,H2,H3,H4,H5,H6,P,CENTER,TD,TH,UL,DL,DIV { font-family: Geneva, Arial, Helvetica, sans-serif; } BODY,TD { font-size: 90%; } H1 { text-align: center; font-size: 160%; } H2 { font-size: 120%; } H3 { font-size: 100%; } CAPTION { font-weight: bold } DIV.qindex { width: 100%; background-color: #eeeeff; border: 1px solid #b0b0b0; text-align: center; margin: 2px; padding: 2px; line-height: 140%; } DIV.nav { width: 100%; background-color: #eeeeff; border: 1px solid #b0b0b0; text-align: center; margin: 2px; padding: 2px; line-height: 140%; } DIV.navtab { background-color: #eeeeff; border: 1px solid #b0b0b0; text-align: center; margin: 2px; margin-right: 15px; padding: 2px; } TD.navtab { font-size: 70%; } A.qindex { text-decoration: none; font-weight: bold; color: #1A419D; } A.qindex:visited { text-decoration: none; font-weight: bold; color: #1A419D } A.qindex:hover { text-decoration: none; background-color: #ddddff; } A.qindexHL { text-decoration: none; font-weight: bold; background-color: #6666cc; color: #ffffff; border: 1px double #9295C2; } A.qindexHL:hover { text-decoration: none; background-color: #6666cc; color: #ffffff; } A.qindexHL:visited { text-decoration: none; background-color: #6666cc; color: #ffffff } A.el { text-decoration: none; font-weight: bold } A.elRef { font-weight: bold } A.code:link { text-decoration: none; font-weight: normal; color: #0000FF} A.code:visited { text-decoration: none; font-weight: normal; color: #0000FF} A.codeRef:link { font-weight: normal; color: #0000FF} A.codeRef:visited { font-weight: normal; color: #0000FF} A:hover { text-decoration: none; background-color: #f2f2ff } DL.el { margin-left: -1cm } .fragment { font-family: Fixed, monospace; font-size: 95%; } PRE.fragment { border: 1px solid #CCCCCC; background-color: #f5f5f5; margin-top: 4px; margin-bottom: 4px; margin-left: 2px; margin-right: 8px; padding-left: 6px; padding-right: 6px; padding-top: 4px; padding-bottom: 4px; } DIV.ah { background-color: black; font-weight: bold; color: #ffffff; margin-bottom: 3px; margin-top: 3px } TD.md { background-color: #F4F4FB; font-weight: bold; } TD.mdPrefix { background-color: #F4F4FB; color: #606060; font-size: 80%; } TD.mdname1 { background-color: #F4F4FB; font-weight: bold; color: #602020; } TD.mdname { background-color: #F4F4FB; font-weight: bold; color: #602020; width: 600px; } DIV.groupHeader { margin-left: 16px; margin-top: 12px; margin-bottom: 6px; font-weight: bold; } DIV.groupText { margin-left: 16px; font-style: italic; font-size: 90% } BODY { background: white; color: black; margin-right: 20px; margin-left: 20px; } TD.indexkey { background-color: #eeeeff; font-weight: bold; padding-right : 10px; padding-top : 2px; padding-left : 10px; padding-bottom : 2px; margin-left : 0px; margin-right : 0px; margin-top : 2px; margin-bottom : 2px; border: 1px solid #CCCCCC; } TD.indexvalue { background-color: #eeeeff; font-style: italic; padding-right : 10px; padding-top : 2px; padding-left : 10px; padding-bottom : 2px; margin-left : 0px; margin-right : 0px; margin-top : 2px; margin-bottom : 2px; border: 1px solid #CCCCCC; } TR.memlist { background-color: #f0f0f0; } P.formulaDsp { text-align: center; } IMG.formulaDsp { } IMG.formulaInl { vertical-align: middle; } SPAN.keyword { color: #008000 } SPAN.keywordtype { color: #604020 } SPAN.keywordflow { color: #e08000 } SPAN.comment { color: #800000 } SPAN.preprocessor { color: #806020 } SPAN.stringliteral { color: #002080 } SPAN.charliteral { color: #008080 } .mdTable { border: 1px solid #868686; background-color: #F4F4FB; } .mdRow { padding: 8px 10px; } .mdescLeft { padding: 0px 8px 4px 8px; font-size: 80%; font-style: italic; background-color: #FAFAFA; border-top: 1px none #E0E0E0; border-right: 1px none #E0E0E0; border-bottom: 1px none #E0E0E0; border-left: 1px none #E0E0E0; margin: 0px; } .mdescRight { padding: 0px 8px 4px 8px; font-size: 80%; font-style: italic; background-color: #FAFAFA; border-top: 1px none #E0E0E0; border-right: 1px none #E0E0E0; border-bottom: 1px none #E0E0E0; border-left: 1px none #E0E0E0; margin: 0px; } .memItemLeft { padding: 1px 0px 0px 8px; margin: 4px; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-color: #E0E0E0; border-right-color: #E0E0E0; border-bottom-color: #E0E0E0; border-left-color: #E0E0E0; border-top-style: solid; border-right-style: none; border-bottom-style: none; border-left-style: none; background-color: #FAFAFA; font-size: 80%; } .memItemRight { padding: 1px 8px 0px 8px; margin: 4px; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-color: #E0E0E0; border-right-color: #E0E0E0; border-bottom-color: #E0E0E0; border-left-color: #E0E0E0; border-top-style: solid; border-right-style: none; border-bottom-style: none; border-left-style: none; background-color: #FAFAFA; font-size: 80%; } .memTemplItemLeft { padding: 1px 0px 0px 8px; margin: 4px; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-color: #E0E0E0; border-right-color: #E0E0E0; border-bottom-color: #E0E0E0; border-left-color: #E0E0E0; border-top-style: none; border-right-style: none; border-bottom-style: none; border-left-style: none; background-color: #FAFAFA; font-size: 80%; } .memTemplItemRight { padding: 1px 8px 0px 8px; margin: 4px; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-color: #E0E0E0; border-right-color: #E0E0E0; border-bottom-color: #E0E0E0; border-left-color: #E0E0E0; border-top-style: none; border-right-style: none; border-bottom-style: none; border-left-style: none; background-color: #FAFAFA; font-size: 80%; } .memTemplParams { padding: 1px 0px 0px 8px; margin: 4px; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-color: #E0E0E0; border-right-color: #E0E0E0; border-bottom-color: #E0E0E0; border-left-color: #E0E0E0; border-top-style: solid; border-right-style: none; border-bottom-style: none; border-left-style: none; color: #606060; background-color: #FAFAFA; font-size: 80%; } .search { color: #003399; font-weight: bold; } FORM.search { margin-bottom: 0px; margin-top: 0px; } INPUT.search { font-size: 75%; color: #000080; font-weight: normal; background-color: #eeeeff; } TD.tiny { font-size: 75%; } a { color: #252E78; } a:visited { color: #3D2185; } .dirtab { padding: 4px; border-collapse: collapse; border: 1px solid #b0b0b0; } TH.dirtab { background: #eeeeff; font-weight: bold; } HR { height: 1px; border: none; border-top: 1px solid black; } omniEvents-2_6_2/doc/doxygen/inherits.html0000644000076400001440000001440510303671741021071 0ustar alexusers00000000000000 OmniEvents: Graphical Class Hierarchy

OmniEvents Graphical Class Hierarchy

Go to the textual class hierarchy


Generated on Fri Aug 26 20:56:17 2005 for OmniEvents by  doxygen 1.4.3-20050530
omniEvents-2_6_2/doc/doxygen/treeview.js0000644000076400001440000003055110227236243020545 0ustar alexusers00000000000000//**************************************************************** // You are free to copy the "Folder-Tree" script as long as you // keep this copyright notice: // Script found in: http://www.geocities.com/Paris/LeftBank/2178/ // Author: Marcelino Alves Martins (martins@hks.com) December '97. //**************************************************************** //Log of changes: // 17 Feb 98 - Fix initialization flashing problem with Netscape // // 27 Jan 98 - Root folder starts open; support for USETEXTLINKS; // make the ftien4 a js file // // DvH: Dec 2000 - Made some minor changes to support external // references // Definition of class Folder // ***************************************************************** function Folder(folderDescription, tagName, hreference) //constructor { //constant data this.desc = folderDescription this.tagName = tagName this.hreference = hreference this.id = -1 this.navObj = 0 this.iconImg = 0 this.nodeImg = 0 this.isLastNode = 0 //dynamic data this.isOpen = true this.iconSrc = "ftv2folderopen.png" this.children = new Array this.nChildren = 0 //methods this.initialize = initializeFolder this.setState = setStateFolder this.addChild = addChild this.createIndex = createEntryIndex this.hide = hideFolder this.display = display this.renderOb = drawFolder this.totalHeight = totalHeight this.subEntries = folderSubEntries this.outputLink = outputFolderLink } function setStateFolder(isOpen) { var subEntries var totalHeight var fIt = 0 var i=0 if (isOpen == this.isOpen) return if (browserVersion == 2) { totalHeight = 0 for (i=0; i < this.nChildren; i++) totalHeight = totalHeight + this.children[i].navObj.clip.height subEntries = this.subEntries() if (this.isOpen) totalHeight = 0 - totalHeight for (fIt = this.id + subEntries + 1; fIt < nEntries; fIt++) indexOfEntries[fIt].navObj.moveBy(0, totalHeight) } this.isOpen = isOpen propagateChangesInState(this) } function propagateChangesInState(folder) { var i=0 if (folder.isOpen) { if (folder.nodeImg) if (folder.isLastNode) folder.nodeImg.src = "ftv2mlastnode.png" else folder.nodeImg.src = "ftv2mnode.png" folder.iconImg.src = "ftv2folderopen.png" for (i=0; i 0) auxEv = "" else auxEv = "" if (level>0) if (lastNode) //the last 'brother' in the children array { this.renderOb(leftSide + auxEv + "") leftSide = leftSide + "" this.isLastNode = 1 } else { this.renderOb(leftSide + auxEv + "") leftSide = leftSide + "" this.isLastNode = 0 } else this.renderOb("") if (nc > 0) { level = level + 1 for (i=0 ; i < this.nChildren; i++) { if (i == this.nChildren-1) this.children[i].initialize(level, 1, leftSide) else this.children[i].initialize(level, 0, leftSide) } } } function drawFolder(leftSide) { if (browserVersion == 2) { if (!doc.yPos) doc.yPos=8 doc.write("") } if (browserVersion == 3) { doc.write("
") } doc.write("\n") doc.write("\n\n") doc.write("\n
") doc.write(leftSide) this.outputLink() doc.write("") doc.write("") if (USETEXTLINKS) { this.outputLink() doc.write(this.desc + "") } else doc.write(this.desc) if (this.tagName!="") { doc.write(" [external]") } doc.write("
\n") if (browserVersion == 2) { doc.write("") } if (browserVersion == 3) { doc.write("
") } if (browserVersion == 1) { this.navObj = doc.all["folder"+this.id] this.iconImg = doc.all["folderIcon"+this.id] this.nodeImg = doc.all["nodeIcon"+this.id] } else if (browserVersion == 2) { this.navObj = doc.layers["folder"+this.id] this.iconImg = this.navObj.document.images["folderIcon"+this.id] this.nodeImg = this.navObj.document.images["nodeIcon"+this.id] doc.yPos=doc.yPos+this.navObj.clip.height } else if (browserVersion == 3) { this.navObj = doc.getElementById("folder"+this.id) this.iconImg = doc.images.namedItem("folderIcon"+this.id) this.nodeImg = doc.images.namedItem("nodeIcon"+this.id) } } function outputFolderLink() { if (this.hreference) { doc.write(" 0) doc.write("onClick='javascript:clickOnFolder("+this.id+")'") doc.write(">") } else doc.write("") } function addChild(childNode) { this.children[this.nChildren] = childNode this.nChildren++ return childNode } function folderSubEntries() { var i = 0 var se = this.nChildren for (i=0; i < this.nChildren; i++){ if (this.children[i].children) //is a folder se = se + this.children[i].subEntries() } return se } // Definition of class Item (a document or link inside a Folder) // ************************************************************* function Item(itemDescription, tagName, itemLink) // Constructor { // constant data this.desc = itemDescription this.tagName = tagName this.link = itemLink this.id = -1 //initialized in initalize() this.navObj = 0 //initialized in render() this.iconImg = 0 //initialized in render() this.iconSrc = "ftv2doc.png" // methods this.initialize = initializeItem this.createIndex = createEntryIndex this.hide = hideItem this.display = display this.renderOb = drawItem this.totalHeight = totalHeight } function hideItem() { if (browserVersion == 1 || browserVersion == 3) { if (this.navObj.style.display == "none") return this.navObj.style.display = "none" } else { if (this.navObj.visibility == "hidden") return this.navObj.visibility = "hidden" } } function initializeItem(level, lastNode, leftSide) { this.createIndex() if (level>0) if (lastNode) //the last 'brother' in the children array { this.renderOb(leftSide + "") leftSide = leftSide + "" } else { this.renderOb(leftSide + "") leftSide = leftSide + "" } else this.renderOb("") } function drawItem(leftSide) { if (browserVersion == 2) doc.write("") if (browserVersion == 3) doc.write("
") doc.write("\n\n") doc.write("\n
") doc.write(leftSide) if (this.link!="") { doc.write("") } doc.write("") if (this.link!="") { doc.write("") } doc.write("") if (USETEXTLINKS && this.link!="") doc.write("" + this.desc + "") else doc.write(this.desc) if (this.tagName!="") { doc.write(" [external]"); } doc.write("\n
\n") if (browserVersion == 2) doc.write("") if (browserVersion == 3) doc.write("
") if (browserVersion == 1) { this.navObj = doc.all["item"+this.id] this.iconImg = doc.all["itemIcon"+this.id] } else if (browserVersion == 2) { this.navObj = doc.layers["item"+this.id] this.iconImg = this.navObj.document.images["itemIcon"+this.id] doc.yPos=doc.yPos+this.navObj.clip.height } else if (browserVersion == 3) { this.navObj = doc.getElementById("item"+this.id) this.iconImg = doc.images.namedItem("itemIcon"+this.id) } } // Methods common to both objects (pseudo-inheritance) // ******************************************************** function display() { if (browserVersion == 1 || browserVersion == 3) this.navObj.style.display = "block" else this.navObj.visibility = "show" } function createEntryIndex() { this.id = nEntries indexOfEntries[nEntries] = this nEntries++ } // total height of subEntries open function totalHeight() //used with browserVersion == 2 { var h = this.navObj.clip.height var i = 0 if (this.isOpen) //is a folder and _is_ open for (i=0 ; i < this.nChildren; i++) h = h + this.children[i].totalHeight() return h } // Events // ********************************************************* function clickOnFolder(folderId) { var clicked = indexOfEntries[folderId] if (!clicked.isOpen) clickOnNode(folderId) return if (clicked.isSelected) return } function clickOnNode(folderId) { var clickedFolder = 0 var state = 0 clickedFolder = indexOfEntries[folderId] state = clickedFolder.isOpen clickedFolder.setState(!state) //open<->close } function initializeDocument() { doc = document; if (doc.all) browserVersion = 1 //IE4 else if (doc.layers) browserVersion = 2 //NS4 else if(navigator.userAgent.toLowerCase().indexOf('gecko') != -1) browserVersion = 3 //mozilla else browserVersion = 0 //other foldersTree.initialize(0, 1, "") foldersTree.display() if (browserVersion > 0) { if(browserVersion != 3) doc.write(" ") // close the whole tree clickOnNode(0) // open the root folder clickOnNode(0) } } // Auxiliary Functions for Folder-Treee backward compatibility // ********************************************************* function gFld(description, tagName, hreference) { folder = new Folder(description, tagName, hreference) return folder } function gLnk(description, tagName, linkData) { fullLink = "" if (linkData!="") { fullLink = "'"+linkData+"' target=\"basefrm\"" } linkItem = new Item(description, tagName, fullLink) return linkItem } function insFld(parentFolder, childFolder) { return parentFolder.addChild(childFolder) } function insDoc(parentFolder, document) { parentFolder.addChild(document) } // Global variables // **************** USETEXTLINKS = 1 indexOfEntries = new Array nEntries = 0 doc = document browserVersion = 0 selectedFolder=0 omniEvents-2_6_2/doc/doxygen/a00372.png0000644000076400001440000000052010227236243017670 0ustar alexusers00000000000000‰PNG  IHDR„’› PLTEÿÿþ¿¿¿???ŸŸŸ___ßßßÿÿÿŽ_ª‚tRNS7áèðàIDATxœí”= 1…÷ž`µQÜwK!øS«¸¶‚EZQÑrÕ˜y·u’­,ÔÁU´ðÁ@2É|yLB"TVôƒˆ½P‡ûˆ›¥ú#Ä7ÛfÏO«ÞySÑÅh!ßR]Œb$)ÝÕ˜qªÛ¹rœâeB‰²µN@,ÒDæ>eDÖ¸1²Í°ŸG k NAì‚xÈe.×Ás"~Öb´ƒ P…ƒ+ÖÀHþFB/@ÇLA_J÷¢!E¸ú:C>ðeŨ¥KòµØ…D_FPùß|ÖÅ>¾—ôÄy»x †b©IEND®B`‚omniEvents-2_6_2/doc/doxygen/a00374.png0000644000076400001440000000070210227236243017674 0ustar alexusers00000000000000‰PNG  IHDR¹ŸŸ’PLTEÿÿþ???¿¿¿ŸŸŸ___ßßßÿÿÿçÁP tRNS7áèðRIDATxœí•½NÃ@ Çû ¨|ˆȱ­ÈÈ@¡kJ3C…n)T#Üm¯;¿-öÝ!… Ô(MTg9ÿíüÎv,eÚÇè¿ÐïÁþ¦÷Po“±§÷E—;Òå*{h*?· úÖyêu¡ÇWr•44ñë» r¿ ý fj\ð’yŠè•—Gõ’‘Ï…“&(bæ»ô´|{†®ãÛè!'Rì|1…×"Òô’Õ‹ùúÐø~ÉLf\³""ù­ÀÀ…‰o£Ó$„Âú¼S8w‰~Žño\›©$< +b}hU;Ð#ˆF·'úãjÿ™Ú׵ˣcaeÂä·˜{É6è³;¼Tߥö)sV¹RXÙÔÞ‚Ž;s™lÐãæëí'cKÏýÊ}VAsoA×ûÞ SPóòkád.í OÝbDVÆ@ÆÚÐwµ=½}Ð?_ß60ý Oó7Þ×ÓŸkIEND®B`‚omniEvents-2_6_2/doc/doxygen/a00376.png0000644000076400001440000000074610227236243017706 0ustar alexusers00000000000000‰PNG  IHDRÔ»†APLTEÿÿþ???¿¿¿ŸŸŸ___ßßßÿÿÿçÁP tRNS7áèðvIDATxœí•ÍNÂ@ÇyƒJ|€z$±Ä=ˆô èY‰Ù#&•ôH´Ø=J?væmý@ [cŃ iØùÏ2¿™ÝihàÁ¬ñPqÍÆ÷£6B5Øõ—(Q'JL¢Çµr* ;²•ÏÝ]ÉacY‚ nÅ$ÜWÙg*ÀeÿǨÄœ3è ð%rAj™»ôó1“~Ì­yH"åiSÿ®’ï.i3½_yà,* Ft†>°+ÏÁ×ÄW¨”å^wvªý~ÊtÉAÎ_Ê‹„׫¸ò 5õÊQêªðMVOw%È¡¥ý¡mN>q##-W„TnÅ®P~äo”Öl«éPþsäš®ÄÙ972r¾Þ¯¾ôSzW)ÛBuî©¡};ñ5ª“Ù‚YwU@UêŠ&ð&ÜB#ìÎNtަA-û™=åFF.婢ªtWê½* ä½_`·¤Ÿs+²åÆs;|#S bEToXak1Ø‘ïˆú¾}:àþ¯ÚQ¥ð [GƒIEND®B`‚omniEvents-2_6_2/doc/doxygen/a00378.png0000644000076400001440000000053110240451506017674 0ustar alexusers00000000000000‰PNG  IHDRl'×°QPLTEþÿÿŸŸŸ___¿¿¿???ßßßÿÿÿ×VµtRNS@æØféIDATH‰íÔ±‚0P?¢1°2˜ð0*1ñè¬ÄøF¢†2Z%½û[Û( FõéÐôå®×¤3³‰}ŸïOÖ/Lì ;ò´û|ÖÆdÄÚÉnmLøzö.òNQæ‚û@Nxݬe…eFŠ @ÁCˆ©­H³.ØüÁ%†…Nè Ç"H­w3k‰1äj¸hêQ⨕©"ë}…™fõ.}1Éùr+Ó-94ÙjTEÊ&[…¬ƒÉ•z}7]$%x óôž•™çÖTLuƒeÃÌž}#°D}áhÙ~– û^Ä?³[AÆ_B¢y‡IEND®B`‚omniEvents-2_6_2/doc/doxygen/a00380.png0000644000076400001440000000073610240451506017674 0ustar alexusers00000000000000‰PNG  IHDRª'mvηPLTEþÿÿŸŸŸ¿¿¿___???ßßßÿÿÿçuÀtRNS@æØfnIDATH‰í–1oÂ0…ù¥+•JY«"‘±a-É\µÀă;#žÛ³¢X]’¡RÎÀïÝ'ëù"¥MT§¥¶Ôæ¨ZÔXiA­óœ-õSÕ|Ï®"œRÕ&Ä–UíWSW£åô*€Çñ­»Ðxü6w•¨Cû\‹ß»ùÍ!¸«DôÕ&|žî%˜vŸˆâ$° ÉÏî5œàžYЗá Û!Ø‚i©¤â_­™ÈT9UFrq­È6Kk¯.ܧ𠅮µgkbZÜÔÔ,Í4³·åó“§™\Ø#j¯H€* è‘³³=‹L‹;ª ò"²ÔìëóBígßCajíòçm•©/Ï(*–S¡WÜ–öÑ*þû¬f²î¨qÌôã[“<ÿœ+N–ö ]k·¹º¨æ-(å:>F`nØPç—bÏ»‡…ÜngÀE­©ZjKmšÚÈWFíÕR›¡þæj|šìØ”GIEND®B`‚omniEvents-2_6_2/doc/doxygen/a00382.png0000644000076400001440000000077010240451507017675 0ustar alexusers00000000000000‰PNG  IHDRÂ'¯FŠ3PLTEþÿÿŸŸŸ¿¿¿___???ßßßÿÿÿçuÀtRNS@æØfˆIDATH‰í–QOƒ0Ç÷-€e~yw[4~ Àí£ÀlïÛzG×­3Œ¸D§´<ôzÿë¯ô®„tÝ=¡'œwÕ„!ˆ®ößþ)á¿ì}R(Îã¦(œ¿k\NE»aØHlº×€£³LØC±W[w¡òéi 80qp û>aãA„n2L ™;xJ°€0ª¸£Üæ÷n橈:êÜìСå÷)DE&Úo&(„ÎØêšàÂnØLù׸ä (h«RÄ¥ ‡–ß²… ¡6×8ßBê9äu¦S-Ñé­'»Ã"’99ŒüŠB`̶S²øÕ…œgš0yô¶„2˜<åä¨åRèC@³%Ó_ÅÒG'Ó¯v™NQƒŽÓÞ¡®V›ÀƒÌÃã^hBºÍUkúž“CË)aMóM„úÆæaS J¡õ?RSKuÃÙ39´œjÉ"­¥ŸjÒZí\ `]ø?øõî í„îÿÈ:m=áw>ÿ}†/jÈ®wIEND®B`‚omniEvents-2_6_2/doc/doxygen/a00384.png0000644000076400001440000000120010240451507017664 0ustar alexusers00000000000000‰PNG  IHDRê'óÌÉPLTEþÿÿŸŸŸ¿¿¿___???ßßßÿÿÿçuÀtRNS@æØfIDATX…í–=oÛ0†ó'WcØ€Ö.¢1@GcëÁòh§ÎX´*ÉÑnT‰chÅäýÛ¾Gù#‘å¥E iò{w|HÞQÐ ½D;i©-µ¥þ)ÕGlzK=æ>[jKýgT;û¥vFI¨ò )lOG`$÷ܬ¶WYÃ5j:ø>Ú(â©÷Ö¶§§¯?›¨«Á·4ªë5ê¥ÿíZþÜ;?¨s`Ó¦uï=ê¨oÉ›"tÝ9Nþ«Àæt3§EÀ,\ ’¶w"ô¼íΡþA…«…ds’Ó~íǯí)„4[>;- ü€l¨¨=@54ýðÿK9?öåJK¹ªr]ê'Æz@þÂGÁ±“iÎKMØîú™±:t—fzj:4/ôsc`kÃÆó­°Bè2Ü"|Ðü •L[+p'Vlë€.€ŒåuèNŒ‘ÀãU®@`¨hªølÀ°Þ(° Cþ¤{ô‡‰—@R¬k Ôi  #-åñ£‹ ¬t E’#̰Ñ7w{‚:ˆìuXè ™+R’Eý•8Ó´«r)c¸{µ9xðI7€ÃùR¾!ƒW›ä3@2s°“€x@ÿ†tHÍŒ¸”œ«\`ªÅi+8çÛ˜ƒ©D»®'¤Ý@ÛcÌÁ’E© P(Þ—Ó¬a„+“=>‹ö§ˆôÔ#fß_ñOÑzÏ‚B%à'Å®T¯îc×®ÐøWƒ¥üÀ7 õoò#^ûIEND®B`‚omniEvents-2_6_2/doc/doxygen/a00388.png0000644000076400001440000000261110240451507017677 0ustar alexusers00000000000000‰PNG  IHDR¤W¹,!PLTEþÿÿoŸŸŸ¿¿¿___???ßßßÿÿÿ)õtRNS@æØfIDATxœí›Ío›JÀû/äÚûK_8>é9Н•Ü„c¥¤ ÇÔUcŽé‡’+Å^8ÚØY¸Åæ¯|3»/ŽŸ’`ÌGÄ8,3 ûóì쿃7'ïÊî@þÒ ÕA¤:HƒTÙ5’[°€äíØÿšDÐ ei[i2É›E¸7«C¡¹îpc‡\×±Âä[pÝ[ݪ.Ôÿ¡@¤ð;S:¥EŒ)M˜/t|zË6gCnïÍ5·Zr”ƒô·’ÈNÙ$M±ƒAŒÛ<Ž_‹Êº‹2æ:ÌL«5:Á¨§É>_ƒe®µ†Ðë¶&zdÓ^¯‹ pº„rŠfœÜÛ1n hMŽÑ.Æh#õ—E#Ñ…¸HNdÿÀÆ¡ Î(îë àÐó¡>×¿Š­´™:0ƒ“ZžÏõ°œ§ Ù8¿þöB×H¤OßuÑ![F‰¡‚,aj¢n}SØBÈ=ôñéû1º°ŒƒÐãy¥¤‡5$ÿ‡J&‘tßT‘lT$à³KÄ\¶2Jºx²%ô%DI$q‰1çǵDržÌ¥k²dL2lqöÐ\r’¹„ ¤/a.‰[mz.á (}ÐÂIg¼…CyË[ì@œñ 5ã-Êx¨ú‹¯…#m!ŸW»Ö3z¨RØ]íoBRõP¤mµ<£‡z ½R¤LÒ m+ R”Ký àñ½êþqåýÓ˃”‹+dX,i¶ÿ²^ýÕæˆSˆàìmí1»ä†$‡YñCí©ä…$cSfpÉ )&*=B$¹ ¼J"…·j¹Ì¢d¥m:{kJz(]¤þùýÕJ1ÅS-×,¸R•ÒCåNÅßJxÚ’§v¬´zû¡›Ÿ(H¸òè„£Þ?n›Šk¢Ï õCª¾Í'{]QàT>´æQG‡•‡jˆ‚„cQ8ô‡¾GÅ5ä›þ]pÞׯ3ªÃ´[ÐÆDNŠè§tSe$/ôd‘L¤/Ú‘í߉àDmyŠëŽ)"]«(’x M–ÏX®k ¤Ùo’e”H±,MW‰ÒÃ:ÒῨ m‰-a·D"EÅ‘(‰§³£.çT/£§¯Ï¥Vq$ºÕ®Í%#0AÖË8ܦ3Üê¨H!=Vî¾´D¥,ø6KóØú/.ÞÒ2NX2å·PŒ£Tz¬r¬=<.aJλª•È•'ÒZ’D¸—G¥ðÙbW)W—dçIC JA/‚îú©AÊû’»öß åqÉ]û/)[¥ó1½ÍâQîO\ÝW±vÓz­P¤l•ˆ±_´e³ÃKv s8³§±ÎVýK))[¥»m-wÄ«;|šÀ—Ž”­Rx‚HfØÿ¹N•}‚Ä3‚ÉAÙHÙ*…‘žÎÌé! ?Ê!žñÝVéÕ•Bz{ºóv‚4é´åÛH]°ÊFÊV)D’}2‹ÞìÎñ¹DâåÏ¥l•B ŽÝù+IÑ/•‰R¶J!&ñ}@3B ¿‰$Þo ¤ Ì¥l•Bq«%3eòVësLŽÊFÚBíÅþë‚Ô×_ì¿&H³¿ÑØì¿&H¯ñß åqÉ]ûoò¸ä®ý…´}¥ðÅuÄæÝu©ò‘þÑD4aª°ÂIEND®B`‚omniEvents-2_6_2/doc/doxygen/a00390.png0000644000076400001440000000107110240451510017661 0ustar alexusers00000000000000‰PNG  IHDRÜ'–!;hPLTEþÿÿŸŸŸ¿¿¿___???ßßßÿÿÿçuÀtRNS@æØfÉIDATX…í–OOƒ0ÀýS޶èU£‘£‰¶ã6£ãÈ.“°•MÊ‘ŽÙ¾oëk›9X1Kx%$ïѾ_ߟ’ž@£rÒâZ\‹38Éš‘-®™Èd‹kq¿Â-Øl÷M$x<‚]ø•_D²?©ˆ/ä‘î¦[’œ ›¼ò-iQ};— Ô³Yô¿§–K|8ncÃÚñ»áYáÄÂd¢|š1Kv˜Œ»+[R´ö—"œœ³KeÕžô"toVv?àNêi\æe C`ƒRœz'¾ua]Àr\zð@†rp‡Ñ…ÜáÀ!›-NðDY N-R8ˆ³ç¹u?§÷2„'âÖà@ \§[%’tŠJO…¸mV×o¸µI N ƒ“”{ó‘NfîÑxS“Ì÷˜&‚±•ÁÝ¾ÚÆ¹ˆ+q>cNª«&>\UJ4ûÕ­²‡ãÓ$@ ÎæNmtBE‚Î]Ó*>ÃUetú äq„XÙX;×à¢]íJpeºv kêÛ—zâVÖNóbí–𪵔ãÏ(×™e¸³Q ïv™z: ˜ÅQ]gþ¹!î/Ö¾qÍÊþ·G]‹ûg\³×Ú¥Å/î Ùh±‚ºÙ$\IEND®B`‚omniEvents-2_6_2/doc/doxygen/a00392.png0000644000076400001440000000106310240451510017664 0ustar alexusers00000000000000‰PNG  IHDRÒ'ˆè ÛPLTEþÿÿŸŸŸ¿¿¿___???ßßßÿÿÿçuÀtRNS@æØfÃIDATX…í–ÍRÂ0Çy ±G >€Ž½óÕ£ƒ#p„ ø’ôØBMz´›}[w“‹ãHgºÃÝnòËîþS¨AYV«Hé2HòÜoIñ¹ë©H©´³ìYk)ƒ“[pº!ÎaT“ÒgÖñ³‡Žf,çÂ&ïììcùÀð$åÑ'3½¿õ»3qÄ=AÚ¸°óFxB8r°{¸õ¸¯¤£ŒÈÕ>Fû«4ÝÈ;Šr³+¥õZ¶‰\L£˜’žŠZþ1’¦/Üi9-X­cKj@ÚìI{XS˜ŒH@Íõ ’˜¢–„iª÷æà2t1b]6¹bóp³ZE,µ?E§I¥ iÛÆõBGѾQ–:Õ~ò*h!„¶{îXê÷ÝË‘0KÕãTÊÈ’^\ÊãŠÉtªs)Ç–„i‚´ \ì†{D¤dêáCfIn2>R‘0MCê[’k»WP“QyžÄP¿‘‹sšXÒ2›SžD—!rUoáX¦‘ò ædnîþœVÐ1"¢=?—9ííÏÉ£´þÊpæ¤=)ß‹´÷÷v‹‡.‡Ôeí’Hj÷"½€_Šô;Ryÿ,K±Šô?H_ë†:Á”îjIEND®B`‚omniEvents-2_6_2/doc/doxygen/a00394.png0000644000076400001440000000124010240451510017663 0ustar alexusers00000000000000‰PNG  IHDR'i+PLTEþÿÿŸŸŸ¿¿¿___???ßßßÿÿÿçuÀtRNS@æØf0IDATX…í—ÍrÚ0€ó¡>ö@ @§º“€g ¡‡{ƒ¬£mŒåc©µoÛ] ù'“’q^<šÙÕzýiìá :—«®z„¡Gh"(Ù”Ýe@õ=§EØÉÇË^‘â¨o†ðË©[“ºZl¢Õ³ŠP<ð[qÙtç– '[y‘?pn­ϳߋºg BîÒeíVŸYS­øMµa›^5k ‰ÁqåÃ/!„K Ï\ƒ/ré¨aKo3%Ð:ßáò«“Õ×ÉmÐm§˜¡ÙréæñH$@?`¢=Õ„EnAäµ ÐšúÎÈÁþ˜„!ÜÀ”ß+÷f!ÌVd?îAd)Y ºå³goCÝÈvÇ××|+Æ0F[Já5Â/80ÜÂõUðuØD·c¤Ä•:<"”9.•ÐíˆÉÙ(‘=™‡¦ LH )cƒðý§&÷¡H,ôAêK¹2è–ÐDŸœÈ.„ Ðçä5t;Ö²‹'àe«–,P,tSPœëÎL!*YxiGBÐYhEÐCi#p¢˜a/¬ Btéf7fùlçt£ñ«ôB9”B#P/´"èWSµöp«[›ö7²&¢Ú .¹Í÷`K!å¡:å«ÉÕ4íï.ßð4oÈG#Üñi×¹ýÑéá?¤GèÝÿ•éXz„¡”*8mó£dYSIEND®B`‚omniEvents-2_6_2/doc/doxygen/a00396.png0000644000076400001440000000126210240451510017671 0ustar alexusers00000000000000‰PNG  IHDRü'Ù|8¸PLTEþÿÿŸŸŸ¿¿¿___???ßßßÿÿÿçuÀtRNS@æØfBIDATX…í—ÁnÚ@†ó •zˆ•j„­„Z‘ØÇÄJǵÄ÷ï $»>Æ,ìÎÛvfMb›¸Im]©8Àì?óíîÌ`q­ÚI‡ïð¾%¼‘­Ø¾•“›ßáÿ ¼¾¾çå" çµ:áMŸ%.óŒAeп„¿Ü\–‹ ’¤ª¾„&sL’T6 ;^Ç÷a·Æ=¼?²ïÒDtôõ) þµâc>ÂÙ[ðÀ@¯¦¤gÜ/y{G RXMÝÝçi„>J†Ì]®È‹—Ï ™’…M£|Y|°à\ì¼^Öc_2“là7áqoF§yšg&üZàóY«É­³Ùf Œç‚‡¯qrÅœ¾Óôx’’3 3eäS‹å»ÅR¨pÈ0cÌ\gc Ù¼ñôŸi›ÒpÛz¾Ø{†ç1ñU0`v¶ÞP& Ga„·—oøöÂ×"ŸE»O1Å_§”§gü__~OÅ"FÊ™Åo¿ÏdU<·2-å]GùhÉQ°ÎÔ{‡b ×÷W…¬O­wŒï}ÄEÍ <¸M§ç…,ƒä€·rzøç¾==×ãVÖˆ§Á«áq¤Lj²tŠË÷ËÚWð Î'ÊFXÝâò}—†ñP{Lµ·ãÕ…8m§óaN Iæ÷9æq@›¢u)f¢‘„;Œ_Â’at°|ÈãhÓ>U,‚îÊbBœã†è‘ÜäuRcmuð¦üÝÁöª°2 ¶ÔÌ[„éW)`ºÂ¥S†Ü4wJKYZÌjÃ.:”Mæø¦ÞF¨[ «“‹Ž07f.†sŽ%£lR‹)l6FG˜O‡0æXýÌfkúºŒZÈWÑMÊèã™ÔŸkÂÜ*fœßÝ5aüõ Û÷-B˜Æú×IEND®B`‚omniEvents-2_6_2/doc/doxygen/a00400.png0000644000076400001440000000105210240451511017651 0ustar alexusers00000000000000‰PNG  IHDR¿'¬ñ„PLTEþÿÿŸŸŸ¿¿¿___???ßßßÿÿÿçuÀtRNS@æØfºIDATH‰í–MkÂ@†û+Js,4Ò\ Js,H5ÇhãQJÁÜ«›=æËÙÜjŒfçßv6©&J Tš‰ìÆÌ¾yvçÁ+l7¾®:@¸€íD²´´ýðÿùlÉ«¤‡ÔgZ“Lˆˆ×–á#By'kï8ÌGŸoUr…ÀXý½û°U[F±á‚ŸŸ*àpãPÝäÉaJòÈ=`#öóÀ¹†Ô}:;)¶Z8ö1p´MüàØô @FÕ m=6=¤Á±A¥2aeñ W‚F}•¹Ÿúi"­ÇNR7͵h HCGƒ.À…;d/¸4ƒtâ! ’ƒNŸÙôšÍ¸œ$ê’\òÂd¶†ä©[l\¥Lˆ%ìaˆ29Pe¦Öômô¸œ.Q  Šúä¡'Ĥ¬?ÞwfäBÄ4^©D4` @Îx@0%8iò1 wGÉœ—Ô÷n'Èh6U‰Ì¢D8¬N@‚F€jÓc\Ú˜ZY"sçí„Mi ,^̓E³ê‡vä•ÑaÇQÑ:³ª‹P5 Í».Ú†€«Ÿ.ºçJÐøýèà¢mÿñj1:À|Y…n$™íD¯IEND®B`‚omniEvents-2_6_2/doc/doxygen/a00402.png0000644000076400001440000000205510240451511017657 0ustar alexusers00000000000000‰PNG  IHDR‡'[™PLTEþÿÿŸŸŸ¿¿¿___???ßßßÿÿÿçuÀtRNS@æØf½IDATX…í˜_Sâ0ÀýÒ€ÒÇ{бΨÐGÅ?ðˆwêñ|#M¡`š·³ ¤ûmowÓŽQgD†­Iv³›ü’ìÚa ¾¾üÙúì|€l VE6«"ˆU aQ„úÜ|—l VE6«"ëÑïg6£²8,òB}c™Â`$s2vJV£DÞz˜.ß®8…s ƒõ3³þ)huj‰ò°ysœ”Â8Y”£NŠNüþ91SÄ´1g7ê©Xfb9„ üyM ‚°´Þ:L"$yBûôWZ[¡Ôņxn)‘<ÌA­G*/@”F.œIxâÎ^˜xvDmX°íàuÂUwA„:v²ÚÚ­ÚØËBz0JÔÒ±_ƒŠö$.@&í–AÏÌå•ˬ6|é:Qˆ}o؃•´Ï)<ÔÆ®×)8Æ’ •y raœšr™¸»»‘£ÀiBdÔNÝ©Ã(U¢»pœeþ!F&l˜;xôNƒ®Þ¹N;O=RðªÝšAϤ}r÷þÁÁw!(ÄÒH•9‡©ª¿B´`,\„è÷4/"†À™uãÁAí ë(ttË!€ÜNì( o°³k`˜rŒ Bõ¾¹t¡5qIaçC;šV†Ü Ó¾×JpäQÒPÏ–…F¶¸I»KÇ!*ó@äÂu窓O)æÊÓ¸Bwªg·¶:ù óH™"—š#¶×C¸ã1&.êB¼I´³Ì"àYE.{/›ÿS>âÁ[fyâ48~û¼ÿä Ò…ŸW,:—(«½YÖñ+ökÊbUd½ >û°÷ˆZ«Ÿ1¿¸l VEÖâ/PÿGçIEND®B`‚omniEvents-2_6_2/doc/doxygen/a00404.png0000644000076400001440000000114210240451511017655 0ustar alexusers00000000000000‰PNG  IHDR¿'¬ñ„!PLTEþÿÿGGGŸŸŸ¿¿¿___???ßßßÿÿÿˆÉtRNS@æØfïIDATH‰í–MOÛ@†ù3ê#¡ñµU$|D‚ßJ| >Vj|D"]ïѳ»§ gÃÎüJvìÆ_r©*ÅU=›ÃäY?Þ™YÉ{دýÜà€ìÇT èéõÀÿ0‹G^c´sætm“²Ì3ª¦Ç ÞÈl–Ó»ë*ø„‚±zvì.ÜúN-\_cÃZ€óüW™hf‹Êi¼xþ®y€6 @œ˜ûù‘ta”ØÙ}ÏŽx™àýÜÙ¤çÕhÙVÔ阩llRïá‹oÜÚhéœcÌ;ö/˜$K2þiÈÂ,ÒÓ¥³Z+àŽÐµKà­Oâ[0E¢ÀÇOáSï#[v5ÁƒîäE 8ð¼ÉžxvgQþâàÛH'1À˜T¢ 6.3òO6Þì•ÕTÚ³c)ð¾ùö«äYXˆÀ‰µ‰à¹‘2Õ‡ª@MnNŽmÐð€£mO‰ù H¤èdŸ¦(²Ïdë+¿@cÚ0Æ!@=ýá%ò¶=0ŠÄ¢^°‰ÀÍÌöà+¦^7€.Z«¾/Wù#Í)Z•S„ O M´m̵ôñâ7cú·öÁNZiÚ©ü³>³Ú½\z¥k‚´ü^úë¤ÒOþlà-úþðêÑÀ¼¥p_ÞŽ²IEND®B`‚omniEvents-2_6_2/doc/doxygen/a00406.png0000644000076400001440000002176510240451512017675 0ustar alexusers00000000000000‰PNG  IHDR2ו r!PLTEþÿÿoŸŸŸ¿¿¿___???ßßßÿÿÿ)õtRNS@æØf IDATxœíKWãH–Çû+x9ì{H¼ìs –]ÝPh™ç™x äTÁ2«H–5]`i7‰1²w~t?åÜzZ²%ë⟠ءPè:~Їåð_-9õ·¦ÐJ‘&#«4Y¥ÉÈ*MFVi2²J“‘UÍ’•©q®C»¥»dÑKi–L¾Ê,µ0·ÌC—-MFVi2²J“‘UšŒ¬z“d:sk2k#xÝIÎç³?s?Œ¾ò¦ 5£…uò‘q¾?[AšIÓønRîÑèÉJK0y9Æêã™Þñó™Ñ§’q¾ô?ZAZ×í÷COáÅ{âœõw XM¦““Ìýç¿~ Ò¦`÷ûáLþ6»Ô‹ìJ îßý9X}¼)?^b¾kM„Ì¢Gÿ¹V$ÿÔË·‚L'/™ö?Ídœql‹Ÿ`&”“¦ä|±W, ™æWæîãÎ#<^v±7³®Á´£®»û./v‡†k¹æs¬Ýá‘y¼ìÍ.Ïáô ëå“_X'7™ €C,ì£:”I(^»Ž §?(–—áÏ—˜f3î¡qú4»šÞ`p”`b•bl&î‰åôa1êQ)”„[ø+¢qh°²mž£ÆÂÙ÷º¼0½ƒz‘€ ÕÑØìîw÷ái>ædvaNúgnï_ããìj3^—?(‡é<÷¿¹Ýãéí}×\Üy…uò“Á\çÇìÇlL‡bdð`w‹Ï÷]Œl÷`ðŸ wî×ÅíC÷ýuÛ,Áä±™¸'{!Ÿú×T %öŠèE°ÑÑdåP>*… Ç:Î6æ°Loç ^¤!&?­Ø `àZ7ødš ¾zž™Õ¥åØDÆÆSÌ{cn˜;–(¬“O^®3vØù@õƒ3Ã~=p­Ùk*î/{4z¶\l¹ó«ûsläç,‘Á:Ç=Ù Á D¸ŒŒxE{®AMÿS)¼Útœ øe;õ"Þ›…ÈXx^½;£Ñ“9úÕðòÝ}³ù8cÎÿ851§ùG×+lƒ6Ãz³X>`$£¯¼ùïì„gé´ÝOÇK úÇØè–sDA‰p}2üExd(•"ÈðãPfoç ^$ ÃFö™ÙM7ö9cvå廀×fðÆ6s@½Â&Íâdö~ÂŽÅÉ`¿JâdX›¹†ùYO1)6€å|òN{–dŠ6Ã^€G†ò…Û ç~–µÍ°Ys˜L§®C»èkNfÀÇÌ·c ¦6g®]cçOì±MìôýÂ&›Ìš#dpÆî^ÀâóC—Wá3D†FˆÓ àX‚qJ±™ûÏ8þÄÆ$ÚÂ_{t$>ÎP>*E¡ãlSÓÛ9¨ ȰwšÑqæ >›­`¬¯17cï4wÎ~s³épûŠÍÍ^ÄX0žäïÍèflœé-®€¦OTu߃¹›Ûž>Mï°äh:Ü·ÄDŒ½ƒcmᯈ¥Ñ‘øÜŒå…Ó?|ˆ9^¦·sP/2)I Æ™Íô¡À¾™ôÆÈˆÀV¶ÜÈ8›ï›Mo o5“lp 9îæÝ!ír\šÞoe" ¯5¯ ÜÂ|$ëŽ&³6‚’ óËš^M“YA……MVôišÌÚ*-,½Ùh2+Uúò¹%¥6½°qe}ƒ#›Þ>™•£ÄjE›M+ÈÀDA4í “¦ȯ–ɼ@Pµ… (ןµ†ŒrCMkÈ(‡¦=dT›´ˆŒb³€6‘QkÐ*2J 5­"£šv‘QiÐ22 ÍÚFFY@ëÈ(3Ô´ŽŒ2¤µŒ*cMɨñg+É`&?›É4°Ž(=˜”ѦöÓWÜÕI¦¾Ce9bâ¢ôÚcÔd’”°ðY“‘äˆKã&#Í'ÑNM“‘éˆ!6õ¿ m5™õ×cÄ7oqÜis›Éî(Kî”: »£EÍ–Ø3¾wáÝZ¹®g]ž…·†-¦¼‡‘Éî(Kî”Úï =]"“ñ µ”Éo3e¹ž}‹n7¡<%"“ÝQ,–žb!æZC½8™I¶ï¡‹ñEŒ3e¹žÁ¹ mÿ1ID&»£w9ÃtÌø24¸y¦/F]²­À?Üîˆ >%[±8=c .¼#N29¹®gd2Å .{¸cz3/: {³ìŽbÌåŒÒ)£- ¯¨ñôϘ OÿŒ2º–ów \?æãéíƒM=¯Jw’É»!4E(×õl÷ù=#óŒ¡â’ñ£“•L&G±‘áZ7”NCdlØ£—‹X©£Ñ(—åØ/†Ã,Ã<«ÊIN˳²]ÏàŸßx¨‡äÅdRy": Éäq[¼S:'ãõfd†/·X©6-Êuôz6Ï2Œ1K›Ix§Y–ëÙp'§1³Ó2‘Œ„dò8ŠÍnz”ÎÉœÀ¿iGj<}òÃ?¬Tg(×x›aùG\K&úÞ²\×3>ì˜á6ãE'!™ÌŽbä <4(“¹ÿ|oÃ`a3Ë0ãÇ™k>ÎWæLm>ÎPA¡#®&{Ó_®ëÙÇ_ŽzôôCÅ6Έè$$“ÕQŒÒÉH Ó)ãwwü;ç47ë‘þ ÍÍžÈù NÏm^Pøˆ«®įƔëz6½üž†çf": ÉѼì#.]&«ÄõŒ(8)Þ™²¸¼b³×3M&÷—»¹j\ÏzâGh> î| É$)á’›¯5שÕ×ÿ“VŸk25q¥5`6M¦¦#®ò¢MÜ ÉÔtÄ—š“¿IÓR2u¯² ýºY2¯v®lB©ÞÚòùì“I½‡ƒ^×Ü´R:3ù›L[ÉÈßdÞ<ìÎÚ‡MæÍ“¡åJË D&Ó 2K-D…&óöÉ…xÑddQœ„ Y;ÈÄP(ÑdZB&ÊB‰&Ó2j4™6’Q£É´…Ì$ñ¡Ôj ™PCQ¤É´†ÌdéìÒddU[Èø˜*Y{ÈxmE“‘M“ÈÔ2¢±h2òi+ô[5@¦†•CI‡å­E“Y¡êWÛ%aâÿRCí!Ú‹&³JM’Q§3k™¤Ï%V»È(Ô™µ‰ $¬¢‘X‘)âsf,»±o¨z_SM%£PgÖ™Í}ÎÞý9H!㙆¥™h2«U‚ÏY™È–¤É¬QqŸ³>™‡Í.Ï)'í;eéÍ4™5*îsdævsR"n|—Œ"7Ñj–̆>gÌ<Ìa&H¶Ë¬œf·šLqñú)âsvDv;ó?N=2¸ñ7M¦¨&Â>gð‰ÈŸ×fÀék25Ù*îsF³f"³ã‘Á™Æ•ÞhÖM†¾šWÜ猛‡ ·¯ܘen¦É¤Š»ï6vuF÷fi=Í‘ÙÒïgå9'UC&l¦Éä’oiÕ`›Qi ©Œ¾j2™T™`ômŒJÎê":[#3ÑŸ6'(T%šL&ÕD&ÜÁ7´Pµ…5‘‘â\Õd–%G…¨µ¬©2rÔ‡&³$9š C’P2¨2’œ¨šL\²Ô‹C’³d½ê #Keh21ÉÒdûM d¤9KÕúÖYõdä9I5™¨ä©‰Iè·üªœŒD!B‘çTY©ÊÉHTj™5´ŒL!­PÕdd:A5™°d$#SL骚ŒLç§OD¦ RÕJ2J4šŠÉHUA0*,£m'©šrŠ*&#U ¨e ÜR2 ôgÕ’ ê¢ú•L)'EéçL­÷mL¿gc}dVÅP©ÒȤÝÓ¹Ö{6G&xõÒ‘IC£ÉÔ¥T2)hÚA&T2‰-‰h4™º´‚L"M¦.­"“„¦dB¯›Çð0º ’œ±|µ2¢åô‡ÑWgùepO”ÄCû¹W’I@“×}íÉJJpÆ&üuy 6ô¼‡Òq¾ô?ZAZ×%†@/Þ“¥t笿óK™ûÙoÑmÝð—ãñ´„&¯ûÚQ/²»H 2ߢÛL?¤ :iÈ,zô?kE²ûO—ÒiÇωd‚'öÒæàÀËñøšt’žfw_‹5eÛs'4ñÈÎU$ØÕÁÅU+™æWæîãÎ#9“‘{÷.[Œ˜MÙåÅîÐàÞKÜì Ó)ãåîèôñì™=Äœ ¦-F½—¡¿ÝÃ÷JÌØ›‘Bh:­¼îkø*Ó§ÙÕôG·¿p¸ÖãewêQo†». ùÞ,üþÅ@¯zlv÷»ûäLÆÉìœôÏȦ _Äìj3ÖfÈì Ó™…™E;:d{öƒšÑCÜÈÉ`Ú6f´áSÿÚý:Ç*‚\d‡øÓüîkwî×ÅíC÷ýuÛ,AÙ}~ÏÈFfï'JçdhGFf~›Á¼Æ0í~mƂÿS¹ÈÐ-Úfò¸¯Ql3×0?ë 2&‘áCŽn3lw ›5‡Éôq2:4pȸædbœ¡t÷‚Ò9Ü‘fÍHfê“Á‚ÌÔÞfiœ±h?È9Îðôð8“Ù} ØÔǙӠ—ÂŒS"óñ—£>ÄqæÇ™k6ÎÐî !öN3:Î<‘wMª°^ÞÜŒÒW”N_⦠;g¿{dp#'ƒi”ñ;››Y´ž›eu_ãd0yz‡Íý#oDÓá>‘™^~¡‡‘¹ÙHJ¦-º‘§á'}ÆÜI|?³™>$%…„ëLí"soDž®&³ ¢Àu3ç"1U“ášÿˆX­&SîÍãnbrOüx¹B×àZE&®UdZû)€ìdZûÉY¤$$ÓÞO›%'Óâ™–wU®42m^Õ©‡ÿªs]Úb»pDi§JVf©‡š„ÑêÕ³.ðöÉÈÐ ÕCF’&ãÇ‘6ÈȤZÈHÓulÅþʬ:ÈÈÓu"Òœ)«TyÎP‰ÀþÈ÷ ƒldTfš#3 9#ev;z}?žÿqê[†y~a ÉäÑ*2á\•ÓMÌ=Æ,†o³çû…A&2JMš›!wàËì&¶øBdv<Ë0ß/ 2‘Qâ M¾ª$“vІj(§›ØüÑO‡ÛWþÜì 4™üJ!1ÛìêL’1Õú’ÔššÕN&fô¦É¤ªf2ñeÃ+š1˰l%©5¨—L©|¹KÒd<ÅÉL:¥:ðå-I­ë™u’©Øçm=µ†™úÈ$4¨•ŒR›A}þf)ï%ê$£VgV™´7yõ­Tm˜©‰Œï¾5™@„GÍIµa¦2RÔ‰&È'#C7¢\gVú2M&,Qrô"Êuf5‘ã\UíÝL•d&2ð©vij #ǹª^gV%™Ðï¦¥Þø_=9jDÁ&S5IjD½ñ¿J2ìmŒ5¢àø_5IjDÅάB2òøï©8þWH†&Í’œªJ6™jÉÈqªªÙdÚ@fKŠKª¹UY:3%'fP!™Ž,MF­oÍzûdÔìË*$³%KgÖt›ª*2“ÌdÊXÑ”~÷ÃäˆUÆ’Wi±TF&sgVÆÝiÓÊHZJ½I9*ucUd:™»‘ ÉLò^Él™ìÃL…dr¿“i™Ivû½êÈtrþ- “½3«ŽL'ÿ´½d2×Jydb_ ÙàÌÛ'“£3µ‘Õâl4z²–SY‘‰Ød0"–‡ÑmäŒÝÑèGRfLÿœ˜`:c,ãëêCyß®™ÌVŽ ï<¬gvÿ(öÕY¯ŒI'DnòÞŸÅâ|é´‚´®Û‹÷Äíÿç[do/É8gýcõ±ºb§´í•™ä¹ðÎÉdµ8³—¾n.Ê {!ÿ  /ʰ¢=úȵ"yü§øÀŒoa H&^Fºê$ƒæ<ŸUñŠÎjqFdÜCãôiv5½;ÓetBd&›‚á±¼0¿2wwéÐäëpGZŒºÛåÅîÐ ¯bp±õva{ÑslJÀóÆÆ_X†ƒ;ÓGwvyÁRY‰X·dk 7ÃzÉÓ™ 2™-ÎàáÎýº¸}è~¸·a[”Ñ ÈÐp³üõö±P]Íî~wðМÌ.ìÁIÿŒbs­GŒ føÀùžOýëŻ߿x¢P‚ Ãê·P :Ke%ž3› ‘éäú1D&ƒÅÙhôl‘[ÓüêþÏîsžÚ)I,lNLv~Øl0p­|²Ç›Ê#?(¦ß€<£œÿ9€‹—J“áŽR:K%î³dk€ ¾À\V…z³,g@ý¹‰/l:†Å;ñò¼6ýS6¿îêÍBd, #9£Ñ“9úÕnÇ|;,XJz³ù혗€¡ûd¨>h6C&×åª`Éâ ¨JX›¹†ùYÏ+ƒ£¡Ç›öd~,lôŽ‘™ÝôpcŸ“1fWÖf~íÂáßÇ3€;Ñf0t–ÊJÄBš"3ñ=3*˜5g²8ªgnL††(ÃïŒ:9¯.'ÄÂfÍa2}œÁã‘NúלÌÀg€Èàhòú~,K,ˆ –±C#:¥²OX(D&³Å°“õôiz‡gîGQF'Ò›m®àftœy¢#áT‹b{s3"ƒÉÛØ 1X–°sn{ï4in†%àÜŒ¥²y4A&<}ͤ"WD>øe½YˆeÑÝl?iÉê}áÕ ãIî"QÈÜ›íW™IŽs—ç,PÇ]ñàÿ:M“™'^ZKÑqèª`ÍdÖVQh4*ãún§q2«62kj¨³\‡%} 0ÑdV‹µ…ÄÅwi“¶*Wh4UNÕE†9—/¯XYÕ4™d12åyYýßV샒õïo4™dýmåÖMŽÃ;üIˆ’¬2Nˆ²j´ŒXò*-–ÒÉLJš&µ^e“)é-ŸVÙdt‹)MÕôfšLq•?È¿Î[+I!2Y—|ýuy–Z\yŒ[¯™¬K¾¾%-ù[5™Ò"“uÉל«¥rÄVM¦4…Èd¾«%efw²¼ó/ϳ¿ˆÏ}5™Ò"“uÉ×îó{àw²Ü…=º»%e×m¦lÅÉdXòÿü~ÀïdéZ7twKʮɔ­xo–aÉ×6%ž¸xÇîn©ÉT¡Ø Û’/ZƒH‰³›ž+–‘h2e+6kβäëã/G=q'Ë¡Aw·ÔdªPìf–%_ÓË/">ÝÝ’²7 (I«Uqu&§=‚V¢* £¯h–¢ÒÉèOJ’þ|FVUó™f KŒ[¯Ê>9Óm§ ª”²p²¥ªþ3M±½‰C£òÖ;Õ¯ V&ZW6Õt'S¢R‡þ†ªH“ñ”:-Ódrª’ïÏ$õ\šLNÕöÍ&M&§ªùžfBº&“S5“)jâëÚ™íÃ4_iM9ÖaÀë<»}˜&ãkå—þ [‡'“Ý>L“ ´ŠLaë0ò £ÅodFŸ«öa|¥_º7KIëÍ [‡‘WY†Qad>؇ñ•r|h2I¢/Ñ&¸h…Ȱ#¯0Z,Â2Yó«À>Ì[Á@ëà@“Iy&4šr¬Ã„W•sG&g}'Ã×Á&“(2ž_n4åX‡1¯0°™}˜h3Â>L´¶4™%ÝH£ë0×àƒ Ù‡Ñ8؇q2bœ&“¦„î¬ë01ãï4ùB8aÆÉˆupšLšº³¬Ã ¶aÕæ>߀uXÁÃ6¬Šîذ|û™š¬ÃØ£àrœ&Óò[}­9§j»3&“SÕ‘‰5M&§j»&“SÕ‘‰ugšLNUx§Ó(™Ò–´å“&Wö{Ðj%«Âû6KrGmU¥ÉȪ*ïB¯»³"ªŒÌD“)¦*Éèª#³¥M!UF4™bª”ŒîÎ ¨Z2ºÑl®êÈ0*ºÑl¬ŠÉèF³±*&£ÍƪšŒn4›ªj2nÕÛrUHFtdº?ÛLÕ‘ñèþl3UOF÷g›©2º?ÛHuÑýÙ&ªƒŒîÏ6Q…d:‰µ2ª2‘Dz­e*ÏC¬ ¢aUH&2¼„ÐÔ°,™ª¢È©Xu‘ ¡Ñd’Õ™ÀP“IVcdüË5šL²j$‡9á¶'šL²$|´Ñd’Õ,èt¶r99‡ÝðÓ±gÙ´`F(â¶7¾±“x° ™¢ÖkäX´ÚvíàuEd “ñ’³:½~Ž89ã©—ã ýd¼DïÁd [¯!™5¶k# L™Éät:¸¥;þ+;Þ§ß±{~F‘U¼F [¯!™5¶kÏ]Ø–ŸLf§³näî>þPoFYÜrz&lÍL*„ŠÝ¼7+l½†¿˜ín Ù®ñ±ÜçñnÆ3~RØbüç¶oÈ& ™¬Ng³Ë‹‘¹½ïâÏ;$CY¾Âù¢7½}¶f&BÅnN¦°õšépÛ5Üí/ Á}lÛ±ÇÞ HÌÇ¿oÈV+™”«ÿ¹œÎ`¾ýÈÈXó+üùml²,Æ|<ÃSÔ³hb…Pî¢d X¯ydp ¶k^‰{´Ï‡Ùç±wR˱)~ßM2YÎfÀ}³\~«H{lò,‹Ñè÷)Laë5Þ›ÍoǼa»ÆJ¤B(íèõ½Ò£oÔÚ¾!›4dr8Ѥ'ÜfX–—øVj›)l½&fw¢ÍÛ5^"ÂÚÑ1–+F«ð6ã²IC&«ÓÙâç¤dlvû€ãÌg0Ë1À>gÊ"SØzN ²]£q&°]ã%žð´Å"Ão@:˜Ú|œ†lÒÉêtÿ=ì‘}Ydn†YN𕜞—G¦°õš÷N“æfí/Q¤ÍqÈôn@ºsö;Ÿ›=¥Ü¼129eBèþZÕvu¦ˆõÌ,'hך“§Ío‰Lë5XÜþyoݪ ™…øIׯ®fÈä¶^‹êôÙJ£R2ÉÝ™¾Öœ,M&&iný©É„EVùml3É4dÄg¬šŒ'9ÈLü»äh2žjXS·žLèBx+WʺÖ|¢À=‹[IF.•¯7“² d™&¯V ɨ¦j2vgŠ€iù"JQÕëšeëÎҖȧ–‘QLåd$ë<ÔSý·4¤ª UFRåddj42ŲVm"£Ð u|çLšêP L d¤i4j©ã{š’ÔˆJ£?©2r49¢È¡:¾Û,C£QlzÈHpºª¦?€Æ»xÁÔäÔÐpÅ(ñf\õi ? 9i¼Én¤šÜMj?iJ6¨L´ÑT¿:H,òóÿ®SÅeÐÒB¬üͪ^ è2 tÀì‹—š¿ífcd"h*'ÓáÊÞµ‹Llp©ÍÐ…œX ådjstó6h;™Mµõ0ÑdÖi©n<4•3 É¬ÔrÝtÂQll(vð}ÅaÙ·r®)/Q`q–æÇ¶.è¦É4WC°%‡¡˜ Nì ÑíþvL6Œ(°8Kóc[tãdø;ò|gK†b×0]Óf&õfeXœ¥ù±­ ºy2ì²I>‡³%C±=xÝ'0ÊFvaÂ&Ì=4Ø\>ÈO¦ ‹³4?¶c4E˼ÏÎa1Ü·¸S[(‚°j'CÍ&—ÃÙ²¡˜i™&ùƒ±lÝcÏ&Ì–îdùYgi~l¶Yy2 †b1›°º¯h&[œ­%ó©²:‚JɤM6¯‡DC±¨MXÍŸ¤Xœ­õc[„¯Ñ%E ™,ÒŸœ­WSdò£i™´¦žy>ÐdR¢(UâSÈ3sn™2}3K|rÆgd£ÉpU¼¨.|èŒKg+Ž(ƒj&ÓôRs’^=›(jE¯8O’_jE›M+Èèo6%H’*‘ä É£–iþ ‰¹U5iNVYN‘Ìj 冚ªÉÈs®ª†¦=däi¾ÙT9‰êC­Y@åd$j42…²^Õ“‘¨Ñ(5ÔTOF¦3U%45‘¨ÑHËÜíÕvIDATÕ@F¦F£Ð, 2R¨2&+U©jC™¡¦2R5U>H«…ŒTF•±¦2R5E>㬇Œd¦íw  Ëk45Þ!qM@óY}A­Rl]SMd¼¾½¾»Šf8RM>8YÕÑŸIEÆÿÊ`»É_5¯GÙŽÄ×?·› jd#¬á´œ ëÖ%$#ÍeæÈÐÛ)É´½7:9y}9ßÃ߬4iÖÚMÊùŒÅ-˜Ûˆí•"ö/0?™¢îfâàigð ðºêh’ Lx}Ýþë· q v¿Îåo»÷ç`Ei/_è·í•"Ôår“)ìnœLšÃŒ,0¥%#ÞBœ°ÿìh&ÿi<_LÇû ;{ÊM¦°»p2igðÜ…myÉðúº8t/ÿ1beäX¯]‡™”=^v_†?_^0_Ì×gî˜kwh˜xz²½„›Ù‰‹Îl^’I»BÞ¬°»ÙìòCé¦9œwp3gdÏ&ΰ¬P!Cg–ócöcÆ,Ê™ÙÕìŽLÊžæô¢váÿQ¬ 2pÁ\³+"Ãönfç‹y›ñ’L2ƒd »›aÔî™æp¶íØcápFölÂá ¼±T2c‡½|×b3Ã~= “2j*6v^¬Üôˆy‹±¹™a%Œ_ Çæ%1¯(L¦€»FíP )g`˜} ‡3²gg0G¨¹Þ,D†jôVÉhtÅÈÌÿêå;2ç:úÕðÉp7³Åhôˆ'vYd »›aÔ¬SKq8ûèõýX8œ‘=›p8óJÈÐÈ'³÷I'ƒÝˆÈ÷Ék3õf¦h3ÌÍì徕Øf »›Í‘‡3ÜrŒ¥r‡3jtÂáL*24kŽÁ ª{dRÆ{3ƒ3÷Ÿÿ°q†{‹¹Æ)'ÃÝÌŽöÙ8S™Âîf5‘Is8Ã-_ˆÌ'3µ…ÙTdèflœé-®€¦aõwonÆÞi2ç2×™Ñt¸ÏÉð4lQîÁéyYd »›ÑÜ É¤9œaW€ãp8#{6áp&ÙŽTº»©¨Ã™&¸›‘Š:œ½)2óQp­«2)îf¤¢goŠÌ¦GÒך5™UÒd–¥Éh2«¤É,K“‘h%`DõµJÍ’ÑÊ,MFVi2²J“‘UšŒ¬ú¿™+ðQ$IEND®B`‚omniEvents-2_6_2/doc/doxygen/a00408.png0000644000076400001440000000074710240451512017674 0ustar alexusers00000000000000‰PNG  IHDR¢'~¡ŽCPLTEþÿÿŸŸŸ¿¿¿___???ßßßÿÿÿçuÀtRNS@æØfwIDATH‰í–¿nƒ0Æóýã½ äÕc¥F-c•ª cÒJQç*±=‚0c€ßÛöl“’´$K½TâŒßgóã|縎^Gìˆ#JW‘퉙«ü:â?!.å¼™«2%åªí­j”Fñ3Äê…D3Ic¶{±{ü|oìÍbè« %ŽK°hËý7qK¡¹]GMîS࢔Dy+˜Œ½„*c ?æíT)‡§µVmD¥8é“>¬‹Ì=ðá=«àsŒò0“™0æê¾™/ªÓDÐ#…Ôt&Vb†Â7©‰¨ÞZq“Bºð--(ªÓ»> bŽåUVI™Xâð•êu9¦nM¸ÇÅxÓêdg~óY€“ÌiÖ-âÖÿtŽTmDsz‰Œ1H(–lj‰±­c9ÆÓcLPcÀ:.±ŽÓ6¢9áÇu\ÃH·5м]\÷.’ÀšP†P÷:h%:ˆŽØÝÿ8Žè&¾âÅýÞñÓIEND®B`‚omniEvents-2_6_2/doc/doxygen/a00410.png0000644000076400001440000000077310240451512017664 0ustar alexusers00000000000000‰PNG  IHDR´'TìPLTEþÿÿŸŸŸ¿¿¿___???ßßßÿÿÿçuÀtRNS@æØf‹IDATH‰í–Ao‚0Çýö¸d¹.qŽãåh8ˆG³™à]W8ÂĶGmß·] LD!Ë2™ÙÂ+$ðoûëË¿¯I[P[´tƒ¾)ZЫÇ}õŒEƒþ‡hîl¼¼ÓYB¨tgßE¯†ËIÞ¹‚ñéèIþQ\q—q†$O¤8šTèÿ%h  ÇûŽêBó¥!rÊq#íÃÛ’Ù‡}æjA;€˜¢È¶ö¡¡…zª¶YŠ– îG~Ä„ù”¢£i´ˆ‡+´Þ1 B×@—pæ¢.ê•FÀßeÊ«ÑL5á /ÙFƒtáE ¢Òzf€Dƒ›¬ÝQ“O¥WmÈ Zyø,'P:MлùKÍ) •Fàñ5C3ùVmã9ºs/;¹—¢A+fÍ+À;|‘µ*¾cOXßPjˆ‘{€x¦4‰Þfè ž•¢Õ‘9óÚŒ§£µƒ“U8ý SSV8F{½4Ý£ImÊÑØ9ê¡/à¸{]¡ìÿ¶´q{¨¦É03ÿÌl±A¹>Œ‘çÙsžÓcþ³–ÇX­è¤§ªžQ*µr`êW1NŽÙÌÑqQœUN,æÀ”asw´v!7æñgSÇ.нì.C6gÔÕ-'¥dÆK1Ÿz7‰Iª¡ï#§¸—žÂ4O³€ØìT‹ñàãILLøHj2ih’<Šmœ^:1h®-¶vĹI–äø´U:šV÷«æ3û>O5ÕÁPRy«j)‹ó0ãv¹*o˜cGü£—!D‹á:²‰³•~ãNŒ]x#„@Ái6‹“·³Á˰–pbìñû>› ƤR†MÅg¾ß‚ï¿`þj=æZ1—ùÝ]ÀzŒÛ¾‹õ*Oþ=¯IEND®B`‚omniEvents-2_6_2/doc/doxygen/index.html0000644000076400001440000000046210303671741020351 0ustar alexusers00000000000000 OmniEvents omniEvents-2_6_2/doc/doxygen/tree.html0000644000076400001440000013041410303671741020202 0ustar alexusers00000000000000 TreeView

OmniEvents

o+File List

o+Class List

o+Class Hierarchy

o*Class Members

o+Namespace List

o+Directories

o*File Members

o*Namespace Members

\*Graphical Class Hierarchy

omniEvents-2_6_2/doc/doxygen/ftv2blank.png0000644000076400001440000000025610303671741020754 0ustar alexusers00000000000000‰PNG  IHDR–ÖGtRNS”ý®tEXtSoftwaregif2png 2.4.2£^G%tEXtCommentUlead GIF SmartSaver Ver 2.0!ø×^SIDATxÚc8À€€0àBx<2Ër|IEND®B`‚omniEvents-2_6_2/doc/doxygen/ftv2doc.png0000644000076400001440000000037710303671741020436 0ustar alexusers00000000000000‰PNG  IHDR_Tq-PLTEÿÿÿÿÿÿÿÿÀÀÀ€€€ÿ³½ûÈtRNS@æØftEXtSoftwaregif2png 2.4.2£^GvIDATxÚc````c``d'0bqâ$8`qÊ'3001£2 pT2Si`q'Ê€\\À”¢ˆRKRSiÈ”„RRÅi 6त¤h‚ÄQ‚kqMaNUò`'E$pgc 0Åo#õÐàUƒG½IEND®B`‚omniEvents-2_6_2/doc/doxygen/ftv2folderclosed.png0000644000076400001440000000040310303671741022324 0ustar alexusers00000000000000‰PNG  IHDR_Tq-PLTEÿÿÿÿÿÿÀÀÀ€€€€€Bî@átRNS@æØftEXtSoftwaregif2png 2.4.2£^G}IDATxÚŽÁ „0C#ŒwûB½+øemï¢ÍÿÿŠ3­îZö°Úð†¦ˆ@S‚š×QB%®zv íêyyIsáò2_I¹í#` Í6fä@K´ÛÛåîx ù–m‹¢nùPd¦p¶P Óx†˜¦Þ]%Íþ߯ ˜`½ IEND®B`‚omniEvents-2_6_2/doc/doxygen/ftv2folderopen.png0000644000076400001440000000040510303671741022016 0ustar alexusers00000000000000‰PNG  IHDR_Tq-PLTEÿÿÿÿÿÿÿÿÀÀÀ€€€€€’2ŒåtRNS@æØftEXtSoftwaregif2png 2.4.2£^G|IDATxÚ…A‚0E_õ-SÖÆ××Ò ±Þÿ: !¢oóþÿ‹€ j<*aÅÓCiÁ´«ùp¬ƒÊ»û¤‹®&F¶LèÃú³}¨ë¥FTFN*âΕ=º°d“…› sqƒu×ò§ò ûÒëCùýò ¤)ËÚG¬DIEND®B`‚omniEvents-2_6_2/doc/doxygen/ftv2lastnode.png0000644000076400001440000000035110303671741021472 0ustar alexusers00000000000000‰PNG  IHDRLƒ1Ù0PLTEÿÿÿ€€€Ó tRNS@æØftEXtSoftwaregif2png 2.4.2£^G&tEXtCommentUlead GIF SmartSaver Ver 2.0io?ÍIDATxÚc`0ÀO È3$§ˆÊ3=IEND®B`‚omniEvents-2_6_2/doc/doxygen/ftv2link.png0000644000076400001440000000054610303671741020624 0ustar alexusers00000000000000‰PNG  IHDR_Tq-0PLTEÿÿÿ€ÿÿ€ÿ€€€€€ÀÀÀ~›tRNS@æØftEXtSoftwaregif2png 2.4.2£^G&tEXtCommentUlead GIF SmartSaver Ver 2.0Ù åJIDATxÚ}Œ± Â0Eo3´c~¡SW‹~€n®Z²¾:d5¸dì/Ÿy!PÐÉÍᾨ‚àf}ÀžQp@Ï­tÛbâ ÁÌa;j»;éhº¬Q$ìÜKhíÒ^~ý’¨m„²((8ÊÒLF-YÌ8\‹Ìãþ+qúy¼gy…TiÞÞ/øÏq•+¡xÐÿIEND®B`‚omniEvents-2_6_2/doc/doxygen/ftv2mlastnode.png0000644000076400001440000000024010303671741021644 0ustar alexusers00000000000000‰PNG  IHDRÃÃÄy PLTEÿÿÿ€€€<^»,tRNS@æØftEXtSoftwaregif2png 2.4.2£^G#IDATxÚc`   `„Œ¡¡ ɨµPʉamºÀÜiÈIEND®B`‚omniEvents-2_6_2/doc/doxygen/ftv2mnode.png0000644000076400001440000000030210303671741020757 0ustar alexusers00000000000000‰PNG  IHDRLƒ1Ù$PLTEÀÀÀ€€€S¾™tRNS@æØftEXtSoftwaregif2png 2.4.2£^G*IDATxÚc` .àBt§RT÷n €ñÁbÜLJJÜÜÜÈ"05˜ÚÑ·y'ª÷–IEND®B`‚omniEvents-2_6_2/doc/doxygen/ftv2node.png0000644000076400001440000000035310303671741020610 0ustar alexusers00000000000000‰PNG  IHDRLƒ1Ù0PLTEÿÿÿ€€€Ó tRNS@æØftEXtSoftwaregif2png 2.4.2£^G&tEXtCommentUlead GIF SmartSaver Ver 2.0io?ÍIDATxÚc`0ÀO ˆVŒÂ.RâúE:áIEND®B`‚omniEvents-2_6_2/doc/doxygen/ftv2plastnode.png0000644000076400001440000000024510303671741021654 0ustar alexusers00000000000000‰PNG  IHDRÃÃÄy PLTEÿÿÿ€€€<^»,tRNS@æØftEXtSoftwaregif2png 2.4.2£^G(IDATxÚc` 0ach(`2µ BY 1,nÁÂåíu§IEND®B`‚omniEvents-2_6_2/doc/doxygen/ftv2pnode.png0000644000076400001440000000031010303671741020761 0ustar alexusers00000000000000‰PNG  IHDRLƒ1Ù$PLTEÀÀÀ€€€S¾™tRNS@æØftEXtSoftwaregif2png 2.4.2£^G0IDATxÚc` .àBn&8ââTŠÊàÞ >DŒ›II‰››Y¦S;:ºk/ªËoIEND®B`‚omniEvents-2_6_2/doc/doxygen/ftv2vertline.png0000644000076400001440000000034510303671741021514 0ustar alexusers00000000000000‰PNG  IHDRLƒ1Ù0PLTEÿÿÿ€€€Ó tRNS@æØftEXtSoftwaregif2png 2.4.2£^G&tEXtCommentUlead GIF SmartSaver Ver 2.0io?ÍIDATxÚc`0ÀO[!¦å<è:IEND®B`‚omniEvents-2_6_2/doc/doxygen/a00200.md50000644000076400001440000000004010227236243017554 0ustar alexusers0000000000000042638e5edd699f7d9a32c5adc2531190omniEvents-2_6_2/doc/doxygen/a00201.md50000644000076400001440000000004010227236243017555 0ustar alexusers00000000000000aa038e1e10cca3d49d5ce50208353a18omniEvents-2_6_2/doc/doxygen/a00200.map0000644000076400001440000000036310227236243017654 0ustar alexusers00000000000000base referer rect $a00127.html 148,44 294,68 rect $a00114.html 190,92 252,116 rect $a00125.html 141,140 301,164 rect $a00083.html 362,8 501,32 rect $a00126.html 356,56 508,80 rect $a00124.html 349,116 514,140 rect $a00136.html 369,164 494,188 omniEvents-2_6_2/doc/doxygen/a00202.md50000644000076400001440000000004010227236243017556 0ustar alexusers000000000000009c4e80bba65b158411f7c4a57acbbf56omniEvents-2_6_2/doc/doxygen/a00201.map0000644000076400001440000000005410227236243017652 0ustar alexusers00000000000000base referer rect $a00133.html 125,8 192,32 omniEvents-2_6_2/doc/doxygen/a00203.md50000644000076400001440000000004010227236243017557 0ustar alexusers00000000000000b3d226c1f24ee6b62eb2d1cfadad5408omniEvents-2_6_2/doc/doxygen/a00202.map0000644000076400001440000000070710227236243017660 0ustar alexusers00000000000000base referer rect $a00084.html 201,184 334,208 rect $a00115.html 766,110 822,134 rect $a00101.html 633,258 694,282 rect $a00093.html 209,677 326,701 rect $a00117.html 429,677 535,701 rect $a00127.html 194,457 341,481 rect $a00123.html 198,358 337,382 rect $a00135.html 623,481 703,505 rect $a00098.html 429,184 535,208 rect $a00107.html 443,629 521,653 rect $a00090.html 442,824 522,848 rect $a00081.html 441,530 523,554 rect $a00119.html 422,482 542,506 omniEvents-2_6_2/doc/doxygen/a00204.md50000644000076400001440000000004010240451377017562 0ustar alexusers000000000000008ff8c414c992ae19bb413fa40db366edomniEvents-2_6_2/doc/doxygen/a00203.map0000644000076400001440000000022510227236243017654 0ustar alexusers00000000000000base referer rect $a00135.html 242,109 322,133 rect $a00098.html 229,157 335,181 rect $a00115.html 558,157 614,181 rect $a00101.html 429,109 490,133 omniEvents-2_6_2/doc/doxygen/a00205.md50000644000076400001440000000004010240451400017546 0ustar alexusers00000000000000c4b115919a16dabf5b97ece3efeaafcaomniEvents-2_6_2/doc/doxygen/a00204.map0000644000076400001440000000036310240451400017645 0ustar alexusers00000000000000base referer rect $a00128.html 149,44 293,68 rect $a00115.html 190,92 252,116 rect $a00126.html 142,140 300,164 rect $a00084.html 362,8 501,32 rect $a00127.html 356,56 508,80 rect $a00125.html 350,116 513,140 rect $a00137.html 369,164 494,188 omniEvents-2_6_2/doc/doxygen/a00206.md50000644000076400001440000000004010240666424017565 0ustar alexusers000000000000008ff8c414c992ae19bb413fa40db366edomniEvents-2_6_2/doc/doxygen/a00205.map0000644000076400001440000000001510240451401017641 0ustar alexusers00000000000000base referer omniEvents-2_6_2/doc/doxygen/a00207.md50000644000076400001440000000004010240666425017567 0ustar alexusers00000000000000c4b115919a16dabf5b97ece3efeaafcaomniEvents-2_6_2/doc/doxygen/a00206.map0000644000076400001440000000036310240666425017666 0ustar alexusers00000000000000base referer rect $a00128.html 149,44 293,68 rect $a00115.html 190,92 252,116 rect $a00126.html 142,140 300,164 rect $a00084.html 362,8 501,32 rect $a00127.html 356,56 508,80 rect $a00125.html 350,116 513,140 rect $a00137.html 369,164 494,188 omniEvents-2_6_2/doc/doxygen/a00208.md50000644000076400001440000000004010240451401017552 0ustar alexusers000000000000006a31a9e0f6f329fabb25e85d76360056omniEvents-2_6_2/doc/doxygen/a00207.map0000644000076400001440000000001510240666425017661 0ustar alexusers00000000000000base referer omniEvents-2_6_2/doc/doxygen/a00210.md50000644000076400001440000000004010240666426017562 0ustar alexusers000000000000006a31a9e0f6f329fabb25e85d76360056omniEvents-2_6_2/doc/doxygen/a00208.map0000644000076400001440000000070710240451403017656 0ustar alexusers00000000000000base referer rect $a00085.html 202,184 333,208 rect $a00116.html 766,110 822,134 rect $a00102.html 633,258 694,282 rect $a00094.html 210,677 325,701 rect $a00118.html 430,677 534,701 rect $a00128.html 195,457 339,481 rect $a00124.html 199,358 335,382 rect $a00136.html 623,481 703,505 rect $a00099.html 429,184 535,208 rect $a00108.html 443,629 521,653 rect $a00091.html 442,824 522,848 rect $a00081.html 441,530 523,554 rect $a00120.html 423,482 541,506 omniEvents-2_6_2/doc/doxygen/a00211.md50000644000076400001440000000004010240666427017564 0ustar alexusers0000000000000063cbe09894edb63d9ea98fe8bcd98375omniEvents-2_6_2/doc/doxygen/a00210.map0000644000076400001440000000070710240666427017665 0ustar alexusers00000000000000base referer rect $a00085.html 202,184 333,208 rect $a00116.html 766,110 822,134 rect $a00102.html 633,258 694,282 rect $a00094.html 210,677 325,701 rect $a00118.html 430,677 534,701 rect $a00128.html 195,457 339,481 rect $a00124.html 199,358 335,382 rect $a00136.html 623,481 703,505 rect $a00099.html 429,184 535,208 rect $a00108.html 443,629 521,653 rect $a00091.html 442,824 522,848 rect $a00081.html 441,530 523,554 rect $a00120.html 423,482 541,506 omniEvents-2_6_2/doc/doxygen/a00212.md50000644000076400001440000000004010240666430017557 0ustar alexusers00000000000000b024b02a52d7169007b7b39dc9c8e808omniEvents-2_6_2/doc/doxygen/a00211.map0000644000076400001440000000022510240666430017653 0ustar alexusers00000000000000base referer rect $a00136.html 242,109 322,133 rect $a00099.html 229,157 335,181 rect $a00116.html 558,157 614,181 rect $a00102.html 429,109 490,133 omniEvents-2_6_2/doc/doxygen/a00213.md50000644000076400001440000000004010240666430017560 0ustar alexusers000000000000009ed7db33bdd65717b197809808d6c60domniEvents-2_6_2/doc/doxygen/a00212.map0000644000076400001440000000015610240666430017657 0ustar alexusers00000000000000base referer rect $a00084.html 202,8 341,32 rect $a00093.html 210,56 333,80 rect $a00125.html 190,104 353,128 omniEvents-2_6_2/doc/doxygen/a00214.md50000644000076400001440000000004010240666430017561 0ustar alexusers000000000000000d5bc787452a4b9842ce74e8fac6eb63omniEvents-2_6_2/doc/doxygen/a00213.map0000644000076400001440000000015610240666430017660 0ustar alexusers00000000000000base referer rect $a00087.html 153,8 270,32 rect $a00089.html 139,56 283,80 rect $a00106.html 178,104 245,128 omniEvents-2_6_2/doc/doxygen/a00215.md50000644000076400001440000000004010240666431017563 0ustar alexusers000000000000009e5482876f882a0baa640b272f3f3121omniEvents-2_6_2/doc/doxygen/a00214.map0000644000076400001440000000015610240666431017662 0ustar alexusers00000000000000base referer rect $a00086.html 193,8 273,32 rect $a00107.html 202,56 264,80 rect $a00088.html 177,104 289,128 omniEvents-2_6_2/doc/doxygen/a00216.md50000644000076400001440000000004010240666431017564 0ustar alexusers00000000000000af9e4ed07aed98697351a3ae18f14bd6omniEvents-2_6_2/doc/doxygen/a00215.map0000644000076400001440000000005410240666431017660 0ustar alexusers00000000000000base referer rect $a00087.html 172,8 289,32 omniEvents-2_6_2/doc/doxygen/a00217.md50000644000076400001440000000004010240666431017565 0ustar alexusers0000000000000065144d4254e90941042966babe0a640fomniEvents-2_6_2/doc/doxygen/a00216.map0000644000076400001440000000015610240666431017664 0ustar alexusers00000000000000base referer rect $a00086.html 233,8 313,32 rect $a00090.html 203,56 342,80 rect $a00107.html 242,104 303,128 omniEvents-2_6_2/doc/doxygen/a00218.md50000644000076400001440000000004010240666432017567 0ustar alexusers000000000000007dcaf3d29f92d397eac93ade3dd01266omniEvents-2_6_2/doc/doxygen/a00217.map0000644000076400001440000000001510240666432017660 0ustar alexusers00000000000000base referer omniEvents-2_6_2/doc/doxygen/a00219.md50000644000076400001440000000004010240666432017570 0ustar alexusers0000000000000018fa2505bf6c7e0651f36c07f781c760omniEvents-2_6_2/doc/doxygen/a00218.map0000644000076400001440000000005410240666432017664 0ustar alexusers00000000000000base referer rect $a00089.html 198,8 342,32 omniEvents-2_6_2/doc/doxygen/a00220.md50000644000076400001440000000004010240666433017561 0ustar alexusers00000000000000271433f9959763f098f727b96d0c9f0domniEvents-2_6_2/doc/doxygen/a00219.map0000644000076400001440000000053410240666433017671 0ustar alexusers00000000000000base referer rect $a00094.html 137,154 251,178 rect $a00113.html 527,250 658,274 rect $a00111.html 139,349 249,373 rect $a00084.html 311,7 450,31 rect $a00093.html 319,55 442,79 rect $a00096.html 301,154 461,178 rect $a00095.html 510,106 675,130 rect $a00123.html 310,202 451,226 rect $a00137.html 318,250 443,274 rect $a00106.html 559,154 626,178 omniEvents-2_6_2/doc/doxygen/a00221.md50000644000076400001440000000004010240666433017562 0ustar alexusers000000000000002b915c8113f95ee1efa850144cdc8968omniEvents-2_6_2/doc/doxygen/a00220.map0000644000076400001440000000011610240666433017655 0ustar alexusers00000000000000base referer rect $a00105.html 157,8 226,32 rect $a00110.html 153,154 230,178 omniEvents-2_6_2/doc/doxygen/a00222.md50000644000076400001440000000004010240666434017564 0ustar alexusers000000000000001524ed4189ae813439da518379b07912omniEvents-2_6_2/doc/doxygen/a00221.map0000644000076400001440000000060310240666434017660 0ustar alexusers00000000000000base referer rect $a00094.html 361,253 475,277 rect $a00116.html 758,694 814,718 rect $a00085.html 179,573 310,597 rect $a00138.html 525,349 645,373 rect $a00114.html 182,745 307,769 rect $a00136.html 746,325 826,349 rect $a00118.html 533,106 637,130 rect $a00108.html 546,498 623,522 rect $a00091.html 545,205 625,229 rect $a00099.html 365,621 471,645 rect $a00102.html 554,597 615,621 omniEvents-2_6_2/doc/doxygen/a00223.md50000644000076400001440000000004010240666435017566 0ustar alexusers000000000000003eae45838585fb54734414c51b6600f6omniEvents-2_6_2/doc/doxygen/a00222.map0000644000076400001440000000026510240666435017666 0ustar alexusers00000000000000base referer rect $a00136.html 336,155 416,179 rect $a00118.html 177,58 281,82 rect $a00108.html 190,205 268,229 rect $a00091.html 189,253 269,277 rect $a00116.html 348,205 404,229 omniEvents-2_6_2/doc/doxygen/a00224.md50000644000076400001440000000004010240666435017567 0ustar alexusers00000000000000429d19ebaebf175a81fa5b86a51a96caomniEvents-2_6_2/doc/doxygen/a00223.map0000644000076400001440000000043010240666435017661 0ustar alexusers00000000000000base referer rect $a00084.html 183,8 322,32 rect $a00093.html 191,56 314,80 rect $a00096.html 173,154 333,178 rect $a00095.html 382,106 547,130 rect $a00123.html 182,202 323,226 rect $a00137.html 190,250 315,274 rect $a00106.html 431,154 498,178 rect $a00113.html 399,202 530,226 omniEvents-2_6_2/doc/doxygen/a00225.md50000644000076400001440000000004010240666436017571 0ustar alexusers000000000000002ee5bb1b126a54c187174212951bb184omniEvents-2_6_2/doc/doxygen/a00224.map0000644000076400001440000000037110240666436017667 0ustar alexusers00000000000000base referer rect $a00096.html 224,206 384,230 rect $a00094.html 433,281 548,305 rect $a00118.html 601,501 705,525 rect $a00116.html 772,36 828,60 rect $a00136.html 760,181 840,205 rect $a00108.html 614,157 692,181 rect $a00091.html 613,306 693,330 omniEvents-2_6_2/doc/doxygen/a00226.md50000644000076400001440000000004010240666437017573 0ustar alexusers0000000000000097b42e38bccd3e7d4008a71cd31843e6omniEvents-2_6_2/doc/doxygen/a00225.map0000644000076400001440000000033110240666437017665 0ustar alexusers00000000000000base referer rect $a00136.html 544,401 624,425 rect $a00094.html 217,202 332,226 rect $a00118.html 385,301 489,325 rect $a00108.html 398,450 476,474 rect $a00091.html 397,106 477,130 rect $a00116.html 556,449 612,473 omniEvents-2_6_2/doc/doxygen/a00227.md50000644000076400001440000000004010240666437017574 0ustar alexusers00000000000000b698aaab01198b286f68b5a6b4433974omniEvents-2_6_2/doc/doxygen/a00226.map0000644000076400001440000000015610240666437017673 0ustar alexusers00000000000000base referer rect $a00095.html 217,8 382,32 rect $a00106.html 266,56 333,80 rect $a00113.html 234,104 365,128 omniEvents-2_6_2/doc/doxygen/a00228.md50000644000076400001440000000004010240666440017567 0ustar alexusers000000000000005e2dbb93f95d4c899baa558c1773f020omniEvents-2_6_2/doc/doxygen/a00227.map0000644000076400001440000000005410240666440017663 0ustar alexusers00000000000000base referer rect $a00105.html 189,8 258,32 omniEvents-2_6_2/doc/doxygen/a00229.md50000644000076400001440000000004010240666440017570 0ustar alexusers0000000000000039ffd2274281d716e584f15031a11d46omniEvents-2_6_2/doc/doxygen/a00228.map0000644000076400001440000000015610240666440017667 0ustar alexusers00000000000000base referer rect $a00099.html 170,82 277,106 rect $a00116.html 460,10 516,34 rect $a00102.html 330,58 392,82 omniEvents-2_6_2/doc/doxygen/a00230.md50000644000076400001440000000004010240666441017561 0ustar alexusers000000000000008669dcc09a082fc98113c724bada206domniEvents-2_6_2/doc/doxygen/a00229.map0000644000076400001440000000011510240666441017664 0ustar alexusers00000000000000base referer rect $a00116.html 297,10 353,34 rect $a00102.html 168,58 229,82 omniEvents-2_6_2/doc/doxygen/a00231.md50000644000076400001440000000004010240666441017562 0ustar alexusers000000000000006ac4afec3a001f97c97ba38caec1fcc4omniEvents-2_6_2/doc/doxygen/a00230.map0000644000076400001440000000047010240666441017660 0ustar alexusers00000000000000base referer rect $a00085.html 170,152 301,176 rect $a00128.html 164,56 308,80 rect $a00124.html 168,104 304,128 rect $a00098.html 180,200 292,224 rect $a00084.html 370,104 509,128 rect $a00093.html 378,200 501,224 rect $a00125.html 358,152 521,176 rect $a00127.html 364,8 516,32 rect $a00123.html 369,56 510,80 omniEvents-2_6_2/doc/doxygen/a00232.md50000644000076400001440000000004010240666441017563 0ustar alexusers00000000000000b91050514aee135e6896094b8e4a275domniEvents-2_6_2/doc/doxygen/a00231.map0000644000076400001440000000011610240666441017656 0ustar alexusers00000000000000base referer rect $a00105.html 194,8 264,32 rect $a00110.html 190,250 268,274 omniEvents-2_6_2/doc/doxygen/a00233.md50000644000076400001440000000004010240666442017565 0ustar alexusers000000000000002890b82dcccdbc913b5523e4f8e80268omniEvents-2_6_2/doc/doxygen/a00232.map0000644000076400001440000000011410240666442017656 0ustar alexusers00000000000000base referer rect $a00102.html 130,56 192,80 rect $a00116.html 260,8 316,32 omniEvents-2_6_2/doc/doxygen/a00234.md50000644000076400001440000000004010240666442017566 0ustar alexusers00000000000000dd3ede1ecc5a02dbdcfcfa56ac231999omniEvents-2_6_2/doc/doxygen/a00233.map0000644000076400001440000000005410240666442017662 0ustar alexusers00000000000000base referer rect $a00116.html 132,8 188,32 omniEvents-2_6_2/doc/doxygen/a00235.md50000644000076400001440000000004010240666443017570 0ustar alexusers000000000000009d5b54a6bc19051ca80c495db78a0412omniEvents-2_6_2/doc/doxygen/a00234.map0000644000076400001440000000057410240666443017673 0ustar alexusers00000000000000base referer rect $a00099.html 117,152 224,176 rect $a00084.html 480,152 618,176 rect $a00101.html 137,298 204,322 rect $a00085.html 280,56 410,80 rect $a00128.html 273,104 417,128 rect $a00124.html 277,200 413,224 rect $a00098.html 289,152 401,176 rect $a00093.html 488,8 610,32 rect $a00125.html 468,56 630,80 rect $a00127.html 473,104 625,128 rect $a00123.html 478,200 620,224 omniEvents-2_6_2/doc/doxygen/a00236.md50000644000076400001440000000004010240666443017571 0ustar alexusers00000000000000322594394dd0e76d271a0c21ff794c77omniEvents-2_6_2/doc/doxygen/a00235.map0000644000076400001440000000001510240666443017662 0ustar alexusers00000000000000base referer omniEvents-2_6_2/doc/doxygen/a00237.md50000644000076400001440000000004010240666444017573 0ustar alexusers00000000000000683402b134b0574f5dff5b08a85b731fomniEvents-2_6_2/doc/doxygen/a00236.map0000644000076400001440000000005410240666444017667 0ustar alexusers00000000000000base referer rect $a00113.html 168,8 298,32 omniEvents-2_6_2/doc/doxygen/a00238.md50000644000076400001440000000004010240666444017574 0ustar alexusers00000000000000b06064c044edcba769d7ee0391840874omniEvents-2_6_2/doc/doxygen/a00237.map0000644000076400001440000000005410240666444017670 0ustar alexusers00000000000000base referer rect $a00105.html 134,8 203,32 omniEvents-2_6_2/doc/doxygen/a00239.md50000644000076400001440000000004010240666444017575 0ustar alexusers00000000000000bd9f6e79339beb48d6eec8c7fd86fca7omniEvents-2_6_2/doc/doxygen/a00238.map0000644000076400001440000000053410240666444017674 0ustar alexusers00000000000000base referer rect $a00104.html 140,8 214,32 rect $a00106.html 144,56 210,80 rect $a00092.html 138,104 216,128 rect $a00097.html 140,152 214,176 rect $a00100.html 138,200 216,224 rect $a00133.html 130,248 224,272 rect $a00129.html 133,296 221,320 rect $a00130.html 133,344 221,368 rect $a00131.html 129,392 225,416 rect $a00132.html 129,440 225,464 omniEvents-2_6_2/doc/doxygen/a00240.md50000644000076400001440000000004010240666445017566 0ustar alexusers00000000000000772483bc7214efa2c85f4f33a600e748omniEvents-2_6_2/doc/doxygen/a00239.map0000644000076400001440000000074610240666445017703 0ustar alexusers00000000000000base referer rect $a00105.html 170,88 240,112 rect $a00107.html 174,136 236,160 rect $a00112.html 154,184 256,208 rect $a00110.html 353,10 430,34 rect $a00114.html 142,282 268,306 rect $a00096.html 125,330 285,354 rect $a00116.html 673,601 729,625 rect $a00086.html 165,540 245,564 rect $a00140.html 166,588 244,612 rect $a00136.html 661,502 741,526 rect $a00094.html 334,330 449,354 rect $a00118.html 502,402 606,426 rect $a00108.html 516,552 593,576 rect $a00091.html 514,258 594,282 omniEvents-2_6_2/doc/doxygen/a00241.md50000644000076400001440000000004010240666446017570 0ustar alexusers000000000000006ffe2c0167950286f6aaa1cf830a3274omniEvents-2_6_2/doc/doxygen/a00240.map0000644000076400001440000000015610240666446017667 0ustar alexusers00000000000000base referer rect $a00087.html 134,8 252,32 rect $a00089.html 121,56 265,80 rect $a00106.html 160,104 226,128 omniEvents-2_6_2/doc/doxygen/a00242.md50000644000076400001440000000004010240666446017571 0ustar alexusers0000000000000016cb5b63580788369c8cbdd91d2e75e0omniEvents-2_6_2/doc/doxygen/a00241.map0000644000076400001440000000011410240666446017662 0ustar alexusers00000000000000base referer rect $a00136.html 133,8 213,32 rect $a00116.html 145,56 201,80 omniEvents-2_6_2/doc/doxygen/a00243.md50000644000076400001440000000004010240666447017573 0ustar alexusers000000000000005c53ddcb69f5152205e5bc7b7e756d47omniEvents-2_6_2/doc/doxygen/a00242.map0000644000076400001440000000047210240666447017673 0ustar alexusers00000000000000base referer rect $a00094.html 134,130 249,154 rect $a00084.html 309,8 448,32 rect $a00093.html 317,56 440,80 rect $a00096.html 298,154 458,178 rect $a00095.html 508,106 673,130 rect $a00123.html 308,202 449,226 rect $a00137.html 316,250 441,274 rect $a00106.html 557,154 624,178 rect $a00113.html 525,202 656,226 omniEvents-2_6_2/doc/doxygen/a00244.md50000644000076400001440000000004010240666447017574 0ustar alexusers000000000000004f247397d9da999d569317b091724671omniEvents-2_6_2/doc/doxygen/a00243.map0000644000076400001440000000005410240666447017670 0ustar alexusers00000000000000base referer rect $a00110.html 140,8 217,32 omniEvents-2_6_2/doc/doxygen/a00245.md50000644000076400001440000000004010240666447017575 0ustar alexusers00000000000000dc2eec97951911934f8ff191112ca7d6omniEvents-2_6_2/doc/doxygen/a00244.map0000644000076400001440000000001510240666447017666 0ustar alexusers00000000000000base referer omniEvents-2_6_2/doc/doxygen/a00246.md50000644000076400001440000000004010240666450017570 0ustar alexusers0000000000000065c25fcc6f6dceee982e94b4f8ef84e4omniEvents-2_6_2/doc/doxygen/a00245.map0000644000076400001440000000047210240666450017670 0ustar alexusers00000000000000base referer rect $a00106.html 149,8 216,32 rect $a00109.html 141,56 224,80 rect $a00092.html 144,104 221,128 rect $a00100.html 144,152 221,176 rect $a00133.html 136,200 229,224 rect $a00129.html 138,248 226,272 rect $a00130.html 138,296 226,320 rect $a00131.html 134,344 230,368 rect $a00132.html 134,392 230,416 omniEvents-2_6_2/doc/doxygen/a00247.md50000644000076400001440000000004010240666450017571 0ustar alexusers00000000000000f65ad0135b2c8f854303393101632b10omniEvents-2_6_2/doc/doxygen/a00246.map0000644000076400001440000000011610240666450017664 0ustar alexusers00000000000000base referer rect $a00112.html 166,8 267,32 rect $a00091.html 177,104 257,128 omniEvents-2_6_2/doc/doxygen/a00248.md50000644000076400001440000000004010240666450017572 0ustar alexusers00000000000000c7394662bec18e2bc7489d3fe3bcdd23omniEvents-2_6_2/doc/doxygen/a00247.map0000644000076400001440000000011410240666450017663 0ustar alexusers00000000000000base referer rect $a00106.html 181,8 247,32 rect $a00111.html 159,56 269,80 omniEvents-2_6_2/doc/doxygen/a00249.md50000644000076400001440000000004010240666451017574 0ustar alexusers00000000000000ab56a87f0060390c123f95946d5e6277omniEvents-2_6_2/doc/doxygen/a00248.map0000644000076400001440000000047510240666451017677 0ustar alexusers00000000000000base referer rect $a00114.html 203,58 329,82 rect $a00103.html 211,696 321,720 rect $a00096.html 186,366 346,390 rect $a00116.html 734,525 790,549 rect $a00091.html 575,549 655,573 rect $a00136.html 722,356 802,380 rect $a00094.html 395,366 510,390 rect $a00118.html 563,256 667,280 rect $a00108.html 577,405 654,429 omniEvents-2_6_2/doc/doxygen/a00250.md50000644000076400001440000000004010240666452017565 0ustar alexusers000000000000008ef12572f9fe105bb72fc917f3b5eae9omniEvents-2_6_2/doc/doxygen/a00249.map0000644000076400001440000000001510240666452017667 0ustar alexusers00000000000000base referer omniEvents-2_6_2/doc/doxygen/a00251.md50000644000076400001440000000004010240666452017566 0ustar alexusers000000000000007177effe8e99acf1d32638feeadb09faomniEvents-2_6_2/doc/doxygen/a00250.map0000644000076400001440000000043010240666452017660 0ustar alexusers00000000000000base referer rect $a00093.html 202,8 325,32 rect $a00106.html 230,56 297,80 rect $a00113.html 198,104 329,128 rect $a00119.html 201,152 326,176 rect $a00121.html 186,200 341,224 rect $a00123.html 193,248 334,272 rect $a00125.html 182,296 345,320 rect $a00127.html 188,344 340,368 omniEvents-2_6_2/doc/doxygen/a00252.md50000644000076400001440000000004010240666453017570 0ustar alexusers000000000000007648e667cd1f761ccce5de1340f94980omniEvents-2_6_2/doc/doxygen/a00251.map0000644000076400001440000000011610240666453017663 0ustar alexusers00000000000000base referer rect $a00116.html 132,8 188,32 rect $a00081.html 118,200 201,224 omniEvents-2_6_2/doc/doxygen/a00253.md50000644000076400001440000000004010240666453017571 0ustar alexusers000000000000007f2af8b77bd481c3768a1c2076d337c0omniEvents-2_6_2/doc/doxygen/a00252.map0000644000076400001440000000001510240666453017662 0ustar alexusers00000000000000base referer omniEvents-2_6_2/doc/doxygen/a00254.md50000644000076400001440000000004010240666454017573 0ustar alexusers00000000000000d7a67a5b3d85cfa5b3e4c9fd8fe0358eomniEvents-2_6_2/doc/doxygen/a00253.map0000644000076400001440000000137010240666454017671 0ustar alexusers00000000000000base referer rect $a00099.html 322,306 429,330 rect $a00084.html 712,330 850,354 rect $a00093.html 720,109 842,133 rect $a00125.html 700,35 862,59 rect $a00127.html 705,442 857,466 rect $a00123.html 710,555 852,579 rect $a00102.html 160,269 221,293 rect $a00108.html 152,553 229,577 rect $a00095.html 484,605 649,629 rect $a00137.html 504,653 629,677 rect $a00106.html 157,753 224,777 rect $a00113.html 125,801 256,825 rect $a00115.html 160,849 221,873 rect $a00119.html 128,897 253,921 rect $a00121.html 113,945 268,969 rect $a00135.html 148,993 233,1017 rect $a00085.html 501,109 632,133 rect $a00128.html 494,306 638,330 rect $a00124.html 498,354 634,378 rect $a00098.html 510,207 622,231 rect $a00101.html 342,258 409,282 rect $a00094.html 318,553 433,577 omniEvents-2_6_2/doc/doxygen/a00255.md50000644000076400001440000000004010240666454017574 0ustar alexusers000000000000003084482e4789a6e600e23353b090f41fomniEvents-2_6_2/doc/doxygen/a00254.map0000644000076400001440000000005510240666454017671 0ustar alexusers00000000000000base referer rect $a00118.html 169,56 273,80 omniEvents-2_6_2/doc/doxygen/a00256.md50000644000076400001440000000004010240666455017576 0ustar alexusers00000000000000f0d35c549d3644b1d7fe25a67b3933f4omniEvents-2_6_2/doc/doxygen/a00255.map0000644000076400001440000000001510240666455017667 0ustar alexusers00000000000000base referer omniEvents-2_6_2/doc/doxygen/a00257.md50000644000076400001440000000004010240666455017577 0ustar alexusers00000000000000842c9d791bed0bef5486b8e3c5edee4aomniEvents-2_6_2/doc/doxygen/a00256.map0000644000076400001440000000074710240666455017704 0ustar alexusers00000000000000base referer rect $a00094.html 188,178 302,202 rect $a00084.html 386,58 525,82 rect $a00095.html 585,156 750,180 rect $a00123.html 385,253 526,277 rect $a00137.html 393,301 518,325 rect $a00117.html 189,328 301,352 rect $a00119.html 182,376 308,400 rect $a00121.html 168,424 322,448 rect $a00125.html 164,472 326,496 rect $a00127.html 169,520 321,544 rect $a00093.html 394,106 517,130 rect $a00096.html 376,205 536,229 rect $a00106.html 634,253 701,277 rect $a00113.html 602,205 733,229 omniEvents-2_6_2/doc/doxygen/a00258.md50000644000076400001440000000004010240666456017601 0ustar alexusers00000000000000deefeb64fdeace6de6268a4be3900a6bomniEvents-2_6_2/doc/doxygen/a00257.map0000644000076400001440000000026210240666456017676 0ustar alexusers00000000000000base referer rect $a00120.html 185,54 302,78 rect $a00118.html 192,153 296,177 rect $a00116.html 216,300 272,324 rect $a00114.html 181,201 306,225 rect $a00136.html 357,8 437,32 omniEvents-2_6_2/doc/doxygen/a00259.md50000644000076400001440000000004010240666456017602 0ustar alexusers00000000000000a403bd2771289b61d56f8c5a2dbef1d8omniEvents-2_6_2/doc/doxygen/a00258.map0000644000076400001440000000005710240666456017701 0ustar alexusers00000000000000base referer rect $a00136.html 178,152 258,176 omniEvents-2_6_2/doc/doxygen/a00260.md50000644000076400001440000000004010240666457017573 0ustar alexusers000000000000000ee013ab5776778b888993de91a59213omniEvents-2_6_2/doc/doxygen/a00259.map0000644000076400001440000000046710240666457017710 0ustar alexusers00000000000000base referer rect $a00128.html 178,44 322,68 rect $a00124.html 182,92 318,116 rect $a00119.html 188,140 313,164 rect $a00122.html 176,188 325,212 rect $a00084.html 382,56 521,80 rect $a00127.html 376,8 528,32 rect $a00123.html 381,104 522,128 rect $a00121.html 374,164 529,188 rect $a00137.html 389,212 514,236 omniEvents-2_6_2/doc/doxygen/a00261.md50000644000076400001440000000004010240666457017574 0ustar alexusers0000000000000065e6dcdd990caba9ae26703aa73b3de7omniEvents-2_6_2/doc/doxygen/a00260.map0000644000076400001440000000032310240666457017667 0ustar alexusers00000000000000base referer rect $a00122.html 213,104 362,128 rect $a00116.html 260,32 316,56 rect $a00114.html 225,204 350,228 rect $a00118.html 452,301 556,325 rect $a00120.html 445,56 562,80 rect $a00136.html 648,32 728,56 omniEvents-2_6_2/doc/doxygen/a00262.md50000644000076400001440000000004010240666460017567 0ustar alexusers00000000000000319e217076517b4e197347c0f7dd6ccaomniEvents-2_6_2/doc/doxygen/a00261.map0000644000076400001440000000012110240666460017656 0ustar alexusers00000000000000base referer rect $a00120.html 239,106 357,130 rect $a00136.html 442,201 522,225 omniEvents-2_6_2/doc/doxygen/a00263.md50000644000076400001440000000004010240666460017570 0ustar alexusers000000000000003e6fe9f8d5ed64e09b9b2a5c5374cb73omniEvents-2_6_2/doc/doxygen/a00262.map0000644000076400001440000000011410240666460017661 0ustar alexusers00000000000000base referer rect $a00121.html 206,8 361,32 rect $a00137.html 221,56 346,80 omniEvents-2_6_2/doc/doxygen/a00264.md50000644000076400001440000000004010240666461017572 0ustar alexusers00000000000000817789430d8fab6402941b0cb6500b88omniEvents-2_6_2/doc/doxygen/a00263.map0000644000076400001440000000060210240666461017665 0ustar alexusers00000000000000base referer rect $a00124.html 201,353 337,377 rect $a00116.html 804,85 860,109 rect $a00094.html 422,502 537,526 rect $a00118.html 629,698 733,722 rect $a00114.html 206,649 332,673 rect $a00120.html 622,303 740,327 rect $a00099.html 426,133 533,157 rect $a00136.html 792,254 872,278 rect $a00102.html 650,109 712,133 rect $a00108.html 642,205 720,229 rect $a00091.html 641,453 721,477 omniEvents-2_6_2/doc/doxygen/a00265.md50000644000076400001440000000004010240666462017574 0ustar alexusers00000000000000375809981ed6e64ee19d4b9cd0199143omniEvents-2_6_2/doc/doxygen/a00264.map0000644000076400001440000000026710240666462017676 0ustar alexusers00000000000000base referer rect $a00120.html 229,157 346,181 rect $a00099.html 234,253 341,277 rect $a00136.html 429,205 509,229 rect $a00116.html 572,325 628,349 rect $a00102.html 438,253 500,277 omniEvents-2_6_2/doc/doxygen/a00266.md50000644000076400001440000000004010240666462017575 0ustar alexusers000000000000004eb43f12033db8323dd6a0b454c6b339omniEvents-2_6_2/doc/doxygen/a00265.map0000644000076400001440000000011410240666462017666 0ustar alexusers00000000000000base referer rect $a00084.html 197,8 336,32 rect $a00123.html 196,56 337,80 omniEvents-2_6_2/doc/doxygen/a00267.md50000644000076400001440000000004010240666463017577 0ustar alexusers00000000000000f89e799b6ed284b779dbb8fde87272caomniEvents-2_6_2/doc/doxygen/a00266.map0000644000076400001440000000047610240666463017703 0ustar alexusers00000000000000base referer rect $a00126.html 222,234 379,258 rect $a00085.html 235,406 366,430 rect $a00116.html 798,602 854,626 rect $a00114.html 238,455 363,479 rect $a00118.html 249,86 353,110 rect $a00081.html 481,209 563,233 rect $a00136.html 482,307 562,331 rect $a00099.html 469,505 575,529 rect $a00102.html 669,505 730,529 omniEvents-2_6_2/doc/doxygen/a00268.md50000644000076400001440000000004010240666463017600 0ustar alexusers000000000000003d9a7abdca1d0b6c936366698d9fc46comniEvents-2_6_2/doc/doxygen/a00267.map0000644000076400001440000000012110240666463017667 0ustar alexusers00000000000000base referer rect $a00081.html 268,200 350,224 rect $a00136.html 269,248 349,272 omniEvents-2_6_2/doc/doxygen/a00269.md50000644000076400001440000000004010240666464017602 0ustar alexusers00000000000000ac6547846b3a38437c60d1ee271cc5e2omniEvents-2_6_2/doc/doxygen/a00268.map0000644000076400001440000000011410240666464017673 0ustar alexusers00000000000000base referer rect $a00125.html 217,8 379,32 rect $a00137.html 235,56 361,80 omniEvents-2_6_2/doc/doxygen/a00270.md50000644000076400001440000000004010240666465017573 0ustar alexusers000000000000006cd4adff54e8116c843eec908ad7ef21omniEvents-2_6_2/doc/doxygen/a00269.map0000644000076400001440000000047510240666465017707 0ustar alexusers00000000000000base referer rect $a00128.html 209,328 353,352 rect $a00116.html 780,60 836,84 rect $a00114.html 218,525 344,549 rect $a00118.html 444,452 548,476 rect $a00081.html 454,402 537,426 rect $a00099.html 442,133 549,157 rect $a00120.html 437,302 554,326 rect $a00102.html 646,109 708,133 rect $a00136.html 637,253 717,277 omniEvents-2_6_2/doc/doxygen/a00271.md50000644000076400001440000000004010240666465017574 0ustar alexusers00000000000000cfaad794cbf932b5246e2391529ccd31omniEvents-2_6_2/doc/doxygen/a00270.map0000644000076400001440000000032410240666465017670 0ustar alexusers00000000000000base referer rect $a00081.html 254,278 337,302 rect $a00099.html 242,82 349,106 rect $a00120.html 237,230 354,254 rect $a00116.html 580,10 636,34 rect $a00102.html 446,58 508,82 rect $a00136.html 437,205 517,229 omniEvents-2_6_2/doc/doxygen/a00272.md50000644000076400001440000000004010240666466017576 0ustar alexusers00000000000000da557c6c0c97e46607738070e5e28737omniEvents-2_6_2/doc/doxygen/a00271.map0000644000076400001440000000011410240666466017667 0ustar alexusers00000000000000base referer rect $a00084.html 209,8 348,32 rect $a00127.html 202,56 354,80 omniEvents-2_6_2/doc/doxygen/a00273.md50000644000076400001440000000004010240666466017577 0ustar alexusers0000000000000010979f6902b5cfb4313dd56a5d0e1cc1omniEvents-2_6_2/doc/doxygen/a00272.map0000644000076400001440000000011610240666466017672 0ustar alexusers00000000000000base referer rect $a00105.html 202,8 272,32 rect $a00110.html 198,202 276,226 omniEvents-2_6_2/doc/doxygen/a00274.md50000644000076400001440000000004010240666466017600 0ustar alexusers000000000000004f8878818cb8e441442230f925daa9d9omniEvents-2_6_2/doc/doxygen/a00273.map0000644000076400001440000000011610240666466017673 0ustar alexusers00000000000000base referer rect $a00105.html 205,8 274,32 rect $a00110.html 201,202 278,226 omniEvents-2_6_2/doc/doxygen/a00275.md50000644000076400001440000000004010240666467017602 0ustar alexusers000000000000008a6d5c33820eab08773fd6387a38ad39omniEvents-2_6_2/doc/doxygen/a00274.map0000644000076400001440000000011610240666467017675 0ustar alexusers00000000000000base referer rect $a00105.html 210,8 280,32 rect $a00110.html 206,202 284,226 omniEvents-2_6_2/doc/doxygen/a00276.md50000644000076400001440000000004010240666467017603 0ustar alexusers0000000000000015fafe160fab5dd8d3686ee72c42d7a9omniEvents-2_6_2/doc/doxygen/a00275.map0000644000076400001440000000011610240666467017676 0ustar alexusers00000000000000base referer rect $a00105.html 213,8 282,32 rect $a00110.html 209,202 286,226 omniEvents-2_6_2/doc/doxygen/functions_func.html0000644000076400001440000000733510303671737022300 0ustar alexusers00000000000000 OmniEvents: Class Members - Functions
_ | a | b | c | d | e | f | h | i | j | k | l | m | n | o | p | q | r | s | t | u | w | ~

- _ -


Generated on Fri Aug 26 20:56:15 2005 for OmniEvents by  doxygen 1.4.3-20050530
omniEvents-2_6_2/doc/doxygen/functions_vars.html0000644000076400001440000002615210303671737022316 0ustar alexusers00000000000000 OmniEvents: Class Members - Variables
_ | i | l | m | o | s | t

- _ -

- i -

- l -

- m -

- o -

- s -

- t -


Generated on Fri Aug 26 20:56:15 2005 for OmniEvents by  doxygen 1.4.3-20050530
omniEvents-2_6_2/doc/doxygen/functions_type.html0000644000076400001440000000356410303671737022326 0ustar alexusers00000000000000 OmniEvents: Class Members - Typedefs


Generated on Fri Aug 26 20:56:15 2005 for OmniEvents by  doxygen 1.4.3-20050530
omniEvents-2_6_2/doc/doxygen/functions_enum.html0000644000076400001440000000331410303671737022302 0ustar alexusers00000000000000 OmniEvents: Class Members - Enumerations


Generated on Fri Aug 26 20:56:15 2005 for OmniEvents by  doxygen 1.4.3-20050530
omniEvents-2_6_2/doc/doxygen/functions_eval.html0000644000076400001440000000344310303671737022270 0ustar alexusers00000000000000 OmniEvents: Class Members - Enumerator


Generated on Fri Aug 26 20:56:15 2005 for OmniEvents by  doxygen 1.4.3-20050530
omniEvents-2_6_2/doc/doxygen/functions_rela.html0000644000076400001440000000421510303671737022262 0ustar alexusers00000000000000 OmniEvents: Class Members - Related Functions


Generated on Fri Aug 26 20:56:15 2005 for OmniEvents by  doxygen 1.4.3-20050530
omniEvents-2_6_2/doc/doxygen/dir_000002.html0000644000076400001440000000521610303671740020622 0ustar alexusers00000000000000 OmniEvents: tools/ Directory Reference

tools Directory Reference

tools/

Files

file  eventc.cc [code]
file  eventf.cc [code]
file  events.cc [code]
file  rmeventc.cc [code]

Generated on Fri Aug 26 20:56:16 2005 for OmniEvents by  doxygen 1.4.3-20050530
omniEvents-2_6_2/doc/doxygen/dir_000000.html0000644000076400001440000003037110303671740020620 0ustar alexusers00000000000000 OmniEvents: src/ Directory Reference

src Directory Reference

src/

Files

file  Callback.h [code]
file  config.h [code]
file  ConsumerAdmin.cc [code]
file  ConsumerAdmin.h [code]
file  daemon.h [code]
file  daemon_unix.cc [code]
file  daemon_unix.h [code]
file  daemon_windows.cc [code]
file  daemon_windows.h [code]
file  defaults.h [code]
file  EventChannel.cc [code]
file  EventChannel.h [code]
file  EventChannelFactory.cc [code]
file  EventChannelFactory.h [code]
file  EventQueue.cc [code]
file  EventQueue.h [code]
file  Filter.cc [code]
file  Filter.h [code]
file  gethostname.h [code]
file  getopt.cc [code]
file  getopt.h [code]
file  main.cc [code]
file  main.h [code]
file  Mapper.h [code]
file  naming.cc [code]
file  naming.h [code]
file  omniEvents.cc [code]
file  omniEvents.h [code]
file  omniEventsLog.cc [code]
file  omniEventsLog.h [code]
file  Orb.cc [code]
file  Orb.h [code]
file  PersistNode.cc [code]
file  PersistNode.h [code]
file  ProxyManager.cc [code]
file  ProxyManager.h [code]
file  ProxyPullConsumer.cc [code]
file  ProxyPullConsumer.h [code]
file  ProxyPullSupplier.cc [code]
file  ProxyPullSupplier.h [code]
file  ProxyPushConsumer.cc [code]
file  ProxyPushConsumer.h [code]
file  ProxyPushSupplier.cc [code]
file  ProxyPushSupplier.h [code]
file  scour.h [code]
file  Servant.cc [code]
file  Servant.h [code]
file  SupplierAdmin.cc [code]
file  SupplierAdmin.h [code]
file  version.cc [code]
file  version.h [code]

Generated on Fri Aug 26 20:56:16 2005 for OmniEvents by  doxygen 1.4.3-20050530
omniEvents-2_6_2/doc/doxygen/dir_000002_dep.png0000644000076400001440000000074010303671740021267 0ustar alexusers00000000000000‰PNG  IHDRWŸ»­µ‡6PLTEþÿÿ___ßßß???¿¿¿ŸŸŸ””ŸwwYY_;;?²²¿ÐÐßîîÿÿÿÿDs”tRNS@æØfXIDAThíØÛnà à&Òæý_v€h/Úiœ·¤ú}je}r-§ ÜÜœ¸Á…û—.ŠW׎ ¸páÂ…{)÷È啹æ˜ãÒ×Ñv'ÚǸ÷¿î­wWÇ¡¾lÚƒKwOw»¡ÚØ´'·³‹ õKÚæ•Qý}x¯WÛ}ø¡¿ºÛU4gê.\¸páÂ=•;éþ¡$¨<.\¸páÂ… ÷é.ñåƒ wClk6µÅe<ŸÚâ®Û—ɂԷ¤Ü7? M®(iÃÿ?¯/ägw]ûùnavÅœ]Ò-M®yÞ&ºÅ¹Ÿì6ýŸº~x»×¨)<ÿ›àÂ… .ܳ»›$) ¿¬D™3l…K›§qáΘ\ºaÎùŠ£\Á¥¯5 Ž„5®‹}`©Þß±5}7ô—ëoš‡Ðƒ¡óPpáÂ… î©ÜI÷ƒî5ÝoµLuº\G÷IEND®B`‚omniEvents-2_6_2/doc/doxygen/dir_000002_dep.map0000644000076400001440000000024010303671740021253 0ustar alexusers00000000000000base referer rect dir_000002.html 8,8 80,56 rect dir_000000.html 8,104 80,152 rect dir_000002_000000.html 48,78 56,92 rect dir_000002_000000.html 40,100 48,108 omniEvents-2_6_2/doc/doxygen/dir_000001.html0000644000076400001440000000556410303671740020627 0ustar alexusers00000000000000 OmniEvents: examples/ Directory Reference

examples Directory Reference

examples/

Files

file  channel.cc [code]
file  pullcons.cc [code]
file  pullsupp.cc [code]
file  pushcons.cc [code]
file  pushsupp.cc [code]

Generated on Fri Aug 26 20:56:15 2005 for OmniEvents by  doxygen 1.4.3-20050530
omniEvents-2_6_2/doc/doxygen/dir_000000_dep.png0000644000076400001440000000035610303671740021270 0ustar alexusers00000000000000‰PNG  IHDRW?gAIh!PLTEþÿÿwwYY_ÐÐß;;?²²¿””Ÿîîÿÿÿÿ†I2tRNS@æØf{IDATH‰cXE®h•–|ÏxÎÌ9K!£÷.¤¼ó‰/Äß-oÒÒÊuÁ÷L¾¥t¥'ϱÉ;îròR/ÒeË×'§{f~ž2Üç)Š|·XxNòô›¹XgKË’{î¹åzÒ"¼Õósæ’ÊË"•d×®žeþ„#nåú¥æœÉ9ŸŒ(#EšrÁºküj´ÄºÑò îð—ÆSì‰pàÀÿL¼çzKaPU6pàÀøÿâZ£t'Ü0¬M/|Þ¶¹®åe°WYÔ0Mƒê„Ó央†mëÖói4fœ:áåQç ïƒoµöwáå ª†â›ãùu¿ÐÞxMú·àÏÿ+6^l9àuq3€8pà1âY9iÞDc[œf™‘“Ò OmniEvents: tools/ -> src Relation

tools → src Relation

File in toolsIncludes file in src
eventc.ccgetopt.h
eventc.ccnaming.h
eventf.ccgetopt.h
events.ccgetopt.h
events.ccnaming.h
rmeventc.ccgetopt.h
rmeventc.ccnaming.h

Generated on Fri Aug 26 20:56:16 2005 for OmniEvents by  doxygen 1.4.3-20050530
omniEvents-2_6_2/doc/doxygen/dir_000001_000000.html0000644000076400001440000000542110303671740021416 0ustar alexusers00000000000000 OmniEvents: examples/ -> src Relation

examples → src Relation

File in examplesIncludes file in src
pullcons.ccgetopt.h
pullcons.ccnaming.h
pullsupp.ccgetopt.h
pullsupp.ccnaming.h
pushcons.ccgetopt.h
pushcons.ccnaming.h
pushsupp.ccgetopt.h
pushsupp.ccnaming.h

Generated on Fri Aug 26 20:56:16 2005 for OmniEvents by  doxygen 1.4.3-20050530
omniEvents-2_6_2/doc/doxygen/a00276.png0000644000076400001440000000447710240666467017724 0ustar alexusers00000000000000‰PNG  IHDRܺöWá5$PLTEþÿÿoŸŸŸ___WWW¿¿¿ßßß???ÿÿÿ4ÑtRNS@æØfÉIDATxœíÏsÚ8Çû/pÚƒoݦ…ûn ×Ì6 ÂÞ’NÓ…c;ÙI|ìN†Ø·6Ó¦ô´!Ž}‚0àµþ¹Õ“mljƒméYD®¿!ø—xÒ‡'É6–ŸŸŸJOö]¹ªq«¬·Êªq«,Y¸ž-§übHÃÍ‘¦ÆÅV[ŠjÜ„j\lí× «Šû.œYš•Ãmhð¾k…3^qìã[äh²œê »ç5oIÿ”¸ã~7HY\ Ìpn®¬Åáe×"¯‡Ÿ½›Ë.x÷vbV·Ñ€Ù¥îZž9ÿnÑê|晫àZ뺭>n#ó.¥³ ÛX´Ám¶~Û­îŒùÔ÷-ÃeÞ%®¹áÝŠàÎü.9ÞUùm÷*l»W´íΫÛ`aÞc=ó-…=ówÞP}\¿ògîÜŒíeÄÇÅ];6&†»¸ù§·^SÜFÚÊ 2ß›ë5‹Dq©´=#š¥ÃVw¦mÛREÜ´>*Pq·UdPõpg»6Vîgõííö WC³T¢ÐpwVåG#,\%ª2®†d§d!áîÚ=&áàªÑp ®" — ájF¤W™ªŒƒ«!ؤ·¨ªË¸š¸ iÇUɹ¸šx!䩯-&¥ê²8®†PyÅU˹5n1i…§·ˆ«Ë5n!i(…'1\Õœ[㑆SyÂUιb¸R!䩯Í-õêr›_V!äIWAçŠàjh…'~\+€«áBž¸q•t.?®†XyâÅUӹܸf!ä‰WQçòâj¨…'>\U†Q%Ä…«,-®º´<¸ªvS †›c$¹ÜA奩ƭqkÜüš5b*¡ˆ0qéÒ²Ó” Iw†Qè”ï¥qàþ»Ýwbš•ïê,ÜË,ïâ«LWgá.åãúš•á:7.º {L:ïíAŸNœÃ˵çt㘴èK&®/lèîù Óëôì§o?Ú¯`â´¾ÛËÉÙ»Žmÿþö#}ÉÇõ5CkÑ1ÜÑÀ†¿¥ýÊéð'NiîG¶}e£¯}á‚p|Ãí3Ü)!îø7& ×éMxÝŠ÷uTµõF÷JàÚžýööC &¡wÀ»×ôµ_ÜwçT÷éÛ÷¶;‚ ÜvniÛ}O_ûÆoÄI\蟱¾puè™þ¾zæ ñrUi(%çSè`ž_U8™7k•ì{ý¯›§ë8Eˆœ<“îm@å©cbgD'Þa@~5O›=Rm&éômC\gO§÷3i§«É\ ~å׌€÷—¿KÔ–LµU!ˆ¸D/øUÑ*±&øyá—B&P®"]•^ÜVnmÅÍ_9q“Ç5ÁPç°•WIܬ ©)¹®jé«u[9µOÜ-‡o:­œÚ'î–ÃtËV>í7½:ë|¶ri¿¸©ÕYgïWö×pÝku7R¸£{ÝMîÈ ²ÃÔ ÃI”v7nŠÍ˜ñXJÌF:ËùdØÑƒÖpßþŽ\¾øx—Š»|ÃÒû‹ëræÅ%Ýu)Æc)1‡‘éð¶èÁË—µ¹Ý"„¤â^´’é‹àFY¤¥Ä$¨ÃÛR'®¹°{óþ)Ëü31èb×kBŒñSB†]|Þ?&dþ&´D^›XtÛ¯vÛ`ë‰ÑœD‘ȳ*3Í‘4§gSýî,6§mß3ƒ€›â^†ËBB<âv“á6Ésr0<ñztœÑŽî ãô‚äxуhÆîd>™;ÛFŒÞE‰< —æHÆóEîu°8Y9¾-f7Ž.D›n³®J÷ÌOtñ¹gzf€kË¥.‡˜Ôô‚+gî@¬j×?ƒm¡I¼á:y.Í‘Œ!ã;ÍÐ3c"à&ÝËpie^Ý8ÄX}ùÊŠºxḶ=õqie>‡øÓ«oG!®aÛcaÛcˆD¾‰KbÁ›3p-š#9ÿK‡‚Åóë— à&ÝËp¡«úN¿ëñ+óüS:uèãÒ®ê5àzº·ö.mêÆ²M®“Þ-€Ë¼«Ce¶X¼#è¸ ÷2\÷ ÝAÛÕ›°#2ÉT§m÷³{yÈvD·âBðqƒ¶®k»î¼.´Ý;,Þ=¶æh¸ ÷2\v˜ôÌ´íöÈw¤‡ÖÃôå À…àãõº×>:Žãzf!\¿gÖG´:ƒÅÎÉß3ƒƒû£{u[YÚïA$ÓO†ûcmÖEle¨ÆÍØšóve]ÄV†îîÕ…líÖ£ÀÝt¯.dk·jÜŒ ©)1Ä”v!¸üÎ\È„ºA`¸)ªшk¥ºá¹ø¯Šd*øyñ\dU8´÷ålíͽï`!ÎGÍgZ唪¸ Â5 LѶ,S­øçÔ XÌ=nMÍpÔï• 6Î?fMÅÈùù)ø\‘§8O½À0’WB£ópži"R‚‚B­.,yšGÖ"= GVuGŒõø%9ã™…sA{–˜^„‰ðžW6/Ê€iÄÇîàÍóÐCÐã8ߦœ‡Zæy¤åÎdXUGÎ#Kqñnì@~ í–r‰à¢ÞÅ‚‹»­Öñã"ß±ƒ›^¡¹q±»{tÜÔ[Æøpy~{Ë>îf1cO½ÏV”¬¬“ÊÀ%±&çÏ$qcã^£Y/üLi‡,%á®}'¥x·»ž‹ã–'¤4ÜØ/ÿÎÊábÜ]¿[%âÆâùø¸^“ 46šãÎØu`i1m™$´œ³‰ ¨T\²&fó0¦y²rŒn«Û¢¸téåpd’hÐrEpµÀ»¦gš®eú£=ó”&àì'®®ràùuׂ᙮S!\ Þ#Ü;’ôn…p}Åpâ¸ÐvÛUÆíœ|‰áBÏlU7©gÑ]>»’ái¿¸¯‡y’ái¿¸ û&O2<í—/™€jÜTã $P[‚į" Iî£Q[eÕ¸UÖÿ .µ n)P+IEND®B`‚omniEvents-2_6_2/doc/doxygen/a00276.map0000644000076400001440000000011610240666467017677 0ustar alexusers00000000000000base referer rect $a00105.html 207,8 277,32 rect $a00110.html 203,154 281,178 omniEvents-2_6_2/doc/doxygen/a00280.md50000644000076400001440000000004010240666471017571 0ustar alexusers00000000000000cba6e8c0c89cff4ce6fabb1942c033d8omniEvents-2_6_2/doc/doxygen/a00278.png0000644000076400001440000000374610240666470017716 0ustar alexusers00000000000000‰PNG  IHDRBç™%BF$PLTEþÿÿo___???¿¿¿ßßߟŸŸÿÿÿE›6þtRNS@æØfpIDATxœíÝMoÛ6àþ=ùlYcêvIËÖ&º¶f_Ý•Ž+6(> ‹“M¾Í±eQ7IæûçFêËrìÄ?d&Ñ›ÁèbÖzð’”EQd_€êñb߀Q ù£òG%äaB”3¼½ ó¹ò¹ò¹î8²ÿÊmm{Ó÷ÖË ±ÂÙáçãw–¦BB ðu㬔°K^ê#Àçg-ß±Ü.¶F`÷ÀÛ­l¹ý ûGszøµ…A?x7š{øè"Ìá`îeËíOóclï°άkú6éø8jË@¨OPßpvœ =U„c`ð)êÛï0õ„ÓÞçãéa»EP¸ÃE, ÔÂoîÔ4—Ó>4¯O¨o6Äu„âÊ¥Q ™Ë¥Q ™Ë¥Q ™Ë¥!J8©å,¸/¡¦©=¢Ÿhš&âs¶†!æ­äâ!@¨iŠ C ¼J œ(/¹•,B(µ'?am"³’EôÒÕÖB¤¼"”ÜB©ù£Á-”Bn¡ô>¡ôJ~úBù•üô…ò+™SXB E yÆ¡?o†Î-ܨ䇻„úö_=qáf3¬„EC}áæÙI¨­8w‚þJаÞB2©lÜyoKÄCE=,ndß‘%ôÿî¼2 µ•pA_—¦\áôˆþWHHG‹úª8$Üò*–:ÌûøüýØ&NÃåb$4Àru»'Wˆépÿí“C]äjµD8ú²s ußsrH39œ¶#j‰P\-o¹ôÊÔ²IÚ¡AVr¸¼9<»Òe ÞB„Qó k«³.®–ï†g"¼í¼ r … ·]¾®ÎØDHú26óWœ¸/φ’…Û£üïeõ…ÛFQê 'ÙsÚ=Qºp­’¡R9\o†ñ¼RÂõ ëXqaM­ž²¥’A­ýšP£]…õ“v³0[É'mN…U˜Ma˜=iwÁeNê»0MÙD2U˜¦0÷S,ÌÁ+TöN{“]ÅÀ*LRXOXÆmlFaTÉò{ &a”»r€lÂVI¦°, “ÚJ²i ¥>² ÂZ9çÁ$Š 'å„5éW3ëQX(õ9¹mQTXr¡¸°t`QáÃ× ó-Ê;cKF!Îû0õŽ1ïüácUÂJøì…ZB÷O¿É.Ô6„t \éì(¯ph]}Ø9v^¡–Òùal¶ =„n6s–_¨e„Ø\Í ÖÉKw¼·¦»<ôëÞá™mò»ár·P‹…ݳ{S·Ij¹>€Ì 3¯p`þd­›¦w60‹[ì]¾£9ß4?ýû%‡P‹„¸kaócç´ãMß¶[™f^!ºý4õìÁ…wŠ–Ãºí.=›þ çôö´^GÂÿž"Ž…¤†{`t$BÚ—yÚa’ÃùI›íËFø¬C:÷È+$’¾‡\Šúî4C™ÖÛèx·°·Ã9Xë9%·¯>Œ­^“¦­f£X8÷H;üe—°I_Æz¶â„èWÿ’ö["¨õå=õ gž«/‡¯i_ž §îeÔ—33ÌÜÂ<ñx¿—+a%¬„•00<|cSÞˆ¾@”}_‰áÎRé·–Šß+ûæÃÎ’‰Oñ.±úwÚ£Ù á{ƒuƧ<"ó¬YiDfaiDö¹Ñ²ˆóË%yæèË!>Õ'1Ôšeõ Pt5&ó’Œ÷™¥ðšVê÷“i”'ïñH!”½õ‰ˆ'$Aêö1"„©Iñ¬Ü=xDã›Ø;Æ¢¬RO;Ç—9þ–^ü@‚žÏÛYôâ%„÷DÂЋHÔº¨„ ¡¾p£!Þ+Ììì¬?ŽtáòBg† -·Ø=ºpqŠZ0üËÕ³»c« ¤›bw-ºù s ·:Íájwìr…w«9ÒM±»@!;ðnï ÙݱUž;ó“œ]½GÈ'n‡ûÞ­æHH²6‹.Bö £¦pá`Ý¢‹:oBaW1aóú$íËGDvª;ûÞiˆÊ}ëUÂ$îÚQ Yb½š+!S¬Uó#*6¢ãîê&!žúÞ}@¨þê®NC}¡úûÁª¿ëï#ª¿·3M¢Ô<ò '’×ð‰JÝê^€¤Îê=áDê¼£¡ÔI=q>ܹÏgªe¥…²¢aº¡œ"$i|™c(Ê6 #,²…^ð£ 7É(*!OÉ(*!OÉ(„ ûß_Íê?Y¨pÿO²½u&&‘.]^…"Bƒ.r —/ãs:½Øÿ€a›cÈÌ1ïWHŠ†Ë—q:׸uFë²u™cÞ¯.¶ —/Ó€¾ù`˜ПÌó~…tÁr¸|›>Bîüu=zjiÃåˤ¯xÐÁ:VM¶C=tÞ`½ »ªã¾<á-ÜýHè("\2ŠJÈS2ŠJÈS2ŠJÈS2Šç#Ì= ß׈^bTBþ¨„üñ?{Õª}Ì ¯RIEND®B`‚omniEvents-2_6_2/doc/doxygen/a00278.map0000644000076400001440000000011410240666470017671 0ustar alexusers00000000000000base referer rect $a00136.html 144,8 224,32 rect $a00116.html 156,56 212,80 omniEvents-2_6_2/doc/doxygen/a00282.md50000644000076400001440000000004010240666472017574 0ustar alexusers0000000000000087ada0e0dcddf883a76683c8ac83465comniEvents-2_6_2/doc/doxygen/a00280.png0000644000076400001440000003622310240666472017705 0ustar alexusers00000000000000‰PNG  IHDRdl,X1$PLTEþÿÿo___???¿¿¿ßßߟŸŸÿÿÿE›6þtRNS@æØf IDATxœíMsÛ8ºïÏgQÕl†Ëtuªíeº“îxy=/ ·9§ëZËö´ŽÉå¤NÇ«[»3ö®mY–´£bK&¾Ü%’I€È HáG/ øñ@¼<üäÔ3ýG×'à¤+‡¬wrÈz'‡¬wrÈz'‡¬wrÈz'‡¬wrÈz'‡¬wrÈz'‡¬wrÈz'‡¬wrÈz'‡¬wrÈz'‡¬wrÈz'‡¬wrÈz'‡¬wrÈz'‡¬wrÈz'‡ ^ш|ð¬0.ÝOÍ!T×v3d,”¢:0Ð2E\ûb$û]]„øbQ”¡9dí¥Zê1sÈÚJÃz` G‡¬¥" …£CÖNº†`hY5°-«äÊ!k¡FÙßš™CÖ\ ¹¶Ì²¦jÞ”hÉÌ!k¨6ùÞŽ™CÖLíZ~­˜9dÔöþª 3‡¬îˆ[0sÈôÕþÖªU ™¶€†Q3sÈt6X5<Î!Óبj ß!ÓH5–«Y`™Ž`‰5 Î!Ó0±†Õ™C¦.pbÍŠF‡LYps¤¶jr8dª20U5*2E™!Ö$\‡LM¦ˆ5¨Î2%™#¦_9d*2HL¿:sÈd”˜vÑèÉe˜˜®™9dR5íqW—Þ5áÉd Ï£"­(2™,Ó3d‡L"óÅ"–ÎuáIdÃÈô. ‡¬^vŒLëÊpÈêeÇÈ´9Y­l™NLY­l™NTY²Kÿñ/&UŒK*‡¬NÙ•ÿh2’,pU3sÈêd™ª™9d5Ê3Ñ 2U3sÈjäe=¶YO„ŒzαƒL±dtÈÄ¢Èð\8;ÈÍÌ! ç õ\JsuýöÎOŠ‹ûâΧ‹PP b½Dxÿ0ûš½m÷Ý"S33‡L¬ÙˆæêÙÏ¿NÓŸâÉ$dö|×W“Ÿ‹ì߇(G†ÆÙV.253sÈ  D~|Aþˆ2ù×Õ!Zò=>,+û ‘)™™CVðÞ\ØŽ_X+»Dh‚nÑùÜǾŽ×3tp®Ç×—Ï>Z‡Áù}òãEœ¼áÿ«Åx½\> Õü$ùíáäa½ÄÛÑ:9ïK婉Á$*rd^š«Ø\VoNÇ›Œls³9Z½<ß>.ã0Æ;‡ïÑ}ò-yÃÿ_L®ÖËç‹èÃämŒ??­Éoh‚÷¥bÛ6*%ãž!‹xæ$É>Jt‹,oHócŠf_/âps4C³ Y‡á#ÿfèãzù}JÌ3ƒ¤( Önˆëœá}i<,23ÛdµÅEF>æãqTDÇŸIÁˆ¾M ,7YR0> ÑãW²Éb1_/‹‹Y²½€l™ C-ÑÇ¢8©Á2Üü Ȧ(·²%š¬—_Ð×Ê•9dµÒ´­\Udg/âºlš ›L&(¾D«—§c‚lý/ÒÈO=åÈ^L^¯§K´Y’ºl‹ì¢™BÉ8ldQ‹§ °œ™[é´Å¸XÜ¢Õ Â_d_§é­tž\ý”![-×·‡=¬æŸXd3‡L ¨¡y¥ª"3¤bàòS,²v¼J—»Cf^íØÑ2yÉ8DdµO_QUájwÈŒJúô5u…L^2 °ÒÅoŽîIKÆA!tãVÌ8£ë8÷T™HTz8£…©§y2d§6d°þŠòÀ"ÝÞd¸¨ 2H×–h{©GõCjF´'È 35/L=iX%n†  zzŽÌŒ·"yñ)\«A#3C,˲ýlÏ+A¦úTõ™™ë? 52ƒÚ Ôkdf®ÿ4TbÁö- kÀÈŒysÈ`e(?i†˜Ï¶5\dfò“\iX7F&‰¶ÇÈ YĶ@ìk°ÈÌiÙ³7fh¨ÈÌX@˜C+#Èp [b•‹ƒEf¤sÑ+ô¨8d 2‘£"±®ÊEIĽEffÌ¥8±Î!ƒTÙÈ-D]Þ$´J3!»*Ьœ¨e‹°È±IXpÈ UÉ͖Ȫ&Ƌ̆ˆ¬’¦vÈFUãEbMDV½þÛ øËª2@Á"ûC0UÀ!T5Im 2¨»ªÌ!“Ip¬C(NfÒlÿåúŠÝäN®GÙc+ê®\¬¿Z†…ìÕäøÙ¿Åãj1FÓËÔõèäáúŒëQöز#+Qjâ—ipÈx ¢Ù~~÷Av7¹Šßœd/&WèÎO]Nî7÷›%ãz”=V%¹¸3øµ}Çì2ô×·¿ad3ô;NLÍÐG4E©ëÑI‚ ÿË]Ž-©AVƒFo1Æàñ2“fûÚüŽ‘-Q'Ed¬‹yò=u=ZD¶F&+5 í²Yb;Ë5keK4I¾¥®GÈøy©‰Lˆ2³¡!㦇"ûîoLJÓ®Ë^ÇoNi]öÍS×£,²‹-2›—ZÈ-Hµ!²GÈž®ÿ…N¾[Œ‡h¶:¤®GYd³-²?xNëC½ÈS\ª34dÜTê£âÓ¤Zò2]™^ÃB‰™C&>¶’ïªÈ´Ûï*ûY:˜\lõ"´R[ÎzŬÁ:j…C†ŽŒt µïÉ/1SAÖÐÑ™ü¨!+%ÀËTŠ»†B€#•Vhû€Ìƒ/cÍL^•µñé#c6hd)1˜!N&#eÈZ:”02²¤¢¥"2&h ²ÖŽ%ê™ i1Ðz¬ýla,ó‰w þvj© Y–™Y·9¤'•mVÕ cöA"Û¶AÇûóëA¼ ˜+Ášp†‡ äq\eáŠó ШÅ! ™I?`Y«@¨·NqdPÈÌUº 3/!³!Ãfv®ÍE~–Á;Ä¡ 2:ªez/Á½,L”Ç‚‹`ÈòÑ42ÏãÇaÀç4?Ô cZ¦‘E\Œ ')ˆnß‘[Æ7xœêÒBµ¸±îˆGVnÒGEå( •‰Yèf=FÆiÒ›_Bäq‡½Í‰—¢º(w2»ydÅËÞ‚3hN }D&\|`Ùˆƒ±á#Ÿ“¤Þ!«[,b¡`Ì1/SU¯‹ž!«ïC4ßüÈJF[À‡P¯ÉúÍ7òéUoõ!•Dõ™¼Ó×tF’N1ÓÏ•SÕd*e!fý‘!3ë2Å+ÛpG¾Ñž4æ*ï 2å+ÛhnFé˜\~x5ßŠÚ dEQaǸÍÄ*޲ÓèY1Ê]G¦Uw‘Ÿ oª-)O/ï™fe¿cȚ̖ä«7È´[gv)—Œê³”e{¢ÜadúÍéÁ"+¤lg‘5étuÈ:DÖìŽÕ2åÊ {™ì&²†] ÃE¦ºVª+d¢8ȋ۰°u±x™~$îàÖoïüš·.ã˜l•ž^ÚÝ¿?Èš÷âC‘ÍŠ^Q<ùÇ«ô#Áqöó¯Óš¹È¤•YaYýéâü¬—Œ#„ )…- ’û±¢Nµé'ç!cs¿‹YN‘^?¡øÈd×T: KŽX_MN|Ôcf;†¬Ýà¼ÙôÜnnžŽ^  qæ%›ÏçÃN/š$¿"ì†ñ|î‰ÇŒèàÅïü­cFMdùêÑÕ!þ.²–#\d§GwþêÍéøÛ³ðú‡ëï©'ÍÍïØé"Î,ü+vÃø°¹ÁȈcÆÕ˳qü㘑×TA–­Ñ~öÑ:<Ÿ_`dç·hsý_!ú&A†½u) ‹8Ÿª²¬õü²Åâ.œ"ìîìK’}_’æÇŠŒ:]Ä™…Å®«ð…Ÿzù‹ÃÍQì3Ž“= >f‰„ ÙzB §qÿ¸ÄÈÞœÆã÷OØçê(‰ {ëLÃÖHÛ!St»Uû%³2ü?HŠÇ§%Zý¼Ä>„ ²ãÏÃoIÁxŒÅÈŽ?û9²`±¸)xùc³5GUaX—ŸF¸žadÉ¥±FÁ™ÿè'ÉyaæÑX¥m™çÎî kOLŒŒXÙkôxuH‘%ÆãS‡šIÛã›ÌÊ|\0¦Žã¤8"ó$§ÊZYR0>¿"È’à¿?HªS|?&&VÂj÷#̵;>É$ì–qJ‘½üuJê²ÐtsûÙê%ÞvÑÓü8š¢ÌÊb?N¬,©ÙfºÈ¢ÊŽl"ƒ™RÁÂ"Kjü§£Í úŽfv˘´1r+[Œ ²¤Åø”9f¤Ûf‘åG¬ÿ•4ò§O3Z—cÿäWìÀ}ØôФ¥*²¢¾m6‹Lr3]èýÀ·Ò'W?¥-Ƨù‡Òb|þê!Sñˆ`Ô43 ²õe‹°5U€Øs§M ” {?®nS“­‘ZÏ00²UMä¶ÁM唌mäå‚\@2hdy¤]#ƒhÜçrÈ”£l.Pb¹+üê™ð ÷ ¾“5ŠL©É8HdÐkHd£ôlám4!Ë"íøªtØÌREdpSO³h©:D¿N‹$Æ 1|º[÷~<>µsd&V‡GÄ™Ud„>áÜñÒ^"ƒm*¦a¦Ë‰ ­³ô²Ç,u„,cU¹IdðÄð™(ý6Õ(J™í%2hb霦lØÛHð%‘:4PFÈÕ%2Xb[W †/þQæ’ ‹å·¨SdÄ ®[ ##f†3®#dQá'SÈÀˆEågð˜w{ê‘Óß;d Éå>2ɸMÖ˜û†¬u¾FÂ[eã 9êv¬WHåÆÌ ²vÅb¥,,þÚ&h¥èéLÑ~!kžØz\dÆa«ž½õóds¬ Åž¾[FÖ0Wå¸Z®!j_^Åa­uƒ¬Q±X烱¸cƒÀõDG7ù·9•]dúÄ”y!ÈPzkf¢‹TªNi穞ëC ÈF)2+njËò o@¦wmjwÉ[@ÑÞÈÄpŸTÒ+xd:YªS 6 ¿¡"ú“}f SgÐ̬ Æ‹òÑëÌì#S5‚Æ£Ê6¶È¬3³ŽL­•Õf€8‚F“ª¸!E 2Û̬#S ÖrÖ†8õ j[ñgBâÊl;÷Ô®«aÛȤÅbûY66¡2•Y HûŒl#“\sl¬ EÅÞRC{ÔÜ.–edõF3)Ê ²¨„LêÖ®·Èê’5‹Í2ÜÎ/ÆT­¯ÈjŒ nÚ¡dIeV]úRW¥õ™07!ç‰v‡¬.=E&Švb¯ãŒ1ws¿©»ˆÜ˜Ù(â/0«¶xé÷ž"ãf&ôLìšÂ—"Û:cL4Nþ?‡ñLY$@†*Ôè·~"ãEÿH))²q¨‡è–ø}d^ÝD6Y”`/‘qºªL,uPBF-þýúr½Ü\_^_ÆgØIÒÁ-:¸šáߟ{Í¥3ÀHòè{/‘Uhfm ')™C>rØ#u´_œ¯—ÉKbeÿ}‡«7§ÿõæt†c|î =IQm=R4ÁùÃÉ:Ÿ_Äç·t]FVŽÂÔˆn ²¬ùñ†:ZŒ/°C¿ âºê ¿<þÛ_ÏðoŒÏ=le×}Ñ=SdãOãOØ3cü_h§‘•‹Ec]©ü“\éYÁˆ¨£ÅÇŸ~X/“Lë}h½Ñ ÿÆ8p.ák®êPS(rP@þ…øÂx¼![vY™P°ÒˆhlÔ"rdÔÑâ#J Æä#[äV–üÆ T‹‰‚•‘ǯp,ôþbw‘“grš‹Y^—!D-Æ>®Ë|‚,1°¼.;3>÷bѹŽT/;3‹lŠz`e%b&Ç—8a ~~C„¨£ÅMÚbü:M¶Ðã—ý-ùU–2|xÙÓ,~sºÛuY1qfGË%0ÓThÜaų4udä•EvrõÓ®·G5ßÀESÄÔú‰M³>ë5•vÎT/3edT%4`»‚l +nz¦Ó>£òò¹u ­Œ®À®tÛ+úÐLÕ/d…Äš#U`Ñ­(ÊjZ0K«ÜWzZUr ÍJ°]AÒÞ푱™h¤©±·µåœ%[µŸr´Uz_6ª,šˆ<­:®ÃÊ<26¥Ð ND Yák›ñ²ê’lo¤S2öYÁ¬àLlÄ-±¼š¯-‡8‹Ì"ÏÓIOo±Å=L¡‰X¥*ÍÇ(|k;*]HÁ@‘1Äš=X³šBGl©¬*îÝz¶0Ë,ÒkôK¬%0Õn󍿀XŒšÈÀ¦žšDÆŽÌ6'&¬µ¸òj¾A(ÚúcŒvuåmsdÛô4«ÅÄMŒ™F¶íô²-&íZ¬«4®šo@Êý1F†û·E2†,P#Y-Xe‘ñÏR¹?ÆÝFÖ¨©•KÞ¶æ÷55PÝ]5”2ŒÝ,»íY¡¯ @6eþ‰OÆ̬3dÀ¬Š©¡29»$ÅÖIÉèÞª‚GUr ¿€ÊËk´N|"ÙDf'æ €ŒŸÑzl}µÀ “õ Â&†óTÔyIN•™:²ùoëÄü9N?=¬ðë3ýrSEöüÄ{¾,•‹inñ«-HÙôüóßYdqpöß ²{®•Ù‘%#K/‡Ì‘¦u©#[.¿eŸŽdü‚ÑŠ¬Í.:öÒ™i ;ÀÅÞòzùr³X…ŸpÁxñ´X¾yû¿É/¿>ß¼\WÉ«01¿ô)ùë™Ùœ$Ⱥ23ud·áÿ¹&ÈÞý~òøï_d翟,¿<|ºwù|srxr˜ ÛÜ%ö÷Ÿÿþ5ù³‹ÌZ¹˜ÞšÑÁûf¦Ñb¼ûÏAv}ù³ŠÌb¹˜"£}ßÖÍ,M›Š•-/ ²¤‹7 ²„‚åõB«åõ¢ˆì™©Ü,!³hd$|R.Ž:03ud –› ke‹yòmv°ø;ÇÊ^%6‘Ù42œ_Q”Ue¶ÍLÙÃéç¿/ß^$uÙeR—ý•Ôe—'Ëë£ÅâÔe[d·I]ö×äÏ&2+=ÂL)²˜u3ó˜WŽ˜ºìçõ§ûõa¡Å¸Ilïqcòâ.-m·­–‹ 2ÝÉùRG–ꆽ'S‘dvËE™ýÇR ™]#CøÁy,zO‹q3¯U‘=$ÿ?í2;#elQa’¦p?Ñ\¸ª|å¸ibMöäÿQ]Ž¢|vª²ÛøÀqDÅ™Ð"h¾rˆê{šG¶$#el ð `l—‹ååeB÷ ¾rˆê{ZA†ŠÓ³ÁÇά—‹•Vz#~•æ+¨¾'M ¥‰éÅ=ë#²^.VE¸c¿¼z™D&L¦©¹ 3­fg­þ(DÑ 2<³ÀËVÑt’Œõ•TßSYEÜ©(3¡ã}u€¬² p”UÑùããqÎúʪïISŽŒí(‚éìÅ?7 ºª2;7¶Õ5œÛŹø‚L—}úø{PÞu«u~ê¾z܆1ÌÈ›  ã,•Æ3岩w â)ÝøV‚i„,ã%Äb¥ª“8‚ËPÁhij!ou;q1’nN™ùìNFÍ‘ /M%üÀ{,â®™£Þãh뀙`/KÔYç;µo®¿¤®ÑúázLõµbGfå·Ìü\ 2Úö ÐX+ VoNÇÔYçèÅä*¿O]3¢õíczò¾VìȲ¬B«C†'•¶¦¶×Ë­ßÞù5o ™¥Ö‡¢¨•aÇpÔY§fèãa÷øZÏ2wƾFìµí¶~?jz)²Ùäø°°5õ°‘ýüë´&l£È$(DV†Å8ÖL­,¹ú2gëÅbþøýAŽlÙYmû£-²ˆy-)EÆä<ÙšzØÆÈ^ ü'”2 ¥DÒt çv<&²­•¥Î:“sÄ~ ƒŒ{ 0Þu$Ȧ—Iý¼¹y:z‘\ 2œŒì¡ ®¹q}>÷ƒÄ®ÿgq½l'Çl«î™´„‚“YV³VFê2ê¬3©Ë^ÇþIŠì¢!2œ¡"—Lí}X ¤²Ó£;§éÛ³ðú€=lgÈ0 ü ®¢67Ùýæ~³Ä^¶“Zn[u3–a©!¾§–|‚×b$Î:W‹Ã§ù‡ŠlÖ™'ê]o,•»Yóã.œ"\rœ}AÏþìa›E†ÁUôqø;Y®“ØËö”­ºÙžçÖ'¬$>²íRþB]¦$õ=±°…C&l‘fV†ÿãúùi‰V?/ñí&S0ã_0šãÏ~Ž {Ùž±õƒÌÒ<Œ¨Ò/Œ¶8/ÓÁ&_9Dõ=Ó(D5.„×SI‘+{¯)²õ,m~|“Y™ Æ µ2´;F桪s¬;˜}÷•CTßÕ÷ùA!ã”W,2\cýøhî“NéŠ ;{ùëÿ‚‘M77±@‘a/Û3¶êîYTž¿˜úÍßv2š|Ù¶Hy©…@&(YdIýüt´¹AßÑ~¸“/³üV:©¹1²¤Åø4ÿD‘¥ÛxÈl-^ÆÈŠS ¼bF‡8·McSÈfÆë°ú¶Y cÇ—¬Îý°`eêÈÖ—Í"Ø"³T.U<¢2ò•CTß3‹RP™ ã—ŒdïÇÍ"è)û.ñ´|_9Dõ=Q­Ad|33Ò“oY~™‹c51õ”(½‘àüÒ3dÖ\§xS}uá°…z‚7‡Œ[2ömÍgfË´K§€ø¾I‘•³³·È0/vÌ’ïxÒL¢ýSRœþ©ê÷èaX¼¾aÈÌ_ïéÝ2éÇê'š'±Ø»42^ÉØjêé…oyȦ‘å­yƃD'Å"–_Ý ôr,”FyÈF³õß–^‡FfYýÌ»F*Ô¼õs¹`â+tG¥“¬½Ì4²Ú9A ƒd;ŒÒwcùWºÊEY‘ò1ýdYõ–5Ef4+¿º ™’kTjx˜È@^b†Lë¹/ÐòñKP˜ðŠ,BFjê¼wO²´±qøüú ™Ég÷Jåã—€LøÏfû÷Y±±°‡>CÖÕm4‘_¨‘e³ýA‘‰¦´ÛÑŠL¼f±²N|x§òñKR0žÏýëtÔ Yê«^LO ²ú™y]Ö¥™ùø%Aö°¹1ceÆå“=áÕ•—õUuhf>~ÁÈLŒÀVÀ*_¬¾ÊÔâY‡fæã—Ùñg¿wÈòR "|µÕ¥^~£Ù™ùø%Aæ›* –ŒùböÈT—o‘ugf>~IM!C;äR3k‹Lý6ËÛ6P;33¿Ðã×tQW¥™×™ÎÃñd™™_Ý °IWQÖKÛBZë™<¶˜ïÈÌüê¦>!£·¸Þ5}ZD,²Žzóýê&hd@M:®jV‹*® »€L~©ŸQÜä1Å™|N<™¹2$rl Ï) E†”xÍ¿õžÉçŠL´º(ì¦Èš,Ê-"“2ë32sÅ>évn|³ñ“¨tùIBé-2“•½S×¾áº÷22É`§df'Åå‘l\‘šR@ã!ÊÊÂÛ¨–™ dÑŸ*O!§ž¦2:!IYƒfG~hÕ‡f3È’“çG‹Ìdûƒ®cÅ­|x•B¯ãí]àˆÒПÌp‘µœ¶áU]µD#á¸MÎåw´uÏXúIOâuˆ°Èô+ÝÀ•‘µu·ÃAF}!7§_s.³Ê1 ‘‰=õ Y¤^W¶ŸÅE†Ã-Véø6år>7÷§—A|~VóO!Úþ¤«HX.B#‹vÀxIÕíUÑ•D¶îryØÜÌÐćïчÉÛll„¬îAÝàÈLv¡zŠÈ | G HNæ“GRïc)2\0N±ã¸8¼DAH66BVçI­wÈÂߪèeÏo@²àñg»0!ÈfÙ›&È"‹ÈÚ×)R郚à[ ÍOÆ· ÙêonrdV&ø­wÈd%#ذ¿„|j©•Q.SY»ºL|W¬åX¿D8õHà&jÔ"Ký”¬ì|î¿õSdí[Œ¢”ôYm€ÎOk} ZŒ¹•±ú-ëiheâøû…L6/pbp6~ùQmÄĪ\¾™¤n“›!«é4€Ffv:’dÜ‚;Ìr “Z\•Ëjñ†~hv_VSZ€#:¾†PT»¼ôjá"«¶FËVU5BV—‹àÈŒNÔ¬Ekßœ’©f,Ç!^ÓÊ.‘+Èj_#«m€#3;OSÜʇ®CK}c’i™PÂV>tCµdΖ'ÅÕvH xq\XY&ïƒzZßSÛ3d‚Žaø ”]Lo}éKý<2£7f·Éh O™Å€ö+ÕÃ#3ÚýÁEf"O½ü¥ƒåeÃCVŽÁ@žnÚt@L2éiÈÌ9ˆéÈ!dœ¸ÈJ× ‰LÍj±NÝJæ‘@f2•̪ó<>#ñÐ7èÙ©F>$d´[ "Ñet²JZ6[¢÷ÈŒäj¶®½“·²)×½DÆ$ÉL¦zYØÝTeÃFf&2/{í¢dì™Ñ9Véííö»™X²×nîÊÌLŽ2¦lß̤s5 t [@–¡2sYØo€ Y6žÆaÐȲ"±ƒ>áa"+tlÐÖKÆá!KC¯ÞRÆØáMÛf&]ÝcbˆÓ|•Qd…iëf&_vÐ7dy{´vFc+•J&Ëf6`d ‹`ÆP¦äµSÄÞ’‰¨º‚ÝD,BÉ—Ðõ ©“IDATë$ÑDD£j°VÍLÚ`4‚ÌÆ½42ôÔ£ˆÓÞ°jfÃCÆÎV7±bƒ÷ø « a#3ψۦ·ˆL¶‚™XFazöÇ6tø'U eMCGFçf m¯»Ì®•›™r¼ŠÉ<2”?á¼ÍC¬Sd‘¸n×fªñªî§p»Ù;dQæEl£52¡ûC"áOÐÈ:uúŽ,s‚×^ YW3 ÍÌ!S ßÛ~$¯Ä%@+ddEm}[F4£Ñ!S ¿„ŒzJiƒ {Y”>¬¢ò;…è)Èã!óÚŒ*7Ëefz²â~ÕÉÐUõYêÞ†fÉbq²ûÆG½„³õü‡Ò<î²?öRY7óŽYg÷;LÞáÒ6.²?“-³Éñ!»o.ñö’øbrÿXÙáûôXed ¬­/tÖÊ6×?†«—gãø‡ÍÍæè>‰+ [Y-{~Råp5ê!2v3WÖü¸ §I^=Þœ}AÏþ—ø—ñ?´FA8C3üvI>~ŒýY˜=“tÔF4ˆÇq¸9JÂ}½×3ì‘#›e^ØÕ)MB²ùŸ@Z>-Ñêçeü£ôøýFFßâÉb1ǰ‚üùÚêVFÝ"1cfe‹~0í·:~•#[ö™BOtëØ;™XdÄÊ^£Ç«Ã8œ.4>öÎ<ÃoØÊ–hRD¦>ÒÆ~nci]¢ FkLéã?Ñ5EV\p БáºìÇÀGó„Ñw‡Ù EvÒºìuRˆ1ÈþPwKk1ê6“µ²Õå?^­^žŽ“ãK4}J‘m4‘©-è²í| ²¤Åøt´¹Aß%PÞ_èiþ»iÆo´Åxˆó“-Õ˜ñnËÒmÿw~˜ÄŠC\Ý “«Ÿp_§ñÄ!#ªAVÔ·ÕM¿•{D´T›\Ú‡µ2¹”ö+,ª—ÈØIÞ©8Y²¾¬nË=þ²ÂÍ9³ª‡ZÆÊ¤RAÆIOFöžÓí—{üeEZŒ²¼/'ªÐQ&×#S¹l©ˆW‚´ŸHPϬÚ×Ïv Ë¥²Ÿâ:Ç~"«ÖÓs?j™UoØF¾\Èd÷ýDV½@VǬš¤ÔA> ²,‡L®¼÷CœYÕbÑAqY¥g™ðÄ«mlÈ™Wz©‡ÈòùdSOŹUÚžÁhÅ+MUžËÈ”ú5Û*à Äâætp:v¯òA ‡¬´d«!‡Û¶ÏP‘äáÉd"üÒJÄ] 3½¶'k.š¸4xçÎÄcl©™ÇýÈU‘¥ó ã…¹M1/¨l´ÃEfÈ'Lõä·sMŒ¹aWš*ð§·#kÈ̸¤#3èh˜ yÈÈŒú¨e” E›ˆç ‘å]ÞF"*šÖœULǰ‘)Ën{:L©˜_ÃFfʽNù«Y/Qíת`‘Ñèì!3’—Qù›Ù”Ó0pdf˜yÅ/f½ûUR0LdÌ$ cÂÊ¢2[qÎðÈL0c3ÍðS_8gß2ӽ¥©Hð̘Ø'f™ÒœòöŠxo€Ê×i~è ÷jÛdðíƒ,|³®%åÃ^ g–wxMŠ Dßd&Ý.~ê8Duðž ƒfæ¥]TÖ:ÙdG‚"«Nâ5#N»–Y™¾øÄí\éeÒKd¼U= ‘¶í ™Æ,ײƒ òö,s4mYM¡°?È™ŒWÊuÅø!c–7™æ›’@‘¯ŠUfʃÄ<Ê‚6véÕ7•ö ³íìmSÈ$ÛýBÖ>—ó¡ÏX:d·#{†¬ííÙÖLuVIÏpßµcƬ¦ÉÏoïµaVœ³k$ g·Èš3+4^Ì S9·=DÖ”Yy¨d(YÈ,ÜI×#kƬ|ƒ``–ŽZV‘Yëü k’Ý•IðÈC(2YLÚù]=™j€{ŠL7Ã9»CWeÊg´¯Èô˜Yx2 úùì-2fÜ]A F)Çû‹L=ÏùÏr„L†Vwõ#SeÆß ™ÞÃ>#Sc&Ø ™æPÈ,t~¨^ Ì„LC¦ILï ‘ÉWA¡‚!ÓvÝwd² ‹ Ò¡=P¾÷Èê³L\pB!Ó_ìd™µŽ|†N ³zÇ´éhpsç5œü3õ£Éí¸C†„Ìj‹Ldͤ{ô™dð¥$þbÉÚó„@Ö¬ËË!£;VÏ©žX„Ú§£éà¸t½@Æq®Q–í‘5ö=á¥*å ìn©5²æž :@f£‹QY1¥÷·j…¬{‡l+&¥4Ú!kå,Ä!c•e¥ÚŒÝ¦ùÞÒƒRV;Œ,ÍMy–¶Y]ÖÖCVÒHÉñ[sdí”9de)åicd.¯²²F*ÙêmãЈ@‡¬$²:Sm‰—62¯rYQé ™,s› ƒrµé”ßBKò·20ÇEÞÔc²µ6‹µ‘z³µ‹Œ¤Ò"2Ý¢«¸€LæàF=ôÒ7ªCÆTYŽ$ž^¥úÖ™mÈì JëEÅë AÓ@&æÞPY.þÎ|QEsȶÏX¬f»âä>à±yöY­5”¡© 3a`LäuÚd²ì-Œh±´t^"Ó½“Vé¼g¬F†ÌL‰Xˆ¼Nàþw™êB³l¿d YS%b!ò:í2õ,ñ‘X†Ÿ'Bâ‘îÑGdzýUú%2eÑY‚•Æ&Ý£ÇÈïu›†ïeìlÁb#¯S‘y…·z5_É`—T)ò:õ™R¹Øb%CGÈ쮕†Z㣠R‹¨ÍJ+ÙGf>¥êUY«• {‚,Ú)díV28d ‘ •xš»?UŒÀŒ†ˆL±*kÞI±WÈáë¥ql_Åj½øÄ!ƒŒ)ôÍ· ³Vþ‘)ÍãjÕu»_È"KÈ$éj×ÙîKYËá‘ýBèaM’•‹m´2è$Y­‡ ÓÐ;j2Y„$™Ù~ÐxÏúäåF€êS0ÌïGP›— ë¼Ò»]ÙGf:¡µã;0OãÜ3dÈ3ŽLld@ϼuÈ€ÃszJñ¾!ƒ|Š:/xq’ÀbŽJïv5ØTÈLVfü<Ÿ‚…çµ/hØB±M%cÈÌ]›¼M\!{‡Ì\B9ödd]Jf%c'ÈL%´ŠÇ@¡ˆåq>YSÈ’8Í$tT¹LU›{ˆÌˆ™*‰1¶X/â|²¦á «”·† EWõ“5uƒÌ@y•‹[K·öKÆŽÁ_œåëÀè æ½Cfbùí¨x,IðÜ–Ô2à”bBLRL; `ÏÞº™u… 6¥#Th˜51T2hÓ‘ÕEÎU ÚðÃá >ÛPÈfÍki”Šl˜ÑF„:ñ™BwqRFéÊJK®n<áóêÐÅ™Y Óšo¢B<–ͬ;d0gvÃLZ¡VÊD"¯æ›iuˆ ââÌ»8<‹&†ÊìšY'ÈÀVôo;¥<‹&†*çnÕÌ:DÖ:¡L[ÃV³#¯ö«Õ¸«2ˆ,_V´h¤?þ¼X,Ó¬šªf›ÊóøŽâ®È,2jËÆ!Ñ# {ó娜m*fö¨¸M7îŠ "ÃOä#™Ý v­Ý92•3è5²mOõòÚÙÈÈPŽLÕåEã f¨ ²Q±{Ñžªƒ¤‡ Yê»e]f½XD¼«DzBæµDÖ1žaËΣßȲ&cên¾]óèœôÄ+‹…ÌèCBædñbq_ØiýöÎ_WiÉ/ùÖ¥é†"qc1£5n¿‘Ú£E6™„ÌÏáÙÏ¿NeÈþ°Üë‘K°Ä†¿3mð<‡ä­‡ÈÈ)ÐlÃÂqø¡2dæÿ ¢ÅOšÚ!+FK­,Dè5 ÂÕbŸß£ëËK„&ë‡ëñæú Â[’èàž Ã·Gv!Q¾q»ÎhùOñl®/q*’W¬þ#;GÑ‹ÉU|ø>ùŠ·®o—ñ8ù–lI>®^žº•9ê“ÈÇç8ð²Åb‡?¢ú‡øA6C³ubzø{ò17GÝÊÙ‰jŠäQ¹Ï“£xâ „SÑ?dÅçV¶úy¹^,æYRt'µÖìñûƒ Y°XÜкl—‘¡25ÙãO?àT ÙæÇÃäË„"Kšß`8±çV†Öa/!^™M6?¢sœŠȤQBV¸T²FþÍý¤.{M½$üÙI†lõò4©Ë.¶È:k1jÅ\(ýsœŠa [,nÑwIá¸8Ä€¾NÓ[éÙÓüÃMŠ Ü&-ÆÙYg÷eÚÈ<Ä´oÑ×)ùÖod4uÔû¡ÕOF‡˜ z?ºBVˆ·EcT]mkGZÈÈ«C–YiQ[’þ•Ò{dl’[õä{Ý0sÈ ?äÙö#g©öq˹Æ‚s¥}8dÙ‘æqÏ—CÖLÙ<Æ]˜°#Sÿ‘1¥Y³ÙÂX]ÍFMÍÞ dÙ·³ŽîQ‡È€¸w>-ßž‚,!Öíâ‹2ìlÝnwã>"ƒM3î¶ÊÌ!k~–UfÕu‡ 8Í#3îÌÄrÈÚŠ˜™Í úûˆ ÜõN‹½ŒtÈÚGžÐc¯:ÛGdЉ¦ÔÖ˜uÖd2jfÖ²r/‘—Œ4@KM‡ @™Ûu;Eã^"/3ïXV˜9d áeËC­0ÛÕY¯F‘A_¨ù,+à„—%ÇFd/‘Á—Œy€˜9d ámíÖüˆgWín‘«Ì…6ˆC“ÓÌö™ÁÊ gæÁ„WÈLj7XsޤX{ŠÌdeFTm…¨ÎM–ï×Q“qèȘ™Äi9éŽ_S‘W 0céy2vÈƯ'ÀtiL¤ç×!|†Ÿ L+ueìµ82±C°u懬£&c×ÈÀ+3qç"…æe(ˆë?ý¤ï¬{Ni\MN°½‡ŒW™¥?evF5Ë_°ô;ywÈä225ŽÿS±`,#£2¹ Óí ,4ò®fèàþyîŸÏ/‡ùèë¹çì¦ýÑ923³kDP<½9aW–3tÿ¸$È+{ØÜ0î9²Æg )5dÏþš8䜡p=Ë‘!M÷œûŠÌÈÔüqHrÎÐñ«Ùñg_Ï×£Cœ 2behÎÐ4a‡‚ÌÇ£Cp zRCFë²Ó¤.›>Íbÿ€ ›nn.´íΓ0X :øBrÎÐÉÕOOóO ²·¸Å8sÈTd`nà:¬ö°; ‡lÎAK™ d°)wÈ,œ02Iš‘uÓÊßd°)wÈlœ¨™$Á9drÈt´È@“>’6õí52H3“!ƒ”C¢‘ÅÆ÷Nú·ƒ òruȬœ02kÖ>#L;Ê!³ ¸LŽÐÀ"9dmã²®]A—x’­’±‹Vþ‘á$9d–x‚ÌV‰µ×ÈÀ2™.Ö´”—H@hpõêYWç*õ™³ ‚Êät»ÌtÈ@Âñ@ƒ“Df%½(í!ƒºb3Ÿ:V À!ƒP†ÌJnî92 äçž«l˜Ùž#Êã™ìtÈ ´õgÁóé¾#ƒI?ãÒÏBÑh¿•¿SÈ`ÒÏ ³`€XÇ™ü¢‘û„ç’|ÅØöˆU|r™©<3ÝWŒÍ!ƒ¤‹¿Ø\_&oþj1FÓÿWpÆè©«}‘!je£Evÿ¸Œ/αÆ“+tçc+Ë1î02éEmY{3“#£‘p=‹/vÂ8C±Ã8Ö£C¦!óÈÒ‚ñøÕìñ§Ðñç¿-s4Kë2‡L_­3¡~¥È»zDçØ ãM²6jkfRï~2ìˆñ;a|1yM]8dÍd ÙÉÕOy‹ñ0Aõ–uÆèé¨m.È"vX9dXY½vYÛ’Ñ“æ£C­–ÙàÙ8‹¢²Zí"²–%£Cfã,Jj—ž4U¼Z™™Cfã,ÊjƒLÁàÔÓVqî&²6×®Mç:ÙV-rbèÈäië%²!»=ÝUd-ÌÄ!ëY‹¬ˆòrÈr5ÏszäpÝŽ9d-åmÕ8/"æÕ¼²­ç¹CÖSd–òrgžv†¬qž;d!kšQ»ÃEfSòk±3dMí$ËE+f¶‹]ŒýEfŲ‚æy~˜ìtÈŠj–Qåƒ9uP•í6²f²=ʼ 8de5ÊóˆóÉ”²²åsq3ë *82ãFàUÔ$KXN¦³Ô!«¨‰™D‚ÏÔEU¦g§Èš\Æ…4±>ÇT¦ÂéMsÈ8j’)žà‹Ê„Sž|µ˜,iç‘5É•Â!Ì“±2;j`fÅŒ$Óë=WIä+ÆdG»¬A¶”Ý1b?x8².ª²> ÓÏ—ò#oD˜9d–Ôõ]åÙ“vÉXMëS‡U€‹Å¸²9Ù®ä3®‹ª¬È´¯e¾•¼*²'4›LØ ¿Ó7‡¬¥´s¦â[˜úûg×÷ë.#Sˆ´{dÚf&@F{BV‹Ãàüáä=\Âè5 ÂÕbŸß?Ïýó¹Ÿ ;¿WðÌØIUÖdÚW³`Z0~3yŒ??¡ÛÇ%EvŽ>¢“«øð}òõas“ ;|¯à™Ñ!K7oj‘Íлá34#Í?Äã0gØ;c‚,Œ'rÏŒY4ÍL—YRG 2Œeõór½XÌ)²ãÏ>®Ëâ‰ÜY'UY_i^ÏuÈJV†±l~y=þìcFʇÌ#‘ŽLµh4U2j(Е>ùâã‚qÆZÙÞ S½Ì ™™.²šO¾Ld¸.»ÐF¦˜¢D¦˜i†ÌLkF]rC9Ÿûoýn1Îö™jÑhÄÌÔ/„lÔÈó+¿ýÆt‚ }@¦xîFÌL)ê(µ­ôݯìðÍäûuEj'oÂÌäaFYIXj~°Z-Þ°_Õ©^‚;‰L‘™3«’©¹èÞô‹/ u©¾dÂKe»´—=º»/ u/©5AÀKF~®EZ¬|Y°jÈTS³«È”˜›Y%ÀrQÈ•/ vO)1ã¥2^¨I^Ä- ¹òe;(!S¾þv™ÊUÇKf¬:o·<8Ób3õtÈTš3hÌÓ2.`)_#;Œ¬!³ÆÈ"•zËœL©¬¨0k†¬+ÛÊ¥Þ”Úidš ÚÈÒ¢°«õI©ÔÍ{·‘©0+Ÿ:ȘŠK±“̘ƒ¬3Š,>Bè-gç`»[±(옘†ï:2¥¦~ºMvŠl†Ö¼[¯YT¸¢n+²a!S)°Ò §o)²×èIbeŒ:l(¦Ò8G¦VɬÅi÷YçÐ*͵²díÆâz¬ch•F~‚ìnòºfÂdÔvðtÈ:š“8ÚŠ½•N%-Æâ„Ij†ï-4dÈâ ©-§ü«J‡à÷Pa™ùçOT1kÚøŸI>$dÈ€ïŽméǵmO~ QÔ¶Î`«)Ù®äÕ!Q$±šC´ãrÈ€ÕØ0²ÞÉ!ë²Þ©ÕÔS]9d½“CÖ;9d½“CÖ;9d½“CÖ;9d½“CÖ;9d½“CÖ;9d½“CÖ;9d½“CÖ;9d½“CÖ;9d½“CÖ;9d½“CÖ;9d½“CÖ;9d½“CÖ;9d½“CÖ;9d½“CÖ;9d½“CÖ;9d½“CÖ;ýW‚]Qh"IEND®B`‚omniEvents-2_6_2/doc/doxygen/a00280.map0000644000076400001440000000060310240666472017667 0ustar alexusers00000000000000base referer rect $a00138.html 398,118 518,142 rect $a00094.html 198,514 313,538 rect $a00118.html 406,214 510,238 rect $a00116.html 651,732 707,756 rect $a00126.html 379,166 537,190 rect $a00122.html 181,269 330,293 rect $a00136.html 639,364 719,388 rect $a00108.html 419,708 497,732 rect $a00091.html 418,564 498,588 rect $a00081.html 638,168 721,192 rect $a00120.html 399,364 517,388 omniEvents-2_6_2/doc/doxygen/a00284.md50000644000076400001440000000004010240666474017600 0ustar alexusers0000000000000007bb7d02906447dc99ddebf4815e16b5omniEvents-2_6_2/doc/doxygen/a00282.png0000644000076400001440000000223610240666472017704 0ustar alexusers00000000000000‰PNG  IHDR4Wx¸¤ì!PLTEþÿÿo___???¿¿¿ßßߟŸŸÿÿÿÆ\²štRNS@æØf+IDAThíÚÍs›Fðü ºúè™h*ŽžØ­tlš±Ì5NÅ1J¨áØÌ4BÇDr ·J°{3–€}eß.ÂãL>Ö̈bÑoVoÑ®ŸŸAk˳§|½t´2¥£•)­LiŒÆH•Ò,­råŽV¦rG+SùxixÐr‡§ä…“CúHå†i®®gÞ„K}¢¶„–?è JkhwZèÂ`ž­ÅþX…Ð4f˜ùs~„áf@4N ˆ‚‹TZäD£ ­­¶\qÔP®`ƒ{x„áæ©¾ä´×úy4ìª{7gf4rѹ§™Ì4Ãd7]xÏi ø y4kÏ 0q%Va;2€™/ÏRšNˆÏin&2eÑÞÿ;¡)(¼Ú¸o5 zÒj—¸H¤éºÉô§š „ÅÍi»{Ú©~Òcíy4Œ5%p+ÑJC5¹å2s²ü%¥a¿ ©XIí¡U*w´2•¡õx©ri·ÙDÕ’V»í¶Òæj ='|ÝÛ¯W/[ê¢ñ–:¹}]5Ñ*Ìeé>èO W¯gŠ\‰ö¸¬†R™ÖëU¾U4Dû¯½4>¨o1­¡r ùÿ„“ÌgúqÚǼ€¿ÆÉŽ“[I¢}™}ºÌÒX uÿÊÐ6OA£„ÜähéÖHÉÐÈ“Ðü©Mû L‹¡ó¡ÃøÎü]ìô-À3›Óéï$ÒV毶 o&Ûß!Í›ÝLèKòƳ6ãEìL”‰‚´híéX#‰4²þ=4{mÄäiÔ^]Ñáš­˜;ôc‡$˜·ž&±Õé †#ÒœÍRÛÃ9?:ЈL~–ãˆæ¸o5âãž; —ÅV“Jó¦Ÿ.épޱ¶ÀX{%bm1¡6•"bí@[I¦‘?Bk*¹¡àï¼ó7Yµ%Ó·,ÿû[­§Iúy÷ðiýí¶­ƒ¢6×zí€Cc¶šfTb²W³¯¦x‚ÊLF«ÍõÄl¯–?,d{Á¾STš!'ÕëùsÌÃZ¹ËÖG{üÚ«w´2Õ–þägÓ¡¡›T¿î³+ÅLŸÚ]ÿíY–FShü1CÛ= _¯s´tëÊÊоR½aÚDn…ÍVàÙ ÿB`cõß,]cæM<<óµbB´YZdÿl Úŵ¶Ö—Hã™Qö>ÊîbꚥYHã¹ÒBB´áº}í š¹u\#gF™º¥ÕÐ5 yðüU!!Úp«Ì ÃŒ‚4žå©2â1ò´‡ цcÍÃYãûVƒ÷â9œ=Òjù„h³´`ñöŒ©Œµ)ÆÚ¹ˆµ©ÆÌ+KÄÚVLˆ6kúÊηr=t…myÊ;ïàs–VLˆÊù¡2ŠÿÊñíêGO ð©ühõ£yTªÞÑÊT?FZK¦ÈÍ”ŽV¦t´2å»JÐu9IEND®B`‚omniEvents-2_6_2/doc/doxygen/a00282.map0000644000076400001440000000011410240666472017666 0ustar alexusers00000000000000base referer rect $a00093.html 177,8 299,32 rect $a00137.html 175,56 301,80 omniEvents-2_6_2/doc/doxygen/a00286.md50000644000076400001440000000004010240666474017602 0ustar alexusers0000000000000046c3eca01ee2c65c8827f29d9eddf300omniEvents-2_6_2/doc/doxygen/a00284.png0000644000076400001440000000365310240666474017714 0ustar alexusers00000000000000‰PNG  IHDR?t˜‚N‚!PLTEþÿÿo___???ŸŸŸßßß¿¿¿ÿÿÿ/l:ZtRNS@æØf8IDATxœíœKwÚ8Çû²œÙNO[¼ìt˜Â2m“I–=)aÙæ01ËžN&ñ2mÃc7<ŒåUÁ`l}ʹWÂ`RŒhdÕ¥œ"ùêþ¥W’ÔØ:ûú ïì¸@3€f ̘$0H`À åˆH4µ=5€f ̘$0H`yòœik1Î6Ž´°Šø0/n/*ãýt[ùr±ÀÐ!Q³™æ2¿vûäfüCú“ý[X´œ8óbâ÷Ã:'äÈ êOiÉ/Ž`Š‘AÁ‹HuD‚zÁ _ÔÏ¡.B¿f·þž*NH1,õé™÷¯÷ä€ïº£nìŸr@]»{ݯÜ&½˜D~©HJðÀ\ñ § ÐUãlÔ‹7ßyñÛ½Ï (Ƈßò[l‘>‰%¿Õ½ÆÄ@$ñ#i·P«g·¼èœ¼ôFÑÞbS,GüºMÚ”Ú PïòcâwÜû·ÊÁÚsüOžÞôÃÞÂÅ÷. ß#>ñZ)&~oý?É 1 z¯÷nóK€šÍ–Nú•FO±¾ÝVnÆþ‰ÕâkPa܉7?xqgïi<(ÞYƒÎú6!Õ Û¼œdÃb'|lÏv1ëÝ%ÛÅÈû}$ÉÔöÔ˜$0H`À @3€¶K~μºæ’JÛ@m­Gˆvå|Ö!]Wc»híøE)¦ÆvÐP8ú¡$˜@¹Ì±´AvlÀP¾í  ºÁà`@Ò© ¯ò"”h¤þ£„ôÒñã?„´Òó#vù„tÚöôëÈ&¤ ¾ÏŠe+é¤óÛ’sU ½ßè‘»Úé¤û[sR i¤ý{—R ©¤ŸTBÊåÁG&!Õ€òá#ñ·Ë8 ™¿¸l?m"ÕÛïhõŸeÔæ€|I¸UXœz­»Ÿ±$Ô6€Ú@Ûh@mH tNŽ×B?&¤³²!ŬŠÐgqŽ×놉ÞJ¿p÷€$õ3|îYK²ö¢`ϵS€ÂOµçõ…×j©"’B\ûûŲ𢂠ßÔ Îª§b3ßÕ~·ÔZ*HV?ÇÅ¥ë¡?ZFsí  ŒÿRñÒ²©"¼°ï^I*Pønœ,Ëðs$«Ÿø"u5\1—E¶íJ¿Ð§ý–© J‡Ô®ÄŠ+ÚjT<'®ãt€”+ôaP]¬€ðî¤Õ¡%Ä ë´ÔÅ(XW ú5©ÒRÚ±¾`æQ08>AZEÞ¥?kœHV?ã*£âÆ•.èwqŠaˆ+Ìê•S {âÛÖ™uF»SŸ Wèúkí&._ÿþ¤=¡x¾¤=çYí0xt;mN±‚)U+!´d# ŽÎ-| U¨3éLü xaõˆÅA?ˆÂ‚ÃtFG–ú³Æ€dõsÒzUgE…ç#„!غ¸Ň cÂÅo×_Aá Cú³VÉT_…Í*mDU¬àÂ4„–1OçiÛåUÈÙH&§ƒE63?ˆÂƒÇuЉœ©ƒÊ¼ñZ@Û÷“NöYÔàyëÛ,„“ ˆ§nJÞ™à‘âŸ&fÂ?;|ì80mÓ¥OmVJÓ?Žñ?ŒsjC;¯â€lBÚîúA” Óa‘g×N±íû9Äc€pÊ2ßg]ÈÄ¿;“We¸XãÂΤ½fïÌg‹^ý2Ý)Ä8§³$`Ua’A°æ¤1¿TdPU˜A²úÉ—¤0A,D& ¶}¦…kµõ˜˜‡\xÌm& s{ü×€Æ ^1ÜØá Î'ؾqÁ)æT𠱎&kó{–ë 3ÂV| Ê$«ŸA¶y,‚<ùt¸;€-Ïí.}ïl4 ;,v†ê‡°8m.\øâζ,~„Èe^á€xMv1æ7 Žx‰'—3Ç,@ÒúùÄ+cqi+¯t/ ¬û·ÝÈ$Ýjd÷Ó¦s +´·t!84om’e÷S- éÊÛ u HÆ­S–É´¦ŸÁì™Ø5ôКk›»y¶$Ð6€Ú@Ûh«þdU‚¥:œƒvÞÜdç͘$0H`À }ý¿,¤ÉT»àIEND®B`‚omniEvents-2_6_2/doc/doxygen/a00284.map0000644000076400001440000000011510240666474017673 0ustar alexusers00000000000000base referer rect $a00068.html 8,83 320,107 rect $a00069.html 344,83 568,107 omniEvents-2_6_2/doc/doxygen/a00288.md50000644000076400001440000000004010240666474017604 0ustar alexusers00000000000000a9d972c90ca847eee8077e429b2d456comniEvents-2_6_2/doc/doxygen/a00286.png0000644000076400001440000000174610240666474017717 0ustar alexusers00000000000000‰PNG  IHDRâtjóº!PLTEþÿÿo___???ŸŸŸßßß¿¿¿ÿÿÿ/l:ZtRNS@æØfsIDAThíšÏSÚPÇý¸öÜiMŽí JŽ:jõj G¥±ä¨LG9ÚÎp«!}7M¼ý+»ï%È‹‘Á¢o™¼Íwß'»ûò†¸jÛPDETÄÿ›K3¶ qŽ.§)¢"®‚Xƒý±+aàfž8Ùõå“_ö¶3öéܶ'†8 ââÙîƒFwŸDŒ ñw¦4÷CŽøãÁ £»O"›8h×+`àéTUšdëN:¯Ü ×ª„MîÐQGΈžt+aUȽV"uÝÒ-ô,%Vð?Û×ܸ¢,‚~»tx{Žtи|3`Bž+Ç”ˆâèbW®œwöhp(Ss‚L=xHg»qÕIºBþŒªNi’èKÂ”ØøÝº>¥ž:ñS»ù‰råÌû{Ý´Sb³ß–µpH!xø{˜Ÿ(ߎI¢mÛ6©e;)±—ö1jÑÛ!È[Ø»ËO”;Àt}ÜËÒ¼¸—­UÜ Ô‰Qµë/B÷ò—aЍˆŠø\â"¿}ÿ,õò"v›707±ðî  +&Þ¾ bÎF®±ðÄœ\âm!wY׆ø;¹"*¢"*¢"*¢"*¢"*¢"*¢"*¢".ƒÈŸõOЧ˜"*âz[x9¾r†x77ª…Ç&­–èļl–ÌÙžG ¿»ÇÞ8Pc®;1„îhž¸ºùѶÆDÐ2çÍŠªšEˆƒŒx$|>—}ü7QîÓ}ìÃ1å„–ëÅÙZ•;€X«¤¢µ úiF”>ñâDAb,D\…½Vb™£Ýîµæ¨ˆ«"®ÔQ×…øú1ÆwÒûh=IEND®B`‚omniEvents-2_6_2/doc/doxygen/a00286.map0000644000076400001440000000005310240666474017676 0ustar alexusers00000000000000base referer rect $a00073.html 40,9 186,33 omniEvents-2_6_2/doc/doxygen/a00290.md50000644000076400001440000000004010240666475017576 0ustar alexusers00000000000000967e82278ff8ee49f662af0ec44a2164omniEvents-2_6_2/doc/doxygen/a00288.png0000644000076400001440000002337410240666475017723 0ustar alexusers00000000000000‰PNG  IHDRæÔñïr$PLTEþÿÿo˜2Í___???ŸŸŸßßß¿¿¿ÿÿÿrû˜tRNS@æØf IDATxœíÏwÛ8–ïsjõΫU¶M?¯ÞéÚNNf¬e¥Ž;ÖÒ©8e/»ÓÙËŽGmrYí®q´tUâH›é¶-ZÔ&±eQ&þ¹Á)þþ‰ßÄ6‚ ‰ï@‘Op§ªõåIÕGЩƒPuj B ÔA¨:5P¡ê Ô@„¨ƒPuj B $‚mJ“ìC««@¨aI5W¡ê Ô@„¨ƒPuj U¬ƒÝOÓ0épö’r¿_ä”´Rátçý'?íÃa0“·îÕð¬+âS°¤ */è_F8“÷qŽ­I¬#XÒH„KŒÏ­éøOæ±=¸"îˆÔëCÏ2ð{³Œ/Iš§™$Þ^îaí¿Æ1Éþ8JÚ©‚0' ÖÕòj9·ûËÉòp±sÚ»^ͱað1ù7¸y‡!ñf4ÀoíÞ Ù;KUÂþÙº­Ó†yd<Ûúò €@p³ÿ|@o±­¿¶°¦Cö‚¨î(êõ{ k¦9¡V?½¡ùމ8‰‹çóÕ»)òæ(„·&+-Ý€4ŸIš¸|Ý·GvAŠü.jÂp¨Û—ÄýŸôw4rÚ„—¿œõD<Ù£í‚ùƒµH›Ð_LHGèšvŠÖ½£ûñ¯n"~‰ïgÏ&ý ë ª»mÁ­B ÔA¨:5P¡ê Ô@µ‡ðõ)’V`]Uo_Ÿ!iÖU%>üõôwÞâ?™žýúçÓ§™‚k:ð‰}#Uœ²S¤f—©*BÔ­ëâU_ma22K.BÔØ!À¦ÌyK•LÐåA}FÛ²ç­B_%XE9m‚ü•#oE5ˆÒ  ðÇ2öZ¦„Üf9 ó×p­·qLe@xõ?í„*æ˜J€#³P¥ËhËê«g§mXQ(¥Õ@œö BBçæ«¤îuÅÕT !©ƒ©ö@]ô•ÝÚCHìäoŽûj!¤ ´R’Û&VŸ¤BÚ1¤¥·Nl>I)„´#`ü:¡b1•R¯‚M‚Àâ“BH¯ê‚Àà“ÔAȸû¹ar}’:ûÝ89>I„,Ü<Ù_‹¨‚鑚}Ö[AȾ֑’}Ö]éu¢BÎW’Ùk[+”¶B „ÔÝ1­n«R/M%òúÅHÁ>› 4‡¤Bîý$ŸÍPJÍ(€ßEÒ÷Ù¡ÄTùžÊÏÑV%_ Ò!°<«Å¥­JtH²!0=/Ç’§­B i’!°=³È”©¥JrHr!0>7Ê–«¥JpHr! ©ÙZ*K‘ õ!øal’âîB&æmbG±YŠ5 !°K€¤í³™B‘Ïò p¼ÌÁž³ŠV•<(7G‘¬íTÄiHƒÀóœ5’´ÏÆJ®gÝ‘œ}6X(ôI¾÷ Pn޶ …>ÉÀùøÊÍÑv…+L Þ·\9³·P ÅùÛ'ù¸ŸåBâûlºPðƒܯÜoâxQ¡àqüa:²!=ÑAˆÔ(„"á?:‰ŠÏQú»ü,±‰Lk¡øIgkδwXv °mWTÑø5 ê¤;ê Ô@ÕBVB¡¢r;T„¨ZÁF¡ƒPU¹È_ B81÷ýÖÜ6Í«¤­IúN8áヌÝÕët¹±ôð†±rs¨…ë×áË@±={8 îåqýÁþíU¨8ÛÀVt@ZŸ¾û*åTët¹±ôð†±rs• aчÿ¾l=´‘÷‘,há5{ø¾±–À:]n,=ºa¤Ü\%CxáÕDL·§0Q,L†ñÖô…Ùƒ™dÇ—ƒ™;# p{¹0ûülÑ· û-~8ƒpv9þˆw?Òéfíó”ùÒÛa*–SY¬Óå¨ 8/:Q®3±%I'õ£‘+s±vW¬m ò– ®æZï¨w„¯Ws¿Å/†05¬­O—“%^’ëG|3úa¸·xþi5¹?´5]ÓðÕŠN8k÷>ÜïŸ0³¬íL¯Yo¬ÓåRô¼èD¹Î¯`à €@þËÍò–b°FÄ  ó­­¿&Þ:0u6!éûø–$Ÿ[Ÿñåã±ý¾÷g ëÄ$H& k§#X\Ú#wƒôÝW©†ér!Ô=/:3¥Ô@ ‚åæ yK1w€ c˜Ö2Í™áì7Z«´q ëI¾m:µ¬ý·Ã×>{E!¬~ÜÕtlÀ̲ëV¤ÖX§Ë…tRÎyA•¯ÝÔ©ƒ!ù,7_È[Š6ÌË×}²rè@-'Ï@-á·>ÿ7’pK,ˆØÍ6²©%`Koöérim8ç^à¿Ã†`CRg:ù,7_È[ŠvQƒ†¤W6Ÿ·ç@¸]· ô˜H›ððîÛ—$á%w{ïBØþ+mNz€À:].¤“ÚpÎ œîœøvaÐúí’6a/Xn¾·¬…Û„kü’XˆÙ‡Ý>Üú½#L;ýgä*YL„ÇÄ5]üë`&YÚ;ºÆ€À:].¤CmÐó‚‰rɆ?àí´"îgG¤wÔ–›/ä- ß¶XôbIKrVÁϵ† ¢•P¹È[†p:Š%-öß}í… V.ò–D!¬’n/í†ïªt…¼¥*î¢v¨·ÔA¨¬\ä-u*+yK•@¨ÇmÔB T7ÜO™%=x·žƒ/¾&ºûz@È<Ámý!ðé¡u[ÙuS·’ÞQ[ÏM™¿u= ¤k ø|÷]hõÝVøsA!oI"ö™{ë "Õs – È[* %¦¶Â]Ôp´Êc yKE!$;V¸£»¨!Ä Ä1ò–äB 3¨åc¨7­áXÇTDÈ[* %¦;“l溤¼õ•êKÌb^)—»SÿyS˜d¯­VwßÞE\MÜõÜÕ¤MHó9nÑÙ²ÖU,ÒЏŸ„¯ ”“%k&™¼m«í†+8©ÆëâŽò{AéYPÚŠªåŒÂõ›ÔºÛŠø…¼%•Ò[è”äÊ•X±)„) oIÊÍ•Ú4°lZ«õ.qL9ïÄö†¼%é sT‰MJH«^i—v´·äIÌ·TøÞÊÍãåc`߸D¥º—Ô+þ‹Ðþ_NÑ7úQn_1ŸTÇ!ó—oÓÖ¤_ðBá¿ë¢åpÕcÔ'ÕB:ƒ,¯“¾Q¾¿ïR D¡~2dAqHÈ/¥$ac¨„,™í¯€) ïeACÝ d2Èì‰ ˜ò )BÀj!“AÎp ¸) ÿ…x”›#®µ1Ô B6ƒ_ _F©ÖÆP+w9sÎêÂãfä-• a=t+¸± åÞÊs8EMyKÅ!¾šÊÍU–r|·PÔ åC€¦åæ)Iy¾34½MyK•@Èýú³41ÜŽÎï„4äï¢ÕËW #b¦€ü]¿…rsdn›õõgIbúZ†B1S@þ.*ƒÀðdŒbù v?ðR>Þ½¢ïèïßc2ä/«Ö'ù_ÕC0#dçô9ñ+ül,CâB7/¿y•*õIoËG…`ëË}ˆ)¢/ý•LWy‘›È[ªBu>)ø¥ Á8ÈoÍ4?͸þJ&ELù[W ¡"ŸôMðƒc šnck8wârø+Ùü}S@Þ’±>j° ò}Rø¬¤M€ð¸âvAãrxë{>‡P¾OŠž4éAx \±íÄåðÄ¡€?BþƵ€P®OúòûxšOrÄ:à7ä-ÕB™oÙ¥B`ð›ò·­BÂÆ%5 +“†í§äf‡qØHõõ±<åߺ‰ýŽD[ ”€“‡—ᾄüC‚[dK¼z6¥õÕ„ü|šk´ˆ6¾_îÌ-b[I·ŒKºø–”8 ãÛ3C$ªw€ “vâùÜ2Í™áì7zÉÒÆ¬'ù¶1þžºmêV?½¡^‰…=,‚e®9E`ãìáÝ|õã.…pöÊ0H“NÖx/“G d†IT!øþÈo˜#–¯ûdåÐ0ZN ŸZÂo=|þo.ËX¹•O›+h ´²æ)•´+°11%°²&Áíjf…IV!øEø]Ô „ápˆg#âÐ÷·ë6Ò&<¼»Åö¥“@ªÉQ‹KÒE…û'¤M8qÚ„=€°ø l;î §MØKƒz$Y-€@ká6á¿$W¤Ù·~ï äg¤á^L¤š w}Éÿ˜õác¨wÔ+ÒVÜÏžMÂöÅON糖àw÷S£^$«ã„€?¸m±è¥­ÑÜŸT½‹¬ÞL^NGikr!ü0|úìx£¼Ð#ÉÚT«ôaìÂýIϼWåEÁ{¸©Öþ¨VwQ;UÊ9 ¹› a]H 7„¦BpM¡FD&Õì ˆKB#k^)ŸÖ è_âE8 x£ÆB5Í‘àÔ¼rÊÙx"Wp@BÅ4‚¬b¶$A(é]Cä-Õ‚$SAl–åÆBTNÚâœ2„‚b†Ð`RüÑÝ–$f † ¥ ‚ d$‚ 7jêm D Hh ¡Éd”$‚¨!4‚SØ’AØ¡5‚„¢‚hŠß~j4qSA¼eo4e‰Wá¦CÐ*W¡„›á͆ ¡0aÆ ‡ n Õ7Ë1Ë)M‚è@ï·T'¦ Ax Æw Èßq 'A,z'ÿ1 Ïu‚ j b¤0h>Ñò„ªQŠ3j„¯b Ac-€ èDêQ,Œ­¯@+1 ^Iq•¬ÇZAÈâRc\D%鑥ƘŋŒCHq‘œ‡eâÇ%ä-Õ‚HÛ 0÷áÕòåøR\á`Œ ²ÜÑ.I=¼ä&͵‚ˆC‚ ¸^Ð`Ç­ÿc\5ı߄·“õëúØ„¼¥úA(êÒÀ熠c\Àëÿs b„Ø£øv²ÔÅTækaõÓê•1.æiAƒ!‘(JQk wHP›Ô4}…Nˆ?Æ…k ØÒÃd:£ö@ÀEg17Ã=ˆb(„`Œ ²†¶ '½0© Ú¡h¹ô "ôŽ àE ÆÅºwtê&k¨ìª= 6 w©#-u¤ûvžÚ¡`³P‚œ/jÃm‹µŠ4 4"Hr<ˆo‘¸F6ƒVA(D¿¯)Ûµ B‘²¹«Tº3j„37ù Z¡@ãÌ Areø›Nòî_Ô6Üø (aÐ>¼¸ ¨aÐBœx (bÐF|8 H½}T‹n[øâ¡À^³ro_ÕJ<˜!¨cÐR<ëVÁ@ÙSK!pP`ƒ ’Ak!°S`‚ ”A{!0σÍA-ƒC`½›ÇA1ƒ6C`¤á÷Š´…\ªÆÉ‡à yKÀD!ç2¼SÏ åð×üNR6…C4_-‡ÀÐIÊ„P ƒöCÈuIYÊa°ò\RÕ]Óµ6BŽKJ¯è'%1Ø ™.)µ¦U|¥Ÿ¬Í€å’Ò¾Õ)Á¦@ȸ¡—ò…B‰ 6B*…d% Ñ|µë¶…-ar6I=ìBA²:ÜåÈW»ùê p—#_îräËp‰ÏýÚšÙsŒï+òŸeÕóñ.ù5»¥¸‰“BžhUÍþëó»±_—ÛóÏŸMcýaö×Ͻƒ Ã#‚¹í&^uòD!L࿯yAàc4_D7 ;¾±'©‡ v?ô%êÝ+éqe’„¼¥šC0Ìm²³è-Ì…¾MܩǟÍÉxŠ·ç;÷¦~²cÌÇó1É7#‰GëZ?!çÑÙŠd4N¦GdÉêi)e‡ú4%îè;â0÷O(„ÅÎésâÊ$åDÞRÍ!ÌÉ=Ùîo÷Íåí@Ø1ÿhþåó_çG‡äÚ^\k׿5ÍgþççŸ!×|w‡B [‘ŒæêÀØý‹ùïŸGcšFJ!›*„ð8² '°ÆrŸF˜Y&åDÞR# ˜ðïÑ|¤ óÃ|üwòá`‚ë—à×£¹¹æ»&…ànõGóÁ<4ûæ 1 š(©gR8" A3ÍOÄ•Iʉ¼¥šCpÜQ©¼éØ3xAŸBxó·ƒu¾sÛÉuóË™2’´c⧉ݔÁ±M·±5„3ØÒ“r"o©æhƒpý÷#Ó6?;®µu¾®%ܘÄÍ\K IÚ{óö¨>‚š¼}p{Gt°½#’‹ôŽÌÞ{MƒÞëbjõË‚¡¯rÕ eHêa3C@þbA.i&%¢LXÈ_ÜT‡dëÛR›ù¶ò7BPR»ƒÐ Áð)„B†Z–;)Z?ôRÊ|ñ|b„ЍÕÞvqrfŒç#üÐ|þ£ ç/cz`>±A‡–k>¿ŽS H˜¯œC !Pà çW:6»C¡OM‡l’.ÂÒýÓÎ".›áÛ”åµî:Êê%ºãZB@á ‡ðmꇵˆ)”ôò¬#–}Eßqi6„ðÈ ñüïˆ!”IaW±ÐÇ͆¾ö“ϼ‘²Øq1@@Ñ„FCˆ ‘“ÏŸ(¯—š!þÂ]£!D¬ó/íÎ\ qØ› !êd2Ï¿, ¹P<©É¢ç›}þ%QÈ»m‘ôöoƒ!ÄZÛœ‹°œè9{Iœ¢Ábuž¡œŽj””Ø\ñngÞ¥^ …ìƒHEÐ\ñÍõ7ePÈ<ˆ”p¡ Y‘’£±Á -¯üyÕ8"58Mc!$\Ó,ÝåÕôƒHŸ-«©’.i¦>he‚3"–µ “¯©*VvVÔ¸¦BH:W6‡¯¸YHiú3ƒ‰6BbM2V¯ÚRréÙ]Û!ÐaÒb+ýÖ~êb ¿´S”XxNP݆BHö¼~dA`ýŠçñWøíB¸g<°Dy› !¥!0:¤Gð›áí³”cð”ï¾™RjÑMÞ½ÆÚà fÇ6ù? ³„°f¸0ûðcÓÌ# ÛÃéøOæ1d·ÏG/ìc¼{aX4MÃÓq¯Ø¡åÏ9ÐL)ý@§î÷O{Zÿ¾ZÍmò~^ /´xFülxîAŽér®–WË9d·ßà‹>„ ±hš†¯Ws–C‹A`˜÷¡‘ÒºAÎþ8Z4ÝÖuË€ ðÏÀoµxF|‰ÿ›¸›sÈ1‡eçÖœFÇykVóå$X4M#‰Lž) eîFBH9ukë´Bõ³WkCÓœ…[ §Bd` òœý6ò XL_˜æB…ˆA`š…¦‰R{7ž%„[ìYÂÃ[ºÄÿX[ÂÜ‘æZÉnëÇøUK_ ló1µ ‚SÄ‘÷(„{‹á^¤¿DOûÙp¶ $Çírbv]/ íÆG´M€À83Y!¤÷0€Þ°}ñÓéE;­uÝ;"9Hïè~väB i/ˆc;Þý(u޾vAà¸/¤ê’a"&W „1àå©YEwS½bYÍ· þ?&ïÁ $gOÊñ„µ†À3™w!dÝtà15O ;Ø]¨2ý“QrO›‡+5BöÅÎsy+1…oyÍo6%¦ð-¯à&BÈq8<«Âÿã5¼áäû£¯O‹€m„¼þO¥þˆx¢¨:S  òF@È­7®Š•9lv䀒<+ïÒº_ÚA âªXY¦àõK;ŽÊ7…Àðl °xü²MákpxÖApU®)„GÈWešBôFQ‘âšíB+Ïb7Š6Û9ÞaŽñ‚À°9á~iÁÓw1Q Cøšt¿t °úŽ»ï0süÁ‚÷.t‚ºãˆK[ÈÒ¾5è Äг€)Ä>rCöÀÖë=µ‚yX‰è ’~Ðýì ÜŰì]ãÚ0G ,_÷p:nÈG7{ûgHw À†‚²ì`²gÓ!$wÝRƒ]Ô „ápˆg#'œŽd‡¶ n_Bºl]TáÞƒ°Ù“¡üÁZÉày!ÐÁZ¸M¸Æ/ñ:ÄÎÃíºwé‹ ¿C2>ܺƒ5»!{Â:dO:„BO’5 Âÿ‡ð!ýXò‚üÄS«¹mQ„’[fNS¯B¡§ù:¼ Æè‰í¡Øs­E÷Ppº˜FAà¼ÎJ‡PtnAå¶Ì5†°µµõäIÑ7¯:"röðå›'ßÓA݃ø1‚Êm8ßñczönk‹ñ!½$„/ï¼­Ï«ÅòÅóÐpŠdL”$ ¡T$ÂÏãó)’2Y•(„rMAÆûº79† C(Õ@*AÒ¤m› çåÂäí%0„Rý‘|"ÞH°9ñ%¡LSÛ2oÝ ‚4 ”i R!Ü‘FAÀä1h™ÑᎧ@EJd B‰þH&„ï°@l‘»ßK<Ê4ñ[k ]ÉnU„Š“qú’vòB­Ká{Ö)’¡D‡$ˉŒ²¤T™‚‘ŒBX$ ‚Éf€eA(Í!I‚ pÒ²FÉAI²­Ò’”zG¢,zIDATF¡xƒp'³gêI–ƒCrŠÉ•”;Ç… )ø4EždA(Ë!É€P¸&E¿J“´¦¾$‡$áÆEa"½W´–¼þ’UP¦Ä!nÛ•1¡$‡$ê »uu dŽ<Ê¡ ¡ ù#4E…—BAÐlîŒ|I%\1E]ÓµäšYDê£àA1Ù¾® "â1ˆ¿^•øÂ•£'ŠHopÔS¸}äŸ+•M²#é­¾r Å!švJ»EÊöÁ=.¯ ;‡µ3Z˜}k:î-ÇiÀ øÙ½J àÆuÂN€VL¡¨)xgúlxA+ìž°‚ü,vNŸ'BPÛ5]K‰µñÏHÌ¥‚/†yK—ø¿!h……57`…aëËý$ªîØEM‰ËSÛ0º:ÝLƒ¶ÆêÇÝ5Í4?%@PòåA‚µ;J†BãµÀ5}‰ÿì‘íY¶†1_ÄÞâ²Æ_%…¦¼¨Ÿ ÷Ûk‹“X›PJ“ìîJYLaÃÀ_=¡ÆzGÂýìÙÄ…€w¯£½£¨ì«k¸ýÿ}Õw*BR9Q×0ð^¥õf x@¨Ê%qVQ … F¦HW¹ TÊSf„ßxûKf þÖˆŸÄ»Q~×4ªîO©0ŽjâíæÈ}êIeÜ$Tà“ØM›AÙf€Ë À'±CàdPÒÝ¢°Ê ß'±Ö-ŸoQó¨i®Ê‚ Û'1¶¶|ݨ2GÉ¡ý–A6¦úâsð*žzgR‰äb`ª0¹"P©db`ñG<ÕZI‹ìªd1äWGƒPÞw‰{/ëD¢¹Ê­bŽ÷\e¿ŽÉ© à¼y¥•WÇÌ[Á9¬j HÁð]6櫲5pT î2{ ¬·í£iJQuÄ1|—)‡qÜUåéûªö(Ä0dÅíbcPqƒ¼VÕ—ì÷iºËÜÅ4B¨¼A^«j=ÖŒXŽ, ¾|Syƒ¼VõpAsȨÉ2J«‰'¢ª„bæZ–á¶]MNÛU}ކßÒ ä^ãw¿¯‘à:A æ€¸6H†wFBᕨN0/‡»¤F!g”ö¤ôg)òU3˜CÒEéižÔîtAõƒ€y8Ä¿‰É8Ÿ»­:ž,® ;6=Ä?ŸþŽi‰E>ÿOzÖ­?dTåé×BÕPítjp„A¡GÐA¨Átjpu‚`Üè~š†Ó^ª1Ík=)Áškøýø"¸F[¿xƒñCÖäw· NwÞòÓî±13yëŒáY?´¹›^…×i¸ç,˜:Ö:™rªàýïËg2ü…Èû®n@˜ckX³žÇßôð³B¦œ*¸ÄøÜšŽÿdÛƒ+R¤Öz–w¯ ËãìãK÷µcknŸv¯—“ûÃ4BÔ¿=$¿¦jÞÖ§ã>Ù¨îˆl~{9=įçx0£E“?x÷£á¬ AEªr¥ÚÖÕòj9·ûËÉòp±sÚƒh,†}<ÀÇäŸOí7‹ý“Þ÷§ú9~F\ƒ›wÂÍð“6¿†eÌñÕŠMþÜïŸΚàT¤ÚA˜Ã?[·uÚ0Œ‡c[_:(ŽÜ¦y£C`ŠÕäô#~}¤ .üóÁ1@0ð9Ùä\ƒ²–‡·Øø~¹3Ǻe@ÑäÏãaMð*R Pw€À÷ÖLÓ °úé Íé°ÞšßÏñâùœ&¸މñ„9†öA#ÜÍÏÞÍñÙ+ þ¡±]&Fè*R @Ã…ðöÏd¥åYáÍç@ –°‡W}‚œæA Z‚³¹ý4·˜B ¨%Ð5Á#¨Hu‚]Ô„áP·/ñbç¤ç¸£ÑºMÐ&¼ÖFx6rF»áå/g}²HÚ„=Ò&ìÑ6n¾ø Ü;î §M€5Á#¨Hu‚ƒµH›Ð_L0Þ½¦]¢¿wHòýár‚_:¦q?;÷ã_a1Ô;¢›¯¦dqûâ'(šüqzG׸ƒàI¤ ¾OJ„qCF¤SÒíÒë;"U`]&¦æAX쿺;"Uð¡—˜ÜwRµ¼OÕAÀÝ]ÔBõGÐA¨Átjp„AM 0=è¥TUž~= l¸:5P¡ê Ô@„¨ƒPuj /ÿ |û!)¾UIEND®B`‚omniEvents-2_6_2/doc/doxygen/a00288.map0000644000076400001440000000032310240666475017701 0ustar alexusers00000000000000base referer rect $a00046.html 436,362 630,386 rect $a00073.html 161,13 308,37 rect $a00062.html 8,90 197,114 rect $a00070.html 272,181 538,205 rect $a00066.html 265,453 524,477 rect $a00049.html 498,90 674,114 omniEvents-2_6_2/doc/doxygen/a00292.md50000644000076400001440000000004010240666475017600 0ustar alexusers000000000000004c9477906abdd21e1a395397b8092e2fomniEvents-2_6_2/doc/doxygen/a00290.png0000644000076400001440000000121110240666475017676 0ustar alexusers00000000000000‰PNG  IHDRø*l ‹!PLTEþÿÿ˜2Í___???ŸŸŸßßß¿¿¿ÿÿÿ‘P_tRNS@æØfIDATX…í×ÁNã0Ðrí‰\ùÒZ>€nö¾@8" ÇV»Úå¼ZœI“ÍøMÚÆþJfì:¸i¨X‰6—L[©ód{R©=Ùbô:¼Ã;¼ÃwŽÃ®¢Ã[Á{½ƒVW~¸…ßö;‡N_cáûø£üõ6-\ÊYÓ ñúe£Ä£êëÄÆ1žµ>3ùß:žÝ²ó·éàrƬR“pöÇ®ûntiOz7Þk-Å/kuÂåK_m{ æÑc™=ÔðÔ‡i8ñòAù½‹ÛŽ÷Á$J¤Ë½Üßx ŸGôÂ:oñp@—'2 )<2³ƒM\¾(<^rqu¹¹rŽ1qOÝS˜O…Æ=8ïìšßp]yÆÓ31› ÐålDSWé¯oâòˆðT¦âªaÛ5ô*¡T WðhŒÉ‰^p^ín&¢¬¤S~FS7é6|ùu¸‰ëm·p\yr,2)Þù+|”4 Ê3¡§Ó­¸lØvÕp5<x/¦q?«†+°þcåÏÒlûC®5gŒÁÂÇ£i¼X9=jÅSIºœÎÜ—tÝÆó¬)»]úõnW?2ëg>‡s ^&ú_aº]bÝàú' èrêv ¯w»Cx_6Äçÿ¼b TA˜ƒ¸ò÷;*Ðøé`ç8^Ù{Z¹N›¸:ñÖðUõ…ß"þ~´ÿ§¡Ã;¼Ãw¯Çm©Ùlµ’IEND®B`‚omniEvents-2_6_2/doc/doxygen/a00290.map0000644000076400001440000000001510240666475017670 0ustar alexusers00000000000000base referer omniEvents-2_6_2/doc/doxygen/a00294.md50000644000076400001440000000004010240666476017603 0ustar alexusers0000000000000064573e0d488593aa6ce541a53a920733omniEvents-2_6_2/doc/doxygen/a00292.png0000644000076400001440000000166510240666476017716 0ustar alexusers00000000000000‰PNG  IHDRÒtòq‚!PLTEþÿÿo___???ŸŸŸßßß¿¿¿ÿÿÿ/l:ZtRNS@æØfBIDAThíÚOSÚ@p¿מ;“c;Eå¨c­uÀ£ƒ±ÉQiG9ÚÎäV0$››$ö}ʾ·K €TˆJ©³pvß¾å—ý‡Ý€U• %)II/'±g+á#R8È]”¤¤EM<å"¼ ~wyI<¹“ûÔ†m:f%rbxö`3(É D.h·‡”ûËHÏQ”¤$%-òñ÷³|³\¤Üç”K*¼y…RaEÒýë”rlÔzK…UJ96j­¥ûB®å[ki•¿a•¤$%)IIJR’’”¤$%)IIJZ^âOú«÷"EIJZ© ×㮀‡Ý‡ÍÆ›PfoÖý˜–‚sûÄ'j¡mgš¬“6fâÁ™­ΑZI^•^™{w&Žš3qX™#¥eBê”Ùé#=b‘¥áêá'^2×ñ@ ‹]fÕŠI9tèbÌׂÆ)ѪáÀÀÆ+&;”IU윿z!¾¹«•´ëÝq)ÙûjŸ…Õ#¼÷¨m¶Y[Ì k7§D¤q`€5ÖÅfR;“]6'"+llÉ©DÃåÂ8ø;§Ä¡„5æÔr¨Šó%¹z ïÝÛäý'†.Ê£}úìR\J4ðšcýà{*Qç|Iœˆ)©}UeœÙR*·Í‘´õ‘âR¢BŠÙhNØùÈ)ÏJ¶m³¤ŒK~)¥x¸Ok—¤SŽRk$aç|I<¹“ûÔc'8W¨Òx?NÏÅ=“â”èÇÃ'wÀô³©„‘^²¼é?Y[‰”-Jú¿¤•%)é_I*¾ví·®YIEND®B`‚omniEvents-2_6_2/doc/doxygen/a00292.map0000644000076400001440000000005310240666476017675 0ustar alexusers00000000000000base referer rect $a00073.html 32,9 178,33 omniEvents-2_6_2/doc/doxygen/a00296.md50000644000076400001440000000004010240666476017605 0ustar alexusers000000000000009d9020916d36bd741476b03b757a2455omniEvents-2_6_2/doc/doxygen/a00294.png0000644000076400001440000001564210240666476017720 0ustar alexusers00000000000000‰PNG  IHDRó,¼«!ƒ*PLTEþÿÿ§§§o˜2Íÿ___???ŸŸŸßßß¿¿¿ÿÿÿ†âªtRNS@æØf&IDATxœíOsÛÆ’À]•=mÕ~ƒwÒîñ¥*µÙãcÕÖn®{]—+â1ÎS,åg;ò1ñ¦$-cà˜çde•gËÔe«$$Xå’V!a¾ËvÏ$Ì?b(¡iÊä`ÐÓóC£1ž¤‘zäヺ-¸·Ò ¯MôµIƒ¾6iÐ×& úÚ¤A_›4èk“{ˆÞ7&“RvÜCô候ÓÔ ¯MSƒ¾6M úÚ45èkÓÔ ¯MÓ½Eà?_“Ð÷Oy•ƒ'ã¶BSQ¹¯èƒß{OÜEY;ìõ_Émüåzëç§ ñÒ}N¡À¦ü·Ð]ª3ÿò:£!^Ú Ï)ØmŸÜœ8{ÃÍ!Úp\BvˆãNýv¸wJÇ{ã~è« •±ððM;ðöÆ]¬>8Nh*,÷}ˆœö~{ŸœÝLú=òŠ<î…·à×ÃÙÉŒÀkðÌ¥…/àûËÓ› Vo¼¾ $Ð|yÄ£‡ÙQè>ƒ/¯¨³»Ã¨öÍÃ!-ìïºëVoДDÀI w!®<š¾?fèßü­õf°3°Bò•CÞ¡¿ØØØ æÐGê Ë}CòGîíL‚âD…¥5™ª½¦\qé8p´ö§*]ÚrÿÐ Ê?U®¾„^¨L_îz‘Ÿêúo viö÷=¥$Ž6Nm£¥¯Ÿ’ðïú˜Ÿð…®÷^¤6û¦·Ù8rçÑ' HÚ#}4Žô]ƒ·Ñ_,»$ŸPÚ™%ä—Ø/޹àßaôzD/>½ÐØâí§mW,w½¶'_|šÇg¡â…¨Å¼Ž'ÑçôÑ#e>í‚ò¼ŽçÐç¼²BëæôW¡þ|#Í»…^ÿ€‰(z(š‘ ¯å¡/pnyQpH.iH߈;‚¾àÜ‚äå+êZrÐkŽ"³Rü"€|wÑ3gíÑæ^4Ð묫ÈÖ} îÅ=ù££{Ñ—âNJzÕ5د+ú²ÜËúÈ{¥þµDŸ{øÎÓQÚ Õ¡BÕÂú¡/ù³\¬Å€ÕæWøÇz¡/{ÿÅBÑJ”ÈcÒ¡7fb1£H©EºqÖ½1wgbH—zß‘mœu@_~4“VhJQ)··½É0‹1…êh/Yf5zÃaf®Öœ*¥y’­l/ú*ÜJ¹ )Qé’lfKÑWãîLŒnPÕ´^è+ 3±Ö­Úâå¶¡¯,ÌÄb0Ðké/· }ÅîÎdÕÃ¥5@_¹»GÍרr{a¯¬@¿wg-U ³¨Û×~EîÎ¤Š–Šº}½èË>˜‘Wªpzåö´ýê¢ÌB*:G+¶¸ô9î«6)Umêbn_úz°“ªÂZ±èëˆ2s©nƒ+~!ç¯}mîΤ2§/qV†¾NwgRáf/qV‚¾Ö037¢JåE"Nõèÿ¼WP*5¢HÄ©½-Ü+vúB§RôÖp';}¡ˆSzâûBªuz›ÐÛÅTîôE"Nèõ^™TíôV ·çÀš”êMÊqÌ¢¯ù|U(•;}qôffCüß?&gD4£TSä¹ä—°Ê¶óG†¾’üƒæ”æk7+–°Ê¶ô\‰ú])úüç> »]-zÅãœÙ¢û€>öÇjÑ+Ü>»ô Ÿ;\ƒ¾‘46ïtÅèóFœ$zÍׄì*Ìȯ4S~࿲@òÓàHÞnJ}fèƒÝs7©F‡mÞz¾æ&ªQ½HWBGܶÔí¥èugD =ø¢Ò赕¦Ëƒ£Þæo<ôO{o:·nº\ýë­ŸÞ/–^¯×KVŸ/ó D5j”ïFŸ]š@¯=#â¹Òözm¥ér\q‹‡~B‚“Tm"C¿è2Cÿ˜þ[ˆ·\Ý[|Hït¡{öR†^qdèµgD|E®÷ÉÞ¸î|ÓÙûËfäV å×íÀƒr6Á"¬ôàkè ±!‡à uƒc²}FFð÷”dÚ]–†þ˜Ã`8øÎ§jqn$Ú0ª‚6nÇ¿‚r:û GkFh¢fôÇ.šúéxÓå´/â$ÐëΈ:®ãÓ›IøüußtvÄ,‚|J¡'X„r6Á"®À'ÚÔİœÿ€;Åóƒöyºõº­@ŸÀÆ5Ãàtv:£j)zlUa^ØÝ#]xyä€ZsÞa‹Ï`_óö øëÞÎÃÞ®Ëi»$zõŒˆáOíïâ^èÞœà›ÍŽ(C¯¡Êq‚E(góQôè{´!è5uÄWp¼ûe·‹7'#س—…ÐOê¡K³}hU±©Öº¬¶ïŸ»hÍ÷3º³·m¬sx û-§í|'pÔ3"†?¿|FgB qÄ|Øìˆ|ôÚJQÁW–3ô¸âspBÚC ðGô?Úöˆãû'rôI‰€“@ïц©*Šþæ[¶Cyd ˜èà0âÆƒ>Ç{ymKÝ^‚^FÄøñˆÌ½žÍŽÈGŸcšE‚,B9C+Rô´!æõ°Ð¡1˜y= +GŸìïâ0›F £*†b„>²¦§Oy¼ðzNÛR·O/L.5fD Ý'stå…oñÍfGä£×VŠåá1–3ô°".=ÚP„:äÉoo:,ÖÃoë =.—ÐðFU,àôãXO"kFˆ~ÄÐ;‰XŸm»(zÝC÷m×Á™#œŽ½¶R,Ÿž`y4Á";¥òhCzXè«ÁïÃàÀ_)ú¥î.N©R±¾ 3…Ù]ŒpHdM<¹yä*áì»Ü¶eG†>¯8d~š7Ë.$,¡¨øBŠÔíSÛ¥Ao¶m™ÛD?Þ3,@¿ì„u£OíwûÊå2ˆU —Eœ}µmKÜþ>¡Oõu%èen¿¼Yô¦Û–¸ý=BŸ¢°ô·ç¡/vëÏçLþ”¹ˆI!RWáŠz©†Ï‹6n[ìöË[¥Ì— }«¸†¬U&ÿÙhI Õ·j=aèK(ÈÈeË 2ý;-znÄ)w»ëÝ@ix绽Aô—¦ãÑ ©íõ†=HÜ®Aôf÷Tb½v¨7Ý aÃK¥$zp{“Aâ²ô—†Ã¦ÐíM¢«Mh£èµãÍå'†Ã¦p£EOGƒ—Ÿ•TK-èÁsÌ:ýªÐ3yðFÔÝñ5ã î³¦Ñ ·zÒ&SÏR™ÑSz-ŽiemW¿UZ…ѱª^¼aÐ/M5ªj¼ô\§ôÆšÓk–ˆø-cV(Ñ4ÖTªE_æhÛ2fƒ ýG3çßy ¨=)½GŸ¸ä¡ yÎr@¤ñF:|Íj*#<+Vˆžw´e fƒwd8èÐ÷ö)‰²,´X•©ßÆL X¾wz;îÒsöN [‰¦Q€•}—XŒÏ#ö§óì*’)ÐæÖà³#škanÁáøØ2>-h¢çµ£Ïm£ í·äsôŽ0Ý@”e¡Åª<îí‘W´¼ó–>¬ qs*´Y¶xÃÂG“Ùà™ËÒÀú˜Ñ€‰0Þ$lÁìç}škançP%CöuYá:À´ULnƒ=µ€W{侯tQ–…«BS(<£åô™YŠ>±•Ø£Åîìù„Ü<Ò¯‡°>f4`"Bÿ±µøgYÀ§Îc <‡*šé·è ùdéCó—mwBóÛ8˜n zè™…bLN0}4aåˆÎ9ÁJzXø~2Ã<#4mlÌh@E8Trÿ Y–ø»°ÀcI¢¼ ¥…ç«F¿<Ò‰žÕÆt‘דÀ]BÉ fÏ:¬œ¦& äkDÏVb^O‚¦\p"¯wiFƒT÷–d9òEY"¯gxUÒ7pì@¿tî£ßtÏ{;ëw0Ý@ü¨?«‡É àèIËöë-\"úÍ=,|4™Ãà’Åz—®D…>uÌ Y–ëc h¬ßÁ|F:múä(“¡¿?<™pÎÈ2zLNð„°òÐÝí³SªÐÅ•"ô°Í—ãÙí³, ¸Š`V–ÔÑG8,Ë‚Ý?P%†F8¶ ç]OÃäbéc.%pþ2=ΚŸ&pò kÐgGø<ôü“ª\ÂëqözÒ Ðóv¿zÐcc7~2¡e'z'åï}A*L]áæŠ_&ÿÚøÏ%+*‹ÐÃ(³¥¬R:âp:¼š ô± ½„²'oj"ozëi%Ý>ÛߺÈÛ†^ãæÀrnŸéomä¹üZÑ+½*‡>ÓÝV)u¥Ä:ôªFKÝ’qúýÈ•,úÕ^4æÉ'Ò¥­šÓèë$o%z9‘2nŸê­|W-V¢—ÿj+[&—”Ó×Õ»HìD/xwûeô5“·}ö‚VBZE•.'€(ªÅpÆõv —µ]Ôí—Ç®ünb…Ø‹^vo`AjKÏ¥ÖMÞjôä£hR,V,õµvò<ô•?ÚCD#Bà’}5•2£„XŽ^t=­Û':Vë©T$¶£J\/`X¢«Æ³ûÑ ŒÈr]­ñjeBÖ=¨“¼ULOæý²ƒ¼üÂ¥-è¹C¼Acád­R¶éɬ5è¹Cœ‡ÊyOm8Ä¢¬ zÞP'Ãy·¬éÒÚ ç uò°;Z÷•›…¬zŽ5úæÅ½ªÿúÁ\²è—.tX…žƒZÛ¾½EäåcKëÐg‡™º²^YD~íÐgÇäz²~Ê~X¹dÑW‘bÔ¤dØkk™?¥W­UäGYÑËçµ0!+êHƒ¾A¯-w½â(Û ¯Nôµ¡—_·lÐW(k‹þ˜.Xà !W<ŠÙòcòfœÝz'ó?5¢78/U5B¹ÿûùÍɇ‰¯¾É”üÐþV€þt•èåw‚{Ñ÷ñ_»K$ç_3å¸âž},+éÆÚ¢÷výsçdkÚžúSw þÅ? ÉædëÊw¶‚ÝÉ_¾?ÚßB9Vt`ÅñøäoÛX?ÂÂÕÕÇZôx‡'›ÍŽ?;ú-ÿÿ¿>ü8Ù Þ==sÎü3êõðé-”cEذâ>ùWð jâGX¸zôª£¬åè}|Ýú·ô0{=ü¾|Ü}E(÷oGÛPŽ#ôðÉŒñÛ?½Ž$N=x÷ðËpŒwSô/~ÞÇúïN°œ¡ÇCøüâ×=.´=w‚k«dq˜M¡?ûë¾úúÝ3gŽþ›?c9C+Rô×þÜëaáÊÑ+²Ö¢§ƒË$ú>øÁ.„í_úë(ÖcùäËzX—€þtŽÚ€>µØŠžžR-Çú™ÿì dŽ®ã–,ÇŠ£ëè”êÖoÿø[Œ®½2ÔÛ‹¾JYE/ôu¡W‡úûƒþ%hÞ\zŽÓß[ôIYA'ôu¡—çaÒ ¯DäYϘ4è+xsOÑžÆ=#ŠDÒL,DÏDņ{›™Î½g8³jÕèyñfMЫ§¸çßÉ­uÇeMè3e6¢¿Ô@#`¬uo}åè)¼#±=óJEÑ­Û]«f¯êmD¯áôâÜ´;¤ñì²:úZ¡ÞZôò*-ÉÚšMÐÿ”š¡U$zñÆFôD‰^ŠWë–ðù#sh$œÍ)ë‹þRoÊ,YjOg }Ñ‹7¢¿l©X(bJ'?`ƒj¶XìCß7lIk¨âs¡.™ƒ¯oìC.-wzµW;v~b(îpg.XôhOKZC ¶èc„F‚¾n¼±½Ú¥uByál8Ÿ—DZ¶èÕþªw¾ZØ€Ò1_7Þ¬zÍñK‰ÐQn¤ÏŸh Л‰7(­V¨†X2á:=w{X†ÞP¼!e“Ÿ]òó±iȺ¢WóÒ'Z²c‹]ÞÑ7–¡o)käpæ²WÆ ÁçB¾èÕ5æR>%Qþ¹ÑùN/˜™Ï&ô&ã 1’ˆ+ïñ–ïôk€¾e FR \ŒÏ—¶Q0Ñ-ƒ¬ú|0M¤»Ì•agmÑŽ7êó$Ï¡<ñÆ*ôêãbn”­"v¤DŸ}.§· ½¹ó©¹ɰ«=T0^ôÙù_ç%YôÁ$ž7v:Ä¿û2ŸL6ß~²Ý%$žï9aÆ¢Y‰mB§N2oúعr¢¿Š>ÝþŽ#ôWó ¹ú÷¡CæèI{^¼Ø~EÐ œ~½ÐsöüEå·ûø×ËÔÈÑÁ›!j‹Ñ'¤•mŽS’/ÞØ„žºôÔïÃA{6xGà?úÞ>]B?Ãwge:p¶OIxØvÉö‘kçwº&“¥nŸE3¹·#=ÎÞpBèO;C2oº´,˜„{ñlÏÌí¥¶åŽ7Ö¡Ø; În&aû-ÿð=Ýzý(ê%v÷(úç¯ÛçPyâ@…vø‚¼›v®žxÁéìtÛ×N*frkMŸ´± ¦Çiï·÷ ê8ïßvƒ».-ô·$ѰܶÜNoúcò?G¼€8.ü‡¯Ð=º×Â?àܽ{sâ‘C@^†ý›ÉlrÛ¼`‚/‡®Ib˜sÛ¿é³5½HCð…:Fä-Ù—–zw{ZJÛ„Þ½èY ÷hôônþ²wÏñý÷Q÷èÆ¹ùöEõ&È '¡;õý!â¡O&‘¥kÂÒHC:<²íû]êdÑ_*mËo,BÏø“_)XðÍØ³HÐKzý @$½žÀè¶Kž ¼>1Qx}7òúHOäõ Ã#ïÈu‡ïõ´i©m"ï^ô{;¬{›q÷¦[QýG…mùÞ:ôÚ5Þ [²n+¯=Ë¢º˜ B¼èÕ—ºÊ /}SqùHWÄñÆ*ôo}ßoK*\’D)¼;yÔ?¸•OÕõø¢²-¼± ½ªBÉÊõTq Ä›Ð+CBÙßûJuU޾@¼± ½ò²xéŸZKÝH,k}CP.sz›Ð+Ñ–ÿ•» {‰g 7èòYqô°"‹7V¡WEœ–6JŒï…kŠÂÜé­B¯rk#ϸ^žøº%(–:ýýC_| #  ÷&V¡WDœ–¡f vY€^XAÞ.ô ¿n™jæA1MܵŠnPìB/?«j™k§Ð(“×þ…(ÜÌÅ.ôrºÒ…9¥ÈS#œö7Š“· ½Ôí[&[âMf®Œqâp®&oz ^ãéƒr;~z ñlÕ!–ª³ ½ØíÍgnÊÛ÷za°Ñ#ozñeu®–ü’s¨“ÜM$ÁF¼}è…!G°€ä»®°@!qyÙFIŠ}è…çUU ÏÇ>6mC^gli³½ðd³ô¹®éPôR¯Ö&o#zûjÐs&’ÊG&Šh¢OÞJôöe2Håc´IUê/¤†UÑ'o'z>ûÊÐÇ¿ Èôvà®2@¹i’b'zî³BôôÜV˜s”aG‘ ;´‰Û´=×+ÍCüy+sâ€È76’QFf€l¼É[ÑóF}E²Zò4Óñ?'J²(³6-É ÞbôöùïÝcuTg™Z3ÖP©ýÿ}!•ý»TÁ¿Ëë§ ñň›O×gÄ?ÿ‰J‘ÿöORKøFÔŠ~mHЧU—Z½A¯XTћЈ}mF4èk3¢A_› úÚŒhÐ×fDýèƒÝswQæÑ“3? Ž’_ù“TÜL*ñ%úÿù¢(˜„¢‡~übU#âÔ0¶¢½õÓûEÙñz½d¥ù²§½7Ég§œyÒ~&•èƒ }ð{(k‡½^â+¹¿G½Í¾X߈85Œ­èÓ I¥U™à$Q>O6$̤BE…~ÚÁ Ié™M×KI#êGLÈ!ˤ‚IPðYcrݤҋ3©äCOÖÇ|+x˜…î3øò 5zV™¢gM/§sŠDd„íèiÀI ÇàþUœ&…%O¡õº°3 ú ôÞ˜ŽE’I%_ÀI ‡•§&ïú7ëÇõžOX­d:¬HDFØŽ³iô¯¾Ò¤°ä)´žG³û9I¯—dRÑEOŸ)ô³gظ=†¾?;‰ë½Œ¼~) T$"#lGƒË%ô0¼ Yš%OÁXÿä·7°¿ ±~býõâL*ºèéà2‰¾cÛqBøC?b±êmö1Ö§Ó¹<Æ2¶£ÇSªT¬ïLOâÔ)d7á\ ~'Wãý¥Ž8“J®SªåXFžÐ,¨ézpè)ŽpÒé\h™ÀÛÑçdš#%Hs!+ úÚ¤Øå³QecI&P© ½ÚˆõCŸO¯çJƒ¾6iÐ×& úÚ¤A_›(î>3"9î>[µöÞsyç¥A_›4èk“}mÒ ¯MôµÉÇÿ>Ÿ¯Ø¹Nø¡IEND®B`‚omniEvents-2_6_2/doc/doxygen/a00294.map0000644000076400001440000000032110240666476017675 0ustar alexusers00000000000000base referer rect $a00043.html 498,267 709,291 rect $a00076.html 245,267 442,291 rect $a00073.html 482,9 629,33 rect $a00054.html 8,86 154,110 rect $a00060.html 469,86 642,110 rect $a00048.html 178,86 394,110 omniEvents-2_6_2/doc/doxygen/a00298.md50000644000076400001440000000004010240666477017610 0ustar alexusers00000000000000c40b1f4ba91953e41bb774f445eefc15omniEvents-2_6_2/doc/doxygen/a00296.png0000644000076400001440000000211110240666477017706 0ustar alexusers00000000000000‰PNG  IHDRÿt¸Qùâ!PLTEþÿÿo___???ŸŸŸßßß¿¿¿ÿÿÿ/l:ZtRNS@æØfÖIDAThíšMsÓH†ù >²gŽl­“øH6 æÈ°sLy Ò1x©ÄG °¤£m}´N`ÉŠf~åvÏXþˆm–] ‚‹ÙÉôÛÝãgfz¤r•ïÈÛmŸî00|Á •µøÿlOû¯`·:p¼²X 7gû‘ùM²÷Ý}{¡™¢Û]2e^iýÕáÚ…· @Ò ×¢ {%fn )_¯PxËä}yíY-ßð¥ïš¸8æciÙ ˜¢5”î õ…×Ñ¢xÙ3³ Q¸;( ¨c™m³-G×±hÉSù[÷h\áý©7•x¹G¶OÐ~:¼Ž)¼ŠÐ’®@ªCa¡qª&nû³èë{¾û2HÏì, ðê¶` ÇLîÇ@¤zú7Å…Ñ¢|dÉÞaeªoLèìj€þÔS+ec„åéŸ2”•¨c¸ ÐíveÔÇí~¬B]É¡¥ÈpR€º­ÖÀHîSÁ7èãÓpv äè¡E™xÒx÷„ÂÓ°€*0ì*ÀW}ç¸û ¿˜|Uû¥\zi€Ï5(·¥j P+W;ðùG(U;P«•܃¸ý‡00000000T ÊüL«D‹€`` /¾H w²%ë†>½h}àÈÍ\D¯D9/ÜE;Î’ Aa¬éѹc>Ù;Na¼^õ›ü6½-vWrææšN‰­ #_s¯M[^=1Hl·?è<×—F\Ÿ€Ý©gÍØ¥ 4¢u ´;˜9؃zv@‘ÔE§@Í—í kâßøø¨‘¸y b| Ïh ˜Ž…¨ÃÉH¶O2’í“oŒ„‘‰5·Lg4š_Ab…S&+´¨^2’µCŠê%#Yk1¤¨^¾U’*+Í«lËa¬ÖÉÞ3óë,.# ê«ìÈ ÿi\…û“Ø_j{õy]Þ©ÕvùÔÛ>,yµ~’¨Fzûª–ûFrP»(Në~ýɨˆsq–›ÏvÎϼZ?Id£~=v,„‘XÜnùZsÉ´ÁïZz¥—ëñž‘‡D€æ¯¸^±¼Sisãºb6œ:l§ø Aùù"o÷+æ)67®ÃI"ýÌ^šƒŽv J`K,B¥Î{`¼íwøÛa$ôüIþ„wî,é´Âùϵ+§x ‡©7iM8lÆa](`ÿMûÎÂæ«bÕ(êÑè¥9ìhC‰ƒl‰E¨Ôy¥ûCVªæ»Qá,¿’„ãÖç}18NývŽåQë¹/ñP6x|Z·ûØ|=ÉýFQæ@/Í 4 °ðÂuÎÏ˧¨¸k €hòfev-8…7úɲ3¥Ó‹ØnGU*ù _¬%‰jTô¡£^šÃŽ% ÊàÀ%ÁJŸB윺ó`ŸëŒµBHÄàô9¡²&6&-ש.•üø7>àkIbåhôÒv$>‹ T¢´‚1éCÄí¹_ß,¼è´V«q³ÙùJ:È”]Ã,,”ܹæƒáZ’¨F…Ì^šƒŽ8 ÷ÑG•:ßûtQ”㤳[5lœˆ“ØrJwøNSE45¸Ó n¥’Zè7ö§©·»tGr.;;©M$ Ù}šÚ«Onv6AÂwAR»]ÑR[IFBв³³!’[b’>¹’’•›‘šäJHB:{‘Ì\‰H¨çáM’<½%ð<í†"¹}c £„rÄÃHÑì$!Œ[:MÀ¤—¤ßb“å Jâïã©‚¢ÙINB”¯4fxš5$Aùú…!ÉIH‚B’fÝ Á[ºÜJ·'u~Ýhi-,H’Ôù¥¥5°(©VE¥ Ù©DH*’”A!î<íJµTƒžr¸óÔkîÒämHÒ’¤È/â¤^™<(šû¬j‚š(’–$qPf×¶$Šæ¶†$á5—{å¾ßáz¥í-NÁ±8¥b6b[L¿^8Q~¹¹5,åõ⥷8ÿÅ┞\oKV>' Š&Ÿ¦»†^wêîâùÅû±\0WHÅ›qi…îâØjbqŠ»š%–P¬Fï¤19Ewq nbqJc3Ù?(³“â°TÍ ’áŒD,Nlˆ$nP.yqîwq nbqÊfæ.;(Äo¸\¡¹k#VP¨ßp¹BC+(š|ºc+Ö'¢;ib…öJq.D$1‚¢Ñx ÕÝM‘¯)¾* ²û´"æ—ªÜ"$‰˜_jf`º{ç"EÑ ŒBG)(êBBy?c„ ( %I„«GÎ[@(ï1½7¿ÔM\œønÙû‚¢Q:ó )É=AQâ;˜×EáÄÅ©IÖEåÄÅÉï*_Â/GC…˜dMPƒßé¿2(Šs‹ždeP4bG!ÿõ…AQ;£“„…ôûêp¡ÿEŒÐ«GÜM@ü¶GH~©Ï-%$!ù¥zFQñ{+ (ŸQTø/TTŸÝ¥(ù _~i*|Dͯù,å!†;@⤺W'Õ]>IF’‘d$‰KrÍ?Ϙ¸®pïÓ_ó 3x0Z ,—C ¼ÖŠHÌ¿šïŒ¹·œÕl.ì²¾·Лï›ù×a$ÓfÓÛ9[®Ë)%éàß\,cÉùl7 ÇŽ•P’ùÎ4P­¤_f]½UåGlTÏAvÁ+>g-£ÇsVaÈêÕ‚]¶ ÜäÌ)è±a½ Í&”XÁÞÇ–X„JIº?éÛex´J‡'&*g—ÿN+WÌÙ¤ëH’{É~o¾·NÞÀ±uô눘@éôØÐðµA‰ aZb*% èžAÃ)û£yn]tõöåC‘°–H‹©ñcËø;/e(F3÷c6샺$Pb†‰{¡GüuUö«Ð”¬2«ö÷Õ“ÈìZ cß{î˜øãb‚äèCy6NÞ¶P/I°ãgÊG{$X)c:|{¬=ß¶˜z1â}$'ÌaMIRîè3’—¿ ^’`GA2f³˜@¥$]•¸11XéÇ ³ð"I&Q» ).IÆî8A½UE½$Ž8 I{F•.I{úL4Äqb`?õ$â̸ßöˆI|’‘d$É&Hd$Û'ÉöIF²}ò?cR“¨´ÔÜ–IEND®B`‚omniEvents-2_6_2/doc/doxygen/a00298.map0000644000076400001440000000011110240666477017677 0ustar alexusers00000000000000base referer rect $a00073.html 8,9 154,33 rect $a00048.html 178,9 394,33 omniEvents-2_6_2/doc/doxygen/a00302.md50000644000076400001440000000004010240666500017555 0ustar alexusers000000000000009a28dd6453f86da3fdf9a6c31074ae0eomniEvents-2_6_2/doc/doxygen/a00300.png0000644000076400001440000000335410240666477017702 0ustar alexusers00000000000000‰PNG  IHDRßt6‚%ò!PLTEþÿÿo___???ŸŸŸßßß¿¿¿ÿÿÿ/l:ZtRNS@æØfyIDATxœíœÏwÚFÇó/pl®ÍKŒŽýá¸ÝÚ)9ö%yÀ1¡Äâ褯6Ç41· Xb „´egv…?-ÐΚ VF;ûÝvg$žño˾>zèh¶xß-ÞwË÷Ýrà}·¬À!Óm9pœçÀ9ð¦Àm~1Ñ t9¿[6ÖEÿL`jl'ÂìÙs<øÓz“Tѵ¬ä{“ƒÿ\`lõÅÜe`§Š?«F8=\ðÏÆÀ°Lv¸Wf7fçÐ3<æ5‹°¤a„ç¬c;¼èÞ±fýÐ/»6¾ëø±a³.‘¨vˆ¼1l02hÕm¾cŽoˆŽNË»ìÂvŠ¥b‰nB |Èž³×Ö[·ú¼®Ùe]1U°w ~lh"§ºruÀðVĆûTÑÅ—ì™Õ²q÷ãÍp4n|,EkèÚà๜X/Z›àgAÿðcðkw/Bôt/#¨2F`™ÔaÃŽÊ;­Ì)0̤s8÷%ð‹÷å8ÿè _ÇKºÃùÛ)s¸kb«›¿këZ¢£µg¸û¡ yhIàr׌ŸÿŒ~ ìTo^c LõÀ ¼ÙÚ`4¤>ΰèh‡€ÅÝ% lYóË…çxå0úÝ:ú%06m·\ƒn‡N€o2‡¡„atÙ°eŸï°x~˜Íá{3Ï«ˆÛNª4úýذ?„À¿.¯ýTé3Þø–¨ÒÕkÿ™éÀiÑÑ.g±òýMf켩åÀ9pœçÀ9°+¸/|«ÆÛA 0?q„hsÜíÊ5Exë~à º0µ>D¦Ó^XÒ a¸ÒÞS×Ç? &„?~Á"©à<´+rþƒ)“†É¢Xma®)Ã×gÖÿþB¬ìTÚóEkNxtR‚“ )Üu¦ÂâJ6øÅ÷‘°/rX¤•Ÿ¼Ê"|pfÝqšJ{þ¶”n4|ЂD8–ÂýI. aÈ¥á›>ÛÒÑ÷ØkívÃÓ:äQ]æÑñzà̺aK§Óžð˜Í¥.?‚`%”ö§Õ…ÁýЋבÂÅ/"‡%Ü©”¥õÀ™u±Jp:íÌ–ž±ÌkNEæMÑ£årÝûµ3Ÿµ6M¹îýÚYÇK{¹m“Vlú|¬x…îm~ âF¬ýMÿ¶¤M4¶˜^;Ö!ÛƒgÿH£OÿcÓª+µó?Š¿ï–ï»åÀûn_ÿOFõ‘@éIEND®B`‚omniEvents-2_6_2/doc/doxygen/a00300.map0000644000076400001440000000011510240666500017646 0ustar alexusers00000000000000base referer rect $a00065.html 8,83 224,107 rect $a00069.html 248,83 472,107 omniEvents-2_6_2/doc/doxygen/a00304.md50000644000076400001440000000004010240666500017557 0ustar alexusers000000000000008d1abd02cf783ba7142be523aef048b7omniEvents-2_6_2/doc/doxygen/a00302.png0000644000076400001440000000242710240666500017667 0ustar alexusers00000000000000‰PNG  IHDRò„X=kK!PLTEþÿÿ˜2Í___???ŸŸŸßßß¿¿¿ÿÿÿ‘P_tRNS@æØf¤IDAThíšÍvâ6Çç²ídÆ^––$,§'é1Ë63gÙP{™LO/ÓN°½+Ž?¤Uccë){¯dˆùH'„¸ "ô×½ú!]!à’7l]å$K²$o/¹ 5•/“kšâܸ’,Éë!wÉÉ£–Qx­ Ž7§O9¾€œýiZ¢ZF¥ÉòqcNŸq\žœ´ðVQ§G›4çôYǥɹÍFžÙ ”€® « „÷Ì´¢sûØ.,¼ªY:º}áˆÏèhQBµÿRSÕUù#*ÈvÊÆMѺ†ƒÔKYÊç Ú £!<oöö •ú2Ã+d!ßaQaCãTL5(­Agáð t4¬ +=¡¨¤í¬v… sKöiFH,ÈŸþ²¹5èì[uAž¬¶IÈ-¡ò–"ó2CN[Œ2CíÔ›OF]“Ö¨Ž0ùÌ Y•µ™¿8ªdÃ0XlCœß rTÆõ¢º ƒ£köĹ«FIˆÕRd~ LÇÙg‡°¤…Üa4ÞÛ¨'êh8ŒÀñ‡öC¬ÃÞö™ò9Äj9ò*Å^$nÀ¹-É’¼}ä%>¼ÿýªŸô—)÷«8¯DÞûfÉ{k"ßï&y…@o&yo佑äû½•–{#Éë|ÇdI–ä×&ÿ#É;Kδ;kä[Ökžß®ƒ²ÃÛÿANˆŠ Ñ£+:ƒ<¶ûŒ]ñ„'t”ùÏÈx’4Œ›;Åô&&DCFáë('CG™ÿTë!óLè1¦71?V!CG™ÿl×BÆŒg²O1½)ÈãÕÆŽ2ÿéÕBÆŒgzÜÂô¦ 7Øe#£NÞ(óŸV=dÌxÆ6¦7¹×ì…,JBž"-óŸõ1ãyÈ0½‰d͆“ä;žð„Žqþ³ò‚2z–óf¾?È¿bÕNþÊÞ«$Y’%yç]üv#É’,ɯMÞÅÓS’%y[É›|†Õöµÿõ¼$Kòûìê±+.(c‹œæõ)Çêè#·âæN÷UÈñ¯ÎÇJ¯B§jŽsúŒã¤äÎgóYä@ÇÛS¦Í9}ÖqB†…{9ÔÈé55!‰¥ÀjƒéñÜ€)´ù@¬n3Ó¨‹!‘ç £¡ÕŽ8ôÙ°r¨šå„¬|뜙Ê:Ñ)Ü Oi)-’Þ‚Ü$äƒó ÕÛ0Vâ›>ñù“‡G× £!0¸#N¾sûÈP)h˜“{+mòÖ±]|øiÑœËðÊIÎwغ—Ð8SMÊeäÑèhX!S׿*Pñ¯ËÑ5ôŽaáºpÇ´§W»B†¹ïŠÿqœ“üM›ì'uAž¬¶ÇXÈP™"ξ‰Vwœ•:| 'wØ Ù¿Ô!VŽ k¾9!|º úÝt„ÉÇNçP¹‚ 6è ÛçÌZDæ/Ž*Ùq’i© A–qFvQdp´\ªAœûÊ0ȱq†ý†ÞšêŠ8_,&óa:Î)ùkÁtäFÃñÞF=0QGÃhŽ¿_²ì픨ç9V•½­²·fÝ| …äUŠöe“©òµœÛ’,ÉÛG^K‘dIÞVò¿H!ðTý;›øIEND®B`‚omniEvents-2_6_2/doc/doxygen/a00302.map0000644000076400001440000000005310240666500017651 0ustar alexusers00000000000000base referer rect $a00049.html 33,9 209,33 omniEvents-2_6_2/doc/doxygen/a00306.md50000644000076400001440000000004010240666500017561 0ustar alexusers00000000000000a8f555f7981ba80660446b0ccb159e33omniEvents-2_6_2/doc/doxygen/a00304.png0000644000076400001440000000307410240666500017670 0ustar alexusers00000000000000‰PNG  IHDRÄtéÌ_í!PLTEþÿÿo___???ŸŸŸßßß¿¿¿ÿÿÿ/l:ZtRNS@æØfÉIDATxœíœAsÚFÇó86×ô`8&©8&3vð1mg0×0¤kÓ Ö1£[ˬn  Øý”Ý·2 )B±´ï‘î_xû–}ûÓ{ûö3qòzö£'@/ƒx 2ˆ§ ƒx 2ˆ§ D¦«s6±š ¢A4ˆ¥E‡8sW£Ý¤=&Ûëy8²ý=÷Žñ¶óO7é1[ßÝ%)¶6h¯{¬Ÿ4 âê¶Ó:¨uꎗ6 b±‹Yè¼Íà|3<ÔgkÖ]°Ð©ûÑ;§'Ûà`3îùQ[‚‹ö1!r9ÓÙb²˜ðàú*FœØ“›ûÎm}9ål4ÏYS1"[ƒ!øtTQTˆŽ`ŒT¹i¯šÁhr£‚47åf©Á´ Q%jÛyBØ qúùÓf-*D0££B„r“Eüõ°Ù(Fdç)D0"l)Ä»»QÐc÷a=NÔvv-ëG†[f-^ßÛŒu—ªŒºéŠÊܶ4¢Ž b9Äj2ˆÑ ––ADÔ¼–×Z{NîøPˆµZ>Ì|O;¢ƒXí7ÑBq^+à¨àãè Q,¢˜ŸâÞd$ÏÔƒ ΋( :â~ë) ΟBÈ 0§d<¢œa=™Kþ9¡zDˆPq” Ä„5•芃4ßt£9âSÃC·©Ÿ¾ÈȉËÌ›Š‘±Ô¬‰Ê*-bÉ:IFRIJa¡ #)bé¨ìŽ”ˆ&L‘ª„ˆUÒŽ"Ué«í©J†Xu—Ãg¤B¬¾£3R!jÔ ì’C„¨S6°_ÈÑ ê͹¬Ò jÆ7Œ$ˆºaÀMUDí¢¦*"BÙÇÜ9QB€˜ªˆ(³CLU|D¤ÃKUtD´Ë–ªØˆxõm$dDÌ +pq÷l¤åˆ‹ˆüg8TDì_õp’ÿFDDŠ7ì1ÆDD$y/!3ð‰>Õ ‘ì£líäÀB¤ûT{d,D¯\èæ"é7¼4ÇA$%Թÿ­üá'ºþ©ô”6Ú j]¤òJ"»‚ñ "‰ "¦ "™ "¦ÒˆQ{êìl6üÉL#ïY²ýs`oÇ`ì"yNÈN>àNüúQËu$[D] _„·öÎÝ·ˆýó·»Ñ·¬äð[´7ìÍcnYïÏo2ZˆÄx…ˆz®-Ûr¢/VÝõÅgQ„øJÝvòÓöSwìÍc9–<ç?ç;ˆz®áNØ’7±½ùˆC!ÑýèëòÎ8èk#òEs,îGõì¯ÑP¶Á!¢À^Ï\iàƒé'lE¾S£ú¶Ds"–£!ô Y‹þTöpV߇¨çxÖ®ˆÿ  å3v®ÒˆÒ1ÆËñ2à­›ØÏÒ[^…çýÆdŸw;¢+ØðÁÀ/¹½Zy‹+y~! ij} /z Ù†xm½å—±ýg«½Qϵˆ/¯ã)ÄX>cç*1€ƒ;ÜQkÞõ¿v¹³¼RWwãg16Q~ÀÀ]k}¸îªsÜwÀ•'{Û꺸«ìÎPØ…ˆ•]ogƒG§;W9‰šðÿÒ6cžò³z¹YÊ §8ƒnòÜQ}aÛ²ƒì-ûDò‘´(»¿-ê¹~LÔÕÕÃÒý‚r“õóûoÒ(“\ù‘ I?`P~¸3x_ɸ¯Š¢ì½‰¢#”½ Šz®7åFFüuq¡r§üX–Çr}õq¶¸Ù!Wœ#+÷™ÝTyƒ¦©õV­Ew»Ø^°õ\ƒïèoµiô» qßZ„ý7³ Z¡' <‚Ÿvº¬‰¶+ ²'쿲ÛcE$+ªìÕ‰íáìz¢žk••ñÖ¿ôâÎÚ ¸°±½åýpž‹ˆã:Ohˆ}w{71aa"f†Î q5N°ógÔ绸RÐóY(­S¤ =ùýðý3}|²|(~K)è¶òö â{W ª¼A¨ø!½jèv“PáCzÕP¥Rbï^5´¹_ª R‚¤ )HA R‚¤ -Blý?Z¯, RЋC]~5‹…Œr~·ì.l½ð~nœ]üáá0FØÔ…:™DÓ¥Pø•ÔÝÙx%$W…á´"Ú{!›ÖSÒ5ÅÝ$%p³Ý‰©ëŸƒ¶ òMñÊÍ<Ïäªò.x Ádu8ê ¾¨»uãrhhÀÀöjQ5‚ÈѲ‘.Às}®ÑÚ8­Ú÷E\¸Q!sZ€¸% ì&FmÚ9ÓÀ;NÏ–CßÌÓtM‡dÀ2¨;pBΨy„ ‰úvú0¨‹)ü2ࣜ¾‡V¯dõ®º« W ©LÜðK¬ìd ‰î“Á” ƒC£9ƒZM¹±ôÆWm]™ûÛ,ÿD ¡ÃoÆôŒD0 zBÏÆn0ÙºCj讄²Ý|, þ¥‰Ó$dôí<äb@BÎÌi2|Á¬»^½"™Þyˆ#Ïè"ƒâgt!z’Ž-º è¦!Ò;lJ¨óØÉvþŒ¨ãJ¹)˜ žÏº Æö”l=ËåÉ«¹§ÍG 5ÊçÕágƒÂÖ† #mCÐSEAÿ´¢ ½ôw7k}›§öIEND®B`‚omniEvents-2_6_2/doc/doxygen/a00306.map0000644000076400001440000000005310240666501017656 0ustar alexusers00000000000000base referer rect $a00051.html 38,9 169,33 omniEvents-2_6_2/doc/doxygen/a00310.md50000644000076400001440000000004010240666501017555 0ustar alexusers0000000000000026331b844e1e37b4dcdaf798982f92f7omniEvents-2_6_2/doc/doxygen/a00308.png0000644000076400001440000000166710240666501017703 0ustar alexusers00000000000000‰PNG  IHDRÏtТ{Ú!PLTEþÿÿo___???ŸŸŸßßß¿¿¿ÿÿÿ/l:ZtRNS@æØfDIDAThíÚOSÚ@ð~Ží°†kgÐÉÑuâ±£”xššµåH[Ùä„äí©š²û)ûv± ­³Ù}›ý퟇}Ç7S~¿S‚ôO X»Ð¿ƒv+Z¤ rP fM#ÊzËÆÄöÀ-Œ\ý°vY[•YV®ÊÓiE´ßhš‚"]¼r3ŸiV•pÁ¥¡´ÍÇžÝð5Ÿûn5iÛNUÖèq·ÛÛÌç¸un<臘ø`WͪÉûcšA ~Ì?Y¦_ãBüÄKxÂ's0Àí²×e2ÌÙÇÊq¶?ëŒíº„0ÀƒÒ[—ƒpæÑ„ôý§œþtE°gqH&Ôìë´2¨xyÈÁ@)H¦w²,‹‡m<£½ œÑ^)H>°ógÔ绸RÐóY(­S¤ =ùýðý3}|²|(~K)è¶òö â{W ª¼A¨ø!½jèv“PáCzÕP¥Rbï^5´¹_ª R‚¤ )HA R‚¤ -Blý?Z¯, RЋC]~5‹…Œr~·ì.l½ð~nœ]üáá0FØÔ…:™DÓ¥Pø•ÔÝÙx%$W…á´"Ú{!›ÖSÒ5ÅÝ$%p³Ý‰©ëŸƒ¶ òMñÊÍ<Ïäªò.x Ádu8ê ¾¨»uãrhhÀÀöjQ5‚ÈѲ‘.Às}®ÑÚ8­Ú÷E\¸Q!sZ€¸% ì&FmÚ9ÓÀ;NÏ–CßÌÓtM‡dÀ2¨;pBΨy„ ‰úvú0¨‹)ü2ࣜ¾‡V¯dõ®º« W ©LÜðK¬ìd ‰î“Á” ƒC£9ƒZM¹±ôÆWm]™ûÛ,ÿD ¡ÃoÆôŒD0 zBÏÆn0ÙºCj讄²Ý|, þ¥‰Ó$dôí<äb@BÎÌi2|Á¬»^½"™Þyˆ#Ïè"ƒâgt!z’Ž-º è¦!Ò;lJ¨óØÉvþŒ¨ãJ¹)˜ žÏº Æö”l=ËåÉ«¹§ÍG 5ÊçÕágƒÂÖ† #mCÐSEAÿ´¢ ½ôw7k}›§öIEND®B`‚omniEvents-2_6_2/doc/doxygen/a00308.map0000644000076400001440000000005310240666501017660 0ustar alexusers00000000000000base referer rect $a00051.html 38,9 169,33 omniEvents-2_6_2/doc/doxygen/a00312.md50000644000076400001440000000004010240666501017557 0ustar alexusers0000000000000026331b844e1e37b4dcdaf798982f92f7omniEvents-2_6_2/doc/doxygen/a00310.png0000644000076400001440000000175210240666501017667 0ustar alexusers00000000000000‰PNG  IHDRìttÈà !PLTEþÿÿo___???ŸŸŸßßß¿¿¿ÿÿÿ/l:ZtRNS@æØfwIDAThíšAoÚ0Çû8n÷v"ÇNc¢×i¬áØ­pÜ"ÔäXµä>ˆs$$}4!ö§Ü{v) ƒV%¬U©ŸAÆþÿã_í÷’"µ{âYbOc5Vcw ËiéØ[b7­ ±ûÔØÔ;‹9[Àma¬rÃü³·†=«ý,æ&"êvó¦; ç [ òb ì{ùZDT4E…vQ. ÑKCrB;¼5RëÞi$ê##‹/Éæ°‰”ÙYì‚À{nY,ƒé(%Œõ6ñ“æ´vf3&"Þi‰4… üKéÝJ,ÃÆîÈ’r£›w’¦Ü$ï(7¥Ä¢ÀÝÒXyÈ9,&ïÐ6¥¾ÄÎŽÕÖæ»E;¥±XRËØo_AL…­…-`ñ*`»]‡Å´fêÝåÜZưø¸XÊíÑÔ¢Èò5‹•,L„-`Ë„Æj¬Æ>9ö¡/ßoþË×óãíæ—–Àþ©¼.ìæ§\[yeØÍ“ûâ°ž»qr_¶R)qÊ/û\¿ 4Vc5Vc5Vc5Vc5Vc5Vc5Vc5öÕaËþË#Cc5v±±;# ÉG±ºæ¢cîÏGLˆ^¾Ï…Ÿ0¢Þÿ`­ßg Ûˆfž—¿îNÃùª?3Ï»¼í¿/aG4·ÞZì©|-"+.’>øó1,åçûÕ×܃µ(mÄSçPÔYm¢Ö½®ÆíLèÔ©Fé'Ç‚9l4æ~”š °Fpa;Î`IF•·M;  =¡h³Æg©‡©± Ëálj'Á$à¬ÝTØÀúakPMÆœf¬^£uh K3Ø#ñéØõ¡ß§85ó~†½aܸÄïœ](ýç®ÅrlŒ0"KÊÌ®ëŒ}¹IVŸ_”H, Ì„Rº¡VT—½ò6ÛàöåÑ4˜)ubQí!ç°˜˜ŸúBØ;¾º˜'LbQ@'=@ô5éåÔ÷ÁnðÄ0EêÙú’ZÆ~ü‹‰Âºy, ËHcŸÊÜ*¯Ü-¸ç»%Têkv‹7Pëy„Y¯aU²¹œ[È 瀂MV2Nͼs™[ó.·Dékr‹‹¥Ü¶C›bY"Ö-V2uMÀ‰ °ÝVr’¯dð`%¥‡éÑ*l‰³xÕŸÖÃâãn[Øy?6§o;žäíôía»ûاÕØÝÀþÜ6ä žIEND®B`‚omniEvents-2_6_2/doc/doxygen/a00310.map0000644000076400001440000000005310240666501017651 0ustar alexusers00000000000000base referer rect $a00051.html 53,9 183,33 omniEvents-2_6_2/doc/doxygen/a00314.md50000644000076400001440000000004010240666502017562 0ustar alexusers00000000000000d6bb3d683e4ab02cdf10c31e8ea6fd5domniEvents-2_6_2/doc/doxygen/a00312.png0000644000076400001440000000175210240666502017672 0ustar alexusers00000000000000‰PNG  IHDRìttÈà !PLTEþÿÿo___???ŸŸŸßßß¿¿¿ÿÿÿ/l:ZtRNS@æØfwIDAThíšAoÚ0Çû8n÷v"ÇNc¢×i¬áØ­pÜ"ÔäXµä>ˆs$$}4!ö§Ü{v) ƒV%¬U©ŸAÆþÿã_í÷’"µ{âYbOc5Vcw ËiéØ[b7­ ±ûÔØÔ;‹9[Àma¬rÃü³·†=«ý,æ&"êvó¦; ç [ òb ì{ùZDT4E…vQ. ÑKCrB;¼5RëÞi$ê##‹/Éæ°‰”ÙYì‚À{nY,ƒé(%Œõ6ñ“æ´vf3&"Þi‰4… üKéÝJ,ÃÆîÈ’r£›w’¦Ü$ï(7¥Ä¢ÀÝÒXyÈ9,&ïÐ6¥¾ÄÎŽÕÖæ»E;¥±XRËØo_AL…­…-`ñ*`»]‡Å´fêÝåÜZưø¸XÊíÑÔ¢Èò5‹•,L„-`Ë„Æj¬Æ>9ö¡/ßoþË×óãíæ—–Àþ©¼.ìæ§\[yeØÍ“ûâ°ž»qr_¶R)qÊ/û\¿ 4Vc5Vc5Vc5Vc5Vc5Vc5Vc5öÕaËþË#Cc5v±±;# ÉG±ºæ¢cîÏGLˆ^¾Ï…Ÿ0¢Þÿ`­ßg Ûˆfž—¿îNÃùª?3Ï»¼í¿/aG4·ÞZì©|-"+.’>øó1,åçûÕ×܃µ(mÄSçPÔYm¢Ö½®ÆíLèÔ©Fé'Ç‚9l4æ~”š °Fpa;Î`IF•·M;  =¡h³Æg©‡©± Ëálj'Á$à¬ÝTØÀúakPMÆœf¬^£uh K3Ø#ñéØõ¡ß§85ó~†½aܸÄïœ](ýç®ÅrlŒ0"KÊÌ®ëŒ}¹IVŸ_”H, Ì„Rº¡VT—½ò6ÛàöåÑ4˜)ubQí!ç°˜˜ŸúBØ;¾º˜'LbQ@'=@ô5éåÔ÷ÁnðÄ0EêÙú’ZÆ~ü‹‰Âºy, ËHcŸÊÜ*¯Ü-¸ç»%Têkv‹7Pëy„Y¯aU²¹œ[È 瀂MV2Nͼs™[ó.·Dékr‹‹¥Ü¶C›bY"Ö-V2uMÀ‰ °ÝVr’¯dð`%¥‡éÑ*l‰³xÕŸÖÃâãn[Øy?6§o;žäíôía»ûاÕØÝÀþÜ6ä žIEND®B`‚omniEvents-2_6_2/doc/doxygen/a00312.map0000644000076400001440000000005310240666502017654 0ustar alexusers00000000000000base referer rect $a00051.html 53,9 183,33 omniEvents-2_6_2/doc/doxygen/a00316.md50000644000076400001440000000004010240666502017564 0ustar alexusers00000000000000d6bb3d683e4ab02cdf10c31e8ea6fd5domniEvents-2_6_2/doc/doxygen/a00314.png0000644000076400001440000000156310240666502017674 0ustar alexusers00000000000000‰PNG  IHDR¢tô»ô!PLTEþÿÿo___???ŸŸŸßßß¿¿¿ÿÿÿ/l:ZtRNS@æØfIDAThíÙÍOÛ0ðý ½î)¤(E)JQŠR”¢¥(Å×-Ò}óŸ/R|­â«)ŸÄyÙCä`XKô¿Y‡öjN!–•ëÂlÙ! ø•ßbD·Ç_¹\ìBìM—œÁ¸^޳L §¨¦ÂV͈3plÒžƒyÒŽ;Äfu< Úñ&iGÀØí”ˆ„5ê(š¢A4¥©Ø†uøj“Þ>Ë1˜˜qlÇù”’Á…7Ð/Ë1×q2!±ÏYg]¤fÙª+Ÿ°ý„ØSƒ7Щ^uNd9ºkÔçÿýâÞ©xŽ\]œ;°÷#!üB€Ÿˆ€Ê“¹%NÎ{@ÁJÅÎÄH(dK á&GP&ŠÛ“-Ë‚¸Ãöñ,ÃlíCöÆá8!ƒ‘›(Å /îc‡,wìqÏ —gmïo: ÿ\u¯B¼oq²VyŸèf­9±¬H±Y±Ñ"Å×#þl´gk…‹·IEND®B`‚omniEvents-2_6_2/doc/doxygen/a00314.map0000644000076400001440000000005210240666502017655 0ustar alexusers00000000000000base referer rect $a00073.html 8,9 154,33 omniEvents-2_6_2/doc/doxygen/a00318.md50000644000076400001440000000004010240666502017566 0ustar alexusers00000000000000edf1badf109415bc7f6979b2eccb4cb9omniEvents-2_6_2/doc/doxygen/a00316.png0000644000076400001440000000156310240666502017676 0ustar alexusers00000000000000‰PNG  IHDR¢tô»ô!PLTEþÿÿo___???ŸŸŸßßß¿¿¿ÿÿÿ/l:ZtRNS@æØfIDAThíÙÍOÛ0ðý ½î)¤(E)JQŠR”¢¥(Å×-Ò}óŸ/R|­â«)ŸÄyÙCä`XKô¿Y‡öjN!–•ëÂlÙ! ø•ßbD·Ç_¹\ìBìM—œÁ¸^޳L §¨¦ÂV͈3plÒžƒyÒŽ;Äfu< Úñ&iGÀØí”ˆ„5ê(š¢A4¥©Ø†uøj“Þ>Ë1˜˜qlÇù”’Á…7Ð/Ë1×q2!±ÏYg]¤fÙª+Ÿ°ý„ØSƒ7Щ^uNd9ºkÔçÿýâÞ©xŽ\]œ;°÷#!üB€Ÿˆ€Ê“¹%NÎ{@ÁJÅÎÄH(dK á&GP&ŠÛ“-Ë‚¸Ãöñ,ÃlíCöÆá8!ƒ‘›(Å /îc‡,wìqÏ —gmïo: ÿ\u¯B¼oq²VyŸèf­9±¬H±Y±Ñ"Å×#þl´gk…‹·IEND®B`‚omniEvents-2_6_2/doc/doxygen/a00316.map0000644000076400001440000000005210240666502017657 0ustar alexusers00000000000000base referer rect $a00073.html 8,9 154,33 omniEvents-2_6_2/doc/doxygen/a00320.md50000644000076400001440000000004010240666503017560 0ustar alexusers00000000000000c52f0a38fc32cd325b40ea1f4cc20702omniEvents-2_6_2/doc/doxygen/a00318.png0000644000076400001440000000530110240666503017673 0ustar alexusers00000000000000‰PNG  IHDR’ß.HÏ'PLTEþÿÿo§§§˜2Í___???ŸŸŸßßß¿¿¿ÿÿÿÍ×ÇàtRNS@æØf HIDATxœíœKsÛÈÇU•cpñ9û!¶ŠGï1q¥BGkñh—åHÇ]9¡xŒYˆ€££8O)ïÚ|RYQ¬)>0*Ýð ÉÐCQÊü©ØôàÇn !ªgöØcÑÞ}Ÿ™4ÉîI“ìž4Éîé‘‘xdòçžéœÊõËI|1eùÂMõÒ$k= 6ÕK“¬õ(ØT¯ÇJRóç»F~àyW¢ƒF/ÝÒ:Ë›’N“öš÷v”|1,ö¾õIÜïœdô“ùÒžï+¦¹ð”M¦Oîöÿþ:áiº7N"ë4a}2‹E$¯ÍóòÄŽÛ—Heüš+Xn>{0v–èaº7N"í4nÇ÷E$>µc­YŒdRgã¶U黬Û*A"@óW̲^)¨\±V£âÖUØ?+­$aøp˜Ã/Î^`¿''á«ÖNqü¬ËuæÜU푃ÍדlvŠvtöÐ'A×ж㽰‹±GU4ŒÛ= ¯Ì®…Náä¿÷Gžç†žÿ\ÇvCxUC#{n±ó×kIdòãŸ[hÝá‡>lC î´XbØŒƒ³<¯- ág¬Óá›2ì4ÃNëÃvÔ©ÙɬÇÖ’¤pÊÐØCwx 'é±YL`'ºA/">š÷…;5M“¹uÈÎWa§½0¥ …¹‘ Öë¯%‘uÊíàì¡;8Ga;˜’ÀN‹½üx^¯F·šè:áobË)Ýa/q˜*£«»^4̰?¸åÐÈmVüôgl~דÈ:åvpöÈ]øÎè`SØi±~ë'»aìrþ‘Ph7îVˆ< 6ÕK“¬õ(ØT/M²Ö£`S½4ÉZ‚Mõò3|r÷dÓ'hS¥ûèí—§éÚ'ûMýiêͺWr®ÛBnH Üî„=¡G) ßåv’‰„¥pO$7Ô(’?¹²’¢î„§×7ù{žê–&¹²’äïx.šd!¹! I7™H¾¡%¹¥H®Lÿ1}Ân(Q¾c÷F7]G‚̺¥ð“õ¿ØdA!¡@e%!Ë/ŠÄâÊ\Y@”__iܰ<54A1H¼ ²“….$yêV‚òÕÈïcª$A!»ÜY¾Z¢ÜA!QyHr…2$ùê»rÞ“†$g¥Z®ü¢¼ÜY^’\ùeäê:¡œÕƒ9ò‹ð­„+odöüš^îVbOÒ"£¼$™ókv¹ï Iæ ÌFà!Éx{ýå~ÐaVåjZœ‚ß¼8¥âÖS{Ì_/œ)¿¢Üêž•¬òå´8¿yqJ7¬7H%‚Êç,A‰rkR×-;°£â”ðï'aÁPZdÊtÆÒ ~FÅ)ð0yqJTÍ’JÕèéƒbD¿!&U$‰ŠSðÁ‹Sê÷“]éƒ2{SìÖJœ¤?#áÅ)½{"Ic¶…cDÅ)øàÅ)÷3v±Ô$Ô÷)¡HHR¦—AÑgB4óOR% ÉØ[Q;œQ4$©‚Bú—â\Ds‚RÜÝSü‡A$ªÙMÒùEû'H¤óKQnÎ8“̯_Qõ—ÝÜ9©üRóVÂEG"•_Yw Îg”ŠÂP’Hüõ¨ìrg´sL7æ—²E:[vSPT†„–dCP”†„xóú ¤}ÅEK²6(*.F>«|MPˆ?šOˆ˜dMP Úž¢žé¿2(Šs‹ždeP”ŽÀ(òÕVEíŒ"'åVyH¬ˆ!üCE=ˆŠµ=ù¥>·”òË ï%!ë­$‚¢|F© IÅPÐIBJÖÀ‰e+!QC Ê.&A’iŠÎo–¦ûd›æCN²ÕéV Ò I”K“¬–&É+U$ä‹òÀ0+þ÷î´µ"úEyÓœ>ù²¼¯¹ÚtbqÉ‘Ð/ÊãÌŸ8‰ÝüØM'— ý¢F¤’„`±¡Ò$2¢YéBV*IH„‘–&‘ÍŠ0²Ò$"Z¥GVŠI¶x¡h ­0&+M"¥Gs©I²I“HI“d’&‘Òã!1T:K“HÉPé<.M"%¾‹éWÈ&å$³ZŽ/«Û‘h{$âò:©&™¸uay ½”¿3:âòzmDXžB¯-ËSèµay ½¶A"*O¡×H„å)ôÚþ]ýry ¶Or¦èöE%‰p½ž1å >‹Ò÷ÂR2T:K“HÉPé<.M"%C¥ó¸4‰” •ÎãÒŸAJI“d’&‘’&É$M"%M’Iú=^J†Jçqi)*Ç¥I¤d¨t—&‘’¡Òy\úQJ;Kä™â#£\3©4‰&Y«ÿ…Äÿº÷í^Öab·H°—ÛBá[ü=›(o?T’è¬&¦r·>nÍ;oã Êâ¦St8­~âÄ[qÃÂiêI¾T>ŸÍ;¿ò&ÍæâÙœy"ýfsñ¼Öz¶×úw´Ê _GÄ+³ƒÏë+wÒ“¼ã_sM–Ï&ötÅëïo"aOÍh•$ya¾êÖ¨IjžwèìçìÀßïCvÁ©÷ŠîÄ«ö½]tF¯íØ&^—¶÷¥Z!»Za³.+âav­c×8IuèUßO’$­2ƒ$»˜Ô7TS¥'Ÿ¾Ûïô;z’t¬Îe·ò¥8¼¼‰°ïÀã¯Ííb¹XöÀ’`³wÍ¿áa~ š¡­{ÑøíECH⇫ÌIT»£„$pùÙù-~ÅMz~«s‰¡’iš¶½6Gð+þ΃fï{< Ixvù­kóÈ]E.M£*&<»Hð,~€3fÌâ$×ϱ™xíE’oæâû'fhk{.ky’_s\šÆ4m5× ^ñq’ïÿäùžÛ I¼}QLZa³ÀkF$ÞþŠ˜ðU•¿Þý×W™^ÕŒ]8 /‘Àøê×¼n¥Q ³ëh~,4a°†fì:ÚÇ‘9yðyÏÉ%ᇶ`•¹|$øÎ»NN»„¤¾8v-]'CšëÝáØÅØeb쩃¢I܃Ã÷å„1 ¹:ðÂLInù„;áMäÁµ½ë$݋ϧÉÚ¯:½‘û¥ðÀIfòÙã! ¯øÇA,†$£þ?Iv[šd÷¤IvOšd÷ô?E¨—¥]½wíIEND®B`‚omniEvents-2_6_2/doc/doxygen/a00318.map0000644000076400001440000000015210240666503017663 0ustar alexusers00000000000000base referer rect $a00047.html 64,100 304,124 rect $a00073.html 8,9 154,33 rect $a00048.html 178,9 394,33 omniEvents-2_6_2/doc/doxygen/a00322.md50000644000076400001440000000004010240666503017562 0ustar alexusers00000000000000062957ab2689718e189c9b8092947128omniEvents-2_6_2/doc/doxygen/a00320.png0000644000076400001440000000675110240666503017676 0ustar alexusers00000000000000‰PNG  IHDR’:ÎãÉJ'PLTEþÿÿo§§§˜2Í___???ŸŸŸßßß¿¿¿ÿÿÿÍ×ÇàtRNS@æØf pIDATxœí¿wÛFÇÝ×—?"ï©tÊ;¿‹ÉÒÉS,–ö‹ªtœ„byæ1KÛI$V÷œœ)¢ºMˆ@a?ñHìu3»  ¹f!ŠÙ/- X,fñÁì.@r0¾ÇöE÷nûȤIvOšd÷¤IvO{FâÉ -Ó•k—“¸é”ä¦.ª—&Yk1eQ½4ÉZ‹)‹êµ¯$ ç8Üä¹¾ã\¥íä=”×Y\^”4š,o8ϽäÉ0Ù«î»ôvCï÷æ“V¸­ì7›‘U6›¯Œ~–°4ß'‘5š(÷Þ5K¿¦‘sP.ÌÁŽ^–4€5q6š¬V¡µ£»†ßWi$>.˜åÓò)ëM]Ñh½d_5ßù• 8Mý‰5aðê~Ûâ…ÏaýäjêbõU>‘5ŠåhÊ…9Üу% `M\„&«}ø]vÜ(hÏÊ+I¾lfóÁyí·¾…•—â¬õƒCœ>ìóÂ6³Çõ–gcõõ$›b9šƒraŽ“ ihëñVØK“±×Õ:L­k šœ¬ì]‘FáàFÿp=LjFßþÑÆz8«¢=6ÙÛgkIdòý›X.ÌáŽÇ.,C n4Y|ç·L˜mf:Ž•BÂg¬ÑÉ·ØØ¶'VШ) ÙËïÙ5[K²…Q†æ \˜Ã9É5[ø6¢´‚>±Áã^ØnlŽ6Úl6Ù  ½ó©hôZtéQfa^Èü»®%‘5ÊËÁ” s°#ÎÂ660'&{òëÛŠ'6Ìn´qÂ/bË]ºÇžà4UASãë`šaQÈF+½û«¯ÓIdòr0å9qe´±9 l4Ù°û;ƒÍ0wÙ §‘Ph7îVˆ,¦,ª—&Yk1eQ½4ÉZ‹)‹ê¥IÖZLYT/7Ã'w÷7}‚6×v½ýïÁvõ“ínýiê§ûtg2ÔÍAnH ÜÜ »OrppðEn#™HˆQn‰ä5 ‚äï\YIQn„w¯Ïò·<× MçÊJ’¿áP4.ÉBò‰Ô%Â)f2‘|FKrCѹ2}czŸ}¢Dù‚Ý `|"h:ô¬ ;Y¿Å&s *+ Yÿ¢èX\™# ˆú×G3,OŒS +¨ì$$N¡sIž¸§|4òÛ˜+ SȆ;ËK”Û)d30*In§Pº$_|WN§º$IN§ùv)_Ì]®÷)„30*gô`žþeäk:®œ$9ú×Ü%fbK²DFy#:³;e>qí If§,&®]!Éìá’£3kWóàüáÁ)µA{kƒ¹I2¾QŸA ÏÊfåbœ‚?<8¥/â ¶RþÈçLý+è[³ö´m¶üVœ"¾x)†¶A w§ÃC+Lø§À«ÉƒS‚h–­D@’Á)ó|RG’ 8_<8¥}+½+‹SŒàïð¸Qæ$à N¹¾%’­Þ§àÜ$Ap ¾xpÊ­Ì]¨-BùN1 É–N1(ÚLˆæù“­œô­©³"v8£hH¶r é;ÅPDÏmáÚwŠ¡ˆH¶pŠ"—=§%ýî‘âKŸT‘=q&Ù¿Tõ-BÉþePµ—ÝS€RN!þ"*:©7*Ys >™)Ñ¿>§k-!ÊgL7:EÝpg´$û—ªK és¿ú—R—?Á¼Þ)i[qÑ’¬uŠÂEüTù§¨yŠ˜dS Ú–¢~Ò¥S÷-z’•NQ:£È³/¬pŠÚEN’î”å.Q#õ=—z¹=Rú—ú¾¥„$¥ô­$¤"ßJÂ)Êg`” ’„S $¤$NÌ)…¸D IÌ)L\L‚$Ó#:]zÜ'Ûc>ä$…>n‘¿íšD¹4Éji’¼REBž”¦Ùô¯w絑Ð'å±›ÍùÊûåmåÀÔ¦‹KŽ„>)®Ø‰Í|ßM— }R<|(9•Ù ù1ÎßT<,TÜ»è“òàACÙC¨h³¯›OýçSkxR eRÌJeö/9÷Û¬3««'¡Oʃ>2üö˜)r©'Q‘”‡aY‡ýø¤ÅÎÿ^ }RN2´òŠ_Ïs©'¡Oʃ$P†«íEn HŠÐ¨]»Ë$gK·/w˜dzµ(u‡IbÒ$«¥IòJ“¬V¶Ý„äÙ™œ$Šù5J‚dC[H“Ȉ&Ó…¬T’$„‘–&‘MFYi eé‘•b’Š&‘Q†1Yi)íͤ&É&M"%M’IšDJûCb¨4—&‘’¡Òx\šDJü”¶Ï>MÊI±ïW×#Qq$éá)tRM2´SÃSè¥üÊh§‡§Ð«’Ôðz@’žB¯HRÃSèUIZx ½ I O¡WñwõËá)t*žäLÑí‹J’Ô|=SÊ >Qé{a)*Ç¥I¤d¨4—&‘’¡Òx\šDJ†JãqéÏ ¥¤I2I“HI“d’&‘’&É$}—’¡Òx\šDJ†Jãqi)*Ç¥I¤d¨4ןóʨþIš¢H”?è´õMQi%Ú’\ IwŠÄÿxïó{Y'¼Ý"Á_óg¢Ê·ävÞ=`ùŽjÖTNâU?Dló¼<åM{¦çÿIc8âï1_=ÉÙá«H€Ó0š—•ü”šÿg »×ýwe†çq*ìè?ë#w¶'ùŠÿ ³¿¢¹´ü?ëH؃fek}Ý|:áY•?ŽÿëŠÁÞ¼2ÆÆI#`B’jtîŠåÿy~Dþœ»àl'æ.þè`J²ëÑñ«J¢0 ¹Â³íóg W<y½µHÑ„gÛ¿YɱY;@ží5Ù¬] YÈgûCŒø,Ú9`Ù’Œús’ìÏg[kg?ÞVû”G¡ñ„t6íSœý!Ù“Ì1ûC¢³ùd”&‘ÐþäÀÙ’=ºƒÔ$Ù¤I¤¤I2I“HiH •ÆãÒ$R2TK“HÉÌàG­Š"ÎË”%õ)Šd!eI}”“ðð•Ð]1‘ÔGQcʯŒøµüq£bb\‹Hê£Hd)97[SËĸ‘ÔG‘T“ˆðÏ5E\Ë]'K>a^K$õQ¤‚ÆIÙĸ‘ÔG‘”“„sW‰¤>Š+ê®þŽ_ã#$*Ûá*(›Ï´§°!}/,%C¥ñ¸4‰” •ÆãÒ$R2TK“HÉPi<.ý¤”4I&i)i’LÒ$RÒ$™¤¯ñR2TK“HÉPi<.M"%C¥ñ¸4‰” •ÆãÒWF)퉿õ£@Ò$šD“h ’;›ø.cÃGcáñ”⥳ÅRÿ©;=^¹’Á¿.ì†í”ÜËËȪcw]9³ËËhÁÙ2 @´ª€S(Iÿÿ…r—ÝM%‰u¸– ƃIÉ.KbW¦u8*œQ«½ ýµcuû¬äVãЫº](­O£Öcv„¥?j¬Vân¶W…jXÖg§}¯Ò}Õ{sáVagܰœŸ¨6n(&qáÇ·J•RÅ™|ðÉ¡óóÃå?ÝÓðɨgöœžÓ?ï<ö†=K Të×Þ—`7X…jXöÓåë//ÛÝúüܧ4­Zý ¬6­BâXüèf|ÄÝîXù]$ónöá @Õíò®zãv{3ÜщÞ5sŽàªC»Úø÷1ÇŽUîbµq1½+B>:À`!NòüçªèíƒY„„÷¤G¾Å˜)H Ú ç>Çšuâ¼xûø3Çú­$ª1âc$½7§Žï\ ’jÏLñ TsAWTEï |bÿæ6¸O€d0Õ“ðY8Jr ó«W…qòZŒÃq%ÁÉÚ«ök’ j83ã¤?r,Ÿ q¾Õ“ð+ãò8™8?òIùz™»–ÇÉ)VƒÙ 9Ú8waH0wõfÎõE°Õrì#¾ š„\OâWeÝ!’Ÿ.Ø’~ôFîN“l&Ñ$šävHîŠ4ÉîI“ìž4ÉîiHþõg´$ôàpßIEND®B`‚omniEvents-2_6_2/doc/doxygen/a00320.map0000644000076400001440000000021310240666503017652 0ustar alexusers00000000000000base referer rect $a00056.html 86,190 281,214 rect $a00047.html 64,100 304,124 rect $a00073.html 8,9 154,33 rect $a00048.html 178,9 394,33 omniEvents-2_6_2/doc/doxygen/a00324.md50000644000076400001440000000004010240666504017565 0ustar alexusers000000000000007e33d74468d6b593cde36625676daff6omniEvents-2_6_2/doc/doxygen/a00322.png0000644000076400001440000000107610240666504017674 0ustar alexusers00000000000000‰PNG  IHDRÃ*üòÓ!PLTEþÿÿ˜2Í___???ŸŸŸßßß¿¿¿ÿÿÿ‘P_tRNS@æØfËIDATX…íÖ½nÂ0àtíÔ¬Ÿc¡ñ¢cª•DI”Ä¿ ~ô"ˆ/M».¾Šé•®ÿÁFé'JɳSi,éibÀßwÏ… 3gÊ)e^¸]×vÊÔ¨¦ÃµsH„/¤éî&2(!™!Œ7ƒ4OAlŒ4ØØÉ7SÈ Ó<Á£J²Q¬5䭰£¶gÆÕbÇÀÂ9;à¹7¨9çÙ\ZÔ¥®È£ûر ¢þÁƒ…w\ÅóŒºQ‡ÅˆI„<’'j?`±ßöÁ—y´®ÈÛ)ÂaN Ú(I@òYÃZ´{NÝ.jÉâ‘Hg„®¡q†è}ö ¹Q«nY˜<$ˆ»Wk›G]ì…w†è«6J´ñ€ð»60 ’°üö6 e×b¢"ÄaÌ„XZØ‹Ž$æ²"‰éd qLù†À5Ÿâ•ÚïÅš¸jn'Àdžž(‘‡Äþ‰’wÔÞ{‘F^ˆžÑBÈ‹@Aô _ápX‘¨#B/œø.ž <*žÀˆŠ'NÇ%ý,‰’Èø›´mðKuIEND®B`‚omniEvents-2_6_2/doc/doxygen/a00322.map0000644000076400001440000000001510240666504017655 0ustar alexusers00000000000000base referer omniEvents-2_6_2/doc/doxygen/a00326.md50000644000076400001440000000004010240666504017567 0ustar alexusers0000000000000038dacdaa44f7a27618fda8de72619ec0omniEvents-2_6_2/doc/doxygen/a00324.png0000644000076400001440000000671410240666504017702 0ustar alexusers00000000000000‰PNG  IHDR\¿óÀF!PLTEþÿÿo___???ŸŸŸßßß¿¿¿ÿÿÿ/l:ZtRNS@æØf YIDATxœíKWãÆÇóØf{93±—3¹{ɈYN&s—ø"-'d.xÉŒ¼‹²[;l,[ý)oU·@’ñc½ŠS0Ç.u·ªë§~H@÷w’EHßeík1.Rb\¤Ä¸H‰q‘ã"%ÆEJŒ‹”(âòDlʺ*ëŠ$®–”’)1.Rb\¤Ä¸H‰q‘]\n¥k6C´¼8/õ‰uµ¢$B¢‹ëlçä&° ¥]¯‡=ûP?/?)â&\!ÑÅõ^}²£‰?:Òm=)—DHtq5¥¼p{ÖGQóªmè À}ѵe©-{Vq:øËj‚Í–=L Æ~sOX×’OPI„D—oÜö¸=v¼ò¥Æ5nF;gÅÎÄ‘¶W«Ê|U»Ÿ%»ªüä/%&çÖ•žB¸üòLÏTS†}_óÌñ6*Àå'ÿRQƾôÌ}W&&g\é)Ô†p!w†4„h)\“_Uº4:m½q&?—WÊ ¦³¸>ý ]Sã’U•ΖBÇûe¯á1®”Lä#¸êuÓkÂ0uZÔaC]»_ÏËÚ( ¯Q`\)+¸Mž»Ê£L;jBXy˜­o¾QîÊá`»…É+<3LMüŠ”)1.Rb\¤Ä¸H‰q‘ã"%ÆEJÏú³ÐøÏB)é.kѫŵõ}Ö$!ÆEJŒ‹”^/®­¬=HB¯×ã¢$Àõ{CÆEJ¯×ã¢$Àõ/ÆEJŒ‹”^)®»­×9x1.Rz¥¸ø‰<11.Rb\¤Ä¸H‰q‘ã"%ÆEJŒ‹”)1.Rb\¤Ä¸H‰q‘ã"%ÆEJŒ‹”)1.Rb\¤Ä¸H‰q‘ã"%ÆEJŒ‹”)1.Rb\¤Ä¸H‰q‘ã"%ÆEJŒ‹”)1.Rb\¤Ä¸²Õ³–t}±œ¬«÷<1.Æ•ˆ—d\Œ+!1.ɸWBÒ¸‰¹…ëöæ…_ʱ1L„è/!θb–ŽõMõú,r[LooÃQ<6½=<Žò³D‹q¥'ëßÔw i4êÓàÍ gRoWzÒ±>â`02ßÉ’³3„Îøô ƒ©¨ ÅÈ,ØîólS…Ë9¨ÔÆ£}ù›hY£Kñ§×1O0™ØqK=·lõ #½?e\IHゟÎ`Øv<çøHãêË^õ¦0îzbê”vD ¾¦¢yéœ÷.š…7Öx+¦ÓÁÔs G“ »ÞÛÛ†õÛíïbRa\I(„ËÃ/Çr,5Õ¨Lû%Çê\ªFå”ü¡JN,§âX]ãæDØ•1ýØ©zhf˜ÌLOÕÛŸÄ=w†‰(Ô†pá`õ±%ZR W÷ëùã †Ç^Û½ Ýöw½îÿj ×á_Ó©pn¥tF;Ƴ‚©Æ,®Ÿþ-1°4.±Â¥Z×ÑýýÚÝäö†Éî…j]ž¸e\ )˜ÈGpÝÞZΩèU›ÝVÆ.Ä…cן­Šp+bÚûq5®öT]_WB n“gÆ®ãž!Dm¬¦ƒ`fˆ¸Àܾìâ34·î:F÷­ê3‹¿Õ3ÃcÆ•6yõñ©i¦•!1®˜µ®ÁéSÛn#·ÛŒ+fm€ëhÎcÅž¼`\ ŠŸÈKÆÅ¸ã’Œ‹q%¤(®¶¶¶^gëInÆ•¨Ôž4Ë6}Zøg¡+sæYTqIóÅ›-þ+^Æ•VÐZ¶Íõª¬9Q\w+C¾%Y^$qÝA¬W|Yo‡°¿¿£Œ .çÛŽ/?¬wU&Œ®‡ß-Ÿ+¬¤)ŒŒ¨ázŒïŠÿßZµ+ùÝc:RÀházþôûù›È“F ×:÷JëLýVô«y\ëu½a27ÍTp­Ûe­ûÜ‚0"¸Ö_^°Í5‰!Œ®õ/ý—ìJNaÎA×Ëú©—,Ôÿ9Gîq½4„/[W#ïCXÎq½¼ƒzé2(ù–o\Œ&/_µ&ÏCXžqmt¡o°ÈPŽçùŵa¯´ÑšP¹–W\!.á•S`ùÄÃx¿ñŠk¹–G\±Üþİ@^oÃò‡+¦«:–õ s7«Ï®Øº ˜–ŸÌ°|áŠq¼ˆmµÐ\Ë®X÷wͰáŠw&ëZ¼¹™$æWÜ—p¼K'çeVŸ\ñ÷7q¯tY}.p%18Ä¿0y†°àJ& I¬#Ÿ=°Ìq%ÕÉ$³ìÖCXƸ’ÂÚ¥!ã9G¦¸’¬{b›jd ,C\ÉÖ;Á=P2–®¤ëœè–5™ËWòõMx‡¡Œ€e‚+º&¾!T&À2À•N=SØ¿+`©ãJ«Ž©l·–:°”q¥÷÷)펷âŸjãVª¸Ò¬Zz›¦Y«q¥{¦¹÷dz5K WÚGÓÝ*4­Ú¥„+ýgÙiïìšN SÁ•Å/Ò߈7Z¦€+›ße±orò5MWV¿ÒËf›ë¤k‹¸’\6u­%=C~mìÓ?›öf\¬aºJŽ+Ù+âÙò¼ÏFaò±ô+ãZ"ƵBŒk¹×1®b\ËŸ–ˆq­ãZ®(®Sqr¸óiÏËö¹Ãu ŒÃ%çëJy¿¤æOq¹•®Ø ¼ÿ)ÎË)DÇœgpCžXWá#èåsœ™ƒkÓ©\ðÚ„+>>Ï£.÷[}× Ž½z=ôQN>xõÿ~ˆzã îU½ÐX|>aJc-\g;'7m(íz=œáñ˜]?/GŠò ŠÑc†,>Ë™§¸6Ô¸îw"Ç]g(ŸçQרŒß¡“˜‘´á1{D×l3êåöZ¸Þ«ï@v4ƒ¼q™#Ê€¸é¶BG}_áÌS\Hj\PðYèhàù*"¸¦ 9iÕ^¡'{VÚ:œ~OæH½j[ZÍê á™ø'ï7G¢\•Û£²k£ÎiÃ(Ã… e,al5•U•…@žÞ‘ÜwÆÖµÄ«ƒš,]Û²Ô†#O¤ßƒýÂíYE sÈç¾èª|Ò×Lϯ†€·æ ÷¶&›Ó¸à–‘²ú%~Â<ïÆ;Ž $gºö´—Þø¨ÿ4@!\Ž«bã™jªÑ°ïk˜ÇöÏ¡$D×ôàÒž´Î®¡\+ƒK~©Ô—vë½T§TÎH=˜çÌ"\#‚nO¶{ê#¸ ¯G…ÇkáÁDàQS½ÅÀÍÁ¥ÛzȸxFoWˆöæüoEYõÑpÒ¤|g(CÐN]Âä—ÃG\XÚÎï?;“ŸKº¸ØK؆-{.Õ†paB8£Î£Ï!õ‚~8l;è´2ø¸jÐ ÑIt ^य़‘Ê‹yÎ,ê 7‘14J… {p躈 è ˜·áÚµ´7…kûá6g†¶š)«*Ñ·M Ó¶[XJáê=ëÈ…¸ð6yfì*Ãu[V‚™¡º¨Ká\Ỻ¹ Ljkh}÷‘™açÁ ^ÌwfÁmò&òçÊò‡A?Ff†eÄõ¬x¤g†å¸^¤QqƒÌc3r»×C¨wóŒêy²»šgâzµ8@† ÝÎÓç™Ã1à:[òc¥F'‘ûÎï×”Ûœk]…kÆ™¸p-ÐJ\?Ö#ÏbÀ5™ûÔìÙ*… Æ…ë²8×\ö_Ït&&\K4ò_‹„ŸQJ~"¿Ty"Ÿ¹×r1®%b\+ĸ–‹q-Q~q%÷‡§ë)äZ| y“µ+ZNæ‹ ±Öã"%ÆEJŒ‹”)1.Rú?²¦\¶“j¸IEND®B`‚omniEvents-2_6_2/doc/doxygen/a00324.map0000644000076400001440000000022010240666504017655 0ustar alexusers00000000000000base referer rect $a00064.html 7,158 279,182 rect $a00066.html 303,158 562,182 rect $a00070.html 586,158 853,182 rect $a00073.html 359,9 506,33 omniEvents-2_6_2/doc/doxygen/a00328.md50000644000076400001440000000004010240666504017571 0ustar alexusers000000000000007d22d9fd3ba564d398b84158314f7b7domniEvents-2_6_2/doc/doxygen/a00326.png0000644000076400001440000000201110240666504017666 0ustar alexusers00000000000000‰PNG  IHDRÌt;•ÀÙ!PLTEþÿÿo___???ŸŸŸßßß¿¿¿ÿÿÿ/l:ZtRNS@æØf–IDAThíÙOsÚFð|ÛsZG:¦Sl8¶‰]qLStŒ ±tÄvÓ¤=êz{ HB»Ÿ²oW¶A6ÎL\»+<#½}«»û™áöL1ŠQÌ}[kßd¶öþËwRŒbVufF`/bÇòÔWÝêØý|æ¤v$>ˆ»uèDuz¡ýJÀÅiaR ddˆS@»m‰ÁÙ„/XÌyV0‡ŒëMÂ~ÌÓÞ _§Ï%|2‰ 9áܺÚÍ%pƒñOÛÀÀ)÷ŒœÍ ~Â@‚«€ó“i•³Ø]ÍÈ‚^fÇÌÀ½éLrµ7’Á½™ì'@;8·—x—ŒþYîÍX[ÍÈgyoR8ÂYò¶?I•& ïb‰„2Í:.໢ÏËv-Yi)ÜÁlÔBíVÈwãÒogÛ`FÆm¹ÑÞ2¬zì™óÒäIÿ#PÌZÌ÷oŠQÌÃ0ÿfîw °ntŠIEND®B`‚omniEvents-2_6_2/doc/doxygen/a00326.map0000644000076400001440000000005310240666504017663 0ustar alexusers00000000000000base referer rect $a00073.html 29,9 175,33 omniEvents-2_6_2/doc/doxygen/a00330.md50000644000076400001440000000004010240666505017563 0ustar alexusers00000000000000f869df6e92e53839e4067e25bd86336fomniEvents-2_6_2/doc/doxygen/a00328.png0000644000076400001440000000513010240666505017676 0ustar alexusers00000000000000‰PNG  IHDRÜ¿?x‡!PLTEþÿÿo___???ŸŸŸßßß¿¿¿ÿÿÿ/l:ZtRNS@æØf åIDATxœíMwÚH†û/x9³î“³tf\®JJ?Q ~ªúüXBÜ BÜ BÜ BÜ BÜ BÜ BÜ Ò7ñ¤©êPv¥%n G’$Ä *Ä *Ä *Ä *Ä *}q‡Í‘·”Mëjûö¾²?g$¤/îÞùÕ}Ü6£n·›Üi³íU÷¦ñdˆûäHI_ÜÏÅO,w{§Í¯> 'C¸É‘4’¾¸û”Þ†cûÂëö€Fð[-ti}@Çvm9ùÃî³6—Žùάñ±ÿ’ÿµ¿P¶ûrb%FÒHúâöÙp Ÿ4î"Ü´æç½ÚpáS—tÚ´ÃníÑ{ÊGV›¾#µ;ÊwÇìήnŸßˆILq¨´Üob-žÔ ÷j÷MÑøH‰ù:¤†ÉwGÜÙ•(& Üœà™A ÏsîůoÅ~–ôQãü™¿ø¥Ž¸s*>Tîâ~÷ÛšnÚû¹”í!ƒ× bÄSñDp w·k’>+Ó×µ¨˜XQí~ñé¦5Ò‰E¬SÄSñiÎNínÌ6 Š Is=3™Ù®é :›üìðÝ›83É,<‰âââââââU¦õ|Åõ@jZõ(¤£Å}ò÷ªA!nP!nP/A+î)â†Ã}ŒÕqƒêXqŸ nH1ÜÇX¼7¨7¨Ž÷ôä8‹7âÕ‘âÆw…¸A…¸A…¸A…¸A…¸A…¸A…¸A…¸A…¸A…¸A…¸A…¸A…¸A…¸A…¸A…¸A…¸A…¸A…¸A…¸A…¸A…¸A…¸A…¸A…¸A…¸A…¸A…¸A…¸A…¸A…¸A…¸A…¸A…¸A…¸eªøeÎ6ò«Ža7¨7¨7¨7¨7¨´Æ=±vŒÏá‹0žîKi`?mEÜÙ%€Ý·¿ôb|oùðä¹Ù¶|x{‰¸ËHû]üÄZnó\Æw&{2EÜÙ%€]{Þ›ÉÜ<£uÿ|ÆŠ ãûx:Yz™77OÝð•yÍÚ–·ÿ¦Ù †ÆàîwϱwN `,eýÉl8ÿ²áûqûþ4oé×Ͻ:»-½þ3¾íŸ^ÜÛo¼`vçUŒ›ð›oû¶8T6—ußÞ‰¤öëëCåÂö›¾=2î¯<·y…¸ó*.& ܼX_8žC©!p>ÝlŠ8ß>!âÿIw^m•»¸ÿóoÏ÷&v„Û;OàÙýÑ}¸DÜy%€ñ‰àî‡Û¿öÆíþiTLšëÚÍqóÚý?§é…MÄW?ÍÙ©Ý—cÃó:˜ŽXñÌ„ãf̓»¡á½Ç‰`n=FgÖâέâ´'׈;·Šãn­ßVAÜÙU÷Fˆ;»7¨7¨7¨7¸NVÚ»qÿÇz¦i]4ÐàÞ¿ñOQ!Ð>x™"Ä]TÓ4r‡pë½²·Î¸Sóôà–)fw1f)yšrU(ÞKWàºâžr^)U!í"\¢›žEOÜÓÖô0Ò´«BEݦ:×÷TÊGæS/Â5]ï#ñ1É‘†¸3QÊ6ýÐ.Áõà QÆéÇT3ÞºáÎZ²Îö4+(šáÎúêÏq2£UAÑ wöÙržsG\#ÜùNMò|ÑOŸ“mpçE’ï{•º×w~y¿Æªp-p©®ù¿5¬ppš;ù’võ“”êqLºB߉¯|’R5î .APq‚WŒ»xôEW|¨6Á+Å]&ôâ lT™àUâ.w‰õL*Lðêp—œ—•Z>¦²¯ wé +·ZOUê©wùhË.ŽTME©·ŒP˯EUE‚W[Jœ–þª ÁáqKzëBÊJkà [ZFÉYØú Œ[^t²Ö„­( ¸e†&oÙFȇÄ-5.‰«d&8nÉAI]”,ÁÁpËŽHî°P „[~8²—Ü…IpÜ b‘¾Â1H‚CàVò7Y JüíX=nEA(Y¿[9pÕ¸• h¹tÅÀÕâVX•­N¯ô˜©·ÊG®îb*ßGQˆ[íëRåµÔ½(•áV=¯R{© U©¢ ·ò³ÕWQ€ܧ Ê/ä¢$¸AÞ³¸nނТ7Ì» —)’ ǽg©ñ:É»”N1û¯…zåõýú·b6‡¼nÉOa%Ãþ|WÞˆÔqƒz#nPoÄ ê¸A½7¨wŒ;lŽÌx“Áש¬íëäyCs_Cè| +ÝÒˆ­×’geÞò c—õ]é¾Q/šÑ;ÆÝ;¿ºwŸQ·ÛMößls»7-ßU·÷ìÃã¾Çšwc½–<ûWÛÛ Z‹©)òŒhFï÷sñ“nkðøW—&ž¸DwwŒÃz¶ {Ÿ†Nb‹AŸJºïÚ(›wŒ»Oém8¶/¼iØîÌè[-ti}@Çvm9ùÃî³6WØ[«> œYë95LW„Jºì?6F—Ö‡”ОX¼UŒÈa}hJ1‘a?ÄÛ Ö©Á_Ьû#úp1)ëkò8YÏlÞ1nö Á ðIã.ò œ 5?ïÕ† Ÿº¤Ó¦vséu‹¼¿¹®õÌ[ú³hXÅËÇå[øãÀá­bD>y›|ÖŸ„-þ=z/Bu?Sö…Ì»‹ÃÉAÜe}M'ë™Í{·ÏoÄ$¦8fXî·1ƒ–xvI'êäy#“XÄ\8½/ti} Ü| a,žíîjÄ E¬ïã.iO?6;Ý4Ø]V?_²úùÒˆŒÓq—õåqrÜÙ¼·OsvŠXcîP>Ñà¾ÍøÍ}Yó¬8ôEô¼Ï&—ÝõiŸ™˜âˆ-ZùˆQ[*nö3ûO~wkv0¤é¸ËúšÑ ÌÌæ]ö$þ¬`?I'Ó{íyx;“dß Þ%q‡ý‚儽ß^=îÃa«Å}W˾N ëµäÛ7VÿÖ{%ÞQê»Ç;4¾#*Ä *Ä *Ä *Ä *_ŧ¨2¢höà»ò®zÁLˆTˆTˆTˆTˆTÄïˆX71JÿIEND®B`‚omniEvents-2_6_2/doc/doxygen/a00328.map0000644000076400001440000000022010240666505017662 0ustar alexusers00000000000000base referer rect $a00063.html 7,158 237,182 rect $a00065.html 261,158 477,182 rect $a00069.html 501,158 725,182 rect $a00073.html 295,9 442,33 omniEvents-2_6_2/doc/doxygen/a00332.md50000644000076400001440000000004010240666505017565 0ustar alexusers00000000000000a905a14ade48eef4de48c87080ae4e7comniEvents-2_6_2/doc/doxygen/a00330.png0000644000076400001440000000153010240666505017667 0ustar alexusers00000000000000‰PNG  IHDR¢tô»ô!PLTEþÿÿo___???ŸŸŸßßß¿¿¿ÿÿÿ/l:ZtRNS@æØfåIDAThíÙÍSÚ@pÿ®=·ÕäØÎ rÔQ‹ÇÖZâ±C£ÉQí9Z§$¹ÈÇËMóûþʾM€€Mk˰œÉî¾ü|ûvů5,»­ Qˆÿ›¥5,ú¥%(Äå[°—MÅ>è-z(®yr11þ©ÖôlNfª:ÓÅѤVOvîI“Ù91¨óWÖ˜>÷Ì´ËOÙ9qÔÁ¡¥5mÉFÛ”iÕ´š€Ìš=4»M¯ÃtºŽù§§Áö…;M›Ý"ã7š¬È ö‡~*6ñß«W¬~IYØ‘!]殞 îSÿ 7ôyøÂSùå “ìŒËô]ê&©éöx…Ã×v2ØA'<Öc‡‡?°ê‘‚‚·~ à¥âÅu‡ÇE”z:ˆï4¼ØÉ“¹#F»ušTS±YãMÐÒA<ü„.æ‹Éé™UUE¯C%ÛNE7­cÐ¥Ó“ "ë¢{›/&'|¾Ž}¬ñm­s/tÇ{^=ÄÀBéêÝEbMˆB|ºXä{ûï¿ú  H»)XX¬¼Z±R²x³bÁB¾œXy±`!_L¼©^ö‹‰ÏñN!D! QˆB¢…(D!®¼ø¤¿ýOÿâ*‹]lg£˜Ûœg›ÅDï›qdf!’o3]p&߸þ^L´þš‰1ç1³«˜è4` YÕ@ Ð%Z5g`™6J~õôV5nø&¿H [6*UX·o”+úôÁ,©.Õ!°T¬Â&|6¾úÊ¥ôµ>ôéÆûÃÆãÌÞ8h½ËGDà×FÉ΄¾yNÍ4µ`º¾6„4¼ç©[Ðr¶YõŒH9ÚÌãÿJÄý“Æ´ 4Oq2ÀG둹#öÏ``¤b£¯eb’ã‰{oòÅäôÌŠ†a@Ü :ž¥b8©c"RÝZ~+_LNø|#8¢ÜQážf{ÍE^§³µÄj¶T¶ø«Q²8˜|é/í»Ùª‰å5!®ŽøÅjr·X)pIEND®B`‚omniEvents-2_6_2/doc/doxygen/a00330.map0000644000076400001440000000005210240666505017656 0ustar alexusers00000000000000base referer rect $a00073.html 8,9 154,33 omniEvents-2_6_2/doc/doxygen/a00334.md50000644000076400001440000000004010240666506017570 0ustar alexusers00000000000000a905a14ade48eef4de48c87080ae4e7comniEvents-2_6_2/doc/doxygen/a00332.png0000644000076400001440000000324010240666506017672 0ustar alexusers00000000000000‰PNG  IHDR¿5Å$!PLTEþÿÿo___???ŸŸŸßßß¿¿¿ÿÿÿ/l:ZtRNS@æØf-IDATxœíšMwÚF†ó¼l·uãH˶‡–Nl/Ç–6Á––‰“Ë4  % Ñ*A 4÷WöÎH6&¾JŽâ΋íƒîŒ^=¾sG:îÈ—>?øÑKR@”%Déçb™Éψ¶I+´¾“¢ô3ÕÙÁ,úœ±þªÉá®§ß PøocלÅtÞhÌBtu0.œ?¹áp5š%PP?3qsaÎõ!¸¸áp5š%PÔ†©eTlÍ»§ã’á5öÀ0¦óJzŠ×æ&¾j‚ƒÍK=t*^MLïu²ââ¡Wõ* ¦~ Tcø³ñž—Z˜{bM_½}Sñø¨?õÅôMd(ñrÀ‘EírsŽebL;™=ݶe° θf†Ž˜¾¹%›Âký1/ºüÐó&˜¸8pùdc@²¨—€&û%lÄ@í‰%æa܈ƒpü\ØÜöó@F¼6–Ë^ äÆ5tpÛË ð¸£Éãb `Wl¨’À»É.ƒG^)B`öþo1}ìn( ) õ%DéçJõð—;ü ˜J¿fc“З­l|¥ ²)¢Ì€¶ò”ÍšÝ[ /yʤˆ¥¬€¶¶2*¢{ ”¿§½"¥€() J ˆ’¢¤€() J ˆ’¢¤€() J ˆ’¢¤€() J ˆÒÿˆcWiªoéïoZûŸ½U ˆ’¢t€R6œb¼°8(o(mÃ)o,5œrB¶ Ô §¢7oadF›ÈPê†SävVªÀvP ~ ã*T¼š˜6é}„âGŠ}àÍöZ@iN¹>…aû¯Æ^ððÓÔqÃ4 èO}9MoêNP¸ÐùázJÛpŠñÙEÙ »5èD5~¦?7ÀÄTᤌ‹¶x;9âíõ€Ò6œÊbÂqœ§è9åçGû²óTLš>-&8cÕb™ª¨Ó5œ‚ì2m†thþ†3ë‚âm.3¡¹.PÚ†Ókh|⊞Snîâ?⎠íTÖP]_(mÃi„ám,úÀB Vͧbläm[r— ÈÞóÍ<:ýFhb† w tѾ Îæo°w 4]õ¸+Í”F ˆ’¢ô@yû ø­ÊÛgû6Vfã£:=)Ýg |5VæHµžRÊPî+s”¿‡«"¥€() J ˆ’¢¤€() J ˆ’¢¤€() J ˆ’¢¤€() J ˆ’¢”)з~{¸)) J ˆ’¢´ÔælÌã>ÀhÕY¯¬ XGË[.8=~©¼—Ý“ÞlPó»Ý¹Cæ\øÝo’y§]½|Ë{ÌJdWÅÏÜuz “¯ñµ?øÑKR@”%Déçb™Éψ¶I+´¾“¢ô3ÕÙÁ,úœ±þªÉá®§ß PøocלÅtÞhÌBtu0.œ?¹áp5š%PP?3qsaÎõ!¸¸áp5š%PÔ†©eTlÍ»§ã’á5öÀ0¦óJzŠ×æ&¾j‚ƒÍK=t*^MLïu²ââ¡Wõ* ¦~ Tcø³ñž—Z˜{bM_½}Sñø¨?õÅôMd(ñrÀ‘EírsŽebL;™=ݶe° θf†Ž˜¾¹%›Âký1/ºüÐó&˜¸8pùdc@²¨—€&û%lÄ@í‰%æa܈ƒpü\ØÜöó@F¼6–Ë^ äÆ5tpÛË ð¸£Éãb `Wl¨’À»É.ƒG^)B`öþo1}ìn( ) õ%DéçJõð—;ü ˜J¿fc“З­l|¥ ²)¢Ì€¶ò”ÍšÝ[ /yʤˆ¥¬€¶¶2*¢{ ”¿§½"¥€() J ˆ’¢¤€() J ˆ’¢¤€() J ˆ’¢¤€() J ˆÒÿˆcWiªoéïoZûŸ½U ˆ’¢t€R6œb¼°8(o(mÃ)o,5œrB¶ Ô §¢7oadF›ÈPê†SävVªÀvP ~ ã*T¼š˜6é}„âGŠ}àÍöZ@iN¹>…aû¯Æ^ððÓÔqÃ4 èO}9MoêNP¸ÐùázJÛpŠñÙEÙ »5èD5~¦?7ÀÄTᤌ‹¶x;9âíõ€Ò6œÊbÂqœ§è9åçGû²óTLš>-&8cÕb™ª¨Ó5œ‚ì2m†thþ†3ë‚âm.3¡¹.PÚ†Ókh|⊞Snîâ?⎠íTÖP]_(mÃi„ám,úÀB Vͧbläm[r— ÈÞóÍ<:ýFhb† w tѾ Îæo°w 4]õ¸+Í”F ˆ’¢ô@yû ø­ÊÛgû6Vfã£:=)Ýg |5VæHµžRÊPî+s”¿‡«"¥€() J ˆ’¢¤€() J ˆ’¢¤€() J ˆ’¢¤€() J ˆ’¢”)з~{¸)) J ˆ’¢´ÔælÌã>ÀhÕY¯¬ XGË[.8=~©¼—Ý“ÞlPó»Ý¹Cæ\øÝo’y§]½|Ë{ÌJdWÅÏÜuz “¯ñµ6Ë‘÷91—a°Þ^qíƒyÇÅðÈ3²ÐT< íÀ(«õb:°‚ƤÒ);3Ê]¦6¹*ÍÑ;Á‘ÑäoX¹Çax¶YKšÂƒéL—ÇÌp§*ÓƒLVÐóá¼çL?¹¦Ãð|†l§×±$=û½.Ç©b1âàä':û­š Çl›~ó‡è õ˜æM9Îåb„ ç5f°hxqmÐí¶Îb[[åxÁx¯Ï>ukq{3J9ÐpKÙÚëÚćّ[YœpßüwägÜ÷ž[0\ÉtÂóhH#ô7C§ùåþ‡ÿä-@ªöc–‹3ÑŸO~b:Ëfg¢OФ³¬øwJ.–ΰÙHm;9É´Ùß)]äO.¤‘Fi¤‘Fi¤‘Fi¤‘FéÄ–ÇèaôžËR7¤‘þÖé´µ@„8úÃh&:m-›T ”N[ E9Óikd}ÈQuËo¼äšžN[ äòVƒÕ'­òiG¿áÏs˜uÚZ BF:Ã̬ÎŒ»è´µ@‡þúÊr Ó×-gýŠÏnk9Ðikböú\3ø¼Ö,û-%M-PL‹°ß,~¶‘ã@ú°vZ £{åÂè49FZooXôÔôqVã`!ÐSÒXôÄ4Vã 4ÒH#4ÒH#4ÒH#4ÒH ýøŸûsoH#}D´gÌÌU—¥ä‹3)à1 r(ûI+‰î7ï:«!6‰†Ãõk–}Ѱ~µ‘mºÿâvºŸ¶“è·òc-ãæ5Ñê‰Ç¶zdèí»ÛÝ"ä›觼J+¾XaÝ—¼ˆ¨>™è%7|­·D,’½PÔÀÑìÞ[b™‘TéP|9†D d¨„ DeFH"®!;\|çÔóßaôªÓŽæôÆÍ~)1Ñj…TÅ#"ƒíŽo¥Ë¾yA~–9 ³‡È0q4ˆÊŒ„vÉ^šÁƒšÔ”ÇL‰î«Ôtzr²´º¸hfR…š#­M\åZÖhè pD4Îèô¨²“– ¾FÃæ^ZÄâ\“ôèSw¹éÐï1›‘ñ &«¯Cd¨ÿ¥,iHBÍ4‘mú×_%žÓ¤²FËY$£?¯æ´5ŒÙûŬXpk>k‘d /® z84i‹Œ›ƒR¼àÊb¯†ýÛRH¨ÄEºß¼Ê½¦Ž&£’ì¡á–²µ×WcÀÚXp EØî9y/ƒÖ†‹[ œp‘Aœp…Œql'}X»<ðºì´×*Œn$Þæ“ÛHH~~ôÁ é㣋iH#ýÿ¦¿Lœ«Åº‘UIEND®B`‚omniEvents-2_6_2/doc/doxygen/a00336.map0000644000076400001440000000011310240666507017664 0ustar alexusers00000000000000base referer rect $a00061.html 54,84 190,108 rect $a00073.html 49,9 195,33 omniEvents-2_6_2/doc/doxygen/a00340.md50000644000076400001440000000004010240666507017566 0ustar alexusers00000000000000fa01a09945d5ba3281c8e38c3e030089omniEvents-2_6_2/doc/doxygen/a00338.png0000644000076400001440000000237510240666507017711 0ustar alexusers00000000000000‰PNG  IHDRô¿;žìb!PLTEþÿÿo___???ŸŸŸßßß¿¿¿ÿÿÿ/l:ZtRNS@æØfŠIDATxœíÚKwÚFàü/ÛuNX:§Ô°LjS±tóÀZÖ„"-Sšc´ti)¬™]šù•™;âm¤ZI¹ƒ¾3ºŸçlìûŒÖž!4ÒÇC3’[ûj:ó¬Ë„4ÒÅÓ¡2ÒW1‹—J9iôµy›7Ý©\÷W1Ÿ»íöú eßëv·ö E?ýR~¬š»9hù%å¡õ …›‰p~ŽÍK¢²¦-\d›–C—Wm>6Ë‘÷91—a°Þ^qíƒyÇÅðÈ3²ÐT< íÀ(«õb:°‚ƤÒ);3Ê]¦6¹*ÍÑ;Á‘ÑäoX¹Çax¶YKšÂƒéL—ÇÌp§*ÓƒLVÐóá¼çL?¹¦Ãð|†l§×±$=û½.Ç©b1âàä':û­š Çl›~ó‡è õ˜æM9Îåb„ ç5f°hxqmÐí¶Îb[[åxÁx¯Ï>ukq{3J9ÐpKÙÚëÚćّ[YœpßüwägÜ÷ž[0\ÉtÂóhH#ô7C§ùåþ‡ÿä-@ªöc–‹3ÑŸO~b:Ëfg¢OФ³¬øwJ.–ΰÙHm;9É´Ùß)]äO.¤‘Fi¤‘Fi¤‘Fi¤‘FéÄ–ÇèaôžËR7¤‘þÖé´µ@„8úÃh&:m-›T ”N[ E9Óikd}ÈQuËo¼äšžN[ äòVƒÕ'­òiG¿áÏs˜uÚZ BF:Ã̬ÎŒ»è´µ@‡þúÊr Ó×-gýŠÏnk9Ðikböú\3ø¼Ö,û-%M-PL‹°ß,~¶‘ã@ú°vZ £{åÂè49FZooXôÔôqVã`!ÐSÒXôÄ4Vã 4ÒH#4ÒH#4ÒH#4ÒH ýøŸûsoH#}D´gÌÌU—¥ä‹3)à1 r(ûI+‰î7ï:«!6‰†Ãõk–}Ѱ~µ‘mºÿâvºŸ¶“è·òc-ãæ5Ñê‰Ç¶zdèí»ÛÝ"ä›觼J+¾XaÝ—¼ˆ¨>™è%7|­·D,’½PÔÀÑìÞ[b™‘TéP|9†D d¨„ DeFH"®!;\|çÔóßaôªÓŽæôÆÍ~)1Ñj…TÅ#"ƒíŽo¥Ë¾yA~–9 ³‡È0q4ˆÊŒ„vÉ^šÁƒšÔ”ÇL‰î«Ôtzr²´º¸hfR…š#­M\åZÖhè pD4Îèô¨²“– ¾FÃæ^ZÄâ\“ôèSw¹éÐï1›‘ñ &«¯Cd¨ÿ¥,iHBÍ4‘mú×_%žÓ¤²FËY$£?¯æ´5ŒÙûŬXpk>k‘d /® z84i‹Œ›ƒR¼àÊb¯†ýÛRH¨ÄEºß¼Ê½¦Ž&£’ì¡á–²µ×WcÀÚXp EØî9y/ƒÖ†‹[ œp‘Aœp…Œql'}X»<ðºì´×*Œn$Þæ“ÛHH~~ôÁ é㣋iH#ýÿ¦¿Lœ«Åº‘UIEND®B`‚omniEvents-2_6_2/doc/doxygen/a00338.map0000644000076400001440000000011310240666507017666 0ustar alexusers00000000000000base referer rect $a00061.html 54,84 190,108 rect $a00073.html 49,9 195,33 omniEvents-2_6_2/doc/doxygen/a00342.md50000644000076400001440000000004010240666510017562 0ustar alexusers00000000000000d193bd4f374b0b3a42f5249f9817a673omniEvents-2_6_2/doc/doxygen/a00340.png0000644000076400001440000000343210240666507017675 0ustar alexusers00000000000000‰PNG  IHDR¿ÀìN”!PLTEþÿÿo___???ŸŸŸßßß¿¿¿ÿÿÿ/l:ZtRNS@æØf§IDATxœíœÁ_ÚHÇû/xݳ[MŽºK…£]µpl­Ž[659ªýT9Ú*$· ™¹•„À¼¿rçM@ˆƒ vÚÝù…˜äÍËË——7ðá“÷ñäEÏþk€iYšD–&‘õ„Hˆ2Ñï$yàü¤IVޤId=9’ÙŸ™Êé,rNvBóÇ’$Ÿ­gf3™eÍÂxz>¼”"LG•D%|ÍÄœŒÏÍ!8–"LG•Œ›0òìªoøà»&¿;<ø.ØNDLVí€Ûª†Mæð¥ŽØÜx~f&A5¬£»ÛRHÂpÇ6kf º#š’Tá¶­KVºàïÚzCà‹»çã?®tFÝ•æ$%\DÅö™³ÇE*â=Z÷…± A\w’ÝÀÝ™#áÁ£ç4!$LIξ4ÑoÈS•aˆ³—êIDÅÞ"î•ø •’4‡úq»áð ôA=‰˜Åó$–eAØä%±›’ôÓ:‰Z| #°ôêIÄ'[¶Nº°ƒÓ¤„q2w`3,¥Fˆ<0._¡{ÜWI¢BšdåHšD–&‘õ„H–ùMõõ§üòZFßTQB²ö›‚ šD–’5AT|ˉ‚Ûók‘¬å‰DA¡hY H¾­))”_Š$OßÅšD–&‘¥IdiYšD–&‘¥IdiYšD–&‘¥IdiYšD–&‘¥IdiYÿ ’û—{æõÀÓ¯Å$êþ-^“ÈÒ$²žIRî93›sÛ\äMH×Ézñ}ofe’ãÂûë™meÍ;ÝŒÖÙ| GsÀVJ²-^3Y§`¶“dc÷LXWJÒ8O|÷5©cK!6KAl&;ØD8?º­´O »CÏ›ÅîÐT¶Ávü ìÑ¡{…nP ëQXÃÆDèß×wx ÿ˒ΰ3¤ØR(H°‰0*›Ý…€Õ«PçK ;ˆöæÖ±sëI@™y½†ÐÑu«ìl[—Ðk~ MDŸ#sDÅ6ƒ¸Îœa%mT«§Þ„ôÖdÎÈ;¾‚qó ‚­a&<9èæ$AKìB?~qwæH°0¶l° ñÉèÕðC;Ž't@± ‚³øˆŽþ* ’³—AÌ"$¼©¬GUìm’Ã7À qR¨Î‘ˆœìÂè²Ä³uÁÏáYB·>ˆœP°O‚³8CbYkATh˜éÝiNëI°Nöì&6!Ñg$1R’AÖÉîãIð“íV”" Ø¦<›;¢÷²ØT†6!#Ÿß©p]ÜDãòU:wJ'yœ¶dÓŸx†WN’´dÛVæò'‘\˜²-šï‘ÿi$ËH“,^“ÈÊû/¯•ŸßÅ9ê¬ËIŽ:ëDùåHrÒY—Ým(+7$ùé¬ËIž¾5‰,M"K“ÈÒ$²4‰,M"K“ÈÒ$²4‰,M"K“ÈÒ$²4‰,M"K“ÈÒ$²4‰,u$lÅgVê¥I4‰&QAÒ‚óÙPÈ(À`ÑIÜ^]hðB%ÆÜHȼ‰Ë!Í¥IÂÚGîlÌ íöÜ! ¦´ýåc–dbà$ýjf,d‰Ë˜„÷>˜Ïø5|Í]ÀÍøÞòïöˆ7!¡„\gH¦.'¤³|N‚2éÙ^!2#9Ê/}B<׃Äi’2uqáŽ>Ô dï…c4ðkŽ‘¤(.?¦…!á+Þ<}¿ò‚ôK¤ë¼Çиñ“’¼_^@ÂßažQ2JdØc)I¼ oÛÓZ…¿ó¨kwI—Ȩü®}âo÷ìÎ&$]çÔ$ç×_79 ž~F=×ó5*7í¦+Få$%!¸ŒÉXTlLÝS~ð"ME4É4ðÊŽ¹y?´Š¤Ñ0!!½H¸=›¯Ç̧—é•ñ§GBža Í7 ±ËGî¾;s$<'þ& ñÿ€ ’ƒ囂áãÜÏ$äµ' Óœð4 œ{$3orú—‹Sô>Õ‘$Ýж¹³bo‘tOk„‘vJRîÚ3‘“Ùÿ}BŠ:%ÎçdrzÌwyn7˜1²ˆDÌây’v»M’2¿Ñ')I<­AÂ뤿ÚH ±$~ƒÏb¾KÏ[¼NZiˆÓjHb¦$¦›ÖÉÉbñÉ–­“!9⹂†êdz¹ƒ$ܼÁ+Ú·S󽨓çI w3sGœ^)z¤“lØ<4nÒ¹S»ƒäQòEVo²Þ©[à H®Ë‹¬’¼k¿ULÒ[øÕDüÉz§üùï8%$ª¤I4É*$¹&‘¥IdiYÿOõ‡‰´†âIEND®B`‚omniEvents-2_6_2/doc/doxygen/a00340.map0000644000076400001440000000011310240666510017651 0ustar alexusers00000000000000base referer rect $a00062.html 42,84 232,108 rect $a00073.html 64,9 210,33 omniEvents-2_6_2/doc/doxygen/a00344.md50000644000076400001440000000004010240666510017564 0ustar alexusers00000000000000ae281f521c8b7c0ee14fa83f42f01edcomniEvents-2_6_2/doc/doxygen/a00342.png0000644000076400001440000000567010240666510017677 0ustar alexusers00000000000000‰PNG  IHDRo„4ÑÓ*PLTEþÿÿr%™˜2Íoÿ___???ŸŸŸßßß¿¿¿ÿÿÿ³·OÚtRNS@æØf Æ^bqt25¶Ž™Ä]¶ ¨UåuÂúÙ÷º…‘„¢é¶€Ñ— ÕýžúC«»…ôÚ[4“ˆn¶ÒÞƒ5UNP8Aeà•TNP8AeàÅÁý]­|þ\¢H>_W‡Õˆƒû‡Ò/狜"~»_bsÉÒ— œ˜2p‚ÊÀ *'¨ œ BàNÈÞd›cÃÌ¡U ÒóÁ„}JK³ÝLòÒ]…Ò§íúü9¥ëê$M§0eÑ¢JN¥CACŸÊæØãÿhœó{e×çJs+ßG:p+o_wºMBã5 .¹«Pz¨`Ø®ßßiþør’Ö¥íJÅ_ànÛTúé“7pT»óà×+â?ß¾÷ðî#¼ Úu_Ðîb-nWÁôpÁ]¿¿gìßDí`vl:Œ7ñà72èÐÔ[¹mÕ58~`¯_P½Ú#š{Ø õ«CËp«øp«)Òǽ¢Óvh¿L­#Ì6¨¢…OmZhP÷ÜðUÄ_Á\Ѿæ´!3Ö¯xAZh@U˜›pW”ž;­ú„í–Ž€Ð–S#ë×ú¤µ8ô;|ØY¬è^M '–æÞâUômëZY+ÓæÐæµ9¤ôYåƒ[¼€m ÌÀç;zm|[yÑ{r94»û®^ÕuÚÚ,›vÑÝ;i÷ò§šû½¿"þ &wE)¼Û‡tÌ$YAlzùÓ'ÝÄ€ƒ:ºNcаÝbàЖS´íÒ#x 8ðÍv2¶± ÕyM˜Sx˽ÍGuæ¤ÍzìŽ[}ø·ßòêN ƒî@ò¹S;¢W£#÷XûI§UhzÉ¡ú©oû®1\"Wà¨é˜ÑìïaíÁÍ,p¶Ã¾·ÊLa ÖÐÜ#žÓÁ7ÛaÈèã5©r§ž·8pÞa0© |ݽ'¶CˆÅ ¿ÿÈH°Ž¶C¾¥ß@5Þî¿Òéû—ÌÇð»‚^¥msÜCŪ ]}£c:ww¨‚ýK›»‰ÇU¸63E±7ü˜¾ù#8(ø]@MÆà¸·8p¬ã Õfðªß@…ׯ˜p¬Å}Ôèù?!¡­ ã}9†ËZuªñàruð¦sp½âð„¦çTlî&öñap` Kppp€ŽÁo¾Ã ~˵áÞµ8ô Ž õþÚT` ¶ èx^ðÚt&ä€>®ÿºCÝ+HØ…Êtº¸ÜÖÇhñà»Âtð鬃‹BíwzÌM 8œŽÀÁÔLa ~¨^‡SËà;Œ¨Nó8a5ƒƒ3ú86¹ v{D[pbäpŒqaQ±[ñ T¨»wªa\Ö8Ð žÏ*Öœ972œvTìV¬‚õCã²¼@3r°NàDÈ!8ãÂ"b·âšõbŒ ÷ÍàQ!ÄZ+pä&-n:v+FákYÐâŽÜ8Ð 6­¬¸ÅÉ!¸ôqQ±[Ñšº]¤ÆÀuïÀ=«¼X3p “c¿ŽÀ¨»©ˆk§8ª8/ÐŒ´‘âº[ôôËûY©=;×n”\”‰õv¯Ë -vúµ¸[Õg§AÝóúq ~ýGOE®ú0¥ék§þà+ùº÷…÷ ·È)—ü›7çèþW,LÞÑ%'ý–šùJa©ÇÄ]bpê®eÍð™Â™IÉ%·}¿ÃW*‹‹&$—Üý¦¨tVeMF.¸t¸¥µœm"r‰À¥Ä-µu€“K.µeŒS[@9¹WòÓ[þ9½•§ç“›.Åe³S\²{îé×\piõo¨T×:ŸCn¸{ý5$¬t‰ŸMn¸t—·Oyuý™äf‚KûϤí¹YàTßS3Wiƒ›En¸Ô¹¥nÆÏLñà¶Rø9$¤ôÁÅOèbÏÒßç•;¡‹· »¼*{}¸FƒS˜% Õ}¸F‚KólÁ¯y¸F€KáâBŒV\Ô¼dœ²£Åµ:à¦ÉM[!n«nŠ\Ü*q[)par¡ pãµRàBä‚àÒ?Ë H%8e./±ÔÕ-'ª œ 2p‚ÊÀ *'¨ œ Ôƒ»¢ç“šX®Mi7ªŽ~™`Z®õÚÉù¶X®ée¹ ÄØTpÖj¯ë“ªäìZÍ÷‘´ÇìÚÇ_ƒà¼×9 l³Ü†—eD,º©àZeüçãQTíî#¼1Ã[LœMÈeÜ8Ëill‹k—ȵnæ{Zôª9€¤ÎˆYoÑœï’êIÞ)Ùu|§þI‹–ód§U¶F˜ˆF®Àhìü€ÀU,¾·ÿœtФY=FÓøÒrŠÌð^iýÁAk!®™+æŠdpírpyòœü\{c—÷¡]õšz“4áõ–~©µžž^ë LðÀ5«ïê ÜùežOo›uÓ$vnMãËNͨ³-Ðâ88‚±Á¡o×ßÁ‡ç¼¡õ¼ÃŽÂ Ò‡ä=«R 'í&xàÈõN«_ëðÇZÜÛÙû—Îb}ëî,‹óŠ÷á-´<‡/ØâØ– Ǧ#~pµZ8%è¤Î8¸þ¸cà ëìö‰}Âú-×:鼵ϯ »â}+þºŒà4N«ó>îl#À± p°×ÐikÞéOFUÉ;0x´tN;f}ܧŒo£*+¾_0IÃÙÑÁ4¾ðQµ¼à„ÔÊE¥šÞ3V»¡Íê궪à.KQ©sÁýRûù î:òt–´¼g¬Zþóâ?"8YRW· œ¨2p‚ÊÀ *'¨Õº’¿FÊÀ *'¨ œ 2p‚ÊÀ *'¨›ÿÿôߨ;(ÈIEND®B`‚omniEvents-2_6_2/doc/doxygen/a00342.map0000644000076400001440000000015010240666510017654 0ustar alexusers00000000000000base referer rect $a00062.html 8,9 197,33 rect $a00049.html 221,9 397,33 rect $a00046.html 421,9 616,33 omniEvents-2_6_2/doc/doxygen/a00346.md50000644000076400001440000000004010240666511017567 0ustar alexusers00000000000000ad028f7592591dece58e2fd4eb0bfd9comniEvents-2_6_2/doc/doxygen/a00344.png0000644000076400001440000000437610240666510017703 0ustar alexusers00000000000000‰PNG  IHDR—¿ÀÀŒÑ!PLTEþÿÿo___???ŸŸŸßßß¿¿¿ÿÿÿ/l:ZtRNS@æØf‹IDATxœíA—Ú8€ç/pÜ\'›Ž›yL7ÇdÓrœÉf¡;½¤ñ1éyËpÌfðm˧¡ ëWn•Á€M»ìVˆŠæ!—¥R}²Jðh—øŽŸŽüùÝC{@(FUÑ0ªŠ†QUN†‘‰ûð0t.h*Ñ0DÃPÉÉÂ\±‹Í ß F5ñÏœJ¬=U`üÿ¶ÎŒÍ™JÐj…ùr}0«¾¹gg}V¯† Œ­š_ί÷ì¬Ïª³ìò…ÙnXe‹[ƒ L3ƒó¼mx¬4†|Ðk8ÝÀ€Ç%TFeç¦âÛ ç«zÒž*0Ú•f¥ÉG WÂ4ø[þ¼õ)¨ýcoÍÍ9‡Çà•!”¯áøÍpábuÕ®Œ„áø°¹-€I`¼‚ƒ·â‚ÖªÍâ±%”]nÏ. ߯êªÁÈi‚1`6=q}Æ só¹‹õæpÁ¤’ÿ­Ío^* #€˜ù«œlI˜îÜÄz oK%û Ÿp%aÄÒ†iµZÜéBx¼03^–f¡äAOošÛ13âg¸pÕe6Y­fü™S“Jüé'¬>›H{ÊÀPˆ†¡ s@4 •h˜¢a¨$ù—€|-_&‘ižnÐHr˜Ò£<ý  £ªSÊÓI 3=1åçÙ· S:1åƒFè*Ia¦¥¯ h¾I˜ûÔ¬aŠ £ªhUEè*FUÑ0ªŠ†QU4Œª¢aT £ªhUEè*FUÑ0ªŠ†QU4Œª¢aT•5L@q'`ÈîýöÈ%C00AL¹ 4Ì!s‘åbDÃ4Y.FN&aF0è«‘ævÊ~}lltm¼¼eoO¿Ý0ÜoÈ?nïô¾ “4#8hEdGÀ\W½Ýèî¸Ýj…|9·§ßn¸±Új…Ã$ÎÆ„Àý®öÊÏÅ_Lï¡Ã=ýnÃè~Ã$ÎF£“žÇj þØ«ùv LóŽo ~f—Øóø¬µÏ‡héü6èÉÌH.û=T\:]ÑÐ=ôÜxYå‚a¨…IÈ矄¡I/&iFp`øçãî­Þ“Û…y÷&Æ…‚?œç.60˜BìU¯+`œ»lðKx ôƒz¬hˆ=# ¼`Eè÷{޵† ÷îâÊÆâ¸{æþŒ`ˆ˜nÚñû—¼·¼<ãúbXC,]{>ÍßÈìNÙPè¡ÔcÅ ôŒ0ð²êw±–áÛË®ocqrxšÝŸ,‚ÎC½2ǤàCÓ,ƒWj·3Ìâ§×¢ê¡ÔK˜õ4Þ¦/«~¢õÍKœr¶4sDF0ÃÖñ?Wxçû8Œã]˜·¿ÀIß0àÛúA½„yÎ?bC¼D-ðÆ€—U¿h ³B\a(&iFð bfön‚IÁ10¸ÂnÁÀRµ½êUEN³î*fð-Àé¢^Â\W¯m>ñlÑs÷bæ…Œð kMîl3h(&iFð Ôal=3ßûvb¦†µÏGâºÖ׫ê±ÐcÅzþÀËÿ]Ü9MXÍj¡Õl$’Ïá´0“J¼JLYYŸæz³8†M,40‹õÇ·S€ ›‹,#æ ¹Èr1¢aš‹,#Á1_n¤ÿ5ÜÆôq_àýñ—ãêG÷žf·Æ)uºU¦a:Úì²<£Tûh–(ÓœJt™9©`¦„4%B[éaˆ&åÀ¤Û®•2g‹ÐV:˜)qÌ™zxB[)w&Œ™Gt36%Ì´Dõ?ÎGh‹HÒÃpJüáaø£Õ3£L×¶H$ËNÚÓÌ^d·°%™¶Ï6ÄX³íqžq¶S§±gܰ=ÓÐ’ßó‘&“?äIìY·ÒÏàý^ YaÒ¯G9ÜX”ùGRû”ÃN Ù±!¥SyÜñ•&ÝD#~»”Bð[©Æ8—í8(~$Ų”Ï®/$¿rrô0çt‹$ ÌѾå´ç ÍïÏé\^[ ÑÀ·6åv. Ìqþå¶±Ì1æwƒ4Lò‰–ËÛ¥*˜äããîUd0I—¨<7I£ƒI6ä¹fÂ$ ††“Â$õ|·{£„¹?rÞUæ¾Ï;‡æpHä0œæðØç¾?"1Ì¡¨ÈNj˜øá/ g&Öç6á$‡‰›MEìõJ} IŒÌ&ÒïBvzÍ&jF³¡p0û®”}› ÌÞ¤*h;á¤0E¦÷¦þq £a4Œ†ùaz¼³éÓ  ×»o‘ Ó œw~9tÆ ÌÍY$Œóïþ»Á¦ï²Û½>pûŸÛ†Y)fÒØ:çÃÍÁ°H«‰!Ã(¡C(˜»gÌŒËØí Û“b`ì:·ÍªWñ˜g”Á1ðþ3/»Õ;f\Uýº;Àø>»²x³ÊžZMg‰ p{‰0ç‚`éVç ž8ͰùE<Í`TY`–kå› Se?²ôÿå6ßÀø{£öˆ àü‡-êÿì°ž]ÛÃßQ±‚¦s[†ç3€Áæ7ìa`>–l)€™;ø?Ê â}ñ¦Ãf ¾pZçìÊ>GÅ †Ÿzf0nÃó:0Eózá0rš…`àÊXÏ÷A0¯ß׿œ‡zÆ~6…b}eàb \ ™³ LÙ¼p±ìÀŒ>6YÀú¦>jo`Ä•y_f]Á8"fDø8á+#š#–æ0L¿ßg~&ý 3[ÇŒ€˜™œÍ˜{%3 a¬+Xš¡èvz3=3F¼inÇÌœ½ƒ+Æ›ˆ2™mV3„õSX ¬¶„©ü*bæ‰ßÄâÖjÖ|˜Tb•£´æÆù]Qæ¶~:0ãÈoÌZ=×µøæsžÂ0Ç‹†Ñ0F1˜¯B4Œª¢aT £ªüùeË+ha'eIEND®B`‚omniEvents-2_6_2/doc/doxygen/a00344.map0000644000076400001440000000015310240666511017662 0ustar alexusers00000000000000base referer rect $a00061.html 13,84 149,108 rect $a00073.html 8,9 154,33 rect $a00050.html 173,84 400,108 omniEvents-2_6_2/doc/doxygen/a00348.md50000644000076400001440000000004010240666511017571 0ustar alexusers00000000000000237c7954d9923d8e8b1af52fc9308520omniEvents-2_6_2/doc/doxygen/a00346.png0000644000076400001440000000512610240666511017700 0ustar alexusers00000000000000‰PNG  IHDR—ÒtªU$PLTEþÿÿ˜2Ío___???ŸŸŸßßß¿¿¿ÿÿÿ:^ÅtRNS@æØf àIDATxœíM›ÚF€sß“¯áÆq}×6×yÈ G{m³^渙ÅG{òì„£×;€nA¨uY3úÏmU F$¡jLº2R©«ªßþLZ¥oøñÈÿ¾¹ïŠ‚)ª(˜¢Š‚)ª! #3(ûè`.L`RI ':÷Ñ~LÿáJ ÁLÿáJ ÁŽ朽ò.Ø¦ÃØ(È…}bTcû÷)íÆM×ÓupÁô³§ß6Œ惱ÿÓ>ñUvÛïcµ9™×Þ¿Øó»¹sQûåÚÓÝr½Ýöº»¶§ß6Üóë‰ƪã'Nw«äÝ©õÚó»¹óLüx¢oÒCõ»†;~=ñÁ¬z|©uš“Ê„O†UfP¿ç¼ÓµXÕiŽø°ß4zN^gP•W—U[ogX|Ø?%®ìÉð'v†î:Xé98à§#t°2~ºx¹qAWFOš ‡ h6k3 #`<èT[Õ/M¦ÉßògíONý7p2Yh ¯áË®P¾†ó7£¥‰Åcô ü×±G‹ÑÂDwXµ‹*8àºsÖägðBˆ‹z,¨»†A~Å„áG ÀÔ龄“·¢Cº“µÍòÑD({\ŸŸumÑšqaL[4“Ó @8ÝÅ×Å™[õõXÐA~„q‡™êg=6mÆ æòsË- á\%ÿk‡_¾ˆ ãŽ{tÓ„‹å¯E9ÔC\Ô»0›a†A¦ ¿ˆ`fñ²Û.Lo¡‰ìB ¡äoÿΧ<. Îã]pàp»ëÂÀàÚÀ@\Ô»0ÏøG4Ä.jCíºðë ŒXšý0mX#ŒÔç.ÌÔ3V–f¡äNŸOoãÂà »K?8°jçU×Eo=gðO‚ÑC½ sQ»ÐùÔÒEÐÞ)Ì™çaÄÍí93æ'¸pÕÑé|º^ÍøS£î*¹¥ñʧ±ø|zÿöíÌ™:8à§cѹÍj†zŒ z,Øèá÷¼ò_\Íê·F V³úa ‘ôqf+ØW/˜‚Ià?\)!˜‚Ià?\)!˜‚Ià?\)!Xü/Oõ½ë~#ß&( GfÉZ-­”2ØÆ‡)?Ì&¶|yÁXÁH”/JéÀ”ÓG‰/ùÀÌòyð Ã8K“Ç8S0‰ SÎæ À”R['ÉaÒLúqö‡„™•s™4È’~œý!aŽìS³‚I.¥ ¶ F¦”2Ø*™RÊ`«`dÊŸ2Ø*™rô0¡›gvä+€‰Ø<³#_LÄæ™)$ŒÅª‘›gp»MæYûSäæ¼d[8˜çînˆÍ3x%ȶˆ0¸G&jóL¯Ù÷ÈDnžÁ+A¶…„ÁÍ1Q›gðJm!a¬›gðJ&@‚7ÏìÈ×Kгd!»©ãHÑ`ŽªgŽÿŸqEÁȳ#SÌZ SÊ`«`dJ)ƒ­‚‘)¥ ¶ F¦”2Ø*™RÊ`[8˜£ú `Ö¢`dŠ‚Y‹‚‘)GSÊ`»qÞFãÎ&ŸßÃþB$ÉM»Ñï`24È@Èq>â(˜(wÇùˆ‚‰txœ9LÌ G ¯ºÛ9¦Îhq}õÛN·³7ÑÓÈpCÑêsâ;†‰áœì‡Ú;¦Îh´7&v†#t:í[¬Þ䬺­‡Àf4rs¨€c(…I•N? GÓ~LÜ GN×þ¿é}ß~n=¾^j·oB`H3AAˆûÇR£¥yûê\ÇÛ^$Ìá Gb"búœ+{pÆû«³(ÂŒFXŽ¥º¶¾êÙ:N£‡Ùá GbòÀu(W9Š¢†aF#ˆÛÖ—/pÈ鮣˜ޏh¶+ûs•_}CÑHÌ,£BôŒp7ÃÑæÌüÝ“…Àf4sj†¥¦·º;gÐQLÜ GkP?‚¶µ´0ÒŒFÞj6I•Ná²p“J¬jL‰µ)k;"Ì…·8ú]ç,40ËÍÇ·c€ñ» <ÎGL¤»Àã|DÁDº <ÎGœ$_ú¤ú5œç:éWx¿ÿ9©Å~ôTÙç%d:!ñ˜†övúMæ„tÏ(Óf jœt03R2g)ŸØP&L©Q&s–†ªcf÷ C4c]!k™´¡\ÈZ&-̬üpF9ÎH¥‡7ÍÃQ/§~þ †§¡)“eµK #„âÿ@ψüð¬0œ`¬~.Ê“½*”Û ²Âd® åÖ¬0™Z¡`2Ö†tKv˜lë3é?‹²Ãd¢¡Ý]D“†ì‘+0éÛ—8• LÚ%z  LÊ&¦Î1H“ªÉ÷Á¤häÉ©`RÔŒ~Ó'LòU–>+'L↖°—&é´‘.•&ŒmÒ”0‰[F[R˜‹€”ýë¤0 h¤$¦…‰M#çÆb˜¸µ”“ù™&Þ’&éŽr˜X.)%7=LŒV—u+=LŒ&+Wº˜ƒu•v” ˜Cë³´$ö2`ÐÈ»yM L4¼§ ȉj}‰wJ‚‰XÒ$>öAL(ÌÛ=¥Á„ÑÈ|‡<˜àjK½W"Là’&õA)a‚zAî Ò2a¦Ü'ØH…Ù«»ä;ד侟<…$|ª¨‚Q0 FÁ$†éó+/¦á@ÔÛÚ4šáïìŠïŠáhÞ‰–'Œñ¯Á»¡»b¾S¦oNÌÁç_·aÖ €™6·®ÎÈ;å 3iᯎ~ß)h»W´5ŒÉØõ Û“|`ô»éh5«j1«[ŠAí?0m8á³v˺ç5»añuŸŸOx«ÆžLZÆ Píœ ‚•Y[0xã0CóW –ó0ƒVeŽV©Wêlqã¸05öûÇàŸfë ´¿5îŒÙŒ³eãçÁ‡ÉÓ‹›Îè7T¬aÆÝCsu]÷S€AóKv?0 _+¶ ÀÜ~„“ܱîjsÅæ ~e´OÙ¹~ŠŠ5 »yb ˜áMÞŽ&̹øÃÌ=3yꘫBÀ¼~߸›ñ¤ÇUøÉë#çBS´8~Ä'ÿ4v„ÇÕ[Å¿}ÎÂ×x騸TB„óWMˆáñÆ[Âw:¾À˜Û5Ýü@Ïþù—nS‹2 D`í•Ù7Ç–öâ^âô­|(XÉuÖ€«dƒï&_ÖIŸ²¿”€qìQÈTx^`”o5­&; ?ð.ÛŠxqè´ËË'qOš7®“&„Ûœ ½þKí3%(<†L¡rˆUPB<£ê<ϸ½¯š¿€ÇaŸ@š”žÂ¿tgK€þLD‚%…rôIuêÁ2P¬2•>“²àd#WfÿìoÆYF4žÕðêôlø¡5ÅSbëNC÷×§Wž^°p o¼%|Þf‰3°tóíëÙ#gÿ/µYakÁvÉ•Æ÷¸ñpöP$ôhü)jñøØY™}+ñssµîÁ|órÔ‹=öN·#*šdºæê±ƒ›OÔÍ€WÚFüíì¤Bnu|ÖÞ+þxíka[«äwzãü½ÄïÏ Þàï'þœgÈÊÒlIEND®B`‚omniEvents-2_6_2/doc/doxygen/a00348.map0000644000076400001440000000005310240666511017665 0ustar alexusers00000000000000base referer rect $a00073.html 53,9 199,33 omniEvents-2_6_2/doc/doxygen/a00352.md50000644000076400001440000000004010240666512017565 0ustar alexusers00000000000000d8feef8b8a26e956fc62ee9a2f558c87omniEvents-2_6_2/doc/doxygen/a00350.png0000644000076400001440000002622310240666512017675 0ustar alexusers00000000000000‰PNG  IHDR{â£Èr'PLTEþÿÿ¾¿¿˜2Ío___???ŸŸŸßßß¿¿¿ÿÿÿœÙí¦tRNS@æØf IDATxœíMwÛH–¦u<ËÂÈ£ma1çxY¹-;Å¥Gmq©,É)/»49”–]j¤€eµ»ÇâÒ™6-.útI"Hp¡¡DâGMÜ@ >"@Æ+Ë"7..ãa|/vRsu¿SuJ%¤ð5Z _£¥ð5Z _£¥ð5Z _£¥ð5Z[†Ï¦qÕ/…hËð‰kt…¯)|–Â×h)|–Â×h)|–ßèÎñ²È{Žs“fì¾µ öñuÐ)zk|öÚW¸ fýÂ?×G)|Ÿ¸™Á\õ¾ Á‡àÇF6Yº =ë?9%ÎÖóWRØEöÓ¹åÚ`®ðU¨ÈàÁgá1òõØuœ‘ïãï]°›áNé¢7&úø“ÂWµ–K—¾ÙQo4||ÝYìp¹é¢Ó¿¢!RøªÖòÀ!ŠÏ0 4êâiîÐÇ7ôç¾i8BäõÐðQá«ZËÃöøÜw‹ÞÁ"³ ðž†ÁÊý0jû…hÚG{Ÿó§aÔSÕÚJ|õòTF _åžÊHá«ÜS)|•{*#…¯rOe¤ðU¾Ê=•Ѷà{xùò%Š<~/̧¶ ÖŸr.¼ýÇrã?Š.Òõ½)|ëR€/× ò¤ˆËƒÂ·V=Ћo}ȱ¤ó·&m¾¢¾—ìJÅø—Uw¿ÍÇ´r!½èæ .¤ ¡Lm4¾‡•¼ž²2>ÐŒ‹~*SiÚP|«+‹Ün’4~ C› n¾`AŸÒž¹8’Uè–% Ÿ•M‚›ïe66*­àb^•T4 6_Yj }Ÿ¤Å±¨¬`ñ £êaåHË{„O8µ…¾OÅÇÁbí€OµPheeÃ}D¾f€µÆ'[¨”/±”\+Àšâ[8_ieß?ð;\#ÀÚá[û¹àTNß§Sû\ÀZá«â$pægCå¡8é-BµÁWÕç/™”ʾÖòF¬¾‡ªÐ¡Œ¡“¨të¯c­_µšå|¬^jò \HSVŒ¯ê¬sÞ9ðÉA«ÄWíGe$Îm { °:|UP Ê@PxR_gUøê¯ ƒ Pâk­_õ×øå!fôô]Éz½Uà«|Ê TÀG >iׯ.ð GG¡ø$E¬ßšN&Ѩèþ"¡®_áÕçëSq(Âc?‚®_=V,¾ŠCÉobfÑÇ#Ô( pøj6t2LÄëx㕸|uë| ï¦õ„^ || ]u2Û–7@ùøjF-žµÏy/_݆N¶xÖ÷Þã;#_£;ßZß|<eãkvç[søì%ã«Ûº…u0X÷» d|u£Ç¼Â[û `(_ÇNTÉûàvác‡QÉðAP.¾šÇ½in>•+YñRˆ6_Q¦é å%²Ž*–¯<ç%xœq*ðÿ°H9¹—ø”^*>Yo]ÉIø©ñIÚÔïj‡‹ñSø ÜWŒ/EQ~ _ûœ×P¾è;J*>Y+…/”ÂW྆ø"!)|Eî³_„ÂÇ'…/”L|ÒyýöuOî¬e™ Gƒ­4kǹµbw=å½ñÁŒ"72¾Iµ^)U\õ›©ÍÀw¹ÿ·¯Ë²GdFÔh±Í6>¶cÕ ™ôø²_…ßÌä6âË–g‘§è9|²Rž¨˜ô›£å;ªÁøÞ’KÙq#{ùÀ¹k¡WâðMÛð/RjŬ¬òdń߭Ÿ´3ž~ûöúä®ÿÅ9÷:7äìè©åÚèà ®[Ï£ÿ¸îÁÖ >ïS÷àvÖüð™Öà:Ï®¿€êŒÎ§£3kŠÞa/ê>T¾ç.š÷ÍÎ`oþð®,„ñ^°GˆëºÜÊ!>Ø6¼îùëÁ ~ƒ‘À#~s´øðÿž{3»™½ö•oÖŸ}˜î_¶nç¸9¼ó:Ç?6ºøà½Ÿ_´Þ\ZŸÐ+dÛ®=öZWÌnæãWƉõÖøŒîºQ÷Å/Ã[ü?6[g­3ðçãë S„=B\ž5ÀQ¡é}ì bž¤"tÃýË×8^<â7G›ƒoì’ó,²téÚOçž5û@:wî[;Îåá0ï_~Á}å ²ßÌöÇ.î `f¹v<ØD·Ä‡#>†·<â7G ž|0Ù½Á­è8}‚oþó{bå°Ý?ŽÑÞçŸ~Ïÿr@ð}üɶñ²ÂqF‹Ù2/sôŒž|‚½¸Ø£ïãï¤W“¹ïéú{°ƒ'Žø+Ž øÍÑFàƒ¥Kßé_ñ‹w-Ã@>>ÒûÑüs7Ý®ƒû#˜á½oŒ N|d’À7;jc/†¯;ëkËÏß“ K—ù[¨ˆ»¡kŒ]øÍÑFàƒ‡>¼2÷zhºÑòÏn8÷‘užûŽÌ.uñ,óàÛóñ=ÚþÜwȉ¬ÿ£ø |ƒ÷‚=úø†ÁÜå8>O®xGõ "Nmøñ›£À‡í‰¹¯=í#tpK–›'Ë•'yëÜ>~ÀýàîŽóHG¯È»÷ùgåÙΗù:"‡íñ¹ïö‚=B\OÃpå å8>OöÓWüéÃ#Þ7D¼÷ņ?Q¿ÙÚ||z³Zô nù<÷øÊ¨Ëåw{ñ¹½Õ²Øáÿ:ññùÝ^|W­Õ²iâÜcÒ}Öä§ðñi­Ÿ8(|¢¥ð…Rø(Üg¼…O _(…½Â'NÁEÇ/i¯™vœ0^伂/cò[½Êz×דåÿ}¼²uEEM° øj”Þ%­a€oµ<öD/O“ñ±ßY³töEj|“tz |iLj>>ßå“gÒ: øô”â¤Ñª _8ÍÃ÷À|Íò™ûhw÷"Ìî ¾rüŒïå÷Œ7kp£2ºW²³3I…»eù5ßKvkÂ7–L¥7I”NÒ'Hžpš…Ïÿr"ã\¶ò=UŽý›øÝ)µS%a•žüŠ/ÀÀèwøB@zúÆÝ‚F5ç(àî¸øî_äm]·²÷ñÎ`"îKûRîµÜº«3ÝdWŸˆ‰¦9ø¸ÈÆ÷–_7 _Æ0ËMcðq`?NLQNý¢i,m©ãb!Ñ4_‰»VÁ—=ù/B2uþhš†¯\bBßtÊr1¡YBNR­Jt¿†á+™VR¾‰NS9Ȫnªš…¯lRPß3L aG£ª«§ów¿Fá+ÒU>Ú¦ËĤsÆÒ,|¥ÝÈÁ·«QVÍÄwÏK£ð•¿’|I §½²I/–&ᓸlä÷Aµà ¥gnáí~ÍÁ'"—¹p|;:KÕc#Ô$|BÞ|ð7YÞ“³û5Ÿ;ÿ‰ÅGy´°P."F_š‚OLf¡ø¾c­˜‹¯û5Ÿ˜µ«@|Lk_Z‰­j>A7M‚8áù”UËÝÊuê¥øD%Õ†ë-wëãvÎTŒ“üK"²T4»é>OØý¦ÅôâØŠs::3 ÙÔi‘´Vé©(AEøxº_ð‰ËG(ÂÓýNìÕ¼2N¾·ÆgÀyÊ2¤yÖÙƒi>ö–w±«Åãé!“à³Ñ)àƒÑ߉g×}9 {\í>ÙÜ*|™Ê¹œE>ÆóžµÆ'ü¾q s/ˆ`L£5Ô™ÜÖŸðt0ôÍž .ûˆÚ’môTøÒ4)¸Wá£ø{nRz,¼ˆ“9²"‡|¦ _š(.âd}AºÓzã>vR᣺ú14–‘iôTø¢ûÚD|L§=kŒOÂí¦ ]N(ñé ¶ ·Kê/žHÄÇtÚ³ÆøÄø¾óÅxöÉZc°Uø¢KŒDáhÕ3“5ËèY_|ÆÎ\ŸLYØ‚cñ¬ðñød|õlÁiLÖ ³OêÄH¡˜^£sóúâ“0õe¦dÿ²,Kt¬°è¶Ü:¾> uŠ”Šëu³D§1úfX¨n=>ΗÍ23kŒ¾7_Jû0Þ;1E«·_ü¯?°úg…—%æ+ß7߸| ¤ðÑhsði̻Щ->VQп$y:µ¥ÂÇ*V| tjK…UkÀ§Q[*|¬bŧ³ïB£¶¬-¾”*~Ã]8ÇË"wì9ÎMZ}\¾ŸUàbOî»Q+²Õ›Á£;„žòÞ(Á6굋Nk¸”FmÙ8|îoÆ;kYÖò #ò=‡O<ãןbµ#€ïi?¶Ý? ™ññd*Ó¨-‡oÚ†K%,žâfrKXø<„.#[ݱ»z%ßÁRf¡ƒ2h¤ i”¾ˆï¹‹æ}³3Ø Áu žB‡È„T~^ç]÷:£®gÁ¦5ìMv½š¶]  íf×=×ôÎ 3ÛëÜ"ü ƒ'¸øÔ|@GãÙõp:£ó)ÉÖÒ¾"QÐãÓá¿Çã ‚oºùïÿiåÕÑ(}7ŸÌÖYë ÝÎÇ>¾:…Œ~^û 7Ñ`ÖŸ¡~àþÝu4§¯¿Îû €ð:︸æìúÈ"O/[ø÷5Æ.Þ#Ûví±×º÷èf>~eœþNº ™ñvl·‡Ð2óÑrþó{2†âNKðÁ꛾ d|úe<ÿËÁ÷ñ'ÛòÚÑ(¨_“†ü ¡÷™Þä¯Ã¬¼J:•ëx ÁG–. |³£6dôóñug}°óñ‘Þ÷{ }ús€Ïµç62ºÑÞG\à-WØk×#øp÷íyËà›â¹ÖM÷/Zé ò*éT®ãA49pˆâ3 º$£Á7 ç>øðÜ÷ôËy=¿·×%ø¦=|àO/ðÜwáÏ}‡€oúàÛóñ=ÚþÜwȇ/ü´¯Ž^õßÞ矧AžÀRøÐ¢:tjËæáãÒ´•µÅ ~3õKbsÕÒS[]@,ô>¾P‹—OzŸiÍQÇÏá¸Ì}ô>äZ™øDt>uÖ…GZð÷Î8„ôq^—à‹æ>Ã[ÈÜwÑÊħ‹Œ¤X ßBaÇÁëKH+OH„É}®!Oáã’ê:vd·”™²eŸ.$ÚRá‹H‡ÿÊàpÌÒ¨-¾ˆ&$}\;uä=KnYÁ§‰‰ƒÞÂã'I|‚:ŸÂÇ+É:£&( z? _LLý'Ùù¾…Fm©ðÅ¥1Ø&ð‰9h` Bá‹‹¥û%BÔ„¡s„ ð1´B‡|Dµ¥Â—*­È Úù&…Ö¢÷¾Â—ªÂþŧ‹Þ»Fm©ð¥K+Ø OôЩð•W“—KMøÎé=*|ÊmÈÐ)žÂ'@Zö¦‡epå²¢±ï:!…/K9Ãg¤Ñt»Ö¨-¾LéY–C§”¾§ð Qæ±û"4Iô>!Ê8¶è|2V-D:µ¥Â—#=µ4ŒL=…OŒR‡Ï°óíèÒöKïYáË“¾Z4Hl-…/GLwÙ\-ú“ÿç¿Xî³É*Úrûðq7êúö¤S[*|ò¤ðIÂÇ,…I:µ¥Â'O Ÿ5ŸFm¹­ø.œãe‘;öç&ÕúÂyŸçìàÿç§™X~õ=L©ðIiT÷7ãµ,ky†yŠžÃ'îgc¯›ãì[-ð¡VP¦ŒTø$ˆ4ê´ ÿ– $Ÿ&íšÆ«•ã{⑆¾Ø$­ÌÁ îÕ6d1LÓ–â{î¢yßì öhp݃§…Ð!2­©Óò:7èº×u!!¶sqa¬f×=hI¿6DÃÞ´ö,R†½tH#‹</¾éþåk¼SÈb˜f¹¥øöñuÐ)zk|öÚW¸Ù³þ ͈úÑ8+ïœä¦ókaCt×}>‹^')Ã^pU$ßs×µý”j³c’Ïpö!Ír«ñ!ø±‘M–.CÏ:ÂON¡É0>ߘà³Ñ'°òÎÁÔ:ECt…ÎPwZRo2ŽŠÀ‡|¦ã|…:N?ÍrKñùƒgŸ…ç¹×c×qF>¾¿wC;üî'VóŸß/ð!ÌHŽsnC# Çç÷>Óòk@>C<†§Yn)>²$Ià›µñFÃÇ×õC»Aï›CbO7è}Ø—}AOm9½oŠç>Èké ‡Sþ¤F/XÜ&|äÀ!ŠÏ0 4êâ)íÐÇ7ôç>l·×…¹Ïn2CúµÞBÙ|Œfc2÷‰Å§#²ò„¼†¾pï‹ R´­øÈa{|î»Eïð›Þiƒ§a°ò$‡í°òÄVxå -é×"epL1˜âF–€¦ÜB­_ÞM^³´Í'Ítò?¾H#)|uÙÉk¸š¿0E Ÿ`]á¦o•Ý“Nk¨ðI”Â'A„/Ú® _mö¤SÚ)|2%_´$âãA!ßîî®.Åqš>ÑÚõõÇ‚ lw£Oþ°rñîn²DðeºYlPÛ |_Õ‹Ø3me{±‡rZÝcªbM´Eøòm ‘ò-Û Å[ Œ4*«DN¼Ç·»»ó‚‚žžò5#ÿM ‹ŠkEZ¡h]øxž‚ñ…ýeÂL/õ[bµÀo¡ÍÅw¿óBµúj‚«•$}ôLÛ劭º¡øîwv´ÈÓ"z«›µ•äw?î •ºË¤¶_‚*<¤ZÝœž¤x.#Æ(Ñ@òðq‘(og‡yzJA’‘ÞÂòøi6/Ï7 WïH«’‘Üëì{ “Vl²zï¹ÁÇ;²½H+Ô³ö!6y<Í>£Ziiø¸¦>n|÷/xWôé¯_˰†È>õB‹äйøîw“Kze¼ü\Ü;Ë—^dÒ¤ÍÇwÏÏ.;ž[©Äs”»OPJãHÃÇ7 2×*/DÁü&>“.H/ؾ:t6ßýÎ k72³‰-OJí5KzþæÔᬹøðJSãÚÇRz¦ï‚ŠRºŸž¿9µidáã›ú¨ñMDœ;Î^BâÑJï|UzîÖ´¡³™øîÅœ÷Ïéb…ødäôÌu™NO>θâj“G qéÙ›ŠG ïzζ¬ÞÐ0|åš1å}SÀÑEű–½é!«]$áã; ð „—OˆŸøî§enÉ¤× |«•R®/š•¥.$Œˆ´Ì-Ù­" ï¹Ë¬z“Ýï4N—éÊDƒOx÷Ó²6d,[@À¹ìA”´Ü­TÇuù.Ø•å/‡ž$|¼cg*¾ÝïJD’¡>TøÖtÿ¾ÃqFf¬l8ñ}FDAO >þ±ð)à·ûyðv%ƒnY Ç¢¢Æ;|C´è}cdDñM„ßçR4ô¤à+q±æ÷G x¢É&™p ¸e%‹J§ˆã>ÜÁ÷¸À÷Ö8Œ­EõòádÄEE¯føvþ'U°ÔK&#e Ç"¢:Wyîðí}þ9Ä7uÚI|%Éû õ@GO>Þ±s²»#/³ÄR:••FçLäyk}ùð%m;HÀLJÀ?RòL¥NéŽÖŽÅm×C2ðqu¾ð3…"|AÞ¶¢Ä÷ÿ¨vT>œˆôàoö‡³«ª¾åÉ1ù½O£3£ý8Aàè©ù¨Nx|Ìv#!HÇGý)&ØåN²{ÑøX;ß$v¤P|”†‚ñ1u=T9¾äÙ1éø4Ñ–ô‹=1v=$€•‹¤ãÓ©-)g5+ŒTO¬]‰ÇÇÒùRö-ÃJƒÒTØèùð?8*‰ÆGßþ“´o˜ÈƧ ·…ïå÷G­ªðe|$T'|ë=aÖãq$娙y¹´d|LGikÄGf=G‚ñQ5ÿ$ûriÉøt Öå܃§ÆQuýørÓæÔ ˜ÒøÂ§ÎQW,¾â±³àâ1¹øX[Z£²ÒYÈiy¬ÇãG,¾¢Ö/¼òO.>ÑžnU©³†ÑCäXÇP|â‚ézᣫPbôŒ¨ëÖ‡ï>5ûTBRñ±¢QÕàÆ—8G¦s¸Š/¯ñ龜W3|YI—bâÅ—hÔ¢è9ü>¤œž.ØKªâËì|ú¯ ÉÄÇwvr¢.¹Ø§~¶ 3»Y ¾¼ Þ“ª>4)LÄêøeúÇzù;ÉØµ8|éMÏöõJ™ø4Îz… ÈÙðe~&«1¹ v- _jçc7‰êŠOå9mÒc÷²8|iÙ&™“WIÄÇýÁœ@|9ð*Æ·ÚùR?-D|¼‡g7@Òè<½Ì¿‚ÒKLÂð%#cïyi^Jç¬Gqë"šŽý2cÁ²”FQtÏ‚ð­ÜÝCãrSC|7¿)ìØ…ìPµøâíξª.øVx{ïÆ‚;¾üÍ]5Žåãóèn )Z«áÈÃÇ6õå&`"…I ŸÂ'P “t&ë*ðé^¾T)|uÆçÚc÷ݨ-Ǿ³®ðÕ _|êÃøžöý)Z2~Œ4_}Z6íÈÃ;xLkt\ÞÉ*yÄÏÇ|l#oíøâ'F0>¡e)•\ IDATËhI¼9ýgÎqÔÂËø&ôjù…ó>%ù£¹øIÀ7ú·o¿\/Ûxoüí[ä©c‡OÆß~ÿ8¾e€ýë·ÖI>¿½ªðy[È{øÎ 3 ®Û¤Ô„|shØ#v¤qÝߌwÖÒEË3ŒÈSô>Y)w?{ÿ™/ìäÂñ Îà_„Êu¬ÉOñƒ~rKXø’~²µŽ4|šÿÇ;¾|íã›]Yßñ™”šoÝu‰iÜiþ-•HɲxºR÷3ð…ŽÏ>qîÌþþ´5u¦Ö<1¯¿;ýëÚï?:Öž{2¾†Lëéb€Îöœž¡s{¾µ.F¸&ö3ºvÎgàŠð\ü8縞SÉà©ù‘R?:ECߎ4îsÍû~vÇÁu rê tˆL ÷RHìxÝ댺~¶„žZ® ½^÷pE×ÀÂT’ð0L%)mðã_¯¿×Þk;³;ÏÇ·ïü³ó¿¿ýëøìîcÓ[óÖ¹ÅFÿ×™ŸüŸoüpygÞ\A@ìpÍ1éÊŸz{ð¾ÇÛÇ[oÐùº7?©L{~ïCˆdoÄíh’RÓÅáçDcß?ð³;ÞÎÇ>¾FŒ{)Ii fýš‘Þ‡}€Þ i!-¨èâGa*Ix¦’”ŒÏŸgÜâ°ty_ÿ;~òÏ~§›c%ÂKœ'\|<2œ û ||Î×ûêùì>oDÞ·WONõ½Ï%sŸIªÜhï##Ép…ÍÈÒeèYGÐKýN7œârd?CïµIú:«#ü8H%i“N~Z€OãxY+ƒgî}ƒ¼Lñßû_O“ ÞŽíZŽó/}Rîþó#ü?W}\ò¼(òñõqðÏùøJ$#Ì™Á_ïø¢5œ¾i8à‡xî;Ä¥þÜwÃçž|ž_¡—úø>þNfJ2÷½ {/¡g©$¡v˜JR>²äHà»ý÷3Çs¾ùøNnÍ%>Òû~ÝsŽÿW€oô|ç‘ü\½ÂÞ‡çĪñun!iŒ ?ŒÚð0¶òlÇð‘¥Kßì¨ ½ÔÇ×õ‰S\ŽNÿô^Û_º|A*I›ŒÑ†\|äÀ!ŠïÛ·oŽ{‚羿ûøžÂ¹àÃsßðÝ“3¾ð žÏã¢û7|às ž'û°ÅÇ7è@Y%øÂ£öÕÌâp|¶Zº-Wž€ÿ^Ú L_ëoÏÁ2Ó?lÇ+Ïg²…->>¿¬9øÈa{|î»EïôR€ò4 WžP>í½×~‡í6 RI¾0•d&>®K©JŸ4ìñ×M‰GÒÚð]á=þyu>²›®VpÒ¬|_ N°Ô‹*À§ñx)‹ï.õ´h^´<•šÏFã»Â¯¹•±¾ëkö‰ƒ´?Í|í½óf¸uÃ'kí¢³™¯ï­Œ¾T­ßý î{Kn >Í|}øv¿+sO׺á“5ùilæëÂÇú ¬¤dÝø›[õÀGõî+¸ô:_Ë7WSU;|’FOM´ÃâïQø(EíðIê~‚o4»[üµ# 'åã¨>9ÝO0>Š/ýJ=…O“òO½â“3zоKwÙÎw/„^ñÉé~šXw%;_ÑÇ©ýl >]¨·I¹Î'Š^ñÉ=u±Þrn\,aôj‰OJ÷ÓE:Û-µòG¯–ø¤t?‘7J_:wí2ç8“ª%>–;ØÑJ >ÞOw|}'( ¢Zâ“2|êÂØùÒJÖçg ‹^½ñ æ§—«ÎÍ@øÁúRõÆ'vùYî¬5wí{½Ô~ó}ןÐåK9|g=) çõÆ'–Ÿ^¢î²V¿J½Z²”TzµÇ'”ŸÎ_5²leÂÇq/ ÕŸH~%FOmùŸ¼E‹¯úãÉOç­¸h¥ƒ[dvnÂdeð&+K‘Ä%g àÈO笷:/[fû*LV¿a²²U‰ÿ|h5°àÇ÷Ä‹>xîλ¦åYA²2?iËi:>™ ‹}4Ÿ0~œø–WAþ+ÿ$+Ã?F˜¬,)9ç¨j>aü4žJ‘ ÷¾sÀ$+ƒŸ0YYBëi׆àŧûE׫Ç-‚ïq/LV¯#ôrÀl5_ö=C™Ä/¾•'Æ$+ƒŸ0YYTe¿¸I­Æà˸Ý2«4Ö <ËGéÇ 5ŸÈ|ä®3ïbMÚ$|B>@ÒÙÌ_,ÎŒû8ĵ–g¨fá0€êLÖìsåzÛ³aøÊ L£'óÇëZq†j¾òPg°Õ}¯ãDK|‡ÃW¶2t?Ö¶Yë´GÔ@|%; ýtÆ:ñUДÄW®j”vZC_•´d3ñ•ꀴJgòÊ[šŠ¯LÔ¨¬ØN”ΠȧÆâ+Ñ5#¶ŒªZ±Áø¸; ÍèÉrªó~ý+Î宫ڳqv@]ˆI(É“åªÙøpäX<0¾(´XøZßÇ )j8>ÎT/ØNÄWÑ’%Tãñá” žOúTgå­Wy"Ä<‚Nò—&¥îÛ/ÓFàcŸõ¼|Ž”M²¶+"r´ø˜NrðÑM|Õ.YBm >F€9ÉpéŽø*^²„Ú|,'Ùø¨è}W—VÛ$|ôsÒøëŵë1nm>Z€“L|dê°d µiø Åq`ÖèY¼lyQŸ®‡6¢:Ÿ¤â+<^ß©Ysm$>€©£§VPgÍבkCñQLÁ—;tæ*V¦ÅW peôÌ:ï_$­k¡æã˹ÅáË?åÞ1yóÄ?d›îälsäßj3SÍÇWaãUÂ×è¾FG ð5:…¯Ñ(|Ž`Sð]8ÇË"wìe|—律îØ}7jE¶¸ã ã€÷¡“â*цàs3ÞY˲–g‘§è9|â¿þ«`|Oû±mîø10±‘ëFP6ß´ ÿ–‚ìGiOñ3¹…`|B—‘-nHÅ;Dª÷Éi¼ç.š÷ÍÎ`o€×-ŒÂBè™ÖÔiAÖ¿ë^gÔõÓ°`ZÃÞÔiwЫi2“9d¾sÂÌö:·ÿÂà Õ?]¢§34»þ®áÏttFêF"¨F‚σfë¬u†nçc_Bº?’ùÏÌú34ÃÜ¿ »îÆáôõ×yÿñøf×GÁw|Ù¿¯1>¨þÞ3-ÓD^ë \ßWƉE¶D#¨F…Ál²tzÖ~rêwºoŒËÑr¿£Þó9øÐüÕ€à³æ}üûul’ê]ïo­¿šÈÅ}\ã?=òo‰FP6Ÿ?xFðYx>|=vgäãûø;il2 âíØn¡7&){î°¬\‘kÍ ú¯ŽL4ÿËàóÿ<‚‹ Uá+¡åÒ%ovÔÆ _wÖ;é}¿·Ð§?ø\2÷‘iÐö¾ ú?ĽðÁè}dK4‚j´!øÈCŸahÔœסoÎ}ðá¹ïé—!òz~Áp ø¦=|à€zÇxî»ðç>Rý]ðíùøö,î;TøDhyØŸûnÑ;Ü+6´ÿÓp¹ò|¸ø^ÚLû>¾½/dîûaÔ†‡±•'©~un¢ÇÑ«>v ü•g[á¡7m¥•š(ÿÎ è—Äf…¯„J4Þe7­´߯[Q”Õ6㛧眿™šFϯ–Š ´¶ßD ð5:…¯Ñ(|Ž@áktÍÇ—{%îZ¤ð)ñIák´¾FKák´¾FKák´¾Fëþÿâ›á‰TG=IEND®B`‚omniEvents-2_6_2/doc/doxygen/a00350.map0000644000076400001440000000036610240666512017666 0ustar alexusers00000000000000base referer rect $a00073.html 474,9 621,33 rect $a00043.html 460,268 670,292 rect $a00062.html 358,86 548,110 rect $a00046.html 554,358 749,382 rect $a00070.html 320,177 586,201 rect $a00066.html 384,449 642,473 rect $a00049.html 629,86 805,110 omniEvents-2_6_2/doc/doxygen/a00354.md50000644000076400001440000000004010240666513017570 0ustar alexusers00000000000000d8feef8b8a26e956fc62ee9a2f558c87omniEvents-2_6_2/doc/doxygen/a00352.png0000644000076400001440000000246610240666512017702 0ustar alexusers00000000000000‰PNG  IHDRGtäþíï!PLTEþÿÿo___???ŸŸŸßßß¿¿¿ÿÿÿ/l:ZtRNS@æØfÃIDATxœí›MsÛ6†ótlÏiòØvKG'qL;i"ùè*ŒÉ£ã´nj“<Š"ð”èƒ"ð+³ ¢¤‘l7e»ÆKkL,‹‡‹${FøÝ×çG·Mp iHUÒª¤!UéIUê¦ Óÿâ|…Øõ]5ä¥Òª¤!9ïнʔ¥ŒÒþZï}%=œ¬z:g;Ù?öŽ[ÙLfÛ Mž—ìÌ6¼Û‚7ñ§s—|æÍÒïV sÏB§1–¨v¹ãŽ©ÉZ}\´ˆÇ\æ‚_æ¶È!BÆAsüË@þ¶ HŒž:fÛlóh–JÈ͵ÏX³™Œ§á”O%E=œl`?gfo´wl:ãƒíAr¼žˆ3dîKh¼Æä…›%™ðnÆcoæ9†» H¹Ü 0ëøç4£”HÈÓO^éwpú<‘5éÌ^4ðt^˜Û€brú² ¶„ô¦aéw0äe&™Ç “‡x¿Hq-Bڶ͉5¹+!‡²&ÁÏð†£DÖä.󌣽ŽéðÇÛ€‡ùrMF|2G›ˆ8»[æÆÙ~±»Gäq(vw~¸ H5Òª¤!UICªÒƼÞ_ý?Üî?®§U¼È/5Õ.¤êõ¾Èš†T¤ZMuQ>PÈ/÷RqQ>PÈZMùz?PÈûñCC*“†T% ©JR•4¤*iHUÒª¤!UICª’†T% ©JR•4¤*iHUÒª¤!UICªÒ A²oþnÀÍ+ÕŠ¤!UICªÒ äïV}„AïhèÖ&a"Îéåó’r¾µ~d9eËäÿ&¨:Ô÷š4)©ÿéãr˜Ê€#ß´.§4„ïz¿cÙ»2nãÏBo°ìT7ájOi@ÈÕ8›´Á/_i/C&8a}lŽéØ5`¹ê„†AÌ´>¢n§žYi€0M:1o×铸Mr4]¹#! èᣠ zÀü oÐÃŒ‚Q„DÁàø‚y`T’í³bð:È^,4šF“NLBÖé3ú‡”¶ _ãȉh7äo:³Þú'ñÓãÓï¡QÒFÀÈT¤©{aà=˜r"·Î™% Eôƒ("8¼`ž~÷ÜÈ +o†¤xå7Î$ >@ã™Làx>ªK'`Þ#vƒv’$$%02•%0priBHFÄSG½IYr>Œ"ƒ§Ì“X g–ƒ7/÷$d2~Ê~YEDyõÞš'ôƒŸIéï¡0 Êà¯Sü…qz!Xò¹IB†œ;y‰~]ˆR@úb¹¼Rò dô¡Mõe+r*H‘É÷Ýû©€$ù€ŠµÅ8½"ÂDÊLB .@ ¿…LÂ<ÉÆå™GÐ"¤ïû4³ VNd”IY“ªi¸3¡iG&qžZ²ßÁÑ‚e…ËmÕ±GBÆ-´ÍkRø½-ƒ§ÌÓÇQ²&7@ŠÃ|¹&§ô <1l@ˆ1œT»!Áü6VìHHóϼØÊò† š‹ =RÚæ»[øÁñ‚[ôðö ÇõߤظÚ绤òüŠ7—ï–ÈÁÚ·÷Ëð  6é>~ º›Òªt¿ ï¸4¤*iHUÒªôù+MšÀ-¼ß;IEND®B`‚omniEvents-2_6_2/doc/doxygen/a00352.map0000644000076400001440000000005310240666513017662 0ustar alexusers00000000000000base referer rect $a00041.html 88,9 240,33 omniEvents-2_6_2/doc/doxygen/a00356.md50000644000076400001440000000004010240666513017572 0ustar alexusers000000000000008c897994e920691382caaaa8c7fd824comniEvents-2_6_2/doc/doxygen/a00354.png0000644000076400001440000000246610240666513017705 0ustar alexusers00000000000000‰PNG  IHDRGtäþíï!PLTEþÿÿo___???ŸŸŸßßß¿¿¿ÿÿÿ/l:ZtRNS@æØfÃIDATxœí›MsÛ6†ótlÏiòØvKG'qL;i"ùè*ŒÉ£ã´nj“<Š"ð”èƒ"ð+³ ¢¤‘l7e»ÆKkL,‹‡‹${FøÝ×çG·Mp iHUÒª¤!UéIUê¦ Óÿâ|…Øõ]5ä¥Òª¤!9ïнʔ¥ŒÒþZï}%=œ¬z:g;Ù?öŽ[ÙLfÛ Mž—ìÌ6¼Û‚7ñ§s—|æÍÒïV sÏB§1–¨v¹ãŽ©ÉZ}\´ˆÇ\æ‚_æ¶È!BÆAsüË@þ¶ HŒž:fÛlóh–JÈ͵ÏX³™Œ§á”O%E=œl`?gfo´wl:ãƒíAr¼žˆ3dîKh¼Æä…›%™ðnÆcoæ9†» H¹Ü 0ëøç4£”HÈÓO^éwpú<‘5éÌ^4ðt^˜Û€brú² ¶„ô¦aéw0äe&™Ç “‡x¿Hq-Bڶ͉5¹+!‡²&ÁÏð†£DÖä.󌣽ŽéðÇÛ€‡ùrMF|2G›ˆ8»[æÆÙ~±»Gäq(vw~¸ H5Òª¤!UICªÒƼÞ_ý?Üî?®§U¼È/5Õ.¤êõ¾Èš†T¤ZMuQ>PÈ/÷RqQ>PÈZMùz?PÈûñCC*“†T% ©JR•4¤*iHUÒª¤!UICª’†T% ©JR•4¤*iHUÒª¤!UICªÒ A²oþnÀÍ+ÕŠ¤!UICªÒ äïV}„AïhèÖ&a"Îéåó’r¾µ~d9eËäÿ&¨:Ô÷š4)©ÿéãr˜Ê€#ß´.§4„ïz¿cÙ»2nãÏBo°ìT7ájOi@ÈÕ8›´Á/_i/C&8a}lŽéØ5`¹ê„†AÌ´>¢n§žYi€0M:1o×铸Mr4]¹#! èᣠ zÀü oÐÃŒ‚Q„DÁàø‚y`T’í³bð:È^,4šF“NLBÖé3ú‡”¶ _ãȉh7äo:³Þú'ñÓãÓï¡QÒFÀÈT¤©{aà=˜r"·Î™% Eôƒ("8¼`ž~÷ÜÈ +o†¤xå7Î$ >@ã™Làx>ªK'`Þ#vƒv’$$%02•%0priBHFÄSG½IYr>Œ"ƒ§Ì“X g–ƒ7/÷$d2~Ê~YEDyõÞš'ôƒŸIéï¡0 Êà¯Sü…qz!Xò¹IB†œ;y‰~]ˆR@úb¹¼Rò dô¡Mõe+r*H‘É÷Ýû©€$ù€ŠµÅ8½"ÂDÊLB .@ ¿…LÂ<ÉÆå™GÐ"¤ïû4³ VNd”IY“ªi¸3¡iG&qžZ²ßÁÑ‚e…ËmÕ±GBÆ-´ÍkRø½-ƒ§ÌÓÇQ²&7@ŠÃ|¹&§ô <1l@ˆ1œT»!Áü6VìHHóϼØÊò† š‹ =RÚæ»[øÁñ‚[ôðö ÇõߤظÚ绤òüŠ7—ï–ÈÁÚ·÷Ëð  6é>~ º›Òªt¿ ï¸4¤*iHUÒªôù+MšÀ-¼ß;IEND®B`‚omniEvents-2_6_2/doc/doxygen/a00354.map0000644000076400001440000000005310240666513017664 0ustar alexusers00000000000000base referer rect $a00041.html 88,9 240,33 omniEvents-2_6_2/doc/doxygen/a00358.md50000644000076400001440000000004010240666513017574 0ustar alexusers0000000000000095530f467d52b2c12a72b7460db55b1domniEvents-2_6_2/doc/doxygen/a00356.png0000644000076400001440000000351110240666513017677 0ustar alexusers00000000000000‰PNG  IHDR¿Ó;`!PLTEþÿÿo___???ŸŸŸßßß¿¿¿ÿÿÿ/l:ZtRNS@æØfÖIDATxœíœÏWÚJÇû/¸}k_•,õ*,íS ËÖZ`ÙÒÔd©´U–¶’Ý#?ÈdW!sÿÊwï„(Ó¢Æ>ì›oHOæÎÍ3wàäpëX%=ù¯2R4r)¹\ކå¦0šŸÆXZŠæ‘\”¦Éög¦8äŒõ9Ç;öð4ñ}ÇœÙ4®ësMH¦añÃ󦽹ÑDezÍÄÍŒÏU“߈0íÍ&iÃØ6j^ÁÏÒp¥p€]0̈i¼Ö«S ÚÜÄ£AèhE!͹vÓÍÿÿƒ_J³Œ\ŠF®[Ò¬ÖÓÝ-µZÏá+V}¸Z4+V}˜Kœß”f…ªW‹FUfʵR4«U}¸Z4«ö­©häR4r)¹\ŠF.E#—¢‘KÑÈ¥häR4r)¹\ŠF.E#—¢‘KÑÈ¥häÊ“†ßò—·‡‘¢‘KÑÈ¥häÊÒtàlÖð`°è&´×d†#Gqa®7àöäjL pYšà}÷ÈšõÂnw®Éüi#ì~ý˜¥™ˆ¦_Ëô¼7ÍböÒ4^^sƒXß«&^Ø×{¦¢ »ÌÐL¯Æ¶±4_a®a#-b‘YÀ•ÂáO˜myP‹f6‹q%´èÀÁ‡MêE¶áÕƒ„ 8fâ˜Íï K! ‹#†'­…دDçì”;æ; ÏŠqÉ‹Ëc- Á÷ĸ](Êläò”¦Èž±×Ý·a½Š39†Ã¼>³qåM÷ÄÛÊÐVœâi¡=¤çÕ«¤?ÕÎ'B£J½BƒÐÝņ‚é§{: {£w_÷ôa… Lv?S˜±O<}Ï%šNw …M° íÝ/ѲÊèÃÛ¯ƒå×xô¾$ ûY”Ãß¡ÐÕ}ReûõìÁŒÃ½²gx¢ÐÅ8„¢ªº×„°8)øÌðceçÛyÙ7ÛðŒ¼€(ô9+eǂŪÍ.åa˜MŒd‡ ìWÝ]jã!‰’Be¹$J I”å’()”ä#½ŸÅGz±ô÷^pQ”»mþÝà!‰"¢¡ˆ, P¶_Š˜3ìor÷²P„ ‰’AORku”ímAƒåoò’ÎŒ%Jæ’("J¢ˆ(‰"¢$Šˆ’("J¢ˆ(‰"¢$Šˆ’("J¢ˆ(‰"¢$Šˆ’("J¢ˆ(‰"¢$Šˆ’("Š¢¬šïÚÉÈ«(9¦[ϵÁP²}·¼Û¼Û(«6µÍ» ‰²j3QÛ¼Û(«6µÍ»Ê ÚŸ–¹­ÈZÆ !Ê’fÂÛq3ÇçìáŠ3~§(î_êN`¿‚§ªÁj㇞úù]ØM¸O%Ì£ÄÍŸ³‡+Îø¢8eú(ÕÃ;ëÓ -\²K«JÜÌñ9ûlÅß)ÊØ #K«vó]š¾MS" Ù%šî Íï6›U{’ (ý¦ƒÊUòÊ)»=ïÜ×HÕfiàCóŠ”®X¸w1Ÿ!¹Zæ8E¡] ÎXθŸ vè”oªó0Ã(ô/Ö µB´GØG©’CòF½¤ ÛžÞZC2„ ÷=éoÕ]çõõÈTŠ1´¦(lT¾ÈÅ?ÁЇфqb»âê‹Qâg޳.øÎ(Êò…V¤Ã£BGuxŠBa‹qE…¥Ð6`Zîú(ý‡Xa@¬Üê¯ †x úƒ JþˆÅÊIa1JÜÌqj‡.øÎ(Êiñ´GúNuÊ(A¬ìF¡°Cd8VÚdF •©Ÿûþt#l )¿‚7ϱ¥Q‡Évù–Ñün¶‚µÉb”¸™ãÔN»ÀœÑœq¨ø–ä¯Xë»+X9%‘œÂœiÝ ¾æ{â2Š´ò@95æLÎþqèî.ÏätrušV Ÿ(=”¸ÍDmónC¢¬ÚLÔ6ï6$ʪÍDmón#ɧ“ýwûÇXŸ>6ÓïVíI ÍílÒ¥¶ÔI‹r·ÌÖ&PH(·[¹µR£ÜeúµµÂåöå lm fØO\Y€$IÔó¸Ÿ1Žq»Azƒ‡;~,[DaCrÇÁ¯MŽŠ/~á’pãxïožS,—¤?nárKnsIêq¼#;/–Û„õxÞ\žSèçÖãzŸ|>¡ŸKXï-ÿy°$_¼¿½€C¸ä’VäŒÂ!ôsI+òþN‰Ô,‰çÿ¯ÇH»Œý#qMþßô‘2ôEBIÇò¿äU³øþ•4á’|P2AIú‚¡¤`I1¿²AIÎ"Jb–ó++”„,ìøèØ55ê:–eÊ %Ù¡’¡¼R5ê:–eÊ %Ñá%Gÿ4‰¦F]DzLÙ¡$9¼äèŸñÔ¨ëX–)C”ÕÃÅ?•d£qË2eˆ²:‹òVUô¨ëX–)K”•C?Çþ ¦G]DzL™¢¬ú¹ÉóÌe›1•-Êj¡ÿø_—(+… œµ4½´ØIÔVÆ(+±¤9k!Ù£¬ú¢£Äý4gÅTÙ£Äfy(q—±”ók-(1Cÿ9 ÄcI;¿ÖƒkË¥md=(qB?—¶5¡,gIþYñƒÖ…²tË¥nam(ËB?—º…µ¡,aI?¿Öˆòô2ö¼Pž ý\z÷ëDyŠ%—ÞûZQ/c©õdÝ( Cÿù¡,dI{*Iµf”E,Ï%š…ÇüZ?Jäá噢D-É<æ×&Pæ—d.ƒ²”¹pÉqq» ”9–¯A™ }§’T)QVMþÉDX¢H”,%Q^8ŠmŒÌ©c‹æ(棚$dh.2Xð¸Ò‚¥–=É¢Ä „Œõ \W¯N§Ž[h|slé±l|sP õ!` (_Ãåš¼!xŒì§ÆŸ#Êì7ÐÃpKãé†íÍ”<(Їl-„òÐÕ3ÔZÓ¨œ ´o;ú/¤„‹èô½Ÿ·Ç¨>@Žžï¹ïô°YÏñ¾R¶µVãd™Ô`!l]Å‚šë?6½kt‚‹ûüê—QÑeîÛú1ª3çà‹7 ¼³Ø´m×*>J[k7ºÕëü°ã¡1.Q ~ƨÙÀçÝ‹fþãµ¹~fÖ÷¶fAÍâh‡¡ŒnŽ<…º)Ø2- :Ì=ÎWZÍ1-ÁçÜG…¡xô›Øda¯Œû%l¶l0pÉo’‘‰lv´ëcÔSŽ™¡Àh@M´k”èË1Ú‡jûõ×nÜ#|•ÿÕB¦=¦îmd]+t³ÝÀJ6,€Bƒã£…,B4†Òùvþ4´ÜöZêþËcÚ÷ƒÏ }*Á`ÒgŒðßþÞøb¡ƒ¯ ¥óïºe¢1-Áf&a?‹òÛ¯#ÛôQP1€ÂFå uŽjËT|?t¬à¨0ؼû=b(0¬lT $º‡PnnL|‚ºÕfÞŸ`ÊC¬P+_,¹ŠoPêæ½òéÃA¾ÝœA¬œ±X¡. ¤(­ Já’ÅJ3Ÿ =DÎÄJ­ Ëj}È–-cº‚Q0·m }ò‡©å–Ù %-ýOö2¸‚Qج@ ޾Q÷-÷g­`C”J2}\T@5öS·Kh›áâM£Ø'‰QºW5‘P*‘§iLµÉc¡ê£Ð¹Ü¦Q8J¢H”L%Q–DQEDIõ‚Pþ_qWj tIEND®B`‚omniEvents-2_6_2/doc/doxygen/a00358.map0000644000076400001440000000015310240666514017672 0ustar alexusers00000000000000base referer rect $a00062.html 7,86 197,110 rect $a00073.html 29,9 175,33 rect $a00049.html 221,86 397,110 omniEvents-2_6_2/doc/doxygen/a00362.md50000644000076400001440000000004010240666514017570 0ustar alexusers00000000000000c8574958d44308b1fe03b063e5560e0eomniEvents-2_6_2/doc/doxygen/a00360.png0000644000076400001440000000717310240666514017703 0ustar alexusers00000000000000‰PNG  IHDRÄ,¯fÞÃ$PLTEþÿÿo˜2Í___???ŸŸŸßßß¿¿¿ÿÿÿrû˜tRNS@æØfIDATxœíËÚHÇç¾§\W·\÷ºùÌ,“áèLìÀ1“dcìa,'ctÌÄé4ÃS­ËÆ`ên«Z`n°Ý ìþÙ¨VW×—~ÉDßѯﶀ|)ć …ø¤‚¢G„i;<-# s,ÎSR)ÄøRˆ”BŒ¯”#Ž mcnÓ)lY^åcëËJÇ)G<Ý;¾šÛú´[­º-{Y=Ïßñxô”q_°ß¹º‹Ý>uéȾã±ô”që”^Œ:ÖRñJM¨õMvÔ¥¹&íXÙ‰óɪƒ­K;x0{õªÿf]R8|â˜OiÑ…£æ°9t½|ÍGÚÃâ`ï4Û»´ëUJ´?¥ö{ŠÆ¶Y¢o½lâá»Ñ‹ ÑÅÏð ¶Ü˜Ý›Šg ‹Øy€8=ü¬ÀŒ=ê¯FT7ððÝ@d5€ˆQ?שNˆÍǯØqè\ß8øÞÿ’Û!D\n–ßþ …#ÃG¤%v\—ÂÌ8|•÷Lo‡qÓX@¬V ¯Óî$ëTÓŸ‹ûŸÏó¾‘:¦gfv·þ¥¹˜ذx¶ØBZ˜­¨}ëÏ©‘îÓ¾óÌÆÃ ;±¢ŠBÜ b|)Ä J!Æ—BÜ â¼UüÏ~«8”4ÑAÈU ÄoOć!S ‘§oO4áaÈT Ä' 1mŠ…¸[“Q!rôíq jâ‘'…ÈÑ“';6R"Wšè äJ!r¥‰B®"Wšè äJ!r¥‰B®"Wšè äJ!r¥‰B®"Wšè äJ!r¥‰B®"Wšè äJ!r¥‰B®"Wšè äJ!r¥‰B®"Wšè äJ!r¥‰B®"Wšè äJ!r¥‰B®"Wšè äJ!r¥‰B®"Wšè äê‘ FÍîÚpîUâÓ”¬lƒ‹(÷UôV<–ÕÆ²¢èæ¢6–¥E7¿eÄr8·\Xß›\o„ì-Š”B6-MÉûbÅm,kŽ8ú³º¨ŸõªÕ »Éì‰Wýýå¢û.­Û—î"†MSrǾXqEËš#òø¨e,:1æôÅ’ÚÖ‹aӔܱ/Wä¶±¬9âĤc[/u2Ì‚Ÿw§ô€êÆ€d1™ˆU/9Ó䀨«H¾DŸ ò£®÷–Þ”iÉa9G†Ö%Í]²Œ#ÞÅÝ¿GKS‚ˆ:c Jü´`‡ tx±³ÿuõl9[¦­±ë#–è[ú¢ú³ƒxFghéŒ~¡móÇêÁàû«±Ý/zº¡ë´9f9G¼l­xÒÅä"ÞÑÝæ£¥)AD9c JüäØÕ/ˆwѩΚì²å¦ç¯àÉ[¿ó:So–¥˜/F ­O*ÞqöWÐpЈê§&>=s-bˆ4%h‡˜3–÷á‚BD¸‹‚èÔ"ôâà{wDˆã#že1³I åp\†eñ~/¾ÒéùK†8þ%§´‹ÉEf³wÅ@ ‘¦í‚ï fƒ‚†«p‘-7KˆÃWyxåª>¢9´çˆ¬¿féÅ¿ÁЃއ~e‡™ëE:2V#†OSÂBð!â ú+bwV!Pî¢ ²M#ˆX…%Û1aØøˆ½Ù\dÃ\¼yߣ^ ûðÒôúSÄÌ6O²«æ)A;„à;CÄÓ½Ó.í º,(3sñ "Ûúçb‹îCï’<ú¿éÍWTÊÖ´ü3x±6 Ö*0h¿¼Æ2L&ÂVÔ]6M Ú1æ ”@Åiæ’µÞwʰ¢æ#!ÆÒ {Ç4„ðƒÏÅžÀ¹V™ˆ§æÓàðx!uZŠÎQãhÌ;Í-žHî8bÔæ¢6–¥E7¯…´±¬8oôדhoã†mêï¨Üƒ˜D’>®ùT ¯¤ˆß¤|&õ:uˆÂ?>ýô_%Np/ñ:]ˆFêõÓt!RñˆOÓ†(ÕFC-9Âÿ/c¦Í †Yrvñ~Fiãtcˆ÷.«Ò:qsˆ÷-9ñFyãtƒˆë—Õ‡¸vÉ‘7N7ЏŽQÖ© Ý0âêeUÖ)8j³ˆ+—œ‡ƒ¸’Qâ8Ý4â F™¸qD>ãÃBän2Çé9[‡ÔNÜâÝ­Câ© Ýâé(ñÔ†nñcšã~~õ¯d9ðÔ䈉j‹Ò=Q(ÄdÎ7$…¨“9ß6€>ÿ`ËXeÀìyÇÖÂ¥`ú,3P”Œˆ‰@ Ÿð|ñú’€_.–ë4;m%BFDŽD †Ï?¸˜±)h@D—Žì@émZÄ(9>ÿàÈõ.Ì\kh÷‹/¨n ¯ä+9¦5;ŒË3:V*æq ‚‹^=JFDIˆáóž½£ÁáIöù©qAŸ1ƒî§BÔ¡f©ýž!¶«_(Ü]´Í(e"†Ê?ØÆTxÆØ>½¤ó’"ô&_;+TüË3/0“žŽþ†Å’Qb”üƒX>rû.&"dd:ÿjâ]:ï1"ÜÑw%#¢$Ä(ùY”öéÉOuL…è÷NM=Ø‹ÌE”Œˆ’Cçdˆ8_é&æBd3‡©qÿóyŸ¶«0Ø\DQ2"JB ›ÐGs¿8´1!ðzL\Q¡¤oýÉžWTt%#¢$Äxz¾ª÷Ê¥ tQë2"r´5ÄQ}eÉ}ˆë2"r´5ÄZveQ~z[©59Ri$s¾!)D…˜Ìù†$1雼Þ'&rß* ¹ÿeƒÚ:¢ØÜ6<)Dù›gЧm#^+DJ¢ìɨ¥KpŠIžR€({2*DÙb %T…(_à4\! B”/…(@ Q¾¢Ü‹¦Q Q¾¢)DùRˆ” D¼DCž¶Žˆ[;iNµJ"^.%O©@t—¾’[¬Røz±4'áZ¥ñᯨk¯K.…(]cBHSæ0Ý>âc9“+…(_ Q€¢|)DÚ:â#x7\! B”/…(@ Q¾¢mñœÝ(DRˆò¥H!Ê×#@|[:|Nt[r¢BÜ)D…¸Š„è˜ck^ÕÆtžSJ‡Ö*ƒ ·KãC°Ôv¦éÜ!æºPK‹x=OЩ‘ iásÇ[¬ñªty:¯Ú$“F#ØâmÙ¤qT^ˆ%`@ÄO‹å6™¾Pî„8«Ç‹ÛøúiÑâ4& ÐàL‚øŽý"_lq2àxK%·Dôˆ£/ ΂9#Í5½hÍä¶äÜ8ÃL7“ñ„Cg`<§9w¯íS/ãLH¥OF¦;ziœ€mÂv •aKoÖÞÛBƒ 1î 6Ô0.×e¨XÆ .nNÜŸI/OöFÌ}Ë8&•cæÜ=,Z®…ˆhœ:Âl Z&šÁ*Ç­5·Ç8^§Ö™M¢HˆðÚ¸N¿Õoyn¹è#¶ôV­SºÊ Û™¸¹=’ƒŸ ©×ÜóÎE=óæÊ:$?0cjé6ÔÜï³@Çn€ˆ.Æ×¶l›ôÛ̽›)6/ê,qÏ[¤Ç;€‘La"bËï°Ê»Î¿”XîxMÀ+Ë ÙÑï¼ËAçã½F¸¢ïÂýZûh“£O ±ýGŶÈK\k: ­™#(ðçâÄÁ«¯0¢"yóiŒÏЗ›eÄŸ".q,‘ìY/ž‘ö‡òѶ >š?5í`/2®uöÂa°^„’9"Ž©#,˜"ÂëÔÀ*Ý?ÈÞ Óðlxý1qÓX@l4,÷„tJõŒ?P ³¹ˆá\üh¬ ÌP¨X7>âû×Ge|:nœÁ\b‘{ËTžÞVª2¶Ö‡“úKC!î„âcBÜq)ć …ø¤‚þ$L‘ßl`õuIEND®B`‚omniEvents-2_6_2/doc/doxygen/a00360.map0000644000076400001440000000021510240666514017662 0ustar alexusers00000000000000base referer rect $a00070.html 123,177 390,201 rect $a00062.html 7,86 197,110 rect $a00073.html 29,9 175,33 rect $a00049.html 221,86 397,110 omniEvents-2_6_2/doc/doxygen/dirs.html0000644000076400001440000000265210303671741020206 0ustar alexusers00000000000000 OmniEvents: Directory Hierarchy

OmniEvents Directories

This directory hierarchy is sorted roughly, but not completely, alphabetically:
Generated on Fri Aug 26 20:56:17 2005 for OmniEvents by  doxygen 1.4.3-20050530
omniEvents-2_6_2/doc/doxygen/a00362.png0000644000076400001440000000543210240666515017702 0ustar alexusers00000000000000‰PNG  IHDRG¿3e™!PLTEþÿÿo___???ŸŸŸßßß¿¿¿ÿÿÿ/l:ZtRNS@æØf §IDATxœíMÛ6‡û|Ü^ëM"7ù©¶Žyq*ÛlÖò±õ*&‰»ëè˜M£—[­7‚§Ú’(Ÿrg*¢,щéÈó—‘ 0À<Âd”ßIÖ:ýõ]Þ-øÄbH1$‚A ‰ †DC"HCÆäçí iHæ\cH1$‚A ‰ †DÐÎC:Gó  qµªHpàíí:¤àµw~¥Öj±S9ŒJï^,Ù™]ÝuHÃ2þ̺ 9¿ž†Rž/Ù™]ÝuHÓºœ´“^¡'{­"„›+åsé¸CQ O®d«qâÕC^§//ŠAÿÄ;Åì­†¶·ëBý„ÙGmoç!™C"ˆ!ÄbH1$‚A ‰ †DùÚñχþå$E×6›q¿E‡´÷½ÍvÜk1$‚A@Ú³ÙŽ{-2¤k†´^éÁÆC"ˆ i!­@z°ƒC"ˆ!D…t½÷€%†Dÿ-A ‰ †DC"ˆ!ÄbH1$‚A ‰ †DC"ˆ!ÄbH1$‚A ‰ †DC"ˆ!ÄbH1$‚A ‰ †DC"ˆ!ÄbH1$‚A ‰ †DÐ RhâNÆì®·g\±Ú Ûý Éð0á8Åk4ùŸ\C†D²ËvÁ.C"ØeH»· Wv…ôÒJs·ŽƒJ×§985WÙ[J_,¯7Ö>ÙOª}£ej!ßkà æt˜ÝEHÔ•]ÃÚŠ•]W@:/ýöežv#ûµZ¼À×kKé‹çVkµƒØéݨΟj\ö ‰¼²«;7²º™úø©ú™kÁ«ØéRúí‚«ë½Õ™Y>*$òÊ®ØØAc(Ê'rXúKÍÔÇ )/ƒ^ëgqŠÅqA=9*BîÃ+´?õ~o5ô ŒR×éqêÕUAÒ¡fü·h B0 ¹p1ÙÃOÊР‘‰ê ä \0ˆz­ò¸õ‡<ì@cŸ%@¢®ìºÁKÙ­?«=>ú2iß'@‚ƆÁÕøjìcq —‚–΋`œ>=‘§ðBHP¦cƾ.ˆ f„o˜êýAb®«‰stÖÇÃn=ÙÌ|…9œ [{?ÞáñÖ¯ìªP\†ó2hžÊÆôô.H~ Zºjà®÷GàëøX¯N© ªt¨Ó1c ÔŒà-ªw 1—ô§õ ‡ƒ…— œÁ?À BB¤s^ŸÔ‚›‰º²«Šg¸ù wM€¤£f { äv„h+H“ŸÔ¼¢Ò¡L×fá†5¤¼Eõž¨Ò/0ôúÚP$ª3˜ï ê1É™¼Òšx,“ ¥ÑdÃü÷üÙí|Å$¼ËÏnÛh2{"bH4s+³CÚ°v†D¨!jgH„ÚmAÚæk»½Hó¯ñ榷ý*ðoÛLøròv·±›j÷Òë¨)L,ÉôÊ:QS™M·Åëuú,Y4hLLßÄ”ûà~+ÒÙH»Y°ép»6½’Õµ¦…„m0¹,®éå¾ö¾7ÐÕSo;­–{½6æ™Ù~‰Æ `O¿7·jƒ±¡Ä$$Ý(M3°¹þ  …‰Áy 2dà_è™ÛåÝHÈ]›ƒd0lÍA2BÉÄ\2a%’AH&f ’¹™e’.nèæÔ,#ÃRßf ™¾!5 )ýg˜Þ?ó ›†”z`J ÉøÃŸ´)mgOÉø£Ÿ’HéB.•“–Öy¶)U—O㦭UÕ­@JÓÜí!Ù´,AÚ¾ão Éâ’ê¶ mý¹nëªÍ ¬AÚ¶ÙÛA²j(‹¶ €­ YÞ½À&¤­î¶(b·I˶iþæ ?Í®]H[ÂÆg°QˆmHÎf·j(ë6uc3HöC eÒ†±‘×íÉ“¤žÍ7p;“PCeiè² 5TFè‘Aö<Ãí¯2ƒDýà©®g¹Ù\vˆ!Gƒ”Ùp¤”!$Z„ e¼Ó\¦(!Gq?ë}³…D“õ² 5TÆÖGÊZH9lê˜9¤ua ‚\¶PÍÒš¾p'¤ì#M)Hwúz¤¼¶OÍÒ]î&sÈ©ÉÜ %ß $BÊqÞ¼ %ö‹ùu#™#¤¤®±R¾›9çiuÈ­¤‘óÖéyBZC+ åj¨\!­ê"˲û˵$å i™Ò‘üÙƒ”ùº®–ü@1$‚A ‰ †DC"ˆ!dRC^ÎÝðB_Ê›UBúIR‚–¼·A!vÕ Ûó“Ù¡%?Pv!yÿn¾mÍý)øÍfìTôg'~óóï‹æ ip²pÝ ¯æ'³CK~ ìBêUñ'æ{QìÚ·¯Ì’/Ä—HbY–ü@Ù…Ô¯ˆ®Ó. ‹C1t n@å½h·z²à—n„{V *~ _ÀdtÖ“Õ’xÜ«zSLÓŽ{æAIÿP‘™ú¥±€_ 74qT;nÐDØ.” e1î†RIü(þÙüÕ¯CvœŽèÀ÷_1©ü«ù¾÷ä¼ë\}ÄEå°äAÉŽû¡¥N/¿à÷ @Bbw |MÅT Ü#¿õN~ÔhE—„~ÉG^íPœõ1AC”ÝÇCuÚê:ð{¶•‰ÊN@Òáƒ=©÷$ôp]géõ»Ê×Á ®C¾¢?·URéþçBEt@ gHÀ¶µ‰€¤î[:ª"M ©ÒqæTOzWG yÓnG Q^¼');IÝÄ!5›MT`@y¯!fc’‚cÒà`$ü30êMýŠ‚Ô;ƒ[<½lÀ˜ÔÐcÒû¤n&Ǥ±x =LVÑ`4ŸÝ$?†½çhHÅßÔìÄ£ Š§ ³[uW m¥^!éJ;å¶,ùº¾TÒ:uW>Þ)õ¢ß™Ž¡¢Y·³äêBÚR–ü@1$‚A ‰ †DPÞßà~bH1$‚A ‰ †DC"è¯ÿž ¸O ipIEND®B`‚omniEvents-2_6_2/doc/doxygen/a00362.map0000644000076400001440000000021410240666515017664 0ustar alexusers00000000000000base referer rect $a00061.html 13,84 149,108 rect $a00073.html 8,9 154,33 rect $a00050.html 173,84 400,108 rect $a00041.html 424,84 576,108 omniEvents-2_6_2/doc/doxygen/globals_func.html0000644000076400001440000001053010303671741021675 0ustar alexusers00000000000000 OmniEvents: Class Members


Generated on Fri Aug 26 20:56:17 2005 for OmniEvents by  doxygen 1.4.3-20050530
omniEvents-2_6_2/doc/doxygen/globals_vars.html0000644000076400001440000000454110303671741021722 0ustar alexusers00000000000000 OmniEvents: Class Members


Generated on Fri Aug 26 20:56:17 2005 for OmniEvents by  doxygen 1.4.3-20050530
omniEvents-2_6_2/doc/doxygen/globals_defs.html0000644000076400001440000002161310303671741021667 0ustar alexusers00000000000000 OmniEvents: Class Members
_ | a | b | c | d | h | i | l | m | n | o | p | r | s | v

- _ -

- a -

- b -

- c -

- d -

- h -

- i -

- l -

  • LSTAT_FOLLOWS_SLASHED_SYMLINK : config.h

- m -

- n -

- o -

- p -

- r -

- s -

- v -


Generated on Fri Aug 26 20:56:17 2005 for OmniEvents by  doxygen 1.4.3-20050530
omniEvents-2_6_2/doc/doxygen/namespacemembers_func.html0000644000076400001440000000407210303671741023565 0ustar alexusers00000000000000 OmniEvents: Class Members


Generated on Fri Aug 26 20:56:17 2005 for OmniEvents by  doxygen 1.4.3-20050530
omniEvents-2_6_2/doc/doxygen/namespacemembers_vars.html0000644000076400001440000000306610303671741023607 0ustar alexusers00000000000000 OmniEvents: Class Members


Generated on Fri Aug 26 20:56:17 2005 for OmniEvents by  doxygen 1.4.3-20050530
omniEvents-2_6_2/doc/doxygen/a00373.md50000644000076400001440000000004010227236244017570 0ustar alexusers00000000000000f0efe85d36b1c7860bc22fc94a2c93c4omniEvents-2_6_2/doc/doxygen/a00375.md50000644000076400001440000000004010227236244017572 0ustar alexusers000000000000009dd6f1a6cd752204327d848075fcc548omniEvents-2_6_2/doc/doxygen/a00373.png0000644000076400001440000000053310227236244017676 0ustar alexusers00000000000000‰PNG  IHDRo'óà RPLTEþÿÿŸŸŸ___¿¿¿???ßßßÿÿÿ×VµtRNS@æØfëIDATH‰íÔ±‚0PþA]„?0|~€¤_ Î…°B7‹!ôþÖ¨¹@£‘+ÓÁã®—¦˜ÅÍšà×AUŽ ñ†#ËMp8löWF~߈~mŽœ®äöÃUû´êœÁÉ õ]˜_X êœú³r NÜ#ZÅtµ;¹Y- •Â\æRTvä¶»§ Jê €R„¢ÑK%òÀ©áènÂX¿EnÙÆe©F@=™õ«"ÃVãgEhFö‘ãr(æt°²1GÀöè©"ÔS½_ìrµ¾1òVü}hz!Ä_À_£ôæiH$IEND®B`‚omniEvents-2_6_2/doc/doxygen/a00373.map0000644000076400001440000000005210227236244017663 0ustar alexusers00000000000000base referer rect $a00042.html 9,8 102,32 omniEvents-2_6_2/doc/doxygen/a00377.md50000644000076400001440000000004010227236244017574 0ustar alexusers000000000000009e51559f473c44a707d9dcbcf41059c8omniEvents-2_6_2/doc/doxygen/a00375.png0000644000076400001440000000073610227236244017705 0ustar alexusers00000000000000‰PNG  IHDRª'mvηPLTEþÿÿŸŸŸ¿¿¿___???ßßßÿÿÿçuÀtRNS@æØfnIDATH‰í–ÁNƒ@†û•£‰5á.M[ަ‰•£‰Æön]öHiÝåØËÎÛ:ÃVJ /p0aàóÿóe™M@1è©=µ;ª–-FZRÛ\gOýÇÔ|ùÉOb8%NS™”[Þ”o¦®§ï‹“¸ÁXÕ]j‚Ý,À5ꤸO!ÎÝ¢ò0{Ô¨s/ß<]JWbìVœ\À,L|ïüÑÎ@x0Ú¹(;d2 ’F*¾êÄ0ƳIŸï;KuoÛ‹FN³ä¾œ¥ŸZ¹³Û¹Àyáÿà×»#4ÚÿGÖê꿃ð»H†#L#IEND®B`‚omniEvents-2_6_2/doc/doxygen/a00377.map0000644000076400001440000000005210227236244017667 0ustar alexusers00000000000000base referer rect $a00045.html 8,8 186,32 omniEvents-2_6_2/doc/doxygen/a00381.md50000644000076400001440000000004010240666517017574 0ustar alexusers00000000000000f0efe85d36b1c7860bc22fc94a2c93c4omniEvents-2_6_2/doc/doxygen/a00379.png0000644000076400001440000000120010227236244017674 0ustar alexusers00000000000000‰PNG  IHDRê'óÌÉPLTEþÿÿŸŸŸ¿¿¿___???ßßßÿÿÿçuÀtRNS@æØfIDATX…í–ÏoÚ0ÇûOlÃ÷•? Ó|œ49"&Ž…Vç©Ø>ˆl—ì÷ßî='áG›¶R§QiŠÃ!þú}ßGïÙŽ¸€÷-µ¥¶Ô·RÍ9‡­©öœu¶Ô–úϨKsXsÖ“4¹žêK3ù$ÎY×OÙkT÷CôÕa‘y!ަ°­'t¸v#ÑáMÔÝà×-\¿L-búÕt’û0}¤ƒÆ&ªxý2uË!ŸÊhÕYÁjÂЃÙo@ªÂ0&ãl2öŠ€s† éÛôŠƒS2J J{¤x|EfèaÖ”7à¯ø0i¤zz‘ì’]Â&·%5‚.|#׋2ÈB­Ù4[ƒ†:h2‚Œ¿B‚3ŠÄW49›Mf [q¿d~NÑÏS :œ¦µW3œtI jÙaÔAïz^e V{ œ®"šœ…ü㊦ùÔsŠ~¾ÃGT¬©ød1i™+¿›ï÷õ†3 2.$ê_nkª@ÖJÍÒ’vXQtµ:'Ôl㢨¨˜£¦v?coœ 2êöµ¢)dU­Š¢›¨áæS…rÜ¢›*/÷•t?†b°d‚Fº9Hý½§¢ÉÙbŒ7§ÜWEÑMÔð•8Ý× ô±&&a·®Ï0é¶ Ï&Q~òò+áUgtWSÑ„ûú!q™Î°¢èFê™FKm©-õ¯¨ïó/ü죥þŸÔ?^¹E‚£‡ IEND®B`‚omniEvents-2_6_2/doc/doxygen/a00379.map0000644000076400001440000000005210227236244017671 0ustar alexusers00000000000000base referer rect $a00048.html 8,8 226,32 omniEvents-2_6_2/doc/doxygen/a00383.md50000644000076400001440000000004010240666517017576 0ustar alexusers000000000000009dd6f1a6cd752204327d848075fcc548omniEvents-2_6_2/doc/doxygen/a00381.png0000644000076400001440000000053110240666517017700 0ustar alexusers00000000000000‰PNG  IHDRl'×°QPLTEþÿÿŸŸŸ___¿¿¿???ßßßÿÿÿ×VµtRNS@æØféIDATH‰íÔ±‚0P?¢1°2˜ð0*1ñè¬ÄøF¢†2Z%½û[Û( FõéÐôå®×¤3³‰}ŸïOÖ/Lì ;ò´û|ÖÆdÄÚÉnmLøzö.òNQæ‚û@Nxݬe…eFŠ @ÁCˆ©­H³.ØüÁ%†…Nè Ç"H­w3k‰1äj¸hêQ⨕©"ë}…™fõ.}1Éùr+Ó-94ÙjTEÊ&[…¬ƒÉ•z}7]$%x óôž•™çÖTLuƒeÃÌž}#°D}áhÙ~– û^Ä?³[AÆ_B¢y‡IEND®B`‚omniEvents-2_6_2/doc/doxygen/a00381.map0000644000076400001440000000005210240666517017667 0ustar alexusers00000000000000base referer rect $a00042.html 7,8 101,32 omniEvents-2_6_2/doc/doxygen/a00385.md50000644000076400001440000000004010240666520017572 0ustar alexusers000000000000009e51559f473c44a707d9dcbcf41059c8omniEvents-2_6_2/doc/doxygen/a00383.png0000644000076400001440000000073610240666517017711 0ustar alexusers00000000000000‰PNG  IHDRª'mvηPLTEþÿÿŸŸŸ¿¿¿___???ßßßÿÿÿçuÀtRNS@æØfnIDATH‰í–1oÂ0…ù¥+•JY«"‘±a-É\µÀă;#žÛ³¢X]’¡RÎÀïÝ'ëù"¥MT§¥¶Ôæ¨ZÔXiA­óœ-õSÕ|Ï®"œRÕ&Ä–UíWSW£åô*€Çñ­»Ðxü6w•¨Cû\‹ß»ùÍ!¸«DôÕ&|žî%˜vŸˆâ$° ÉÏî5œàžYЗá Û!Ø‚i©¤â_­™ÈT9UFrq­È6Kk¯.ܧ𠅮µgkbZÜÔÔ,Í4³·åó“§™\Ø#j¯H€* è‘³³=‹L‹;ª ò"²ÔìëóBígßCajíòçm•©/Ï(*–S¡WÜ–öÑ*þû¬f²î¨qÌôã[“<ÿœ+N–ö ]k·¹º¨æ-(å:>F`nØPç—bÏ»‡…ÜngÀE­©ZjKmšÚÈWFíÕR›¡þæj|šìØ”GIEND®B`‚omniEvents-2_6_2/doc/doxygen/a00383.map0000644000076400001440000000005210240666520017663 0ustar alexusers00000000000000base referer rect $a00044.html 9,8 161,32 omniEvents-2_6_2/doc/doxygen/a00387.md50000644000076400001440000000004010240666520017574 0ustar alexusers00000000000000a4f4ebfd9362e748d028f3963b0d3e9eomniEvents-2_6_2/doc/doxygen/a00385.png0000644000076400001440000000077010240666520017703 0ustar alexusers00000000000000‰PNG  IHDRÂ'¯FŠ3PLTEþÿÿŸŸŸ¿¿¿___???ßßßÿÿÿçuÀtRNS@æØfˆIDATH‰í–QOƒ0Ç÷-€e~yw[4~ Àí£ÀlïÛzG×­3Œ¸D§´<ôzÿë¯ô®„tÝ=¡'œwÕ„!ˆ®ößþ)á¿ì}R(Îã¦(œ¿k\NE»aØHlº×€£³LØC±W[w¡òéi 80qp û>aãA„n2L ™;xJ°€0ª¸£Üæ÷n橈:êÜìСå÷)DE&Úo&(„ÎØêšàÂnØLù׸ä (h«RÄ¥ ‡–ß²… ¡6×8ßBê9äu¦S-Ñé­'»Ã"’99ŒüŠB`̶S²øÕ…œgš0yô¶„2˜<åä¨åRèC@³%Ó_ÅÒG'Ó¯v™NQƒŽÓÞ¡®V›ÀƒÌÃã^hBºÍUkúž“CË)aMóM„úÆæaS J¡õ?RSKuÃÙ39´œjÉ"­¥ŸjÒZí\ `]ø?øõî í„îÿÈ:m=áw>ÿ}†/jÈ®wIEND®B`‚omniEvents-2_6_2/doc/doxygen/a00385.map0000644000076400001440000000005210240666520017665 0ustar alexusers00000000000000base referer rect $a00045.html 8,8 186,32 omniEvents-2_6_2/doc/doxygen/a00389.md50000644000076400001440000000004010240666520017576 0ustar alexusers000000000000003951d89f0bcd7c57f7213734f9ab40c2omniEvents-2_6_2/doc/doxygen/a00387.png0000644000076400001440000000120010240666520017672 0ustar alexusers00000000000000‰PNG  IHDRê'óÌÉPLTEþÿÿŸŸŸ¿¿¿___???ßßßÿÿÿçuÀtRNS@æØfIDATX…í–=oÛ0†ó'WcØ€Ö.¢1@GcëÁòh§ÎX´*ÉÑnT‰chÅäýÛ¾Gù#‘å¥E iò{w|HÞQÐ ½D;i©-µ¥þ)ÕGlzK=æ>[jKýgT;û¥vFI¨ò )lOG`$÷ܬ¶WYÃ5j:ø>Ú(â©÷Ö¶§§¯?›¨«Á·4ªë5ê¥ÿíZþÜ;?¨s`Ó¦uï=ê¨oÉ›"tÝ9Nþ«Àæt3§EÀ,\ ’¶w"ô¼íΡþA…«…ds’Ó~íǯí)„4[>;- ü€l¨¨=@54ýðÿK9?öåJK¹ªr]ê'Æz@þÂGÁ±“iÎKMØîú™±:t—fzj:4/ôsc`kÃÆó­°Bè2Ü"|Ðü •L[+p'Vlë€.€ŒåuèNŒ‘ÀãU®@`¨hªølÀ°Þ(° Cþ¤{ô‡‰—@R¬k Ôi  #-åñ£‹ ¬t E’#̰Ñ7w{‚:ˆìuXè ™+R’Eý•8Ó´«r)c¸{µ9xðI7€ÃùR¾!ƒW›ä3@2s°“€x@ÿ†tHÍŒ¸”œ«\`ªÅi+8çÛ˜ƒ©D»®'¤Ý@ÛcÌÁ’E© P(Þ—Ó¬a„+“=>‹ö§ˆôÔ#fß_ñOÑzÏ‚B%à'Å®T¯îc×®ÐøWƒ¥üÀ7 õoò#^ûIEND®B`‚omniEvents-2_6_2/doc/doxygen/a00389.map0000644000076400001440000000005210240666520017671 0ustar alexusers00000000000000base referer rect $a00049.html 8,8 184,32 omniEvents-2_6_2/doc/doxygen/a00393.md50000644000076400001440000000004010240666521017572 0ustar alexusers000000000000003ef3a925c9046f83ea2b563673e90d1bomniEvents-2_6_2/doc/doxygen/a00391.png0000644000076400001440000000261110240666520017674 0ustar alexusers00000000000000‰PNG  IHDR¤W¹,!PLTEþÿÿoŸŸŸ¿¿¿___???ßßßÿÿÿ)õtRNS@æØfIDATxœí›Ío›JÀû/äÚûK_8>é9Н•Ü„c¥¤ ÇÔUcŽé‡’+Å^8ÚØY¸Åæ¯|3»/ŽŸ’`ÌGÄ8,3 ûóì쿃7'ïÊî@þÒ ÕA¤:HƒTÙ5’[°€äíØÿšDÐ ei[i2É›E¸7«C¡¹îpc‡\×±Âä[pÝ[ݪ.Ôÿ¡@¤ð;S:¥EŒ)M˜/t|zË6gCnïÍ5·Zr”ƒô·’ÈNÙ$M±ƒAŒÛ<Ž_‹Êº‹2æ:ÌL«5:Á¨§É>_ƒe®µ†Ðë¶&zdÓ^¯‹ pº„rŠfœÜÛ1n hMŽÑ.Æh#õ—E#Ñ…¸HNdÿÀÆ¡ Î(îë àÐó¡>×¿Š­´™:0ƒ“ZžÏõ°œ§ Ù8¿þöB×H¤OßuÑ![F‰¡‚,aj¢n}SØBÈ=ôñéû1º°ŒƒÐãy¥¤‡5$ÿ‡J&‘tßT‘lT$à³KÄ\¶2Jºx²%ô%DI$q‰1çǵDržÌ¥k²dL2lqöÐ\r’¹„ ¤/a.‰[mz.á (}ÐÂIg¼…CyË[ì@œñ 5ã-Êx¨ú‹¯…#m!ŸW»Ö3z¨RØ]íoBRõP¤mµ<£‡z ½R¤LÒ m+ R”Ký àñ½êþqåýÓ˃”‹+dX,i¶ÿ²^ýÕæˆSˆàìmí1»ä†$‡YñCí©ä…$cSfpÉ )&*=B$¹ ¼J"…·j¹Ì¢d¥m:{kJz(]¤þùýÕJ1ÅS-×,¸R•ÒCåNÅßJxÚ’§v¬´zû¡›Ÿ(H¸òè„£Þ?n›Šk¢Ï õCª¾Í'{]QàT>´æQG‡•‡jˆ‚„cQ8ô‡¾GÅ5ä›þ]pÞׯ3ªÃ´[ÐÆDNŠè§tSe$/ôd‘L¤/Ú‘í߉àDmyŠëŽ)"]«(’x M–ÏX®k ¤Ùo’e”H±,MW‰ÒÃ:ÒῨ m‰-a·D"EÅ‘(‰§³£.çT/£§¯Ï¥Vq$ºÕ®Í%#0AÖË8ܦ3Üê¨H!=Vî¾´D¥,ø6KóØú/.ÞÒ2NX2å·PŒ£Tz¬r¬=<.aJλª•È•'ÒZ’D¸—G¥ðÙbW)W—dçIC JA/‚îú©AÊû’»öß åqÉ]û/)[¥ó1½ÍâQîO\ÝW±vÓz­P¤l•ˆ±_´e³ÃKv s8³§±ÎVýK))[¥»m-wÄ«;|šÀ—Ž”­Rx‚HfØÿ¹N•}‚Ä3‚ÉAÙHÙ*…‘žÎÌé! ?Ê!žñÝVéÕ•Bz{ºóv‚4é´åÛH]°ÊFÊV)D’}2‹ÞìÎñ¹DâåÏ¥l•B ŽÝù+IÑ/•‰R¶J!&ñ}@3B ¿‰$Þo ¤ Ì¥l•Bq«%3eòVësLŽÊFÚBíÅþë‚Ô×_ì¿&H³¿ÑØì¿&H¯ñß åqÉ]ûoò¸ä®ý…´}¥ðÅuÄæÝu©ò‘þÑD4aª°ÂIEND®B`‚omniEvents-2_6_2/doc/doxygen/a00391.map0000644000076400001440000000015210240666521017664 0ustar alexusers00000000000000base referer rect $a00051.html 9,32 139,56 rect $a00052.html 190,8 411,32 rect $a00053.html 205,56 397,80 omniEvents-2_6_2/doc/doxygen/a00395.md50000644000076400001440000000004010240666521017574 0ustar alexusers000000000000003179a98715eda26c671a1389a36f73e4omniEvents-2_6_2/doc/doxygen/a00393.png0000644000076400001440000000107110240666521017676 0ustar alexusers00000000000000‰PNG  IHDRÜ'–!;hPLTEþÿÿŸŸŸ¿¿¿___???ßßßÿÿÿçuÀtRNS@æØfÉIDATX…í–OOƒ0ÀýS޶èU£‘£‰¶ã6£ãÈ.“°•MÊ‘ŽÙ¾oëk›9X1Kx%$ïѾ_ߟ’ž@£rÒâZ\‹38Éš‘-®™Èd‹kq¿Â-Øl÷M$x<‚]ø•_D²?©ˆ/ä‘î¦[’œ ›¼ò-iQ};— Ô³Yô¿§–K|8ncÃÚñ»áYáÄÂd¢|š1Kv˜Œ»+[R´ö—"œœ³KeÕžô"toVv?àNêi\æe C`ƒRœz'¾ua]Àr\zð@†rp‡Ñ…ÜáÀ!›-NðDY N-R8ˆ³ç¹u?§÷2„'âÖà@ \§[%’tŠJO…¸mV×o¸µI N ƒ“”{ó‘NfîÑxS“Ì÷˜&‚±•ÁÝ¾ÚÆ¹ˆ+q>cNª«&>\UJ4ûÕ­²‡ãÓ$@ ÎæNmtBE‚Î]Ó*>ÃUetú äq„XÙX;×à¢]íJpeºv kêÛ—zâVÖNóbí–𪵔ãÏ(×™e¸³Q ïv™z: ˜ÅQ]gþ¹!î/Ö¾qÍÊþ·G]‹ûg\³×Ú¥Å/î Ùh±‚ºÙ$\IEND®B`‚omniEvents-2_6_2/doc/doxygen/a00393.map0000644000076400001440000000005210240666521017665 0ustar alexusers00000000000000base referer rect $a00055.html 7,8 213,32 omniEvents-2_6_2/doc/doxygen/a00397.md50000644000076400001440000000004010240666521017576 0ustar alexusers000000000000004afae554ef1b4aed9d1fccda8f5b08e4omniEvents-2_6_2/doc/doxygen/a00395.png0000644000076400001440000000106310240666521017701 0ustar alexusers00000000000000‰PNG  IHDRÒ'ˆè ÛPLTEþÿÿŸŸŸ¿¿¿___???ßßßÿÿÿçuÀtRNS@æØfÃIDATX…í–ÍRÂ0Çy ±G >€Ž½óÕ£ƒ#p„ ø’ôØBMz´›}[w“‹ãHgºÃÝnòËîþS¨AYV«Hé2HòÜoIñ¹ë©H©´³ìYk)ƒ“[pº!ÎaT“ÒgÖñ³‡Žf,çÂ&ïììcùÀð$åÑ'3½¿õ»3qÄ=AÚ¸°óFxB8r°{¸õ¸¯¤£ŒÈÕ>Fû«4ÝÈ;Šr³+¥õZ¶‰\L£˜’žŠZþ1’¦/Üi9-X­cKj@ÚìI{XS˜ŒH@Íõ ’˜¢–„iª÷æà2t1b]6¹bóp³ZE,µ?E§I¥ iÛÆõBGѾQ–:Õ~ò*h!„¶{îXê÷ÝË‘0KÕãTÊÈ’^\ÊãŠÉtªs)Ç–„i‚´ \ì†{D¤dêáCfIn2>R‘0MCê[’k»WP“QyžÄP¿‘‹sšXÒ2›SžD—!rUoáX¦‘ò ædnîþœVÐ1"¢=?—9ííÏÉ£´þÊpæ¤=)ß‹´÷÷v‹‡.‡Ôeí’Hj÷"½€_Šô;Ryÿ,K±Šô?H_ë†:Á”îjIEND®B`‚omniEvents-2_6_2/doc/doxygen/a00395.map0000644000076400001440000000005210240666521017667 0ustar alexusers00000000000000base referer rect $a00056.html 8,8 202,32 omniEvents-2_6_2/doc/doxygen/a00399.md50000644000076400001440000000004010240666521017600 0ustar alexusers0000000000000093a089740470acb4090a2d643af60287omniEvents-2_6_2/doc/doxygen/a00397.png0000644000076400001440000000124010240666521017700 0ustar alexusers00000000000000‰PNG  IHDR'i+PLTEþÿÿŸŸŸ¿¿¿___???ßßßÿÿÿçuÀtRNS@æØf0IDATX…í—ÍrÚ0€ó¡>ö@ @§º“€g ¡‡{ƒ¬£mŒåc©µoÛ] ù'“’q^<šÙÕzýiìá :—«®z„¡Gh"(Ù”Ýe@õ=§EØÉÇË^‘â¨o†ðË©[“ºZl¢Õ³ŠP<ð[qÙtç– '[y‘?pn­ϳߋºg BîÒeíVŸYS­øMµa›^5k ‰ÁqåÃ/!„K Ï\ƒ/ré¨aKo3%Ð:ßáò«“Õ×ÉmÐm§˜¡ÙréæñH$@?`¢=Õ„EnAäµ ÐšúÎÈÁþ˜„!ÜÀ”ß+÷f!ÌVd?îAd)Y ºå³goCÝÈvÇ××|+Æ0F[Já5Â/80ÜÂõUðuØD·c¤Ä•:<"”9.•ÐíˆÉÙ(‘=™‡¦ LH )cƒðý§&÷¡H,ôAêK¹2è–ÐDŸœÈ.„ Ðçä5t;Ö²‹'àe«–,P,tSPœëÎL!*YxiGBÐYhEÐCi#p¢˜a/¬ Btéf7fùlçt£ñ«ôB9”B#P/´"èWSµöp«[›ö7²&¢Ú .¹Í÷`K!å¡:å«ÉÕ4íï.ßð4oÈG#Üñi×¹ýÑéá?¤GèÝÿ•éXz„¡”*8mó£dYSIEND®B`‚omniEvents-2_6_2/doc/doxygen/a00397.map0000644000076400001440000000005210240666521017671 0ustar alexusers00000000000000base referer rect $a00057.html 7,8 253,32 omniEvents-2_6_2/doc/doxygen/a00401.md50000644000076400001440000000004010240666521017560 0ustar alexusers000000000000003a72c105616d88d6d267beb0c251b1d6omniEvents-2_6_2/doc/doxygen/a00399.png0000644000076400001440000000126210240666521017706 0ustar alexusers00000000000000‰PNG  IHDRü'Ù|8¸PLTEþÿÿŸŸŸ¿¿¿___???ßßßÿÿÿçuÀtRNS@æØfBIDATX…í—ÁnÚ@†ó •zˆ•j„­„Z‘ØÇÄJǵÄ÷ï $»>Æ,ìÎÛvfMb›¸Im]©8Àì?óíîÌ`q­ÚI‡ïð¾%¼‘­Ø¾•“›ßáÿ ¼¾¾çå" çµ:áMŸ%.óŒAeп„¿Ü\–‹ ’¤ª¾„&sL’T6 ;^Ç÷a·Æ=¼?²ïÒDtôõ) þµâc>ÂÙ[ðÀ@¯¦¤gÜ/y{G RXMÝÝçi„>J†Ì]®È‹—Ï ™’…M£|Y|°à\ì¼^Öc_2“là7áqoF§yšg&üZàóY«É­³Ùf Œç‚‡¯qrÅœ¾Óôx’’3 3eäS‹å»ÅR¨pÈ0cÌ\gc Ù¼ñôŸi›ÒpÛz¾Ø{†ç1ñU0`v¶ÞP& Ga„·—oøöÂ×"ŸE»O1Å_§”§gü__~OÅ"FÊ™Åo¿ÏdU<·2-å]GùhÉQ°ÎÔ{‡b ×÷W…¬O­wŒï}ÄEÍ <¸M§ç…,ƒä€·rzøç¾==×ãVÖˆ§Á«áq¤Lj²tŠË÷ËÚWð Î'ÊFXÝâò}—†ñP{Lµ·ãÕ…8m§óaN Iæ÷9æq@›¢u)f¢‘„;Œ_Â’at°|ÈãhÓ>U,‚îÊbBœã†è‘ÜäuRcmuð¦üÝÁöª°2 ¶ÔÌ[„éW)`ºÂ¥S†Ü4wJKYZÌjÃ.:”Mæø¦ÞF¨[ «“‹Ž07f.†sŽ%£lR‹)l6FG˜O‡0æXýÌfkúºŒZÈWÑMÊèã™ÔŸkÂÜ*fœßÝ5aüõ Û÷-B˜Æú×IEND®B`‚omniEvents-2_6_2/doc/doxygen/a00401.map0000644000076400001440000000005210240666522017654 0ustar alexusers00000000000000base referer rect $a00059.html 7,8 133,32 omniEvents-2_6_2/doc/doxygen/a00405.md50000644000076400001440000000004010240666522017565 0ustar alexusers00000000000000d89de3a96cf5ad968ddc1258ecbc1cebomniEvents-2_6_2/doc/doxygen/a00403.png0000644000076400001440000000105210240666522017666 0ustar alexusers00000000000000‰PNG  IHDR¿'¬ñ„PLTEþÿÿŸŸŸ¿¿¿___???ßßßÿÿÿçuÀtRNS@æØfºIDATH‰í–MkÂ@†û+Js,4Ò\ Js,H5ÇhãQJÁÜ«›=æËÙÜjŒfçßv6©&J Tš‰ìÆÌ¾yvçÁ+l7¾®:@¸€íD²´´ýðÿùlÉ«¤‡ÔgZ“Lˆˆ×–á#By'kï8ÌGŸoUr…ÀXý½û°U[F±á‚ŸŸ*àpãPÝäÉaJòÈ=`#öóÀ¹†Ô}:;)¶Z8ö1p´MüàØô @FÕ m=6=¤Á±A¥2aeñ W‚F}•¹Ÿúi"­ÇNR7͵h HCGƒ.À…;d/¸4ƒtâ! ’ƒNŸÙôšÍ¸œ$ê’\òÂd¶†ä©[l\¥Lˆ%ìaˆ29Pe¦Öômô¸œ.Q  Šúä¡'Ĥ¬?ÞwfäBÄ4^©D4` @Îx@0%8iò1 wGÉœ—Ô÷n'Èh6U‰Ì¢D8¬N@‚F€jÓc\Ú˜ZY"sçí„Mi ,^̓E³ê‡vä•ÑaÇQÑ:³ª‹P5 Í».Ú†€«Ÿ.ºçJÐøýèà¢mÿñj1:À|Y…n$™íD¯IEND®B`‚omniEvents-2_6_2/doc/doxygen/a00403.map0000644000076400001440000000005210240666522017656 0ustar alexusers00000000000000base referer rect $a00060.html 9,8 182,32 omniEvents-2_6_2/doc/doxygen/a00407.md50000644000076400001440000000004010240666522017567 0ustar alexusers00000000000000861e1a477d85dd54d9353da1df6ec22comniEvents-2_6_2/doc/doxygen/a00405.png0000644000076400001440000000205510240666522017674 0ustar alexusers00000000000000‰PNG  IHDR‡'[™PLTEþÿÿŸŸŸ¿¿¿___???ßßßÿÿÿçuÀtRNS@æØf½IDATX…í˜_Sâ0ÀýÒ€ÒÇ{бΨÐGÅ?ðˆwêñ|#M¡`š·³ ¤ûmowÓŽQgD†­Iv³›ü’ìÚa ¾¾üÙúì|€l VE6«"ˆU aQ„úÜ|—l VE6«"ëÑïg6£²8,òB}c™Â`$s2vJV£DÞz˜.ß®8…s ƒõ3³þ)huj‰ò°ysœ”Â8Y”£NŠNüþ91SÄ´1g7ê©Xfb9„ üyM ‚°´Þ:L"$yBûôWZ[¡Ôņxn)‘<ÌA­G*/@”F.œIxâÎ^˜xvDmX°íàuÂUwA„:v²ÚÚ­ÚØËBz0JÔÒ±_ƒŠö$.@&í–AÏÌå•ˬ6|é:Qˆ}o؃•´Ï)<ÔÆ®×)8Æ’ •y raœšr™¸»»‘£ÀiBdÔNÝ©Ã(U¢»pœeþ!F&l˜;xôNƒ®Þ¹N;O=RðªÝšAϤ}r÷þÁÁw!(ÄÒH•9‡©ª¿B´`,\„è÷4/"†À™uãÁAí ë(ttË!€ÜNì( o°³k`˜rŒ Bõ¾¹t¡5qIaçC;šV†Ü Ó¾×JpäQÒPÏ–…F¶¸I»KÇ!*ó@äÂu窓O)æÊÓ¸Bwªg·¶:ù óH™"—š#¶×C¸ã1&.êB¼I´³Ì"àYE.{/›ÿS>âÁ[fyâ48~û¼ÿä Ò…ŸW,:—(«½YÖñ+ökÊbUd½ >û°÷ˆZ«Ÿ1¿¸l VEÖâ/PÿGçIEND®B`‚omniEvents-2_6_2/doc/doxygen/a00405.map0000644000076400001440000000005210240666522017660 0ustar alexusers00000000000000base referer rect $a00071.html 8,8 384,32 omniEvents-2_6_2/doc/doxygen/a00409.md50000644000076400001440000000004010240666522017571 0ustar alexusers00000000000000a9d9ddf4cfc2bc3916273c6f391d5313omniEvents-2_6_2/doc/doxygen/a00407.png0000644000076400001440000000114210240666522017672 0ustar alexusers00000000000000‰PNG  IHDR¿'¬ñ„!PLTEþÿÿGGGŸŸŸ¿¿¿___???ßßßÿÿÿˆÉtRNS@æØfïIDATH‰í–MOÛ@†ù3ê#¡ñµU$|D‚ßJ| >Vj|D"]ïѳ»§ gÃÎüJvìÆ_r©*ÅU=›ÃäY?Þ™YÉ{دýÜà€ìÇT èéõÀÿ0‹G^c´sætm“²Ì3ª¦Ç ÞÈl–Ó»ë*ø„‚±zvì.ÜúN-\_cÃZ€óüW™hf‹Êi¼xþ®y€6 @œ˜ûù‘ta”ØÙ}ÏŽx™àýÜÙ¤çÕhÙVÔ阩llRïá‹oÜÚhéœcÌ;ö/˜$K2þiÈÂ,ÒÓ¥³Z+àŽÐµKà­Oâ[0E¢ÀÇOáSï#[v5ÁƒîäE 8ð¼ÉžxvgQþâàÛH'1À˜T¢ 6.3òO6Þì•ÕTÚ³c)ð¾ùö«äYXˆÀ‰µ‰à¹‘2Õ‡ª@MnNŽmÐð€£mO‰ù H¤èdŸ¦(²Ïdë+¿@cÚ0Æ!@=ýá%ò¶=0ŠÄ¢^°‰ÀÍÌöà+¦^7€.Z«¾/Wù#Í)Z•S„ O M´m̵ôñâ7cú·öÁNZiÚ©ü³>³Ú½\z¥k‚´ü^úë¤ÒOþlà-úþðêÑÀ¼¥p_ÞŽ²IEND®B`‚omniEvents-2_6_2/doc/doxygen/a00407.map0000644000076400001440000000005210240666522017662 0ustar alexusers00000000000000base referer rect $a00072.html 9,8 182,32 omniEvents-2_6_2/doc/doxygen/a00411.md50000644000076400001440000000004010240666523017563 0ustar alexusers00000000000000a3bd0e671688427c7746e3f6e414d6edomniEvents-2_6_2/doc/doxygen/a00409.png0000644000076400001440000002176510240666523017712 0ustar alexusers00000000000000‰PNG  IHDR2ו r!PLTEþÿÿoŸŸŸ¿¿¿___???ßßßÿÿÿ)õtRNS@æØf IDATxœíKWãH–Çû+x9ì{H¼ìs –]ÝPh™ç™x äTÁ2«H–5]`i7‰1²w~t?åÜzZ²%ë⟠ءPè:~Їåð_-9õ·¦ÐJ‘&#«4Y¥ÉÈ*MFVi2²J“‘UÍ’•©q®C»¥»dÑKi–L¾Ê,µ0·ÌC—-MFVi2²J“‘UšŒ¬z“d:sk2k#xÝIÎç³?s?Œ¾ò¦ 5£…uò‘q¾?[AšIÓønRîÑèÉJK0y9Æêã™Þñó™Ñ§’q¾ô?ZAZ×í÷COáÅ{âœõw XM¦““Ìýç¿~ Ò¦`÷ûáLþ6»Ô‹ìJ îßý9X}¼)?^b¾kM„Ì¢Gÿ¹V$ÿÔË·‚L'/™ö?Ídœql‹Ÿ`&”“¦ä|±W, ™æWæîãÎ#<^v±7³®Á´£®»û./v‡†k¹æs¬Ýá‘y¼ìÍ.Ïáô ëå“_X'7™ €C,ì£:”I(^»Ž §?(–—áÏ—˜f3î¡qú4»šÞ`p”`b•bl&î‰åôa1êQ)”„[ø+¢qh°²mž£ÆÂÙ÷º¼0½ƒz‘€ ÕÑØìîw÷ái>ædvaNúgnï_ããìj3^—?(‡é<÷¿¹Ýãéí}×\Üy…uò“Á\çÇìÇlL‡bdð`w‹Ï÷]Œl÷`ðŸ wî×ÅíC÷ýuÛ,Áä±™¸'{!Ÿú×T %öŠèE°ÑÑdåP>*… Ç:Î6æ°Loç ^¤!&?­Ø `àZ7ødš ¾zž™Õ¥åØDÆÆSÌ{cn˜;–(¬“O^®3vØù@õƒ3Ã~=p­Ùk*î/{4z¶\l¹ó«ûsläç,‘Á:Ç=Ù Á D¸ŒŒxE{®AMÿS)¼Útœ øe;õ"Þ›…ÈXx^½;£Ñ“9úÕðòÝ}³ù8cÎÿ851§ùG×+lƒ6Ãz³X>`$£¯¼ùïì„gé´ÝOÇK úÇØè–sDA‰p}2üExd(•"ÈðãPfoç ^$ ÃFö™ÙM7ö9cvå廀×fðÆ6s@½Â&Íâdö~ÂŽÅÉ`¿JâdX›¹†ùYO1)6€å|òN{–dŠ6Ã^€G†ò…Û ç~–µÍ°Ys˜L§®C»èkNfÀÇÌ·c ¦6g®]cçOì±MìôýÂ&›Ìš#dpÆî^ÀâóC—Wá3D†FˆÓ àX‚qJ±™ûÏ8þÄÆ$ÚÂ_{t$>ÎP>*E¡ãlSÓÛ9¨ ȰwšÑqæ >›­`¬¯17cï4wÎ~s³épûŠÍÍ^ÄX0žäïÍèflœé-®€¦OTu߃¹›Ûž>Mï°äh:Ü·ÄDŒ½ƒcmᯈ¥Ñ‘øÜŒå…Ó?|ˆ9^¦·sP/2)I Æ™Íô¡À¾™ôÆÈˆÀV¶ÜÈ8›ï›Mo o5“lp 9îæÝ!ír\šÞoe" ¯5¯ ÜÂ|$ëŽ&³6‚’ óËš^M“YA……MVôišÌÚ*-,½Ùh2+Uúò¹%¥6½°qe}ƒ#›Þ>™•£ÄjE›M+ÈÀDA4í “¦ȯ–ɼ@Pµ… (ןµ†ŒrCMkÈ(‡¦=dT›´ˆŒb³€6‘QkÐ*2J 5­"£šv‘QiÐ22 ÍÚFFY@ëÈ(3Ô´ŽŒ2¤µŒ*cMɨñg+É`&?›É4°Ž(=˜”ѦöÓWÜÕI¦¾Ce9bâ¢ôÚcÔd’”°ðY“‘äˆKã&#Í'ÑNM“‘éˆ!6õ¿ m5™õ×cÄ7oqÜis›Éî(Kî”: »£EÍ–Ø3¾wáÝZ¹®g]ž…·†-¦¼‡‘Éî(Kî”Úï =]"“ñ µ”Éo3e¹ž}‹n7¡<%"“ÝQ,–žb!æZC½8™I¶ï¡‹ñEŒ3e¹žÁ¹ mÿ1ID&»£w9ÃtÌø24¸y¦/F]²­À?Üîˆ >%[±8=c .¼#N29¹®gd2Å .{¸cz3/: {³ìŽbÌåŒÒ)£- ¯¨ñôϘ OÿŒ2º–ów \?æãéíƒM=¯Jw’É»!4E(×õl÷ù=#óŒ¡â’ñ£“•L&G±‘áZ7”NCdlØ£—‹X©£Ñ(—åØ/†Ã,Ã<«ÊIN˳²]ÏàŸßx¨‡äÅdRy": Éäq[¼S:'ãõfd†/·X©6-Êuôz6Ï2Œ1K›Ix§Y–ëÙp'§1³Ó2‘Œ„dò8ŠÍnz”ÎÉœÀ¿iGj<}òÃ?¬Tg(×x›aùG\K&úÞ²\×3>ì˜á6ãE'!™ÌŽbä <4(“¹ÿ|oÃ`a3Ë0ãÇ™k>ÎWæLm>ÎPA¡#®&{Ó_®ëÙÇ_ŽzôôCÅ6Έè$$“ÕQŒÒÉH Ó)ãwwü;ç47ë‘þ ÍÍžÈù NÏm^Pøˆ«®įƔëz6½üž†çf": ÉѼì#.]&«ÄõŒ(8)Þ™²¸¼b³×3M&÷—»¹j\ÏzâGh> î| É$)á’›¯5שÕ×ÿ“VŸk25q¥5`6M¦¦#®ò¢MÜ ÉÔtÄ—š“¿IÓR2u¯² ýºY2¯v®lB©ÞÚòùì“I½‡ƒ^×Ü´R:3ù›L[ÉÈßdÞ<ìÎÚ‡MæÍ“¡åJË D&Ó 2K-D…&óöÉ…xÑddQœ„ Y;ÈÄP(ÑdZB&ÊB‰&Ó2j4™6’Q£É´…Ì$ñ¡Ôj ™PCQ¤É´†ÌdéìÒddU[Èø˜*Y{ÈxmE“‘M“ÈÔ2¢±h2òi+ô[5@¦†•CI‡å­E“Y¡êWÛ%aâÿRCí!Ú‹&³JM’Q§3k™¤Ï%V»È(Ô™µ‰ $¬¢‘X‘)âsf,»±o¨z_SM%£PgÖ™Í}ÎÞý9H!㙆¥™h2«U‚ÏY™È–¤É¬QqŸ³>™‡Í.Ï)'í;eéÍ4™5*îsdævsR"n|—Œ"7Ñj–̆>gÌ<Ìa&H¶Ë¬œf·šLqñú)âsvDv;ó?N=2¸ñ7M¦¨&Â>gð‰ÈŸ×fÀék25Ù*îsF³f"³ã‘Á™Æ•ÞhÖM†¾šWÜ猛‡ ·¯ܘen¦É¤Š»ï6vuF÷fi=Í‘ÙÒïgå9'UC&l¦Éä’oiÕ`›Qi ©Œ¾j2™T™`ômŒJÎê":[#3ÑŸ6'(T%šL&ÕD&ÜÁ7´Pµ…5‘‘â\Õd–%G…¨µ¬©2rÔ‡&³$9š C’P2¨2’œ¨šL\²Ô‹C’³d½ê #Keh21ÉÒdûM d¤9KÕúÖYõdä9I5™¨ä©‰Iè·üªœŒD!B‘çTY©ÊÉHTj™5´ŒL!­PÕdd:A5™°d$#SL骚ŒLç§OD¦ RÕJ2J4šŠÉHUA0*,£m'©šrŠ*&#U ¨e ÜR2 ôgÕ’ ê¢ú•L)'EéçL­÷mL¿gc}dVÅP©ÒȤÝÓ¹Ö{6G&xõÒ‘IC£ÉÔ¥T2)hÚA&T2‰-‰h4™º´‚L"M¦.­"“„¦dB¯›Çð0º ’œ±|µ2¢åô‡ÑWgùepO”ÄCû¹W’I@“×}íÉJJpÆ&üuy 6ô¼‡Òq¾ô?ZAZ×%†@/Þ“¥t笿óK™ûÙoÑmÝð—ãñ´„&¯ûÚQ/²»H 2ߢÛL?¤ :iÈ,zô?kE²ûO—ÒiÇωd‚'öÒæàÀËñøšt’žfw_‹5eÛs'4ñÈÎU$ØÕÁÅU+™æWæîãÎ#9“‘{÷.[Œ˜MÙåÅîÐàÞKÜì Ó)ãåîèôñì™=Äœ ¦-F½—¡¿ÝÃ÷JÌØ›‘Bh:­¼îkø*Ó§ÙÕôG·¿p¸ÖãewêQo†». ùÞ,üþÅ@¯zlv÷»ûäLÆÉìœôÏȦ _Äìj3ÖfÈì Ó™…™E;:d{öƒšÑCÜÈÉ`Ú6f´áSÿÚý:Ç*‚\d‡øÓüîkwî×ÅíC÷ýuÛ,AÙ}~ÏÈFfï'JçdhGFf~›Á¼Æ0í~mƂÿS¹ÈÐ-Úfò¸¯Ql3×0?ë 2&‘áCŽn3lw ›5‡Éôq2:4pȸædbœ¡t÷‚Ò9Ü‘fÍHfê“Á‚ÌÔÞfiœ±h?È9Îðôð8“Ù} ØÔǙӠ—ÂŒS"óñ—£>ÄqæÇ™k6ÎÐî !öN3:Î<‘wMª°^ÞÜŒÒW”N_⦠;g¿{dp#'ƒi”ñ;››Y´ž›eu_ãd0yz‡Íý#oDÓá>‘™^~¡‡‘¹ÙHJ¦-º‘§á'}ÆÜI|?³™>$%…„ëLí"soDž®&³ ¢Àu3ç"1U“ášÿˆX­&SîÍãnbrOüx¹B×àZE&®UdZû)€ìdZûÉY¤$$ÓÞO›%'Óâ™–wU®42m^Õ©‡ÿªs]Úb»pDi§JVf©‡š„ÑêÕ³.ðöÉÈÐ ÕCF’&ãÇ‘6ÈȤZÈHÓulÅþʬ:ÈÈÓu"Òœ)«TyÎP‰ÀþÈ÷ ƒldTfš#3 9#ev;z}?žÿqê[†y~a ÉäÑ*2á\•ÓMÌ=Æ,†o³çû…A&2JMš›!wàËì&¶øBdv<Ë0ß/ 2‘Qâ M¾ª$“vІj(§›ØüÑO‡ÛWþÜì 4™üJ!1ÛìêL’1Õú’ÔššÕN&fô¦É¤ªf2ñeÃ+š1˰l%©5¨—L©|¹KÒd<ÅÉL:¥:ðå-I­ë™u’©Øçm=µ†™úÈ$4¨•ŒR›A}þf)ï%ê$£VgV™´7yõ­Tm˜©‰Œï¾5™@„GÍIµa¦2RÔ‰&È'#C7¢\gVú2M&,Qrô"Êuf5‘ã\UíÝL•d&2ð©vij #ǹª^gV%™Ðï¦¥Þø_=9jDÁ&S5IjD½ñ¿J2ìmŒ5¢àø_5IjDÅάB2òøï©8þWH†&Í’œªJ6™jÉÈqªªÙdÚ@fKŠKª¹UY:3%'fP!™Ž,MF­oÍzûdÔìË*$³%KgÖt›ª*2“ÌdÊXÑ”~÷ÃäˆUÆ’Wi±TF&sgVÆÝiÓÊHZJ½I9*ucUd:™»‘ ÉLò^Él™ìÃL…dr¿“i™Ivû½êÈtrþ- “½3«ŽL'ÿ´½d2×Jydb_ ÙàÌÛ'“£3µ‘Õâl4z²–SY‘‰Ød0"–‡ÑmäŒÝÑèGRfLÿœ˜`:c,ãëêCyß®™ÌVŽ ï<¬gvÿ(öÕY¯ŒI'DnòÞŸÅâ|é´‚´®Û‹÷Äíÿç[do/É8gýcõ±ºb§´í•™ä¹ðÎÉdµ8³—¾n.Ê {!ÿ  /ʰ¢=úȵ"yü§øÀŒoa H&^Fºê$ƒæ<ŸUñŠÎjqFdÜCãôiv5½;ÓetBd&›‚á±¼0¿2wwéÐäëpGZŒºÛåÅîÐ ¯bp±õva{ÑslJÀóÆÆ_X†ƒ;ÓGwvyÁRY‰X·dk 7ÃzÉÓ™ 2™-ÎàáÎýº¸}è~¸·a[”Ñ ÈÐp³üõö±P]Íî~wðМÌ.ìÁIÿŒbs­GŒ føÀùžOýëŻ߿x¢P‚ Ãê·P :Ke%ž3› ‘éäú1D&ƒÅÙhôl‘[ÓüêþÏîsžÚ)I,lNLv~Øl0p­|²Ç›Ê#?(¦ß€<£œÿ9€‹—J“áŽR:K%î³dk€ ¾À\V…z³,g@ý¹‰/l:†Å;ñò¼6ýS6¿îêÍBd, #9£Ñ“9úÕnÇ|;,XJz³ù혗€¡ûd¨>h6C&×åª`Éâ ¨JX›¹†ùYÏ+ƒ£¡Ç›öd~,lôŽ‘™ÝôpcŸ“1fWÖf~íÂáßÇ3€;Ñf0t–ÊJÄBš"3ñ=3*˜5g²8ªgnL††(ÃïŒ:9¯.'ÄÂfÍa2}œÁã‘NúלÌÀg€Èàhòú~,K,ˆ –±C#:¥²OX(D&³Å°“õôiz‡gîGQF'Ò›m®àftœy¢#áT‹b{s3"ƒÉÛØ 1X–°sn{ï4in†%àÜŒ¥²y4A&<}ͤ"WD>øe½YˆeÑÝl?iÉê}áÕ ãIî"QÈÜ›íW™IŽs—ç,PÇ]ñàÿ:M“™'^ZKÑqèª`ÍdÖVQh4*ãún§q2«62kj¨³\‡%} 0ÑdV‹µ…ÄÅwi“¶*Wh4UNÕE†9—/¯XYÕ4™d12åyYýßV샒õïo4™dýmåÖMŽÃ;üIˆ’¬2Nˆ²j´ŒXò*-–ÒÉLJš&µ^e“)é-ŸVÙdt‹)MÕôfšLq•?È¿Î[+I!2Y—|ýuy–Z\yŒ[¯™¬K¾¾%-ù[5™Ò"“uÉל«¥rÄVM¦4…Èd¾«%efw²¼ó/ϳ¿ˆÏ}5™Ò"“uÉ×îó{àw²Ü…=º»%e×m¦lÅÉdXòÿü~ÀïdéZ7twKʮɔ­xo–aÉ×6%ž¸xÇîn©ÉT¡Ø Û’/ZƒH‰³›ž+–‘h2e+6kβäëã/G=q'Ë¡Aw·ÔdªPìf–%_ÓË/">ÝÝ’²7 (I«Uqu&§=‚V¢* £¯h–¢ÒÉèOJ’þ|FVUó™f KŒ[¯Ê>9Óm§ ª”²p²¥ªþ3M±½‰C£òÖ;Õ¯ V&ZW6Õt'S¢R‡þ†ªH“ñ”:-Ódrª’ïÏ$õ\šLNÕöÍ&M&§ªùžfBº&“S5“)jâëÚ™íÃ4_iM9ÖaÀë<»}˜&ãkå—þ [‡'“Ý>L“ ´ŠLaë0ò £ÅodFŸ«öa|¥_º7KIëÍ [‡‘WY†Qad>؇ñ•r|h2I¢/Ñ&¸h…Ȱ#¯0Z,Â2Yó«À>Ì[Á@ëà@“Iy&4šr¬Ã„W•sG&g}'Ã×Á&“(2ž_n4åX‡1¯0°™}˜h3Â>L´¶4™%ÝH£ë0×àƒ Ù‡Ñ8؇q2bœ&“¦„î¬ë01ãï4ùB8aÆÉˆupšLšº³¬Ã ¶aÕæ>߀uXÁÃ6¬Šîذ|û™š¬ÃØ£àrœ&Óò[}­9§j»3&“SÕ‘‰5M&§j»&“SÕ‘‰ugšLNUx§Ó(™Ò–´å“&Wö{Ðj%«Âû6KrGmU¥ÉȪ*ïB¯»³"ªŒÌD“)¦*Éèª#³¥M!UF4™bª”ŒîÎ ¨Z2ºÑl®êÈ0*ºÑl¬ŠÉèF³±*&£ÍƪšŒn4›ªj2nÕÛrUHFtdº?ÛLÕ‘ñèþl3UOF÷g›©2º?ÛHuÑýÙ&ªƒŒîÏ6Q…d:‰µ2ª2‘Dz­e*ÏC¬ ¢aUH&2¼„ÐÔ°,™ª¢È©Xu‘ ¡Ñd’Õ™ÀP“IVcdüË5šL²j$‡9á¶'šL²$|´Ñd’Õ,èt¶r99‡ÝðÓ±gÙ´`F(â¶7¾±“x° ™¢ÖkäX´ÚvíàuEd “ñ’³:½~Ž89ã©—ã ýd¼DïÁd [¯!™5¶k# L™Éät:¸¥;þ+;Þ§ß±{~F‘U¼F [¯!™5¶kÏ]Ø–ŸLf§³näî>þPoFYÜrz&lÍL*„ŠÝ¼7+l½†¿˜ín Ù®ñ±ÜçñnÆ3~RØbüç¶oÈ& ™¬Ng³Ë‹‘¹½ïâÏ;$CY¾Âù¢7½}¶f&BÅnN¦°õšépÛ5Üí/ Á}lÛ±ÇÞ HÌÇ¿oÈV+™”«ÿ¹œÎ`¾ýÈÈXó+üùml²,Æ|<ÃSÔ³hb…Pî¢d X¯ydp ¶k^‰{´Ï‡Ùç±wR˱)~ßM2YÎfÀ}³\~«H{lò,‹Ñè÷)Laë5Þ›ÍoǼa»ÆJ¤B(íèõ½Ò£oÔÚ¾!›4dr8Ѥ'ÜfX–—øVj›)l½&fw¢ÍÛ5^"ÂÚÑ1–+F«ð6ã²IC&«ÓÙâç¤dlvû€ãÌg0Ë1À>gÊ"SØzN ²]£q&°]ã%žð´Å"Ão@:˜Ú|œ†lÒÉêtÿ=ì‘}Ydn†YN𕜞—G¦°õš÷N“æfí/Q¤ÍqÈôn@ºsö;Ÿ›=¥Ü¼129eBèþZÕvu¦ˆõÌ,'hך“§Ío‰Lë5XÜþyoݪ ™…øIׯ®fÈä¶^‹êôÙJ£R2ÉÝ™¾Öœ,M&&iný©É„EVùml3É4dÄg¬šŒ'9ÈLü»äh2žjXS·žLèBx+WʺÖ|¢À=‹[IF.•¯7“² d™&¯V ɨ¦j2vgŠ€iù"JQÕëšeëÎҖȧ–‘QLåd$ë<ÔSý·4¤ª UFRåddj42ŲVm"£Ð u|çLšêP L d¤i4j©ã{š’ÔˆJ£?©2r49¢È¡:¾Û,C£QlzÈHpºª¦?€Æ»xÁÔäÔÐpÅ(ñf\õi ? 9i¼Én¤šÜMj?iJ6¨L´ÑT¿:H,òóÿ®SÅeÐÒB¬üͪ^ è2 tÀì‹—š¿ífcd"h*'ÓáÊÞµ‹Llp©ÍÐ…œX ådjstó6h;™Mµõ0ÑdÖi©n<4•3 É¬ÔrÝtÂQll(vð}ÅaÙ·r®)/Q`q–æÇ¶.è¦É4WC°%‡¡˜ Nì ÑíþvL6Œ(°8Kóc[tãdø;ò|gK†b×0]Óf&õfeXœ¥ù±­ ºy2ì²I>‡³%C±=xÝ'0ÊFvaÂ&Ì=4Ø\>ÈO¦ ‹³4?¶c4E˼ÏÎa1Ü·¸S[(‚°j'CÍ&—ÃÙ²¡˜i™&ùƒ±lÝcÏ&Ì–îdùYgi~l¶Yy2 †b1›°º¯h&[œ­%ó©²:‚JɤM6¯‡DC±¨MXÍŸ¤Xœ­õc[„¯Ñ%E ™,ÒŸœ­WSdò£i™´¦žy>ÐdR¢(UâSÈ3sn™2}3K|rÆgd£ÉpU¼¨.|èŒKg+Ž(ƒj&ÓôRs’^=›(jE¯8O’_jE›M+Èèo6%H’*‘ä É£–iþ ‰¹U5iNVYN‘Ìj 冚ªÉÈs®ª†¦=däi¾ÙT9‰êC­Y@åd$j42…²^Õ“‘¨Ñ(5ÔTOF¦3U%45‘¨ÑHËÜíÕvIDATÕ@F¦F£Ð, 2R¨2&+U©jC™¡¦2R5U>H«…ŒTF•±¦2R5E>㬇Œd¦íw  Ëk45Þ!qM@óY}A­Rl]SMd¼¾½¾»Šf8RM>8YÕÑŸIEÆÿÊ`»É_5¯GÙŽÄ×?·› jd#¬á´œ ëÖ%$#ÍeæÈÐÛ)É´½7:9y}9ßÃ߬4iÖÚMÊùŒÅ-˜Ûˆí•"ö/0?™¢îfâàigð ðºêh’ Lx}Ýþë· q v¿Îåo»÷ç`Ei/_è·í•"Ôår“)ìnœLšÃŒ,0¥%#ÞBœ°ÿìh&ÿi<_LÇû ;{ÊM¦°»p2igðÜ…myÉðúº8t/ÿ1beäX¯]‡™”=^v_†?_^0_Ì×gî˜kwh˜xz²½„›Ù‰‹Îl^’I»BÞ¬°»ÙìòCé¦9œwp3gdÏ&ΰ¬P!Cg–ócöcÆ,Ê™ÙÕìŽLÊžæô¢váÿQ¬ 2pÁ\³+"Ãönfç‹y›ñ’L2ƒd »›aÔî™æp¶íØcápFölÂá ¼±T2c‡½|×b3Ã~= “2j*6v^¬Üôˆy‹±¹™a%Œ_ Çæ%1¯(L¦€»FíP )g`˜} ‡3²gg0G¨¹Þ,D†jôVÉhtÅÈÌÿêå;2ç:úÕðÉp7³Åhôˆ'vYd »›aÔ¬SKq8ûèõýX8œ‘=›p8óJÈÐÈ'³÷I'ƒÝˆÈ÷Ék3õf¦h3ÌÍì徕Øf »›Í‘‡3ÜrŒ¥r‡3jtÂáL*24kŽÁ ª{dRÆ{3ƒ3÷Ÿÿ°q†{‹¹Æ)'ÃÝÌŽöÙ8S™Âîf5‘Is8Ã-_ˆÌ'3µ…ÙTdèflœé-®€¦aõwonÆÞi2ç2×™Ñt¸ÏÉð4lQîÁéyYd »›ÑÜ É¤9œaW€ãp8#{6áp&ÙŽTº»©¨Ã™&¸›‘Š:œ½)2óQp­«2)îf¤¢goŠÌ¦GÒך5™UÒd–¥Éh2«¤É,K“‘h%`DõµJÍ’ÑÊ,MFVi2²J“‘UšŒ¬ú¿™+ðQ$IEND®B`‚omniEvents-2_6_2/doc/doxygen/a00409.map0000644000076400001440000000114510240666523017671 0ustar alexusers00000000000000base referer rect $a00041.html 250,8 402,32 rect $a00068.html 497,8 809,32 rect $a00069.html 541,56 765,80 rect $a00050.html 213,56 440,80 rect $a00065.html 545,152 761,176 rect $a00073.html 9,272 156,296 rect $a00043.html 221,440 432,464 rect $a00046.html 229,104 424,128 rect $a00047.html 206,152 446,176 rect $a00054.html 253,200 400,224 rect $a00061.html 258,248 394,272 rect $a00062.html 232,392 421,416 rect $a00067.html 208,296 445,320 rect $a00076.html 228,344 425,368 rect $a00063.html 538,248 768,272 rect $a00064.html 517,344 789,368 rect $a00066.html 524,392 782,416 rect $a00070.html 520,440 786,464 omniEvents-2_6_2/doc/doxygen/a00413.md50000644000076400001440000000004010240666523017565 0ustar alexusers0000000000000031baa4544f2d7bb1d9485bb7cc3bca7domniEvents-2_6_2/doc/doxygen/a00411.png0000644000076400001440000000074710240666523017700 0ustar alexusers00000000000000‰PNG  IHDR¢'~¡ŽCPLTEþÿÿŸŸŸ¿¿¿___???ßßßÿÿÿçuÀtRNS@æØfwIDATH‰í–¿nƒ0Æóýã½ äÕc¥F-c•ª cÒJQç*±=‚0c€ßÛöl“’´$K½TâŒßgóã|縎^Gìˆ#JW‘퉙«ü:â?!.å¼™«2%åªí­j”Fñ3Äê…D3Ic¶{±{ü|oìÍbè« %ŽK°hËý7qK¡¹]GMîS࢔Dy+˜Œ½„*c ?æíT)‡§µVmD¥8é“>¬‹Ì=ðá=«àsŒò0“™0æê¾™/ªÓDÐ#…Ôt&Vb†Â7©‰¨ÞZq“Bºð--(ªÓ»> bŽåUVI™Xâð•êu9¦nM¸ÇÅxÓêdg~óY€“ÌiÖ-âÖÿtŽTmDsz‰Œ1H(–lj‰±­c9ÆÓcLPcÀ:.±ŽÓ6¢9áÇu\ÃH·5м]\÷.’ÀšP†P÷:h%:ˆŽØÝÿ8Žè&¾âÅýÞñÓIEND®B`‚omniEvents-2_6_2/doc/doxygen/a00411.map0000644000076400001440000000005210240666523017656 0ustar alexusers00000000000000base referer rect $a00074.html 8,8 154,32 omniEvents-2_6_2/doc/doxygen/a00413.png0000644000076400001440000000077310240666523017701 0ustar alexusers00000000000000‰PNG  IHDR´'TìPLTEþÿÿŸŸŸ¿¿¿___???ßßßÿÿÿçuÀtRNS@æØf‹IDATH‰í–Ao‚0Çýö¸d¹.qŽãåh8ˆG³™à]W8ÂĶGmß·] LD!Ë2™ÙÂ+$ðoûëË¿¯I[P[´tƒ¾)ZЫÇ}õŒEƒþ‡hîl¼¼ÓYB¨tgßE¯†ËIÞ¹‚ñéèIþQ\q—q†$O¤8šTèÿ%h  ÇûŽêBó¥!rÊq#íÃÛ’Ù‡}æjA;€˜¢È¶ö¡¡…zª¶YŠ– îG~Ä„ù”¢£i´ˆ‡+´Þ1 B×@—pæ¢.ê•FÀßeÊ«ÑL5á /ÙFƒtáE ¢Òzf€Dƒ›¬ÝQ“O¥WmÈ Zyø,'P:MлùKÍ) •Fàñ5C3ùVmã9ºs/;¹—¢A+fÍ+À;|‘µ*¾cOXßPjˆ‘{€x¦4‰Þfè ž•¢Õ‘9óÚŒ§£µƒ“U8ý SSV8F{ OmniEvents: Servant.cc Source File

Servant.cc

Go to the documentation of this file.
00001 //                            Package   : omniEvents
00002 // Servant.cc                 Created   : 2003/12/04
00003 //                            Author    : Alex Tingle
00004 //
00005 //    Copyright (C) 2003-2005 Alex Tingle.
00006 //
00007 //    This file is part of the omniEvents application.
00008 //
00009 //    omniEvents is free software; you can redistribute it and/or
00010 //    modify it under the terms of the GNU Lesser General Public
00011 //    License as published by the Free Software Foundation; either
00012 //    version 2.1 of the License, or (at your option) any later version.
00013 //
00014 //    omniEvents is distributed in the hope that it will be useful,
00015 //    but WITHOUT ANY WARRANTY; without even the implied warranty of
00016 //    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00017 //    Lesser General Public License for more details.
00018 //
00019 //    You should have received a copy of the GNU Lesser General Public
00020 //    License along with this library; if not, write to the Free Software
00021 //    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
00022 //
00023 
00024 #include "Servant.h"
00025 #include "Orb.h"
00026 
00027 #ifdef HAVE_SYS_TYPES_H
00028 #  include <sys/types.h> // getpid
00029 #endif
00030 
00031 #ifdef HAVE_UNISTD_H
00032 #  include <unistd.h>    // getpid
00033 #elif defined(HAVE_PROCESS_H)
00034 # include <process.h>
00035 #endif
00036 
00037 #include <stdio.h>     // sprintf
00038 #include <assert.h>
00039 
00040 #ifdef HAVE_IOSTREAM
00041 #  include <iostream>
00042 #else
00043 #  include <iostream.h>
00044 #endif
00045 
00046 #ifdef HAVE_STD_IOSTREAM
00047 using namespace std;
00048 #endif
00049 
00050 namespace OmniEvents {
00051 
00052 
00053 CORBA::Object_ptr createReference(
00054   PortableServer::POA_ptr poa,          // POA to own new object
00055   const char*             repositoryId  // e.g. _tc_ProxyPushSupplier->id()
00056 )
00057 {
00058   CORBA::String_var oidStr =newUniqueId();
00059 
00060   PortableServer::ObjectId_var oid =
00061     PortableServer::string_to_ObjectId(oidStr.in());
00062 
00063   CORBA::Object_var obj =
00064     poa->create_reference_with_id(oid.in(),repositoryId);
00065 
00066   assert(!CORBA::is_nil(obj));
00067   return obj._retn();
00068 }
00069 
00070 char* newUniqueId()
00071 {
00072   static long  count=0;
00073   static omni_mutex  mutex;
00074   int  mypid =getpid(); // MS VC++6 doesn't have type pid_t!
00075   unsigned long  sec,nsec;
00076   omni_thread::get_time(&sec,&nsec); // More portable than just time().
00077   char buf[128];
00078   {
00079     omni_mutex_lock l(mutex);
00080     sprintf(buf,"%lx.%d.%lx",++count,mypid,sec);
00081   }
00082   return CORBA::string_dup(buf);
00083 }
00084 
00085 
00086 //
00087 //  Servant
00088 //
00089 
00090 
00091 #if OMNIEVENTS__DEBUG_SERVANT
00092 #  define OMNIEVENTS__ADDR "["<<long(this)<<"] "
00093 int Servant::_objectCount =0;
00094 #else
00095 #  define OMNIEVENTS__ADDR
00096 #endif
00097 
00098 
00099 Servant::Servant(PortableServer::POA_ptr poa)
00100 : _poa(PortableServer::POA::_duplicate(poa))
00101 {
00102 #if OMNIEVENTS__DEBUG_SERVANT
00103   ++_objectCount;
00104   DB(21,OMNIEVENTS__ADDR "Servant::Servant() count="<<_objectCount)
00105 #endif
00106 }
00107 
00108 
00109 Servant::~Servant()
00110 {
00111 #if OMNIEVENTS__DEBUG_SERVANT
00112   --_objectCount;
00113   DB(20,OMNIEVENTS__ADDR "Servant::~Servant() count="<<_objectCount)
00114 #endif
00115 }
00116 
00117 
00118 PortableServer::POA_ptr Servant::_default_POA()
00119 {
00120   return PortableServer::POA::_duplicate(_poa.in());
00121 }
00122 
00123 
00124 void Servant::activateObjectWithId(const char* oidStr)
00125 {
00126   using namespace PortableServer;
00127   CORBA::String_var poaName =_poa->the_name();
00128   DB(5,OMNIEVENTS__ADDR "Activating object "<<poaName.in()<<"/"<<oidStr);
00129   try
00130   {
00131     ObjectId_var oid =string_to_ObjectId(oidStr);
00132     _poa->activate_object_with_id(oid.in(),this);
00133   }
00134   catch(CORBA::BAD_PARAM& ex)
00135   {
00136     DB(0,"Can't activate "<<oidStr<<": "
00137       "BAD_PARAM" IF_OMNIORB4(" ("<<NP_MINORSTRING(ex)<<")") )
00138     throw;
00139   }
00140   catch(POA::ServantAlreadyActive& ex)
00141   {
00142     DB(0,"Can't activate "<<oidStr<<": Servant is already active.")
00143     throw;
00144   }
00145   catch(POA::ObjectAlreadyActive& ex)
00146   {
00147     DB(0,"Can't activate "<<oidStr<<": Object is already active.")
00148     throw;
00149   }
00150   catch(POA::WrongPolicy& ex)
00151   {
00152     DB(0,"Can't activate "<<oidStr<<": POA '"<<poaName.in()
00153         <<"' has wrong policy for activate_object_with_id().")
00154     exit(1); // Programming error - so quit.
00155   }
00156 }
00157 
00158 
00159 void Servant::deactivateObject()
00160 {
00161   using namespace PortableServer;
00162   CORBA::String_var poaName =_poa->the_name();
00163 
00164   ObjectId_var oid;
00165   try
00166   {
00167     oid=_poa->servant_to_id(this);
00168   }
00169   catch(POA::ServantNotActive& ex)
00170   {
00171     DB(0,"Can't deactivate servant: POA '"<<poaName.in()
00172         <<"' says it is not active.")
00173     return;
00174   }
00175   catch(POA::WrongPolicy& ex)
00176   {
00177     DB(0,"Can't deactivate servant: POA '"<<poaName.in()
00178         <<"' has wrong policy for servant_to_id().")
00179     exit(1); // Programming error - so quit.
00180   }
00181 
00182   CORBA::String_var oidStr;
00183   try
00184   {
00185     oidStr=ObjectId_to_string(oid.in());
00186   }
00187   catch(CORBA::BAD_PARAM& ex)
00188   {
00189     DB(0,"Can't deactivate servant. ObjectId looks bad: "
00190       "BAD_PARAM" IF_OMNIORB4(" ("<<NP_MINORSTRING(ex)<<")") )
00191     return;
00192   }
00193 
00194   try
00195   {
00196     DB(7,OMNIEVENTS__ADDR "Deactivating object "<<poaName<<"/"<<oidStr.in());
00197     _poa->deactivate_object(oid.in());
00198   }
00199   catch(POA::ObjectNotActive& ex)
00200   {
00201     DB(0,"Can't deactivate "<<oidStr<<": Object is not active.")
00202     return;
00203   }
00204   catch(POA::WrongPolicy& ex)
00205   {
00206     DB(0,"Can't deactivate "<<oidStr<<": POA '"<<poaName.in()
00207         <<"' has wrong policy for deactivate_object().")
00208     exit(1); // Programming error - so quit.
00209   }
00210 }
00211 
00212 }; // end namespace OmniEvents

Generated on Fri Aug 26 20:56:14 2005 for OmniEvents by  doxygen 1.4.3-20050530
omniEvents-2_6_2/doc/doxygen/a00199.html0000644000076400001440000002741110303671736020074 0ustar alexusers00000000000000 OmniEvents: Servant.h Source File

Servant.h

Go to the documentation of this file.
00001 //                            Package   : omniEvents
00002 // Servant.h                  Created   : 2003/12/04
00003 //                            Author    : Alex Tingle
00004 //
00005 //    Copyright (C) 2003-2005 Alex Tingle.
00006 //
00007 //    This file is part of the omniEvents application.
00008 //
00009 //    omniEvents is free software; you can redistribute it and/or
00010 //    modify it under the terms of the GNU Lesser General Public
00011 //    License as published by the Free Software Foundation; either
00012 //    version 2.1 of the License, or (at your option) any later version.
00013 //
00014 //    omniEvents is distributed in the hope that it will be useful,
00015 //    but WITHOUT ANY WARRANTY; without even the implied warranty of
00016 //    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00017 //    Lesser General Public License for more details.
00018 //
00019 //    You should have received a copy of the GNU Lesser General Public
00020 //    License along with this library; if not, write to the Free Software
00021 //    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
00022 //
00023 
00024 #ifndef OMNIEVENTS__SERVANT_H
00025 #define OMNIEVENTS__SERVANT_H
00026 
00027 #ifdef HAVE_CONFIG_H
00028 #  include "config.h"
00029 #endif
00030 
00031 #ifdef HAVE_OMNIORB3
00032 #  include <omniORB3/CORBA.h>
00033 #endif
00034 
00035 #ifdef HAVE_OMNIORB4
00036 #  include <omniORB4/CORBA.h>
00037 #endif
00038 
00039 //
00040 // Debug definitions for servants.
00041 //
00042 
00043 #if OMNIEVENTS__DEBUG_ALL
00044 #  define OMNIEVENTS__DEBUG_REF_COUNTS 1
00045 #  define OMNIEVENTS__DEBUG_SERVANT 1
00046 #else
00047 
00049 #  define OMNIEVENTS__DEBUG_REF_COUNTS 0
00050 
00052 #  define OMNIEVENTS__DEBUG_SERVANT 0
00053 #endif
00054 
00055 #if OMNIEVENTS__DEBUG_REF_COUNTS
00056 #  define OMNIEVENTS__DEBUG_REF_COUNTS__DECL void _add_ref();void _remove_ref();
00057 #  define OMNIEVENTS__DEBUG_REF_COUNTS__DEFN(C) \
00058    void C::_add_ref() { \
00059      DB(20,#C "::_add_ref()") \
00060      PortableServer::RefCountServantBase::_add_ref(); \
00061    } \
00062    void C::_remove_ref() { \
00063      DB(20,#C "::_remove_ref()") \
00064      PortableServer::RefCountServantBase::_remove_ref(); \
00065    }
00066 #else
00067 
00068 #  define OMNIEVENTS__DEBUG_REF_COUNTS__DECL
00069 
00070 #  define OMNIEVENTS__DEBUG_REF_COUNTS__DEFN(C)
00071 #endif
00072 
00073 
00074 namespace OmniEvents {
00075 
00082 CORBA::Object_ptr
00083 createReference(PortableServer::POA_ptr poa, const char* repositoryId);
00084 
00094 template<class T>
00095 typename T::_ptr_type
00096 createNarrowedReference(PortableServer::POA_ptr poa, const char* repositoryId)
00097 {
00098   CORBA::Object_var obj =createReference(poa,repositoryId);
00099 #ifdef HAVE_OMNIORB4
00100   return T::_unchecked_narrow(obj.in());
00101 #else
00102   return T::_narrow(obj.in());
00103 #endif
00104 }
00105 
00107 char* newUniqueId();
00108 
00109 
00113 class Servant : public virtual PortableServer::ServantBase
00114 {
00115 public:
00116   virtual PortableServer::POA_ptr _default_POA();
00117   virtual ~Servant();
00118 
00119 #if OMNIEVENTS__DEBUG_SERVANT
00120   static int _objectCount;
00121 #endif
00122 
00123 protected:
00124   Servant(PortableServer::POA_ptr poa);
00125 
00127   void activateObjectWithId(const char* oidStr);
00129   void deactivateObject();
00130 
00131   PortableServer::POA_var _poa;
00132 
00133 private:
00135   Servant();
00136 };
00137 
00138 }; // end namespace OmniEvents
00139 
00140 #endif // OMNIEVENTS__SERVANT_H

Generated on Fri Aug 26 20:56:14 2005 for OmniEvents by  doxygen 1.4.3-20050530
omniEvents-2_6_2/doc/doxygen/a00200.html0000644000076400001440000004213710303671736020055 0ustar alexusers00000000000000 OmniEvents: SupplierAdmin.cc Source File

SupplierAdmin.cc

Go to the documentation of this file.
00001 //                            Package   : omniEvents
00002 // SupplierAdmin.h            Created   : 2003/12/04
00003 //                            Author    : Alex Tingle
00004 //
00005 //    Copyright (C) 2003-2005 Alex Tingle.
00006 //
00007 //    This file is part of the omniEvents application.
00008 //
00009 //    omniEvents is free software; you can redistribute it and/or
00010 //    modify it under the terms of the GNU Lesser General Public
00011 //    License as published by the Free Software Foundation; either
00012 //    version 2.1 of the License, or (at your option) any later version.
00013 //
00014 //    omniEvents is distributed in the hope that it will be useful,
00015 //    but WITHOUT ANY WARRANTY; without even the implied warranty of
00016 //    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00017 //    Lesser General Public License for more details.
00018 //
00019 //    You should have received a copy of the GNU Lesser General Public
00020 //    License along with this library; if not, write to the Free Software
00021 //    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
00022 //
00023 
00024 #include "SupplierAdmin.h"
00025 
00026 #include "EventChannel.h"
00027 #include "ProxyPushConsumer.h"
00028 #include "ProxyPullConsumer.h"
00029 #include "Orb.h"
00030 #include "PersistNode.h"
00031 
00032 #define MILLION 1000000
00033 #define BILLION 1000000000
00034 
00035 namespace OmniEvents {
00036 
00037 CosEventChannelAdmin::ProxyPushConsumer_ptr
00038 SupplierAdmin_i::obtain_push_consumer()
00039 {
00040   return _pushConsumer->createObject();
00041 }
00042 
00043 
00044 CosEventChannelAdmin::ProxyPullConsumer_ptr
00045 SupplierAdmin_i::obtain_pull_consumer()
00046 {
00047   if(!_pullConsumer)
00048       _pullConsumer=new ProxyPullConsumerManager(_poa,_queue);
00049   return _pullConsumer->createObject();
00050 }
00051 
00052 
00053 SupplierAdmin_i::SupplierAdmin_i(
00054   const EventChannel_i&   channel,
00055   PortableServer::POA_ptr poa
00056 )
00057 : Servant(poa),
00058   _channel(channel),
00059   _pushConsumer(NULL),
00060   _pullConsumer(NULL),
00061   _queue(),
00062   _nextPull(0,0)
00063 {
00064   // Initialise _nextPull. Only set it if the cycle period is LESS than the
00065   // pull retry period - otherwise just pull every cycle.
00066   if(_channel.pullRetryPeriod_ms() > (_channel.cyclePeriod_ns()/MILLION))
00067   {
00068     omni_thread::get_time(&(_nextPull.first),&(_nextPull.second));
00069   }
00070 
00071   // Always create the ProxyPushConsumer_i default servant. This allows
00072   // lazy clients to connect suppliers without having to go through the
00073   // proper procedure - they can make up an appropriate ObjectId, call push()
00074   // and it will just work (TM).
00075   // Note: A SupplierAdmin_i is always created by the EventChannel to allow this
00076   // behaviour.
00077   _pushConsumer=new ProxyPushConsumer_i(_poa,_queue,_channel.consumerAdmin());
00078   
00079   activateObjectWithId("SupplierAdmin");
00080 }
00081 
00082 
00083 SupplierAdmin_i::~SupplierAdmin_i()
00084 {
00085   DB(20,"~SupplierAdmin_i()")
00086   if(_pullConsumer)
00087   {
00088     _pullConsumer->_remove_ref();
00089     _pullConsumer=NULL;
00090   }
00091   if(_pushConsumer)
00092   {
00093     delete _pushConsumer;
00094     _pushConsumer=NULL;
00095   }
00096   for(list<CORBA::Any*>::iterator i=_queue.begin(); i!=_queue.end(); ++i)
00097       delete *i;
00098 }
00099 
00100 
00101 OMNIEVENTS__DEBUG_REF_COUNTS__DEFN(SupplierAdmin_i)
00102 
00103 
00104 void SupplierAdmin_i::collect(list<CORBA::Any*>& events)
00105 {
00106   if(_pullConsumer)
00107   {
00108     _pullConsumer->collect();
00109     if(0==_nextPull.first)
00110     { // No delay between pulls.
00111       _pullConsumer->triggerRequest();
00112     }
00113     else
00114     { // Only trigger new pull() calls if `pullRetry' ms have passed.
00115       pair<unsigned long,unsigned long> now;
00116       omni_thread::get_time(&(now.first),&(now.second));
00117       if(now>=_nextPull)
00118       {
00119         _pullConsumer->triggerRequest();
00120 
00121         CORBA::ULong p =_channel.pullRetryPeriod_ms();
00122         do{
00123           _nextPull.second += (p%1000)*MILLION;                    // nsec
00124           _nextPull.first  +=  p/1000 + _nextPull.second/BILLION;  // sec
00125           _nextPull.second %= BILLION;                             // nsec
00126         } while(now>=_nextPull);
00127       }
00128     }
00129   }
00130   _pushConsumer->trigger();
00131   // Pick up events from both pull & push consumers.
00132   events=_queue;
00133   _queue.clear();
00134 }
00135 
00136 
00137 void SupplierAdmin_i::disconnect()
00138 {
00139   if(_pushConsumer)
00140      _pushConsumer->disconnect();
00141   if(_pullConsumer)
00142      _pullConsumer->disconnect();
00143 }
00144 
00145 
00146 void SupplierAdmin_i::reincarnate(const PersistNode& node)
00147 {
00148   // Build Push Consumer proxies
00149   PersistNode* pushcNode =node.child("ProxyPushConsumer");
00150   if(pushcNode && !pushcNode->_child.empty())
00151   {
00152     assert(_pushConsumer!=NULL);
00153     _pushConsumer->reincarnate(*pushcNode);
00154   }
00155 
00156   // Build Pull Consumer proxies
00157   PersistNode* pullcNode =node.child("ProxyPullConsumer");
00158   if(pullcNode && !pullcNode->_child.empty())
00159   {
00160     if(!_pullConsumer)
00161         _pullConsumer=new ProxyPullConsumerManager(_poa,_queue);
00162     _pullConsumer->reincarnate(*pullcNode);
00163   }
00164 }
00165 
00166 
00167 void SupplierAdmin_i::output(ostream& os)
00168 {
00169   if(_pushConsumer)
00170      _pushConsumer->output(os);
00171   if(_pullConsumer)
00172      _pullConsumer->output(os);
00173 }
00174 
00175 
00176 }; // end namespace OmniEvents

Generated on Fri Aug 26 20:56:14 2005 for OmniEvents by  doxygen 1.4.3-20050530
omniEvents-2_6_2/doc/doxygen/a00201.html0000644000076400001440000002256710303671736020063 0ustar alexusers00000000000000 OmniEvents: SupplierAdmin.h Source File

SupplierAdmin.h

Go to the documentation of this file.
00001 //                            Package   : omniEvents
00002 // SupplierAdmin.h            Created   : 2003/12/04
00003 //                            Author    : Alex Tingle
00004 //
00005 //    Copyright (C) 2003-2005 Alex Tingle.
00006 //
00007 //    This file is part of the omniEvents application.
00008 //
00009 //    omniEvents is free software; you can redistribute it and/or
00010 //    modify it under the terms of the GNU Lesser General Public
00011 //    License as published by the Free Software Foundation; either
00012 //    version 2.1 of the License, or (at your option) any later version.
00013 //
00014 //    omniEvents is distributed in the hope that it will be useful,
00015 //    but WITHOUT ANY WARRANTY; without even the implied warranty of
00016 //    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00017 //    Lesser General Public License for more details.
00018 //
00019 //    You should have received a copy of the GNU Lesser General Public
00020 //    License along with this library; if not, write to the Free Software
00021 //    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
00022 //
00023 
00024 #ifndef OMNIEVENTS__SUPPLIERADMIN_H
00025 #define OMNIEVENTS__SUPPLIERADMIN_H
00026 
00027 #ifdef HAVE_CONFIG_H
00028 #  include "config.h"
00029 #endif
00030 
00031 #include <list>
00032 
00033 #ifdef HAVE_IOSTREAM
00034 #  include <iostream>
00035 #else
00036 #  include <iostream.h>
00037 #endif
00038 
00039 #include "Servant.h"
00040 #include "CosEventChannelAdmin.hh"
00041 
00042 #ifdef HAVE_STD_IOSTREAM
00043 using namespace std;
00044 #endif
00045 
00046 namespace OmniEvents {
00047 
00048 class EventChannel_i;
00049 class ProxyPushConsumer_i;
00050 class ProxyPullConsumerManager;
00051 class PersistNode;
00052 
00053 class SupplierAdmin_i
00054 : public virtual POA_CosEventChannelAdmin::SupplierAdmin,
00055   public PortableServer::RefCountServantBase,
00056   public Servant
00057 {
00058 public: // CORBA interface methods
00059   CosEventChannelAdmin::ProxyPushConsumer_ptr obtain_push_consumer();
00060   CosEventChannelAdmin::ProxyPullConsumer_ptr obtain_pull_consumer();
00061 
00062 public:
00063   SupplierAdmin_i(const EventChannel_i& channel, PortableServer::POA_ptr poa);
00064   virtual ~SupplierAdmin_i();
00065   OMNIEVENTS__DEBUG_REF_COUNTS__DECL
00066 
00068   void collect(list<CORBA::Any*>& events);
00069 
00071   void disconnect();
00072 
00074   void reincarnate(const PersistNode& node);
00075 
00077   void output(ostream& os);
00078 
00079 private:
00080   const EventChannel_i&     _channel;
00081   ProxyPushConsumer_i*      _pushConsumer;
00082   ProxyPullConsumerManager* _pullConsumer;
00083   list<CORBA::Any*>         _queue; 
00084 
00087   pair<unsigned long,unsigned long> _nextPull;
00088 };
00089 
00090 }; // end namespace OmniEvents
00091 
00092 #endif // OMNIEVENTS__SUPPLIERADMIN_H

Generated on Fri Aug 26 20:56:14 2005 for OmniEvents by  doxygen 1.4.3-20050530
omniEvents-2_6_2/doc/doxygen/a00209.md50000644000076400001440000000004010240666425017571 0ustar alexusers000000000000009670969112b3cc02fbf11694bbdafb8comniEvents-2_6_2/doc/doxygen/a00277.md50000644000076400001440000000004010240666467017604 0ustar alexusers00000000000000c53def1297bf61a279e419e615c93b39omniEvents-2_6_2/doc/doxygen/a00209.map0000644000076400001440000000005410240666426017667 0ustar alexusers00000000000000base referer rect $a00134.html 126,8 190,32 omniEvents-2_6_2/doc/doxygen/a00279.md50000644000076400001440000000004010240666470017600 0ustar alexusers0000000000000085c39afa43639d964e01b751ef122f45omniEvents-2_6_2/doc/doxygen/a00277.map0000644000076400001440000000005410240666470017673 0ustar alexusers00000000000000base referer rect $a00083.html 122,8 192,32 omniEvents-2_6_2/doc/doxygen/a00281.md50000644000076400001440000000004010240666472017573 0ustar alexusers000000000000006ff8e055bab69f998c6ad1716de15527omniEvents-2_6_2/doc/doxygen/a00279.map0000644000076400001440000000136210240666471017701 0ustar alexusers00000000000000base referer rect $a00085.html 318,201 449,225 rect $a00094.html 326,105 441,129 rect $a00096.html 514,54 674,78 rect $a00108.html 157,102 234,126 rect $a00120.html 137,302 254,326 rect $a00138.html 323,249 443,273 rect $a00126.html 305,393 462,417 rect $a00135.html 153,401 238,425 rect $a00084.html 525,249 663,273 rect $a00093.html 533,201 655,225 rect $a00125.html 513,345 675,369 rect $a00095.html 726,103 891,127 rect $a00123.html 523,153 665,177 rect $a00137.html 531,393 657,417 rect $a00106.html 775,55 842,79 rect $a00113.html 743,7 874,31 rect $a00128.html 311,297 455,321 rect $a00124.html 315,153 451,177 rect $a00119.html 321,345 446,369 rect $a00122.html 309,441 458,465 rect $a00127.html 518,297 670,321 rect $a00121.html 517,441 671,465 omniEvents-2_6_2/doc/doxygen/functions_0x61.html0000644000076400001440000000752710303671737022046 0ustar alexusers00000000000000 OmniEvents: Class Members
_ | a | b | c | d | e | f | h | i | j | k | l | m | n | o | p | q | r | s | t | u | w | ~

Here is a list of all class members with links to the classes they belong to:

- a -


Generated on Fri Aug 26 20:56:15 2005 for OmniEvents by  doxygen 1.4.3-20050530
omniEvents-2_6_2/doc/doxygen/functions_0x62.html0000644000076400001440000000657310303671737022047 0ustar alexusers00000000000000 OmniEvents: Class Members
_ | a | b | c | d | e | f | h | i | j | k | l | m | n | o | p | q | r | s | t | u | w | ~

Here is a list of all class members with links to the classes they belong to:

- b -


Generated on Fri Aug 26 20:56:15 2005 for OmniEvents by  doxygen 1.4.3-20050530
omniEvents-2_6_2/doc/doxygen/functions_0x63.html0000644000076400001440000001344010303671737022037 0ustar alexusers00000000000000 OmniEvents: Class Members
_ | a | b | c | d | e | f | h | i | j | k | l | m | n | o | p | q | r | s | t | u | w | ~

Here is a list of all class members with links to the classes they belong to:

- c -


Generated on Fri Aug 26 20:56:15 2005 for OmniEvents by  doxygen 1.4.3-20050530
omniEvents-2_6_2/doc/doxygen/functions_0x64.html0000644000076400001440000001175710303671737022051 0ustar alexusers00000000000000 OmniEvents: Class Members
_ | a | b | c | d | e | f | h | i | j | k | l | m | n | o | p | q | r | s | t | u | w | ~

Here is a list of all class members with links to the classes they belong to:

- d -


Generated on Fri Aug 26 20:56:15 2005 for OmniEvents by  doxygen 1.4.3-20050530
omniEvents-2_6_2/doc/doxygen/functions_0x65.html0000644000076400001440000000773310303671737022051 0ustar alexusers00000000000000 OmniEvents: Class Members
_ | a | b | c | d | e | f | h | i | j | k | l | m | n | o | p | q | r | s | t | u | w | ~

Here is a list of all class members with links to the classes they belong to:

- e -


Generated on Fri Aug 26 20:56:15 2005 for OmniEvents by  doxygen 1.4.3-20050530
omniEvents-2_6_2/doc/doxygen/functions_0x66.html0000644000076400001440000000776410303671737022056 0ustar alexusers00000000000000 OmniEvents: Class Members
_ | a | b | c | d | e | f | h | i | j | k | l | m | n | o | p | q | r | s | t | u | w | ~

Here is a list of all class members with links to the classes they belong to:

- f -


Generated on Fri Aug 26 20:56:15 2005 for OmniEvents by  doxygen 1.4.3-20050530
omniEvents-2_6_2/doc/doxygen/functions_0x68.html0000644000076400001440000000632310303671737022046 0ustar alexusers00000000000000 OmniEvents: Class Members
_ | a | b | c | d | e | f | h | i | j | k | l | m | n | o | p | q | r | s | t | u | w | ~

Here is a list of all class members with links to the classes they belong to:

- h -


Generated on Fri Aug 26 20:56:15 2005 for OmniEvents by  doxygen 1.4.3-20050530
omniEvents-2_6_2/doc/doxygen/functions_0x69.html0000644000076400001440000001040510303671737022043 0ustar alexusers00000000000000 OmniEvents: Class Members
_ | a | b | c | d | e | f | h | i | j | k | l | m | n | o | p | q | r | s | t | u | w | ~

Here is a list of all class members with links to the classes they belong to:

- i -


Generated on Fri Aug 26 20:56:15 2005 for OmniEvents by  doxygen 1.4.3-20050530
omniEvents-2_6_2/doc/doxygen/functions_0x6a.html0000644000076400001440000000634110303671737022117 0ustar alexusers00000000000000 OmniEvents: Class Members
_ | a | b | c | d | e | f | h | i | j | k | l | m | n | o | p | q | r | s | t | u | w | ~

Here is a list of all class members with links to the classes they belong to:

- j -


Generated on Fri Aug 26 20:56:15 2005 for OmniEvents by  doxygen 1.4.3-20050530
omniEvents-2_6_2/doc/doxygen/functions_0x6b.html0000644000076400001440000000664310303671737022125 0ustar alexusers00000000000000 OmniEvents: Class Members
_ | a | b | c | d | e | f | h | i | j | k | l | m | n | o | p | q | r | s | t | u | w | ~

Here is a list of all class members with links to the classes they belong to:

- k -


Generated on Fri Aug 26 20:56:15 2005 for OmniEvents by  doxygen 1.4.3-20050530
omniEvents-2_6_2/doc/doxygen/functions_0x6c.html0000644000076400001440000000660310303671737022122 0ustar alexusers00000000000000 OmniEvents: Class Members
_ | a | b | c | d | e | f | h | i | j | k | l | m | n | o | p | q | r | s | t | u | w | ~

Here is a list of all class members with links to the classes they belong to:

- l -


Generated on Fri Aug 26 20:56:15 2005 for OmniEvents by  doxygen 1.4.3-20050530
omniEvents-2_6_2/doc/doxygen/functions_0x6d.html0000644000076400001440000000744010303671737022123 0ustar alexusers00000000000000 OmniEvents: Class Members
_ | a | b | c | d | e | f | h | i | j | k | l | m | n | o | p | q | r | s | t | u | w | ~

Here is a list of all class members with links to the classes they belong to:

- m -


Generated on Fri Aug 26 20:56:15 2005 for OmniEvents by  doxygen 1.4.3-20050530
omniEvents-2_6_2/doc/doxygen/functions_0x6e.html0000644000076400001440000000645610303671737022132 0ustar alexusers00000000000000 OmniEvents: Class Members
_ | a | b | c | d | e | f | h | i | j | k | l | m | n | o | p | q | r | s | t | u | w | ~

Here is a list of all class members with links to the classes they belong to:

- n -


Generated on Fri Aug 26 20:56:15 2005 for OmniEvents by  doxygen 1.4.3-20050530
omniEvents-2_6_2/doc/doxygen/functions_0x6f.html0000644000076400001440000001416510303671737022127 0ustar alexusers00000000000000 OmniEvents: Class Members
_ | a | b | c | d | e | f | h | i | j | k | l | m | n | o | p | q | r | s | t | u | w | ~

Here is a list of all class members with links to the classes they belong to:

- o -


Generated on Fri Aug 26 20:56:15 2005 for OmniEvents by  doxygen 1.4.3-20050530
omniEvents-2_6_2/doc/doxygen/functions_0x70.html0000644000076400001440000001221110303671737022030 0ustar alexusers00000000000000 OmniEvents: Class Members
_ | a | b | c | d | e | f | h | i | j | k | l | m | n | o | p | q | r | s | t | u | w | ~

Here is a list of all class members with links to the classes they belong to:

- p -


Generated on Fri Aug 26 20:56:15 2005 for OmniEvents by  doxygen 1.4.3-20050530
omniEvents-2_6_2/doc/doxygen/functions_0x71.html0000644000076400001440000000633010303671737022036 0ustar alexusers00000000000000 OmniEvents: Class Members
_ | a | b | c | d | e | f | h | i | j | k | l | m | n | o | p | q | r | s | t | u | w | ~

Here is a list of all class members with links to the classes they belong to:

- q -


Generated on Fri Aug 26 20:56:15 2005 for OmniEvents by  doxygen 1.4.3-20050530
omniEvents-2_6_2/doc/doxygen/functions_0x72.html0000644000076400001440000001207210303671737022037 0ustar alexusers00000000000000 OmniEvents: Class Members
_ | a | b | c | d | e | f | h | i | j | k | l | m | n | o | p | q | r | s | t | u | w | ~

Here is a list of all class members with links to the classes they belong to:

- r -


Generated on Fri Aug 26 20:56:15 2005 for OmniEvents by  doxygen 1.4.3-20050530
omniEvents-2_6_2/doc/doxygen/functions_0x73.html0000644000076400001440000001130610303671737022037 0ustar alexusers00000000000000 OmniEvents: Class Members
_ | a | b | c | d | e | f | h | i | j | k | l | m | n | o | p | q | r | s | t | u | w | ~

Here is a list of all class members with links to the classes they belong to:

- s -


Generated on Fri Aug 26 20:56:15 2005 for OmniEvents by  doxygen 1.4.3-20050530
omniEvents-2_6_2/doc/doxygen/functions_0x74.html0000644000076400001440000001046610303671737022046 0ustar alexusers00000000000000 OmniEvents: Class Members
_ | a | b | c | d | e | f | h | i | j | k | l | m | n | o | p | q | r | s | t | u | w | ~

Here is a list of all class members with links to the classes they belong to:

- t -


Generated on Fri Aug 26 20:56:15 2005 for OmniEvents by  doxygen 1.4.3-20050530
omniEvents-2_6_2/doc/doxygen/functions_0x75.html0000644000076400001440000000632010303671737022041 0ustar alexusers00000000000000 OmniEvents: Class Members
_ | a | b | c | d | e | f | h | i | j | k | l | m | n | o | p | q | r | s | t | u | w | ~

Here is a list of all class members with links to the classes they belong to:

- u -


Generated on Fri Aug 26 20:56:15 2005 for OmniEvents by  doxygen 1.4.3-20050530
omniEvents-2_6_2/doc/doxygen/functions_0x77.html0000644000076400001440000000701410303671737022044 0ustar alexusers00000000000000 OmniEvents: Class Members
_ | a | b | c | d | e | f | h | i | j | k | l | m | n | o | p | q | r | s | t | u | w | ~

Here is a list of all class members with links to the classes they belong to:

- w -


Generated on Fri Aug 26 20:56:15 2005 for OmniEvents by  doxygen 1.4.3-20050530
omniEvents-2_6_2/doc/doxygen/functions_0x7e.html0000644000076400001440000001405210303671737022122 0ustar alexusers00000000000000 OmniEvents: Class Members
_ | a | b | c | d | e | f | h | i | j | k | l | m | n | o | p | q | r | s | t | u | w | ~

Here is a list of all class members with links to the classes they belong to:

- ~ -


Generated on Fri Aug 26 20:56:15 2005 for OmniEvents by  doxygen 1.4.3-20050530
omniEvents-2_6_2/doc/doxygen/functions_func_0x61.html0000644000076400001440000000761110303671737023053 0ustar alexusers00000000000000 OmniEvents: Class Members - Functions
_ | a | b | c | d | e | f | h | i | j | k | l | m | n | o | p | q | r | s | t | u | w | ~

- a -


Generated on Fri Aug 26 20:56:15 2005 for OmniEvents by  doxygen 1.4.3-20050530
omniEvents-2_6_2/doc/doxygen/functions_func_0x62.html0000644000076400001440000000665510303671737023063 0ustar alexusers00000000000000 OmniEvents: Class Members - Functions
_ | a | b | c | d | e | f | h | i | j | k | l | m | n | o | p | q | r | s | t | u | w | ~

- b -


Generated on Fri Aug 26 20:56:15 2005 for OmniEvents by  doxygen 1.4.3-20050530
omniEvents-2_6_2/doc/doxygen/functions_func_0x63.html0000644000076400001440000001336710303671737023062 0ustar alexusers00000000000000 OmniEvents: Class Members - Functions
_ | a | b | c | d | e | f | h | i | j | k | l | m | n | o | p | q | r | s | t | u | w | ~

- c -


Generated on Fri Aug 26 20:56:15 2005 for OmniEvents by  doxygen 1.4.3-20050530
omniEvents-2_6_2/doc/doxygen/functions_func_0x64.html0000644000076400001440000001204110303671737023047 0ustar alexusers00000000000000 OmniEvents: Class Members - Functions
_ | a | b | c | d | e | f | h | i | j | k | l | m | n | o | p | q | r | s | t | u | w | ~

- d -


Generated on Fri Aug 26 20:56:15 2005 for OmniEvents by  doxygen 1.4.3-20050530
omniEvents-2_6_2/doc/doxygen/functions_func_0x65.html0000644000076400001440000001001510303671737023047 0ustar alexusers00000000000000 OmniEvents: Class Members - Functions
_ | a | b | c | d | e | f | h | i | j | k | l | m | n | o | p | q | r | s | t | u | w | ~

- e -


Generated on Fri Aug 26 20:56:15 2005 for OmniEvents by  doxygen 1.4.3-20050530
omniEvents-2_6_2/doc/doxygen/functions_func_0x66.html0000644000076400001440000001004610303671737023054 0ustar alexusers00000000000000 OmniEvents: Class Members - Functions
_ | a | b | c | d | e | f | h | i | j | k | l | m | n | o | p | q | r | s | t | u | w | ~

- f -


Generated on Fri Aug 26 20:56:15 2005 for OmniEvents by  doxygen 1.4.3-20050530
omniEvents-2_6_2/doc/doxygen/functions_func_0x68.html0000644000076400001440000000640510303671737023062 0ustar alexusers00000000000000 OmniEvents: Class Members - Functions
_ | a | b | c | d | e | f | h | i | j | k | l | m | n | o | p | q | r | s | t | u | w | ~

- h -


Generated on Fri Aug 26 20:56:15 2005 for OmniEvents by  doxygen 1.4.3-20050530
omniEvents-2_6_2/doc/doxygen/functions_func_0x69.html0000644000076400001440000001027110303671737023057 0ustar alexusers00000000000000 OmniEvents: Class Members - Functions
_ | a | b | c | d | e | f | h | i | j | k | l | m | n | o | p | q | r | s | t | u | w | ~

- i -


Generated on Fri Aug 26 20:56:15 2005 for OmniEvents by  doxygen 1.4.3-20050530
omniEvents-2_6_2/doc/doxygen/functions_func_0x6a.html0000644000076400001440000000642310303671737023133 0ustar alexusers00000000000000 OmniEvents: Class Members - Functions
_ | a | b | c | d | e | f | h | i | j | k | l | m | n | o | p | q | r | s | t | u | w | ~

- j -


Generated on Fri Aug 26 20:56:15 2005 for OmniEvents by  doxygen 1.4.3-20050530
omniEvents-2_6_2/doc/doxygen/functions_func_0x6b.html0000644000076400001440000000672510303671737023141 0ustar alexusers00000000000000 OmniEvents: Class Members - Functions
_ | a | b | c | d | e | f | h | i | j | k | l | m | n | o | p | q | r | s | t | u | w | ~

- k -


Generated on Fri Aug 26 20:56:15 2005 for OmniEvents by  doxygen 1.4.3-20050530
omniEvents-2_6_2/doc/doxygen/functions_func_0x6c.html0000644000076400001440000000647410303671737023143 0ustar alexusers00000000000000 OmniEvents: Class Members - Functions
_ | a | b | c | d | e | f | h | i | j | k | l | m | n | o | p | q | r | s | t | u | w | ~

- l -


Generated on Fri Aug 26 20:56:15 2005 for OmniEvents by  doxygen 1.4.3-20050530
omniEvents-2_6_2/doc/doxygen/functions_func_0x6d.html0000644000076400001440000000713510303671737023137 0ustar alexusers00000000000000 OmniEvents: Class Members - Functions
_ | a | b | c | d | e | f | h | i | j | k | l | m | n | o | p | q | r | s | t | u | w | ~

- m -


Generated on Fri Aug 26 20:56:15 2005 for OmniEvents by  doxygen 1.4.3-20050530
omniEvents-2_6_2/doc/doxygen/functions_func_0x6e.html0000644000076400001440000000654010303671737023137 0ustar alexusers00000000000000 OmniEvents: Class Members - Functions
_ | a | b | c | d | e | f | h | i | j | k | l | m | n | o | p | q | r | s | t | u | w | ~

- n -


Generated on Fri Aug 26 20:56:15 2005 for OmniEvents by  doxygen 1.4.3-20050530
omniEvents-2_6_2/doc/doxygen/functions_func_0x6f.html0000644000076400001440000001371110303671737023136 0ustar alexusers00000000000000 OmniEvents: Class Members - Functions
_ | a | b | c | d | e | f | h | i | j | k | l | m | n | o | p | q | r | s | t | u | w | ~

- o -


Generated on Fri Aug 26 20:56:15 2005 for OmniEvents by  doxygen 1.4.3-20050530
omniEvents-2_6_2/doc/doxygen/functions_func_0x70.html0000644000076400001440000001214710303671737023053 0ustar alexusers00000000000000 OmniEvents: Class Members - Functions
_ | a | b | c | d | e | f | h | i | j | k | l | m | n | o | p | q | r | s | t | u | w | ~

- p -


Generated on Fri Aug 26 20:56:15 2005 for OmniEvents by  doxygen 1.4.3-20050530
omniEvents-2_6_2/doc/doxygen/functions_func_0x71.html0000644000076400001440000000641210303671737023052 0ustar alexusers00000000000000 OmniEvents: Class Members - Functions
_ | a | b | c | d | e | f | h | i | j | k | l | m | n | o | p | q | r | s | t | u | w | ~

- q -


Generated on Fri Aug 26 20:56:15 2005 for OmniEvents by  doxygen 1.4.3-20050530
omniEvents-2_6_2/doc/doxygen/functions_func_0x72.html0000644000076400001440000001203710303671737023053 0ustar alexusers00000000000000 OmniEvents: Class Members - Functions
_ | a | b | c | d | e | f | h | i | j | k | l | m | n | o | p | q | r | s | t | u | w | ~

- r -


Generated on Fri Aug 26 20:56:15 2005 for OmniEvents by  doxygen 1.4.3-20050530
omniEvents-2_6_2/doc/doxygen/functions_func_0x73.html0000644000076400001440000001126110303671737023052 0ustar alexusers00000000000000 OmniEvents: Class Members - Functions
_ | a | b | c | d | e | f | h | i | j | k | l | m | n | o | p | q | r | s | t | u | w | ~

- s -


Generated on Fri Aug 26 20:56:15 2005 for OmniEvents by  doxygen 1.4.3-20050530
omniEvents-2_6_2/doc/doxygen/functions_func_0x74.html0000644000076400001440000001030310303671737023047 0ustar alexusers00000000000000 OmniEvents: Class Members - Functions
_ | a | b | c | d | e | f | h | i | j | k | l | m | n | o | p | q | r | s | t | u | w | ~

- t -


Generated on Fri Aug 26 20:56:15 2005 for OmniEvents by  doxygen 1.4.3-20050530
omniEvents-2_6_2/doc/doxygen/functions_func_0x75.html0000644000076400001440000000640210303671737023055 0ustar alexusers00000000000000 OmniEvents: Class Members - Functions
_ | a | b | c | d | e | f | h | i | j | k | l | m | n | o | p | q | r | s | t | u | w | ~

- u -


Generated on Fri Aug 26 20:56:15 2005 for OmniEvents by  doxygen 1.4.3-20050530
omniEvents-2_6_2/doc/doxygen/functions_func_0x77.html0000644000076400001440000000710010303671737023053 0ustar alexusers00000000000000 OmniEvents: Class Members - Functions
_ | a | b | c | d | e | f | h | i | j | k | l | m | n | o | p | q | r | s | t | u | w | ~

- w -


Generated on Fri Aug 26 20:56:15 2005 for OmniEvents by  doxygen 1.4.3-20050530
omniEvents-2_6_2/doc/doxygen/functions_func_0x7e.html0000644000076400001440000001413410303671737023136 0ustar alexusers00000000000000 OmniEvents: Class Members - Functions
_ | a | b | c | d | e | f | h | i | j | k | l | m | n | o | p | q | r | s | t | u | w | ~

- ~ -


Generated on Fri Aug 26 20:56:15 2005 for OmniEvents by  doxygen 1.4.3-20050530
omniEvents-2_6_2/doc/doxygen/a00283.md50000644000076400001440000000004010240666473017576 0ustar alexusers000000000000000a187744e959f3c138f16e9a80f09454omniEvents-2_6_2/doc/doxygen/a00281.map0000644000076400001440000000005710240666472017673 0ustar alexusers00000000000000base referer rect $a00136.html 229,104 309,128 omniEvents-2_6_2/doc/doxygen/a00285.md50000644000076400001440000000004010240451456017571 0ustar alexusers00000000000000a9d972c90ca847eee8077e429b2d456comniEvents-2_6_2/doc/doxygen/a00283.map0000644000076400001440000000005410240666473017673 0ustar alexusers00000000000000base referer rect $a00106.html 134,8 201,32 omniEvents-2_6_2/doc/doxygen/a00287.md50000644000076400001440000000004010240451457017574 0ustar alexusers00000000000000967e82278ff8ee49f662af0ec44a2164omniEvents-2_6_2/doc/doxygen/a00285.map0000644000076400001440000000032310240451457017666 0ustar alexusers00000000000000base referer rect $a00046.html 436,362 630,386 rect $a00073.html 161,13 308,37 rect $a00062.html 8,90 197,114 rect $a00070.html 272,181 538,205 rect $a00066.html 265,453 524,477 rect $a00049.html 498,90 674,114 omniEvents-2_6_2/doc/doxygen/a00289.md50000644000076400001440000000004010240451460017570 0ustar alexusers000000000000004c9477906abdd21e1a395397b8092e2fomniEvents-2_6_2/doc/doxygen/a00287.map0000644000076400001440000000001510240451457017666 0ustar alexusers00000000000000base referer omniEvents-2_6_2/doc/doxygen/a00291.md50000644000076400001440000000004010240451460017561 0ustar alexusers0000000000000064573e0d488593aa6ce541a53a920733omniEvents-2_6_2/doc/doxygen/a00289.map0000644000076400001440000000005310240451460017664 0ustar alexusers00000000000000base referer rect $a00073.html 32,9 178,33 omniEvents-2_6_2/doc/doxygen/a00293.md50000644000076400001440000000004010240451461017564 0ustar alexusers000000000000009d9020916d36bd741476b03b757a2455omniEvents-2_6_2/doc/doxygen/a00291.map0000644000076400001440000000032110240451461017654 0ustar alexusers00000000000000base referer rect $a00043.html 498,267 709,291 rect $a00076.html 245,267 442,291 rect $a00073.html 482,9 629,33 rect $a00054.html 8,86 154,110 rect $a00060.html 469,86 642,110 rect $a00048.html 178,86 394,110 omniEvents-2_6_2/doc/doxygen/a00295.md50000644000076400001440000000004010240451463017570 0ustar alexusers00000000000000c40b1f4ba91953e41bb774f445eefc15omniEvents-2_6_2/doc/doxygen/a00293.map0000644000076400001440000000005310240451463017662 0ustar alexusers00000000000000base referer rect $a00073.html 54,9 201,33 omniEvents-2_6_2/doc/doxygen/a00297.md50000644000076400001440000000004010240451464017573 0ustar alexusers000000000000008d68069b03bc5bc5cfc6738b768cf34comniEvents-2_6_2/doc/doxygen/a00295.map0000644000076400001440000000011110240451463017657 0ustar alexusers00000000000000base referer rect $a00073.html 8,9 154,33 rect $a00048.html 178,9 394,33 omniEvents-2_6_2/doc/doxygen/a00299.md50000644000076400001440000000004010240451464017575 0ustar alexusers000000000000009a28dd6453f86da3fdf9a6c31074ae0eomniEvents-2_6_2/doc/doxygen/a00297.map0000644000076400001440000000011510240451464017666 0ustar alexusers00000000000000base referer rect $a00065.html 8,83 224,107 rect $a00069.html 248,83 472,107 omniEvents-2_6_2/doc/doxygen/a00301.md50000644000076400001440000000004010240451464017555 0ustar alexusers000000000000008d1abd02cf783ba7142be523aef048b7omniEvents-2_6_2/doc/doxygen/a00299.map0000644000076400001440000000005310240451464017671 0ustar alexusers00000000000000base referer rect $a00049.html 33,9 209,33 omniEvents-2_6_2/doc/doxygen/a00303.md50000644000076400001440000000004010240451465017560 0ustar alexusers00000000000000a8f555f7981ba80660446b0ccb159e33omniEvents-2_6_2/doc/doxygen/a00301.map0000644000076400001440000000011510240451465017651 0ustar alexusers00000000000000base referer rect $a00052.html 7,83 229,107 rect $a00053.html 253,83 445,107 omniEvents-2_6_2/doc/doxygen/a00305.md50000644000076400001440000000004010240451465017562 0ustar alexusers00000000000000a8f555f7981ba80660446b0ccb159e33omniEvents-2_6_2/doc/doxygen/a00303.map0000644000076400001440000000005310240451465017654 0ustar alexusers00000000000000base referer rect $a00051.html 38,9 169,33 omniEvents-2_6_2/doc/doxygen/a00307.md50000644000076400001440000000004010240451466017565 0ustar alexusers0000000000000026331b844e1e37b4dcdaf798982f92f7omniEvents-2_6_2/doc/doxygen/a00305.map0000644000076400001440000000005310240451466017657 0ustar alexusers00000000000000base referer rect $a00051.html 38,9 169,33 omniEvents-2_6_2/doc/doxygen/a00309.md50000644000076400001440000000004010240451466017567 0ustar alexusers0000000000000026331b844e1e37b4dcdaf798982f92f7omniEvents-2_6_2/doc/doxygen/a00307.map0000644000076400001440000000005310240451466017661 0ustar alexusers00000000000000base referer rect $a00051.html 53,9 183,33 omniEvents-2_6_2/doc/doxygen/a00311.md50000644000076400001440000000004010240451467017561 0ustar alexusers00000000000000d6bb3d683e4ab02cdf10c31e8ea6fd5domniEvents-2_6_2/doc/doxygen/a00309.map0000644000076400001440000000005310240451467017664 0ustar alexusers00000000000000base referer rect $a00051.html 53,9 183,33 omniEvents-2_6_2/doc/doxygen/a00313.md50000644000076400001440000000004010240451467017563 0ustar alexusers00000000000000d6bb3d683e4ab02cdf10c31e8ea6fd5domniEvents-2_6_2/doc/doxygen/a00311.map0000644000076400001440000000005210240451467017654 0ustar alexusers00000000000000base referer rect $a00073.html 8,9 154,33 omniEvents-2_6_2/doc/doxygen/a00315.md50000644000076400001440000000004010240451470017557 0ustar alexusers00000000000000edf1badf109415bc7f6979b2eccb4cb9omniEvents-2_6_2/doc/doxygen/a00313.map0000644000076400001440000000005210240451467017656 0ustar alexusers00000000000000base referer rect $a00073.html 8,9 154,33 omniEvents-2_6_2/doc/doxygen/a00317.md50000644000076400001440000000004010240451470017561 0ustar alexusers00000000000000c52f0a38fc32cd325b40ea1f4cc20702omniEvents-2_6_2/doc/doxygen/a00315.map0000644000076400001440000000015210240451470017653 0ustar alexusers00000000000000base referer rect $a00047.html 64,100 304,124 rect $a00073.html 8,9 154,33 rect $a00048.html 178,9 394,33 omniEvents-2_6_2/doc/doxygen/a00319.md50000644000076400001440000000004010240451471017564 0ustar alexusers00000000000000062957ab2689718e189c9b8092947128omniEvents-2_6_2/doc/doxygen/a00317.map0000644000076400001440000000021310240451471017654 0ustar alexusers00000000000000base referer rect $a00056.html 86,190 281,214 rect $a00047.html 64,100 304,124 rect $a00073.html 8,9 154,33 rect $a00048.html 178,9 394,33 omniEvents-2_6_2/doc/doxygen/a00321.md50000644000076400001440000000004010240451471017555 0ustar alexusers000000000000007e33d74468d6b593cde36625676daff6omniEvents-2_6_2/doc/doxygen/a00319.map0000644000076400001440000000001510240451471017656 0ustar alexusers00000000000000base referer omniEvents-2_6_2/doc/doxygen/a00323.md50000644000076400001440000000004010240451472017560 0ustar alexusers0000000000000038dacdaa44f7a27618fda8de72619ec0omniEvents-2_6_2/doc/doxygen/a00321.map0000644000076400001440000000022010240451472017646 0ustar alexusers00000000000000base referer rect $a00064.html 7,158 279,182 rect $a00066.html 303,158 562,182 rect $a00070.html 586,158 853,182 rect $a00073.html 359,9 506,33 omniEvents-2_6_2/doc/doxygen/a00325.md50000644000076400001440000000004010240451472017562 0ustar alexusers000000000000007d22d9fd3ba564d398b84158314f7b7domniEvents-2_6_2/doc/doxygen/a00323.map0000644000076400001440000000005310240451472017654 0ustar alexusers00000000000000base referer rect $a00073.html 29,9 175,33 omniEvents-2_6_2/doc/doxygen/a00327.md50000644000076400001440000000004010240451473017565 0ustar alexusers00000000000000f869df6e92e53839e4067e25bd86336fomniEvents-2_6_2/doc/doxygen/a00325.map0000644000076400001440000000022010240451473017653 0ustar alexusers00000000000000base referer rect $a00063.html 7,158 237,182 rect $a00065.html 261,158 477,182 rect $a00069.html 501,158 725,182 rect $a00073.html 295,9 442,33 omniEvents-2_6_2/doc/doxygen/a00329.md50000644000076400001440000000004010240451473017567 0ustar alexusers00000000000000a905a14ade48eef4de48c87080ae4e7comniEvents-2_6_2/doc/doxygen/a00327.map0000644000076400001440000000005210240451473017660 0ustar alexusers00000000000000base referer rect $a00073.html 8,9 154,33 omniEvents-2_6_2/doc/doxygen/a00331.md50000644000076400001440000000004010240451473017560 0ustar alexusers00000000000000a905a14ade48eef4de48c87080ae4e7comniEvents-2_6_2/doc/doxygen/a00329.map0000644000076400001440000000011310240451473017660 0ustar alexusers00000000000000base referer rect $a00062.html 49,84 238,108 rect $a00073.html 70,9 217,33 omniEvents-2_6_2/doc/doxygen/a00333.md50000644000076400001440000000004010240451474017563 0ustar alexusers00000000000000c91cde5adc0086c893bf816d4aa3def9omniEvents-2_6_2/doc/doxygen/a00331.map0000644000076400001440000000011310240451474017652 0ustar alexusers00000000000000base referer rect $a00062.html 49,84 238,108 rect $a00073.html 70,9 217,33 omniEvents-2_6_2/doc/doxygen/a00335.md50000644000076400001440000000004010240451475017566 0ustar alexusers00000000000000c91cde5adc0086c893bf816d4aa3def9omniEvents-2_6_2/doc/doxygen/a00333.map0000644000076400001440000000011310240451475017655 0ustar alexusers00000000000000base referer rect $a00061.html 54,84 190,108 rect $a00073.html 49,9 195,33 omniEvents-2_6_2/doc/doxygen/a00337.md50000644000076400001440000000004010240451475017570 0ustar alexusers00000000000000fa01a09945d5ba3281c8e38c3e030089omniEvents-2_6_2/doc/doxygen/a00335.map0000644000076400001440000000011310240451475017657 0ustar alexusers00000000000000base referer rect $a00061.html 54,84 190,108 rect $a00073.html 49,9 195,33 omniEvents-2_6_2/doc/doxygen/a00339.md50000644000076400001440000000004010240451476017573 0ustar alexusers00000000000000d193bd4f374b0b3a42f5249f9817a673omniEvents-2_6_2/doc/doxygen/a00337.map0000644000076400001440000000011310240451476017662 0ustar alexusers00000000000000base referer rect $a00062.html 42,84 232,108 rect $a00073.html 64,9 210,33 omniEvents-2_6_2/doc/doxygen/a00341.md50000644000076400001440000000004010240451476017564 0ustar alexusers00000000000000ae281f521c8b7c0ee14fa83f42f01edcomniEvents-2_6_2/doc/doxygen/a00339.map0000644000076400001440000000015010240451476017665 0ustar alexusers00000000000000base referer rect $a00062.html 8,9 197,33 rect $a00049.html 221,9 397,33 rect $a00046.html 421,9 616,33 omniEvents-2_6_2/doc/doxygen/a00343.md50000644000076400001440000000004010240451477017567 0ustar alexusers00000000000000ad028f7592591dece58e2fd4eb0bfd9comniEvents-2_6_2/doc/doxygen/a00341.map0000644000076400001440000000015310240451477017662 0ustar alexusers00000000000000base referer rect $a00061.html 13,84 149,108 rect $a00073.html 8,9 154,33 rect $a00050.html 173,84 400,108 omniEvents-2_6_2/doc/doxygen/a00345.md50000644000076400001440000000004010240451477017571 0ustar alexusers00000000000000237c7954d9923d8e8b1af52fc9308520omniEvents-2_6_2/doc/doxygen/a00343.map0000644000076400001440000000021410240451477017662 0ustar alexusers00000000000000base referer rect $a00061.html 13,100 149,124 rect $a00073.html 8,9 154,33 rect $a00050.html 173,100 400,124 rect $a00049.html 198,9 374,33 omniEvents-2_6_2/doc/doxygen/a00347.md50000644000076400001440000000004010240451500017556 0ustar alexusers000000000000008577a474bc0a54b54b8fca99598cf8a4omniEvents-2_6_2/doc/doxygen/a00345.map0000644000076400001440000000005310240451500017650 0ustar alexusers00000000000000base referer rect $a00073.html 53,9 199,33 omniEvents-2_6_2/doc/doxygen/a00349.md50000644000076400001440000000004010240451501017561 0ustar alexusers00000000000000d8feef8b8a26e956fc62ee9a2f558c87omniEvents-2_6_2/doc/doxygen/a00347.map0000644000076400001440000000036610240451501017662 0ustar alexusers00000000000000base referer rect $a00073.html 474,9 621,33 rect $a00043.html 460,268 670,292 rect $a00062.html 358,86 548,110 rect $a00046.html 554,358 749,382 rect $a00070.html 320,177 586,201 rect $a00066.html 384,449 642,473 rect $a00049.html 629,86 805,110 omniEvents-2_6_2/doc/doxygen/a00351.md50000644000076400001440000000004010240451501017552 0ustar alexusers00000000000000d8feef8b8a26e956fc62ee9a2f558c87omniEvents-2_6_2/doc/doxygen/a00349.map0000644000076400001440000000005310240451501017655 0ustar alexusers00000000000000base referer rect $a00041.html 88,9 240,33 omniEvents-2_6_2/doc/doxygen/a00353.md50000644000076400001440000000004010240451502017555 0ustar alexusers000000000000008c897994e920691382caaaa8c7fd824comniEvents-2_6_2/doc/doxygen/a00351.map0000644000076400001440000000005310240451501017646 0ustar alexusers00000000000000base referer rect $a00041.html 88,9 240,33 omniEvents-2_6_2/doc/doxygen/a00355.md50000644000076400001440000000004010240451502017557 0ustar alexusers0000000000000095530f467d52b2c12a72b7460db55b1domniEvents-2_6_2/doc/doxygen/a00353.map0000644000076400001440000000011310240451502017646 0ustar alexusers00000000000000base referer rect $a00062.html 46,84 236,108 rect $a00073.html 68,9 214,33 omniEvents-2_6_2/doc/doxygen/a00357.md50000644000076400001440000000004010240451503017562 0ustar alexusers000000000000005e2fc833b03cc3159389dafe58a0e390omniEvents-2_6_2/doc/doxygen/a00355.map0000644000076400001440000000015310240451503017655 0ustar alexusers00000000000000base referer rect $a00062.html 7,86 197,110 rect $a00073.html 29,9 175,33 rect $a00049.html 221,86 397,110 omniEvents-2_6_2/doc/doxygen/a00359.md50000644000076400001440000000004010240451503017564 0ustar alexusers00000000000000c8574958d44308b1fe03b063e5560e0eomniEvents-2_6_2/doc/doxygen/a00357.map0000644000076400001440000000021510240451503017656 0ustar alexusers00000000000000base referer rect $a00070.html 123,177 390,201 rect $a00062.html 7,86 197,110 rect $a00073.html 29,9 175,33 rect $a00049.html 221,86 397,110 omniEvents-2_6_2/doc/doxygen/a00361.md50000644000076400001440000000004010240451504017556 0ustar alexusers000000000000001668475992af652bf70478b2a3b00610omniEvents-2_6_2/doc/doxygen/a00359.map0000644000076400001440000000021410240451504017660 0ustar alexusers00000000000000base referer rect $a00061.html 13,84 149,108 rect $a00073.html 8,9 154,33 rect $a00050.html 173,84 400,108 rect $a00041.html 424,84 576,108 omniEvents-2_6_2/doc/doxygen/a00363.md50000644000076400001440000000004010240451504017560 0ustar alexusers000000000000007475ed0e0fe5f5defce51b492728c50bomniEvents-2_6_2/doc/doxygen/a00361.map0000644000076400001440000000025610240451504017657 0ustar alexusers00000000000000base referer rect $a00061.html 13,100 149,124 rect $a00073.html 8,9 154,33 rect $a00050.html 173,100 400,124 rect $a00049.html 198,9 374,33 rect $a00041.html 424,100 576,124 omniEvents-2_6_2/doc/doxygen/a00365.md50000644000076400001440000000004010240451505017563 0ustar alexusers000000000000005cb3d09a4a0e306dbd6d1a3dfbe7c534omniEvents-2_6_2/doc/doxygen/a00363.png0000644000076400001440000001103410240451504017664 0ustar alexusers00000000000000‰PNG  IHDRÇw"ô$PLTEþÿÿÿo___???ŸŸŸßßß¿¿¿ÿÿÿbUtRNS@æØf¦IDATxœíO{ÚFÇûöÌãúZ?ÙÂ1SÛ1ÇÖ›8&,µtܺ­­£S‡ÀmH—.` 4onç7#! ‘@ó¡¯c,F£}ò› ñÕè”}ýõè=à 2+Ê!³¢2+â éÜ$RDM9$ÛªùÕ”C²­š_M9$³ªí«gÕOSðËQ¹q>mCaÓ¼ê^)î6f°&"17§?ûi¤·ÛÁL‹u7¯> 76ÿ¯ºWŠ«r°&"1'äŸ/=œiñv9ß’î‡k"ÙAèÎt2šNý 74¼Ÿ/e[G•'4è–ç£ßºœ¦C¾6ªôäª49m²dtî´/=è´$6E5W¼Žýd=Y¦S½§VϪMOoÊý™‰t§YGMüû;½h•!×Àê$Ù 2:—èqZ\´tZ’‚`SÙ MøqTG%¦¿4ÕªA1$òò!Gõ ׯ§íneÕmfZæ\³uZ’Bb/$i®HØ¹× R £G gï.½|· ¢¹nÿÔÑQ§†1pT$+$ (Ë×?ã•¶J!QÝË÷½I š«âFgtÔy½•8’p A¶ÛªÓAÓÓV™6WöÉ›ÓCÒ'q®¡Õs´ …„ŒŽzPƒôIÉ ÇEòN–úduÚC0ž^y£+9€Ñç£ëdÔ 4 ÇÙiVeƒeÿ´n|tç®G¬OÐg¸Ý?¹Ë‚ ‹(ûŸBÆKU3–HÜ!QÖ!)cÆ!Vªf,c¯ê,_\>âSM´8AŽ¿ž…¡8A $'H±ä)6| ’¤à@rH.¢ÉRx y@ $Hñä)>9d*’ µæ©H‚ÖšC¦!Zk™†dh­9d Šl­.KJɴʈCF¶Ö2q…Œ>€ä©(‡L[ÑGÉdž×•tð½(+Ùì5¾:8ȸž×•t0Á®Œðº‚ÄAÆõ¼®¤Ã†ë C5,$2®ç Ï¢‚ŵþ4i`‚Uð&V÷rÂÖx#aÍuÍGdžW€¬£kbqÅuâUð’S¾‹+$╯䅌áy…tG='WœÑ…ÄK6~…|*üXRBÆõ¼Búô•kqHj‚uÔÙ¯ü, rÍç,ꔌëy…të¼J-® &X€t4gId·¥‚“y^!4jq,0ÁRÈ’‰W ë“QÅ£ÀÉ@Ï+¤£7ȳ½^iôdÀQ'£ãž ‰W ]# ù˜…BRãr¦ WW¦þº5^WOÈ"78Èâš]` a Æ CÞd20Òf2¸œ©‹ËGk–¹‹dvý®G‘‹Ä²¸!qýM,HÑ_Rò€H.¢ÉRx y@ $ÓºC€ßZ9@Š${H ™Cî*Â'AkÍ!wÕÉÑZsÈ]€2´ÖrW%i­ü Ù_†\#“9¤ßZÍ ™*‡Ü]wrH–Ê!w×8x*@![Æ…Ÿd›Žÿ5H«é-ãÒ^ý¢fµÈʹ¹CÚŸÚoT?­ì€É×Ü{³’n?´K¿GAܰŸÃëÊ~Å|!§UøçËQC,Þ®¤Ã†§‘þ›5󼲆 žÔ‘=œkhÖSêƒÒœªàÅ¢^Ö©Al«ÝN}¤Q×#5¿âtÈØíà í6ÌßZ{,,â•§Mê|¤áWçîתœˆ?$|Ím*åF¹NU YG×è¤ý¶UGX= Y$’`~ÅéÄҪ†6Ø`Ÿ¨ÁñJ ‰ÓŽqF}ß>s.g½IMH¤v¦“gè¨çøÍ5 à€f†t¤¿4q:¢ö9ØmpÚ©¶Nm„ðs OÒ:è’rçh¨3o …¤Í5©/«m# yû'+IŸ|­@:…„ /L¼|ûÖƒ„•4’8 þàò‚·|M êâ ÉÀ³iWñÊ6…Ô¬ÞòúgH§°!¢E$ñJ ‰Ó:è77’*ºûV,$9„!Ûø0Òp÷:£C·OBºÓt ‰7„C†œ, ñJr¢“ŒÐ'UØŽ'dð²€2î“}ð²Â°ˆwýeè®>íA:d|º':*=¼ó ñJ ‰Ó ã]UØN,$MË¡·Ù„¼ Ÿçerö²¾frY9äî ]Ì!Y*‡Ü]AÈâß3zq¹¹(@¹KrGå.Ižâ)¸±æÂuÂqèH±‡Hö’=¤d)C YB’ã d )E B’‹R’1¤d )G BdQšÖÊR’@²ƒ¥ $CÈ£€ÄãNœÖšâíøë+aYŒÈô&VØP+ȸ]r¿!ãµÖý†ŒÙ%÷2f—ÜkÈñ8æ™À>CÆm­ çz}FèeÝw€" cž $›ëÕP‘" dìÖšp®×ç2:–ò(~ Îõ:¨¡s“ÎëZ%¿8ð,)R ÇE ÷H¹^u[7a^×çöüB†g-XR¤˜@DZÏÍ“Íõª¿¶NM:¯ëõDZµa¨¤H1€,bÈØŸ$ÎõzûòÞ„y]MnüK3KŠÈøßHúO¬¹^{œ…ÌëJ#I2KŠTúã- cÏõ:ý%õ¹}†ûäÍ,)Rr@ÆëUŸ læu]Œ®}$‹ ûdRcwù†i!Ç b”hHÒZãìú˜ü_ly‚^uâù•HŽYöóSÈFÆ¢+ýþB¢¨“èV¼—d(/…rÃQe?!“9ÞÜCyB¦v…×ô°V»_ô®¥Vó×/.§V“é¯ÂýtA¥ëÂYiCþ7V#å,FÍ5ëhõ"ZAÈ‘6ëú»Ûƒáªò¨~Ø )›‚Ÿë7þî>ó/_‚û¿X÷Û—ËÆ ÝÍž@þ‹üó5c,Þ:ÆHYœï dË0.FSõ5ª˜§Ü\ñ~K£¹ÑœSµ¤ÛoÕN›SÈŒ_Zÿ1zŸÔήÛWû‰Ï>ÌѤ?é;f£F!ûJÿ~Pÿ\²žcnVN þ9½1 qvujü`–jdß—HH~Ì®Ù%ÏÕ|X1»ý{ †t›æ™F_ ³ûëÈèu!û¾@’怄ýþ©gôRäóï·$_˜&¾sžÿhî$ <Ë?üÓ0Q—B§îƒsÄþ¯ óÊÜ+H8„„ ¿|éš-Üý:%Ú\¯hŸ|ÿî²A ûʼ*ï$œ ,õÉÆ,šT5ot}Rÿí&ï'û d×ödtMCRâÓº´ àý>jÆçÉq¼k;\ÅìC³+-û'ÙWyLÄéÊÀ¦þ-â@¦&úA¤g`]H )T»¹ ß…|eõJO-¤Pëæ2Ø|áóuÂZH¡ÖÍe°ù~2æˆJA )Ôº¹ 1_”Î1¦°q-#Ï@’ )Tº¹ i ãZ^ £¯®¦6ÖÀÈÇ“¤ Èk\˫޾]rDøe¬“h³òv0®åU_ñ¶øe¬“hoòv0®å ;­Ò·z“Ú RÔ@ëÄ2ÑývòÛòŠZ5çrzÑ*¿¾QïÐq°ŒubãwÝ2†åÕ0žUðIÎz7h®=ËX'FÎå$7ÜÈklË+‚™QÜh'&Ì ,cØxÐ…²@^c[^@’Hž¡ÙC5XÆ:1º› ɽ“òÛòŠÈlÚ¸Ož+Ì (cXÝ’ ”òÛòŠÈD¾•þ¤fõ`nØ@ëÄ2î­Z Âõ¼ŽU«{µܵ]ؾ»« f·ÆeaûZîË±ÊØoȘe0»6~{-¤PÝæ2rÈ]¿½R¨ms9ä.Šß^÷ïâòBIŽ”¬•Ïý±“ä™s(‡ÜMÒ<˜‘1¤,¡d )I(Î@xóÖ¡C˜ÊJÖSŸJÊ|~×Ýt83õJJö³gKpÿKÈC˜ìý ¦íß`óGiì¨Ãz(Šè›?¨hG×,§srƒxB†ºbÈ¿T`W)Öÿ–¸A†Œ¾v•"¡à ñT`W) h²v•"Þ+'^J]¥H8¤7ÁK]¥H<$¢]³@–àyÆ ‘ç?Em€ÓOà 5„®6Ô+$tÍü!O¦öSËN»x‹æÞ§ýËÛÐöŽŽì ÓÈé® Ï¤’g‰G¼Å JxÍšHI·¹Ò§Å×¥8ZéƒÔÏ¢N2X^»ïñÛ9ìLjO«¶î\£—ªˆ3f{­<_¬sGMh2AÂ|O¦Rn”¨?3)d]£“öX^uà>H]µDÏÚ÷í³é«Ï³Þ¤æ(ª¢ §qÆ:åûÉEK_¬C}”œ!×~Ä*À … =H}è¨çøÍ5 à€fÆéð¤{tgi¢Î¼é|,ÿ¬ Õ&Š·‘r£Á¢Us\7¡L´¹ UVÛ0FòöO²×¤sâõ8_‰x`_jç º}K g?Véà‹õz±LdàY‚´Î«ÈDm ©Y=ÈG!I$ÿ,£»oq·[’MsH$‘­ÊI!AÈv» Ö“ö…z}$î“/ï‡Èéà„7ø?g8q!KHŸl•e„$'á>Ù+Faï_†þè 8ùLÓ†¼oâ¦ûðÖÁl¯dtí#)!·Ò´¼’d©á[E8 Yw )l_è¶’4½øºégï!gQ§·•àm^Ü!×µ×»JQ™¾r]§,°«åék=d¶..‹þª‡*‡ÜQÒXsÈ%O2‡ÜQÒ˜ërÈ%ƒýWw„’=¤¡doq9H Úkn ÜQGK…‰¤ðPæ.É•»$yФàË Rlƒå)6”¼¼uã£Ô¦M>á,7aüÇĦ+®HÐ\÷9d Ê!y)‡LC¡•BníqõˆÕ£e\n®Û3„€ÜÞãê'Gû>´K«6Ê~µœ!·÷¸ú ¹\Îz €ÜÞãŠ0nu;6Ì÷ª!¦!„R ¯¡“Âïu³Ù l®Û{\q‚M§yµñ–äÙ¨0¡$,ã$€$“ÂïõYã ^Ûx\q…D6LŸI2©³ù•@ºQZµ! ¹½ÇU%û Ó¼Â(§“¼ê‹$ Içƒ ¹ƒÇöÛ†i^Ê©¹‘$I¶I2,OÈP§ô!Ûy\qÂp Ó¼’°}‡è“î̯x …¤óÁŠ…ÜÁãŠJº;”Ò“:÷+N‚5’¦ †ÜJרÚÈkl±‡ Ž<ÛCFz\7n`ø§Äû¹“rÈtè”9$;q€ ´×ƒ€ÌèÅeè¯&‰rÈ$úûW¢2 ÉÐ^sÈ4$C{Í!S‘í5‡LE´Wö„’¤øPr€JÂCÉRx(¹@Š%HÑ¡ä)8”| 3ìw (»~× 2ëw *JN"ùC½ö.3 ‚ 4Ø Cú 6Ã~ƒÍ2ä‚2Óe¶!ÝÁ'‘óÕ~3*ßšžYrJj:}³°Tº "!é}‰œ¯/§!ç«mN¼ŸàÕ…ô½‘tídÎW„néþ u÷ xÕ£ë Iúe2çk“:zá_h®åN;Ák*®ÍUB X š+¨x”ÈùjuÏUyqSÆ¿¯0$d¹DÓ*LìJm® ÅJév̸ÎW4;HuÖÿŸM…dÑf¦eÎ5Ï©¸OU—2™óÕBÔüé âóÔM…f™Æo#7dç«vÖ@$I–y½•>’q¯Ó>„€Ñõ¢…ûd‹öIœå¡é“2CÆu¾¢ïFU°³†FWœå¹Yy”2¡8¯IXEÉH[ANÝßõZv¹úÚÈ]ªÈ!¹ì‡*rH.{À¡ Ù½¸,R9dV”CfEýrÓGkh;6ÒIEND®B`‚omniEvents-2_6_2/doc/doxygen/a00363.map0000644000076400001440000000043010240451505017654 0ustar alexusers00000000000000base referer rect $a00043.html 221,8 432,32 rect $a00046.html 229,56 424,80 rect $a00047.html 206,104 446,128 rect $a00054.html 253,152 400,176 rect $a00061.html 258,200 394,224 rect $a00062.html 232,248 421,272 rect $a00067.html 208,296 445,320 rect $a00076.html 228,344 425,368 omniEvents-2_6_2/doc/doxygen/a00367.md50000644000076400001440000000004010240451505017565 0ustar alexusers00000000000000694dd2f263f39c6da19062b356c5787comniEvents-2_6_2/doc/doxygen/a00365.png0000644000076400001440000000175410240451505017677 0ustar alexusers00000000000000‰PNG  IHDRÔtìÅ!PLTEþÿÿo___???ŸŸŸßßß¿¿¿ÿÿÿ/l:ZtRNS@æØfyIDAThí™Ïsš@Çó/xlÏvà˜Nmà˜4?ô˜&á˜'pÌ$™Ê±¨pAvoEvÿʾ]ü&ikÓ}HÞ~÷}|?4ΰE×f[%Põò(‚VfÏ¢V–Åb$¨ü¨¨Ò3ç>ƒÂèÊ…;·ü)ê²|ÞšûÔo4Ò¢ÙÚ^ãZ}Àh-…úÈ_só³¢Ù-¦‘óå/…jSú=òìc¤“Z »‡räS¥K=[Žƒ» >ŸzL Î~{—öyXË 0\DÝQw„‰ÚLP#gT Ë—²;ÆÔ'zêpÔzß(sö¬=!r“2ùrYqf1‰ÉÇÂò‡:1GU–  &ò« wö)1÷#j˜L^ €)Û½mP!‡£ÆG‡\§C²‰3|Ç_”(6‹¨“¯°™ ŠÖ¸Î§ àÎѾJ,Rņ=ƒj4LÒ†¶Ô夀VÒ«Ûk5qÒÀ"–TÅ> ½RC†ÍåƒW™NàÀþ9qÒ:Þ9L^YjWa%P5äù1ùf%?9sÙÛ"› ¡îK¯U¤‚…P¥WŠ*Ò¬ GݯU YŽ*• UpÃQëüº(((((((zTáGçùM jƒP5¶çK[”Ûtgž¥o`ú@WàNb̜Ӌ ªU»»œG袸ÓI‡œ­Ýtµ4 MßPC›£fÎéEuÊ_s‹³ÉÌn Œ jb½¤P‹–AÕ:Bs›*¸<€»/1Ò(4%?Ú3ëà‹QÈãc;45XÐXA2¬{Zˆ¼H¶r(‡aAÐîÀ%X«&(×p›^­%zÅX)#Žòx‡£Æ3' ˜d\ñ•Sô¡cÙŽ¤JjÀƒüEØmló±¨Ä}Ûn“%¨I-v-…¡btî‡éÝæU‘ •q`§ƒœ$ÈS(^ÀŠ5çvQjpTïöšëH–¡„„¢&R%F8ŠÅ"êó'„Q`'(TžÌ‡wŸÊŠKÎQ_Ë™ö ªÓ±qyµ¶”°’ôêÛÑ¡†+:ôê zuÅ{h§Kx¯žG±ðB¯4ÆZñÁ³¦Ø5/P7R3OC(ôÀŸµ¤±A®§…ÿ i“ói«¦¾Fÿƒ"Uµ(ú»¨_䈨ò¥èÜIEND®B`‚omniEvents-2_6_2/doc/doxygen/a00365.map0000644000076400001440000000005310240451505017657 0ustar alexusers00000000000000base referer rect $a00073.html 33,9 179,33 omniEvents-2_6_2/doc/doxygen/a00378.md50000644000076400001440000000004010240451506017570 0ustar alexusers00000000000000f0efe85d36b1c7860bc22fc94a2c93c4omniEvents-2_6_2/doc/doxygen/a00367.png0000644000076400001440000002036110240451506017675 0ustar alexusers00000000000000‰PNG  IHDRî/@e%é*PLTEþÿÿ¾¿¿ÿo˜2Í___???ŸŸŸßßß¿¿¿ÿÿÿp¨ÓàtRNS@æØf IDATxœíAsÛ8–€çlÿ‰­½î)s^¶rœ\Û•ë˜tyÚ::'ñq&“’uìΨ-gÒ=‰Žî$ŠUµU[¶E‰ªÊ–mY”‰ÿ²x)‘< HÊ|Žññ=€ùøô;r?åwE7  ©¹ï—ÔÜ÷Kjîû%5·aqŒÉ4æåÆm®µ5·A©¹ KÍ]M!©¹ oí[çpUäN=Ç9Uv¿Ÿ4š K¾Üîoï{«²†×é„VÉ]°r»÷ó³5 ÁÖ rÏšðo%^/Rg¹êr²¦!ØZAî»>Y »­ÑÎÔÏ{„noæ4¼Ö99´&}¯GÚ´2¾×píÖ¤ ÕÏ!M¦%_nºãÆ1¹XL9w‹¼&O;§^óµèh>œúsö¼Ç _Ðõ£óŪWØÞœ›ÀMl6®½Þsºòš™¹7òk/vF¬°OìÛvϵ¡z…¹¹Ÿ‡¸{ÔO]Ç™pîwûPoNÝ€’']òîYÕ¹Ù¸ãž?oÒÎÝŸ¡-ïòBòú¯dLªÎÍ®caîN§C&}Ú•8÷˜÷ïÙ€^ÇX!ñd|Sun6o‰öï ò= ÝM ¾ûã9ùÓ¤É ÉlHvO_BõÛqX“a©ç©†¥æ.¦Ô܆¥æ.¦ÔÜfåeLUu¸¯¯ÊnˆÝé„+-·Ùwá¤UôDôHÇf¦σû)û·;ZÉ^-¸QÊËÙÉ;ž÷€÷îèì/N’nAêrÛpm²i¶î&¿œ xFÈD÷¾¿1Þ=%ÝÞèˆ<ŸÎÏ>A5Òš´g“cHÝEÆë™¹ J¤Èƒ›þõÜóùù| I·7¤Ùší4.Sb{íiÓ›¼=ò^Ìß6žœôÞ“bÛ®=õ 9_Lw:¯zO;§ä²V¯hªDB;åÆ=uYÞ1¯ÇƵ¾}Ûözó#ž€¨Ík;ÎeÏë{½Åðä¹ë"ö“ùÞÔ¥†‡j=×°Å×dQ¯Õ¢ˆäÌÍü<Ä úI—tgȸ/_°zPÛÝéÍÒtûÝí›éâ‡}Æýî™m¯ã8“åˆPrn×âܯÿJ<âö87i±zœ›Ùû€,N›Ô>Ð}¨@µ1aöž’Ž;ã=ª¼®cîN§ç Èlïmƒûy?èßÀ ýûy·iºìÙoÀ½Ë¹olÞ¿„Üi ž37Ì[bý»9²ÁñW«ñœe^Û¿¸9š!M—½QŸŸì°î°{ú’çM1w¶›Ðyp§“'ëEoèÅ Y½¥}ˆ2r»ƒõ²ï:‘ùÏVrh¬—ÍÂÙv×ÔgzºVîê-Ýý·„;Ëãóš[ªÈÂ)Þ,·þ}¶Õb¥¹3Ä™åÞÈóýf øÌrkJæGVêãÊ9Yƒæ‰«¹ æÎfiÕ. 7êmc¹Xz\-Vœ;u$wÁÜYõÞWn½†•„ÛDR5-åáÞl¯¹‹ä6“.RGÁ6që¼ÜfB ï+·NÓjî-àÖPRs×Ür–nktÛ±%[Å­óÂj±æ–¶¯[Gjî,b¥9ÞpãµÔÜÛÀ­ñ áj±æ–¶­ZKjîͨ©¹kn¹K¿5zíÈ$–þñjni;°šõ¤æÞŒžš»æ–ïo¥hV;²‰¥}¼š[Ú¤bM©¹7£¨æ®¹å»[iZ£ÓŽŒb靿–¶§WWjî¬béoK¸qšjîš[¾·µVâi¾bâý¡$50/nÌ6 ~;,LÝš»æŽ•Çd]mÍ]¬ÜsnÔ…Ì ÷Ûð«éî”^ÝÎ…­sœ=aA×R/$U$«*†Ûý­ó}oUØð:Ð*¹ V¼ÎÏÏ¢»û”Û=íìö“«HVU ÷¬ ÿB¥½h¥Þj¡ß (w\GLɪŠá¾ë“ŰÛíŽ —$.!ä€t!›ä¤:´&}HfÂ0ǃ™Ól‘YÓµ¡€º¸MÿP.KWB5ÌϬ”iä)©–ɪ@akÒ&ûŸXŠ+?YU1ÜðwÚm7Ž!—çn‘×äiçrRy½Ñ|8'sºàþ@.ûßuf?/†7GPàs3Mt hðÚ-VÊ4ò”TËdU ð|1½9|kCŠ+?Y•—ØÂü¹I—eݲٸ6özÏéÊknæ‘_Û¡ãߘ¿w¿´Éà® anºÅOYÅJ}’j™¬ Ôõ\û®Þ2?‡Û±inîç!î S®ãL8÷»Ì,¬£Óí´Þ.KR+?_N¹†ÅËKn—§¤Z&«bêžA±yŠ«0wãZŒ{þ¼I¦¤Ã¹ûóኛÙûcƒ¼ÿÖçvm\;òí½ -VÊ4ò”TËdUðCÍÏìÍR\ÈÍ®caîN§¦žvü†ý›qÓ^|ûfL¼/Ï€›êØ…ž¤¬‚R¦‘§¤Z&«bênlÞ¿!ÅUÜlÞíßaŠÏÐÌÛñj<nZ¼CǽÙsï~²ƒy O?eÓñœ•2~Y¬ ´ìž¾äãù)–;•Ìvž÷"Ù(«Ä}"™ž)evøSd¦Äÿ«÷B8…GË~8+m•¸Ê=ç¶0ukîš;V“uµåâ®Ösçtl˜Ûˆ<2¥ÈBÕ* ÷CSŠ,T­­ã®X|ËõCCŽ~_¹-\µòprt WmÛ¸±ñ%â6âè²^Í],÷ÇF&SsÏmÀÑ-lÅíâÆGƒ•…ÛÌ ]³æÞn Ç­â¶ðU·‰['Æu‹¸åßv¯¼Z¬:·¥Sy{¸õ"¹ËÃýM¶Ýµ¼|‹¸-½êÛ­û¾Â–pkzy9¹][¨mìq].QnE j\,í£•”[¨“úG+·×º€P=ÊÍU!T‰mê¯Pʾ~5Žº”Ø%⾦܇'97{¤ _³_›:š†Röõ«¡pTuS%R.îÞâsˆ¾VG,Œ3øzÆe8jÐÒT *7Ê}?_Áר²¯Mýøë’;Žê74]{ÊÅ övm\; ìÝŸ³RnïU8*ogÊæ”‹›vèñ ¸Y *ôoöµ©ó!”2îP8*kfÚÖ”‹»u!©Ëy‹ÿíª­IJw(•dÀ.wW]+*Vê£Uš;Í…Û—Òppç[½]2`—‡[ÿYì s§š¦‰ö®wú¡œï¾Z¬wFìªrgÅ®(wfìjrgÇ®&·&”ˆýÀ$Ó…Û— r›À® ·ìÊq_™Á®·‘ÜW´Z¬·1ìjq›Ã.÷µª‚Aì*qgÿ¢Í”ˆû«|³¡Ü—Êp›Å® ·aìªp›Æ®·qìJp›š›Ft®ËÊmò²½RºZ,š;áÆƒÑËöRÊÄ-œ¨æàã eçÎ ;On#iä"I¾§š»æŽ•ÇĪ®¹kîš{Û¹äýª¶ôFD0yãî†W½¡¿4šÁß;¾ ååžüýË›³Ïîô˗Ъc+ãÖÇ_"ÜçA¿‡¸ƒÂ`¡¼Ü£cøòÌ0uhuê8Ÿ#ÜÁÒQ3Ä—òrÛ¯œËîpoÖ˜9³Þ.õs úgx6"»Ó½§÷vÏ}5=£?û önº7wè/ø9T9|õ7º¥ýãÝdÖ{Bö‡ ¤~NíèxÃÝænÓ™_zœ{Ïù³ó·/?N¨½gÝ ‡þôþyƸßÞ¥¿¢ÜPåóÓèøüýànrsqsA ©’ q;ðsçܱqívzöOºògf泙ﲗÿ=cÜg—]ú{â Y•W—Þ…g¿šÐ=á‡)©7÷ó7µ÷èOÞRä2î?¿‚zÔ 7ŒùÎäÎò*#BftŸÊq³q-Æ}ñÏcÇs¾pîW]€R²°½Y{ßù¥Šöf×±0÷—/_÷í¼ÿàÜ·¼ÞÒëØíˆöïíßÞ¿i•#Çi²þ]1n6o‰öï¹ó†ú9êñ­?ž;Ýc§ñSt<§UþFáöÛ?U[S†NhV¦”ôÜ!Šš›Ç=ò“å’¬¦øÛí'5·®„(jnRsK÷Ë}åFÉ7k ˰)’0^Ü«c®?4”’M(s,-åúa~äÅr]YÄ•#·ZÞ<÷7ÂÅ¥\Jº(+´¼qî°o ŸùçÆ¡Û4÷uˆUã±Üáž+æ†d²¹ôï"¹#–LˆM¥æ¾ÎÜ ¯l–;JšwMONàVxe³ÜQš¤w¨ –2>[[¢påŽWÒwÇ2f([—â¸ã6”ú²"@[_¬ÈÚ&¹ã&”÷aÓ·"käŽ[PÑ…¿š±m;ΡºÌzº]Ý÷ïâÊ!Û¨Á­èêÆ¸×­§´§ÉkYmcÜëÆSû±ÁÉKQÜÛ©¹ ÜŠ­oŠ[`:•1ƒ¯‘mˆ[Ĉ¯ÜŠlˆ[d8ÌuÊ”Á­xÁf¸…vÃp2ø:Xɹ ]íµ’Íp ÝeK#“6×F¸n(-—ÖS°­J„ï.¿y¿Müogߣ.–¢¸ÅΊãž³.iøK_ Á®Ï½,Œ‹µ^´ î_]˸…'m¹y1Ü "ÂÚwÂØäÛ{ÿ‚t[ç¤5i{ô?ø97?=­I¿KùFgMÈCIýœV"ãÁ¬9"³Én¯ÛíŽÜ)ìkü¸‡&6ÚÝž4ºÍä|1õèðû´sºÆ=šû²sêÁî”V"—ý»öS²ÓyÕë6ŽÇ.Ó°&Bª p'^Š÷]Ñïö¼^ϵá‹ìáÇ&¯»ñj#pnØôËv!§îk2&È1n¯K·v!¡°Àå…mÏŸ;ùJÄ€ ¡@ôîYÀÝqœI˜›õ‡w™ŸOI×£ãv×µi%b“}ÇiÛ´\Â-~ù°Hn¶…Ú» Dc²´÷”t"#œŸ>øy7doZ‰r"·M¹½˜òçNžq1î›Ã· Æ}³ä~Ú9Xãχ^ŸöïÈ+Ìú÷±S2Ÿ²þÈÐòܹe.vJ`<§Ü»§/î™ÓŒpƒ£ÓñüfrϛĆôø£-OäNBÊ[ö‰ ùik5Á™^~]+¡?n©Æ5‹:7 ‹]nòèÚ7;Gn­+îµòå) 7;?n͵úmõp¡]*îŒ÷ u°óãÖûÄÌ_Ì¢P3¯pnÜz$¯…*2¥[ZÇË[û–w&ný$Ò¥áfäÒíÉg%E6弸1n¾ö&ÿÃ?ÊÞóOÜø Ej€"¹Ó',ÀÊÆ¹Qn^sç%çF]Åjî¼dÓܸ«Øýæ~뮊ܩ—±^þÖy!ˆ@î.ÿÍsã&©¬Uîoï{«²†×é„VÉ]°²VîžvvMྠA(…sÏšðo%±@¬åêZ9츗À9‚PráFNRY«îúd1dáÄdtÖ€4BH·7s]|6hMú<¬Û†kC2­x6 ;ººD2ÃbÉ\Ÿëp{°À‰ÉÅbʹ[ä5%³øäÞh>œ“9³7]:‚8dZ‘žº£K—‚HfX "™ âF~ qC¸!±‰ÍƵ±×{NW^s3xe('ömâmËJ ]ºDüHfX "™ âFÞsùyˆ»Gûüã© £÷»}¨Çú÷“®Ëã))ìx8¥Ë~$3ìD2ýŴ×bÜóçMº±Ã¹ûó!ÔcܯÿJx²ÍÇ5ÆíG2ƒµƒHæ p³ëX˜»ÓéIŸvÕÎ=öû7”{Ââ”î×1Ê}³ä"™‹áÆÞZ[Í[¢ýû‚|OýÀiÍí8Ï¡|6$,™vô±?o±‰É ÜA$³1nE”LTô¸ó”r£ï o7úÖZ>܇NmTGÈ}yËì}O¹ñˆjî¼$3·Æü¾rã&ÜìO|zðo²§ ù<7È…[(’§E5GÄ8w¶Ä²§ƒFóTa¹Ñ[–ÖÉŸo/7‘>ý/7w¦N(}^7ºƒgâ¾–=/5w¦;òh®b¸‘Žž‰û‘4j±ÔÜ™†sy´¦æ«rAs#=C÷†è\Y~àmåVDc›ÍŒçF9z7WíZ7ÊàÛÈ1x7Wíj´{ëpc_Ós¯¥•KqÜjOOïæj/.[ééé¹ÕŽbòÓ·&·ÒÓSs#­"¹Uà©}Q½£á<ðšÜ ðíå–Žm©/±ˆ‹æ–½Qžšá'f‡s}nxÚ¶aΗÙa-·<-7‡M½E îdð´6AìWî¤×X¢mc±£î«Ë¾Zß7¡=Öu0Q»*sîRRq'¼É"à>yüãX©,Ø/7*sîRRr MmkóSöO!nõȇʜ»’´Ü¢ p{­ dÔšü £B:AÑcq!hgtö§Möω÷ÞïÌÍgNÓ¥{ÌÏ>±HSøÝ?rS=ðËj à(<¬t!3çšà^gmóO÷hþF¡Ý³Ã·  å)o;çóóùt¶wÒð^÷Nç¢M½4¥¿´Îãi¨ dÖ]P«ÝbÜ,¬tá2çšáŽƒsîÞâ3ãæ±£Ü÷C?и§.‹¾y¾¹¹›È¿`—%IµyhÞü0àW‚̺  6µ ãfao  —9×wltãÜ”—~d±„ÔÏßu oOy˹»Ž3 Æû®Íz³½øa?à¦u>O#§Nd¶/_¬¸A*s®1îèèöˆ7ŽÚ›®?gf§ƒÚw½yÊ[ßÞÄíE¹ä@ñúÞÒÞÄ턹!³®oï¡~îö¦º0™s rGLιiÏl2æÜ'{?ŽYÿæ¦^ŸsÏö ,̽Ó9àÜ»7­ôo6@f]Ч¤ß"ô(œta2çå^MÞxó!›íî'6ž7›·ÀxN›ÁSÞrn^:_l<§{ÜLv†>7­ã†¹ƒñœn¢ã9…s³2uæ\ÃÜKpέ—Í–ÉÆ?{ƒdçÀï·þˆE†~«¿û£HH©H¾‰äÌ5"&¸9x~÷˜r0·nž·á[-LÌpSðô¯TŸ¾Í…*1ÆM®î)7ù}ê=7û@ÐcÜ_­´{*¸s1·9îo”)K÷”oÎÅܹչZ÷”I>æ6É"kN°gê­©Å7Ÿ[¤—’å1g1Ë \Ús2·1î ¦—qçencÜK»èƒË¸ó2·yn}pɈ›¹sàÖÎ –Ì-‹ÚÌ(†¸#†¹Ò#OæÎ;nÍ+¹˜û:·) “|¸õz¹Ð¬U’[\8hSîÝÜ· éøN.â¾~ø0OsçÈï䢕id3JŽÜh“ ®Ò×ê¼ÁÙÄ w’Kâ®hÛÇsv·:}nF1Ã-›O>P’¯ï}7ö¸Ý|mtÈÛËMq+>6©œ}ͲySçÂýïy *\ÊÅÖÿ#^ ÿ™¶½¹pgh¦ÎqÔûýŒÕÜyKÍ­-57IϽþòÖ ÓÿBÖ<™jatuDSBnlú_Èö+‹PFWi€KÈMÿ¯ytu ¹±é!Û/|±ýZt5äNŠ®.±Ÿ£ÓÿBåï:$] ù€“¢«KÏHÿ lòžÄ£«!pRtuI¸cwB~®NÿëgûeµÂÑÕ~>`qtu‰¹±é¡Þ‘oïHt5Ï,Ž®.176ý/dûíççþ GW³|À ÑÕ¦¹Í|ÝõjÞ‚HÿËæ-~îßHt5+Kˆ®.3÷&¤æÖܱ»kùr‡c¶q§Ø6ÊmèH57+Ž-àNeðØíï*r§2ø=åŽ?$ÂÝó§òùx ÷ç$•£§ 2“¦ÎÌ_ÖÒ`YÚ*ÒpçÿÀS!Åp?T-nβƭïè)¸ 7· Ý›¥«"-·þnÅwš˜árk;zJîBÝ\”ÖÐÒT‘‚ûáuÁæ.†û!íàÅš[Ä­ëèÚÜýß"E”¾ÓÒS¡ËÍ 6·[Ïທ±üÞÐaºVKGƒ&Ç×Ü^•Ñ!·–Á5¹Ëž×ÒР&®L¼!·CÇàZÜåèÜ$ñü[x :Ü%éÜ$‘[Ãà:W¤Ò`'ö7 ­Aƒ»èÉJH’¸ñÇsçú¢Œ¦$ޝVš;Ç·õ%‘mp4M™°%×Sì[PXœ2y¹taá4 ¹KååRn¤§#yÊ…-7Z( 8 ÌütÆb»l¾’"‘›ŽÈÚƒ28®Û¢æ§w¿Á_ŸûFV3»Hí`! ¸qóÓÇðׯTÍ,RnL”%lR‚ˆ¦xÖ`ˆZ}ßêµÉþ©í²².Kœ›ÈûÂÓ1Ü˃ìtN!5ž5˜E­¾ Ÿf͛÷¶Ëʺ,]pn¢o,¥­\õò/Fg fQ«ýÅt>½ë»¶Ë3ê²T¢¹‰‚[mp5÷õªsódÀÝxÖ`µ:sœ‘×#¥àVÏÚ”Üá Ë€üØ;œ5˜G­ÞµÉ³²Ø[íéJîðõ}§sÀúw,k0Zý@È1ëߥàVyºŠ;ò™;ÏãYƒYÙSB¼öþ§’p« ®à.Ñ­†ˆ¨¹qùŒ¤\ÂB‚˜7Ë=]ÊÓTÉ€7+˜Ï –l£”»<÷ã‚á–\†V–‡A5Í’l“| -ÍC ¸eC›„»¼^ŽuE‰§'s—ØËѳ·$r—ÙËÑÜúß9VžGaBÁ:c¢§'q—ì>b\Ð0éƒY_Yç§àŸp1wiç§h º–°TÈ]²‡ÑàmBÂÒck]d…c›±ì›hN.¬µay©',¾hµqÝÓEÜUÀÖläš§ âÈ+­ÛJ+¶¾Î]îééR4¹ã¿Ž»ùu¹§§KÑõÊøw)ƸËáöE»7Z‘µø{UÁÖçŽzzŒ»n_ôG߈§Gß—(ý¬|%)®:Vh9Â]òÜIÁ™½„<»JØ©fá.â®vºÙU¨‹¯Ü¼ó´@Xk]ùÃréÁÂÿh+qr ãÀqÔ€š{óRso^jîÍKͽy) 72³/-ßK*`™|™Wù~ËÁÍìëu~~Q*"Uæ_²Ì÷[nlf_ºÐo €[‘ù7$åàÆföe˜ãÁÌi¶ÈάéÚP±µæ—îÉ2ÿ’ý‹Pæ_YMöÏé~¤l~ŽÎìÛs —ûsöøóbxs@i~!Û/(›¾m¬2ÿòÈêÙÞIãz@¹™}:þ!¼ÖýÒ&ƒ»6pnâBTV©·®2ÿòÈK¯7?ÃÆrqc3û²ŽnC85Ù%äI—ŸæôuiÉ*ó¯qê8CqZ.nlf_ÎÍìý±AÞës»<Í/Ëõ:;òíígþõíMû} ¹±™}}nÚ¿oߌ‰7àã¤ùeƅ̿пW™9÷Íl/giIDATlÊHÙ¸±™}}nZ¼CǽÙsï~²ýÁ›Ï[èx¾Êü˹y)w*™5Òï[eîÅÔL&æ^ˆ¿œC²ƒ³šöW˜;“ÔÜ›—š{óRso^Ò=/1#…sßC©¹ï—ÔÜ÷Kî+÷ÿù— Á”"óIEND®B`‚omniEvents-2_6_2/doc/doxygen/a00367.map0000644000076400001440000000032310240451506017662 0ustar alexusers00000000000000base referer rect $a00046.html 246,345 441,369 rect $a00073.html 176,9 322,33 rect $a00062.html 154,86 344,110 rect $a00067.html 8,526 245,550 rect $a00043.html 164,436 374,460 rect $a00064.html 113,164 385,188 omniEvents-2_6_2/doc/doxygen/a00380.md50000644000076400001440000000004010240451506017561 0ustar alexusers000000000000009dd6f1a6cd752204327d848075fcc548omniEvents-2_6_2/doc/doxygen/a00378.map0000644000076400001440000000005210240451506017663 0ustar alexusers00000000000000base referer rect $a00042.html 7,8 101,32 omniEvents-2_6_2/doc/doxygen/a00382.md50000644000076400001440000000004010240451507017564 0ustar alexusers000000000000009e51559f473c44a707d9dcbcf41059c8omniEvents-2_6_2/doc/doxygen/a00380.map0000644000076400001440000000005210240451507017655 0ustar alexusers00000000000000base referer rect $a00044.html 9,8 161,32 omniEvents-2_6_2/doc/doxygen/a00384.md50000644000076400001440000000004010240451507017566 0ustar alexusers00000000000000a4f4ebfd9362e748d028f3963b0d3e9eomniEvents-2_6_2/doc/doxygen/a00382.map0000644000076400001440000000005210240451507017657 0ustar alexusers00000000000000base referer rect $a00045.html 8,8 186,32 omniEvents-2_6_2/doc/doxygen/a00386.md50000644000076400001440000000004010240451507017570 0ustar alexusers000000000000003951d89f0bcd7c57f7213734f9ab40c2omniEvents-2_6_2/doc/doxygen/a00384.map0000644000076400001440000000005210240451507017661 0ustar alexusers00000000000000base referer rect $a00048.html 9,8 225,32 omniEvents-2_6_2/doc/doxygen/a00388.md50000644000076400001440000000004010240451507017572 0ustar alexusers0000000000000008aadb5fb714b5282155b4dac01c3c31omniEvents-2_6_2/doc/doxygen/a00386.map0000644000076400001440000000005210240451507017663 0ustar alexusers00000000000000base referer rect $a00049.html 8,8 184,32 omniEvents-2_6_2/doc/doxygen/a00390.md50000644000076400001440000000004010240451510017555 0ustar alexusers000000000000003ef3a925c9046f83ea2b563673e90d1bomniEvents-2_6_2/doc/doxygen/a00388.map0000644000076400001440000000015210240451510017660 0ustar alexusers00000000000000base referer rect $a00051.html 9,32 139,56 rect $a00052.html 190,8 411,32 rect $a00053.html 205,56 397,80 omniEvents-2_6_2/doc/doxygen/a00392.md50000644000076400001440000000004010240451510017557 0ustar alexusers000000000000003179a98715eda26c671a1389a36f73e4omniEvents-2_6_2/doc/doxygen/a00390.map0000644000076400001440000000005210240451510017650 0ustar alexusers00000000000000base referer rect $a00055.html 7,8 213,32 omniEvents-2_6_2/doc/doxygen/a00394.md50000644000076400001440000000004010240451510017561 0ustar alexusers000000000000004afae554ef1b4aed9d1fccda8f5b08e4omniEvents-2_6_2/doc/doxygen/a00392.map0000644000076400001440000000005210240451510017652 0ustar alexusers00000000000000base referer rect $a00056.html 8,8 202,32 omniEvents-2_6_2/doc/doxygen/a00396.md50000644000076400001440000000004010240451510017563 0ustar alexusers0000000000000093a089740470acb4090a2d643af60287omniEvents-2_6_2/doc/doxygen/a00394.map0000644000076400001440000000005210240451510017654 0ustar alexusers00000000000000base referer rect $a00057.html 7,8 253,32 omniEvents-2_6_2/doc/doxygen/a00398.md50000644000076400001440000000004010240451511017566 0ustar alexusers000000000000003a72c105616d88d6d267beb0c251b1d6omniEvents-2_6_2/doc/doxygen/a00396.map0000644000076400001440000000005210240451511017657 0ustar alexusers00000000000000base referer rect $a00058.html 9,8 243,32 omniEvents-2_6_2/doc/doxygen/a00400.md50000644000076400001440000000004010240451511017546 0ustar alexusers000000000000005ae5daa3af429bf63b0be5aafb21f7d4omniEvents-2_6_2/doc/doxygen/a00398.map0000644000076400001440000000005210240451511017661 0ustar alexusers00000000000000base referer rect $a00059.html 7,8 133,32 omniEvents-2_6_2/doc/doxygen/a00402.md50000644000076400001440000000004010240451511017550 0ustar alexusers00000000000000d89de3a96cf5ad968ddc1258ecbc1cebomniEvents-2_6_2/doc/doxygen/a00400.map0000644000076400001440000000005210240451511017641 0ustar alexusers00000000000000base referer rect $a00060.html 9,8 182,32 omniEvents-2_6_2/doc/doxygen/a00404.md50000644000076400001440000000004010240451511017552 0ustar alexusers00000000000000861e1a477d85dd54d9353da1df6ec22comniEvents-2_6_2/doc/doxygen/a00402.map0000644000076400001440000000005210240451511017643 0ustar alexusers00000000000000base referer rect $a00071.html 8,8 384,32 omniEvents-2_6_2/doc/doxygen/a00406.md50000644000076400001440000000004010240451511017554 0ustar alexusers00000000000000a9d9ddf4cfc2bc3916273c6f391d5313omniEvents-2_6_2/doc/doxygen/a00404.map0000644000076400001440000000005210240451511017645 0ustar alexusers00000000000000base referer rect $a00072.html 9,8 182,32 omniEvents-2_6_2/doc/doxygen/a00408.md50000644000076400001440000000004010240451512017557 0ustar alexusers00000000000000a3bd0e671688427c7746e3f6e414d6edomniEvents-2_6_2/doc/doxygen/a00406.map0000644000076400001440000000114510240451512017654 0ustar alexusers00000000000000base referer rect $a00041.html 250,8 402,32 rect $a00068.html 497,8 809,32 rect $a00069.html 541,56 765,80 rect $a00050.html 213,56 440,80 rect $a00065.html 545,152 761,176 rect $a00073.html 9,272 156,296 rect $a00043.html 221,440 432,464 rect $a00046.html 229,104 424,128 rect $a00047.html 206,152 446,176 rect $a00054.html 253,200 400,224 rect $a00061.html 258,248 394,272 rect $a00062.html 232,392 421,416 rect $a00067.html 208,296 445,320 rect $a00076.html 228,344 425,368 rect $a00063.html 538,248 768,272 rect $a00064.html 517,344 789,368 rect $a00066.html 524,392 782,416 rect $a00070.html 520,440 786,464 omniEvents-2_6_2/doc/doxygen/a00410.md50000644000076400001440000000004010240451512017550 0ustar alexusers0000000000000031baa4544f2d7bb1d9485bb7cc3bca7domniEvents-2_6_2/doc/doxygen/a00408.map0000644000076400001440000000005210240451512017652 0ustar alexusers00000000000000base referer rect $a00074.html 8,8 154,32 omniEvents-2_6_2/doc/doxygen/a00412.md50000644000076400001440000000004010240451512017552 0ustar alexusers0000000000000001603006ff0f45196c1b8b9731c14cedomniEvents-2_6_2/doc/doxygen/a00410.map0000644000076400001440000000005210240451512017643 0ustar alexusers00000000000000base referer rect $a00078.html 9,8 171,32 omniEvents-2_6_2/doc/doxygen/a00414.md50000644000076400001440000000004010240451513017555 0ustar alexusers000000000000000efb52a18bd9bc5fa03311ac873eb469omniEvents-2_6_2/doc/doxygen/a00412.map0000644000076400001440000000005210240451513017646 0ustar alexusers00000000000000base referer rect $a00079.html 7,8 133,32 omniEvents-2_6_2/doc/doxygen/a00416.md50000644000076400001440000000004010240451513017557 0ustar alexusers00000000000000f8ec79eee4c3c60d6a38a265c6ad5216omniEvents-2_6_2/doc/doxygen/a00414.png0000644000076400001440000000102510240451513017660 0ustar alexusers00000000000000‰PNG  IHDR²'Y«PLTEþÿÿŸŸŸ¿¿¿___???ßßßÿÿÿçuÀtRNS@æØf¥IDATH‰í–=oÂ0†û+¨2Vj*e¥B"#âc,#­Z‘½4ξ˜ûþmï>$(R•‹—ø}ýä|¾Dy€[ÅCE®È÷!ëäÊ! òµó­ÈÿŒ¬&«h/2Àî±JV¥ô@ r˜ÐÅ"%ΧÝïá°†‡Ä†PßE<:†’Ûfìƒ纻Usµ°2«˜º€ì4ÔÌJmǸW\·µ‡^ 3ßÊ–ußÃ9ùhwî±lé¢Fä4éãP‚¶RBÆ[­bK¡ûÍœ,G2H»Sk±ÀµcƒƒW;}MX¹è Èp\ ß”è”çlÈ‚.éÈœ Ë·ŽŽd@©"9_fg®Wƒ9=›4"shxðªb^N6Õ8 “­Å€%ÉÈ7ŸÆÇšÐjá:HC2˜¡[­ÆçOð”üòŒ¢Šr2ØÆ—}íådÒŠœëJ°¨”L]wDÃH{v¬¼n^çtLädÒ4ÚLÇJ¬ËOÞ”“:÷Ó@oaZb²ë ÉaòÄE ?îÁ®7`PJ¾bTäŠ|OòÍþdnùoÈ¿ ÎÒ„æ“ÅIEND®B`‚omniEvents-2_6_2/doc/doxygen/a00414.map0000644000076400001440000000005210240451513017650 0ustar alexusers00000000000000base referer rect $a00080.html 9,8 169,32 omniEvents-2_6_2/doc/doxygen/a00418.md50000644000076400001440000000004010240451513017561 0ustar alexusers00000000000000a632a35c8fe54070c30deb36fa821d9domniEvents-2_6_2/doc/doxygen/a00416.png0000644000076400001440000000052410240451513017665 0ustar alexusers00000000000000‰PNG  IHDRb'€âPLTEþÿÿŸŸŸ¿¿¿???___ßßßÿÿÿP@ç(·£J­{,ÄÝyÛvMjÝê"þOëÏñKƒ¶ÑzñoÁÒ†!/Ñôú½(ÅÉsåU„ÞÇ”TŠyh²È¤Â©¨/‹ï]EÅî"/`úUt•§Äëú®ôÄ(DºÌ>:\ìC’Y½€ÑÂØï>+&Âm+Äø9Ñ4½ðº^` ˜Py¡Rì&fçb‹Ù‡ç–RdÞ–«Ï{(E±Zõ,~)€¿*¹TNù×ꨅ"Ý­ÿp­ÒñôV#óêwIEND®B`‚omniEvents-2_6_2/doc/doxygen/a00416.map0000644000076400001440000000005110240451513017651 0ustar alexusers00000000000000base referer rect $a00075.html 9,8 89,32 omniEvents-2_6_2/doc/doxygen/a00202.html0000644000076400001440000001177310303671736020061 0ustar alexusers00000000000000 OmniEvents: version.cc Source File

version.cc

Go to the documentation of this file.
00001 //                            Package   : omniEvents
00002 //  version.cc                Created   : 2005/05/11
00003 //                            Author    : Alex Tingle
00004 //
00005 //    Copyright (C) 2005 Alex Tingle
00006 //
00007 //    This file is part of the omniEvents application.
00008 //
00009 //    omniEvents is free software; you can redistribute it and/or
00010 //    modify it under the terms of the GNU Lesser General Public
00011 //    License as published by the Free Software Foundation; either
00012 //    version 2.1 of the License, or (at your option) any later version.
00013 //
00014 //    omniEvents is distributed in the hope that it will be useful,
00015 //    but WITHOUT ANY WARRANTY; without even the implied warranty of
00016 //    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00017 //    Lesser General Public License for more details.
00018 //
00019 //    You should have received a copy of the GNU Lesser General Public
00020 //    License along with this library; if not, write to the Free Software
00021 //    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
00022 //
00023 
00024 #define NEED_PACKAGE_INFO
00025 #ifdef HAVE_CONFIG_H
00026 #  include "config.h"
00027 #endif
00028 
00029 namespace OmniEvents {
00030 
00031 
00032 const char* version()
00033 {
00034   return(
00035     PACKAGE_STRING "\n"
00036     "Copyright (C) 1998 Paul Nader, 2003-2005 Alex Tingle"
00037   );
00038 }
00039 
00040 
00041 } // end namespace OmniEvents
00042 

Generated on Fri Aug 26 20:56:14 2005 for OmniEvents by  doxygen 1.4.3-20050530
omniEvents-2_6_2/doc/doxygen/a00418.png0000644000076400001440000000034310240451513017666 0ustar alexusers00000000000000‰PNG  IHDRD'D]óuPLTEþÿÿ???___ŸŸŸ¿¿¿ßßßÿÿÿðT‰tRNS@æØfsIDAT8c˜I0ŒX%3:p¸œ&ÌÊJ*€^LïÄ«dzy{ùÌHµvKûÌéÎ--3'uDâQéé1S©Ü’™ Ø>Ó‘€’éÍ„LéœYNH‰R¹(!%“:4±+ÁF¸ÂY ?LJß` æ:¢ØOIEND®B`‚omniEvents-2_6_2/doc/doxygen/a00418.map0000644000076400001440000000005110240451513017653 0ustar alexusers00000000000000base referer rect $a00077.html 9,8 59,32 omniEvents-2_6_2/doc/doxygen/a00203.html0000644000076400001440000000775210303671736020064 0ustar alexusers00000000000000 OmniEvents: version.h Source File

version.h

Go to the documentation of this file.
00001 //                            Package   : omniEvents
00002 //  version.cc                Created   : 2005/05/11
00003 //                            Author    : Alex Tingle
00004 //
00005 //    Copyright (C) 2005 Alex Tingle
00006 //
00007 //    This file is part of the omniEvents application.
00008 //
00009 //    omniEvents is free software; you can redistribute it and/or
00010 //    modify it under the terms of the GNU Lesser General Public
00011 //    License as published by the Free Software Foundation; either
00012 //    version 2.1 of the License, or (at your option) any later version.
00013 //
00014 //    omniEvents is distributed in the hope that it will be useful,
00015 //    but WITHOUT ANY WARRANTY; without even the implied warranty of
00016 //    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00017 //    Lesser General Public License for more details.
00018 //
00019 //    You should have received a copy of the GNU Lesser General Public
00020 //    License along with this library; if not, write to the Free Software
00021 //    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
00022 //
00023 
00024 namespace OmniEvents {
00025 
00027 const char* version();
00028 
00029 } // end namespace OmniEvents
00030 

Generated on Fri Aug 26 20:56:14 2005 for OmniEvents by  doxygen 1.4.3-20050530
omniEvents-2_6_2/doc/doxygen/a00364.md50000644000076400001440000000004010240666515017573 0ustar alexusers000000000000001668475992af652bf70478b2a3b00610omniEvents-2_6_2/doc/doxygen/a00366.md50000644000076400001440000000004010240666515017575 0ustar alexusers000000000000007475ed0e0fe5f5defce51b492728c50bomniEvents-2_6_2/doc/doxygen/a00364.png0000644000076400001440000000635410240666515017710 0ustar alexusers00000000000000‰PNG  IHDRGÒ²Yy'PLTEþÿÿr%™˜2Ío___???ŸŸŸßßß¿¿¿ÿÿÿÃÓ»ÿtRNS@æØf sIDATxœíM{Û6Çûò ö–ëúæc÷Ú4‰tlò¨±Žyq*ÛlÖö±õ*&‰»ëê˜M­—[m½:ô©M‰ñ¡v ,J"¥! €²üeÇ$Î?a†T$_1£Múó«¢[pd d d d d d d $ ¹Ò4Œs"Ï<Á™2Hò¼ÅZRÕ)«32222ŠB:q÷çüaທq§ø/œr¢½5üZמ—Yxckg¥|ñÄMÎ(Éÿ_ýE¤1å ^ì²élgTùðjÅÎìèH§•_.æe7¬_¯G+Ý[)_ÒÐçø›'îìñ0q,jc9øÅr¬NüYãLVÂ-Ɇ¨z<ô]×ξ4°ÞžhQȾ³ØÙ+*$5sH8bÀ€åºnbòÃ[^ËÁ/– H³pC§©Ö8S åĽiü¦ ëRcÜÁzPn‰Böî'6`TH˜—!€ù¶€A†Ârð‹åÒ3ö OÄ!U‡ÖÙðg3Z¾ˆBªÃµØi@&x) DNòšp À YÐdƒ*$¼’/@‚[ 0àUNÊÂD#ÌIxëá4°\@:­œöÙÀës§=ÈI/×8S å›ÉÅœtÅ^à…¬Š «{êTE!ó:¬ôù¬>¬i÷üfr)'UÁۻ⃱6»ºa9ú…r¬XkÀ‰ÏYéw¼ºUoœ#¸ºU×8S ;ò²dBw¦@wR g d d d d d d Dsòìï¦yÃñï)êê…DѵÊf̵£ÇM*Ñ!íþCe;fúë¡/)e ´}vt¸I§vU¶c¦» éZ¤‡·0ÞÒ@ÒoAwÒ®H¤õnR* $ IÉ@"!m_¼HQ!]ïjIJÈhûâÍ@"Èü/AAAAAAAA[é7©d d t7 -Ìzѯ;ij/ÍzÑ®;)°—g½èÖvBÚ»ÄY'8‡„O[ ?†Øp`6ÉDOk„¶’W9ý¶3>À9$|ÚJ8¡†Tåôq8ÉDOk„¶ÒÃôGÇ8‡„ŽþØ'™èiÐVBÂi%ßY8•D@º 78pN2ÑÓ¡­„„ÓJÞý„SI$¯:y†³^`Hùõp’‰žÖm%$>­¤‰SI$¸hÛ8«„“Lô´Fh+!á´¯ƒSIÂi+'U‚ÂI&zZ#´bÔÐã>VwR‘Ú:Hs¾. @m¤=nRië =Ðã&• $‚ $‚ $‚ $‚ $‚ $‚ $‚¶ÒŽ7©d d d d d d d d ´uèq“JAAAAAAA[iG›TšA 6~íᛸ"v7ÛKPšoâJôžÙF¼Ý[H€ Ûzõ(ó{̉d×@"Ø5v $‚]‰`w q¥ (¯Äš[Ú–½2øÎéZXf±3Pï­¨aùsºVÄî"$êJAA=f¥ H²W‚ö¼ˆì®‡DíŒÿ¹^ÂÏöR!‘W ²çFâ›)¶e¯ ´äw=$jgfõ¨È+acMÏ­²G^Õï¯4SlK]H¬iàD/†‹í}æ†ÍHÔÎ@=߃©×®ŽÛ¿ãgê-ö<u¥ Àö_³nãyý¥÷øbÒ¹9H€$ue ¨~¿Á‰^åËÉðfÿ¤›ÝF$rg°ò%Ö°ünýUPþífÿ´lyk!m^)ˆ'P\ÖåÜo³æôx$‰+a{øD/ÛïO~7 W :ƒÿ€A„„=bÖicÒ°Jv$êJA<žá8Ô+ñµ~ É^üò³Ï^aèõ…¡HÔÎ`½0(r’5y½gAMëu9RŠ•‚šÏý/evþM$Ù+ñœ„µ`ó‘Ä %@¢vëÁxœ¤ ÀH:¶ÂD›p @X)(„9iô~€‹%@’º2ÏIÐ2>Ÿë¦/rJ€Dí Ô+5À ÈIà®ôóþ \.%@¢®B‚âG0¼N$©+ͯnW|q¢=8Ì %@"/{„7“`0¼ºÝ8:üê6Ï´2^–xå$Hy¿2P²¶üµÛiÌEø>¿vË¢Éì‘D3»­GRJïÁ»Dðn ¼«‚”á]»?v…¾ž¿77õ­À¯7ÖHRÄ{´x¹‘ìÒßæŽQè_ê—+Kÿ¦æ°‘yLä‚tßÿªI™Ö„ÅÜOd.HaòXXµ(Óš°˜»ù 1éÑv-ÿ›Ñó·1'¤kÙ#Iþ×ÇKxsBÂ&0™”¤/×°+a£¼x $öKAŠËÁy!±kl¼‘›ã„­ÜØsC76×’zv-RH'·Áü„$]ºe^äÝMÈ‚$)1I„$qDʃ$¥UÒ^æHÍÿ!Éß’ I¾o— IJÈIF’oHåB’Ð<1›ßÄ¢$CÊ?ÐsC’ÿY:¤Ü)3/$K‡É‡”³9û¨d¡>rø\„J ¤2+@HC×½X€ä®JQ?Pj!õkn×êT¼²çzv  ¨|t;í+ +7®}RñkÃ6>€Éè¤ÇŽ*î“Þ‘3Å@1½²O8s¸ÇÉL‡•± ¿nhb¿æÞƒpƒàRµTuÇÝ@@ª¸ß»ÿlý<<:€ñâ]YWîl8ÿu'µµ>öžžv­Ëß°€SÙ«8pæ•ý©ÍwÏ/Jðû ¡‰3÷þ@rñ1u§mCaÓ¼ê^)î6f°&"17§?ûi¤·ÛÁL‹u7¯> 76ÿ¯ºWŠ«r°&"1'äŸ/=œiñv9ß’î‡k"ÙAèÎt2šNý 74¼Ÿ/e[G•'4è–ç£ßºœ¦C¾6ªôäª49m²dtî´/=è´$6E5W¼Žýd=Y¦S½§VϪMOoÊý™‰t§YGMüû;½h•!×Àê$Ù 2:—èqZ\´tZ’‚`SÙ MøqTG%¦¿4ÕªA1$òò!Gõ ׯ§íneÕmfZæ\³uZ’Bb/$i®HØ¹× R £G gï.½|· ¢¹nÿÔÑQ§†1pT$+$ (Ë×?ã•¶J!QÝË÷½I š«âFgtÔy½•8’p A¶ÛªÓAÓÓV™6WöÉ›ÓCÒ'q®¡Õs´ …„ŒŽzPƒôIÉ ÇEòN–úduÚC0ž^y£+9€Ñç£ëdÔ 4 ÇÙiVeƒeÿ´n|tç®G¬OÐg¸Ý?¹Ë‚ ‹(ûŸBÆKU3–HÜ!QÖ!)cÆ!Vªf,c¯ê,_\>âSM´8AŽ¿ž…¡8A $'H±ä)6| ’¤à@rH.¢ÉRx y@ $Hñä)>9d*’ µæ©H‚ÖšC¦!Zk™†dh­9d Šl­.KJɴʈCF¶Ö2q…Œ>€ä©(‡L[ÑGÉdž×•tð½(+Ùì5¾:8ȸž×•t0Á®Œðº‚ÄAÆõ¼®¤Ã†ë C5,$2®ç Ï¢‚ŵþ4i`‚Uð&V÷rÂÖx#aÍuÍGdžW€¬£kbqÅuâUð’S¾‹+$╯䅌áy…tG='WœÑ…ÄK6~…|*üXRBÆõ¼Búô•kqHj‚uÔÙ¯ü, rÍç,ꔌëy…të¼J-® &X€t4gId·¥‚“y^!4jq,0ÁRÈ’‰W ë“QÅ£ÀÉ@Ï+¤£7ȳ½^iôdÀQ'£ãž ‰W ]# ù˜…BRãr¦ WW¦þº5^WOÈ"78Èâš]` a Æ CÞd20Òf2¸œ©‹ËGk–¹‹dvý®G‘‹Ä²¸!qýM,HÑ_Rò€H.¢ÉRx y@ $ÓºC€ßZ9@Š${H ™Cî*Â'AkÍ!wÕÉÑZsÈ]€2´ÖrW%i­ü Ù_†\#“9¤ßZÍ ™*‡Ü]wrH–Ê!w×8x*@![Æ…Ÿd›Žÿ5H«é-ãÒ^ý¢fµÈʹ¹CÚŸÚoT?­ì€É×Ü{³’n?´K¿GAܰŸÃëÊ~Å|!§UøçËQC,Þ®¤Ã†§‘þ›5󼲆 žÔ‘=œkhÖSêƒÒœªàÅ¢^Ö©Al«ÝN}¤Q×#5¿âtÈØíà í6ÌßZ{,,â•§Mê|¤áWçîתœˆ?$|Ím*åF¹NU YG×è¤ý¶UGX= Y$’`~ÅéÄҪ†6Ø`Ÿ¨ÁñJ ‰ÓŽqF}ß>s.g½IMH¤v¦“gè¨çøÍ5 à€f†t¤¿4q:¢ö9ØmpÚ©¶Nm„ðs OÒ:è’rçh¨3o …¤Í5©/«m# yû'+IŸ|­@:…„ /L¼|ûÖƒ„•4’8 þàò‚·|M êâ ÉÀ³iWñÊ6…Ô¬ÞòúgH§°!¢E$ñJ ‰Ó:è77’*ºûV,$9„!Ûø0Òp÷:£C·OBºÓt ‰7„C†œ, ñJr¢“ŒÐ'UØŽ'dð²€2î“}ð²Â°ˆwýeè®>íA:d|º':*=¼ó ñJ ‰Ó ã]UØN,$MË¡·Ù„¼ Ÿçerö²¾frY9äî ]Ì!Y*‡Ü]AÈâß3zq¹¹(@¹KrGå.Ižâ)¸±æÂuÂqèH±‡Hö’=¤d)C YB’ã d )E B’‹R’1¤d )G BdQšÖÊR’@²ƒ¥ $CÈ£€ÄãNœÖšâíøë+aYŒÈô&VØP+ȸ]r¿!ãµÖý†ŒÙ%÷2f—ÜkÈñ8æ™À>CÆm­ çz}FèeÝw€" cž $›ëÕP‘" dìÖšp®×ç2:–ò(~ Îõ:¨¡s“ÎëZ%¿8ð,)R ÇE ÷H¹^u[7a^×çöüB†g-XR¤˜@DZÏÍ“Íõª¿¶NM:¯ëõDZµa¨¤H1€,bÈØŸ$ÎõzûòÞ„y]MnüK3KŠÈøßHúO¬¹^{œ…ÌëJ#I2KŠTúã- cÏõ:ý%õ¹}†ûäÍ,)Rr@ÆëUŸ læu]Œ®}$‹ ûdRcwù†i!Ç b”hHÒZãìú˜ü_ly‚^uâù•HŽYöóSÈFÆ¢+ýþB¢¨“èV¼—d(/…rÃQe?!“9ÞÜCyB¦v…×ô°V»_ô®¥Vó×/.§V“é¯ÂýtA¥ëÂYiCþ7V#å,FÍ5ëhõ"ZAÈ‘6ëú»Ûƒáªò¨~Ø )›‚Ÿë7þî>ó/_‚û¿X÷Û—ËÆ ÝÍž@þ‹üó5c,Þ:ÆHYœï dË0.FSõ5ª˜§Ü\ñ~K£¹ÑœSµ¤ÛoÕN›SÈŒ_Zÿ1zŸÔήÛWû‰Ï>ÌѤ?é;f£F!ûJÿ~Pÿ\²žcnVN þ9½1 qvujü`–jdß—HH~Ì®Ù%ÏÕ|X1»ý{ †t›æ™F_ ³ûëÈèu!û¾@’怄ýþ©gôRäóï·$_˜&¾sžÿhî$ <Ë?üÓ0Q—B§îƒsÄþ¯ óÊÜ+H8„„ ¿|éš-Üý:%Ú\¯hŸ|ÿî²A ûʼ*ï$œ ,õÉÆ,šT5ot}Rÿí&ï'û d×ödtMCRâÓº´ àý>jÆçÉq¼k;\ÅìC³+-û'ÙWyLÄéÊÀ¦þ-â@¦&úA¤g`]H )T»¹ ß…|eõJO-¤Pëæ2Ø|áóuÂZH¡ÖÍe°ù~2æˆJA )Ôº¹ 1_”Î1¦°q-#Ï@’ )Tº¹ i ãZ^ £¯®¦6ÖÀÈÇ“¤ Èk\˫޾]rDøe¬“h³òv0®åU_ñ¶øe¬“hoòv0®å ;­Ò·z“Ú RÔ@ëÄ2ÑývòÛòŠZ5çrzÑ*¿¾QïÐq°ŒubãwÝ2†åÕ0žUðIÎz7h®=ËX'FÎå$7ÜÈklË+‚™QÜh'&Ì ,cØxÐ…²@^c[^@’Hž¡ÙC5XÆ:1º› ɽ“òÛòŠÈlÚ¸Ož+Ì (cXÝ’ ”òÛòŠÈD¾•þ¤fõ`nØ@ëÄ2î­Z Âõ¼ŽU«{µܵ]ؾ»« f·ÆeaûZîË±ÊØoȘe0»6~{-¤PÝæ2rÈ]¿½R¨ms9ä.Šß^÷ïâòBIŽ”¬•Ïý±“ä™s(‡ÜMÒ<˜‘1¤,¡d )I(Î@xóÖ¡C˜ÊJÖSŸJÊ|~×Ýt83õJJö³gKpÿKÈC˜ìý ¦íß`óGiì¨Ãz(Šè›?¨hG×,§srƒxB†ºbÈ¿T`W)Öÿ–¸A†Œ¾v•"¡à ñT`W) h²v•"Þ+'^J]¥H8¤7ÁK]¥H<$¢]³@–àyÆ ‘ç?Em€ÓOà 5„®6Ô+$tÍü!O¦öSËN»x‹æÞ§ýËÛÐöŽŽì ÓÈé® Ï¤’g‰G¼Å JxÍšHI·¹Ò§Å×¥8ZéƒÔÏ¢N2X^»ïñÛ9ìLjO«¶î\£—ªˆ3f{­<_¬sGMh2AÂ|O¦Rn”¨?3)d]£“öX^uà>H]µDÏÚ÷í³é«Ï³Þ¤æ(ª¢ §qÆ:åûÉEK_¬C}”œ!×~Ä*À … =H}è¨çøÍ5 à€fÆéð¤{tgi¢Î¼é|,ÿ¬ Õ&Š·‘r£Á¢Us\7¡L´¹ UVÛ0FòöO²×¤sâõ8_‰x`_jç º}K g?Véà‹õz±LdàY‚´Î«ÈDm ©Y=ÈG!I$ÿ,£»oq·[’MsH$‘­ÊI!AÈv» Ö“ö…z}$î“/ï‡Èéà„7ø?g8q!KHŸl•e„$'á>Ù+Faï_†þè 8ùLÓ†¼oâ¦ûðÖÁl¯dtí#)!·Ò´¼’d©á[E8 Yw )l_è¶’4½øºégï!gQ§·•àm^Ü!×µ×»JQ™¾r]§,°«åék=d¶..‹þª‡*‡ÜQÒXsÈ%O2‡ÜQÒ˜ërÈ%ƒýWw„’=¤¡doq9H Úkn ÜQGK…‰¤ðPæ.É•»$yФàË Rlƒå)6”¼¼uã£Ô¦M>á,7aüÇĦ+®HÐ\÷9d Ê!y)‡LC¡•BníqõˆÕ£e\n®Û3„€ÜÞãê'Gû>´K«6Ê~µœ!·÷¸ú ¹\Îz €ÜÞãŠ0nu;6Ì÷ª!¦!„R ¯¡“Âïu³Ù l®Û{\q‚M§yµñ–äÙ¨0¡$,ã$€$“ÂïõYã ^Ûx\q…D6LŸI2©³ù•@ºQZµ! ¹½ÇU%û Ó¼Â(§“¼ê‹$ Içƒ ¹ƒÇöÛ†i^Ê©¹‘$I¶I2,OÈP§ô!Ûy\qÂp Ó¼’°}‡è“î̯x …¤óÁŠ…ÜÁãŠJº;”Ò“:÷+N‚5’¦ †ÜJרÚÈkl±‡ Ž<ÛCFz\7n`ø§Äû¹“rÈtè”9$;q€ ´×ƒ€ÌèÅeè¯&‰rÈ$úûW¢2 ÉÐ^sÈ4$C{Í!S‘í5‡LE´Wö„’¤øPr€JÂCÉRx(¹@Š%HÑ¡ä)8”| 3ìw (»~× 2ëw *JN"ùC½ö.3 ‚ 4Ø Cú 6Ã~ƒÍ2ä‚2Óe¶!ÝÁ'‘óÕ~3*ßšžYrJj:}³°Tº "!é}‰œ¯/§!ç«mN¼ŸàÕ…ô½‘tídÎW„néþ u÷ xÕ£ë Iúe2çk“:zá_h®åN;Ák*®ÍUB X š+¨x”ÈùjuÏUyqSÆ¿¯0$d¹DÓ*LìJm® ÅJév̸ÎW4;HuÖÿŸM…dÑf¦eÎ5Ï©¸OU—2™óÕBÔüé âóÔM…f™Æo#7dç«vÖ@$I–y½•>’q¯Ó>„€Ñõ¢…ûd‹öIœå¡é“2CÆu¾¢ïFU°³†FWœå¹Yy”2¡8¯IXEÉH[ANÝßõZv¹úÚÈ]ªÈ!¹ì‡*rH.{À¡ Ù½¸,R9dV”CfEýrÓGkh;6ÒIEND®B`‚omniEvents-2_6_2/doc/doxygen/a00366.map0000644000076400001440000000043010240666516017671 0ustar alexusers00000000000000base referer rect $a00043.html 221,8 432,32 rect $a00046.html 229,56 424,80 rect $a00047.html 206,104 446,128 rect $a00054.html 253,152 400,176 rect $a00061.html 258,200 394,224 rect $a00062.html 232,248 421,272 rect $a00067.html 208,296 445,320 rect $a00076.html 228,344 425,368 omniEvents-2_6_2/doc/doxygen/a00370.md50000644000076400001440000000004010240666516017571 0ustar alexusers00000000000000694dd2f263f39c6da19062b356c5787comniEvents-2_6_2/doc/doxygen/a00368.png0000644000076400001440000000175410240666516017714 0ustar alexusers00000000000000‰PNG  IHDRÔtìÅ!PLTEþÿÿo___???ŸŸŸßßß¿¿¿ÿÿÿ/l:ZtRNS@æØfyIDAThí™Ïsš@Çó/xlÏvà˜Nmà˜4?ô˜&á˜'pÌ$™Ê±¨pAvoEvÿʾ]ü&ikÓ}HÞ~÷}|?4ΰE×f[%Põò(‚VfÏ¢V–Åb$¨ü¨¨Ò3ç>ƒÂèÊ…;·ü)ê²|ÞšûÔo4Ò¢ÙÚ^ãZ}Àh-…úÈ_só³¢Ù-¦‘óå/…jSú=òìc¤“Z »‡räS¥K=[Žƒ» >ŸzL Î~{—öyXË 0\DÝQw„‰ÚLP#gT Ë—²;ÆÔ'zêpÔzß(sö¬=!r“2ùrYqf1‰ÉÇÂò‡:1GU–  &ò« wö)1÷#j˜L^ €)Û½mP!‡£ÆG‡\§C²‰3|Ç_”(6‹¨“¯°™ ŠÖ¸Î§ àÎѾJ,Rņ=ƒj4LÒ†¶Ô夀VÒ«Ûk5qÒÀ"–TÅ> ½RC†ÍåƒW™NàÀþ9qÒ:Þ9L^YjWa%P5äù1ùf%?9sÙÛ"› ¡îK¯U¤‚…P¥WŠ*Ò¬ GݯU YŽ*• UpÃQëüº(((((((zTáGçùM jƒP5¶çK[”Ûtgž¥o`ú@WàNb̜Ӌ ªU»»œG袸ÓI‡œ­Ýtµ4 MßPC›£fÎéEuÊ_s‹³ÉÌn Œ jb½¤P‹–AÕ:Bs›*¸<€»/1Ò(4%?Ú3ëà‹QÈãc;45XÐXA2¬{Zˆ¼H¶r(‡aAÐîÀ%X«&(×p›^­%zÅX)#Žòx‡£Æ3' ˜d\ñ•Sô¡cÙŽ¤JjÀƒüEØmló±¨Ä}Ûn“%¨I-v-…¡btî‡éÝæU‘ •q`§ƒœ$ÈS(^ÀŠ5çvQjpTïöšëH–¡„„¢&R%F8ŠÅ"êó'„Q`'(TžÌ‡wŸÊŠKÎQ_Ë™ö ªÓ±qyµ¶”°’ôêÛÑ¡†+:ôê zuÅ{h§Kx¯žG±ðB¯4ÆZñÁ³¦Ø5/P7R3OC(ôÀŸµ¤±A®§…ÿ i“ói«¦¾Fÿƒ"Uµ(ú»¨_䈨ò¥èÜIEND®B`‚omniEvents-2_6_2/doc/doxygen/a00368.map0000644000076400001440000000005310240666516017674 0ustar alexusers00000000000000base referer rect $a00073.html 33,9 179,33 omniEvents-2_6_2/doc/doxygen/a00415.md50000644000076400001440000000004010240666523017567 0ustar alexusers0000000000000001603006ff0f45196c1b8b9731c14cedomniEvents-2_6_2/doc/doxygen/a00370.png0000644000076400001440000002036110240666517017701 0ustar alexusers00000000000000‰PNG  IHDRî/@e%é*PLTEþÿÿ¾¿¿ÿo˜2Í___???ŸŸŸßßß¿¿¿ÿÿÿp¨ÓàtRNS@æØf IDATxœíAsÛ8–€çlÿ‰­½î)s^¶rœ\Û•ë˜tyÚ::'ñq&“’uìΨ-gÒ=‰Žî$ŠUµU[¶E‰ªÊ–mY”‰ÿ²x)‘< HÊ|Žññ=€ùøô;r?åwE7  ©¹ï—ÔÜ÷Kjîû%5·aqŒÉ4æåÆm®µ5·A©¹ KÍ]M!©¹ oí[çpUäN=Ç9Uv¿Ÿ4š K¾Üîoï{«²†×é„VÉ]°r»÷ó³5 ÁÖ rÏšðo%^/Rg¹êr²¦!ØZAî»>Y »­ÑÎÔÏ{„noæ4¼Ö99´&}¯GÚ´2¾×píÖ¤ ÕÏ!M¦%_nºãÆ1¹XL9w‹¼&O;§^óµèh>œúsö¼Ç _Ðõ£óŪWØÞœ›ÀMl6®½Þsºòš™¹7òk/vF¬°OìÛvϵ¡z…¹¹Ÿ‡¸{ÔO]Ç™pîwûPoNÝ€’']òîYÕ¹Ù¸ãž?oÒÎÝŸ¡-ïòBòú¯dLªÎÍ®caîN§C&}Ú•8÷˜÷ïÙ€^ÇX!ñd|Sun6o‰öï ò= ÝM ¾ûã9ùÓ¤É ÉlHvO_BõÛqX“a©ç©†¥æ.¦Ô܆¥æ.¦ÔÜfåeLUu¸¯¯ÊnˆÝé„+-·Ùwá¤UôDôHÇf¦σû)û·;ZÉ^-¸QÊËÙÉ;ž÷€÷îèì/N’nAêrÛpm²i¶î&¿œ xFÈD÷¾¿1Þ=%ÝÞèˆ<ŸÎÏ>A5Òš´g“cHÝEÆë™¹ J¤Èƒ›þõÜóùù| I·7¤Ùší4.Sb{íiÓ›¼=ò^Ìß6žœôÞ“bÛ®=õ 9_Lw:¯zO;§ä²V¯hªDB;åÆ=uYÞ1¯ÇƵ¾}Ûözó#ž€¨Ík;ÎeÏë{½Åðä¹ë"ö“ùÞÔ¥†‡j=×°Å×dQ¯Õ¢ˆäÌÍü<Ä úI—tgȸ/_°zPÛÝéÍÒtûÝí›éâ‡}Æýî™m¯ã8“åˆPrn×âܯÿJ<âö87i±zœ›Ùû€,N›Ô>Ð}¨@µ1aöž’Ž;ã=ª¼®cîN§ç Èlïmƒûy?èßÀ ýûy·iºìÙoÀ½Ë¹olÞ¿„Üi ž37Ì[bý»9²ÁñW«ñœe^Û¿¸9š!M—½QŸŸì°î°{ú’çM1w¶›Ðyp§“'ëEoèÅ Y½¥}ˆ2r»ƒõ²ï:‘ùÏVrh¬—ÍÂÙv×ÔgzºVîê-Ýý·„;Ëãóš[ªÈÂ)Þ,·þ}¶Õb¥¹3Ä™åÞÈóýf øÌrkJæGVêãÊ9Yƒæ‰«¹ æÎfiÕ. 7êmc¹Xz\-Vœ;u$wÁÜYõÞWn½†•„ÛDR5-åáÞl¯¹‹ä6“.RGÁ6që¼ÜfB ï+·NÓjî-àÖPRs×Ür–nktÛ±%[Å­óÂj±æ–¶¯[Gjî,b¥9ÞpãµÔÜÛÀ­ñ áj±æ–¶­ZKjîͨ©¹kn¹K¿5zíÈ$–þñjni;°šõ¤æÞŒžš»æ–ïo¥hV;²‰¥}¼š[Ú¤bM©¹7£¨æ®¹å»[iZ£ÓŽŒb靿–¶§WWjî¬béoK¸qšjîš[¾·µVâi¾bâý¡$50/nÌ6 ~;,LÝš»æŽ•Çd]mÍ]¬ÜsnÔ…Ì ÷Ûð«éî”^ÝÎ…­sœ=aA×R/$U$«*†Ûý­ó}oUØð:Ð*¹ V¼ÎÏÏ¢»û”Û=íìö“«HVU ÷¬ ÿB¥½h¥Þj¡ß (w\GLɪŠá¾ë“ŰÛíŽ —$.!ä€t!›ä¤:´&}HfÂ0ǃ™Ól‘YÓµ¡€º¸MÿP.KWB5ÌϬ”iä)©–ɪ@akÒ&ûŸXŠ+?YU1ÜðwÚm7Ž!—çn‘×äiçrRy½Ñ|8'sºàþ@.ûßuf?/†7GPàs3Mt hðÚ-VÊ4ò”TËdU ð|1½9|kCŠ+?Y•—ØÂü¹I—eݲٸ6özÏéÊknæ‘_Û¡ãߘ¿w¿´Éà® anºÅOYÅJ}’j™¬ Ôõ\û®Þ2?‡Û±inîç!î S®ãL8÷»Ì,¬£Óí´Þ.KR+?_N¹†ÅËKn—§¤Z&«bêžA±yŠ«0wãZŒ{þ¼I¦¤Ã¹ûóኛÙûcƒ¼ÿÖçvm\;òí½ -VÊ4ò”TËdUðCÍÏìÍR\ÈÍ®caîN§¦žvü†ý›qÓ^|ûfL¼/Ï€›êØ…ž¤¬‚R¦‘§¤Z&«bênlÞ¿!ÅUÜlÞíßaŠÏÐÌÛñj<nZ¼CǽÙsï~²ƒy O?eÓñœ•2~Y¬ ´ìž¾äãù)–;•Ìvž÷"Ù(«Ä}"™ž)evøSd¦Äÿ«÷B8…GË~8+m•¸Ê=ç¶0ukîš;V“uµåâ®Ösçtl˜Ûˆ<2¥ÈBÕ* ÷CSŠ,T­­ã®X|ËõCCŽ~_¹-\µòprt WmÛ¸±ñ%â6âè²^Í],÷ÇF&SsÏmÀÑ-lÅíâÆGƒ•…ÛÌ ]³æÞn Ç­â¶ðU·‰['Æu‹¸åßv¯¼Z¬:·¥Sy{¸õ"¹ËÃýM¶Ýµ¼|‹¸-½êÛ­û¾Â–pkzy9¹][¨mìq].QnE j\,í£•”[¨“úG+·×º€P=ÊÍU!T‰mê¯Pʾ~5Žº”Ø%⾦܇'97{¤ _³_›:š†Röõ«¡pTuS%R.îÞâsˆ¾VG,Œ3øzÆe8jÐÒT *7Ê}?_Áר²¯Mýøë’;Žê74]{ÊÅ övm\; ìÝŸ³RnïU8*ogÊæ”‹›vèñ ¸Y *ôoöµ©ó!”2îP8*kfÚÖ”‹»u!©Ëy‹ÿíª­IJw(•dÀ.wW]+*Vê£Uš;Í…Û—Òppç[½]2`—‡[ÿYì s§š¦‰ö®wú¡œï¾Z¬wFìªrgÅ®(wfìjrgÇ®&·&”ˆýÀ$Ó…Û— r›À® ·ìÊq_™Á®·‘ÜW´Z¬·1ìjq›Ã.÷µª‚Aì*qgÿ¢Í”ˆû«|³¡Ü—Êp›Å® ·aìªp›Æ®·qìJp›š›Ft®ËÊmò²½RºZ,š;áÆƒÑËöRÊÄ-œ¨æàã eçÎ ;On#iä"I¾§š»æŽ•ÇĪ®¹kîš{Û¹äýª¶ôFD0yãî†W½¡¿4šÁß;¾ ååžüýË›³Ïîô˗Ъc+ãÖÇ_"ÜçA¿‡¸ƒÂ`¡¼Ü£cøòÌ0uhuê8Ÿ#ÜÁÒQ3Ä—òrÛ¯œËîpoÖ˜9³Þ.õs úgx6"»Ó½§÷vÏ}5=£?û önº7wè/ø9T9|õ7º¥ýãÝdÖ{Bö‡ ¤~NíèxÃÝænÓ™_zœ{Ïù³ó·/?N¨½gÝ ‡þôþyƸßÞ¥¿¢ÜPåóÓèøüýànrsqsA ©’ q;ðsçܱqívzöOºògf泙ﲗÿ=cÜg—]ú{â Y•W—Þ…g¿šÐ=á‡)©7÷ó7µ÷èOÞRä2î?¿‚zÔ 7ŒùÎäÎò*#BftŸÊq³q-Æ}ñÏcÇs¾pîW]€R²°½Y{ßù¥Šöf×±0÷—/_÷í¼ÿàÜ·¼ÞÒëØíˆöïíßÞ¿i•#Çi²þ]1n6o‰öï¹ó†ú9êñ­?ž;Ýc§ñSt<§UþFáöÛ?U[S†NhV¦”ôÜ!Šš›Ç=ò“å’¬¦øÛí'5·®„(jnRsK÷Ë}åFÉ7k ˰)’0^Ü«c®?4”’M(s,-åúa~äÅr]YÄ•#·ZÞ<÷7ÂÅ¥\Jº(+´¼qî°o ŸùçÆ¡Û4÷uˆUã±Üáž+æ†d²¹ôï"¹#–LˆM¥æ¾ÎÜ ¯l–;JšwMONàVxe³ÜQš¤w¨ –2>[[¢påŽWÒwÇ2f([—â¸ã6”ú²"@[_¬ÈÚ&¹ã&”÷aÓ·"käŽ[PÑ…¿š±m;ΡºÌzº]Ý÷ïâÊ!Û¨Á­èêÆ¸×­§´§ÉkYmcÜëÆSû±ÁÉKQÜÛ©¹ ÜŠ­oŠ[`:•1ƒ¯‘mˆ[Ĉ¯ÜŠlˆ[d8ÌuÊ”Á­xÁf¸…vÃp2ø:Xɹ ]íµ’Íp ÝeK#“6×F¸n(-—ÖS°­J„ï.¿y¿Müogߣ.–¢¸ÅΊãž³.iøK_ Á®Ï½,Œ‹µ^´ î_]˸…'m¹y1Ü "ÂÚwÂØäÛ{ÿ‚t[ç¤5i{ô?ø97?=­I¿KùFgMÈCIýœV"ãÁ¬9"³Én¯ÛíŽÜ)ìkü¸‡&6ÚÝž4ºÍä|1õèðû´sºÆ=šû²sêÁî”V"—ý»öS²ÓyÕë6ŽÇ.Ó°&Bª p'^Š÷]Ñïö¼^ϵá‹ìáÇ&¯»ñj#pnØôËv!§îk2&È1n¯K·v!¡°Àå…mÏŸ;ùJÄ€ ¡@ôîYÀÝqœI˜›õ‡w™ŸOI×£ãv×µi%b“}ÇiÛ´\Â-~ù°Hn¶…Ú» Dc²´÷”t"#œŸ>øy7doZ‰r"·M¹½˜òçNžq1î›Ã· Æ}³ä~Ú9Xãχ^ŸöïÈ+Ìú÷±S2Ÿ²þÈÐòܹe.vJ`<§Ü»§/î™ÓŒpƒ£ÓñüfrϛĆôø£-OäNBÊ[ö‰ ùik5Á™^~]+¡?n©Æ5‹:7 ‹]nòèÚ7;Gn­+îµòå) 7;?n͵úmõp¡]*îŒ÷ u°óãÖûÄÌ_Ì¢P3¯pnÜz$¯…*2¥[ZÇË[û–w&ný$Ò¥áfäÒíÉg%E6弸1n¾ö&ÿÃ?ÊÞóOÜø Ej€"¹Ó',ÀÊÆ¹Qn^sç%çF]Åjî¼dÓܸ«Øýæ~뮊ܩ—±^þÖy!ˆ@î.ÿÍsã&©¬Uîoï{«²†×é„VÉ]°²VîžvvMྠA(…sÏšðo%±@¬åêZ9츗À9‚PráFNRY«îúd1dáÄdtÖ€4BH·7s]|6hMú<¬Û†kC2­x6 ;ººD2ÃbÉ\Ÿëp{°À‰ÉÅbʹ[ä5%³øäÞh>œ“9³7]:‚8dZ‘žº£K—‚HfX "™ âF~ qC¸!±‰ÍƵ±×{NW^s3xe('ömâmËJ ]ºDüHfX "™ âFÞsùyˆ»Gûüã© £÷»}¨Çú÷“®Ëã))ìx8¥Ë~$3ìD2ýŴ×bÜóçMº±Ã¹ûó!ÔcܯÿJx²ÍÇ5ÆíG2ƒµƒHæ p³ëX˜»ÓéIŸvÕÎ=öû7”{Ââ”î×1Ê}³ä"™‹áÆÞZ[Í[¢ýû‚|OýÀiÍí8Ï¡|6$,™vô±?o±‰É ÜA$³1nE”LTô¸ó”r£ï o7úÖZ>܇NmTGÈ}yËì}O¹ñˆjî¼$3·Æü¾rã&ÜìO|zðo²§ ù<7È…[(’§E5GÄ8w¶Ä²§ƒFóTa¹Ñ[–ÖÉŸo/7‘>ý/7w¦N(}^7ºƒgâ¾–=/5w¦;òh®b¸‘Žž‰û‘4j±ÔÜ™†sy´¦æ«rAs#=C÷†è\Y~àmåVDc›ÍŒçF9z7WíZ7ÊàÛÈ1x7Wíj´{ëpc_Ós¯¥•KqÜjOOïæj/.[ééé¹ÕŽbòÓ·&·ÒÓSs#­"¹Uà©}Q½£á<ðšÜ ðíå–Žm©/±ˆ‹æ–½Qžšá'f‡s}nxÚ¶aΗÙa-·<-7‡M½E îdð´6AìWî¤×X¢mc±£î«Ë¾Zß7¡=Öu0Q»*sîRRq'¼É"à>yüãX©,Ø/7*sîRRr MmkóSöO!nõȇʜ»’´Ü¢ p{­ dÔšü £B:AÑcq!hgtö§Möω÷ÞïÌÍgNÓ¥{ÌÏ>±HSøÝ?rS=ðËj à(<¬t!3çšà^gmóO÷hþF¡Ý³Ã·  å)o;çóóùt¶wÒð^÷Nç¢M½4¥¿´Îãi¨ dÖ]P«ÝbÜ,¬tá2çšáŽƒsîÞâ3ãæ±£Ü÷C?и§.‹¾y¾¹¹›È¿`—%IµyhÞü0àW‚̺  6µ ãfao  —9×wltãÜ”—~d±„ÔÏßu oOy˹»Ž3 Æû®Íz³½øa?à¦u>O#§Nd¶/_¬¸A*s®1îèèöˆ7ŽÚ›®?gf§ƒÚw½yÊ[ßÞÄíE¹ä@ñúÞÒÞÄ턹!³®oï¡~îö¦º0™s rGLιiÏl2æÜ'{?ŽYÿæ¦^ŸsÏö ,̽Ó9àÜ»7­ôo6@f]Ч¤ß"ô(œta2çå^MÞxó!›íî'6ž7›·ÀxN›ÁSÞrn^:_l<§{ÜLv†>7­ã†¹ƒñœn¢ã9…s³2uæ\ÃÜKpέ—Í–ÉÆ?{ƒdçÀï·þˆE†~«¿û£HH©H¾‰äÌ5"&¸9x~÷˜r0·nž·á[-LÌpSðô¯TŸ¾Í…*1ÆM®î)7ù}ê=7û@ÐcÜ_­´{*¸s1·9îo”)K÷”oÎÅܹչZ÷”I>æ6É"kN°gê­©Å7Ÿ[¤—’å1g1Ë \Ús2·1î ¦—qçencÜK»èƒË¸ó2·yn}pɈ›¹sàÖÎ –Ì-‹ÚÌ(†¸#†¹Ò#OæÎ;nÍ+¹˜û:·) “|¸õz¹Ð¬U’[\8hSîÝÜ· éøN.â¾~ø0OsçÈï䢕id3JŽÜh“ ®Ò×ê¼ÁÙÄ w’Kâ®hÛÇsv·:}nF1Ã-›O>P’¯ï}7ö¸Ý|mtÈÛËMq+>6©œ}ͲySçÂýïy *\ÊÅÖÿ#^ ÿ™¶½¹pgh¦ÎqÔûýŒÕÜyKÍ­-57IϽþòÖ ÓÿBÖ<™jatuDSBnlú_Èö+‹PFWi€KÈMÿ¯ytu ¹±é!Û/|±ýZt5äNŠ®.±Ÿ£ÓÿBåï:$] ù€“¢«KÏHÿ lòžÄ£«!pRtuI¸cwB~®NÿëgûeµÂÑÕ~>`qtu‰¹±é¡Þ‘oïHt5Ï,Ž®.176ý/dûíççþ GW³|À ÑÕ¦¹Í|ÝõjÞ‚HÿËæ-~îßHt5+Kˆ®.3÷&¤æÖܱ»kùr‡c¶q§Ø6ÊmèH57+Ž-àNeðØíï*r§2ø=åŽ?$ÂÝó§òùx ÷ç$•£§ 2“¦ÎÌ_ÖÒ`YÚ*ÒpçÿÀS!Åp?T-nβƭïè)¸ 7· Ý›¥«"-·þnÅwš˜árk;zJîBÝ\”ÖÐÒT‘‚ûáuÁæ.†û!íàÅš[Ä­ëèÚÜýß"E”¾ÓÒS¡ËÍ 6·[Ïທ±üÞÐaºVKGƒ&Ç×Ü^•Ñ!·–Á5¹Ëž×ÒР&®L¼!·CÇàZÜåèÜ$ñü[x :Ü%éÜ$‘[Ãà:W¤Ò`'ö7 ­Aƒ»èÉJH’¸ñÇsçú¢Œ¦$ޝVš;Ç·õ%‘mp4M™°%×Sì[PXœ2y¹taá4 ¹KååRn¤§#yÊ…-7Z( 8 ÌütÆb»l¾’"‘›ŽÈÚƒ28®Û¢æ§w¿Á_ŸûFV3»Hí`! ¸qóÓÇðׯTÍ,RnL”%lR‚ˆ¦xÖ`ˆZ}ßêµÉþ©í²².Kœ›ÈûÂÓ1Ü˃ìtN!5ž5˜E­¾ Ÿf͛÷¶Ëʺ,]pn¢o,¥­\õò/Fg fQ«ýÅt>½ë»¶Ë3ê²T¢¹‰‚[mp5÷õªsódÀÝxÖ`µ:sœ‘×#¥àVÏÚ”Üá Ë€üØ;œ5˜G­ÞµÉ³²Ø[íéJîðõ}§sÀúw,k0Zý@È1ëߥàVyºŠ;ò™;ÏãYƒYÙSB¼öþ§’p« ®à.Ñ­†ˆ¨¹qùŒ¤\ÂB‚˜7Ë=]ÊÓTÉ€7+˜Ï –l£”»<÷ã‚á–\†V–‡A5Í’l“| -ÍC ¸eC›„»¼^ŽuE‰§'s—ØËѳ·$r—ÙËÑÜúß9VžGaBÁ:c¢§'q—ì>b\Ð0éƒY_Yç§àŸp1wiç§h º–°TÈ]²‡ÑàmBÂÒck]d…c›±ì›hN.¬µay©',¾hµqÝÓEÜUÀÖläš§ âÈ+­ÛJ+¶¾Î]îééR4¹ã¿Ž»ùu¹§§KÑõÊøw)ƸËáöE»7Z‘µø{UÁÖçŽzzŒ»n_ôG߈§Gß—(ý¬|%)®:Vh9Â]òÜIÁ™½„<»JØ©fá.â®vºÙU¨‹¯Ü¼ó´@Xk]ùÃréÁÂÿh+qr ãÀqÔ€š{óRso^jîÍKͽy) 72³/-ßK*`™|™Wù~ËÁÍìëu~~Q*"Uæ_²Ì÷[nlf_ºÐo €[‘ù7$åàÆföe˜ãÁÌi¶ÈάéÚP±µæ—îÉ2ÿ’ý‹Pæ_YMöÏé~¤l~ŽÎìÛs —ûsöøóbxs@i~!Û/(›¾m¬2ÿòÈêÙÞIãz@¹™}:þ!¼ÖýÒ&ƒ»6pnâBTV©·®2ÿòÈK¯7?ÃÆrqc3û²ŽnC85Ù%äI—ŸæôuiÉ*ó¯qê8CqZ.nlf_ÎÍìý±AÞës»<Í/Ëõ:;òíígþõíMû} ¹±™}}nÚ¿oߌ‰7àã¤ùeƅ̿пW™9÷Íl/giIDATlÊHÙ¸±™}}nZ¼CǽÙsï~²ýÁ›Ï[èx¾Êü˹y)w*™5Òï[eîÅÔL&æ^ˆ¿œC²ƒ³šöW˜;“ÔÜ›—š{óRso^Ò=/1#…sßC©¹ï—ÔÜ÷Kî+÷ÿù— Á”"óIEND®B`‚omniEvents-2_6_2/doc/doxygen/a00370.map0000644000076400001440000000032310240666517017666 0ustar alexusers00000000000000base referer rect $a00046.html 246,345 441,369 rect $a00073.html 176,9 322,33 rect $a00062.html 154,86 344,110 rect $a00067.html 8,526 245,550 rect $a00043.html 164,436 374,460 rect $a00064.html 113,164 385,188 omniEvents-2_6_2/doc/doxygen/a00417.md50000644000076400001440000000004010240666523017571 0ustar alexusers000000000000000efb52a18bd9bc5fa03311ac873eb469omniEvents-2_6_2/doc/doxygen/a00415.png0000644000076400001440000000067110240666523017700 0ustar alexusers00000000000000‰PNG  IHDRŒ'/5½ PLTEþÿÿŸŸŸ¿¿¿___???ßßßÿÿÿçuÀtRNS@æØfIIDATH‰í•Án‚@†}ˆ&í>½4Ý£ImÊÑØ9ê¡/à¸{]¡ìÿ¶´q{¨¦É03ÿÌl±A¹>Œ‘çÙsžÓcþ³–ÇX­è¤§ªžQ*µr`êW1NŽÙÌÑqQœUN,æÀ”asw´v!7æñgSÇ.нì.C6gÔÕ-'¥dÆK1Ÿz7‰Iª¡ï#§¸—žÂ4O³€ØìT‹ñàãILLøHj2ih’<Šmœ^:1h®-¶vĹI–äø´U:šV÷«æ3û>O5ÕÁPRy«j)‹ó0ãv¹*o˜cGü£—!D‹á:²‰³•~ãNŒ]x#„@Ái6‹“·³Á˰–pbìñû>› ƤR†MÅg¾ß‚ï¿`þj=æZ1—ùÝ]ÀzŒÛ¾‹õ*Oþ=¯IEND®B`‚omniEvents-2_6_2/doc/doxygen/a00415.map0000644000076400001440000000005210240666523017662 0ustar alexusers00000000000000base referer rect $a00079.html 7,8 133,32 omniEvents-2_6_2/doc/doxygen/a00419.md50000644000076400001440000000004010240666524017574 0ustar alexusers00000000000000f8ec79eee4c3c60d6a38a265c6ad5216omniEvents-2_6_2/doc/doxygen/a00417.png0000644000076400001440000000102510240666523017674 0ustar alexusers00000000000000‰PNG  IHDR²'Y«PLTEþÿÿŸŸŸ¿¿¿___???ßßßÿÿÿçuÀtRNS@æØf¥IDATH‰í–=oÂ0†û+¨2Vj*e¥B"#âc,#­Z‘½4ξ˜ûþmï>$(R•‹—ø}ýä|¾Dy€[ÅCE®È÷!ëäÊ! òµó­ÈÿŒ¬&«h/2Àî±JV¥ô@ r˜ÐÅ"%ΧÝïá°†‡Ä†PßE<:†’Ûfìƒ纻Usµ°2«˜º€ì4ÔÌJmǸW\·µ‡^ 3ßÊ–ußÃ9ùhwî±lé¢Fä4éãP‚¶RBÆ[­bK¡ûÍœ,G2H»Sk±ÀµcƒƒW;}MX¹è Èp\ ß”è”çlÈ‚.éÈœ Ë·ŽŽd@©"9_fg®Wƒ9=›4"shxðªb^N6Õ8 “­Å€%ÉÈ7ŸÆÇšÐjá:HC2˜¡[­ÆçOð”üòŒ¢Šr2ØÆ—}íådÒŠœëJ°¨”L]wDÃH{v¬¼n^çtLädÒ4ÚLÇJ¬ËOÞ”“:÷Ó@oaZb²ë ÉaòÄE ?îÁ®7`PJ¾bTäŠ|OòÍþdnùoÈ¿ ÎÒ„æ“ÅIEND®B`‚omniEvents-2_6_2/doc/doxygen/a00417.map0000644000076400001440000000005210240666524017665 0ustar alexusers00000000000000base referer rect $a00080.html 9,8 169,32 omniEvents-2_6_2/doc/doxygen/a00421.md50000644000076400001440000000004010240666524017565 0ustar alexusers00000000000000a632a35c8fe54070c30deb36fa821d9domniEvents-2_6_2/doc/doxygen/a00419.png0000644000076400001440000000052410240666524017702 0ustar alexusers00000000000000‰PNG  IHDRb'€âPLTEþÿÿŸŸŸ¿¿¿???___ßßßÿÿÿP@ç(·£J­{,ÄÝyÛvMjÝê"þOëÏñKƒ¶ÑzñoÁÒ†!/Ñôú½(ÅÉsåU„ÞÇ”TŠyh²È¤Â©¨/‹ï]EÅî"/`úUt•§Äëú®ôÄ(DºÌ>:\ìC’Y½€ÑÂØï>+&Âm+Äø9Ñ4½ðº^` ˜Py¡Rì&fçb‹Ù‡ç–RdÞ–«Ï{(E±Zõ,~)€¿*¹TNù×ꨅ"Ý­ÿp­ÒñôV#óêwIEND®B`‚omniEvents-2_6_2/doc/doxygen/a00419.map0000644000076400001440000000005110240666524017666 0ustar alexusers00000000000000base referer rect $a00075.html 9,8 89,32 omniEvents-2_6_2/doc/doxygen/a00421.png0000644000076400001440000000034310240666524017672 0ustar alexusers00000000000000‰PNG  IHDRD'D]óuPLTEþÿÿ???___ŸŸŸ¿¿¿ßßßÿÿÿðT‰tRNS@æØfsIDAT8c˜I0ŒX%3:p¸œ&ÌÊJ*€^LïÄ«dzy{ùÌHµvKûÌéÎ--3'uDâQéé1S©Ü’™ Ø>Ó‘€’éÍ„LéœYNH‰R¹(!%“:4±+ÁF¸ÂY ?LJß` æ:¢ØOIEND®B`‚omniEvents-2_6_2/doc/doxygen/a00421.map0000644000076400001440000000005110240666524017657 0ustar alexusers00000000000000base referer rect $a00077.html 9,8 59,32 omniEvents-2_6_2/doc/ar01s01.html0000644000076400001440000001401210263502270016643 0ustar alexusers00000000000000 1. Introduction

1. Introduction

omniEvents enables CORBA applications to communicate through asynchronous broadcast channels rather than direct method calls. The server runs on Windows, and most Unixes. It is a small, efficient implementation of the Object Management Group's Event Service specification designed to work with omniORB.

We provide a number of example programs in C++, Python and Java, to help you get started with writing your own event service clients.

If you want to get going quickly, then read the “Quick Install” section for Unix or Windows, and then refer to the Reference section.

1.1. Features

Implements untyped event channels.

Suppliers” send events to the event channel as a CORBAany” type. The channel then broadcasts the event to all of the “consumers” that have subscribed to the channel.

Persistent state.

Channels and connections are continuously saved to disk, so that they can be recreated when the server restarts.

Scalable.

Event channels can be federated, which allows multiple servers to share the load of delivering events to many clients across a wide area network.

Fault tolerant.

Implements a sub-set of the Fault-Tolerant CORBA specification. Servers may be configured to operate in pairs - if one fails then clients automatically switch over to the alternate.

Easy to install.

The server runs as a daemon on Unix or a service on Windows. A SysV style init file can be automatically installed on Unix, to get you up and running with minimum fuss.

Events can be filtered by type.

Event channels can be configured to only pass on events of a particular CORBA type. Combined with channel federation, this allows Consumers to choose which type of events to receive.

Available as a library.

You can create event channels within your own programs by linking to the shared library (on Unix).

1.2. Further Reading

Information on the Event Service specification can be obtained from the “CORBA services : Event Service Specification” page at: http://www.omg.org/technology/documents/formal/event_service.htm

For an introduction to the various communication models see “OMG Event Object Service”, SIGS Vol9, Num 2, February 1997 . You can download from http://www.iona.com/hyplan/vinoski/col9.pdf

There is an excellent introduction to the Event Service in Chapter 20 of the book “Advanced CORBA Programming with C++”, by Michi Henning & Steve Vinoski.

omniEvents-2_6_2/doc/ar01s02.html0000644000076400001440000004232710263502270016656 0ustar alexusers00000000000000 2. Build and Installation

2. Build and Installation

This section provides a complete guide to building and installing omniEvents.

2.1. Prerequisites

You need to install omniORB before you can start with omniEvents. The latest version of omniORB4 is strongly recommended. You can download it from here: http://omniorb.sourceforge.net/download.html

The Unix install requires GNU Make. If you don't have it already, then you can download it from here: http://ftp.gnu.org/pub/gnu/make/

In order to install omniEvents as a Windows service, you need to be using a modern version of Windows. You need: NT, win2000 or XP. You cannot use: win95, 98 or ME (but you can just run the server manually).

2.2. Quick Install Guide - Unix

omniEvents is distributed as source for Unix platforms. To install you must unpack the omniEvents-XXX-src.tar.gz file, build the code and then install the executables and init scripts into the correct locations on your system.

  1. Unpack the .tar.gz file: gzip -dc omniEvents-XXX-src.tar.gz | tar xvf -.

  2. Go down into the omniEvents diectory: cd omniEvents-XXX.

  3. Run the configure script. For a full list of available parameters, type ./configure --help. Common parameters are:

    --prefix=PREFIX install files in PREFIX [/usr/local].
    --with-omniorb=PATH set the path to the local omniORB installation [$OMNIORBBASE].
    -q, --quiet, --silent do not print “checking...” messages.
  4. Compile the executables: make.

  5. Get superuser privileges: su root.

  6. Install the executables: make install.

  7. Install the system init script: cd etc; make install.

  8. Set up SysV service omniorb-eventservice...

The procedure for setting up a SysV service differs from platform to platform. You need to create symbolic links from the /etc/rcX.d directories to the /etc/init.d/omniorb-eventservice init script. (The paths to these files may be different on your system.) For example, on a Debian GNU/Linux system, the command update-rc.d omniorb-eventservice defaults would set up omniEvents to start at the default runlevels.

Example 1. Typical Unix build session

% gzip -dc omniEvents-XXX-src.tar.gz | tar xvf -
% cd omniEvents-XXX
% ./configure
% make
% su root
# make install
# cd etc
# make install
#

2.3. Quick Install Guide - Windows

omniEvents is distributed precompiled for Windows. To install you must unpack the omniEvents-XXX-win32.zip file, set up your system path and install the service.

  1. Unpack the .zip file using (for example) WinZip.

    We assume that you unpack it into C:\Program Files. If you choose to put it somewhere else, then just adjust the remainder of these instructions accordingly.

  2. Add the omniEvents directory to the system environment variable: Path. It's important to NOT use the “local” path. Only the “system” path is available at boot time when services start.

    Menu: Start -> Control Panel. Icon: System. Tab: Advanced. Click: Environment Variables.

    Add to System Path: ;C:\Program Files\omniEvents-XXX

  3. Create a data directory: C:\omniEvents. omniEvents will store its persistent state in this directory.

  4. Install the service: Open a command window, and type: omniEvents install -t "C:\omniEvents\trace.out"

  5. The service will start automatically when you next reboot, or you can start it manually now.

2.4. Building from Source on Windows

It is not usually necessary to compile omniEvents for Windows, since it is available pre-compiled.

  1. Firstly make sure you have everything you need:

    Microsoft Visual C++ compiler. (Tested with version 6.0, service pack 3) The environment variables for command-line compiling must be set up. You can test this by trying to compile hello.cc (in the win32 directory) with the command:

    > cl -TP -GX -MD hello.cc

    omniORB4. Get it from http://omniorb.sourceforge.net/download.html You should set up your PATH environment to include: <omniORB Top-Level Directory>\bin\x86_win32 Test this by checking that this command prints out the omniidl help:

    > omniidl -u

    A fairly recent version of GNU Make for Windows (3.78.1 or above). Download it from http://unxutils.sourceforge.net/ or Google for “gnu make windows”. The make.exe also needs to be in the PATH. For example, you could copy it into your C:\winnt directory. The following command should show version text:

    > make --help
  2. Next make sure that the build files are correctly configured. Don't run the configure command on Windows, hand edit the files instead.

    When you unpack the omniEvents-XXX-src.tar.gz file, the Windows config.mk and src/config.h files should already be in the correct places. If not, then you can copy them from the win32/ directory.

    Edit config.mk to set the values of these variables:

    OMNIORB_BASE full path to omniORB top-level directory.
    OMNIORB_LIBS libraries provided by omniORB.
    OMNIEVENTS_BASE full path to omniEvents top-level directory.
  3. Compile omniEvents. Open a command window, and cd to the omniEvents top-level directory. The following command builds omniEvents:

    > make

2.5. Programs

This section lists the programs that are bundled with the omniEvents distribution.

Most importantly, the omniEvents daemon implements the EventChannelFactory and hosts the event channels. The daemon is built in the src/ directory. On Unix the daemon is installed into /usr/local/sbin, by default.

Unix win32 Description
omniEvents omniEvents.exe EventChannelFactory server.

These tools enable management of event channels from the command line. They are built in the tools/ directory. On Unix, they are installed into /usr/local/bin, by default.

Unix win32 Description
eventc eventc.exe Command to create a channel.
eventf eventf.exe Command to federate (link) two channels.
events events.exe Command to stream events to or from a file.
rmeventc rmeventc.exe Command to remove a channel.

Finally, four example clients are provided. These enable you to test whether or not your omniEvents daemon is really working. They are built in the examples/ directory.

Unix win32 Description
pushsupp pushsupp.exe Push Supplier test client
pushcons pushcons.exe Push Consumer test client
pullsupp pullsupp.exe Pull Supplier test client
pullcons pullcons.exe Pull Consumer test client

2.6. Supported Platforms

omniEvents 2.6 has been tested with omniORB 3.0.5 & omniORB 4.0.4 on the following platforms.

Platform omniORB3 omniORB4
AIX 5.1 / xlC_r 5.0 no yes
HPUX 11.00 / aCC A.03.37 - yes
Linux x86, Debian 3.1 / g++ 2.95.4 yes yes
Macintosh OS X, 10.3.5 - yes
Solaris 9 x86 / gcc-2.95.3 - yes
Solaris 8 sparc / CC 5.3 yes yes
Tru64 5.1B / cxx 6.5 yes yes
Windows 2000 / Visual C++ 6.0 SP3 - yes

Earlier versions of omniEvents have been tested on the following platforms.

Platform omniORB3 omniORB4
Tru64 4.0F / cxx 6.2 yes yes
HPUX 10.20 / aCC (B3910B A.01.21) yes -
Windows NT 4.0 / Visual C++ 6.0 SP3 yes -
Solaris 2.5 / gcc-2.8.1 yes -
x86 Redhat linux 4.2 / gcc-2.7.2 yes -
x86 Mandrake 7.2 / gcc-2.95.3 - yes

2.7. Directory Structure

The directory structure of the omniEvents distribution looks as follows.

auto/ various scripts used by AutoConf
doc/ this documentation
doc/doxygen/ source code documentation generated by Doxygen.
examples/ source files for examples
examples/java/ Java version of examples
examples/python/ Python version of examples
idl/ idl files
src/ source files
test/ test harness
tools/ command line tools for manipulating the Event Service.
win32/ build files for Windows
omniEvents-2_6_2/doc/ar01s03.html0000644000076400001440000001505410263502270016654 0ustar alexusers00000000000000 3. How to Set Configuration Options

3. How to Set Configuration Options

This section tells you how to set configuration options, not what options are available. For a detailed description of the available configuration options, see the omniEvents reference section.

See also the eventc reference section, for a description of how to configure new event channels at run-time.

omniEvents' default “out of the box” set-up is fit for most purposes. You only need to modify the configuration if you are interested in advanced features such as fault tolerant failover, or changing the default TCP port.

In general, command-line parameters are stored somewhere, and retrieved each time the daemon is started. The method of storing parameters is different on Unix and Windows. In addition, there are a number of defaults that can be set at compile-time.

3.1. Unix SysV-style service.

The SysV init program starts the omniEvents daemon from the script /etc/init.d/omniorb-eventservice. You can also use this script to start and stop the service manually:

syntax: /etc/init.d/omniorb-eventservice [start|stop|restart]

The script reads omniEvents' configuration options from the file /etc/default/omniorb-eventservice. Edit this file to change the options.

See also: omniEvents reference.

3.2. Windows service.

The omniEvents Windows service stores options in the Registry key HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\omniEvents. They are read each time the service starts. Usually the only option you should set is the -t FILENAME option that directs trace output to the named file.

You set the service options by listing them after the install or setoptions commands:

syntax: omniEvents install OPTIONS

syntax: omniEvents setoptions OPTIONS

You can see the currently stored options with the getoptions command:

syntax: omniEvents getoptions

See also: omniEvents-win32 reference.

3.3. Compile-time customisation

Some compile-time parameters may only be adjusted by manually editing the file src/defaults.h:

  • the default data directory [/var/lib/omniEvents on Unix, C:\omniEvents on Windows.]

  • the name of the environment variable that sets the data directory [OMNIEVENTS_LOGDIR]

  • the period between data file checkpoints [900 seconds]

  • Default event channel parameters:

    PullRetryPeriod_ms Time between pull() calls. [1 second]
    MaxQueueLength Number of events to queue. [1023]
    MaxNumProxies Limit on number of ProxyPullSuppliers. [1024]
    CyclePeriod_ns Time between batch transfer of events. [0.1 second]

Please refer to the src/defaults.h file for descriptions of all parameters.

omniEvents-2_6_2/doc/ar01s04.html0000644000076400001440000003265110263502271016660 0ustar alexusers00000000000000 4. Running the examples

4. Running the examples

The examples programs (eventc, pushsupp, pushcons, pullsupp, pullcons) are also available as Python and Java. Look in examples/python/* and examples/java/*.

In these examples, we run omniEvents from the command line. A real installation would probably use a system service, as mentioned in the installation section.

4.1. Start the Naming Service (omniNames)

You must start the naming service (omniNames) as the examples make use of the naming service to locate the event channel factory. Please refer to the omniORB documentation for information on how to set up the naming service.

4.2. Start the omniEvents daemon (omniEvents)

omniEvents implements an Event Channel Factory server which clients can use to create Event Channels. The factory registers itself with the Naming Service to enable clients to locate it.

Before you start, you may need to set the environment variable OMNIORB_CONFIG to contain the full path name of the file omniORB.cfg. The default is /etc/omniORB.cfg. For example:

% OMNIORB_CONFIG=/wib/wob/omniORB.cfg; export OMNIORB_CONFIG

Start omniEvents by running the executable. The binary is in PREFIX/sbin (if you used the configure --prefix parameter), or in /usr/local/sbin (by default). Once the service is correctly started up, it automatically backgrounds itself (Unix only).

Example 2. Startup from the command-line.

% omniEvents -l $HOME
%

omniEvents supports the following options:

  cold start syntax: src/omniEvents [-pPORT] [-aENDPOINT] [OPTIONS]
  warm start syntax: src/omniEvents [OPTIONS]

  COLD START OPTIONS:
   -p PORT      configure server port [11169]
   -a ENDPOINT  set alternate endPoint for failover

  OPTIONS:
   -l PATH      full path to data directory* [/var/lib/omniEvents]
   -P PIDFILE   keep track of running instance in PIDFILE.
   -N ID        factory naming service id   ["EventChannelFactory"]
   -f           Stay in the foreground.
   -t FILE      Send trace messages to FILE instead of syslog.
   -v           print the IOR of the new EventChannelFactory.
   -V           display version
   -h           display this help text

  *You can also set the environment variable OMNIEVENTS_LOGDIR
  to specify the directory where the data files are kept.

The options provided allow you to override the default name used to register the Event Channel Factory with the Naming Service.

omniEvents supports persistent channels by writing all state changes to a file. This persistency datafile is stored in /var/lib/omniEvents/ by default. Use the -l option or the OMNIEVENTS_LOGDIR environment variable to override the default.

4.3. Create an Event Channel (eventc)

eventc resolves the factory name with the Naming Service and then contacts the factory to request an Event Channel. The Event Channel is created within the the omniEvents process.

Note

You can by-pass the factory completely and instantiate the event channel directly within your own process by linking your application directly with the omniEvents shared libraries. The src/main.cc file is a good starting point to find out how.

eventc then registers the created Event Channel with the Naming Service, and exits.

eventc has the following options:

  syntax: tools/eventc OPTIONS [FACTORY_URI]

  FACTORY_URI: The factory may be specified as a URI.
   This may be an IOR, or a corbaloc::: or corbaname::: URI.
   For example: corbaloc::localhost:11169/omniEvents

  OPTIONS:                                         DEFAULT:
   -n channel name                                  ["EventChannel"]
   -N factory name (if URI is not specified)        ["EventChannelFactory"]
   -c override default CyclePeriod_ns of new channel (nanoseconds)
   -i set the InsName of new channel, to enable access via corbaloc
   -p override default MaxNumProxies of new channel
   -q override default MaxQueueLength of new channel
   -R override default PullRetryPeriod_ms for new channel (milliseconds)
   -t set an event type filter, FilterId=<RepositoryId>
   -v print the IOR of the new EventChannel to standard output.
   -h display this help text
  OLD OPTIONS: (only used by omniEvents v2.4 and earlier)
   -m override default MaxEventsPerConsumer for new channel

The options provided allow you to override the default name used to register the Event Channel Factory and the created Event Channel with the Naming Service.

eventc starts silently unless it encounters any problems or if you turn tracing on by supplying the omniORB specific option -ORBtraceLevel 20. eventc terminates once the event channel has been created:

% eventc
%

4.4. Run one or more example suppliers/consumers

There are four example clients: pushsupp, pushcons, pullsupp and pullcons. When run, each supplier and consumer contacts the Naming Service to obtain a reference to the Event Channel created in step 2 above. They then connect themselves to the channel and do their bits. The data sent through the channel is always of type long in the examples.

As per eventc, you can override the default name used to register the channel in the naming service. The -d option is used to exercise the disconnect functionality provided by the channel.

  syntax: examples/pushsupp OPTIONS [CHANNEL_URI]
  CHANNEL_URI: The event channel may be specified as a URI.
   This may be an IOR, or a corbaloc::: or corbaname::: URI.
  OPTIONS:                                         DEFAULT:
   -d NUM   disconnect after sending NUM events     [0 - never disconnect]
   -r       connect using a nil reference
   -s SECS  sleep SECS seconds after disconnecting  [0]
   -n NAME  channel name (if URI is not specified)  ["EventChannel"]
   -h       display this help text

  syntax: examples/pushcons OPTIONS [CHANNEL_URI]
  CHANNEL_URI: The event channel may be specified as a URI.
   This may be an IOR, or a corbaloc::: or corbaname::: URI.
  OPTIONS:                                         DEFAULT:
   -d NUM   disconnect after receiving NUM events   [0 - never disconnect]
   -s SECS  sleep SECS seconds after disconnecting  [0]
   -n NAME  channel name (if URI is not specified)  ["EventChannel"]
   -h       display this help text

  syntax: examples/pullsupp OPTIONS [CHANNEL_URI]
  CHANNEL_URI: The event channel may be specified as a URI.
   This may be an IOR, or a corbaloc::: or corbaname::: URI.
  OPTIONS:                                         DEFAULT:
   -d NUM   disconnect after sending NUM events     [0 - never disconnect]
   -s SECS  sleep SECS seconds after disconnecting  [0]
   -n NAME  channel name (if URI is not specified)  ["EventChannel"]
   -h       display this help text

  syntax: examples/pullcons OPTIONS [CHANNEL_URI]
  CHANNEL_URI: The event channel may be specified as a URI.
   This may be an IOR, or a corbaloc::: or corbaname::: URI.
  OPTIONS:                                         DEFAULT:
   -t       enable try_pull mode
   -r       connect using a nil reference
   -d NUM   disconnect after receiving NUM events   [0 - never disconnect]
   -s SECS  sleep SECS seconds after disconnecting  [0]
   -n NAME  channel name (if URI is not specified)  ["EventChannel"]
   -h       display this help text

The -t option in pullcons causes the pull consumer to issue non-blocking try_pull() invocations rather than blocking pull()s.

Example 3. Here is what to expect during a typical session

  % examples/pushsupp
  Looking for EventChannel
  Obtained SupplierAdmin.
  Obtained ProxyPushConsumer.
  Connected Push Supplier.
  Push Supplier: push() called. Data : 0
  Push Supplier: push() called. Data : 1
  Push Supplier: push() called. Data : 2
  Push Supplier: push() called. Data : 3
  Push Supplier: push() called. Data : 4
  Push Supplier: push() called. Data : 5
  ...

  % examples/pushcons
  Obtained ConsumerAdmin.
  Obtained ProxyPushSupplier.
  Connected Push Consumer.
  Push Consumer: push() called. Data : 0
  Push Consumer: push() called. Data : 1
  Push Consumer: push() called. Data : 2
  Push Consumer: push() called. Data : 3
  Push Consumer: push() called. Data : 4
  Push Consumer: push() called. Data : 5
  Push Consumer: push() called. Data : 6
  ...

Pull consumers cause the event channel to poll every pull supplier connected when they request an event (using pull(), not try_pull()) until an event enters the event channel (which could come from a push supplier).

In order to prevent the Event Channel from consuming excessive CPU when polling for events the -r option of eventc can be used to specify a pull retry period QOS parameter. This parameter represents a timeout in seconds to wait for before each poll cycle. This parameter defaults to 1 second.

omniEvents-2_6_2/doc/ar01s05.html0000644000076400001440000002224210263502271016654 0ustar alexusers00000000000000 5. Writing an Event Service Client

5. Writing an Event Service Client

The examples are a great place to start learning about the event service. Feel free to use them as a starting point for your own clients. The same examples are available as C++, Python and Java. However, this section provides a few more general instructions.

5.1. Connecting

Here's a list of all the ways clients can locate the omniEvents server's EventChannelFactory object:

by IOR. (omniEvents -v)

The -v option prints the EventChannelFactory's IOR. You can then use a straightforward string_to_object() method call to turn this into an object reference.

by corbaloc::host:port/omniEvents

The EventChannelFactory is registered in the omniORB INSPOA as omniEvents which means that you can use the human readable “corbaloc” string above instead of the IOR. Replace host with omniEvents' hostname and port with the TCP port: 11169 (or whatever you chose with the -p option).

resolve_initial_references("EventService")

If omniORB.cfg is properly configured, you can use resolve_initial_references() to find the event service, just as is usually done for the Naming Service. Just add a line like this:

InitRef = EventService=corbaloc::host:port/omniEvents
The naming service (omniEvents -N NAME)

omniEvents always registers the EventChannelFactory as a top-level entry in the naming service. Use the -N option to control the context, id & kind. (EventChannelFactory by default).

5.2. Using any type

The “events” pushed and pulled around by the Event Service are simply CORBA any values. The any type can hold any CORBA type. The examples simply send a long value, but a more realistic problem would employ a user-defined struct as the event.

For user-defined types you first need to define the type in IDL, then compile the IDL. For omniORB with C++ you would use omniidl -bcxx -Wba. The -Wba generates the operators you will need to use your type with CORBA::Any.

Here's a small example:

  module MyMessages {
    struct NVPair {
      NameType  name;
      ValueType value;
    };
  };

Assuming you compile this IDL correctly, you will have insertion & extraction methods: operator>>=() and operator<<=(). Here are examples of how to use them:

  CORBA::Any data;

  // Insert by value
  MyMessages::NVPair inputNvPair = ...
  data <<= inputNvPair; // takes a deep copy.

  // Insert by pointer
  MyMessages::NVPair* inputNvPairPtr = ...
  data <<= inputNvPairPtr; // does NOT copy - assumes ownership
  //XX delete inputNvPairPtr;  <== NO!! 
  .
  .
  .
  // Extract
  const MyMessages::NVPair* outputNvPairPtr = NULL;
  if(data >>= outputNvPairPtr)
  {
    // Use outputNvPairPtr BUT DON'T DELETE IT!!
  }
  else
  {
    cerr<<"Wrong type!!"<<endl;
  }

Notice the memory ownership issues. It's best to double check each time you use <<= or >>= until you're confident you've got it right.

5.3. Disconnecting

All Supplier and Consumer objects have a disconnect_*() method. This means that each connection has two disconnect methods, one at each end. Which method should you call to terminate the connection?

The best approach is to call the Proxy's disconnect_*(), rather than your own. (Either will work, but instructing the Proxy to disconnect is more efficient.)

The rule for implementing your own servant's disconnect_*() method is quite simple. Each disconnect_*() method should call the other disconnect_*() method. It is the responsibility of the Event Service end (the Proxy) to ensure that an infinite loop doesn't occur. So clients don't have to worry - they should always just call the Proxy's disconnect_*() when their own disconnect_*() is called.

There is of course NO GUARANTEE that a disconnect_*() method will only be called once. You should never assume that your servants' methods will not be called until the object has actually been deactivated in the POA.

It is possible to connect to ProxyPushConsumer & ProxyPullSupplier objects without providing an address for callbacks. When you do that, the proxies cannot call your disconnect method. If you choose to connect to these proxies without providing an address for callbacks, then you must clean up your own objects without help from the Event Service.

Note

These semantics only apply to Event Service v1.1 implementations such as omniEvents v2.6. Earlier specifications were vague about disconnection semantics, so you must be VERY careful if you want to interoperate with an older Event Service implementation (such as omniEvents v2.4 and earlier).

omniEvents-2_6_2/doc/ar01s06.html0000644000076400001440000000476410263502271016666 0ustar alexusers00000000000000 6. Notes for Windows Users

6. Notes for Windows Users

If you are writing Event Service clients, you can use the omniEventsCl.lib library instead of compiling the Event Service IDL files yourself. BUT I DON'T RECOMMEND IT. There is no debug version of the omniEventsCl.lib library, so developing with it would be awkward. For serious work, you will be far better off compiling the IDL files yourself.

If you do use the omniEventsCl.lib library, then make sure that you use the “multithreadded DLL” runtime with exceptions (options: -GX -MD), otherwise it won't work.

omniEvents-2_6_2/doc/re01.html0000644000076400001440000002650010263502271016331 0ustar alexusers00000000000000 omniEvents

Name

omniEvents — CORBA Event Service daemon

Synopsis

omniEvents [-p port] [-a endpoint] [-l directory] [-P pidfile] [-N factory-name] [-f] [-t file] [-vVh]
[-ORBparameter value]

Description

omniEvents is a CORBA Event Service server program. It is designed to be run as a standalone daemon process.

The server continuously saves its state to a file. Event channels are re-created from this file each time the server restarts. The options -p and -a affect the identity of the server's event channels, so these options can only be set the first time the server is run.

Servers may be configured to operate in pairs - if one fails then clients automatically switch over to the alternate.

Options

-p port

Sets the TCP port on which a new server will listen. The default is 11169

This value is stored in the new server's persistent state. There is no need to supply this option when a server is restarted, since the value is read from the file. If the option is supplied then it is simply compared with the stored value - if the two do not match then the program exits with an error.

-a endpoint

Sets an alternate endPoint for a new server. All CORBA object references generated by the server include the alternate address. When clients cannot contact the server, they automatically fall back to trying the alternate address.

This option is exactly equivalent to the ORB parameter endPointNoListen, except that the value is saved in the server's persistency file, so that it is remembered whenever omniEvents is restarted.

The format for a TCP endpoint is giop:tcp:HOST:PORT, for example: -a giop:tcp:secondary.host:11169

This value is stored in the server's persistent state. There is no need to supply this option when a server is restarted, since the value is read from the file. If the option is supplied then it is simply compared with the stored value - if the two do not match then the program exits with an error.

-l directory

Full path to data directory, where omniEvents stores its persistent state. The default is /var/lib/omniEvents

-P pidfile

Keep track of the currently running omniEvents process in pidfile, which should usually be /var/run/omniEvents.pid. If pidfile already exists, then the server refuses to start. The default is to not write a PID file.

-N factory-name

Sets the CORBA Name Service name for the EventChannelFactory CORBA object. Each time the server starts, it registers its channel factory object with factory-name in the Name Service.

Format for name: [CONTEXT-ID[.CONTEXT-KIND]/]*OBJECT-ID[.OBJECT-KIND]

Examples: foo, foo.bar, foo.bar/baz/qux, foo/bar/baz.qux.

The default is EventChannelFactory

-f

Run the server in the foreground (do not daemonize).

-t file

Send trace messages to file instead of syslog.

-v

Output the CORBA IOR of the EventChannelFactory CORBA object when the server starts. This will go either to syslog or to the current trace file.

-V

Display version.

-h

Display a short summary of command-line options.

-ORBparameter value

Standard omniORB options. see omniORB documentation for details. Do NOT use this option to set the endPoint or alternateEndPoint. This option is commonly used to set the omniORB traceLevel, in order to get more detailed output.

Example: -ORBtraceLevel 5

Event Channel Parameters

The omniEvents::EventChannelFactory object implements the standard CosLifeCycle::GenericFactory interface. An EventChannel object is created by a call to the create_object(key,the_criteria) operation.

The “key” parameter must be set to EventChannel”.“object interface. The “the_criteria” parameter is a sequence of various service parameters. Supported parameters are listed below.

CyclePeriod_ns (long)

Sets the cycle period of the channel (nanoseconds). This is the time that the channel waits before transferring messages from the incoming queue to the outgoing queue. While messages are being transferred, incoming calls are queued. The default is 0.1 seconds.

FilterId (string)

Only types whose RepositoryId matches the parameter are permitted to pass through the channel. Other events are silently ignored.

InsName (string)

Sets the name by which the EventChannel is known in omniEvents' INSPOA. You can refer to the channel with a corbaloc string like this: corbaloc::HOST:11169/NAME

MaxNumProxies (long)

The maximum number of ProxyPullSuppliers per channel.

MaxQueueLength (long)

How many events are buffered by the ConsumerAdmin object. The discard policy is FIFO, meaning that the oldest events are discarded first in case of overflow.

PullRetryPeriod_ms (long)

Period (milliseconds) between polls when in Pull Supplier - Push Consumer mode.

Signals

SIGTERM, SIGINT

Shuts down the server.

SIGUSR1

You can change the traceLevel while the application is running. Send the server SIGUSR1 to bump its traceLevel up by 5. The traceLevel is wrapped at 45, so you can always get it back to where it started by repeatedly sending SIGUSR1.

Example: kill -USR1 `cat /var/run/omniEvents.pid`

Environment Variables

OMNIEVENTS_LOGDIR

Sets the directory where data files are kept by default. An alternative to the -l option.

OMNIORB_CONFIG

The location of the omniORB configuration file.

Copyright

Copyright © 2003-2005 Alex Tingle, 1999 Paul Nader.

This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

omniEvents-2_6_2/doc/re02.html0000644000076400001440000003122610263502271016333 0ustar alexusers00000000000000 omniEvents-win32

Name

omniEvents-win32 — CORBA Event Service for Windows

Synopsis

Command:

omniEvents [-p port] [-a endpoint] [-l directory] [-N factory-name] [-t file] [-vVh]
[-ORBparameter value]

Windows service control:

omniEvents [ install [OPTIONS] | uninstall | setoptions [OPTIONS] | getoptions ]

Description

omniEvents is a CORBA Event Service server program. It is designed to be run as a Windows service.

The server continuously saves its state to a file. Event channels are re-created from this file each time the server restarts. The options -p and -a affect the identity of the server's event channels, so these options can only be set the first time the server is run.

Servers may be configured to operate in pairs - if one fails then clients automatically switch over to the alternate.

Service Control

omniEvents itself has four service set-up commands. The command name must immediately follow the omniEvents. Any normal command-line options which follow the command are stored in the Windows registry. They will be used when the service starts up.

omniEvents install OPTIONS

Install the service with the specified options. The only option that will usually be useful is -t, which instructs omniEvents to send trace logs to a file.

Example: omniEvents install -t "C:\omniEvents\trace.out"

omniEvents uninstall

Uninstalls the service.

omniEvents setoptions OPTIONS

Changes the service's stored options.

omniEvents getoptions

Outputs the service's stored option to standard output.

Once the omniEvents is installed, you can control it from the command line, or from scripts with the Sc.exe command. Sc.exe is distributed with the “Microsoft SDK”.

sc start omniEvents

Starts the server.

sc stop omniEvents

Shuts down the server.

sc control omniEvents 128

You can change the traceLevel while the application is running. Send control signal 128 to the server to bump its traceLevel up by 5. The traceLevel is wrapped at 45, so you can always get it back to where it started by repeatedly sending signal 128.

Options

-p port

Sets the TCP port on which a new server will listen. The default is 11169

This value is stored in the new server's persistent state. There is no need to supply this option when a server is restarted, since the value is read from the file. If the option is supplied then it is simply compared with the stored value - if the two do not match then the program exits with an error.

-a endpoint

Sets an alternate endPoint for a new server. All CORBA object references generated by the server include the alternate address. When clients cannot contact the server, they automatically fall back to trying the alternate address.

This option is exactly equivalent to the ORB parameter endPointNoListen, except that the value is saved in the server's persistency file, so that it is remembered whenever omniEvents is restarted.

The format for a TCP endpoint is giop:tcp:HOST:PORT, for example: -a giop:tcp:secondary.host:11169

This value is stored in the server's persistent state. There is no need to supply this option when a server is restarted, since the value is read from the file. If the option is supplied then it is simply compared with the stored value - if the two do not match then the program exits with an error.

-l directory

Full path to data directory, where omniEvents stores its persistent state. The default is C:\omniEvents

-N factory-name

Sets the CORBA Name Service name for the EventChannelFactory CORBA object. Each time the server starts, it registers its channel factory object with factory-name in the Name Service.

Format for name: [CONTEXT-ID[.CONTEXT-KIND]/]*OBJECT-ID[.OBJECT-KIND]

Examples: foo, foo.bar, foo.bar/baz/qux, foo/bar/baz.qux.

The default is EventChannelFactory

-t file

Send trace messages to file.

-v

Output the CORBA IOR of the EventChannelFactory CORBA object when the server starts.

-V

Display version.

-h

Display a short summary of command-line options.

-ORBparameter value

Standard omniORB options. see omniORB documentation for details. Do NOT use this option to set the endPoint or alternateEndPoint. This option is commonly used to set the omniORB traceLevel, in order to get more detailed output.

Example: -ORBtraceLevel 5

Event Channel Parameters

The omniEvents::EventChannelFactory object implements the standard CosLifeCycle::GenericFactory interface. An EventChannel object is created by a call to the create_object(key,the_criteria) operation.

The “key” parameter must be set to EventChannel”.“object interface. The “the_criteria” parameter is a sequence of various service parameters. Supported parameters are listed below.

CyclePeriod_ns (long)

Sets the cycle period of the channel (nanoseconds). This is the time that the channel waits before transferring messages from the incoming queue to the outgoing queue. While messages are being transferred, incoming calls are queued. The default is 0.1 seconds.

FilterId (string)

Only types whose RepositoryId matches the parameter are permitted to pass through the channel. Other events are silently ignored.

InsName (string)

Sets the name by which the EventChannel is known in omniEvents' INSPOA. You can refer to the channel with a corbaloc string like this: corbaloc::HOST:11169/NAME

MaxNumProxies (long)

The maximum number of ProxyPullSuppliers per channel.

MaxQueueLength (long)

How many events are buffered by the ConsumerAdmin object. The discard policy is FIFO, meaning that the oldest events are discarded first in case of overflow.

PullRetryPeriod_ms (long)

Period (milliseconds) between polls when in Pull Supplier - Push Consumer mode.

Environment Variables

OMNIEVENTS_LOGDIR

Sets the directory where data files are kept by default. An alternative to the -l option.

OMNIORB_CONFIG

The location of the omniORB configuration file.

Copyright

Copyright © 2003-2005 Alex Tingle, 1999 Paul Nader.

This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

omniEvents-2_6_2/doc/re03.html0000644000076400001440000001502710263502271016335 0ustar alexusers00000000000000 eventc

Name

eventc — create a CORBA EventChannel and register it in the naming service

Synopsis

eventc [-n channel-name] [-N factory-name] [-c nanoseconds] [-i id] [-p num] [-q num] [-R milliseconds] [-t repository-id] [-vh] [-ORBparameter value] [factory-uri]

Description

eventc contacts the omniEvents server to request an Event Channel. The Event Channel is created within the the omniEvents process. eventc then registers the created Event Channel with the Naming Service, and exits.

factory-uri: The factory may be specified as a URI. This may be an IOR, or a corbaloc::: or corbaname::: URI.

Example: eventc corbaloc::localhost:11169/omniEvents

If the factory-uri argument is not supplied, then the -N factory-name option is used to look up the server in the CORBA Name Service.

Options

-n channel-name

Sets the CORBA Name Service name for the new EventChannel CORBA object.

Format for channel-name: [CONTEXT-ID[.CONTEXT-KIND]/]*OBJECT-ID[.OBJECT-KIND]

Examples: foo, foo.bar, foo.bar/baz/qux, foo/bar/baz.qux.

The default is EventChannel

-N factory-name

The CORBA Name Service name for the EventChannelFactory CORBA object. The default value is EventChannelFactory. This value is only used when the factory-uri argument is not supplied.

-c nanoseconds

Sets the CyclePeriod_ns parameter of the new event channel.

-i id

Set the InsName of new event channel, to enable access via corbaloc.

-p num

Sets the MaxNumProxies parameter of the new event channel.

-q num

Sets the MaxQueueLength parameter of the new event channel.

-R milliseconds

Sets the PullRetryPeriod_ms parameter of the new event channel.

-t repository-id

Sets the FilterId parameter of the new event channel.

-v

Output the CORBA IOR of the new EventChannel CORBA object.

-h

Display a short summary of command-line options.

-ORBparameter value

Standard omniORB options. see omniORB documentation for details. This option is commonly used to set the omniORB traceLevel, in order to get more detailed output.

Example: -ORBtraceLevel 5

Environment Variables

OMNIORB_CONFIG

The location of the omniORB configuration file.

Copyright

Copyright © 2003-2005 Alex Tingle, 1999 Paul Nader.

This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

omniEvents-2_6_2/doc/re04.html0000644000076400001440000000632110263502271016333 0ustar alexusers00000000000000 eventf

Name

eventf — connect (federate) two CORBA EventChannels

Synopsis

eventf from-channel-uri to-channel-uri

Description

eventf establishes a connection between two event channels. The event channels must both already be in existence (perhaps created by the eventc command). If both event channels are implemented by omniEvents, then the connection is persistent: it will be recreated if one or both of the channels is shut down and later restarted.

The from- and to-channels must be specified as URIs. This may be an IOR, or a corbaloc::: or corbaname::: URI.

Example: eventf corbaname::#from.channel corbaname::#to.channel

Environment Variables

OMNIORB_CONFIG

The location of the omniORB configuration file.

Copyright

Copyright © 2004,2005 Alex Tingle.

This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

omniEvents-2_6_2/doc/re05.html0000644000076400001440000001127610263502271016341 0ustar alexusers00000000000000 events

Name

events — stream events from or to a CORBA EventChannel

Synopsis

events [-n channel-name] [-s] [-h] [-ORBparameter value] [channel-uri]

Description

events streams events from an event channel to standard output, or (-s) from standard input to an event channel.

Events are streamed in raw binary form, accompanied by a timestamp. When the stream is played back into a channel, the timestamps are used the replicate the original delays between the messages.

The main use for this command it to record sets of events and play them back later for testing.

Recording example: events corbaname::#EventChannel > test.dat

Playback example: events -s corbaname::#EventChannel < test.dat

Options

-n channel-name

The CORBA Name Service name used to look up the EventChannel CORBA object.

Format for channel-name: [CONTEXT-ID[.CONTEXT-KIND]/]*OBJECT-ID[.OBJECT-KIND]

Examples: foo, foo.bar, foo.bar/baz/qux, foo/bar/baz.qux.

The default is EventChannel

-s

Supply mode. Read events from standard input.

-h

Display a short summary of command-line options.

-ORBparameter value

Standard omniORB options. see omniORB documentation for details. This option is commonly used to set the omniORB traceLevel, in order to get more detailed output.

Example: -ORBtraceLevel 5

Environment Variables

OMNIORB_CONFIG

The location of the omniORB configuration file.

Copyright

Copyright © 2004,2005 Alex Tingle.

This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

omniEvents-2_6_2/doc/re06.html0000644000076400001440000001005610263502271016335 0ustar alexusers00000000000000 rmeventc

Name

rmeventc — destroy a CORBA EventChannel

Synopsis

rmeventc [-n channel-name] [-h] [-ORBparameter value] [channel-uri]

Description

rmeventc connects to an event channel and calls its destroy() operation. If the channel is located by the -n option, then the name is unbound (removed) from the Name Service.

Example: rmeventc -nfoo/bar/baz.qux

Options

-n channel-name

The CORBA Name Service name used to look up the EventChannel CORBA object.

Format for channel-name: [CONTEXT-ID[.CONTEXT-KIND]/]*OBJECT-ID[.OBJECT-KIND]

Examples: foo, foo.bar, foo.bar/baz/qux, foo/bar/baz.qux.

The default is EventChannel

-h

Display a short summary of command-line options.

-ORBparameter value

Standard omniORB options. see omniORB documentation for details. This option is commonly used to set the omniORB traceLevel, in order to get more detailed output.

Example: -ORBtraceLevel 5

Environment Variables

OMNIORB_CONFIG

The location of the omniORB configuration file.

Copyright

Copyright © 2003-2005 Alex Tingle.

This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

omniEvents-2_6_2/doc/ar01s07.html0000644000076400001440000000434310263502271016660 0ustar alexusers00000000000000 7. Reference

7. Reference

omniEvents - CORBA Event Service daemon
omniEvents-win32 - CORBA Event Service for Windows
eventc - create a CORBA EventChannel and register it in the naming service
eventf - connect (federate) two CORBA EventChannels
events - stream events from or to a CORBA EventChannel
rmeventc - destroy a CORBA EventChannel
omniEvents-2_6_2/doc/index.html0000644000076400001440000001411410263502271016667 0ustar alexusers00000000000000 omniEvents

omniEvents

This work is licensed under the Creative Commons Attribution License. To view a copy of this license, visit http://creativecommons.org/licenses/by/2.0/ or send a letter to Creative Commons, 559 Nathan Abbott Way, Stanford, California 94305, USA.

Abstract

Information on installing, building and using omniEvents, an implementation of the OMG Event Service Specification v1.1 for omniORB3 and omniORB4.


omniEvents-2_6_2/etc/0000755000076400001440000000000010240451204014671 5ustar alexusers00000000000000omniEvents-2_6_2/etc/default/0000755000076400001440000000000010227236244016327 5ustar alexusers00000000000000omniEvents-2_6_2/etc/default/omniorb-eventservice0000644000076400001440000000234110227236244022417 0ustar alexusers00000000000000## /etc/default/omniorb-eventservice ## ## Configuration file for omniEvents. ## ## This is a shell file, sourced from the SYS-V init script. ## All of the options are commented out by default. ## ## ## Set this option to change the directory in which omniEvents keeps its ## persistency files. The `export' is important! #OMNIEVENTS_LOGDIR=/var/lib/omniEvents #export OMNIEVENTS_LOGDIR ## ## Determines the port on which omniEvents will listen. #OMNIEVENTS_PORT=11169 ## ## The name of omniEvents' EventChannelFactory in the naming service. ## Examples: TopLevelName Context/SubContext/Id.Kind #OMNIEVENTS_NS_NAME=EventChannelFactory ## ## Set alternate endPoint for failover. The address should point to the ## alternate omniEvents daemon, usually on another machine. #OMNIEVENTS_ALTERNATE=giop:tcp::11169 ## ## On machines with multiple network adapters, omniORB servers sometimes bind ## to the wrong IP address. Set this variable to force omniORB to bind to a ## particular hostname. The `export' is important! #OMNIORB_USEHOSTNAME= #export OMNIORB_USEHOSTNAME ## ## Any other options. ## For debugging, you might set it to: -ORBtraceLevel 10 -t/var/log/omniEvents.log #OMNIEVENTS_OPTIONS= omniEvents-2_6_2/etc/Makefile0000644000076400001440000000363210240451204016335 0ustar alexusers00000000000000# Package : omniEvents # etc/Makefile Created : 2004/3/31 # Author : Alex Tingle # # Copyright (C) 2004 Alex Tingle. # # This file is part of the omniEvents application. # # omniEvents is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either # version 2.1 of the License, or (at your option) any later version. # # omniEvents is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public # License along with this library; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # include ../config.mk # The init script is installed in /etc/init.d or /sbin/init.d, so long as that # directory ALREADY EXISTS. # Exception: If DESTDIR is set, then always install. ifndef DESTDIR INSTALLCHECK := installcheck endif # The config file is installed in /etc/default or /etc/sysconfig. An existing # config file is never overwritten or uninstalled. SERVICE_NAME := omniorb-eventservice all: installcheck: test -d $(INSTALL_ETC)/init.d || \ ( echo "No such directory: $(INSTALL_ETC)/init.d" ; exit 1 ) install: $(INSTALLCHECK) $(INSTALL) -d $(INSTALL_ETC)/init.d $(INSTALL) -d $(SYSCONFIG_DIR) $(INSTALL) -m 744 init.d/$(SERVICE_NAME) $(INSTALL_ETC)/init.d test -f $(SYSCONFIG_DIR)/$(SERVICE_NAME) || \ $(INSTALL) -m 644 default/$(SERVICE_NAME) $(SYSCONFIG_DIR) uninstall: # Don't uninstall config file. $(RM) $(INSTALL_ETC)/init.d/$(SERVICE_NAME) clean: .PHONY: all installcheck install uninstall clean omniEvents-2_6_2/etc/init.d/0000755000076400001440000000000010263503271016065 5ustar alexusers00000000000000omniEvents-2_6_2/etc/init.d/omniorb-eventservice.in0000755000076400001440000000576510240451205022574 0ustar alexusers00000000000000#! /bin/sh # Package : omniEvents # omniorb-eventservice Created : 2004/07/11 # Author : Alex Tingle # This file is part of the omniEvents application, most of which is licensed # under the Lesser GPL. This file ONLY is hereby released into the public # domain by Alex Tingle (2004/07/11). # # This SysV init script is LSB 1.3 compliant. # It should work fine on any SysV system. # ### BEGIN INIT INFO # Provides: omniorb-eventservice # Required-Start: $syslog $network # Required-Stop: $syslog # Default-Start: 3 4 5 # Default-Stop: 0 1 2 6 # Short-Description: CORBA event service # Description: CORBA event service. http://www.omnievents.org/ ### END INIT INFO # ---------------------- the real stuff starts here---------------------------- # You might want to tweak the location of the configuration file: CONFIGFILE=@SYSCONFIG_DIR@/omniorb-eventservice PATH=/sbin:/bin:/usr/sbin:/usr/bin DAEMON=@prefix@/sbin/omniEvents NAME=omniEvents DESC="CORBA event service" test -f $DAEMON || exit 5 # # Default parameters. Don't change these here. Change them by setting them in # file $CONFIGFILE test -z "$OMNIEVENTS_LOGDIR" && OMNIEVENTS_LOGDIR=/var/lib/omniEvents test -z "$OMNIEVENTS_PORT" && OMNIEVENTS_PORT=11169 OMNIEVENTS_PIDFILE=/var/run/$NAME.pid # Load default preferences test -f $CONFIGFILE && . $CONFIGFILE # Calculate OPT_ALTERNATE & OPT_NS_NAME test -n "$OMNIEVENTS_ALTERNATE" && OPT_ALTERNATE="-a $OMNIEVENTS_ALTERNATE" test -n "$OMNIEVENTS_NS_NAME" && OPT_NS_NAME="-N $OMNIEVENTS_NS_NAME" startOE() { test -d $OMNIEVENTS_LOGDIR || mkdir -p $OMNIEVENTS_LOGDIR printf "Starting $DESC on port $OMNIEVENTS_PORT: " $DAEMON $OMNIEVENTS_OPTIONS -P $OMNIEVENTS_PIDFILE -l $OMNIEVENTS_LOGDIR \ -p $OMNIEVENTS_PORT $OPT_ALTERNATE $OPT_NS_NAME echo "$NAME." } # If omniEvents is running, then send it SIGTERM and wait for # up to 6 seconds for it to delete its PID file. stopOE() { if [ -f $OMNIEVENTS_PIDFILE ] ; then printf "Stopping $DESC: " kill `cat $OMNIEVENTS_PIDFILE` || rm -f $OMNIEVENTS_PIDFILE 2>/dev/null t=0 while test -f $OMNIEVENTS_PIDFILE -a $t -lt 6 ; do sleep 1 t=`expr $t + 1` done echo "$NAME." fi } case "$1" in start) startOE ;; stop) stopOE ;; restart) stopOE startOE ;; status) if [ -f $OMNIEVENTS_PIDFILE ] ; then PID=`cat $OMNIEVENTS_PIDFILE` kill -0 $PID 2>/dev/null if [ "$?" = "0" ] ; then echo "$NAME running. PID=$PID" else echo "$NAME dead. PID=$PID" exit 1 fi else echo "$NAME stopped." exit 3 fi ;; force-reload) stopOE startOE ;; reload) echo "Not implemented." exit 3 ;; *) N=@INSTALL_ETC@/init.d/omniorb-eventservice echo "Usage: $N {start|stop|restart|status}" >&2 exit 1 ;; esac exit 0 omniEvents-2_6_2/examples/0000755000076400001440000000000010303671734015750 5ustar alexusers00000000000000omniEvents-2_6_2/examples/java/0000755000076400001440000000000010240451205016656 5ustar alexusers00000000000000omniEvents-2_6_2/examples/java/gnu/0000755000076400001440000000000010227236244017460 5ustar alexusers00000000000000omniEvents-2_6_2/examples/java/gnu/getopt/0000755000076400001440000000000010227236244020762 5ustar alexusers00000000000000omniEvents-2_6_2/examples/java/gnu/getopt/COPYING.LIB0000644000076400001440000006130310227236244022425 0ustar alexusers00000000000000 GNU LIBRARY GENERAL PUBLIC LICENSE Version 2, June 1991 Copyright (C) 1991 Free Software Foundation, Inc. 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. [This is the first released version of the library GPL. It is numbered 2 because it goes with version 2 of the ordinary GPL.] Preamble The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public Licenses are intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This license, the Library General Public License, applies to some specially designated Free Software Foundation software, and to any other libraries whose authors decide to use it. You can use it for your libraries, too. When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs; and that you know you can do these things. To protect your rights, we need to make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights. These restrictions translate to certain responsibilities for you if you distribute copies of the library, or if you modify it. For example, if you distribute copies of the library, whether gratis or for a fee, you must give the recipients all the rights that we gave you. You must make sure that they, too, receive or can get the source code. If you link a program with the library, you must provide complete object files to the recipients so that they can relink them with the library, after making changes to the library and recompiling it. And you must show them these terms so they know their rights. Our method of protecting your rights has two steps: (1) copyright the library, and (2) offer you this license which gives you legal permission to copy, distribute and/or modify the library. Also, for each distributor's protection, we want to make certain that everyone understands that there is no warranty for this free library. If the library is modified by someone else and passed on, we want its recipients to know that what they have is not the original version, so that any problems introduced by others will not reflect on the original authors' reputations. Finally, any free program is threatened constantly by software patents. We wish to avoid the danger that companies distributing free software will individually obtain patent licenses, thus in effect transforming the program into proprietary software. To prevent this, we have made it clear that any patent must be licensed for everyone's free use or not licensed at all. Most GNU software, including some libraries, is covered by the ordinary GNU General Public License, which was designed for utility programs. This license, the GNU Library General Public License, applies to certain designated libraries. This license is quite different from the ordinary one; be sure to read it in full, and don't assume that anything in it is the same as in the ordinary license. The reason we have a separate public license for some libraries is that they blur the distinction we usually make between modifying or adding to a program and simply using it. Linking a program with a library, without changing the library, is in some sense simply using the library, and is analogous to running a utility program or application program. However, in a textual and legal sense, the linked executable is a combined work, a derivative of the original library, and the ordinary General Public License treats it as such. Because of this blurred distinction, using the ordinary General Public License for libraries did not effectively promote software sharing, because most developers did not use the libraries. We concluded that weaker conditions might promote sharing better. However, unrestricted linking of non-free programs would deprive the users of those programs of all benefit from the free status of the libraries themselves. This Library General Public License is intended to permit developers of non-free programs to use free libraries, while preserving your freedom as a user of such programs to change the free libraries that are incorporated in them. (We have not seen how to achieve this as regards changes in header files, but we have achieved it as regards changes in the actual functions of the Library.) The hope is that this will lead to faster development of free libraries. The precise terms and conditions for copying, distribution and modification follow. Pay close attention to the difference between a "work based on the library" and a "work that uses the library". The former contains code derived from the library, while the latter only works together with the library. Note that it is possible for a library to be covered by the ordinary General Public License rather than by this special one. GNU LIBRARY GENERAL PUBLIC LICENSE TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 0. This License Agreement applies to any software library which contains a notice placed by the copyright holder or other authorized party saying it may be distributed under the terms of this Library General Public License (also called "this License"). Each licensee is addressed as "you". A "library" means a collection of software functions and/or data prepared so as to be conveniently linked with application programs (which use some of those functions and data) to form executables. The "Library", below, refers to any such software library or work which has been distributed under these terms. A "work based on the Library" means either the Library or any derivative work under copyright law: that is to say, a work containing the Library or a portion of it, either verbatim or with modifications and/or translated straightforwardly into another language. (Hereinafter, translation is included without limitation in the term "modification".) "Source code" for a work means the preferred form of the work for making modifications to it. For a library, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the library. Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running a program using the Library is not restricted, and output from such a program is covered only if its contents constitute a work based on the Library (independent of the use of the Library in a tool for writing it). Whether that is true depends on what the Library does and what the program that uses the Library does. 1. You may copy and distribute verbatim copies of the Library's complete source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and distribute a copy of this License along with the Library. You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee. 2. You may modify your copy or copies of the Library or any portion of it, thus forming a work based on the Library, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions: a) The modified work must itself be a software library. b) You must cause the files modified to carry prominent notices stating that you changed the files and the date of any change. c) You must cause the whole of the work to be licensed at no charge to all third parties under the terms of this License. d) If a facility in the modified Library refers to a function or a table of data to be supplied by an application program that uses the facility, other than as an argument passed when the facility is invoked, then you must make a good faith effort to ensure that, in the event an application does not supply such function or table, the facility still operates, and performs whatever part of its purpose remains meaningful. (For example, a function in a library to compute square roots has a purpose that is entirely well-defined independent of the application. Therefore, Subsection 2d requires that any application-supplied function or table used by this function must be optional: if the application does not supply it, the square root function must still compute square roots.) These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Library, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Library, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Library. In addition, mere aggregation of another work not based on the Library with the Library (or with a work based on the Library) on a volume of a storage or distribution medium does not bring the other work under the scope of this License. 3. You may opt to apply the terms of the ordinary GNU General Public License instead of this License to a given copy of the Library. To do this, you must alter all the notices that refer to this License, so that they refer to the ordinary GNU General Public License, version 2, instead of to this License. (If a newer version than version 2 of the ordinary GNU General Public License has appeared, then you can specify that version instead if you wish.) Do not make any other change in these notices. Once this change is made in a given copy, it is irreversible for that copy, so the ordinary GNU General Public License applies to all subsequent copies and derivative works made from that copy. This option is useful when you wish to copy part of the code of the Library into a program that is not a library. 4. You may copy and distribute the Library (or a portion or derivative of it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange. If distribution of object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place satisfies the requirement to distribute the source code, even though third parties are not compelled to copy the source along with the object code. 5. A program that contains no derivative of any portion of the Library, but is designed to work with the Library by being compiled or linked with it, is called a "work that uses the Library". Such a work, in isolation, is not a derivative work of the Library, and therefore falls outside the scope of this License. However, linking a "work that uses the Library" with the Library creates an executable that is a derivative of the Library (because it contains portions of the Library), rather than a "work that uses the library". The executable is therefore covered by this License. Section 6 states terms for distribution of such executables. When a "work that uses the Library" uses material from a header file that is part of the Library, the object code for the work may be a derivative work of the Library even though the source code is not. Whether this is true is especially significant if the work can be linked without the Library, or if the work is itself a library. The threshold for this to be true is not precisely defined by law. If such an object file uses only numerical parameters, data structure layouts and accessors, and small macros and small inline functions (ten lines or less in length), then the use of the object file is unrestricted, regardless of whether it is legally a derivative work. (Executables containing this object code plus portions of the Library will still fall under Section 6.) Otherwise, if the work is a derivative of the Library, you may distribute the object code for the work under the terms of Section 6. Any executables containing that work also fall under Section 6, whether or not they are linked directly with the Library itself. 6. As an exception to the Sections above, you may also compile or link a "work that uses the Library" with the Library to produce a work containing portions of the Library, and distribute that work under terms of your choice, provided that the terms permit modification of the work for the customer's own use and reverse engineering for debugging such modifications. You must give prominent notice with each copy of the work that the Library is used in it and that the Library and its use are covered by this License. You must supply a copy of this License. If the work during execution displays copyright notices, you must include the copyright notice for the Library among them, as well as a reference directing the user to the copy of this License. Also, you must do one of these things: a) Accompany the work with the complete corresponding machine-readable source code for the Library including whatever changes were used in the work (which must be distributed under Sections 1 and 2 above); and, if the work is an executable linked with the Library, with the complete machine-readable "work that uses the Library", as object code and/or source code, so that the user can modify the Library and then relink to produce a modified executable containing the modified Library. (It is understood that the user who changes the contents of definitions files in the Library will not necessarily be able to recompile the application to use the modified definitions.) b) Accompany the work with a written offer, valid for at least three years, to give the same user the materials specified in Subsection 6a, above, for a charge no more than the cost of performing this distribution. c) If distribution of the work is made by offering access to copy from a designated place, offer equivalent access to copy the above specified materials from the same place. d) Verify that the user has already received a copy of these materials or that you have already sent this user a copy. For an executable, the required form of the "work that uses the Library" must include any data and utility programs needed for reproducing the executable from it. However, as a special exception, the source code distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable. It may happen that this requirement contradicts the license restrictions of other proprietary libraries that do not normally accompany the operating system. Such a contradiction means you cannot use both them and the Library together in an executable that you distribute. 7. You may place library facilities that are a work based on the Library side-by-side in a single library together with other library facilities not covered by this License, and distribute such a combined library, provided that the separate distribution of the work based on the Library and of the other library facilities is otherwise permitted, and provided that you do these two things: a) Accompany the combined library with a copy of the same work based on the Library, uncombined with any other library facilities. This must be distributed under the terms of the Sections above. b) Give prominent notice with the combined library of the fact that part of it is a work based on the Library, and explaining where to find the accompanying uncombined form of the same work. 8. You may not copy, modify, sublicense, link with, or distribute the Library except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense, link with, or distribute the Library is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. 9. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Library or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Library (or any work based on the Library), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Library or works based on it. 10. Each time you redistribute the Library (or any work based on the Library), the recipient automatically receives a license from the original licensor to copy, distribute, link with or modify the Library subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties to this License. 11. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Library at all. For example, if a patent license would not permit royalty-free redistribution of the Library by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Library. If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply, and the section as a whole is intended to apply in other circumstances. It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice. This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. 12. If the distribution and/or use of the Library is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Library under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License. 13. The Free Software Foundation may publish revised and/or new versions of the Library General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Library specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Library does not specify a license version number, you may choose any version ever published by the Free Software Foundation. 14. If you wish to incorporate parts of the Library into other free programs whose distribution conditions are incompatible with these, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. NO WARRANTY 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. END OF TERMS AND CONDITIONS Appendix: How to Apply These Terms to Your New Libraries If you develop a new library, and you want it to be of the greatest possible use to the public, we recommend making it free software that everyone can redistribute and change. You can do so by permitting redistribution under these terms (or, alternatively, under the terms of the ordinary General Public License). To apply these terms, attach the following notices to the library. It is safest to attach them to the start of each source file to most effectively convey the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. Copyright (C) This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more details. You should have received a copy of the GNU Library General Public License along with this library; if not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA Also add information on how to contact you by electronic and paper mail. You should also get your employer (if you work as a programmer) or your school, if any, to sign a "copyright disclaimer" for the library, if necessary. Here is a sample; alter the names: Yoyodyne, Inc., hereby disclaims all copyright interest in the library `Frob' (a library for tweaking knobs) written by James Random Hacker. , 1 April 1990 Ty Coon, President of Vice That's all there is to it! omniEvents-2_6_2/examples/java/gnu/getopt/ChangeLog0000644000076400001440000000602010227236244022532 0ustar alexusers00000000000000For release 1.9.9 (2002/01/16) Yasuoka Masahiko provided Japanese langauge messages. Csom Gyula provided Hungarian languag messages. Guillaume Rousse supplied the ant build file and documentation. For release 1.0.8 (2000/09/11) Ernst de Haan provided Dutch language messages. For release 1.0.7 (2000/02/02) Fixed an obscure POSIX compatibility issue. When an optstring is "o:", then "-o -- foo" should result in -o having an optarg of "foo", not "--" as was previously returned. This new parsing behavior is only enabled in POSIX compatibility mode. Thank to Don Suit (dsuit@fc.hp.com) for reporting this and help in communicating proper POSIX behavior. For release 1.0.6 (1999/06/27) Added French language messages. Thanks to Edouard G. Parmelan (Edouard.Parmelan@quadratec.fr) for this contribution. For release 1.0.5 (1999/03/23) Fixed bug that caused getopt to throw a StringIndexOutOfBoundsException when an empty string ("") argument was encountered. Thanks to Steffen Siebert (siebert@logware.de) for this bug report and a patch. For release 1.0.4 Added Norwegian language messages. Thanks to Bjørn-Ove Heimsund (s811@drone.ii.uib.no) for this contribution. For release 1.0.3 Added German language messages. Thanks to Bernhard Bablok (bablokb@gmx.net) for this contribution. For release 1.0.2 Prevent ArrayIndexOutOfBounds exception if "optstring" is null. David Karr (dkarr@nmo.gtegsc.com) had a problem with this when commenting out options during debugging, so I have fixed it. For release 1.0.1 Added Czech language messages. Thanks to Roman Szturc (Roman.Szturc@vsb.cz) for this contribution. For release 1.0 No changes. Just increment release number to 1.0 For release 0.9.2 The sample code has been moved into a separate file called "GetoptDemo.java". This is so that it can be legally placed into the public domain and not subsumed into the LGPL as would be the case if it were in Getopt.java. While I do not encourage anyone to write proprietary software, I feel that there is no good purpose served in restricting what someone can do with a short example program. Modified the Makefile and various other files to support the change above. For release 0.9.1 This release contains only minor fixes. It's always possible it introduces some bugs though so unless you are keen on internationalization or are having a line separator problem, there is no need to upgrade from 0.9. -- Messages are now internationalized. Thanks to Bill King (wrking@eng.sun.com) for this. -- Changes all print's to println's to avoid system dependent line separators. -- All internal variables are now protected. Several people suggested doing this in response to my request for comments in the help file. No one suggested keeping any variables public. -- Fixed parts of licensing that mentioned the regular GPL. Getopt is and always has been licensed under the LPGL. Thanks to Arieh Markel (arieh.markel@sun.com) for pointing this out. omniEvents-2_6_2/examples/java/gnu/getopt/Getopt.class0000644000076400001440000001646210227236244023264 0ustar alexusers00000000000000Êþº¾-÷}~—˜šÅÆÇÈÉÊËÌÍÎÑÏÐÔÕÖרÙÚÛÜ N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z { | ™‚ ™ƒ ™” «¤ ¯¥ °‡ ±® ²„ ³ ´¬ µŠ ¶¡ ·– ¸Ÿ ¹£ º‘ » ¼ ¾€  Ì ÒŸ Ó… Ó‹ ÝŸ Þ ߬ à­ áŸ â¬ ã¢ ä¢ å¢ æ¬ çŸ èŸ é¢ êŸ ë¬ ì í¢ ïˆ óŽ ô† ô‰ õ€ öŸ ()I()Ljava/lang/String;()Ljava/util/Locale;()V(C)V(I)C(I)I(I)Ljava/lang/String;(I)Ljava/lang/StringBuffer;(I)V(II)Ljava/lang/String;(Ljava/lang/Object;)Z(Ljava/lang/String;)I&(Ljava/lang/String;)Ljava/lang/String;(Ljava/lang/String;)V(Ljava/lang/String;)Z8(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;@(Ljava/lang/String;Ljava/util/Locale;)Ljava/util/ResourceBundle;9(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;:(Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;)VO(Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;[Lgnu/getopt/LongOpt;)VP(Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;[Lgnu/getopt/LongOpt;Z)V(Z)V([Ljava/lang/String;)V---=Code ConstantValue Exceptions Getopt.javaILineNumberTableLjava/io/PrintStream;Ljava/lang/String;Ljava/lang/StringBuffer;Ljava/util/Locale;Ljava/util/ResourceBundle;LocalVariablesPERMUTE REQUIRE_ORDERRETURN_IN_ORDER SourceFileUSZ[Lgnu/getopt/LongOpt;[Ljava/lang/String; _messagesappendargvcharAtcheckLongOptionendparseequalserrexchange first_nonoptflagformat getBundle getDefault getLongindgetName getOptarg getOptind getOptopt getProperty getStringgetoptgetopt.ambigiousgetopt.arguments1getopt.arguments2getopt.illegalgetopt.invalidgetopt.requiresgetopt.requires2getopt.unrecognizedgetopt.unrecognized2gnu.posixly_correctgnu/getopt/Getoptgnu/getopt/LongOptgnu/getopt/MessagesBundlehas_argindexOfjava/io/PrintStreamjava/lang/Characterjava/lang/Objectjava/lang/Stringjava/lang/StringBufferjava/lang/Systemjava/text/MessageFormatjava/util/Localejava/util/ResourceBundle last_nonoptlength long_only long_optionslongindlongopt_handlednamenextcharoptargopterroptindoptopt optstringorderingposixly_correctprintlnprognamesetArgv setLength setOpterr setOptind setOptstring startsWith substringtoStringval!¨Ÿœ§Ÿœ©Ÿœå¢çŸæ¬èŸä¢é¢à­߬áŸë¬â¬¸ŸÝŸ´¬±®êŸí¢¯¥™’›& *+,-·!±  3 1™“›' *+,-·!±  E B™”›rÆ*·*µ@*?µB*µ,*µ7*µ(*¸0¸/µ#-¶8šN*+µG*,µ%*-µC*µ:*µ9¸2Ç *µE§*µE*²"¸/µ#-¶&- *µD-¶8¤@*-¶JµC±-¶&+ *µD-¶8¤*-¶JµC±*´E™ *µD±*µD± š&YÊ Ðÿ  $*\1]4`9a>bCcIdOiXj]i`menhoknqs{u€vˆw‘s’yœ{¡|©}²y³º¿À…ÅYò›4+¶8šL*+µC± š› ˜À›*´A¬ °ñˆ›"*µA±  À¾î–›"*+µ%±  ÑÏ¿€›*´?° áð•›"*µ@±  ïíÁ›*´B¬ ü½›*´;¬ ·–›3¿*´,=*´7>*´A6§‰dd¤Hd66§,+`2:+`+dd`2S+dd`S„¡ÿÓd6§:d66§"+`2:+`+`2S+`S„¡ÿÝ`=¤£ÿr*Y´,*´A*´7d`µ,**´Aµ7± b !"%('0(A)N%X,_b1h5n7v8‚9Š5”<™¤B¶C¾³›ô„L*µ<>6*µ;*´>¶6=  *´>¶8=6§c*´:2¶1*´>¶K¶I™G*´:2¶1*´>¶K¶)™*´:2L*µ;6§'+Ç*´:2L*µ;§>„*´:¾¡ÿ™™TšO*´@™0½Y*´GSY*´%*´A2S:²**´# ¶3¸.¶F*µ>*µB*Y´A`µA?¬+Æ*Y´A`µA*´>¶8ŸÍ+´4™,*´>¶J¶8¤**´>`¶Jµ?§+*µ?§"*´@™…*´%*´Ad2¶I™.½Y*´GSY+´=S:²**´# ¶3¸.¶F§G½Y*´GSY»Y*´%*´Ad2¶&· ¶LSY+´=S:²**´# ¶3¸.¶F*µ>*+´MµB?¬+´4 €*´A*´%¾¢**´%*´A2µ?*Y´A`µA§Z*´@™2½Y*´GSY*´%*´Ad2S:²**´#¶3¸.¶F*µ>*+´MµB*´C¶&: :¬?¬*µ>+´-Æ+´-¶H+´-+´M¶$W¬+´M¬*µ<¬ ^WTYZ [ \^_ `(c.eGg`jhknlqmtoxr€s†o‰x‹c˜~¡€¨‚ÁƒÄ„ͅσՈۉàŠêŒíñ‘û“• —˜*—-š3•6ž=¡P£d¤g¥p¦r¤x¡{«Œ¬›«ž¬¡«¤­¨««®®¯·°¹®¿´ÅµÍ·ÐºØ¼ä¾ñ¿û¼þÃÅ Æ#Ç,È.Æ4Ë:ÌBÍOÎRÐUÔ[ÖbØjÙvÛxÞ}á‚ãÄ› /*µ?*´( ¬*´>Æ*´>¶)™Ò*´7*´A¤ **´Aµ7*´,*´A¤ **´Aµ,*´D Œ*´,*´7Ÿ*´7*´AŸ**´%¶+§#*´7*´AŸ**´Aµ,§ *Y´A`µA*´A*´%¾¢7*´%*´A2¶)šÿÜ*´%*´A2¶&- ÿÊ*´%*´A2¶)šÿ¹**´Aµ7*´A*´%¾Ÿd*´%*´A2¶)™S*Y´A`µA*´,*´7Ÿ*´7*´AŸ**´%¶+§*´,*´7  **´Aµ,**´%¾µ7**´%¾µA*´A*´%¾ *´,*´7Ÿ **´,µA¬*´%*´A2¶)š&*´%*´A2¶&- *´%*´A2¶)™#*´D ¬**´%*Y´AZ`µA2µ?¬*´%*´A2¶I™**´%*´A2¶Jµ>§**´%*´A2¶Jµ>*´:Æ*´%*´A2¶Iš2*´9™ý*´%*´A2¶8£*´C*´%*´A2¶&¶5 Õ*¶'<*´<™¬*´9™'*´%*´A2¶Iš*´C*´>¶&¶5 œ*´@™}*´%*´A2¶I™,½Y*´GSY*´>SM²**´#¶3,¸.¶F§C½Y*´GSY»Y*´%*´A2¶&· ¶LSY*´>SM²**´#¶3,¸.¶F*µ>*Y´A`µA*µB?¬*´>¶&<*´>¶8¤**´>¶Jµ>§ *µ>M*´C¶5Ÿ*´C*´C¶5¶JM*´>¶)™ *Y´A`µA,Æ : x*´@™i*´E™4½Y*´GSY»Y’· ¶LSN²**´# ¶3-¸.¶F§1½Y*´GSY»Y’· ¶LSN²**´# ¶3-¸.¶F*µB?¬,¶&W ¿,¶8¤·,¶&; ­*´>¶)š**´>µ?§v*´A*´%¾ P*´@™1½Y*´GSY»Y’· ¶LSN²**´#¶3-¸.¶F*µB*´C¶&: :¬?¬**´%*´A2µ>**´%*´A2µ?*¶'<*´<™¬*µ>*Y´A`µAW¬,¶8¤|,¶&: r,¶8¤;,¶&: 1*´>¶)š**´>µ?*Y´A`µA§*µ?*µ>§2*´>¶)š**´>µ?*Y´A`µA§ *´A*´%¾ P*´@™1½Y*´GSY»Y’· ¶LSN²**´#¶3-¸.¶F*µB*´C¶&: :¬?¬**´%*´A2µ?*Y´A`µA*´E™•*´?¶)™‰*´A*´%¾ P*´@™1½Y*´GSY»Y’· ¶LSN²**´#¶3-¸.¶F*µB*´C¶&: :¬?¬**´%*´A2µ?*Y´A`µA**´Aµ,**´%¾µ7*µ(*µ>¬ Ú¶ùû üþ"-5@HP f n q |„‡‘®ÑÙö!#$#!%,&4(=*F/R3]4e6g;Š<›>£?¥A¹B»GÌHÝGàJñ[ \ ]8_=aDbFh^iqkxm‰oœpŸq¨r©p¯m²vÃwÐvÓwÖvÙxÝvßyâzë{ìyòø€ƒ ˆ‰Š*‰-Œ3Ž5AQ’]“g•q—x™œ’œ•˜œšžŸ§ž­™°£Á¤Ã£Æ¤É£Ë¥Î¦Ø¥Þªã¬æ°²´²·%¹,¼=½?¼B½E¼G¾J¿T¾ZÂ_ÃlÄoÆrÌ͌БҘӚןة٬ݾßÐâÜääåîâñéöìûßþð òóðõ+÷2úCûEúHûKúMüPýZü`erux … ¢®µÆÈËÎÐÓÝãè õ!ø#û)*+,#-(1-5ªžomniEvents-2_6_2/examples/java/gnu/getopt/Getopt.java0000644000076400001440000013655210227236244023103 0ustar alexusers00000000000000/************************************************************************** /* Getopt.java -- Java port of GNU getopt from glibc 2.0.6 /* /* Copyright (c) 1987-1997 Free Software Foundation, Inc. /* Java Port Copyright (c) 1998 by Aaron M. Renn (arenn@urbanophile.com) /* /* This program is free software; you can redistribute it and/or modify /* it under the terms of the GNU Library General Public License as published /* by the Free Software Foundation; either version 2 of the License or /* (at your option) any later version. /* /* This program is distributed in the hope that it will be useful, but /* WITHOUT ANY WARRANTY; without even the implied warranty of /* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the /* GNU Library General Public License for more details. /* /* You should have received a copy of the GNU Library General Public License /* along with this program; see the file COPYING.LIB. If not, write to /* the Free Software Foundation Inc., 59 Temple Place - Suite 330, /* Boston, MA 02111-1307 USA /**************************************************************************/ package gnu.getopt; import java.util.Locale; import java.util.ResourceBundle; import java.util.PropertyResourceBundle; import java.text.MessageFormat; /**************************************************************************/ /** * This is a Java port of GNU getopt, a class for parsing command line * arguments passed to programs. It it based on the C getopt() functions * in glibc 2.0.6 and should parse options in a 100% compatible manner. * If it does not, that is a bug. The programmer's interface is also * very compatible. *

* To use Getopt, create a Getopt object with a argv array passed to the * main method, then call the getopt() method in a loop. It will return an * int that contains the value of the option character parsed from the * command line. When there are no more options to be parsed, it * returns -1. *

* A command line option can be defined to take an argument. If an * option has an argument, the value of that argument is stored in an * instance variable called optarg, which can be accessed using the * getOptarg() method. If an option that requires an argument is * found, but there is no argument present, then an error message is * printed. Normally getopt() returns a '?' in this situation, but * that can be changed as described below. *

* If an invalid option is encountered, an error message is printed * to the standard error and getopt() returns a '?'. The value of the * invalid option encountered is stored in the instance variable optopt * which can be retrieved using the getOptopt() method. To suppress * the printing of error messages for this or any other error, set * the value of the opterr instance variable to false using the * setOpterr() method. *

* Between calls to getopt(), the instance variable optind is used to * keep track of where the object is in the parsing process. After all * options have been returned, optind is the index in argv of the first * non-option argument. This variable can be accessed with the getOptind() * method. *

* Note that this object expects command line options to be passed in the * traditional Unix manner. That is, proceeded by a '-' character. * Multiple options can follow the '-'. For example "-abc" is equivalent * to "-a -b -c". If an option takes a required argument, the value * of the argument can immediately follow the option character or be * present in the next argv element. For example, "-cfoo" and "-c foo" * both represent an option character of 'c' with an argument of "foo" * assuming c takes a required argument. If an option takes an argument * that is not required, then any argument must immediately follow the * option character in the same argv element. For example, if c takes * a non-required argument, then "-cfoo" represents option character 'c' * with an argument of "foo" while "-c foo" represents the option * character 'c' with no argument, and a first non-option argv element * of "foo". *

* The user can stop getopt() from scanning any further into a command line * by using the special argument "--" by itself. For example: * "-a -- -d" would return an option character of 'a', then return -1 * The "--" is discarded and "-d" is pointed to by optind as the first * non-option argv element. *

* Here is a basic example of using Getopt: *

*

  * Getopt g = new Getopt("testprog", argv, "ab:c::d");
  * //
  * int c;
  * String arg;
  * while ((c = g.getopt()) != -1)
  *   {
  *     switch(c)
  *       {
  *          case 'a':
  *          case 'd':
  *            System.out.print("You picked " + (char)c + "\n");
  *            break;
  *            //
  *          case 'b':
  *          case 'c':
  *            arg = g.getOptarg();
  *            System.out.print("You picked " + (char)c + 
  *                             " with an argument of " +
  *                             ((arg != null) ? arg : "null") + "\n");
  *            break;
  *            //
  *          case '?':
  *            break; // getopt() already printed an error
  *            //
  *          default:
  *            System.out.print("getopt() returned " + c + "\n");
  *       }
  *   }
  * 
*

* In this example, a new Getopt object is created with three params. * The first param is the program name. This is for printing error * messages in the form "program: error message". In the C version, this * value is taken from argv[0], but in Java the program name is not passed * in that element, thus the need for this parameter. The second param is * the argument list that was passed to the main() method. The third * param is the list of valid options. Each character represents a valid * option. If the character is followed by a single colon, then that * option has a required argument. If the character is followed by two * colons, then that option has an argument that is not required. *

* Note in this example that the value returned from getopt() is cast to * a char prior to printing. This is required in order to make the value * display correctly as a character instead of an integer. *

* If the first character in the option string is a colon, for example * ":abc::d", then getopt() will return a ':' instead of a '?' when it * encounters an option with a missing required argument. This allows the * caller to distinguish between invalid options and valid options that * are simply incomplete. *

* In the traditional Unix getopt(), -1 is returned when the first non-option * charcter is encountered. In GNU getopt(), the default behavior is to * allow options to appear anywhere on the command line. The getopt() * method permutes the argument to make it appear to the caller that all * options were at the beginning of the command line, and all non-options * were at the end. For example, calling getopt() with command line args * of "-a foo bar -d" returns options 'a' and 'd', then sets optind to * point to "foo". The program would read the last two argv elements as * "foo" and "bar", just as if the user had typed "-a -d foo bar". *

* The user can force getopt() to stop scanning the command line with * the special argument "--" by itself. Any elements occuring before the * "--" are scanned and permuted as normal. Any elements after the "--" * are returned as is as non-option argv elements. For example, * "foo -a -- bar -d" would return option 'a' then -1. optind would point * to "foo", "bar" and "-d" as the non-option argv elements. The "--" * is discarded by getopt(). *

* There are two ways this default behavior can be modified. The first is * to specify traditional Unix getopt() behavior (which is also POSIX * behavior) in which scanning stops when the first non-option argument * encountered. (Thus "-a foo bar -d" would return 'a' as an option and * have "foo", "bar", and "-d" as non-option elements). The second is to * allow options anywhere, but to return all elements in the order they * occur on the command line. When a non-option element is ecountered, * an integer 1 is returned and the value of the non-option element is * stored in optarg is if it were the argument to that option. For * example, "-a foo -d", returns first 'a', then 1 (with optarg set to * "foo") then 'd' then -1. When this "return in order" functionality * is enabled, the only way to stop getopt() from scanning all command * line elements is to use the special "--" string by itself as described * above. An example is "-a foo -b -- bar", which would return 'a', then * integer 1 with optarg set to "foo", then 'b', then -1. optind would * then point to "bar" as the first non-option argv element. The "--" * is discarded. *

* The POSIX/traditional behavior is enabled by either setting the * property "gnu.posixly_correct" or by putting a '+' sign as the first * character of the option string. The difference between the two * methods is that setting the gnu.posixly_correct property also forces * certain error messages to be displayed in POSIX format. To enable * the "return in order" functionality, put a '-' as the first character * of the option string. Note that after determining the proper * behavior, Getopt strips this leading '+' or '-', meaning that a ':' * placed as the second character after one of those two will still cause * getopt() to return a ':' instead of a '?' if a required option * argument is missing. *

* In addition to traditional single character options, GNU Getopt also * supports long options. These are preceeded by a "--" sequence and * can be as long as desired. Long options provide a more user-friendly * way of entering command line options. For example, in addition to a * "-h" for help, a program could support also "--help". *

* Like short options, long options can also take a required or non-required * argument. Required arguments can either be specified by placing an * equals sign after the option name, then the argument, or by putting the * argument in the next argv element. For example: "--outputdir=foo" and * "--outputdir foo" both represent an option of "outputdir" with an * argument of "foo", assuming that outputdir takes a required argument. * If a long option takes a non-required argument, then the equals sign * form must be used to specify the argument. In this case, * "--outputdir=foo" would represent option outputdir with an argument of * "foo" while "--outputdir foo" would represent the option outputdir * with no argument and a first non-option argv element of "foo". *

* Long options can also be specified using a special POSIX argument * format (one that I highly discourage). This form of entry is * enabled by placing a "W;" (yes, 'W' then a semi-colon) in the valid * option string. This causes getopt to treat the name following the * "-W" as the name of the long option. For example, "-W outputdir=foo" * would be equivalent to "--outputdir=foo". The name can immediately * follow the "-W" like so: "-Woutputdir=foo". Option arguments are * handled identically to normal long options. If a string follows the * "-W" that does not represent a valid long option, then getopt() returns * 'W' and the caller must decide what to do. Otherwise getopt() returns * a long option value as described below. *

* While long options offer convenience, they can also be tedious to type * in full. So it is permissible to abbreviate the option name to as * few characters as required to uniquely identify it. If the name can * represent multiple long options, then an error message is printed and * getopt() returns a '?'. *

* If an invalid option is specified or a required option argument is * missing, getopt() prints an error and returns a '?' or ':' exactly * as for short options. Note that when an invalid long option is * encountered, the optopt variable is set to integer 0 and so cannot * be used to identify the incorrect option the user entered. *

* Long options are defined by LongOpt objects. These objects are created * with a contructor that takes four params: a String representing the * object name, a integer specifying what arguments the option takes * (the value is one of LongOpt.NO_ARGUMENT, LongOpt.REQUIRED_ARGUMENT, * or LongOpt.OPTIONAL_ARGUMENT), a StringBuffer flag object (described * below), and an integer value (described below). *

* To enable long option parsing, create an array of LongOpt's representing * the legal options and pass it to the Getopt() constructor. WARNING: If * all elements of the array are not populated with LongOpt objects, the * getopt() method will throw a NullPointerException. *

* When getopt() is called and a long option is encountered, one of two * things can be returned. If the flag field in the LongOpt object * representing the long option is non-null, then the integer value field * is stored there and an integer 0 is returned to the caller. The val * field can then be retrieved from the flag field. Note that since the * flag field is a StringBuffer, the appropriate String to integer converions * must be performed in order to get the actual int value stored there. * If the flag field in the LongOpt object is null, then the value field * of the LongOpt is returned. This can be the character of a short option. * This allows an app to have both a long and short option sequence * (say, "-h" and "--help") that do the exact same thing. *

* With long options, there is an alternative method of determining * which option was selected. The method getLongind() will return the * the index in the long option array (NOT argv) of the long option found. * So if multiple long options are configured to return the same value, * the application can use getLongind() to distinguish between them. *

* Here is an expanded Getopt example using long options and various * techniques described above: *

*

  * int c;
  * String arg;
  * LongOpt[] longopts = new LongOpt[3];
  * // 
  * StringBuffer sb = new StringBuffer();
  * longopts[0] = new LongOpt("help", LongOpt.NO_ARGUMENT, null, 'h');
  * longopts[1] = new LongOpt("outputdir", LongOpt.REQUIRED_ARGUMENT, sb, 'o'); 
  * longopts[2] = new LongOpt("maximum", LongOpt.OPTIONAL_ARGUMENT, null, 2);
  * // 
  * Getopt g = new Getopt("testprog", argv, "-:bc::d:hW;", longopts);
  * g.setOpterr(false); // We'll do our own error handling
  * //
  * while ((c = g.getopt()) != -1)
  *   switch (c)
  *     {
  *        case 0:
  *          arg = g.getOptarg();
  *          System.out.println("Got long option with value '" +
  *                             (char)(new Integer(sb.toString())).intValue()
  *                             + "' with argument " +
  *                             ((arg != null) ? arg : "null"));
  *          break;
  *          //
  *        case 1:
  *          System.out.println("I see you have return in order set and that " +
  *                             "a non-option argv element was just found " +
  *                             "with the value '" + g.getOptarg() + "'");
  *          break;
  *          //
  *        case 2:
  *          arg = g.getOptarg();
  *          System.out.println("I know this, but pretend I didn't");
  *          System.out.println("We picked option " +
  *                             longopts[g.getLongind()].getName() +
  *                           " with value " + 
  *                           ((arg != null) ? arg : "null"));
  *          break;
  *          //
  *        case 'b':
  *          System.out.println("You picked plain old option " + (char)c);
  *          break;
  *          //
  *        case 'c':
  *        case 'd':
  *          arg = g.getOptarg();
  *          System.out.println("You picked option '" + (char)c + 
  *                             "' with argument " +
  *                             ((arg != null) ? arg : "null"));
  *          break;
  *          //
  *        case 'h':
  *          System.out.println("I see you asked for help");
  *          break;
  *          //
  *        case 'W':
  *          System.out.println("Hmmm. You tried a -W with an incorrect long " +
  *                             "option name");
  *          break;
  *          //
  *        case ':':
  *          System.out.println("Doh! You need an argument for option " +
  *                             (char)g.getOptopt());
  *          break;
  *          //
  *        case '?':
  *          System.out.println("The option '" + (char)g.getOptopt() + 
  *                           "' is not valid");
  *          break;
  *          //
  *        default:
  *          System.out.println("getopt() returned " + c);
  *          break;
  *     }
  * //
  * for (int i = g.getOptind(); i < argv.length ; i++)
  *   System.out.println("Non option argv element: " + argv[i] + "\n");
  * 
*

* There is an alternative form of the constructor used for long options * above. This takes a trailing boolean flag. If set to false, Getopt * performs identically to the example, but if the boolean flag is true * then long options are allowed to start with a single '-' instead of * "--". If the first character of the option is a valid short option * character, then the option is treated as if it were the short option. * Otherwise it behaves as if the option is a long option. Note that * the name given to this option - long_only - is very counter-intuitive. * It does not cause only long options to be parsed but instead enables * the behavior described above. *

* Note that the functionality and variable names used are driven from * the C lib version as this object is a port of the C code, not a * new implementation. This should aid in porting existing C/C++ code, * as well as helping programmers familiar with the glibc version to * adapt to the Java version even if it seems very non-Java at times. *

* In this release I made all instance variables protected due to * overwhelming public demand. Any code which relied on optarg, * opterr, optind, or optopt being public will need to be modified to * use the appropriate access methods. *

* Please send all bug reports, requests, and comments to * arenn@urbanophile.com. * * @version 1.0.7 * * @author Roland McGrath (roland@gnu.ai.mit.edu) * @author Ulrich Drepper (drepper@cygnus.com) * @author Aaron M. Renn (arenn@urbanophile.com) * * @see LongOpt */ public class Getopt extends Object { /**************************************************************************/ /* * Class Variables */ /** * Describe how to deal with options that follow non-option ARGV-elements. * * If the caller did not specify anything, * the default is REQUIRE_ORDER if the property * gnu.posixly_correct is defined, PERMUTE otherwise. * * The special argument `--' forces an end of option-scanning regardless * of the value of `ordering'. In the case of RETURN_IN_ORDER, only * `--' can cause `getopt' to return -1 with `optind' != ARGC. * * REQUIRE_ORDER means don't recognize them as options; * stop option processing when the first non-option is seen. * This is what Unix does. * This mode of operation is selected by either setting the property * gnu.posixly_correct, or using `+' as the first character * of the list of option characters. */ protected static final int REQUIRE_ORDER = 1; /** * PERMUTE is the default. We permute the contents of ARGV as we scan, * so that eventually all the non-options are at the end. This allows options * to be given in any order, even with programs that were not written to * expect this. */ protected static final int PERMUTE = 2; /** * RETURN_IN_ORDER is an option available to programs that were written * to expect options and other ARGV-elements in any order and that care about * the ordering of the two. We describe each non-option ARGV-element * as if it were the argument of an option with character code 1. * Using `-' as the first character of the list of option characters * selects this mode of operation. */ protected static final int RETURN_IN_ORDER = 3; /**************************************************************************/ /* * Instance Variables */ /** * For communication from `getopt' to the caller. * When `getopt' finds an option that takes an argument, * the argument value is returned here. * Also, when `ordering' is RETURN_IN_ORDER, * each non-option ARGV-element is returned here. */ protected String optarg; /** * Index in ARGV of the next element to be scanned. * This is used for communication to and from the caller * and for communication between successive calls to `getopt'. * * On entry to `getopt', zero means this is the first call; initialize. * * When `getopt' returns -1, this is the index of the first of the * non-option elements that the caller should itself scan. * * Otherwise, `optind' communicates from one call to the next * how much of ARGV has been scanned so far. */ protected int optind = 0; /** * Callers store false here to inhibit the error message * for unrecognized options. */ protected boolean opterr = true; /** * When an unrecognized option is encountered, getopt will return a '?' * and store the value of the invalid option here. */ protected int optopt = '?'; /** * The next char to be scanned in the option-element * in which the last option character we returned was found. * This allows us to pick up the scan where we left off. * * If this is zero, or a null string, it means resume the scan * by advancing to the next ARGV-element. */ protected String nextchar; /** * This is the string describing the valid short options. */ protected String optstring; /** * This is an array of LongOpt objects which describ the valid long * options. */ protected LongOpt[] long_options; /** * This flag determines whether or not we are parsing only long args */ protected boolean long_only; /** * Stores the index into the long_options array of the long option found */ protected int longind; /** * The flag determines whether or not we operate in strict POSIX compliance */ protected boolean posixly_correct; /** * A flag which communicates whether or not checkLongOption() did all * necessary processing for the current option */ protected boolean longopt_handled; /** * The index of the first non-option in argv[] */ protected int first_nonopt = 1; /** * The index of the last non-option in argv[] */ protected int last_nonopt = 1; /** * Flag to tell getopt to immediately return -1 the next time it is * called. */ private boolean endparse = false; /** * Saved argument list passed to the program */ protected String[] argv; /** * Determines whether we permute arguments or not */ protected int ordering; /** * Name to print as the program name in error messages. This is necessary * since Java does not place the program name in argv[0] */ protected String progname; /** * The localized strings are kept in a separate file */ private ResourceBundle _messages = PropertyResourceBundle.getBundle( "gnu/getopt/MessagesBundle", Locale.getDefault()); /**************************************************************************/ /* * Constructors */ /** * Construct a basic Getopt instance with the given input data. Note that * this handles "short" options only. * * @param progname The name to display as the program name when printing errors * @param argv The String array passed as the command line to the program. * @param optstring A String containing a description of the valid args for this program */ public Getopt(String progname, String[] argv, String optstring) { this(progname, argv, optstring, null, false); } /**************************************************************************/ /** * Construct a Getopt instance with given input data that is capable of * parsing long options as well as short. * * @param progname The name to display as the program name when printing errors * @param argv The String array passed as the command ilne to the program * @param optstring A String containing a description of the valid short args for this program * @param long_options An array of LongOpt objects that describes the valid long args for this program */ public Getopt(String progname, String[] argv, String optstring, LongOpt[] long_options) { this(progname, argv, optstring, long_options, false); } /**************************************************************************/ /** * Construct a Getopt instance with given input data that is capable of * parsing long options and short options. Contrary to what you might * think, the flag 'long_only' does not determine whether or not we * scan for only long arguments. Instead, a value of true here allows * long arguments to start with a '-' instead of '--' unless there is a * conflict with a short option name. * * @param progname The name to display as the program name when printing errors * @param argv The String array passed as the command ilne to the program * @param optstring A String containing a description of the valid short args for this program * @param long_options An array of LongOpt objects that describes the valid long args for this program * @param long_only true if long options that do not conflict with short options can start with a '-' as well as '--' */ public Getopt(String progname, String[] argv, String optstring, LongOpt[] long_options, boolean long_only) { if (optstring.length() == 0) optstring = " "; // This function is essentially _getopt_initialize from GNU getopt this.progname = progname; this.argv = argv; this.optstring = optstring; this.long_options = long_options; this.long_only = long_only; // Check for property "gnu.posixly_correct" to determine whether to // strictly follow the POSIX standard. This replaces the "POSIXLY_CORRECT" // environment variable in the C version if (System.getProperty("gnu.posixly_correct", null) == null) posixly_correct = false; else { posixly_correct = true; _messages = PropertyResourceBundle.getBundle("gnu/getopt/MessagesBundle", Locale.US); } // Determine how to handle the ordering of options and non-options if (optstring.charAt(0) == '-') { ordering = RETURN_IN_ORDER; if (optstring.length() > 1) this.optstring = optstring.substring(1); } else if (optstring.charAt(0) == '+') { ordering = REQUIRE_ORDER; if (optstring.length() > 1) this.optstring = optstring.substring(1); } else if (posixly_correct) { ordering = REQUIRE_ORDER; } else { ordering = PERMUTE; // The normal default case } } /**************************************************************************/ /* * Instance Methods */ /** * In GNU getopt, it is possible to change the string containg valid options * on the fly because it is passed as an argument to getopt() each time. In * this version we do not pass the string on every call. In order to allow * dynamic option string changing, this method is provided. * * @param optstring The new option string to use */ public void setOptstring(String optstring) { if (optstring.length() == 0) optstring = " "; this.optstring = optstring; } /**************************************************************************/ /** * optind it the index in ARGV of the next element to be scanned. * This is used for communication to and from the caller * and for communication between successive calls to `getopt'. * * When `getopt' returns -1, this is the index of the first of the * non-option elements that the caller should itself scan. * * Otherwise, `optind' communicates from one call to the next * how much of ARGV has been scanned so far. */ public int getOptind() { return(optind); } /**************************************************************************/ /** * This method allows the optind index to be set manually. Normally this * is not necessary (and incorrect usage of this method can lead to serious * lossage), but optind is a public symbol in GNU getopt, so this method * was added to allow it to be modified by the caller if desired. * * @param optind The new value of optind */ public void setOptind(int optind) { this.optind = optind; } /**************************************************************************/ /** * Since in GNU getopt() the argument vector is passed back in to the * function every time, the caller can swap out argv on the fly. Since * passing argv is not required in the Java version, this method allows * the user to override argv. Note that incorrect use of this method can * lead to serious lossage. * * @param argv New argument list */ public void setArgv(String[] argv) { this.argv = argv; } /**************************************************************************/ /** * For communication from `getopt' to the caller. * When `getopt' finds an option that takes an argument, * the argument value is returned here. * Also, when `ordering' is RETURN_IN_ORDER, * each non-option ARGV-element is returned here. * No set method is provided because setting this variable has no effect. */ public String getOptarg() { return(optarg); } /**************************************************************************/ /** * Normally Getopt will print a message to the standard error when an * invalid option is encountered. This can be suppressed (or re-enabled) * by calling this method. There is no get method for this variable * because if you can't remember the state you set this to, why should I? */ public void setOpterr(boolean opterr) { this.opterr = opterr; } /**************************************************************************/ /** * When getopt() encounters an invalid option, it stores the value of that * option in optopt which can be retrieved with this method. There is * no corresponding set method because setting this variable has no effect. */ public int getOptopt() { return(optopt); } /**************************************************************************/ /** * Returns the index into the array of long options (NOT argv) representing * the long option that was found. */ public int getLongind() { return(longind); } /**************************************************************************/ /** * Exchange the shorter segment with the far end of the longer segment. * That puts the shorter segment into the right place. * It leaves the longer segment in the right place overall, * but it consists of two parts that need to be swapped next. * This method is used by getopt() for argument permutation. */ protected void exchange(String[] argv) { int bottom = first_nonopt; int middle = last_nonopt; int top = optind; String tem; while (top > middle && middle > bottom) { if (top - middle > middle - bottom) { // Bottom segment is the short one. int len = middle - bottom; int i; // Swap it with the top part of the top segment. for (i = 0; i < len; i++) { tem = argv[bottom + i]; argv[bottom + i] = argv[top - (middle - bottom) + i]; argv[top - (middle - bottom) + i] = tem; } // Exclude the moved bottom segment from further swapping. top -= len; } else { // Top segment is the short one. int len = top - middle; int i; // Swap it with the bottom part of the bottom segment. for (i = 0; i < len; i++) { tem = argv[bottom + i]; argv[bottom + i] = argv[middle + i]; argv[middle + i] = tem; } // Exclude the moved top segment from further swapping. bottom += len; } } // Update records for the slots the non-options now occupy. first_nonopt += (optind - last_nonopt); last_nonopt = optind; } /**************************************************************************/ /** * Check to see if an option is a valid long option. Called by getopt(). * Put in a separate method because this needs to be done twice. (The * C getopt authors just copy-pasted the code!). * * @param longind A buffer in which to store the 'val' field of found LongOpt * * @return Various things depending on circumstances */ protected int checkLongOption() { LongOpt pfound = null; int nameend; boolean ambig; boolean exact; longopt_handled = true; ambig = false; exact = false; longind = -1; nameend = nextchar.indexOf("="); if (nameend == -1) nameend = nextchar.length(); // Test all lnog options for either exact match or abbreviated matches for (int i = 0; i < long_options.length; i++) { if (long_options[i].getName().startsWith(nextchar.substring(0, nameend))) { if (long_options[i].getName().equals(nextchar.substring(0, nameend))) { // Exact match found pfound = long_options[i]; longind = i; exact = true; break; } else if (pfound == null) { // First nonexact match found pfound = long_options[i]; longind = i; } else { // Second or later nonexact match found ambig = true; } } } // for // Print out an error if the option specified was ambiguous if (ambig && !exact) { if (opterr) { Object[] msgArgs = { progname, argv[optind] }; System.err.println(MessageFormat.format( _messages.getString("getopt.ambigious"), msgArgs)); } nextchar = ""; optopt = 0; ++optind; return('?'); } if (pfound != null) { ++optind; if (nameend != nextchar.length()) { if (pfound.has_arg != LongOpt.NO_ARGUMENT) { if (nextchar.substring(nameend).length() > 1) optarg = nextchar.substring(nameend+1); else optarg = ""; } else { if (opterr) { // -- option if (argv[optind - 1].startsWith("--")) { Object[] msgArgs = { progname, pfound.name }; System.err.println(MessageFormat.format( _messages.getString("getopt.arguments1"), msgArgs)); } // +option or -option else { Object[] msgArgs = { progname, new Character(argv[optind-1].charAt(0)).toString(), pfound.name }; System.err.println(MessageFormat.format( _messages.getString("getopt.arguments2"), msgArgs)); } } nextchar = ""; optopt = pfound.val; return('?'); } } // if (nameend) else if (pfound.has_arg == LongOpt.REQUIRED_ARGUMENT) { if (optind < argv.length) { optarg = argv[optind]; ++optind; } else { if (opterr) { Object[] msgArgs = { progname, argv[optind-1] }; System.err.println(MessageFormat.format( _messages.getString("getopt.requires"), msgArgs)); } nextchar = ""; optopt = pfound.val; if (optstring.charAt(0) == ':') return(':'); else return('?'); } } // else if (pfound) nextchar = ""; if (pfound.flag != null) { pfound.flag.setLength(0); pfound.flag.append(pfound.val); return(0); } return(pfound.val); } // if (pfound != null) longopt_handled = false; return(0); } /**************************************************************************/ /** * This method returns a char that is the current option that has been * parsed from the command line. If the option takes an argument, then * the internal variable 'optarg' is set which is a String representing * the the value of the argument. This value can be retrieved by the * caller using the getOptarg() method. If an invalid option is found, * an error message is printed and a '?' is returned. The name of the * invalid option character can be retrieved by calling the getOptopt() * method. When there are no more options to be scanned, this method * returns -1. The index of first non-option element in argv can be * retrieved with the getOptind() method. * * @return Various things as described above */ public int getopt() { optarg = null; if (endparse == true) return(-1); if ((nextchar == null) || (nextchar.equals(""))) { // If we have just processed some options following some non-options, // exchange them so that the options come first. if (last_nonopt > optind) last_nonopt = optind; if (first_nonopt > optind) first_nonopt = optind; if (ordering == PERMUTE) { // If we have just processed some options following some non-options, // exchange them so that the options come first. if ((first_nonopt != last_nonopt) && (last_nonopt != optind)) exchange(argv); else if (last_nonopt != optind) first_nonopt = optind; // Skip any additional non-options // and extend the range of non-options previously skipped. while ((optind < argv.length) && (argv[optind].equals("") || (argv[optind].charAt(0) != '-') || argv[optind].equals("-"))) { optind++; } last_nonopt = optind; } // The special ARGV-element `--' means premature end of options. // Skip it like a null option, // then exchange with previous non-options as if it were an option, // then skip everything else like a non-option. if ((optind != argv.length) && argv[optind].equals("--")) { optind++; if ((first_nonopt != last_nonopt) && (last_nonopt != optind)) exchange (argv); else if (first_nonopt == last_nonopt) first_nonopt = optind; last_nonopt = argv.length; optind = argv.length; } // If we have done all the ARGV-elements, stop the scan // and back over any non-options that we skipped and permuted. if (optind == argv.length) { // Set the next-arg-index to point at the non-options // that we previously skipped, so the caller will digest them. if (first_nonopt != last_nonopt) optind = first_nonopt; return(-1); } // If we have come to a non-option and did not permute it, // either stop the scan or describe it to the caller and pass it by. if (argv[optind].equals("") || (argv[optind].charAt(0) != '-') || argv[optind].equals("-")) { if (ordering == REQUIRE_ORDER) return(-1); optarg = argv[optind++]; return(1); } // We have found another option-ARGV-element. // Skip the initial punctuation. if (argv[optind].startsWith("--")) nextchar = argv[optind].substring(2); else nextchar = argv[optind].substring(1); } // Decode the current option-ARGV-element. /* Check whether the ARGV-element is a long option. If long_only and the ARGV-element has the form "-f", where f is a valid short option, don't consider it an abbreviated form of a long option that starts with f. Otherwise there would be no way to give the -f short option. On the other hand, if there's a long option "fubar" and the ARGV-element is "-fu", do consider that an abbreviation of the long option, just like "--fu", and not "-f" with arg "u". This distinction seems to be the most useful approach. */ if ((long_options != null) && (argv[optind].startsWith("--") || (long_only && ((argv[optind].length() > 2) || (optstring.indexOf(argv[optind].charAt(1)) == -1))))) { int c = checkLongOption(); if (longopt_handled) return(c); // Can't find it as a long option. If this is not getopt_long_only, // or the option starts with '--' or is not a valid short // option, then it's an error. // Otherwise interpret it as a short option. if (!long_only || argv[optind].startsWith("--") || (optstring.indexOf(nextchar.charAt(0)) == -1)) { if (opterr) { if (argv[optind].startsWith("--")) { Object[] msgArgs = { progname, nextchar }; System.err.println(MessageFormat.format( _messages.getString("getopt.unrecognized"), msgArgs)); } else { Object[] msgArgs = { progname, new Character(argv[optind].charAt(0)).toString(), nextchar }; System.err.println(MessageFormat.format( _messages.getString("getopt.unrecognized2"), msgArgs)); } } nextchar = ""; ++optind; optopt = 0; return('?'); } } // if (longopts) // Look at and handle the next short option-character */ int c = nextchar.charAt(0); //**** Do we need to check for empty str? if (nextchar.length() > 1) nextchar = nextchar.substring(1); else nextchar = ""; String temp = null; if (optstring.indexOf(c) != -1) temp = optstring.substring(optstring.indexOf(c)); if (nextchar.equals("")) ++optind; if ((temp == null) || (c == ':')) { if (opterr) { if (posixly_correct) { // 1003.2 specifies the format of this message Object[] msgArgs = { progname, new Character((char)c).toString() }; System.err.println(MessageFormat.format( _messages.getString("getopt.illegal"), msgArgs)); } else { Object[] msgArgs = { progname, new Character((char)c).toString() }; System.err.println(MessageFormat.format( _messages.getString("getopt.invalid"), msgArgs)); } } optopt = c; return('?'); } // Convenience. Treat POSIX -W foo same as long option --foo if ((temp.charAt(0) == 'W') && (temp.length() > 1) && (temp.charAt(1) == ';')) { if (!nextchar.equals("")) { optarg = nextchar; } // No further cars in this argv element and no more argv elements else if (optind == argv.length) { if (opterr) { // 1003.2 specifies the format of this message. Object[] msgArgs = { progname, new Character((char)c).toString() }; System.err.println(MessageFormat.format( _messages.getString("getopt.requires2"), msgArgs)); } optopt = c; if (optstring.charAt(0) == ':') return(':'); else return('?'); } else { // We already incremented `optind' once; // increment it again when taking next ARGV-elt as argument. nextchar = argv[optind]; optarg = argv[optind]; } c = checkLongOption(); if (longopt_handled) return(c); else // Let the application handle it { nextchar = null; ++optind; return('W'); } } if ((temp.length() > 1) && (temp.charAt(1) == ':')) { if ((temp.length() > 2) && (temp.charAt(2) == ':')) // This is an option that accepts and argument optionally { if (!nextchar.equals("")) { optarg = nextchar; ++optind; } else { optarg = null; } nextchar = null; } else { if (!nextchar.equals("")) { optarg = nextchar; ++optind; } else if (optind == argv.length) { if (opterr) { // 1003.2 specifies the format of this message Object[] msgArgs = { progname, new Character((char)c).toString() }; System.err.println(MessageFormat.format( _messages.getString("getopt.requires2"), msgArgs)); } optopt = c; if (optstring.charAt(0) == ':') return(':'); else return('?'); } else { optarg = argv[optind]; ++optind; // Ok, here's an obscure Posix case. If we have o:, and // we get -o -- foo, then we're supposed to skip the --, // end parsing of options, and make foo an operand to -o. // Only do this in Posix mode. if ((posixly_correct) && optarg.equals("--")) { // If end of argv, error out if (optind == argv.length) { if (opterr) { // 1003.2 specifies the format of this message Object[] msgArgs = { progname, new Character((char)c).toString() }; System.err.println(MessageFormat.format( _messages.getString("getopt.requires2"), msgArgs)); } optopt = c; if (optstring.charAt(0) == ':') return(':'); else return('?'); } // Set new optarg and set to end // Don't permute as we do on -- up above since we // know we aren't in permute mode because of Posix. optarg = argv[optind]; ++optind; first_nonopt = optind; last_nonopt = argv.length; endparse = true; } } nextchar = null; } } return(c); } } // Class Getopt omniEvents-2_6_2/examples/java/gnu/getopt/GetoptDemo.class0000644000076400001440000000474110227236244024066 0ustar alexusers00000000000000Êþº¾-†FGHIJVZ^_`abfhijksv~„\tuxyz{| 4 4 5 5 6 7 8 9 : ; < = > ? @ A B C D E WM WQ WR WS lN lO lP mK nL oL pK qK rK wK €d ‚Q ƒT …L  with value '' is not valid' with argument ()I()Ljava/lang/String;()V(C)Ljava/lang/StringBuffer;(I)Ljava/lang/StringBuffer;,(Ljava/lang/String;)Ljava/lang/StringBuffer;(Ljava/lang/String;)V/(Ljava/lang/String;ILjava/lang/StringBuffer;I)VO(Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;[Lgnu/getopt/LongOpt;)V(Z)V([Ljava/lang/String;)V -:bc::d:hW;Code ConstantValue%Doh! You need an argument for option  Exceptions GetoptDemoGetoptDemo.javaGot long option with value '7Hmmm. You tried a -W with an incorrect long option name!I know this, but pretend I didn'tI see you asked for helpeI see you have return in order set and that a non-option argv element was just found with the value 'LineNumberTableLjava/io/PrintStream;LocalVariablesNon option argv element:  SourceFile The option 'We picked option You picked option 'You picked plain old option append getLongindgetName getOptarg getOptind getOptoptgetoptgetopt() returned gnu/getopt/Getoptgnu/getopt/LongOpthelpintValuejava/io/PrintStreamjava/lang/Integerjava/lang/Objectjava/lang/StringBufferjava/lang/Systemmainmaximumnullout outputdirprintln setOpterrtestprogtoString! }UXNN½N»Y·!:-»Yh·$S-»Yo·$S-»Y·$S»Y*-·%:¶2§½«  Y™»:_?}WTbýcdhI¶+M²0»Y·#»Y¶3·"¶/’¶&¶(,Æ,§¶(¶3¶1§#²0»Y ·#¶+¶(¶(¶3¶1§¶+M²0 ¶1²0»Y·#-¶)2¶*¶(¶(,Æ,§¶(¶3¶1§¿²0»Y·#’¶&¶3¶1§¥¶+M²0»Y·#’¶&¶(,Æ,§¶(¶3¶1§s²0 ¶1§h²0 ¶1§]²0»Y·#¶-’¶&¶3¶1§?²0»Y·#¶-’¶&¶(¶3¶1§²0»Y·#¶'¶3¶1§¶.Y< þ>¶,6§$²0»Y ·#*2¶(¶(¶3¶1„*¾¡ÿÛ±cî;/>MSV°!¶"Â#Õ$Ú%ç$ê"í&ð)ó*ü+ ),/0 1,293>4K3N1Q5T8k9n=t>…?Š@—?š>A D¨E«H³J¶MÂNËMÑOÔRéSîRôT÷W X[%\C[MWMX*· ±c g]omniEvents-2_6_2/examples/java/gnu/getopt/GetoptDemo.java0000644000076400001440000000605010227236244023675 0ustar alexusers00000000000000import gnu.getopt.LongOpt; import gnu.getopt.Getopt; /* * This sample code was written by Aaron M. Renn and is a demonstration * of how to utilize some of the features of the GNU getopt package. This * sample code is hereby placed into the public domain by the author and * may be used without restriction. */ public class GetoptDemo { public static void main(String[] argv) { int c; String arg; LongOpt[] longopts = new LongOpt[3]; // StringBuffer sb = new StringBuffer(); longopts[0] = new LongOpt("help", LongOpt.NO_ARGUMENT, null, 'h'); longopts[1] = new LongOpt("outputdir", LongOpt.REQUIRED_ARGUMENT, sb, 'o'); longopts[2] = new LongOpt("maximum", LongOpt.OPTIONAL_ARGUMENT, null, 2); // Getopt g = new Getopt("testprog", argv, "-:bc::d:hW;", longopts); g.setOpterr(false); // We'll do our own error handling // while ((c = g.getopt()) != -1) switch (c) { case 0: arg = g.getOptarg(); System.out.println("Got long option with value '" + (char)(new Integer(sb.toString())).intValue() + "' with argument " + ((arg != null) ? arg : "null")); break; // case 1: System.out.println("I see you have return in order set and that " + "a non-option argv element was just found " + "with the value '" + g.getOptarg() + "'"); break; // case 2: arg = g.getOptarg(); System.out.println("I know this, but pretend I didn't"); System.out.println("We picked option " + longopts[g.getLongind()].getName() + " with value " + ((arg != null) ? arg : "null")); break; // case 'b': System.out.println("You picked plain old option " + (char)c); break; // case 'c': case 'd': arg = g.getOptarg(); System.out.println("You picked option '" + (char)c + "' with argument " + ((arg != null) ? arg : "null")); break; // case 'h': System.out.println("I see you asked for help"); break; // case 'W': System.out.println("Hmmm. You tried a -W with an incorrect long " + "option name"); break; // case ':': System.out.println("Doh! You need an argument for option " + (char)g.getOptopt()); break; // case '?': System.out.println("The option '" + (char)g.getOptopt() + "' is not valid"); break; // default: System.out.println("getopt() returned " + c); break; } // for (int i = g.getOptind(); i < argv.length ; i++) System.out.println("Non option argv element: " + argv[i] + "\n"); } } // Class GetoptDemo omniEvents-2_6_2/examples/java/gnu/getopt/LongOpt.class0000644000076400001440000000310010227236244023365 0ustar alexusers00000000000000Êþº¾-XKMLOPQRST       ! " # $ % & 2+ 2, 2. A: B9 C1 D0 E* I- N6 U8 V( W6()I()Ljava/lang/String;()Ljava/lang/StringBuffer;()Ljava/util/Locale;()V(I)V&(Ljava/lang/String;)Ljava/lang/String;(Ljava/lang/String;)V/(Ljava/lang/String;ILjava/lang/StringBuffer;I)V@(Ljava/lang/String;Ljava/util/Locale;)Ljava/util/ResourceBundle;9(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;Code ConstantValue ExceptionsILineNumberTableLjava/lang/String;Ljava/lang/StringBuffer;Ljava/util/ResourceBundle;LocalVariables LongOpt.java NO_ARGUMENTOPTIONAL_ARGUMENTREQUIRED_ARGUMENT SourceFile _messagesflagformat getBundle getDefaultgetFlag getHasArggetName getStringgetValgetopt.invalidValuegnu/getopt/LongOptgnu/getopt/MessagesBundlehas_arg"java/lang/IllegalArgumentExceptionjava/lang/Integerjava/lang/Objectjava/text/MessageFormatjava/util/Localejava/util/ResourceBundlenametoStringval! =64?64>64U8N6B9W6A:2/3®^*· *¸¸µ™7Ÿ2Ÿ-½ Y»Y·¶S:»Y*´¶¸·¿*+µ*µ*-µ*µ±7>|gh g€ƒ2„6…A„H‰MŠR‹WŒ]|5H(3*´°7™G'3*´¬7¦F)3*´°7³J'3*´¬7¾@<omniEvents-2_6_2/examples/java/gnu/getopt/LongOpt.java0000644000076400001440000001316110227236244023211 0ustar alexusers00000000000000/************************************************************************** /* LongOpt.java -- Long option object for Getopt /* /* Copyright (c) 1998 by Aaron M. Renn (arenn@urbanophile.com) /* /* This program is free software; you can redistribute it and/or modify /* it under the terms of the GNU Library General Public License as published /* by the Free Software Foundation; either version 2 of the License or /* (at your option) any later version. /* /* This program is distributed in the hope that it will be useful, but /* WITHOUT ANY WARRANTY; without even the implied warranty of /* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the /* GNU Library General Public License for more details. /* /* You should have received a copy of the GNU Library General Public License /* along with this program; see the file COPYING.LIB. If not, write to /* the Free Software Foundation Inc., 59 Temple Place - Suite 330, /* Boston, MA 02111-1307 USA /**************************************************************************/ package gnu.getopt; import java.util.Locale; import java.util.ResourceBundle; import java.util.PropertyResourceBundle; import java.text.MessageFormat; /**************************************************************************/ /** * This object represents the definition of a long option in the Java port * of GNU getopt. An array of LongOpt objects is passed to the Getopt * object to define the list of valid long options for a given parsing * session. Refer to the getopt documentation for details on the * format of long options. * * @version 1.0.5 * @author Aaron M. Renn (arenn@urbanophile.com) * * @see Getopt */ public class LongOpt extends Object { /**************************************************************************/ /* * Class Variables */ /** * Constant value used for the "has_arg" constructor argument. This * value indicates that the option takes no argument. */ public static final int NO_ARGUMENT = 0; /** * Constant value used for the "has_arg" constructor argument. This * value indicates that the option takes an argument that is required. */ public static final int REQUIRED_ARGUMENT = 1; /** * Constant value used for the "has_arg" constructor argument. This * value indicates that the option takes an argument that is optional. */ public static final int OPTIONAL_ARGUMENT = 2; /**************************************************************************/ /* * Instance Variables */ /** * The name of the long option */ protected String name; /** * Indicates whether the option has no argument, a required argument, or * an optional argument. */ protected int has_arg; /** * If this variable is not null, then the value stored in "val" is stored * here when this long option is encountered. If this is null, the value * stored in "val" is treated as the name of an equivalent short option. */ protected StringBuffer flag; /** * The value to store in "flag" if flag is not null, otherwise the * equivalent short option character for this long option. */ protected int val; /** * Localized strings for error messages */ private ResourceBundle _messages = PropertyResourceBundle.getBundle( "gnu/getopt/MessagesBundle", Locale.getDefault()); /**************************************************************************/ /* * Constructors */ /** * Create a new LongOpt object with the given parameter values. If the * value passed as has_arg is not valid, then an exception is thrown. * * @param name The long option String. * @param has_arg Indicates whether the option has no argument (NO_ARGUMENT), a required argument (REQUIRED_ARGUMENT) or an optional argument (OPTIONAL_ARGUMENT). * @param flag If non-null, this is a location to store the value of "val" when this option is encountered, otherwise "val" is treated as the equivalent short option character. * @param val The value to return for this long option, or the equivalent single letter option to emulate if flag is null. * * @exception IllegalArgumentException If the has_arg param is not one of NO_ARGUMENT, REQUIRED_ARGUMENT or OPTIONAL_ARGUMENT. */ public LongOpt(String name, int has_arg, StringBuffer flag, int val) throws IllegalArgumentException { // Validate has_arg if ((has_arg != NO_ARGUMENT) && (has_arg != REQUIRED_ARGUMENT) && (has_arg != OPTIONAL_ARGUMENT)) { Object[] msgArgs = { new Integer(has_arg).toString() }; throw new IllegalArgumentException(MessageFormat.format( _messages.getString("getopt.invalidValue"), msgArgs)); } // Store off values this.name = name; this.has_arg = has_arg; this.flag = flag; this.val = val; } /**************************************************************************/ /** * Returns the name of this LongOpt as a String * * @return Then name of the long option */ public String getName() { return(name); } /**************************************************************************/ /** * Returns the value set for the 'has_arg' field for this long option * * @return The value of 'has_arg' */ public int getHasArg() { return(has_arg); } /**************************************************************************/ /** * Returns the value of the 'flag' field for this long option * * @return The value of 'flag' */ public StringBuffer getFlag() { return(flag); } /** * Returns the value of the 'val' field for this long option * * @return The value of 'val' */ public int getVal() { return(val); } /**************************************************************************/ } // Class LongOpt omniEvents-2_6_2/examples/java/gnu/getopt/Makefile0000644000076400001440000000024110227236244022417 0ustar alexusers00000000000000# Makefile for Java port of GNU getopt all: javac LongOpt.java Getopt.java GetoptDemo.java docs: javadoc -author -version -public Getopt.java LongOpt.java omniEvents-2_6_2/examples/java/gnu/getopt/MessagesBundle.properties0000644000076400001440000000321110227236244025776 0ustar alexusers00000000000000/************************************************************************** /* MessagesBundle.properties -- English language error messages /* /* Copyright (c) 1998 by William King (wrking@eng.sun.com) and /* Aaron M. Renn (arenn@urbanophile.com) /* /* This program is free software; you can redistribute it and/or modify /* it under the terms of the GNU Library General Public License as published /* by the Free Software Foundation; either version 2 of the License or /* (at your option) any later version. /* /* This program is distributed in the hope that it will be useful, but /* WITHOUT ANY WARRANTY; without even the implied warranty of /* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the /* GNU Library General Public License for more details. /* /* You should have received a copy of the GNU Library General Public License /* along with this program; see the file COPYING.LIB. If not, write to /* the Free Software Foundation Inc., 59 Temple Place - Suite 330, /* Boston, MA 02111-1307 USA /**************************************************************************/ getopt.ambigious={0}: option ''{1}'' is ambiguous getopt.arguments1={0}: option ''--{1}'' doesn't allow an argument getopt.arguments2={0}: option ''{1}{2}'' doesn't allow an argument getopt.requires={0}: option ''{1}'' requires an argument getopt.unrecognized={0}: unrecognized option ''--{1}'' getopt.unrecognized2={0}: unrecognized option ''{1}{2}'' getopt.illegal={0}: illegal option -- {1} getopt.invalid={0}: invalid option -- {1} getopt.requires2={0}: option requires an argument -- {1} getopt.invalidValue=Invalid value {0} for parameter 'has_arg' omniEvents-2_6_2/examples/java/gnu/getopt/MessagesBundle_cs.properties0000644000076400001440000000316110227236244026467 0ustar alexusers00000000000000/************************************************************************** /* MessagesBundle_cs.properties -- Czech language error messages /* /* Czech Messages Copyright (c) 1998 by Roman Szturc (Roman.Szturc@vsb.cz) /* These messages are encoded in ISO-8859-2 /* /* This program is free software; you can redistribute it and/or modify /* it under the terms of the GNU Library General Public License as published /* by the Free Software Foundation; either version 2 of the License or /* (at your option) any later version. /* /* This program is distributed in the hope that it will be useful, but /* WITHOUT ANY WARRANTY; without even the implied warranty of /* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the /* GNU Library General Public License for more details. /* /* You should have received a copy of the GNU Library General Public License /* along with this program; see the file COPYING.LIB. If not, write to /* the Free Software Foundation Inc., 59 Temple Place - Suite 330, /* Boston, MA 02111-1307 USA /**************************************************************************/ getopt.ambigious={0}: volba ''{1}'' je nejednoznaèná getopt.arguments1={0}: volba ''--{1}'' nepøipou¹tí argument getopt.arguments2={0}: volba ''{1}{2}'' nepøipou¹tí argument getopt.requires={0}: volba ''{1}'' vy¾aduje argument getopt.unrecognized={0}: nepøípustná volba ''--{1}'' getopt.unrecognized2={0}: nepøípustná volba ''{1}{2}'' getopt.illegal={0}: nepøípustná volba -- {1} getopt.invalid={0}: neplatná volba -- {1} getopt.requires2={0}: volba vy¾aduje argument -- {1} getopt.invalidValue=Neplatná hodnota {0} parameteru 'has_arg' omniEvents-2_6_2/examples/java/gnu/getopt/MessagesBundle_de.properties0000644000076400001440000000320010227236244026444 0ustar alexusers00000000000000/************************************************************************** /* MessagesBundle.properties -- German language error messages /* /* German Messages Copyright (c) 1999 by Bernhard Bablok (bablokb@gmx.net) /* These messages are encoded in ISO-8859-1 //* /* This program is free software; you can redistribute it and/or modify /* it under the terms of the GNU Library General Public License as published /* by the Free Software Foundation; either version 2 of the License or /* (at your option) any later version. /* /* This program is distributed in the hope that it will be useful, but /* WITHOUT ANY WARRANTY; without even the implied warranty of /* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the /* GNU Library General Public License for more details. /* /* You should have received a copy of the GNU Library General Public License /* along with this program; see the file COPYING.LIB. If not, write to /* the Free Software Foundation Inc., 59 Temple Place - Suite 330, /* Boston, MA 02111-1307 USA /**************************************************************************/ getopt.ambigious={0}: Option ''{1}'' ist zweideutig getopt.arguments1={0}: Option ''--{1}'' erlaubt kein Argument getopt.arguments2={0}: Option ''{1}{2}'' erlaubt kein Argument getopt.requires={0}: Option ''{1}'' benötigt ein Argument getopt.unrecognized={0}: Unbekannte Option ''--{1}'' getopt.unrecognized2={0}: Unbekannte Option ''{1}{2}'' getopt.illegal={0}: Verbotene Option -- {1} getopt.invalid={0}: Ungültige Option -- {1} getopt.requires2={0}: Option benötigt ein Argument -- {1} getopt.invalidValue=Ungültiger Wert {0} für Parameter 'has_arg' omniEvents-2_6_2/examples/java/gnu/getopt/MessagesBundle_fr.properties0000644000076400001440000000340210227236244026467 0ustar alexusers00000000000000/************************************************************************** /* MessagesBundle_fr.properties -- French language error messages /* /* Copyright (c) 1999 Free Software Foundation, Inc. /* Michel Robitaille , 1996, /* Edouard G. Parmelan , 1999. /* These messages are encoded in ISO-8859-1 /* /* This program is free software; you can redistribute it and/or modify /* it under the terms of the GNU Library General Public License as published /* by the Free Software Foundation; either version 2 of the License or /* (at your option) any later version. /* /* This program is distributed in the hope that it will be useful, but /* WITHOUT ANY WARRANTY; without even the implied warranty of /* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the /* GNU Library General Public License for more details. /* /* You should have received a copy of the GNU Library General Public License /* along with this program; see the file COPYING.LIB. If not, write to /* the Free Software Foundation Inc., 59 Temple Place - Suite 330, /* Boston, MA 02111-1307 USA /**************************************************************************/ getopt.ambigious={0}: l'option ''{1}'' est ambiguë getopt.arguments1={0}: l'option ''--{1}'' ne permet pas de paramètre getopt.arguments2={0}: l'option ''{1}{2}'' ne permet pas de paramètre getopt.requires={0}: l'option ''{1}'' requiert un paramètre getopt.unrecognized={0}: option non reconnue ''--{1}'' getopt.unrecognized2={0}: option non reconnue ''{1}{2}'' getopt.illegal={0}: option illégale -- {1} getopt.invalid={0}: option invalide -- {1} getopt.requires2={0}: cette option requiert un paramètre -- {1} getopt.invalidValue=Valeur invalide {0} pour le paramètre 'has_arg' omniEvents-2_6_2/examples/java/gnu/getopt/MessagesBundle_hu.properties0000644000076400001440000000312210227236244026473 0ustar alexusers00000000000000/************************************************************************** /* MessagesBundle.properties -- Hungarian language error messages /* /* Copyright (c) 2001 by Gyula Csom (csom@informix.hu) /* /* This program is free software; you can redistribute it and/or modify /* it under the terms of the GNU Library General Public License as published /* by the Free Software Foundation; either version 2 of the License or /* (at your option) any later version. /* /* This program is distributed in the hope that it will be useful, but /* WITHOUT ANY WARRANTY; without even the implied warranty of /* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the /* GNU Library General Public License for more details. /* /* You should have received a copy of the GNU Library General Public License /* along with this program; see the file COPYING.LIB. If not, write to /* the Free Software Foundation Inc., 59 Temple Place - Suite 330, /* Boston, MA 02111-1307 USA /**************************************************************************/ getopt.ambigious={0}: opció ''{1}'' félreérthetõ getopt.arguments1={0}: opció ''--{1}'' nem enged meg argumentumot getopt.arguments2={0}: opció ''{1}{2}'' nem enged meg argumentumot getopt.requires={0}: opció ''{1}'' argumentumot igényel getopt.unrecognized={0}: ismeretlen opció ''--{1}'' getopt.unrecognized2={0}: ismeretlen opció ''{1}{2}'' getopt.illegal={0}: illegális opció -- {1} getopt.invalid={0}: érvénytelen opció -- {1} getopt.requires2={0}: az opció argumentumot igényel -- {1} getopt.invalidValue=Érvénytelen érték {0} a következõ paraméterhez 'has_arg' omniEvents-2_6_2/examples/java/gnu/getopt/MessagesBundle_ja.properties0000644000076400001440000000435710227236244026464 0ustar alexusers00000000000000/************************************************************************** /* MessagesBundle.properties -- Japanese language error messages /* /* Copyright (c) 2001 by Yasuoka Masahiko (yasuoka@yasuoka.net) /* /* This program is free software; you can redistribute it and/or modify /* it under the terms of the GNU Library General Public License as published /* by the Free Software Foundation; either version 2 of the License or /* (at your option) any later version. /* /* This program is distributed in the hope that it will be useful, but /* WITHOUT ANY WARRANTY; without even the implied warranty of /* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the /* GNU Library General Public License for more details. /* /* You should have received a copy of the GNU Library General Public License /* along with this program; see the file COPYING.LIB. If not, write to /* the Free Software Foundation Inc., 59 Temple Place - Suite 330, /* Boston, MA 02111-1307 USA /**************************************************************************/ getopt.ambigious={0}: ''{1}'' \u30aa\u30d7\u30b7\u30e7\u30f3\u306f\u66d6\u6627\u3067\u3059\u3002 getopt.arguments1={0}: ''--{1}'' \u30aa\u30d7\u30b7\u30e7\u30f3\u306f\u30d1\u30e9\u30e1\u30fc\u30bf\u3092\u3082\u3061\u307e\u305b\u3093\u3002 getopt.arguments2={0}: ''{1}{2}'' \u30aa\u30d7\u30b7\u30e7\u30f3\u306f\u30d1\u30e9\u30e1\u30fc\u30bf\u3092\u3082\u3061\u307e\u305b\u3093\u3002 getopt.requires={0}: ''{1}'' \u30aa\u30d7\u30b7\u30e7\u30f3\u306b\u306f\u30d1\u30e9\u30e1\u30fc\u30bf\u304c\u5fc5\u8981\u3067\u3059\u3002 getopt.unrecognized={0}: ''--{1}'' \u306f\u7121\u52b9\u306a\u30aa\u30d7\u30b7\u30e7\u30f3\u3067\u3059\u3002 getopt.unrecognized2={0}: ''{1}{2}'' \u306f\u7121\u52b9\u306a\u30aa\u30d7\u30b7\u30e7\u30f3\u3067\u3059\u3002 getopt.illegal={0}: -- {1} \u306f\u4e0d\u6b63\u306a\u30aa\u30d7\u30b7\u30e7\u30f3\u3067\u3059\u3002 getopt.invalid={0}: -- {1} \u30aa\u30d7\u30b7\u30e7\u30f3\u306f\u6b63\u3057\u304f\u3042\u308a\u307e\u305b\u3093\u3002 getopt.requires2={0}: -- {1} \u30aa\u30d7\u30b7\u30e7\u30f3\u306b\u306f\u30d1\u30e9\u30e1\u30fc\u30bf\u304c\u5fc5\u8981\u3067\u3059\u3002 getopt.invalidValue={0} \u306f\u3001'has_arg' \u30d1\u30e9\u30e1\u30fc\u30bf\u3068\u3057\u3066\u4e0d\u6b63\u306a\u5024\u3067\u3059\u3002 omniEvents-2_6_2/examples/java/gnu/getopt/MessagesBundle_nl.properties0000644000076400001440000000311210227236244026467 0ustar alexusers00000000000000/************************************************************************** /* MessagesBundle_nl.properties -- Dutch language error messages /* /* Copyright (c) 1999 by Ernst de Haan (ernst@jollem.com) /* /* This program is free software; you can redistribute it and/or modify /* it under the terms of the GNU Library General Public License as published /* by the Free Software Foundation; either version 2 of the License or /* (at your option) any later version. /* /* This program is distributed in the hope that it will be useful, but /* WITHOUT ANY WARRANTY; without even the implied warranty of /* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the /* GNU Library General Public License for more details. /* /* You should have received a copy of the GNU Library General Public License /* along with this program; see the file COPYING.LIB. If not, write to /* the Free Software Foundation Inc., 59 Temple Place - Suite 330, /* Boston, MA 02111-1307 USA /**************************************************************************/ getopt.ambigious={0}: optie ''{1}'' is ambigue getopt.arguments1={0}: optie ''--{1}'' staat geen argumenten toe getopt.arguments2={0}: optie ''{1}{2}'' staat geen argumenten toe getopt.requires={0}: optie ''{1}'' heeft een argument nodig getopt.unrecognized={0}: onbekende optie ''--{1}'' getopt.unrecognized2={0}: onbekende optie ''{1}{2}'' getopt.illegal={0}: niet-toegestane optie -- {1} getopt.invalid={0}: onjuiste optie -- {1} getopt.requires2={0}: optie heeft een argument nodig -- {1} getopt.invalidValue=Ongeldige waarde {0} voor parameter 'has_arg' omniEvents-2_6_2/examples/java/gnu/getopt/MessagesBundle_no.properties0000644000076400001440000000313310227236244026475 0ustar alexusers00000000000000/************************************************************************** /* MessagesBundle.properties -- Norwegian language error messages /* /* Copyright (c) 1999 by Bjørn-Ove Heimsund (s811@ii.uib.no) /* /* This program is free software; you can redistribute it and/or modify /* it under the terms of the GNU Library General Public License as published /* by the Free Software Foundation; either version 2 of the License or /* (at your option) any later version. /* /* This program is distributed in the hope that it will be useful, but /* WITHOUT ANY WARRANTY; without even the implied warranty of /* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the /* GNU Library General Public License for more details. /* /* You should have received a copy of the GNU Library General Public License /* along with this program; see the file COPYING.LIB. If not, write to /* the Free Software Foundation Inc., 59 Temple Place - Suite 330, /* Boston, MA 02111-1307 USA /**************************************************************************/ getopt.ambigious={0}: flagget ''{1}'' er flertydig getopt.arguments1={0}: flagget ''--{1}'' tillater ikke et argument getopt.arguments2={0}: flagget ''{1}{2}'' tillater ikke et argument getopt.requires={0}: flagget ''{1}'' krever et argument getopt.unrecognized={0}: ukjent flagg ''--{1}'' getopt.unrecognized2={0}: ukjent flagg ''{1}{2}'' getopt.illegal={0}: ugyldig flagg -- {1} getopt.invalid={0}: ugyldig flagg -- {1} getopt.requires2={0}: flagget krever et argument -- {1} getopt.invalidValue=Ugyldig verdi {0} for parameter 'has_arg' omniEvents-2_6_2/examples/java/gnu/getopt/README0000644000076400001440000000510610227236244021644 0ustar alexusers00000000000000This is a Java port of the GNU getopt functions based on the versions contained in glibc 2.0.6. I have attempted to keep the functionality and programmer's interface as faithful to the original as possible. However, due to differences between Java and C, some minor changes has to me made. (Given the obtuse interface in the clib version, perhaps some major changes should have been made). This should not affect the way options appear to be parsed to the end user of program that uses this Java getopt. The use of these classes are completely documented in the javadoc comments, so I will not repeat that info here. Note that since these objects are part of a package called "gnu.getopt", they need to be in a subdirectory called gnu/getopt somewhere in your CLASSPATH. This includes the "MessagesBundle" files. I am not aware of any bugs. If you find one though, please send email to me at arenn@urbanophile.com. The more detailed a bug report the better. Bug fixes are also welcome at the same address. Please reference release number "1.0.8". If you use this code, it would be helpful if you let me know so that I can let you know if anything changes or if any major bugs have been found/fixed. I have included a Makefile for compiling the code. If you do not have access to make, then you can simply do a "javac *.java" at the OS command line (or follow your vendor's instructions for compiling a Java class). To build the documentation, do a "make docs" or "javadoc -public *.java". Note that the images needed by the html generated by javadoc are not included. You will need to get those from some other Java documentation package. Note that the Makefile is not compliant with the GNU makefile standards as I anticipate that at some point a master makefile will be created for various GNU Java packages. And it is serious overkill to create a megabloat makefile (kinda like this megabloat README) for such a simple package. There is sample code showing how to use getopt available in the GetoptDemo.java file. NEW: A support file for the "ant" build process was contributed. Here are some brief things you can do with it. Note that I have not ever used this so it is doubly AS IS. Get ant from jakarta project (see jakarta.apache.org/ant), and run it with one of these target (all is default target): ant prepare: create the needed directories ant classes: compile the java classes ant jar: create the jar archive ant javadoc: create the javadoc ant all: create jar and javadoc ant clean: clean everything Happy hacking, Aaron. arenn@urbanophile.com http://www.urbanophile.com/arenn/ omniEvents-2_6_2/examples/java/gnu/getopt/buildx.xml0000644000076400001440000000344310227236244022777 0ustar alexusers00000000000000 omniEvents-2_6_2/examples/java/gnu/getopt/gnu.getopt.Getopt.html0000644000076400001440000007072210227236244025213 0ustar alexusers00000000000000 Class gnu.getopt.Getopt

All Packages  Class Hierarchy  This Package  Previous  Next  Index

Class gnu.getopt.Getopt

java.lang.Object
   |
   +----gnu.getopt.Getopt

public class Getopt
extends Object
This is a Java port of GNU getopt, a class for parsing command line arguments passed to programs. It it based on the C getopt() functions in glibc 2.0.6 and should parse options in a 100% compatible manner. If it does not, that is a bug. The programmer's interface is also very compatible.

To use Getopt, create a Getopt object with a argv array passed to the main method, then call the getopt() method in a loop. It will return an int that contains the value of the option character parsed from the command line. When there are no more options to be parsed, it returns -1.

A command line option can be defined to take an argument. If an option has an argument, the value of that argument is stored in an instance variable called optarg, which can be accessed using the getOptarg() method. If an option that requires an argument is found, but there is no argument present, then an error message is printed. Normally getopt() returns a '?' in this situation, but that can be changed as described below.

If an invalid option is encountered, an error message is printed to the standard error and getopt() returns a '?'. The value of the invalid option encountered is stored in the instance variable optopt which can be retrieved using the getOptopt() method. To suppress the printing of error messages for this or any other error, set the value of the opterr instance variable to false using the setOpterr() method.

Between calls to getopt(), the instance variable optind is used to keep track of where the object is in the parsing process. After all options have been returned, optind is the index in argv of the first non-option argument. This variable can be accessed with the getOptind() method.

Note that this object expects command line options to be passed in the traditional Unix manner. That is, proceeded by a '-' character. Multiple options can follow the '-'. For example "-abc" is equivalent to "-a -b -c". If an option takes a required argument, the value of the argument can immediately follow the option character or be present in the next argv element. For example, "-cfoo" and "-c foo" both represent an option character of 'c' with an argument of "foo" assuming c takes a required argument. If an option takes an argument that is not required, then any argument must immediately follow the option character in the same argv element. For example, if c takes a non-required argument, then "-cfoo" represents option character 'c' with an argument of "foo" while "-c foo" represents the option character 'c' with no argument, and a first non-option argv element of "foo".

The user can stop getopt() from scanning any further into a command line by using the special argument "--" by itself. For example: "-a -- -d" would return an option character of 'a', then return -1 The "--" is discarded and "-d" is pointed to by optind as the first non-option argv element.

Here is a basic example of using Getopt:

 Getopt g = new Getopt("testprog", argv, "ab:c::d");
 //
 int c;
 String arg;
 while ((c = g.getopt()) != -1)
   {
     switch(c)
       {
          case 'a':
          case 'd':
            System.out.print("You picked " + (char)c + "\n");
            break;
            //
          case 'b':
          case 'c':
            arg = g.getOptarg();
            System.out.print("You picked " + (char)c + 
                             " with an argument of " +
                             ((arg != null) ? arg : "null") + "\n");
            break;
            //
          case '?':
            break; // getopt() already printed an error
            //
          default:
            System.out.print("getopt() returned " + c + "\n");
       }
   }
 

In this example, a new Getopt object is created with three params. The first param is the program name. This is for printing error messages in the form "program: error message". In the C version, this value is taken from argv[0], but in Java the program name is not passed in that element, thus the need for this parameter. The second param is the argument list that was passed to the main() method. The third param is the list of valid options. Each character represents a valid option. If the character is followed by a single colon, then that option has a required argument. If the character is followed by two colons, then that option has an argument that is not required.

Note in this example that the value returned from getopt() is cast to a char prior to printing. This is required in order to make the value display correctly as a character instead of an integer.

If the first character in the option string is a colon, for example ":abc::d", then getopt() will return a ':' instead of a '?' when it encounters an option with a missing required argument. This allows the caller to distinguish between invalid options and valid options that are simply incomplete.

In the traditional Unix getopt(), -1 is returned when the first non-option charcter is encountered. In GNU getopt(), the default behavior is to allow options to appear anywhere on the command line. The getopt() method permutes the argument to make it appear to the caller that all options were at the beginning of the command line, and all non-options were at the end. For example, calling getopt() with command line args of "-a foo bar -d" returns options 'a' and 'd', then sets optind to point to "foo". The program would read the last two argv elements as "foo" and "bar", just as if the user had typed "-a -d foo bar".

The user can force getopt() to stop scanning the command line with the special argument "--" by itself. Any elements occuring before the "--" are scanned and permuted as normal. Any elements after the "--" are returned as is as non-option argv elements. For example, "foo -a -- bar -d" would return option 'a' then -1. optind would point to "foo", "bar" and "-d" as the non-option argv elements. The "--" is discarded by getopt().

There are two ways this default behavior can be modified. The first is to specify traditional Unix getopt() behavior (which is also POSIX behavior) in which scanning stops when the first non-option argument encountered. (Thus "-a foo bar -d" would return 'a' as an option and have "foo", "bar", and "-d" as non-option elements). The second is to allow options anywhere, but to return all elements in the order they occur on the command line. When a non-option element is ecountered, an integer 1 is returned and the value of the non-option element is stored in optarg is if it were the argument to that option. For example, "-a foo -d", returns first 'a', then 1 (with optarg set to "foo") then 'd' then -1. When this "return in order" functionality is enabled, the only way to stop getopt() from scanning all command line elements is to use the special "--" string by itself as described above. An example is "-a foo -b -- bar", which would return 'a', then integer 1 with optarg set to "foo", then 'b', then -1. optind would then point to "bar" as the first non-option argv element. The "--" is discarded.

The POSIX/traditional behavior is enabled by either setting the property "gnu.posixly_correct" or by putting a '+' sign as the first character of the option string. The difference between the two methods is that setting the gnu.posixly_correct property also forces certain error messages to be displayed in POSIX format. To enable the "return in order" functionality, put a '-' as the first character of the option string. Note that after determining the proper behavior, Getopt strips this leading '+' or '-', meaning that a ':' placed as the second character after one of those two will still cause getopt() to return a ':' instead of a '?' if a required option argument is missing.

In addition to traditional single character options, GNU Getopt also supports long options. These are preceeded by a "--" sequence and can be as long as desired. Long options provide a more user-friendly way of entering command line options. For example, in addition to a "-h" for help, a program could support also "--help".

Like short options, long options can also take a required or non-required argument. Required arguments can either be specified by placing an equals sign after the option name, then the argument, or by putting the argument in the next argv element. For example: "--outputdir=foo" and "--outputdir foo" both represent an option of "outputdir" with an argument of "foo", assuming that outputdir takes a required argument. If a long option takes a non-required argument, then the equals sign form must be used to specify the argument. In this case, "--outputdir=foo" would represent option outputdir with an argument of "foo" while "--outputdir foo" would represent the option outputdir with no argument and a first non-option argv element of "foo".

Long options can also be specified using a special POSIX argument format (one that I highly discourage). This form of entry is enabled by placing a "W;" (yes, 'W' then a semi-colon) in the valid option string. This causes getopt to treat the name following the "-W" as the name of the long option. For example, "-W outputdir=foo" would be equivalent to "--outputdir=foo". The name can immediately follow the "-W" like so: "-Woutputdir=foo". Option arguments are handled identically to normal long options. If a string follows the "-W" that does not represent a valid long option, then getopt() returns 'W' and the caller must decide what to do. Otherwise getopt() returns a long option value as described below.

While long options offer convenience, they can also be tedious to type in full. So it is permissible to abbreviate the option name to as few characters as required to uniquely identify it. If the name can represent multiple long options, then an error message is printed and getopt() returns a '?'.

If an invalid option is specified or a required option argument is missing, getopt() prints an error and returns a '?' or ':' exactly as for short options. Note that when an invalid long option is encountered, the optopt variable is set to integer 0 and so cannot be used to identify the incorrect option the user entered.

Long options are defined by LongOpt objects. These objects are created with a contructor that takes four params: a String representing the object name, a integer specifying what arguments the option takes (the value is one of LongOpt.NO_ARGUMENT, LongOpt.REQUIRED_ARGUMENT, or LongOpt.OPTIONAL_ARGUMENT), a StringBuffer flag object (described below), and an integer value (described below).

To enable long option parsing, create an array of LongOpt's representing the legal options and pass it to the Getopt() constructor. WARNING: If all elements of the array are not populated with LongOpt objects, the getopt() method will throw a NullPointerException.

When getopt() is called and a long option is encountered, one of two things can be returned. If the flag field in the LongOpt object representing the long option is non-null, then the integer value field is stored there and an integer 0 is returned to the caller. The val field can then be retrieved from the flag field. Note that since the flag field is a StringBuffer, the appropriate String to integer converions must be performed in order to get the actual int value stored there. If the flag field in the LongOpt object is null, then the value field of the LongOpt is returned. This can be the character of a short option. This allows an app to have both a long and short option sequence (say, "-h" and "--help") that do the exact same thing.

With long options, there is an alternative method of determining which option was selected. The method getLongind() will return the the index in the long option array (NOT argv) of the long option found. So if multiple long options are configured to return the same value, the application can use getLongind() to distinguish between them.

Here is an expanded Getopt example using long options and various techniques described above:

 int c;
 String arg;
 LongOpt[] longopts = new LongOpt[3];
 // 
 StringBuffer sb = new StringBuffer();
 longopts[0] = new LongOpt("help", LongOpt.NO_ARGUMENT, null, 'h');
 longopts[1] = new LongOpt("outputdir", LongOpt.REQUIRED_ARGUMENT, sb, 'o'); 
 longopts[2] = new LongOpt("maximum", LongOpt.OPTIONAL_ARGUMENT, null, 2);
 // 
 Getopt g = new Getopt("testprog", argv, "-:bc::d:hW;", longopts);
 g.setOpterr(false); // We'll do our own error handling
 //
 while ((c = g.getopt()) != -1)
   switch (c)
     {
        case 0:
          arg = g.getOptarg();
          System.out.println("Got long option with value '" +
                             (char)(new Integer(sb.toString())).intValue()
                             + "' with argument " +
                             ((arg != null) ? arg : "null"));
          break;
          //
        case 1:
          System.out.println("I see you have return in order set and that " +
                             "a non-option argv element was just found " +
                             "with the value '" + g.getOptarg() + "'");
          break;
          //
        case 2:
          arg = g.getOptarg();
          System.out.println("I know this, but pretend I didn't");
          System.out.println("We picked option " +
                             longopts[g.getLongind()].getName() +
                           " with value " + 
                           ((arg != null) ? arg : "null"));
          break;
          //
        case 'b':
          System.out.println("You picked plain old option " + (char)c);
          break;
          //
        case 'c':
        case 'd':
          arg = g.getOptarg();
          System.out.println("You picked option '" + (char)c + 
                             "' with argument " +
                             ((arg != null) ? arg : "null"));
          break;
          //
        case 'h':
          System.out.println("I see you asked for help");
          break;
          //
        case 'W':
          System.out.println("Hmmm. You tried a -W with an incorrect long " +
                             "option name");
          break;
          //
        case ':':
          System.out.println("Doh! You need an argument for option " +
                             (char)g.getOptopt());
          break;
          //
        case '?':
          System.out.println("The option '" + (char)g.getOptopt() + 
                           "' is not valid");
          break;
          //
        default:
          System.out.println("getopt() returned " + c);
          break;
     }
 //
 for (int i = g.getOptind(); i < argv.length ; i++)
   System.out.println("Non option argv element: " + argv[i] + "\n");
 

There is an alternative form of the constructor used for long options above. This takes a trailing boolean flag. If set to false, Getopt performs identically to the example, but if the boolean flag is true then long options are allowed to start with a single '-' instead of "--". If the first character of the option is a valid short option character, then the option is treated as if it were the short option. Otherwise it behaves as if the option is a long option. Note that the name given to this option - long_only - is very counter-intuitive. It does not cause only long options to be parsed but instead enables the behavior described above.

Note that the functionality and variable names used are driven from the C lib version as this object is a port of the C code, not a new implementation. This should aid in porting existing C/C++ code, as well as helping programmers familiar with the glibc version to adapt to the Java version even if it seems very non-Java at times.

In this release I made all instance variables protected due to overwhelming public demand. Any code which relied on optarg, opterr, optind, or optopt being public will need to be modified to use the appropriate access methods.

Please send all bug reports, requests, and comments to arenn@urbanophile.com.

Version:
1.0.3
Author:
Roland McGrath (roland@gnu.ai.mit.edu), Ulrich Drepper (drepper@cygnus.com), Aaron M. Renn (arenn@urbanophile.com)
See Also:
LongOpt

Constructor Index

 o Getopt(String, String[], String)
Construct a basic Getopt instance with the given input data.
 o Getopt(String, String[], String, LongOpt[])
Construct a Getopt instance with given input data that is capable of parsing long options as well as short.
 o Getopt(String, String[], String, LongOpt[], boolean)
Construct a Getopt instance with given input data that is capable of parsing long options and short options.

Method Index

 o getLongind()
Returns the index into the array of long options (NOT argv) representing the long option that was found.
 o getopt()
This method returns a char that is the current option that has been parsed from the command line.
 o getOptarg()
For communication from `getopt' to the caller.
 o getOptind()
optind it the index in ARGV of the next element to be scanned.
 o getOptopt()
When getopt() encounters an invalid option, it stores the value of that option in optopt which can be retrieved with this method.
 o setArgv(String[])
Since in GNU getopt() the argument vector is passed back in to the function every time, the caller can swap out argv on the fly.
 o setOpterr(boolean)
Normally Getopt will print a message to the standard error when an invalid option is encountered.
 o setOptind(int)
This method allows the optind index to be set manually.
 o setOptstring(String)
In GNU getopt, it is possible to change the string containg valid options on the fly because it is passed as an argument to getopt() each time.

Constructors

 o Getopt
 public Getopt(String progname,
               String argv[],
               String optstring)
Construct a basic Getopt instance with the given input data. Note that this handles "short" options only.

Parameters:
progname - The name to display as the program name when printing errors
argv - The String array passed as the command line to the program.
optstring - A String containing a description of the valid args for this program
 o Getopt
 public Getopt(String progname,
               String argv[],
               String optstring,
               LongOpt long_options[])
Construct a Getopt instance with given input data that is capable of parsing long options as well as short.

Parameters:
progname - The name to display as the program name when printing errors
argv - The String array passed as the command ilne to the program
optstring - A String containing a description of the valid short args for this program
long_options - An array of LongOpt objects that describes the valid long args for this program
 o Getopt
 public Getopt(String progname,
               String argv[],
               String optstring,
               LongOpt long_options[],
               boolean long_only)
Construct a Getopt instance with given input data that is capable of parsing long options and short options. Contrary to what you might think, the flag 'long_only' does not determine whether or not we scan for only long arguments. Instead, a value of true here allows long arguments to start with a '-' instead of '--' unless there is a conflict with a short option name.

Parameters:
progname - The name to display as the program name when printing errors
argv - The String array passed as the command ilne to the program
optstring - A String containing a description of the valid short args for this program
long_options - An array of LongOpt objects that describes the valid long args for this program
long_only - true if long options that do not conflict with short options can start with a '-' as well as '--'

Methods

 o setOptstring
 public void setOptstring(String optstring)
In GNU getopt, it is possible to change the string containg valid options on the fly because it is passed as an argument to getopt() each time. In this version we do not pass the string on every call. In order to allow dynamic option string changing, this method is provided.

Parameters:
optstring - The new option string to use
 o getOptind
 public int getOptind()
optind it the index in ARGV of the next element to be scanned. This is used for communication to and from the caller and for communication between successive calls to `getopt'. When `getopt' returns -1, this is the index of the first of the non-option elements that the caller should itself scan. Otherwise, `optind' communicates from one call to the next how much of ARGV has been scanned so far.

 o setOptind
 public void setOptind(int optind)
This method allows the optind index to be set manually. Normally this is not necessary (and incorrect usage of this method can lead to serious lossage), but optind is a public symbol in GNU getopt, so this method was added to allow it to be modified by the caller if desired.

Parameters:
optind - The new value of optind
 o setArgv
 public void setArgv(String argv[])
Since in GNU getopt() the argument vector is passed back in to the function every time, the caller can swap out argv on the fly. Since passing argv is not required in the Java version, this method allows the user to override argv. Note that incorrect use of this method can lead to serious lossage.

Parameters:
argv - New argument list
 o getOptarg
 public String getOptarg()
For communication from `getopt' to the caller. When `getopt' finds an option that takes an argument, the argument value is returned here. Also, when `ordering' is RETURN_IN_ORDER, each non-option ARGV-element is returned here. No set method is provided because setting this variable has no effect.

 o setOpterr
 public void setOpterr(boolean opterr)
Normally Getopt will print a message to the standard error when an invalid option is encountered. This can be suppressed (or re-enabled) by calling this method. There is no get method for this variable because if you can't remember the state you set this to, why should I?

 o getOptopt
 public int getOptopt()
When getopt() encounters an invalid option, it stores the value of that option in optopt which can be retrieved with this method. There is no corresponding set method because setting this variable has no effect.

 o getLongind
 public int getLongind()
Returns the index into the array of long options (NOT argv) representing the long option that was found.

 o getopt
 public int getopt()
This method returns a char that is the current option that has been parsed from the command line. If the option takes an argument, then the internal variable 'optarg' is set which is a String representing the the value of the argument. This value can be retrieved by the caller using the getOptarg() method. If an invalid option is found, an error message is printed and a '?' is returned. The name of the invalid option character can be retrieved by calling the getOptopt() method. When there are no more options to be scanned, this method returns -1. The index of first non-option element in argv can be retrieved with the getOptind() method.

Returns:
Various things as described above

All Packages  Class Hierarchy  This Package  Previous  Next  Index
omniEvents-2_6_2/examples/java/gnu/getopt/gnu.getopt.LongOpt.html0000644000076400001440000001577410227236244025341 0ustar alexusers00000000000000 Class gnu.getopt.LongOpt
All Packages  Class Hierarchy  This Package  Previous  Next  Index

Class gnu.getopt.LongOpt

java.lang.Object
   |
   +----gnu.getopt.LongOpt

public class LongOpt
extends Object
This object represents the definition of a long option in the Java port of GNU getopt. An array of LongOpt objects is passed to the Getopt object to define the list of valid long options for a given parsing session. Refer to the getopt documentation for details on the format of long options.

Version:
1.0.3
Author:
Aaron M. Renn (arenn@urbanophile.com)
See Also:
Getopt

Variable Index

 o NO_ARGUMENT
Constant value used for the "has_arg" constructor argument.
 o OPTIONAL_ARGUMENT
Constant value used for the "has_arg" constructor argument.
 o REQUIRED_ARGUMENT
Constant value used for the "has_arg" constructor argument.

Constructor Index

 o LongOpt(String, int, StringBuffer, int)
Create a new LongOpt object with the given parameter values.

Method Index

 o getFlag()
Returns the value of the 'flag' field for this long option
 o getHasArg()
Returns the value set for the 'has_arg' field for this long option
 o getName()
Returns the name of this LongOpt as a String
 o getVal()
Returns the value of the 'val' field for this long option

Variables

 o NO_ARGUMENT
 public static final int NO_ARGUMENT
Constant value used for the "has_arg" constructor argument. This value indicates that the option takes no argument.

 o REQUIRED_ARGUMENT
 public static final int REQUIRED_ARGUMENT
Constant value used for the "has_arg" constructor argument. This value indicates that the option takes an argument that is required.

 o OPTIONAL_ARGUMENT
 public static final int OPTIONAL_ARGUMENT
Constant value used for the "has_arg" constructor argument. This value indicates that the option takes an argument that is optional.

Constructors

 o LongOpt
 public LongOpt(String name,
                int has_arg,
                StringBuffer flag,
                int val) throws IllegalArgumentException
Create a new LongOpt object with the given parameter values. If the value passed as has_arg is not valid, then an exception is thrown.

Parameters:
name - The long option String.
has_arg - Indicates whether the option has no argument (NO_ARGUMENT), a required argument (REQUIRED_ARGUMENT) or an optional argument (OPTIONAL_ARGUMENT).
flag - If non-null, this is a location to store the value of "val" when this option is encountered, otherwise "val" is treated as the equivalent short option character.
val - The value to return for this long option, or the equivalent single letter option to emulate if flag is null.
Throws: IllegalArgumentException
If the has_arg param is not one of NO_ARGUMENT, REQUIRED_ARGUMENT or OPTIONAL_ARGUMENT.

Methods

 o getName
 public String getName()
Returns the name of this LongOpt as a String

Returns:
Then name of the long option
 o getHasArg
 public int getHasArg()
Returns the value set for the 'has_arg' field for this long option

Returns:
The value of 'has_arg'
 o getFlag
 public StringBuffer getFlag()
Returns the value of the 'flag' field for this long option

Returns:
The value of 'flag'
 o getVal
 public int getVal()
Returns the value of the 'val' field for this long option

Returns:
The value of 'val'

All Packages  Class Hierarchy  This Package  Previous  Next  Index
omniEvents-2_6_2/examples/java/Eventc.java0000644000076400001440000002363710240451205020760 0ustar alexusers00000000000000// Package : omniEvents // Eventc.java Created : 2004/03/10 // Author : Alex Tingle // // Copyright (C) 2004 Alex Tingle. // // This file is part of the omniEvents application. // // omniEvents is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public // License as published by the Free Software Foundation; either // version 2.1 of the License, or (at your option) any later version. // // omniEvents is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU // Lesser General Public License for more details. // // You should have received a copy of the GNU Lesser General Public // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // // Description: // Client to the event channel factory. Requests creation of an event // channel and registers it with the Naming service. // import gnu.getopt.Getopt; import org.omg.CORBA.*; import org.omg.CosNaming.*; import org.omg.CosNaming.NamingContextPackage.*; import org.omg.CosLifeCycle.*; import org.omg.CosEventComm.*; import org.omg.CosEventChannelAdmin.*; import net.sourceforge.omniorb.EventChannelAdmin.*; public class Eventc { static ORB orb; public static void main(String args[]) { // // Start orb. orb=ORB.init(args, null); // Must strip out ORB arguments manually in Java, // since ORB.init() doesn't do it for us. args=stripOrbArgs(args); // Process Options boolean verbose =false; String channelName ="EventChannel"; String channelKind ="EventChannel"; String factoryName ="EventChannelFactory"; String factoryKind ="EventChannelFactory"; NVP[] criteria =new NVP[0]; Getopt g =new Getopt("eventc",args,"n:k:N:K:m:c:i:p:q:R:r:vh"); int c; while ((c = g.getopt()) != -1) { switch (c) { case 'n': channelName=g.getOptarg(); break; case 'k': channelKind=g.getOptarg(); break; case 'N': factoryName=g.getOptarg(); break; case 'K': factoryKind=g.getOptarg(); break; case 'm': // OLD OPTION criteria=appendCriterion(criteria,"MaxEventsPerConsumer",g.getOptarg()); break; case 'c': criteria=appendCriterion(criteria,"CyclePeriod_ns",g.getOptarg()); break; case 'i': criteria=appendCriterionStr(criteria,"InsName",g.getOptarg()); break; case 'p': criteria=appendCriterion(criteria,"MaxNumProxies",g.getOptarg()); break; case 'q': criteria=appendCriterion(criteria,"MaxQueueLength",g.getOptarg()); break; case 'R': criteria=appendCriterion(criteria,"PullRetryPeriod_ms",g.getOptarg()); break; case 'r': // This option is deprecated in favour of -R: criteria=appendCriterion(criteria,"PullRetryPeriod",g.getOptarg()); break; case 'v': verbose=true; break; case 'h': usage(); System.exit(0); default : usage(); System.exit(-1); } } // // Use one big try...catch block. // 'action' variable keeps track of what we're doing. String action ="start"; try { // // Get Name Service root context. action="resolve initial reference 'NameService'"; org.omg.CORBA.Object obj =orb.resolve_initial_references("NameService"); NamingContext rootContext=NamingContextHelper.narrow(obj); // // Obtain reference to the Event Channel Factory implementation. // (from command-line argument or from the Naming Service). if(g.getOptind() Revision 0.5 1999/11/01 15:55:11 naderp omniEvents 2.0 Release. Ignoring SIGPIPE for UNIX platforms. Revision 0.4 99/04/23 16:05:38 16:05:38 naderp (Paul Nader) gcc port. Revision 0.3 99/04/23 09:33:40 09:33:40 naderp (Paul Nader) Windows Port. Revision 0.2 99/04/21 18:06:25 18:06:25 naderp (Paul Nader) *** empty log message *** Revision 0.1.1.1 98/11/27 16:59:07 16:59:07 naderp (Paul Nader) Added -s option to sleep after disconnecting. Revision 0.1 98/11/25 14:08:04 14:08:04 naderp (Paul Nader) Initial Revision */ #ifdef HAVE_CONFIG_H # include "config.h" #endif #ifdef HAVE_GETOPT # include extern char* optarg; extern int optind; #else # include "getopt.h" #endif #ifdef HAVE_IOSTREAM # include #else # include #endif #ifdef HAVE_STD_IOSTREAM using namespace std; #endif #ifdef HAVE_STDLIB_H # include #endif #ifdef HAVE_SIGNAL_H # include #endif #include "CosEventComm.hh" #include "CosEventChannelAdmin.hh" #include "naming.h" static void usage(int argc, char **argv); class Consumer_i : virtual public POA_CosEventComm::PullConsumer { public: Consumer_i () {}; void disconnect_pull_consumer (); }; void Consumer_i::disconnect_pull_consumer () { cout << "Pull Consumer: disconnected." << endl; } int main(int argc, char **argv) { // // Start orb. CORBA::ORB_ptr orb = CORBA::ORB_init(argc,argv); // Process Options bool trymode =false; int discnum =0; bool refnil =false; int sleepInterval =0; const char* channelName ="EventChannel"; int c; while ((c = getopt(argc,argv,"td:rs:n:h")) != EOF) { switch (c) { case 't': trymode = true; break; case 'd': discnum = atoi(optarg); break; case 'r': refnil = true; break; case 's': sleepInterval = atoi(optarg); break; case 'n': channelName = optarg; break; case 'h': default : usage(argc,argv); exit(-1); break; } } #if defined(HAVE_SIGNAL_H) && defined(SIGPIPE) // Ignore broken pipes signal(SIGPIPE, SIG_IGN); #endif Consumer_i* consumer =NULL; CosEventChannelAdmin::EventChannel_var channel; const char* action=""; // Use this variable to help report errors. try { CORBA::Object_var obj; // A Pull Consumer can be implemented as a pure client or as a mixed // client-server process, depending on whether it requires and is // prepared to service disconnect requests from the channel. // If it is, then create the servant object and activate the POA. if (! refnil) { consumer=new Consumer_i(); action="resolve initial reference 'RootPOA'"; obj=orb->resolve_initial_references("RootPOA"); PortableServer::POA_var rootPoa =PortableServer::POA::_narrow(obj); if(CORBA::is_nil(rootPoa)) throw CORBA::OBJECT_NOT_EXIST(); action="activate the RootPOA's POAManager"; PortableServer::POAManager_var pman =rootPoa->the_POAManager(); pman->activate(); } // // Obtain object reference to EventChannel // (from command-line argument or from the Naming Service). if(optindstring_to_object(argv[optind]); } else { action="resolve initial reference 'NameService'"; obj=orb->resolve_initial_references("NameService"); CosNaming::NamingContext_var rootContext= CosNaming::NamingContext::_narrow(obj); if(CORBA::is_nil(rootContext)) throw CORBA::OBJECT_NOT_EXIST(); action="find EventChannel in NameService"; cout << action << endl; obj=rootContext->resolve(str2name(channelName)); } action="narrow object reference to event channel"; channel=CosEventChannelAdmin::EventChannel::_narrow(obj); if(CORBA::is_nil(channel)) { cerr << "Failed to narrow Event Channel reference." << endl; exit(1); } } catch(CORBA::ORB::InvalidName& ex) { // resolve_initial_references cerr<<"Failed to "<for_consumers (); if (CORBA::is_nil (consumer_admin)) { cerr << "Event Channel returned nil Consumer Admin!" << endl; exit (1); } break; } catch (CORBA::COMM_FAILURE& ex) { cerr << "Caught COMM_FAILURE exception " << "obtaining Consumer Admin! Retrying..." << endl; continue; } } cout << "Obtained Consumer Admin." << endl; while (1) { // // Get proxy supplier - retrying on Comms Failure. CosEventChannelAdmin::ProxyPullSupplier_var proxy_supplier; while (1) { try { proxy_supplier = consumer_admin->obtain_pull_supplier (); if (CORBA::is_nil (proxy_supplier)) { cerr << "Consumer Admin returned nil Proxy Supplier!" << endl; exit (1); } break; } catch (CORBA::COMM_FAILURE& ex) { cerr << "Caught COMM_FAILURE Exception " << "obtaining Pull Supplier! Retrying..." << endl; continue; } } cout << "Obtained ProxyPullSupplier." << endl; // // Connect Pull Consumer - retrying on Comms Failure. CosEventComm::PullConsumer_ptr cptr =CosEventComm::PullConsumer::_nil(); if (! refnil) { cptr=consumer->_this(); } while (1) { try { proxy_supplier->connect_pull_consumer(cptr); break; } catch (CORBA::BAD_PARAM& ex) { cerr << "Caught BAD_PARAM exception connecting Pull Consumer!"<try_pull(has_event); cout << "Consumer: try_pull() called. Data : " << flush; if (has_event) { l = 0; *data >>= l; cout << l << endl; delete data; } else { cout << "None" << endl; } } catch (CosEventComm::Disconnected& ex) { cout << endl; cerr << "Failed. Caught Disconnected Exception !" << endl; } catch (CORBA::COMM_FAILURE& ex) { cout << endl; cerr << "Failed. Caught COMM_FAILURE Exception !" << endl; } catch (CORBA::Exception& ex) { cout << endl; cerr<<"CORBA exception, unable to try_pull()" #ifdef HAVE_OMNIORB4 <<": "<pull(); l = 0; *data >>= l; cout << "Data : " << l << endl; delete data; } catch(CORBA::TRANSIENT&) { cout << "caught TRANSIENT." << endl; omni_thread::sleep(1); } catch (CosEventComm::Disconnected& ex) { cout << endl; cerr << "Failed. Caught Disconnected exception!" << endl; exit(1); } catch (CORBA::COMM_FAILURE& ex) { cout << endl; cerr << "Failed. Caught COMM_FAILURE exception!" << endl; exit(1); } catch (CORBA::SystemException& ex) { cout << endl; cerr<<"System exception, unable to pull()"; #ifdef HAVE_OMNIORB4 cerr<<": "<disconnect_pull_supplier(); break; } catch (CORBA::COMM_FAILURE& ex) { cerr << "Caught COMM_FAILURE exception " << "disconnecting Pull Consumer! Retrying..." << endl; continue; } } cout << "Disconnected Pull Consumer." << endl; // Yawn cout << "Sleeping " << sleepInterval << " seconds." << endl; omni_thread::sleep(sleepInterval); } // Not Reached return 0; } static void usage(int argc, char **argv) { cerr<< "\nCreate a PullConsumer to receive events from a channel.\n" "syntax: "<<(argc?argv[0]:"pullcons")<<" OPTIONS [CHANNEL_URI]\n" "\n" "CHANNEL_URI: The event channel may be specified as a URI.\n" " This may be an IOR, or a corbaloc::: or corbaname::: URI.\n" "\n" "OPTIONS: DEFAULT:\n" " -t enable try_pull mode\n" " -r connect using a nil reference\n" " -d NUM disconnect after receiving NUM events [0 - never disconnect]\n" " -s SECS sleep SECS seconds after disconnecting [0]\n" " -n NAME channel name (if URI is not specified) [\"EventChannel\"]\n" " -h display this help text\n" << endl; } omniEvents-2_6_2/examples/pullsupp.cc0000644000076400001440000003116510227236244020147 0ustar alexusers00000000000000// -*- Mode: C++; -*- // Package : omniEvents // pullsupp.cc Created : 1/4/98 // Author : Paul Nader (pwn) // // Copyright (C) 1998 Paul Nader, 2003-2004 Alex Tingle // // This file is part of the omniEvents application. // // omniEvents is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public // License as published by the Free Software Foundation; either // version 2.1 of the License, or (at your option) any later version. // // omniEvents is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU // Lesser General Public License for more details. // // You should have received a copy of the GNU Lesser General Public // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // // Description: // Pull Model supplier implementation. // /* $Log: pullsupp.cc,v $ Revision 1.9 2004/10/08 09:06:08 alextingle More robust exception minor code handling. Revision 1.8 2004/08/18 17:49:45 alextingle Added check for SIGPIPE before trying to use it. Revision 1.7 2004/08/06 16:19:23 alextingle -k & -K options removed. Naming service names may now be as complex as you like. Revision 1.6 2004/04/20 16:52:05 alextingle All examples updated for latest version on omniEvents. Server may now be specified as a 'corbaloc' string or IOR, instead of as naming service id/kind. Revision 1.5 2004/02/04 22:29:55 alextingle Reworked all C++ examples. Removed catch(...) as it tends to make it harder to see what's going on. Now uses POA instead of BOA. Uses omniORB4's Exception name probing. No longer uses 'naming.h/cc' utility code. Revision 1.4 2003/11/17 08:47:09 alextingle Corrected typo. Revision 1.2 2003/11/16 23:24:22 alex Corrected typo. Revision 1.1.1.1 2003/11/11 22:28:56 alex Import of testing 2.3.0 Revision 1.3 2003/11/03 22:20:26 alextingle Removed all platform specific switches. Now uses autoconf, config.h. Removed stub header in order to allow makefile dependency checking to work correctly. Revision 1.1.1.1.2.1 2002/09/28 22:20:51 shamus13 Added ifdefs to enable omniEvents to compile with both omniORB3 and omniORB4. If __OMNIORB4__ is defined during compilation, omniORB4 headers and command line option syntax is used, otherwise fall back to omniORB3 style. Revision 1.1.1.1 2002/09/25 19:00:26 shamus13 Import of OmniEvents source tree from release 2.1.1 Revision 0.11 2000/08/30 04:39:48 naderp Port to omniORB 3.0.1. Revision 0.10 2000/03/16 05:37:27 naderp Added stdlib.h for getopt. Revision 0.9 2000/03/06 13:26:32 naderp Using util getRootNamingContext function. Using stub headers. Fixed error messages. Revision 0.8 2000/03/02 03:16:26 naderp Added retry resiliency for handling COMM_FAUILURE exceptions. Replaced condition variable by counting semaphore. Revision 0.7 1999/11/02 13:39:13 naderp Added Revision 0.6 1999/11/02 07:57:22 naderp Updated usage. Revision 0.5 99/11/01 16:10:12 16:10:12 naderp (Paul Nader) omniEvents 2.0 Release. Ignoring SIGPIPE for UNIX platforms. Revision 0.4 99/04/23 16:05:44 16:05:44 naderp (Paul Nader) gcc port. Revision 0.3 99/04/23 09:34:01 09:34:01 naderp (Paul Nader) Windows Port. Revision 0.2 99/04/21 18:06:25 18:06:25 naderp (Paul Nader) *** empty log message *** Revision 0.1.1.1 98/11/27 16:59:33 16:59:33 naderp (Paul Nader) Added -s option to sleep after disconnecting. Revision 0.1 98/11/25 14:08:07 14:08:07 naderp (Paul Nader) Initial Revision */ #ifdef HAVE_CONFIG_H # include "config.h" #endif #ifdef HAVE_GETOPT # include extern char* optarg; extern int optind; #else # include "getopt.h" #endif #ifdef HAVE_IOSTREAM # include #else # include #endif #ifdef HAVE_STD_IOSTREAM using namespace std; #endif #ifdef HAVE_STDLIB_H # include #endif #ifdef HAVE_SIGNAL_H # include #endif #include "CosEventComm.hh" #include "CosEventChannelAdmin.hh" #include "naming.h" static omni_semaphore connect_cond(0); static void usage(int argc, char **argv); class Supplier_i : virtual public POA_CosEventComm::PullSupplier { public: Supplier_i (long disconnect = 0) : i(0), _disconnect(disconnect), l(0) {}; CORBA::Any *pull(); CORBA::Any *try_pull(CORBA::Boolean &has_event); void disconnect_pull_supplier (); private: long i; long _disconnect; CORBA::ULong l; }; void Supplier_i::disconnect_pull_supplier () { cout << "Pull Supplier: disconnected by channel." << endl; } CORBA::Any * Supplier_i::pull() { cout << "Pull Supplier: pull() called. Data : "; CORBA::Any *any = new CORBA::Any(); *any <<= l++; cout << l-1 << endl; // Exercise Disconnect if ((_disconnect > 0) && (i == _disconnect)) { i = 0; // Signal main thread to disconnect and re-connect. connect_cond.post(); } i++; return (any); } CORBA::Any * Supplier_i::try_pull(CORBA::Boolean &has_event) { cout << "Pull Supplier: try_pull() called. Data : "; CORBA::Any *any = new CORBA::Any(); *any <<= l++; cout << l-1 << endl; has_event = 1; // Exercise Disconnect if ((_disconnect > 0) && (i == _disconnect)) { i = 0; // Signal main thread to disconnect and re-connect. connect_cond.post(); } i++; return (any); } int main (int argc, char** argv) { #if defined(HAVE_OMNIORB4) CORBA::ORB_var orb =CORBA::ORB_init(argc,argv,"omniORB4"); #else CORBA::ORB_var orb =CORBA::ORB_init(argc,argv,"omniORB3"); #endif // Process Options int discnum =0; int sleepInterval =0; const char* channelName ="EventChannel"; int c; while ((c = getopt(argc,argv,"d:s:n:h")) != EOF) { switch (c) { case 'd': discnum = atoi(optarg); break; case 's': sleepInterval = atoi(optarg); break; case 'n': channelName = optarg; break; case 'h': default : usage(argc,argv); exit(-1); break; } } #if defined(HAVE_SIGNAL_H) && defined(SIGPIPE) // Ignore broken pipes signal(SIGPIPE, SIG_IGN); #endif Supplier_i* supplier = new Supplier_i (discnum); CosEventChannelAdmin::EventChannel_var channel; const char* action=""; // Use this variable to help report errors. try { CORBA::Object_var obj; action="resolve initial reference 'RootPOA'"; obj=orb->resolve_initial_references("RootPOA"); PortableServer::POA_var rootPoa =PortableServer::POA::_narrow(obj); if(CORBA::is_nil(rootPoa)) throw CORBA::OBJECT_NOT_EXIST(); action="activate the RootPOA's POAManager"; PortableServer::POAManager_var pman =rootPoa->the_POAManager(); pman->activate(); // // Obtain object reference to EventChannel // (from command-line argument or from the Naming Service). if(optindstring_to_object(argv[optind]); } else { action="resolve initial reference 'NameService'"; obj=orb->resolve_initial_references("NameService"); CosNaming::NamingContext_var rootContext= CosNaming::NamingContext::_narrow(obj); if(CORBA::is_nil(rootContext)) throw CORBA::OBJECT_NOT_EXIST(); action="find EventChannel in NameService"; cout << action << endl; obj=rootContext->resolve(str2name(channelName)); } action="narrow object reference to event channel"; channel=CosEventChannelAdmin::EventChannel::_narrow(obj); if(CORBA::is_nil(channel)) { cerr << "Failed to narrow Event Channel reference." << endl; exit(1); } } catch(CORBA::ORB::InvalidName& ex) { // resolve_initial_references cerr<<"Failed to "<for_suppliers (); if (CORBA::is_nil(supplier_admin)) { cerr << "Event Channel returned nil Supplier Admin!" << endl; exit(1); } break; } catch (CORBA::COMM_FAILURE& ex) { cerr << "Caught COMM_FAILURE exception " << "obtaining Supplier Admin! Retrying..." << endl; continue; } } cout << "Obtained SupplierAdmin." << endl; while (1) { // // Get proxy consumer - retrying on Comms Failure. CosEventChannelAdmin::ProxyPullConsumer_var proxy_consumer; while (1) { try { proxy_consumer = supplier_admin->obtain_pull_consumer (); if (CORBA::is_nil(proxy_consumer)) { cerr << "Supplier Admin returned nil proxy_consumer!" << endl; exit(1); } break; } catch (CORBA::COMM_FAILURE& ex) { cerr << "Caught COMM_FAILURE exception " << "obtaining Proxy Pull Consumer! Retrying..." << endl; continue; } } cout << "Obtained ProxyPullConsumer." << endl; // Connect Pull Supplier - retrying on Comms Failure. CosEventComm::PullSupplier_var supplierRef =supplier->_this(); while (1) { try { proxy_consumer->connect_pull_supplier(supplierRef.in()); break; } catch (CORBA::BAD_PARAM& ex) { cerr<<"Caught BAD_PARAM Exception connecting Pull Supplier!"<disconnect_pull_consumer(); break; } catch (CORBA::COMM_FAILURE& ex) { cerr << "Caught COMM_FAILURE exception " << "disconnecting Pull Supplier! Retrying..." << endl; continue; } } cout << "Disconnected Pull Supplier." << endl; // Yawn. cout << "Sleeping " << sleepInterval << " seconds." << endl; omni_thread::sleep(sleepInterval); } // Not Reached return 0; } static void usage(int argc, char **argv) { cerr<< "\nCreate a PullSupplier to send events to a channel.\n" "syntax: "<<(argc?argv[0]:"pullsupp")<<" OPTIONS [CHANNEL_URI]\n" "\n" "CHANNEL_URI: The event channel may be specified as a URI.\n" " This may be an IOR, or a corbaloc::: or corbaname::: URI.\n" "\n" "OPTIONS: DEFAULT:\n" " -d NUM disconnect after sending NUM events [0 - never disconnect]\n" " -s SECS sleep SECS seconds after disconnecting [0]\n" " -n NAME channel name (if URI is not specified) [\"EventChannel\"]\n" " -h display this help text\n" << endl; } omniEvents-2_6_2/examples/pushcons.cc0000644000076400001440000003205610260316165020123 0ustar alexusers00000000000000// -*- Mode: C++; -*- // Package : omniEvents // pushcons.cc Created : 1/4/98 // Author : Paul Nader (pwn) // // Copyright (C) 1998 Paul Nader, 2003-2004 Alex Tingle // // This file is part of the omniEvents application. // // omniEvents is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public // License as published by the Free Software Foundation; either // version 2.1 of the License, or (at your option) any later version. // // omniEvents is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU // Lesser General Public License for more details. // // You should have received a copy of the GNU Lesser General Public // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // // Description: // Push Model consumer implementation // /* $Log: pushcons.cc,v $ Revision 1.12.2.1 2005/06/16 09:39:49 alextingle Fixed theoretical race caused by sloppy use of condition variable. Revision 1.12 2004/10/08 09:06:08 alextingle More robust exception minor code handling. Revision 1.11 2004/08/18 17:49:45 alextingle Added check for SIGPIPE before trying to use it. Revision 1.10 2004/08/06 16:19:23 alextingle -k & -K options removed. Naming service names may now be as complex as you like. Revision 1.9 2004/04/30 17:54:47 alextingle Corrected handling of CORBA::Any. Revision 1.8 2004/04/20 16:52:17 alextingle All examples updated for latest version on omniEvents. Server may now be specified as a 'corbaloc' string or IOR, instead of as naming service id/kind. Revision 1.7 2004/04/01 22:28:36 alextingle Corrected usage message. Revision 1.6 2004/03/23 19:09:26 alextingle Fixed typos. Revision 1.5 2004/02/21 19:07:45 alextingle Corrected servants to use POA instead of BOA. Revision 1.4 2004/02/04 22:29:55 alextingle Reworked all C++ examples. Removed catch(...) as it tends to make it harder to see what's going on. Now uses POA instead of BOA. Uses omniORB4's Exception name probing. No longer uses 'naming.h/cc' utility code. Revision 1.3 2003/11/03 22:19:56 alextingle Removed all platform specific switches. Now uses autoconf, config.h. Removed stub header in order to allow makefile dependency checking to work correctly. Corrected usage of omni_condition/omni_mutex. Mutexes are now always unlocked by the same thread that locked them. Revision 1.1.1.1.2.1 2002/09/28 22:20:51 shamus13 Added ifdefs to enable omniEvents to compile with both omniORB3 and omniORB4. If __OMNIORB4__ is defined during compilation, omniORB4 headers and command line option syntax is used, otherwise fall back to omniORB3 style. Revision 1.1.1.1 2002/09/25 19:00:26 shamus13 Import of OmniEvents source tree from release 2.1.1 Revision 0.13 2000/08/30 04:39:48 naderp Port to omniORB 3.0.1. Revision 0.12 2000/03/16 05:37:27 naderp Added stdlib.h for getopt. Revision 0.11 2000/03/06 13:27:02 naderp Using util getRootNamingContext function. Using stub headers. Fixed error messages. Revision 0.10 2000/03/02 03:20:24 naderp Added retry resiliency for handling COMM_FAUILURE exceptions. Revision 0.9 1999/11/02 13:39:15 naderp Added Revision 0.8 1999/11/02 07:57:04 naderp Updated usage. Revision 0.7 99/11/01 18:10:29 18:10:29 naderp (Paul Nader) Added ahndling of COMM_FAILURE exception for connect_push_consumer. Revision 0.6 99/11/01 16:11:03 16:11:03 naderp (Paul Nader) omniEvents 2.0 Release. Revision 0.5 99/10/27 19:46:01 19:46:01 naderp (Paul Nader) Ignoring Unix SIGPIPE signal. Catching COMM_FAILURE exception for obtain_push_supplier. Continuing if it fails to obtain Proxy Supplier. Try/Catch block for disconnect_push_supplier. Revision 0.4 99/04/23 16:05:46 16:05:46 naderp (Paul Nader) gcc port. Revision 0.3 99/04/23 09:34:03 09:34:03 naderp (Paul Nader) Windows Port. Revision 0.2 99/04/21 18:06:26 18:06:26 naderp (Paul Nader) *** empty log message *** Revision 0.1.1.1 98/11/27 16:59:37 16:59:37 naderp (Paul Nader) Added -s option to sleep after disconnecting. Revision 0.1 98/11/25 14:08:21 14:08:21 naderp (Paul Nader) Initial Revision */ #ifdef HAVE_CONFIG_H # include "config.h" #endif #ifdef HAVE_GETOPT # include extern char* optarg; extern int optind; #else # include "getopt.h" #endif #ifdef HAVE_IOSTREAM # include #else # include #endif #ifdef HAVE_STD_IOSTREAM using namespace std; #endif #ifdef HAVE_STDLIB_H # include #endif #ifdef HAVE_SIGNAL_H # include #endif #include "CosEventComm.hh" #include "CosEventChannelAdmin.hh" #include "naming.h" static omni_mutex mutex; static omni_condition connect_cond(&mutex); static void usage(int argc, char **argv); class Consumer_i : virtual public POA_CosEventComm::PushConsumer { public: Consumer_i(long disconnect=0): _disconnect(disconnect) {} void push(const CORBA::Any& data); void disconnect_push_consumer (); private: long _disconnect; }; void Consumer_i::push(const CORBA::Any& data) { CORBA::ULong l; static int i = 0; i++; if( data>>=l ) { cout<<"Push Consumer: push() called. Data : "<< l <resolve_initial_references("RootPOA"); PortableServer::POA_var rootPoa =PortableServer::POA::_narrow(obj); if(CORBA::is_nil(rootPoa)) throw CORBA::OBJECT_NOT_EXIST(); action="activate the RootPOA's POAManager"; PortableServer::POAManager_var pman =rootPoa->the_POAManager(); pman->activate(); // // Obtain object reference to EventChannel // (from command-line argument or from the Naming Service). if(optindstring_to_object(argv[optind]); } else { action="resolve initial reference 'NameService'"; obj=orb->resolve_initial_references("NameService"); CosNaming::NamingContext_var rootContext= CosNaming::NamingContext::_narrow(obj); if(CORBA::is_nil(rootContext)) throw CORBA::OBJECT_NOT_EXIST(); action="find EventChannel in NameService"; cout << action << endl; obj=rootContext->resolve(str2name(channelName)); } action="narrow object reference to event channel"; channel=CosEventChannelAdmin::EventChannel::_narrow(obj); if(CORBA::is_nil(channel)) { cerr << "Failed to narrow Event Channel reference." << endl; exit(1); } } catch(CORBA::ORB::InvalidName& ex) { // resolve_initial_references cerr<<"Failed to "<for_consumers (); if (CORBA::is_nil (consumer_admin)) { cerr << "Event Channel returned nil Consumer Admin!" << endl; exit(1); } break; } catch (CORBA::COMM_FAILURE& ex) { cerr << "Caught COMM_FAILURE exception " << "obtaining Consumer Admin! Retrying..." << endl; continue; } } cout << "Obtained ConsumerAdmin." << endl; omni_mutex_lock condition_lock(mutex); while (1) { // // Get proxy supplier - retrying on Comms Failure. CosEventChannelAdmin::ProxyPushSupplier_var proxy_supplier; while (1) { try { proxy_supplier = consumer_admin->obtain_push_supplier (); if (CORBA::is_nil (proxy_supplier)) { cerr << "Consumer Admin returned nil proxy_supplier!" << endl; exit (1); } break; } catch (CORBA::COMM_FAILURE& ex) { cerr << "Caught COMM_FAILURE Exception " << "obtaining Push Supplier! Retrying..." << endl; continue; } } cout << "Obtained ProxyPushSupplier." << endl; // // Connect Push Consumer - retrying on Comms Failure. while (1) { try { proxy_supplier->connect_push_consumer(consumer->_this()); break; } catch (CORBA::BAD_PARAM& ex) { cerr << "Caught BAD_PARAM Exception connecting Push Consumer!" << endl; exit (1); } catch (CosEventChannelAdmin::AlreadyConnected& ex) { cerr << "Proxy Push Supplier already connected!" << endl; break; } catch (CORBA::COMM_FAILURE& ex) { cerr << "Caught COMM_FAILURE exception " << "connecting Push Consumer! Retrying..." << endl; continue; } } cout << "Connected Push Consumer." << endl; // Wait for indication to disconnect before re-connecting. connect_cond.wait(); // Disconnect - retrying on Comms Failure. while (1) { try { proxy_supplier->disconnect_push_supplier(); break; } catch (CORBA::COMM_FAILURE& ex) { cerr << "Caught COMM_FAILURE Exception " << "disconnecting Push Consumer! Retrying..." << endl; continue; } } cout << "Disconnected Push Consumer." << endl; // Yawn cout << "Sleeping " << sleepInterval << " seconds." << endl; omni_thread::sleep(sleepInterval); } // NEVER GET HERE return 0; } static void usage(int argc, char **argv) { cerr<< "\nCreate a PushConsumer to receive events from a channel.\n" "syntax: "<<(argc?argv[0]:"pushcons")<<" OPTIONS [CHANNEL_URI]\n" "\n" "CHANNEL_URI: The event channel may be specified as a URI.\n" " This may be an IOR, or a corbaloc::: or corbaname::: URI.\n" "\n" "OPTIONS: DEFAULT:\n" " -d NUM disconnect after receiving NUM events [0 - never disconnect]\n" " -s SECS sleep SECS seconds after disconnecting [0]\n" " -n NAME channel name (if URI is not specified) [\"EventChannel\"]\n" " -h display this help text\n" << endl; } omniEvents-2_6_2/examples/pushsupp.cc0000644000076400001440000003155710227236244020157 0ustar alexusers00000000000000// -*- Mode: C++; -*- // Package : omniEvents // pushsupp.cc Created on: 1/4/98 // Author : Paul Nader (pwn) // // Copyright (C) 1998 Paul Nader, 2003-2004 Alex Tingle // // This file is part of the omnievents application. // // omniEvents is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public // License as published by the Free Software Foundation; either // version 2.1 of the License, or (at your option) any later version. // // omniEvents is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU // Lesser General Public License for more details. // // You should have received a copy of the GNU Lesser General Public // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // // Description: // Push Model supplier implementation. // /* $Log: pushsupp.cc,v $ Revision 1.10 2004/10/08 09:06:08 alextingle More robust exception minor code handling. Revision 1.9 2004/08/18 17:49:45 alextingle Added check for SIGPIPE before trying to use it. Revision 1.8 2004/08/06 16:19:23 alextingle -k & -K options removed. Naming service names may now be as complex as you like. Revision 1.7 2004/04/20 16:52:17 alextingle All examples updated for latest version on omniEvents. Server may now be specified as a 'corbaloc' string or IOR, instead of as naming service id/kind. Revision 1.6 2004/03/23 19:09:26 alextingle Fixed typos. Revision 1.5 2004/02/21 19:07:45 alextingle Corrected servants to use POA instead of BOA. Revision 1.4 2004/02/04 22:29:55 alextingle Reworked all C++ examples. Removed catch(...) as it tends to make it harder to see what's going on. Now uses POA instead of BOA. Uses omniORB4's Exception name probing. No longer uses 'naming.h/cc' utility code. Revision 1.3 2003/11/03 22:19:25 alextingle Removed all platform specific switches. Now uses autoconf, config.h. Removed stub header in order to allow makefile dependency checking to work correctly. Changed int to bool where appropriate. Revision 1.1.1.1.2.1 2002/09/28 22:20:51 shamus13 Added ifdefs to enable omniEvents to compile with both omniORB3 and omniORB4. If __OMNIORB4__ is defined during compilation, omniORB4 headers and command line option syntax is used, otherwise fall back to omniORB3 style. Revision 1.1.1.1 2002/09/25 19:00:26 shamus13 Import of OmniEvents source tree from release 2.1.1 Revision 0.14 2000/10/11 01:16:21 naderp *** empty log message *** Revision 0.13 2000/08/30 04:39:48 naderp Port to omniORB 3.0.1. Revision 0.12 2000/03/16 05:37:27 naderp Added stdlib.h for getopt. Revision 0.11 2000/03/06 13:27:10 naderp Using util getRootNamingContext function. Using stub headers. Fixed error messages. Revision 0.10 2000/03/02 03:21:20 naderp Added -r option to connect using nil reference. Added retry resiliency for handling COMM_FAUILURE exceptions. Revision 0.9 99/11/02 13:39:17 13:39:17 naderp (Paul Nader) Added Revision 0.8 1999/11/02 07:57:18 naderp Updated usage. Revision 0.7 99/11/01 19:22:43 19:22:43 naderp (Paul Nader) Added catch for COMM_FAILURE exception in obtain_push_consumer and disconnect_push_consumer calls. Revision 0.6 99/11/01 16:12:03 16:12:03 naderp (Paul Nader) omniEvents 2.0 Release. Revision 0.5 99/10/27 19:42:31 19:42:31 naderp (Paul Nader) Ignoring Unix SIGPIPE signal. Reporting sleep beforhand. Revision 0.4 99/04/23 16:05:47 16:05:47 naderp (Paul Nader) gcc port. Revision 0.3 99/04/23 09:34:04 09:34:04 naderp (Paul Nader) Windows Port. Revision 0.2 99/04/21 18:06:26 18:06:26 naderp (Paul Nader) *** empty log message *** Revision 0.1.1.1 98/11/27 16:59:40 16:59:40 naderp (Paul Nader) Added -s option to sleep after disconnecting. Revision 0.1 98/11/25 14:08:25 14:08:25 naderp (Paul Nader) Initial Revision */ #ifdef HAVE_CONFIG_H # include "config.h" #endif #ifdef HAVE_GETOPT # include extern char* optarg; extern int optind; #else # include "getopt.h" #endif #ifdef HAVE_IOSTREAM # include #else # include #endif #ifdef HAVE_STD_IOSTREAM using namespace std; #endif #ifdef HAVE_STDLIB_H # include #endif #ifdef HAVE_SIGNAL_H # include #endif #include "CosEventComm.hh" #include "CosEventChannelAdmin.hh" #include "naming.h" static void usage(int argc, char **argv); class Supplier_i : virtual public POA_CosEventComm::PushSupplier { public: Supplier_i () {}; void disconnect_push_supplier (); }; void Supplier_i::disconnect_push_supplier () { cout << "Push Supplier: disconnected." << endl; } int main (int argc, char** argv) { long l = 0; CORBA::ORB_ptr orb = CORBA::ORB_init(argc,argv); // Process Options int discnum =0; bool refnil =false; int sleepInterval =0; const char* channelName ="EventChannel"; int c; while ((c = getopt(argc,argv,"d:rs:n:h")) != EOF) { switch (c) { case 'd': discnum = atoi(optarg); break; case 'r': refnil = true; break; case 's': sleepInterval = atoi(optarg); break; case 'n': channelName = optarg; break; case 'h': default : usage(argc,argv); exit(-1); break; } } #if defined(HAVE_SIGNAL_H) && defined(SIGPIPE) // Ignore broken pipes signal(SIGPIPE, SIG_IGN); #endif Supplier_i* supplier = NULL; CosEventChannelAdmin::EventChannel_var channel; const char* action=""; // Use this variable to help report errors. try { CORBA::Object_var obj; // A Push Supplier can be implemented as a pure client or as a mixed // client-server process, depending on whether it requires and is // prepared to service disconnect requests from the channel. // If it is then create the servant object and activate the POA. if(!refnil) { supplier=new Supplier_i(); action="resolve initial reference 'RootPOA'"; obj=orb->resolve_initial_references("RootPOA"); PortableServer::POA_var rootPoa =PortableServer::POA::_narrow(obj); if(CORBA::is_nil(rootPoa)) throw CORBA::OBJECT_NOT_EXIST(); action="activate the RootPOA's POAManager"; PortableServer::POAManager_var pman =rootPoa->the_POAManager(); pman->activate(); } // // Obtain object reference to EventChannel // (from command-line argument or from the Naming Service). if(optindstring_to_object(argv[optind]); } else { action="resolve initial reference 'NameService'"; obj=orb->resolve_initial_references("NameService"); CosNaming::NamingContext_var rootContext= CosNaming::NamingContext::_narrow(obj); if(CORBA::is_nil(rootContext)) throw CORBA::OBJECT_NOT_EXIST(); action="find EventChannel in NameService"; cout << action << endl; obj=rootContext->resolve(str2name(channelName)); } action="narrow object reference to event channel"; channel=CosEventChannelAdmin::EventChannel::_narrow(obj); if(CORBA::is_nil(channel)) { cerr << "Failed to narrow Event Channel reference." << endl; exit(1); } } catch(CORBA::ORB::InvalidName& ex) { // resolve_initial_references cerr<<"Failed to "<for_suppliers (); if (CORBA::is_nil(supplier_admin)) { cerr << "Event Channel returned nil Supplier Admin!" << endl; exit(1); } break; } catch (CORBA::COMM_FAILURE& ex) { cerr << "Caught COMM_FAILURE Exception " << "obtaining Supplier Admin! Retrying..." << endl; continue; } } cout << "Obtained SupplierAdmin." << endl; while (1) { // // Get proxy consumer - retrying on Comms Failure. CosEventChannelAdmin::ProxyPushConsumer_var proxy_consumer; while (1) { try { proxy_consumer = supplier_admin->obtain_push_consumer (); if (CORBA::is_nil(proxy_consumer)) { cerr << "Supplier Admin returned nil proxy_consumer!"<< endl; exit(1); } break; } catch (CORBA::COMM_FAILURE& ex) { cerr << "Caught COMM_FAILURE Exception " << "obtaining Proxy Push Consumer! Retrying..." << endl; continue; } } cout << "Obtained ProxyPushConsumer." << endl; // // Connect Push Supplier - retrying on Comms Failure. CosEventComm::PushSupplier_var sptr =CosEventComm::PushSupplier::_nil(); if (! refnil) { sptr = supplier->_this(); } while (1) { try { proxy_consumer->connect_push_supplier(sptr.in()); break; } catch (CORBA::BAD_PARAM& ex) { cerr << "Caught BAD_PARAM Exception connecting Push Supplier!" << endl; exit (1); } catch (CosEventChannelAdmin::AlreadyConnected& ex) { cerr << "Proxy Push Consumer already connected!" << endl; break; } catch (CORBA::COMM_FAILURE& ex) { cerr << "Caught COMM_FAILURE Exception " << "connecting Push Supplier! Retrying..." << endl; continue; } } cout << "Connected Push Supplier." << endl; // Push data. for (int i=0; (discnum == 0) || (i < discnum); i++) { CORBA::Any any; any <<= (CORBA::ULong) l++; try { cout << "Push Supplier: push() called. " << flush; proxy_consumer->push(any); cout << "Data : " << l-1 << endl; } catch(CosEventComm::Disconnected&) { cout << "Failed. Caught Disconnected Exception!" << endl; } catch(CORBA::COMM_FAILURE&) { cout << "Failed. Caught COMM_FAILURE Exception!" << endl; } } // Disconnect - retrying on Comms Failure. while (1) { try { proxy_consumer->disconnect_push_consumer(); break; } catch (CORBA::COMM_FAILURE& ex) { cerr << "Caught COMM_FAILURE Exception " << "disconnecting Push Supplier! Retrying..." << endl; continue; } } cout << "ProxyPushConsumer disconnected." << endl; // Yawn. cout << "Sleeping " << sleepInterval << " seconds." << endl; omni_thread::sleep(sleepInterval); } // Not Reached return 0; } static void usage(int argc, char **argv) { cerr<< "\nCreate a PushSupplier to send events to a channel.\n" "syntax: "<<(argc?argv[0]:"pushsupp")<<" OPTIONS [CHANNEL_URI]\n" "\n" "CHANNEL_URI: The event channel may be specified as a URI.\n" " This may be an IOR, or a corbaloc::: or corbaname::: URI.\n" "\n" "OPTIONS: DEFAULT:\n" " -d NUM disconnect after sending NUM events [0 - never disconnect]\n" " -r connect using a nil reference\n" " -s SECS sleep SECS seconds after disconnecting [0]\n" " -n NAME channel name (if URI is not specified) [\"EventChannel\"]\n" " -h display this help text\n" << endl; } omniEvents-2_6_2/examples/python/0000755000076400001440000000000010240451206017257 5ustar alexusers00000000000000omniEvents-2_6_2/examples/python/Makefile0000644000076400001440000000327510227236244020736 0ustar alexusers00000000000000# Package : omniEvents # examples/python/Makefile Created : 2003/11/16 # Author : Alex Tingle # # Copyright (C) 2003 Alex Tingle. # # This file is part of the omniEvents application. # # omniEvents is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either # version 2.1 of the License, or (at your option) any later version. # # omniEvents is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public # License along with this library; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # include ../../config.mk # Set this line if your omniidl complains about... # "omniidl: Could not import back-end 'python'" #BACKEND = -pL:\win32\src\omniORBpy-2.2\lib\python OMNIEVENTS_BASE=../.. IDL_FILES = \ $(OMNIEVENTS_BASE)/idl/EventChannelAdmin.idl \ IDL_COS_FILES = \ CosLifeCycle.idl \ CosEventComm.idl \ CosEventChannelAdmin.idl \ CosTypedEventComm.idl \ CosTypedEventChannelAdmin.idl \ all: compile_idl_files compile_idl_files: $(IDL) -bpython $(BACKEND) -I$(IDL_COS_DIR)/COS $(patsubst %,$(IDL_COS_DIR)/COS/%,$(IDL_COS_FILES)) $(IDL) -bpython $(BACKEND) -I$(IDL_COS_DIR)/COS $(IDL_FILES) install: clean: $(RMDIR) EventChannelAdmin* Cos* *.pyc .PHONY: all compile_idl_files install clean omniEvents-2_6_2/examples/python/README0000755000076400001440000000046210227236244020154 0ustar alexusers00000000000000This directory contains Python versions of the example programs. Run them using the python interpreter, and then follow with command line options. The -h option always prints help-text. python eventc.py -h python pushsupp.py -h python pushcons.py -h python pullsupp.py -h python pullcons.py -h omniEvents-2_6_2/examples/python/eventc.py0000644000076400001440000001700210240451206021115 0ustar alexusers00000000000000# Package : omniEvents # eventc.py Created : 16/11/2003 # Author : Alex Tingle # # Copyright (C) 2003-2004 Alex Tingle. # # This file is part of the omniEvents application. # # omniEvents is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either # version 2.1 of the License, or (at your option) any later version. # # omniEvents is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public # License along with this library; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # """Client to the event channel factory. Requests creation of an event channel and registers it with the Naming service.""" import sys import getopt import CORBA import CosNaming import EventChannelAdmin import CosLifeCycle import CosEventChannelAdmin from naming import * def makeNVP(name,value): if(type(value)==type('')): return CosLifeCycle.NameValuePair(name,CORBA.Any(CORBA.TC_string,value)) elif(type(value)==type(0)): return CosLifeCycle.NameValuePair(name,CORBA.Any(CORBA.TC_ulong,value)) else: sys.stderr.write("Unexpected type.\n") sys.exit(1) #end makeNVP def main(): # # Start orb. orb=CORBA.ORB_init(sys.argv, CORBA.ORB_ID) # Process Options verbose=0 needNameService=0 channelName="EventChannel" factoryName="EventChannelFactory" criteria=[] try: opts,args=getopt.getopt(sys.argv[1:],"n:N:m:c:i:p:q:R:r:vh") except getopt.error: # print help information and exit: usage() sys.exit(-1) for option, optarg in opts: if option=='-n': channelName=optarg needNameService=1 elif option=='-N': factoryName=optarg elif option=='-m': ## OLD OPTION criteria.append(makeNVP("MaxEventsPerConsumer",int(optarg))) elif option=='-c': criteria.append(makeNVP("CyclePeriod_ns",int(optarg))) elif option=='-i': criteria.append(makeNVP("InsName",optarg)) # string param elif option=='-p': criteria.append(makeNVP("MaxNumProxies",int(optarg))) elif option=='-q': criteria.append(makeNVP("MaxQueueLength",int(optarg))) elif option=='-R': criteria.append(makeNVP("PullRetryPeriod_ms",int(optarg))) elif option=='-r': ## This option is deprecated in favour of -R: criteria.append(makeNVP("PullRetryPeriod",int(optarg))) elif option=='-v': verbose=1 elif option=='-h': usage() sys.exit(0) else: usage() sys.exit(-1) # Use one big try...catch block. # 'action' variable keeps track of what we're doing. action="start" try: # # Get Name Service root context. rootContext=None try: action="resolve initial reference 'NameService'" obj=orb.resolve_initial_references("NameService") rootContext=obj._narrow(CosNaming.NamingContext) if rootContext is None: raise CORBA.OBJECT_NOT_EXIST(0,CORBA.COMPLETED_NO) except CORBA.Exception, ex: if needNameService: raise ex else: sys.stderr.write("Warning - failed to %s\n"%action) # # Obtain reference to the Event Channel Factory implementation. # (from command-line argument or from the Naming Service). if len(args): action="convert URI from command line into object reference" obj=orb.string_to_object(args[0]) else: action="find Event Channel Factory in naming service" obj=rootContext.resolve(str2name(factoryName)) action="narrow object reference to event channel factory" factory=obj._narrow(EventChannelAdmin.EventChannelFactory) if factory is None: sys.stderr.write("Failed to narrow Event Channel Factory reference.\n") sys.exit(1) # Check that the factory is of the right type action="check factory supports EventChannel object interface" key=[CosNaming.NameComponent("EventChannel","object interface")] if not factory.supports(key): sys.stderr.write('Factory does not support Event Channel Interface!'+ \ ' [%s]\n'%factoryName) sys.exit(1) # # Create Event Channel Object. action="create EventChannel object" channelObj=factory.create_object(key,criteria) if channelObj is None: sys.stderr.write('Channel Factory returned nil reference!'+ \ ' [%s]\n'%channelName) sys.exit(1) # Print the new EventChannel's IOR to standard output. if verbose: print orb.object_to_string(channelObj) # Narrow object returned to an Event Channel channel=channelObj._narrow(CosEventChannelAdmin.EventChannel) if channel is None: sys.stderr.write('Failed to narrow Event Channel!'+ \ ' [%s]\n'%channelName) sys.exit(1) # # Register event channel with naming service if rootContext is not None: name=str2name(channelName) try: action="register (bind) EventChannel with the naming service" rootContext.bind(name,channel) except CosNaming.NamingContext.AlreadyBound, ex: action="register (rebind) EventChannel with the naming service" rootContext.rebind(name,channel) # # Clean up nicely. action="destroy orb" orb.destroy() # # If we get here, then everything has worked OK. sys.exit(0) except CosLifeCycle.NoFactory, ex: # create_object() sys.stderr.write("Failed to create Event Channel: NoFactory"+ " (interface not supported) \n") except CosLifeCycle.CannotMeetCriteria, ex: # create_object() sys.stderr.write("Failed to create Event Channel: CannotMeetCriteria \n") except CosLifeCycle.InvalidCriteria, ex: # create_object() sys.stderr.write("Failed to create Event Channel: InvalidCriteria \n") except CORBA.COMM_FAILURE, ex: sys.stderr.write("System exception, unable to %s: COMM_FAILURE\n"%action) except CORBA.SystemException, ex: sys.stderr.write("System exception, unable to %s.\n"%action) except CORBA.Exception, ex: sys.stderr.write("CORBA exception, unable to %s.\n"%action) sys.exit(1) #end main def usage(): sys.stderr.write(""" Create an EventChannel and register it in the naming service. syntax: eventc OPTIONS [FACTORY_URI] FACTORY_URI: The factory may be specified as a URI. This may be an IOR, or a corbaloc::: or corbaname::: URI. For example: corbaloc::localhost:11169/omniEvents OPTIONS: DEFAULT: -n channel name ["EventChannel"] -N factory name (if URI is not specified) ["EventChannelFactory"] -c override default CyclePeriod_ns of new channel (nanoseconds) -i set the InsName of new channel, to enable access via corbaloc -p override default MaxNumProxies of new channel -q override default MaxQueueLength of new channel -R override default PullRetryPeriod_ms for new channel (milliseconds) -v print the IOR of the new EventChannel to standard output. -h display this help text OLD OPTIONS: (only used by omniEvents v2.4 and earlier) -m override default MaxEventsPerConsumer for new channel """) ################################################################################ # If this file is executed directly, then we start here. if(__name__=="__main__"): main() omniEvents-2_6_2/examples/python/naming.py0000644000076400001440000000274410227236244021121 0ustar alexusers00000000000000# Package : omniEvents # naming.py Created : 2004/08/06 # Author : Alex Tingle # # Copyright (C) 2004 Alex Tingle. # # This file is part of the omniEvents application. # # omniEvents is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either # version 2.1 of the License, or (at your option) any later version. # # omniEvents is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public # License along with this library; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # import string import CORBA import CosNaming def str2name(str): """Converts stringified name to naming service name. Format for name: [[.]/]*[.] E.g. foo, foo.bar, foo.bar/baz/qux, foo/bar/baz.qux """ name=[] for cstr in string.split(str,'/'): piece=string.split(cstr,'.') component=CosNaming.NameComponent(piece[0],'') if len(piece)>1: component.kind=piece[-1] name.append(component) return name #end str2name() omniEvents-2_6_2/examples/python/pullcons.py0000644000076400001440000002254610227236244021511 0ustar alexusers00000000000000# Package : omniEvents # pullcons.py Created : 16/11/2003 # Author : Alex Tingle # # Copyright (C) 2003-2004 Alex Tingle. # # This file is part of the omniEvents application. # # omniEvents is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either # version 2.1 of the License, or (at your option) any later version. # # omniEvents is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public # License along with this library; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # """Pull Model consumer implementation.""" import os,sys import time import threading import signal import getopt import CORBA import CosNaming import CosEventComm__POA,CosEventComm import CosEventChannelAdmin from naming import * class Consumer_i(CosEventComm__POA.PullConsumer): def disconnect_pull_consumer(self): print "Pull Consumer: disconnected." #end class Consumer_i def main(): orb=CORBA.ORB_init(sys.argv,CORBA.ORB_ID) testloop = TestLoop() channelName = "EventChannel" # Process Options try: opts,args=getopt.getopt(sys.argv[1:],"d:trs:n:h") except getopt.error: # print help information and exit: usage() sys.exit(-1) for option, optarg in opts: if option=='-d': testloop.discnum = int(optarg) elif option=='-t': testloop.trymode = 1 elif option=='-r': testloop.refnil = 1 elif option=='-s': testloop.sleepInterval = int(optarg) elif option=='-n': channelName = optarg elif option=='-h': usage() sys.exit(0) else: usage() sys.exit(-1) # Ignore broken pipes if signal.__dict__.has_key('SIGPIPE'): signal.signal(signal.SIGPIPE, signal.SIG_IGN) action="start" # Use this variable to help report errors. try: if not testloop.refnil: action="resolve initial reference 'RootPOA'" poa=orb.resolve_initial_references("RootPOA") action="activate the RootPOA's POAManager" poaManager=poa._get_the_POAManager() poaManager.activate() # # Obtain reference to the Event Channel. # (from command-line argument or from the Naming Service). if len(args): action="convert URI from command line into object reference" obj=orb.string_to_object(args[0]) else: # # Get Name Service root context. action="resolve initial reference 'NameService'" obj=orb.resolve_initial_references("NameService") rootContext=obj._narrow(CosNaming.NamingContext) if rootContext is None: raise CORBA.OBJECT_NOT_EXIST(0,CORBA.COMPLETED_NO) # # Obtain reference to the Event Channel. action="find Event Channel in naming service" obj=rootContext.resolve(str2name(channelName)) action="narrow object reference to event channel" channel=obj._narrow(CosEventChannelAdmin.EventChannel) if channel is None: raise CORBA.OBJECT_NOT_EXIST(0,CORBA.COMPLETED_NO) except CORBA.ORB.InvalidName, ex: # resolve_initial_references() sys.stderr.write("Failed to %s. ORB::InvalidName\n"%action) sys.exit(1) except CosNaming.NamingContext.InvalidName, ex: # resolve() sys.stderr.write("Failed to %s. NamingContext::InvalidName\n"%action) sys.exit(1) except CosNaming.NamingContext.NotFound, ex: # resolve() sys.stderr.write("Failed to %s. NamingContext::NotFound\n"%action) sys.exit(1) except CosNaming.NamingContext.CannotProceed, ex: # resolve() sys.stderr.write("Failed to %s. NamingContext::CannotProceed\n"%action) sys.exit(1) except CORBA.TRANSIENT, ex: sys.stderr.write("Failed to %s. TRANSIENT\n"%action) sys.exit(1) except CORBA.OBJECT_NOT_EXIST, ex: sys.stderr.write("Failed to %s. OBJECT_NOT_EXIST\n"%action) sys.exit(1) except CORBA.COMM_FAILURE, ex: sys.stderr.write("Failed to %s. COMM_FAILURE\n"%action) sys.exit(1) except CORBA.SystemException, ex: sys.stderr.write("System exception, unable to %s.\n"%action) sys.exit(1) except CORBA.Exception, ex: sys.stderr.write("CORBA exception, unable to %s.\n"%action) sys.exit(1) # # Get Consumer Admin interface - retrying on Comms Failure. while(1): try: testloop.consumer_admin=channel.for_consumers() if testloop.consumer_admin is None: sys.stderr.write("Event Channel returned nil Consumer Admin!\n") sys.exit(1) break except CORBA.COMM_FAILURE, ex: sys.stderr.write("Caught COMM_FAILURE exception "+ \ "obtaining Consumer Admin! Retrying...\n") time.sleep(1) print "Obtained ConsumerAdmin." # Perform connection tests in a new thread. # Do this so that the main thread can respond to keyboard interrupts. testloop.start() # Make sure that the main thread gets some time every 200ms, so that it # can respond to keyboard interrupts. try: while(1): time.sleep(1) except: os._exit(0) # Kills all known threads, dead! #end main() class TestLoop(threading.Thread): def __init__(self): threading.Thread.__init__(self) self.discnum=0 self.trymode=0 self.refnil=0 self.sleepInterval=0 self.consumer_admin=None def run(self): if self.refnil: cptr=None else: consumer=Consumer_i() cptr=consumer._this() # SIDE EFFECT: Activates object in POA while (1): # # Get proxy supplier - retrying on Comms Failure. while (1): try: proxy_supplier = self.consumer_admin.obtain_pull_supplier () if proxy_supplier is None: sys.stderr.write("Consumer Admin returned nil Proxy Supplier!\n") sys.exit(1) break except CORBA.COMM_FAILURE, ex: sys.stderr.write("Caught COMM_FAILURE exception "+ \ "obtaining Proxy Pull Supplier! Retrying...\n") time.sleep(1) print "Obtained ProxyPullSupplier." # # Connect Pull Consumer - retrying on Comms Failure. while (1): try: proxy_supplier.connect_pull_consumer(cptr) break except CORBA.BAD_PARAM, ex: sys.stderr.write( \ 'Caught BAD_PARAM exception connecting Pull Consumer!') sys.exit(1) except CosEventChannelAdmin.AlreadyConnected, ex: sys.stderr.write('Proxy Pull Supplier already connected!') sys.exit(1) except CORBA.COMM_FAILURE, ex: sys.stderr.write("Caught COMM_FAILURE exception " +\ "connecting Pull Consumer! Retrying...") time.sleep(1) print "Connected Pull Consumer." # # Pull data. i=0 while((self.discnum == 0) or (i < self.discnum)): try: if self.trymode: data,has_event = proxy_supplier.try_pull() if has_event: l=data.value(CORBA.TC_ulong) print "Pull Consumer: try_pull() called. Data :",l else: print "Pull Consumer: try_pull() called. Data : None" time.sleep(1) else: sys.stdout.write("Pull Consumer: pull() called. ") data=proxy_supplier.pull() l=data.value(CORBA.TC_ulong) print "Data :",l except CORBA.TRANSIENT, ex: print "caught TRANSIENT." time.sleep(1) except CosEventComm.Disconnected, ex: print "\nFailed. Caught Disconnected exception!" sys.exit(1) except CORBA.COMM_FAILURE, ex: print "\nFailed. Caught COMM_FAILURE exception!" sys.exit(1) i=i+1 # Disconnect - retrying on Comms Failure. while (1): try: proxy_supplier.disconnect_pull_supplier() break except CORBA.COMM_FAILURE, ex: sys.stderr.write("Caught COMM_FAILURE exception " +\ "connecting Pull Consumer! Retrying...") time.sleep(1) print "Disconnected Pull Consumer." # Yawn print "Sleeping",self.sleepInterval,"seconds." time.sleep(self.sleepInterval) #end class TestLoop def usage(): print """ Create a PullConsumer to receive events from a channel. syntax: python pullcons.py OPTIONS [CHANNEL_URI] CHANNEL_URI: The event channel may be specified as a URI. This may be an IOR, or a corbaloc::: or corbaname::: URI. OPTIONS: DEFAULT: -t enable try_pull mode -r connect using a nil reference -d NUM disconnect after receiving NUM events [0 - never disconnect] -s SECS sleep SECS seconds after disconnecting [0] -n NAME channel name (if URI is not specified) ["EventChannel"] -h display this help text """ ################################################################################ # If this file is executed directly, then we start here. if(__name__=="__main__"): main() omniEvents-2_6_2/examples/python/pullsupp.py0000644000076400001440000002100410227236244021522 0ustar alexusers00000000000000# Package : omniEvents # pullsupp.py Created : 16/11/2003 # Author : Alex Tingle # # Copyright (C) 2003-2004 Alex Tingle. # # This file is part of the omniEvents application. # # omniEvents is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either # version 2.1 of the License, or (at your option) any later version. # # omniEvents is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public # License along with this library; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # """Pull Model supplier implementation.""" import os,sys import time import threading import signal import getopt import CORBA import CosNaming import CosEventComm__POA import CosEventChannelAdmin from naming import * class Supplier_i(CosEventComm__POA.PullSupplier): def __init__(self,disconnect=0): self.event=threading.Event() self.i=0 self.l=0 self.disconnect=disconnect def disconnect_pull_supplier(self): print "Pull Supplier: disconnected by channel." def pull(self): print "Pull Supplier: pull() called. Data :",self.l any = CORBA.Any(CORBA.TC_ulong,self.l) self.l=self.l+1 # Exercise Disconnect if ((self.disconnect > 0) and (self.i == self.disconnect)): self.i = 0 # Signal main thread to disconnect and re-connect. self.event.set() self.i=self.i+1 return any def try_pull(self): print "Pull Supplier: try_pull() called. Data :",self.l any = CORBA.Any(CORBA.TC_ulong,self.l) self.l=self.l+1 # Exercise Disconnect if ((self.disconnect > 0) and (self.i == self.disconnect)): self.i = 0 # Signal main thread to disconnect and re-connect. self.event.set() self.i=self.i+1 return any,1 #end class Supplier_i def main(): orb = CORBA.ORB_init(sys.argv, CORBA.ORB_ID) # Process Options discnum = 0 sleepInterval = 0 channelName = "EventChannel" # Process Options try: opts,args=getopt.getopt(sys.argv[1:],"d:s:n:h") except getopt.error: # print help information and exit: usage() sys.exit(-1) for option, optarg in opts: if option=='-d': discnum = int(optarg) elif option=='-s': sleepInterval = int(optarg) elif option=='-n': channelName = optarg elif option=='-h': usage() sys.exit(0) else: usage() sys.exit(-1) # Ignore broken pipes if signal.__dict__.has_key('SIGPIPE'): signal.signal(signal.SIGPIPE, signal.SIG_IGN) action="start" # Use this variable to help report errors. try: action="resolve initial reference 'RootPOA'" poa=orb.resolve_initial_references("RootPOA") action="activate the RootPOA's POAManager" poaManager=poa._get_the_POAManager() poaManager.activate() # # Obtain reference to the Event Channel. # (from command-line argument or from the Naming Service). if len(args): action="convert URI from command line into object reference" obj=orb.string_to_object(args[0]) else: # # Get Name Service root context. action="resolve initial reference 'NameService'" obj=orb.resolve_initial_references("NameService") rootContext=obj._narrow(CosNaming.NamingContext) if rootContext is None: raise CORBA.OBJECT_NOT_EXIST(0,CORBA.COMPLETED_NO) # # Obtain reference to the Event Channel. action="find Event Channel in naming service" obj=rootContext.resolve(str2name(channelName)) action="narrow object reference to event channel" channel=obj._narrow(CosEventChannelAdmin.EventChannel) if channel is None: raise CORBA.OBJECT_NOT_EXIST(0,CORBA.COMPLETED_NO) except CORBA.ORB.InvalidName, ex: # resolve_initial_references() sys.stderr.write("Failed to %s. ORB::InvalidName\n"%action) sys.exit(1) except CosNaming.NamingContext.InvalidName, ex: # resolve() sys.stderr.write("Failed to %s. NamingContext::InvalidName\n"%action) sys.exit(1) except CosNaming.NamingContext.NotFound, ex: # resolve() sys.stderr.write("Failed to %s. NamingContext::NotFound\n"%action) sys.exit(1) except CosNaming.NamingContext.CannotProceed, ex: # resolve() sys.stderr.write("Failed to %s. NamingContext::CannotProceed\n"%action) sys.exit(1) except CORBA.TRANSIENT, ex: sys.stderr.write("Failed to %s. TRANSIENT\n"%action) sys.exit(1) except CORBA.OBJECT_NOT_EXIST, ex: sys.stderr.write("Failed to %s. OBJECT_NOT_EXIST\n"%action) sys.exit(1) except CORBA.COMM_FAILURE, ex: sys.stderr.write("Failed to %s. COMM_FAILURE\n"%action) sys.exit(1) except CORBA.SystemException, ex: sys.stderr.write("System exception, unable to %s.\n"%action) sys.exit(1) except CORBA.Exception, ex: sys.stderr.write("CORBA exception, unable to %s.\n"%action) sys.exit(1) # # Get Supplier Admin interface - retrying on Comms Failure. while(1): try: supplier_admin=channel.for_suppliers() if supplier_admin is None: sys.stderr.write("Event Channel returned nil Supplier Admin!\n") sys.exit(1) break except CORBA.COMM_FAILURE, ex: sys.stderr.write("Caught COMM_FAILURE exception "+ \ "obtaining Supplier Admin! Retrying...\n") time.sleep(1) print "Obtained SupplierAdmin." while(1): # # Get proxy consumer - retrying on Comms Failure. while (1): try: proxy_consumer=supplier_admin.obtain_pull_consumer() if proxy_consumer is None: sys.stderr.write("Supplier Admin return nil proxy_consumer!\n") sys.exit(1) break except CORBA.COMM_FAILURE, ex: sys.stderr.write("Caught COMM_FAILURE exception "+ \ "obtaining Proxy Pull Consumer! Retrying...\n") time.sleep(1) print "Obtained ProxyPullConsumer." # # Make Pull Supplier supplier = Supplier_i(discnum) # # Connect Pull Supplier - retrying on Comms Failure. while (1): try: proxy_consumer.connect_pull_supplier(supplier._this()) break except CORBA.BAD_PARAM, ex: sys.stderr.write( \ 'Caught BAD_PARAM Exception connecting Pull Supplier!\n') sys.exit(1) except CosEventChannelAdmin.AlreadyConnected, ex: sys.stderr.write('Proxy Pull Consumer already connected!\n') sys.exit(1) except CORBA.COMM_FAILURE, ex: sys.stderr.write("Caught COMM_FAILURE exception " +\ "connecting Pull Supplier! Retrying...\n") time.sleep(1) print "Connected Pull Supplier." # # Wait for indication to disconnect before re-connecting. # Make sure that the main thread gets some time every 200ms, so that it # can respond to keyboard interrupts. while(not supplier.event.isSet()): try: supplier.event.wait(0.2) except: os._exit(0) # Kills all known threads, dead! supplier.event.clear() # # Disconnect - retrying on Comms Failure. while (1): try: proxy_consumer.disconnect_pull_consumer() break except CORBA.COMM_FAILURE, ex: sys.stderr.write("Caught COMM_FAILURE Exception " +\ "disconnecting Pull Supplier! Retrying...\n") time.sleep(1) print "Disconnected Pull Supplier." # Yawn print "Sleeping ",sleepInterval," seconds." time.sleep(sleepInterval) #end while #end main() def usage(): print """ Create a PullSupplier to send events to a channel. syntax: python pullsupp.py OPTIONS [CHANNEL_URI] CHANNEL_URI: The event channel may be specified as a URI. This may be an IOR, or a corbaloc::: or corbaname::: URI. OPTIONS: DEFAULT: -d NUM disconnect after sending NUM events [0 - never disconnect] -s SECS sleep SECS seconds after disconnecting [0] -n NAME channel name (if URI is not specified) ["EventChannel"] -h display this help text """ ################################################################################ # If this file is executed directly, then we start here. if(__name__=="__main__"): main() omniEvents-2_6_2/examples/python/pushcons.py0000644000076400001440000002033410227236245021506 0ustar alexusers00000000000000# Package : omniEvents # pushsupp.py Created : 16/11/2003 # Author : Alex Tingle # # Copyright (C) 2003-2004 Alex Tingle. # # This file is part of the omniEvents application. # # omniEvents is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either # version 2.1 of the License, or (at your option) any later version. # # omniEvents is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public # License along with this library; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # """Push Model consumer implementation.""" import os,sys import time import threading import signal import getopt import CORBA import CosNaming import CosEventComm__POA import CosEventChannelAdmin from naming import * class Consumer_i(CosEventComm__POA.PushConsumer): def __init__(self,disconnect=0): self.event=threading.Event() self.disconnect=disconnect self.i=0 def push(self,data): self.i=self.i+1 l=data.value(CORBA.TC_ulong) print "Push Consumer: push() called. Data :",l # Exercise Disconnect if (self.i == self.disconnect): self.i = 0 # NOTE : The proxy_supplier object is disposed at the server # during the disconnect_push_supplier call. Do NOT # use the proxy_supplier reference after disconnecting. # Signal main thread to disconnect and re-connect. self.event.set() def disconnect_push_consumer(self): print "Push Consumer: disconnected." #end class Consumer_i def main(): orb = CORBA.ORB_init(sys.argv, CORBA.ORB_ID) discnum = 0 sleepInterval = 0 channelName = "EventChannel" # Process Options try: opts,args=getopt.getopt(sys.argv[1:],"d:s:n:h") except getopt.error: # print help information and exit: usage() sys.exit(-1) for option, optarg in opts: if option=='-d': discnum = int(optarg) elif option=='-s': sleepInterval = int(optarg) elif option=='-n': channelName = optarg elif option=='-h': usage() sys.exit(0) else: usage() sys.exit(-1) # Ignore broken pipes if signal.__dict__.has_key('SIGPIPE'): signal.signal(signal.SIGPIPE, signal.SIG_IGN) action="start" # Use this variable to help report errors. try: action="resolve initial reference 'RootPOA'" poa=orb.resolve_initial_references("RootPOA") action="activate the RootPOA's POAManager" poaManager=poa._get_the_POAManager() poaManager.activate() # # Obtain reference to the Event Channel. # (from command-line argument or from the Naming Service). if len(args): action="convert URI from command line into object reference" obj=orb.string_to_object(args[0]) else: # # Get Name Service root context. action="resolve initial reference 'NameService'" obj=orb.resolve_initial_references("NameService") rootContext=obj._narrow(CosNaming.NamingContext) if rootContext is None: raise CORBA.OBJECT_NOT_EXIST(0,CORBA.COMPLETED_NO) # # Obtain reference to the Event Channel. action="find Event Channel in naming service" obj=rootContext.resolve(str2name(channelName)) action="narrow object reference to event channel" channel=obj._narrow(CosEventChannelAdmin.EventChannel) if channel is None: raise CORBA.OBJECT_NOT_EXIST(0,CORBA.COMPLETED_NO) except CORBA.ORB.InvalidName, ex: # resolve_initial_references() sys.stderr.write("Failed to %s. ORB::InvalidName\n"%action) sys.exit(1) except CosNaming.NamingContext.InvalidName, ex: # resolve() sys.stderr.write("Failed to %s. NamingContext::InvalidName\n"%action) sys.exit(1) except CosNaming.NamingContext.NotFound, ex: # resolve() sys.stderr.write("Failed to %s. NamingContext::NotFound\n"%action) sys.exit(1) except CosNaming.NamingContext.CannotProceed, ex: # resolve() sys.stderr.write("Failed to %s. NamingContext::CannotProceed\n"%action) sys.exit(1) except CORBA.TRANSIENT, ex: sys.stderr.write("Failed to %s. TRANSIENT\n"%action) sys.exit(1) except CORBA.OBJECT_NOT_EXIST, ex: sys.stderr.write("Failed to %s. OBJECT_NOT_EXIST\n"%action) sys.exit(1) except CORBA.COMM_FAILURE, ex: sys.stderr.write("Failed to %s. COMM_FAILURE\n"%action) sys.exit(1) except CORBA.SystemException, ex: sys.stderr.write("System exception, unable to %s.\n"%action) sys.exit(1) except CORBA.Exception, ex: sys.stderr.write("CORBA exception, unable to %s.\n"%action) sys.exit(1) # # Get Consumer Admin interface - retrying on Comms Failure. while(1): try: consumer_admin = channel.for_consumers () if consumer_admin is None: sys.stderr.write("Event Channel returned nil Consumer Admin!\n") sys.exit(1) break except CORBA.COMM_FAILURE, ex: sys.stderr.write("Caught COMM_FAILURE Exception. "+ \ "obtaining Consumer Admin! Retrying...\n") time.sleep(1) print "Obtained ConsumerAdmin." # # Make a Push Consumer. consumer = Consumer_i(discnum) while(1): # # Get proxy supplier - retrying on Comms Failure. while (1): try: proxy_supplier = consumer_admin.obtain_push_supplier () if proxy_supplier is None: sys.stderr.write("Consumer Admin return nil proxy_supplier!\n") sys.exit(1) break except CORBA.COMM_FAILURE, ex: sys.stderr.write("Caught COMM_FAILURE Exception. "+ \ "obtaining Proxy Push Supplier! Retrying...\n") time.sleep(1) print "Obtained ProxyPushSupplier." # # Connect Push Consumer - retrying on Comms Failure. while (1): try: proxy_supplier.connect_push_consumer(consumer._this()) break except CORBA.BAD_PARAM, ex: sys.stderr.write( \ 'Caught BAD_PARAM Exception connecting Push Consumer!\n') sys.exit(1) except CosEventChannelAdmin.AlreadyConnected, ex: sys.stderr.write('Proxy Push Supplier already connected!\n') sys.exit(1) except CORBA.COMM_FAILURE, ex: sys.stderr.write("Caught COMM_FAILURE Exception " +\ "connecting Push Consumer! Retrying...\n") time.sleep(1) print "Connected Push Consumer." # # Wait for indication to disconnect before re-connecting. # Make sure that the main thread gets some time every 200ms, so that it # can respond to keyboard interrupts. while(not consumer.event.isSet()): try: consumer.event.wait(0.2) except: os._exit(0) # Kills all known threads, dead! consumer.event.clear() # # Disconnect - retrying on Comms Failure. while (1): try: proxy_supplier.disconnect_push_supplier() break except CORBA.COMM_FAILURE, ex: sys.stderr.write("Caught COMM_FAILURE Exception " +\ "disconnecting Push Consumer! Retrying...\n") time.sleep(1) print "Disconnected Push Consumer." # Yawn print "Sleeping ",sleepInterval," seconds." time.sleep(sleepInterval) #end while #end main() def usage(): print """ Create a PushConsumer to receive events from a channel. syntax: python pushcons.py OPTIONS [CHANNEL_URI] CHANNEL_URI: The event channel may be specified as a URI. This may be an IOR, or a corbaloc::: or corbaname::: URI. OPTIONS: DEFAULT: -d NUM disconnect after receiving NUM events [0 - never disconnect] -s SECS sleep SECS seconds after disconnecting [0] -n NAME channel name (if URI is not specified) ["EventChannel"] -h display this help text """ ################################################################################ # If this file is executed directly, then we start here. if(__name__=="__main__"): main() omniEvents-2_6_2/examples/python/pushsupp.py0000644000076400001440000002177710227236245021547 0ustar alexusers00000000000000# Package : omniEvents # pushsupp.py Created : 16/11/2003 # Author : Alex Tingle # # Copyright (C) 2003-2004 Alex Tingle. # # This file is part of the omniEvents application. # # omniEvents is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either # version 2.1 of the License, or (at your option) any later version. # # omniEvents is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public # License along with this library; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # """Push Model supplier implementation.""" import os,sys import time import threading import signal import getopt import CORBA import CosNaming import CosEventComm,CosEventComm__POA import CosEventChannelAdmin from naming import * class Supplier_i(CosEventComm__POA.PushSupplier): def disconnect_push_supplier (self): print "Push Supplier: disconnected." def main(): orb = CORBA.ORB_init(sys.argv, CORBA.ORB_ID) testloop = TestLoop() channelName = "EventChannel" # Process Options try: opts,args=getopt.getopt(sys.argv[1:],"d:rs:n:h") except getopt.error: # print help information and exit: usage() sys.exit(-1) for option, optarg in opts: if option=='-d': testloop.discnum = int(optarg) elif option=='-r': testloop.refnil = 1 elif option=='-s': testloop.sleepInterval = int(optarg) elif option=='-n': channelName = optarg elif option=='-h': usage() sys.exit(0) else: usage() sys.exit(-1) # Ignore broken pipes if signal.__dict__.has_key('SIGPIPE'): signal.signal(signal.SIGPIPE, signal.SIG_IGN) action="start" # Use this variable to help report errors. try: # A Push Supplier can be implemented as a pure client or as a mixed # client-server process, depending on whether it requires and is # prepared to service disconnect requests from the channel. # If it is then create the servant object (later) and activate the POA. if not testloop.refnil: action="resolve initial reference 'RootPOA'" poa=orb.resolve_initial_references("RootPOA") action="activate the RootPOA's POAManager" poaManager=poa._get_the_POAManager() poaManager.activate() # # Obtain reference to the Event Channel. # (from command-line argument or from the Naming Service). if len(args): action="convert URI from command line into object reference" obj=orb.string_to_object(args[0]) else: # # Get Name Service root context. action="resolve initial reference 'NameService'" obj=orb.resolve_initial_references("NameService") rootContext=obj._narrow(CosNaming.NamingContext) if rootContext is None: raise CORBA.OBJECT_NOT_EXIST(0,CORBA.COMPLETED_NO) # # Obtain reference to the Event Channel. action="find Event Channel in naming service" obj=rootContext.resolve(str2name(channelName)) action="narrow object reference to event channel" channel=obj._narrow(CosEventChannelAdmin.EventChannel) if channel is None: raise CORBA.OBJECT_NOT_EXIST(0,CORBA.COMPLETED_NO) except CORBA.ORB.InvalidName, ex: # resolve_initial_references() sys.stderr.write("Failed to %s. ORB::InvalidName\n"%action) sys.exit(1) except CosNaming.NamingContext.InvalidName, ex: # resolve() sys.stderr.write("Failed to %s. NamingContext::InvalidName\n"%action) sys.exit(1) except CosNaming.NamingContext.NotFound, ex: # resolve() sys.stderr.write("Failed to %s. NamingContext::NotFound\n"%action) sys.exit(1) except CosNaming.NamingContext.CannotProceed, ex: # resolve() sys.stderr.write("Failed to %s. NamingContext::CannotProceed\n"%action) sys.exit(1) except CORBA.TRANSIENT, ex: sys.stderr.write("Failed to %s. TRANSIENT\n"%action) sys.exit(1) except CORBA.OBJECT_NOT_EXIST, ex: sys.stderr.write("Failed to %s. OBJECT_NOT_EXIST\n"%action) sys.exit(1) except CORBA.COMM_FAILURE, ex: sys.stderr.write("Failed to %s. COMM_FAILURE\n"%action) sys.exit(1) except CORBA.SystemException, ex: sys.stderr.write("System exception, unable to %s.\n"%action) sys.exit(1) except CORBA.Exception, ex: sys.stderr.write("CORBA exception, unable to %s.\n"%action) sys.exit(1) # # Get Supplier Admin interface - retrying on Comms Failure. while(1): try: testloop.supplier_admin=channel.for_suppliers() if testloop.supplier_admin is None: sys.stderr.write("Event Channel returned nil Supplier Admin!\n") sys.exit(1) break except CORBA.COMM_FAILURE, ex: sys.stderr.write("Caught COMM_FAILURE Exception. "+ \ "obtaining Supplier Admin! Retrying...\n") time.sleep(1) print "Obtained SupplierAdmin." # Perform connection tests in a new thread. # Do this so that the main thread can respond to keyboard interrupts. testloop.start() # Make sure that the main thread gets some time every 200ms, so that it # can respond to keyboard interrupts. try: while(1): time.sleep(1) except: os._exit(0) # Kills all known threads, dead! #end main() class TestLoop(threading.Thread): def __init__(self): threading.Thread.__init__(self) self.discnum=0 self.refnil=0 self.sleepInterval=0 self.supplier_admin=None def run(self): if self.refnil: sptr=None else: supplier=Supplier_i() sptr=supplier._this() # SIDE EFFECT: Activates object in POA l=0 while (1): # # Get proxy consumer - retrying on Comms Failure. while (1): try: proxy_consumer=self.supplier_admin.obtain_push_consumer() if proxy_consumer is None: sys.stderr.write("Supplier Admin returned nil proxy_consumer!\n") sys.exit(1) break except CORBA.COMM_FAILURE, ex: sys.stderr.write("Caught COMM_FAILURE Exception "+ \ "obtaining Proxy Push Consumer! Retrying...\n") time.sleep(1) print "Obtained ProxyPushConsumer." # # Connect Push Supplier - retrying on Comms Failure. while (1): try: proxy_consumer.connect_push_supplier(sptr) break except CORBA.BAD_PARAM, ex: sys.stderr.write( \ 'Caught BAD_PARAM Exception connecting Push Supplier!') sys.exit(1) except CosEventChannelAdmin.AlreadyConnected, ex: sys.stderr.write('Proxy Push Consumer already connected!') sys.exit(1) except CORBA.COMM_FAILURE, ex: sys.stderr.write("Caught COMM_FAILURE Exception " +\ "connecting Push Supplier! Retrying...") time.sleep(1) print "Connected Push Supplier." # Push data. i=0 while((self.discnum == 0) or (i < self.discnum)): try: sys.stdout.write("Push Supplier: push() called. ") proxy_consumer.push(CORBA.Any(CORBA.TC_ulong,l)) print "Data :",l except CosEventComm.Disconnected, ex: print "Failed. Caught Disconnected Exception!" except CORBA.COMM_FAILURE, ex: print "Failed. Caught COMM_FAILURE Exception!" i=i+1 l=l+1 #time.sleep(1) # Disconnect - retrying on Comms Failure. while(1): try: proxy_consumer.disconnect_push_consumer() break except CORBA.COMM_FAILURE, ex: sys.stderr.write("Caught COMM_FAILURE Exception " + \ "disconnecting Push Supplier! Retrying...\n") time.sleep(1) print "ProxyPushConsumer disconnected." # Yawn. print "Sleeping",self.sleepInterval," Seconds." time.sleep(self.sleepInterval) #end class TestLoop def usage(): print """ Create a PushSupplier to send events to a channel. syntax: python pushsupp.py OPTIONS [CHANNEL_URI] CHANNEL_URI: The event channel may be specified as a URI. This may be an IOR, or a corbaloc::: or corbaname::: URI. OPTIONS: DEFAULT: -d NUM disconnect after sending NUM events [0 - never disconnect] -r connect using a nil reference -s SECS sleep SECS seconds after disconnecting [0] -n NAME channel name (if URI is not specified) ["EventChannel"] -h display this help text """ ################################################################################ # If this file is executed directly, then we start here. if(__name__=="__main__"): main() omniEvents-2_6_2/examples/python/rmeventc.py0000644000076400001440000001117710240451206021463 0ustar alexusers00000000000000# Package : omniEvents # rmeventc.py Created : 20/04/2004 # Author : Alex Tingle # # Copyright (C) 2004 Alex Tingle. # # This file is part of the omniEvents application. # # omniEvents is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either # version 2.1 of the License, or (at your option) any later version. # # omniEvents is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public # License along with this library; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # """Client to the event channel factory. Destroys the named EventChannel.""" import sys import getopt import CORBA import CosNaming import EventChannelAdmin import CosLifeCycle import CosEventChannelAdmin from naming import * def main(): result=1 # # Start orb. orb=CORBA.ORB_init(sys.argv, CORBA.ORB_ID) # Process Options ecName=str2name("EventChannel") try: opts,args=getopt.getopt(sys.argv[1:],"n:h") except getopt.error: # print help information and exit: usage() sys.exit(-1) for option, optarg in opts: if option=='-n': ecName=str2name(optarg) elif option=='-h': usage() sys.exit(0) else: usage() sys.exit(-1) # Use one big try...catch block. # 'action' variable keeps track of what we're doing. action="start" try: # # Obtain reference to the Event Channel. # (from command-line argument or from the Naming Service). if len(args): action="convert URI from command line into object reference" obj=orb.string_to_object(args[0]) else: # # Get Name Service root context. action="resolve initial reference 'NameService'" obj=orb.resolve_initial_references("NameService") rootContext=obj._narrow(CosNaming.NamingContext) if rootContext is None: raise CORBA.OBJECT_NOT_EXIST(0,CORBA.COMPLETED_NO) # # Obtain reference to the Event Channel. action="find Event Channel in naming service" obj=rootContext.resolve(ecName) # # Unbind the Channel's reference in the naming service. action="unbind Event Channel from naming service" rootContext.unbind(ecName) action="narrow object reference to event channel" channel=obj._narrow(CosEventChannelAdmin.EventChannel) if channel is None: raise CORBA.OBJECT_NOT_EXIST(0,CORBA.COMPLETED_NO) # # Destroy the EventChannel. action="destroy Event Channel" channel.destroy() # # Clean up nicely. action="destroy orb" orb.destroy() # # If we get here, then everything has worked OK. result=0 except CORBA.ORB.InvalidName, ex: # resolve_initial_references() sys.stderr.write("Failed to %s. ORB::InvalidName\n"%action) except CosNaming.NamingContext.InvalidName, ex: # resolve() sys.stderr.write("Failed to %s. NamingContext::InvalidName\n"%action) except CosNaming.NamingContext.NotFound, ex: # resolve() sys.stderr.write("Failed to %s. NamingContext::NotFound\n"%action) except CosNaming.NamingContext.CannotProceed, ex: # resolve() sys.stderr.write("Failed to %s. NamingContext::CannotProceed\n"%action) except CORBA.TRANSIENT, ex: sys.stderr.write("Failed to %s. TRANSIENT\n"%action) except CORBA.OBJECT_NOT_EXIST, ex: sys.stderr.write("Failed to %s. OBJECT_NOT_EXIST\n"%action) except CORBA.COMM_FAILURE, ex: sys.stderr.write("Failed to %s. COMM_FAILURE\n"%action) except CORBA.SystemException, ex: sys.stderr.write("System exception, unable to %s.\n"%action) except CORBA.Exception, ex: sys.stderr.write("CORBA exception, unable to %s.\n"%action) sys.exit(result) #end main def usage(): print """ Destroy an EventChannel. syntax: python rmeventc.py OPTIONS [CHANNEL_URI] CHANNEL_URI: The event channel may be specified as a URI. This may be an IOR, or a corbaloc::: or corbaname::: URI. OPTIONS: DEFAULT: -n NAME channel name (if URI is not specified) ["EventChannel"] -h display this help text """ ################################################################################ # If this file is executed directly, then we start here. if(__name__=="__main__"): main() omniEvents-2_6_2/examples/channel.cc0000644000076400001440000001020710236702261017662 0ustar alexusers00000000000000// Package : omniEvents // channel.cc Created : 2005/04/23 // Author : Alex Tingle // // Copyright (C) 2005 Alex Tingle // // This file is part of the omniEvents application. // // omniEvents is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public // License as published by the Free Software Foundation; either // version 2.1 of the License, or (at your option) any later version. // // omniEvents is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU // Lesser General Public License for more details. // // You should have received a copy of the GNU Lesser General Public // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // // Description: // Demonstates how to make a standalone EventChannel in your own // application, using libomniEvents. // #ifdef HAVE_CONFIG_H # include "config.h" #endif #include #include #ifdef HAVE_IOSTREAM # include #else # include #endif #ifdef HAVE_STD_IOSTREAM using namespace std; #endif #include /** Signal handler. */ void myShutdown(int signum) { OmniEvents::Orb::inst().shutdown(signum); } int main(int argc, char **argv) { // // Start orb. CORBA::ORB_var orb = CORBA::ORB_init(argc,argv); const char* action=""; // Use this variable to help report errors. try { action="initialise OmniEvents::Orb"; // Your code MUST include these two lines. OmniEvents::Orb::inst()._orb=orb; OmniEvents::Orb::inst().resolveInitialReferences(); action="activate the RootPOA's POAManager"; // You MUST activate the RootPOA's POAManager. You can do this yourself // in the normal way, or you can use the reference that OmniEvents::Orb // has resolved for you. PortableServer::POAManager_var pman; pman=OmniEvents::Orb::inst()._RootPOA->the_POAManager(); pman->activate(); action="create EventChannel servant"; // The constructor just allocates memory. OmniEvents::EventChannel_i* channelSrv =new OmniEvents::EventChannel_i(); action="activate EventChannel servant"; // activate() creates & activates the EventChannel's POA and CORBA objects. channelSrv->activate("MyChannel"); // From this point, clients may invoke EventChannel operations. action="obtain an object reference to the EventChannel"; CosEventChannelAdmin::EventChannel_var channelRef =channelSrv->_this(); // The user interface of this example is simple: The EventChannel's IOR // is dumped to the standard output stream. action="stringify the EventChannel reference"; CORBA::String_var sior =orb->object_to_string(channelRef.in()); cout<destroy(); } catch(CORBA::SystemException& ex) { cerr<<"Failed to "< /** * Deprecated. This module exists for backwards compatibility with earlier * versions of omniEvents. */ module EventChannelAdmin { interface EventChannelFactory: CosLifeCycle::GenericFactory {}; }; #endif omniEvents-2_6_2/idl/FT.idl0000644000076400001440000000250510227236245015706 0ustar alexusers00000000000000// This IDL is takes from Chapter 25 of the CORBA specification (01-12-35.pdf). // It is cut down to contain only the definitions required by omniEvents. #ifndef _FT_PARTIAL_IDL_ #define _FT_PARTIAL_IDL_ #pragma prefix "omg.org" module FT { // Specifications for Fault Management // Specification of PullMonitorable Interface // which Application Objects Inherit interface PullMonitorable { boolean is_alive(); }; // Specification of FaultNotifier Interface //interface FaultNotifier { ... }; // Specifications for Logging and Recovery typedef sequence State; exception NoStateAvailable {}; exception InvalidState {}; exception NoUpdateAvailable {}; exception InvalidUpdate {}; // Specification of Checkpointable Interface // which Updateable and Application Objects Inherit interface Checkpointable { State get_state() raises(NoStateAvailable); void set_state(in State s) raises(InvalidState); }; // Specification of Updateable Interface // which Application Objects Inherit interface Updateable : Checkpointable { State get_update() raises(NoUpdateAvailable); void set_update(in State s) raises(InvalidUpdate); }; }; #endif // for #ifndef _FT_PARTIAL_IDL_ omniEvents-2_6_2/idl/Makefile0000644000076400001440000000636210240451207016340 0ustar alexusers00000000000000# Package : omniEvents # idl/Makefile Created : 2003/10/31 # Author : Alex Tingle # # Copyright (C) 2003 Alex Tingle. # # This file is part of the omniEvents application. # # omniEvents is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either # version 2.1 of the License, or (at your option) any later version. # # omniEvents is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public # License along with this library; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # IDL_FILES := \ FT.idl \ omniEvents.idl \ EventChannelAdmin.idl \ IDL_FILES_COS := \ CosLifeCycle.idl \ CosEventComm.idl \ CosEventChannelAdmin.idl \ CosTypedEventComm.idl \ CosTypedEventChannelAdmin.idl \ include ../config.mk HH_FILES := $(patsubst %.idl,%.hh,$(IDL_FILES)) HH_FILES_COS := $(patsubst %.idl,%.hh,$(IDL_FILES_COS)) CC_FILES := $(patsubst %.hh,%.cc,$(HH_FILES)) CC_FILES_COS := $(patsubst %.hh,%.cc,$(HH_FILES_COS)) SOURCE_FILES := \ $(patsubst %.hh,%.cc, $(HH_FILES) $(HH_FILES_COS)) \ $(patsubst %.hh,%DynSK.cc,$(HH_FILES) $(HH_FILES_COS)) OBJECT_FILES := $(patsubst %.cc,%.$(OBJEXT),$(SOURCE_FILES)) INSTALLED_IDL_FILES := \ $(patsubst %,$(INSTALL_IDL)/$(OMNIEVENTS)/%,$(IDL_FILES)) INSTALLED_HH_FILES := \ $(patsubst %,$(INSTALL_INCLUDE)/$(OMNIEVENTS)/%,\ $(HH_FILES) $(HH_FILES_COS) COS_sysdep.h) # The IDL compiler doesn't use config.h, so we have to give it some # defines on the command line. CXXFLAGS += -I. $(EXTRA_IDL_CXXFLAGS) all: compile_idl_files $(CLIENT_LIB) install: all install_dirs $(INSTALLED_HH_FILES) $(INSTALLED_IDL_FILES) $(INSTALL) $(CLIENT_LIB) $(INSTALL_LIB) # NOte: Install .hh files in $(INSTALL_INCLUDE) - for backward compatibility: $(INSTALLED_HH_FILES): $(INSTALL_INCLUDE)/$(OMNIEVENTS)/%: % install_dirs $(INSTALL) -m 644 $< $(INSTALL_INCLUDE)/$(OMNIEVENTS) $(INSTALL) -m 644 $< $(INSTALL_INCLUDE) # Deprecated header $(INSTALLED_IDL_FILES): $(INSTALL_IDL)/$(OMNIEVENTS)/%: % install_dirs $(INSTALL) -m 644 $< $(INSTALL_IDL)/$(OMNIEVENTS) install_dirs: $(INSTALL) -d $(INSTALL_LIB) $(INSTALL) -d $(INSTALL_INCLUDE)/$(OMNIEVENTS) $(INSTALL) -d $(INSTALL_IDL)/$(OMNIEVENTS) uninstall: $(RM) $(INSTALL_LIB)/$(CLIENT_LIB) $(RMDIR) $(INSTALL_INCLUDE)/$(OMNIEVENTS) $(RMDIR) $(INSTALL_IDL)/$(OMNIEVENTS) # Uninstall backward compatibility .hh files: $(RM) $(patsubst %,$(INSTALL_INCLUDE)/%,$(HH_FILES)) $(RM) $(patsubst %,$(INSTALL_INCLUDE)/%,$(HH_FILES_COS) COS_sysdep.h) $(CLIENT_LIB): $(OBJECT_FILES) $(call CxxBuildStatic,$@,$^) $(CC_FILES_COS): $(IDL) $(IDLFLAGS) $(patsubst %.cc,$(IDL_COS_DIR)/COS/%.idl,$@) compile_idl_files: $(CC_FILES_COS) $(CC_FILES) clean: $(RM) *.cc *.hh $(OBJECT_FILES) $(CLIENT_LIB) include deps.mk .PHONY: all install install_dirs uninstall compile_idl_files clean omniEvents-2_6_2/idl/deps.mk0000644000076400001440000001132210303671733016164 0ustar alexusers00000000000000CosEventChannelAdmin.o: \ CosEventChannelAdmin.cc \ COS_sysdep.h \ CosEventComm.hh \ CosEventChannelAdmin.hh \ ## Diagnostic information starts here # COS_sysdep.h from CosEventComm.hh # CosEventComm.hh from CosEventChannelAdmin.hh # CosEventChannelAdmin.hh from CosEventChannelAdmin.cc CosEventChannelAdminDynSK.o: \ CosEventChannelAdminDynSK.cc \ COS_sysdep.h \ CosEventComm.hh \ CosEventChannelAdmin.hh \ ## Diagnostic information starts here # COS_sysdep.h from CosEventComm.hh # CosEventComm.hh from CosEventChannelAdmin.hh # CosEventChannelAdmin.hh from CosEventChannelAdminDynSK.cc CosEventComm.o: \ CosEventComm.cc \ COS_sysdep.h \ CosEventComm.hh \ ## Diagnostic information starts here # COS_sysdep.h from CosEventComm.hh # CosEventComm.hh from CosEventComm.cc CosEventCommDynSK.o: \ CosEventCommDynSK.cc \ COS_sysdep.h \ CosEventComm.hh \ ## Diagnostic information starts here # COS_sysdep.h from CosEventComm.hh # CosEventComm.hh from CosEventCommDynSK.cc CosLifeCycle.o: \ CosLifeCycle.cc \ COS_sysdep.h \ CosLifeCycle.hh \ ## Diagnostic information starts here # COS_sysdep.h from CosLifeCycle.hh # CosLifeCycle.hh from CosLifeCycle.cc CosLifeCycleDynSK.o: \ CosLifeCycleDynSK.cc \ COS_sysdep.h \ CosLifeCycle.hh \ ## Diagnostic information starts here # COS_sysdep.h from CosLifeCycle.hh # CosLifeCycle.hh from CosLifeCycleDynSK.cc CosTypedEventChannelAdmin.o: \ CosTypedEventChannelAdmin.cc \ COS_sysdep.h \ CosEventComm.hh \ CosTypedEventComm.hh \ CosEventChannelAdmin.hh \ CosTypedEventChannelAdmin.hh \ ## Diagnostic information starts here # COS_sysdep.h from CosEventComm.hh # CosEventComm.hh from CosTypedEventChannelAdmin.hh # CosTypedEventComm.hh from CosTypedEventChannelAdmin.hh # CosEventChannelAdmin.hh from CosTypedEventChannelAdmin.hh # CosTypedEventChannelAdmin.hh from CosTypedEventChannelAdmin.cc CosTypedEventChannelAdminDynSK.o: \ CosTypedEventChannelAdminDynSK.cc \ COS_sysdep.h \ CosEventComm.hh \ CosTypedEventComm.hh \ CosEventChannelAdmin.hh \ CosTypedEventChannelAdmin.hh \ ## Diagnostic information starts here # COS_sysdep.h from CosEventComm.hh # CosEventComm.hh from CosTypedEventChannelAdmin.hh # CosTypedEventComm.hh from CosTypedEventChannelAdmin.hh # CosEventChannelAdmin.hh from CosTypedEventChannelAdmin.hh # CosTypedEventChannelAdmin.hh from CosTypedEventChannelAdminDynSK.cc CosTypedEventComm.o: \ CosTypedEventComm.cc \ CosTypedEventComm.hh \ CosEventComm.hh \ COS_sysdep.h \ ## Diagnostic information starts here # CosTypedEventComm.hh from CosTypedEventComm.cc # CosEventComm.hh from CosTypedEventComm.hh # COS_sysdep.h from CosEventComm.hh CosTypedEventCommDynSK.o: \ CosTypedEventCommDynSK.cc \ CosTypedEventComm.hh \ CosEventComm.hh \ COS_sysdep.h \ ## Diagnostic information starts here # CosTypedEventComm.hh from CosTypedEventCommDynSK.cc # CosEventComm.hh from CosTypedEventComm.hh # COS_sysdep.h from CosEventComm.hh EventChannelAdmin.o: \ EventChannelAdmin.cc \ EventChannelAdmin.hh \ COS_sysdep.h \ CosLifeCycle.hh \ ## Diagnostic information starts here # EventChannelAdmin.hh from EventChannelAdmin.cc # COS_sysdep.h from CosLifeCycle.hh # CosLifeCycle.hh from EventChannelAdmin.hh EventChannelAdminDynSK.o: \ EventChannelAdminDynSK.cc \ EventChannelAdmin.hh \ COS_sysdep.h \ CosLifeCycle.hh \ ## Diagnostic information starts here # EventChannelAdmin.hh from EventChannelAdminDynSK.cc # COS_sysdep.h from CosLifeCycle.hh # CosLifeCycle.hh from EventChannelAdmin.hh FT.o: \ FT.cc \ FT.hh \ ## Diagnostic information starts here # FT.hh from FT.cc FTDynSK.o: \ FTDynSK.cc \ FT.hh \ ## Diagnostic information starts here # FT.hh from FTDynSK.cc omniEvents.o: \ omniEvents.cc \ omniEvents.hh \ CosEventComm.hh \ CosLifeCycle.hh \ CosEventChannelAdmin.hh \ EventChannelAdmin.hh \ FT.hh \ COS_sysdep.h \ ## Diagnostic information starts here # omniEvents.hh from omniEvents.cc # CosEventComm.hh from omniEvents.hh # CosLifeCycle.hh from EventChannelAdmin.hh # CosEventChannelAdmin.hh from omniEvents.hh # EventChannelAdmin.hh from omniEvents.hh # FT.hh from omniEvents.hh # COS_sysdep.h from CosEventComm.hh omniEventsDynSK.o: \ omniEventsDynSK.cc \ omniEvents.hh \ CosEventComm.hh \ CosLifeCycle.hh \ CosEventChannelAdmin.hh \ EventChannelAdmin.hh \ FT.hh \ COS_sysdep.h \ ## Diagnostic information starts here # omniEvents.hh from omniEventsDynSK.cc # CosEventComm.hh from omniEvents.hh # CosLifeCycle.hh from EventChannelAdmin.hh # CosEventChannelAdmin.hh from omniEvents.hh # EventChannelAdmin.hh from omniEvents.hh # FT.hh from omniEvents.hh # COS_sysdep.h from CosEventComm.hh omniEvents-2_6_2/idl/omniEvents.idl0000644000076400001440000001167010240451207017517 0ustar alexusers00000000000000// Package : omniEvents // idl/omniEvents.idl Created : 2004-05-23 // Author : Alex Tingle // // Copyright (C) 2004 Alex Tingle. // // This file is part of the omniEvents application. // // omniEvents is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public // License as published by the Free Software Foundation; either // version 2.1 of the License, or (at your option) any later version. // // omniEvents is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU // Lesser General Public License for more details. // // You should have received a copy of the GNU Lesser General Public // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // #ifndef _OMNIEVENTS_IDL_ #define _OMNIEVENTS_IDL_ #include // ============================================================================= #pragma prefix "openorb.org" /** * DO NOT USE THIS MODULE UNLESS YOU ARE USING OPENORB. * The module `openorb.org/event' is provided for compatibility with * OpenOrb. */ module event { exception NameAlreadyUsed {}; exception EventChannelNotFound {}; interface EventChannelFactory { CosEventChannelAdmin::EventChannel create_channel( in string channel_name ) raises( NameAlreadyUsed ); CosEventChannelAdmin::EventChannel join_channel( in string channel_name ) raises( EventChannelNotFound ); }; }; // ============================================================================= #include #include "FT.idl" #include "EventChannelAdmin.idl" #pragma prefix "omni" module omniEvents { /** * The omniEvents event channel. Inherits the method is_alive() from * FT::PullMonitorable. */ interface EventChannel: CosEventChannelAdmin::EventChannel, FT::PullMonitorable { // boolean is_alive(); <== inherited from FT::PullMonitorable }; /** * The omniEvents 'server'. * * Inherits the following methods from CosLifeCycle::GenericFactory: * - boolean supports(in Key) * - Object create_object(in Key, in Criteria) * * Key should always be {id:"EventChannel", kind:"object interface"}. * * Valid criteria are: * * @param PullRetryPeriod_ms [Type: unsigned long. Unit: millisecond. * Default: 1000 (1 second)]\n * The delay between calls to pull() made by omniEvents out * to client's PullSupplier objects. * @param MaxQueueLength [Type: unsigned long. Default: 1023]\n * The number of events to store ready to sends out to Consumer * objects. When the queue overflows, the oldest events are * discarded first. * @param MaxNumProxies [Type: unsigned long. Default: 1024]\n * Limits the number of ProxyPullSuppliers that an EventChannel * can support. When the limit is exceeded, the least active proxy * is disconnected. * @param CyclePeriod_ns [Type: unsigned long. Unit: nanosecond. * Default: 100000000 (0.1 second)]\n * Sets the cycle period of the channel. This is the time that the * channel waits before transferring messages from the incoming * queue to the outgoing queue. While messages are being * transferred, incoming calls are queued. The default is 0.1 * seconds. Applications that require very rapid message delivery * should reduce the period. * @param InsName [Type: string. Default: None]\n * This parameter sets the name by which the EventChannel is * known in omniEvents INSPOA. You can then refer to the channel * with a corbaloc string. * @param FilterId [Type: string. Default: None]\n * Creates a filtered event channel. The value should be a * RepositoryId. The EventChannel silently discards all incoming * events whose type does not match the RepositoryId. * * Inherits the following method from FT::PullMonitorable: * - boolean is_alive() */ interface EventChannelFactory: CosLifeCycle::GenericFactory, FT::PullMonitorable, EventChannelAdmin::EventChannelFactory, event::EventChannelFactory { // == CosLifeCycle::GenericFactory == // // boolean supports( in Key k ); // Object create_object( in Key k, in Criteria the_criteria )...; // == FT::PullMonitorable == // // boolean is_alive(); // == event::EventChannelFactory == // // EventChannel create_channel( in string channel_name )...; *DO NOT USE* // EventChannel join_channel( in string channel_name )...; *DO NOT USE* }; }; #endif // _OmniEvents_idl_ omniEvents-2_6_2/contrib/0000755000076400001440000000000010263503271015565 5ustar alexusers00000000000000omniEvents-2_6_2/contrib/Makefile0000644000076400001440000000244710240451203017224 0ustar alexusers00000000000000# Package : omniEvents # src/Makefile Created : 2004/11/15 # Author : Alex Tingle # # Copyright (C) 2004 Alex Tingle. # # This file is part of the omniEvents application. # # omniEvents is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either # version 2.1 of the License, or (at your option) any later version. # # omniEvents is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public # License along with this library; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # include ../config.mk INSTALL_PKGCONFIG := $(INSTALL_LIB)/pkgconfig OMNIEVENTS_PC := $(OMNIEVENTS).pc all: install: $(INSTALL) -d $(INSTALL_PKGCONFIG) $(INSTALL) $(OMNIEVENTS_PC) $(INSTALL_PKGCONFIG) uninstall: $(RM) $(INSTALL_PKGCONFIG)/$(OMNIEVENTS_PC) clean: .PHONY: all install uninstall clean omniEvents-2_6_2/contrib/omniEvents.pc.in0000644000076400001440000000037610240451203020643 0ustar alexusers00000000000000prefix="@prefix@" exec_prefix="@exec_prefix@" libdir="@libdir@" includedir="@includedir@" Name: omniEvents Description: CORBA Event Service for omniORB Version: @PACKAGE_VERSION@ Requires: omniORB4 Libs: -L${libdir} -lomniEvents Cflags: -I${includedir} omniEvents-2_6_2/contrib/omniEvents.spec0000644000076400001440000001373710240451203020573 0ustar alexusers00000000000000%define _name omniEvents %define srcversion 2_6_2 %define lib_name %{?mklibname:%mklibname %{_name} 2}%{!?mklibname:lib%{_name}2} Summary: CORBA Event Service for omniORB Name: %{_name} Version: 2.6.2 Release: 1 License: LGPL Group: System/Libraries Source0: %{_name}-%{srcversion}-src.tar.gz URL: http://www.omnievents.org/ BuildRequires: libomniorb-devel glibc-devel Buildroot: %{_tmppath}/%{name}-%{version}-root %description %{name} enables CORBA applications to communicate through asynchronous broadcast channels rather than direct method calls. It is a small, efficient implementation of the Object Management Group's Event Service specification designed to work with omniORB. %package -n %{lib_name} Summary: CORBA Event Service for omniORB Group: System/Libraries Prereq: /sbin/ldconfig Provides: libomnievents = %{version}-%{release} %{name} = %{version}-%{release} Obsoletes: omniEvents %description -n %{lib_name} %{name} enables CORBA applications to communicate through asynchronous broadcast channels rather than direct method calls. It is a small, efficient implementation of the Object Management Group's Event Service specification designed to work with omniORB. %package server Summary: CORBA Event Service daemon Group: Development/C++ Obsoletes: omniEvents-server Requires: %{lib_name} = %{version}-%{release} %description server The CORBA Event Service daemon as a standalone executable. %package bootscripts Summary: Utility programs Group: Development/C++ %if "%{_vendor}" == "suse" Prereq: /sbin/insserv %else Prereq: /sbin/service /sbin/chkconfig %endif Obsoletes: omniEvents-bootscripts Requires: %{name}-server = %{version}-%{release} %{name}-utils = %{version}-%{release} %description bootscripts Automatic starting of the %{name} CORBA Event Service. %package utils Summary: Utility programs Group: Development/C++ Obsoletes: omniEvents-utils Requires: %{lib_name} = %{version}-%{release} %description utils %{name} utility programs which may be useful at runtime. %package -n %{lib_name}-devel Summary: Header files and libraries needed for %{name} development Group: Development/C++ Requires: %{lib_name} = %{version}-%{release} Obsoletes: omniEvents-devel Provides: libomnievents-devel = %{version}-%{release} %{name}-devel = %{version}-%{release} Conflicts: libomnievents-devel > %{version}-%{release} libomnievents-devel < %{version}-%{release} %description -n %{lib_name}-devel The header files and libraries needed for developing programs using %{name}. %package doc Summary: Documentation and examples for %{name} Group: Development/C++ Obsoletes: omniEvents-doc #Requires: %{lib_name} = %{version}-%{release} %description doc Developer documentation and examples. %prep %setup -n %{_name}-%{srcversion} %{?configure:%configure}%{!?configure:CPPFLAGS="$RPM_OPT_FLAGS" ./configure --prefix=%{_prefix} --libdir=%{_libdir}} --enable-unloadable-stubs %build %{?make:%make}%{!?make:make IMPORT_CPPFLAGS+="$RPM_OPT_FLAGS"} all %{?make:%make}%{!?make:make IMPORT_CPPFLAGS+="$RPM_OPT_FLAGS"} -C src oelite %install [ -z %{buildroot} ] || rm -rf %{buildroot} install -d %{buildroot}%{_sbindir} install -d %{buildroot}%{_initrddir} install -d %{buildroot}%{_sysconfdir}/default install -d %{buildroot}%{_mandir}/{man1,man8} install -d -m 700 %{buildroot}%{_localstatedir}/omniEvents %{?makeinstall_std:%makeinstall_std}%{!?makeinstall_std:make DESTDIR=%{buildroot} install} install -m 755 src/oelite %{buildroot}%{_sbindir}/omniEvents install -m 775 etc/init.d/omniorb-eventservice %{buildroot}%{_initrddir}/omniEvents install -m 644 etc/default/omniorb-eventservice %{buildroot}%{_sysconfdir}/default install -m 644 doc/man/*.1 %{buildroot}%{_mandir}/man1 install -m 644 doc/man/omniEvents.8 %{buildroot}%{_mandir}/man8 # deprecated, but still installed by make install in 2.6.1 rm -f %{buildroot}%{_includedir}/*.{h,hh} %if "%{_vendor}" == "suse" # Most SUSE service scripts have a corresponding link into /usr/sbin ln -sf %{_initrddir}/omniEvents %{buildroot}%{_sbindir}/rcomniEvents %endif %clean [ -z %{buildroot} ] || rm -rf %{buildroot} %pre -n %{lib_name} %post -n %{lib_name} /sbin/ldconfig %pre bootscripts # A previous version is already installed? if [ $1 -ge 2 ]; then %if "%{_vendor}" == "suse" %{_sbindir}/rcomniEvents stop >/dev/null 2>&1 %else /sbin/service omniEvents stop >/dev/null 2>&1 %endif fi %post bootscripts %if "%{_vendor}" == "suse" /sbin/insserv omniEvents %{_sbindir}/rcomniEvents restart >/dev/null 2>&1 %else /sbin/chkconfig --add omniEvents /sbin/service omniEvents restart >/dev/null 2>&1 %endif %preun bootscripts # Are we removing the package completely? if [ $1 -eq 0 ]; then %if "%{_vendor}" == "suse" %{_sbindir}/rcomniEvents stop >/dev/null 2>&1 /sbin/insserv -r omniEvents %else /sbin/service omniEvents stop >/dev/null 2>&1 /sbin/chkconfig --del omniEvents %endif fi %postun -n %{lib_name} /sbin/ldconfig # main package includes libraries and copyright info %files -n %{lib_name} %defattr (-,root,root) %doc LICENSE %config(noreplace) %attr(644,root,root) %{_sysconfdir}/default/* %{_libdir}/*.so.* %{_datadir}/idl/omniEvents %files server %defattr (-,root,root) %dir %attr(700,omni,omni) %{_localstatedir}/omniEvents %attr(755,root,root) %{_sbindir}/omniEvents %attr(644,root,man) %{_mandir}/man8/* %files bootscripts %defattr (-,root,root) %config(noreplace) %attr(775,root,root) %{_initrddir}/* %if "%{_vendor}" == "suse" %{_sbindir}/rcomniEvents %endif %files utils %defattr (-,root,root) %attr(755,root,root) %{_bindir}/* %attr(644,root,man) %{_mandir}/man1/* %files -n %{lib_name}-devel %defattr(-,root,root) %doc CHANGES* README %{_libdir}/*.a %{_libdir}/*.so %{_libdir}/pkgconfig/* %{_includedir}/omniEvents %files doc %defattr(-,root,root) %doc doc/omnievents* doc/*.html doc/doxygen %changelog * Wed Apr 27 2005 Dirk Siebnich 2.6.2-1 - better support for x86_64 * Mon Nov 15 2004 Dirk Siebnich 2.6.1-1 - packaged for RPM omniEvents-2_6_2/src/0000755000076400001440000000000010303671742014720 5ustar alexusers00000000000000omniEvents-2_6_2/src/config.h0000755000076400001440000001461010303671742016343 0ustar alexusers00000000000000/* include/config.h.in. Generated from configure.ac by autoheader. */ /* Define to one of `_getb67', `GETB67', `getb67' for Cray-2 and Cray-YMP systems. This function is required for `alloca.c' support on those systems. */ #undef CRAY_STACKSEG_END /* Define to 1 if using `alloca.c'. */ /* #undef C_ALLOCA */ /* define if fstream::open() accepts third parameter. */ #undef FSTREAM_OPEN_PROT /* Define to 1 if you have `alloca', as a function or macro. */ /* #undef HAVE_ALLOCA */ /* Define to 1 if you have and it should be used (not on Ultrix). */ #undef HAVE_ALLOCA_H /* define if bool is a built-in type */ /* #undef HAVE_BOOL */ /* Define to 1 if you have the header file. */ #define HAVE_CMATH /* Define to 1 if you have the header file. */ #define HAVE_FCNTL_H /* define if we have fstream::attach(). */ /* #undef HAVE_FSTREAM_ATTACH */ /* define if we have fstream::open(). ?? */ #define HAVE_FSTREAM_OPEN /* Define to 1 if you have the `gethostname' function. */ #undef HAVE_GETHOSTNAME /* Define to 1 if you have the `getopt' function. */ #undef HAVE_GETOPT /* Define to 1 if you have the header file. */ #undef HAVE_INTTYPES_H /* Define to 1 if you have the header file. */ #define HAVE_IOMANIP /* Define to 1 if you have the header file. */ #define HAVE_IOMANIP_H /* Define to 1 if you have the header file. */ #define HAVE_IOSTREAM /* Define to 1 if you have the header file. */ #define HAVE_IOSTREAM_H /* Define to 1 if you have the header file. */ #undef HAVE_LIBC_H /* Define to 1 if your system has a working `malloc' function. ?? */ #define HAVE_MALLOC /* Define to 1 if you have the header file. */ #define HAVE_MALLOC_H /* Define to 1 if you have the header file. */ #define HAVE_MEMORY_H /* define if the compiler implements namespaces ?? */ #define HAVE_NAMESPACES /* "define if omniORB3 is available." */ #undef HAVE_OMNIORB3 /* "define if omniORB4 is available." */ #define HAVE_OMNIORB4 /* Define to 1 if you have the header file. */ #define HAVE_PROCESS_H /* Define if you have POSIX threads libraries and header files. */ #undef HAVE_PTHREAD /* Define to 1 if you have the header file. */ #define HAVE_SIGNAL_H 1 /* Define to 1 if `stat' has the bug that it succeeds when given the zero-length file name argument. */ /* #undef HAVE_STAT_EMPTY_STRING_BUG */ /* Define to 1 if you have the header file. */ #undef HAVE_STDINT_H /* Define to 1 if you have the header file. */ #define HAVE_STDLIB_H 1 /* define if C++ iostream is in namespace std. ?? */ #define HAVE_STD_IOSTREAM 1 /* define if C++ Standard Template Library is in namespace std ?? */ #define HAVE_STD_STL /* define if the compiler supports Standard Template Library ?? */ #define HAVE_STL /* Define to 1 if you have the `strchr' function. */ /* #undef HAVE_STRCHR */ /* Define to 1 if you have the `strdup' function. ?? */ /* #undef HAVE_STRDUP */ /* Define to 1 if you have the header file. */ #undef HAVE_STRINGS_H /* Define to 1 if you have the header file. */ #define HAVE_STRING_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_PARAM_H /* Define to 1 if you have the header file. */ #define HAVE_SYS_STAT_H /* Define to 1 if you have the header file. */ #define HAVE_SYS_TYPES_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_UTSNAME_H /* Define to 1 if you have the `tzset' function. */ /* #undef HAVE_TZSET */ /* Define to 1 if you have the `uname' function. */ /* #undef HAVE_UNAME */ /* Define to 1 if you have the header file. */ #undef HAVE_UNISTD_H /* Define to 1 if `lstat' dereferences a symlink specified with a trailing slash. */ #undef LSTAT_FOLLOWS_SLASHED_SYMLINK /* Define to the address where bug reports for this package should be sent. */ #define PACKAGE_BUGREPORT "alex.omnievents@firetree.net" /* Define to the full name of this package. */ #define PACKAGE_NAME "omniEvents" /* Define to the full name and version of this package. */ #define PACKAGE_STRING "omniEvents 2.6.2" /* Define to the one symbol short name of this package. */ #define PACKAGE_TARNAME "omnievents" /* Define to the version of this package. */ #define PACKAGE_VERSION "2.6.2" /* Define to the necessary symbol if this constant uses a non-standard name on your system. */ /* #undef PTHREAD_CREATE_JOINABLE */ /* Define as the return type of signal handlers (`int' or `void'). */ /* #undef RETSIGTYPE */ /* If using the C implementation of alloca, define if you know the direction of stack growth for your system; otherwise it will be automatically deduced at run-time. STACK_DIRECTION > 0 => grows toward higher addresses STACK_DIRECTION < 0 => grows toward lower addresses STACK_DIRECTION = 0 => direction of growth unknown */ /* #undef STACK_DIRECTION */ /* Define to 1 if you have the ANSI C header files. ?? */ #define STDC_HEADERS /* for omniORB ?? */ #define __OSVERSION__ 5 /* for OmniORB on AIX */ #undef __aix__ /* for OmniORB on AlphaProcessor */ #undef __alpha__ /* for OmniORB on ArmProcessor */ #undef __arm__ /* for OmniORB on Darwin */ #undef __darwin__ /* for OmniORB on FreeBSD */ #undef __freebsd__ /* for OmniORB on HppaProcessor */ #undef __hppa__ /* for OmniORB on HPUX */ #undef __hpux__ /* for OmniORB on ia64Processor */ #undef __ia64__ /* for OmniORB on IRIX */ #undef __irix__ /* for OmniORB on Linux, Cygwin */ #undef __linux__ /* for OmniORB on m68kProcessor */ #undef __m68k__ /* for OmniORB on IndigoProcessor */ #undef __mips__ /* for OmniORB on NextStep */ #undef __nextstep__ /* for OmniORB on OSF1 (Tru64) */ #undef __osf1__ /* for OmniORB on OSR5 */ #undef __osr5__ /* for OmniORB on PowerPCProcessor */ #undef __powerpc__ /* for OmniORB on s390Processor */ #undef __s390__ /* for OmniORB on SparcProcessor */ #undef __sparc__ /* for OmniORB on SunOS (Solaris) */ #undef __sunos__ /* for OmniORB on x86Processor */ #define __x86__ 1 /* Define to empty if `const' does not conform to ANSI C. */ /* #undef const */ /* Define as `__inline' if that's what the C compiler calls it, or to nothing if it is not supported. */ /* #undef inline */ /* Define to `unsigned' if does not define. */ #undef size_t /* Clean away the PACKAGE_* macros unless they are needed. */ #include "scour.h" omniEvents-2_6_2/src/Callback.h0000644000076400001440000000353310240451207016561 0ustar alexusers00000000000000// Package : omniEvents // Callback.h Created : 2004/07/10 // Author : Alex Tingle // // Copyright (C) 2004-2005 Alex Tingle. // // This file is part of the omniEvents application. // // omniEvents is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public // License as published by the Free Software Foundation; either // version 2.1 of the License, or (at your option) any later version. // // omniEvents is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU // Lesser General Public License for more details. // // You should have received a copy of the GNU Lesser General Public // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // #ifndef OMNIEVENTS__CALLBACK_H #define OMNIEVENTS__CALLBACK_H #ifdef HAVE_CONFIG_H # include "config.h" #endif #ifdef HAVE_OMNIORB3 # include #endif #ifdef HAVE_OMNIORB4 # include #endif namespace OmniEvents { /** Interface for classes that wish to receive callbacks from deferred * requests. Implementations must override the callback() method. */ class Callback: public virtual PortableServer::ServantBase, public PortableServer::RefCountServantBase { public: /** Invoked when the CORBA::Request has returned. * This method is never invoked when req has returned an exception. */ virtual void callback(CORBA::Request_ptr req) =0; Callback():PortableServer::RefCountServantBase() {} virtual ~Callback() {} }; }; // end namespace OmniEvents #endif // OMNIEVENTS__CALLBACK_H omniEvents-2_6_2/src/ConsumerAdmin.cc0000644000076400001440000000767310241104122017770 0ustar alexusers00000000000000// Package : omniEvents // ConsumerAdmin.cc Created : 2003/12/04 // Author : Alex Tingle // // Copyright (C) 2003-2005 Alex Tingle. // // This file is part of the omniEvents application. // // omniEvents is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public // License as published by the Free Software Foundation; either // version 2.1 of the License, or (at your option) any later version. // // omniEvents is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU // Lesser General Public License for more details. // // You should have received a copy of the GNU Lesser General Public // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // #include "ConsumerAdmin.h" #include "EventChannel.h" #include "ProxyPushSupplier.h" #include "ProxyPullSupplier.h" #include "Orb.h" #include "PersistNode.h" #include "Filter.h" namespace OmniEvents { CosEventChannelAdmin::ProxyPushSupplier_ptr ConsumerAdmin_i::obtain_push_supplier() { if(!_pushSupplier) _pushSupplier=new ProxyPushSupplierManager(_poa,_queue); return _pushSupplier->createObject(); } CosEventChannelAdmin::ProxyPullSupplier_ptr ConsumerAdmin_i::obtain_pull_supplier() { if(!_pullSupplier) _pullSupplier=new ProxyPullSupplierManager(_channel,_poa,_queue); return _pullSupplier->createObject(); } ConsumerAdmin_i::ConsumerAdmin_i( const EventChannel_i& channel, PortableServer::POA_ptr poa ) : Servant(poa), _channel(channel), _queue(channel.maxQueueLength()), _pushSupplier(NULL), _pullSupplier(NULL) { if(_channel.properties().hasAttr("FilterId")) { string rid =_channel.properties().attrString("FilterId"); _queue.setFilter(new FilterByRepositoryId(rid.c_str())); } else if(_channel.properties().hasAttr("FilterKind")) { CORBA::TCKind kind = CORBA::TCKind(_channel.properties().attrLong("FilterKind")); _queue.setFilter(new FilterByTCKind(kind)); } activateObjectWithId("ConsumerAdmin"); } ConsumerAdmin_i::~ConsumerAdmin_i() { DB(20,"~ConsumerAdmin_i()") if(_pushSupplier) { _pushSupplier->_remove_ref(); // terminates thread. _pushSupplier=NULL; } if(_pullSupplier) { _pullSupplier->_remove_ref(); _pullSupplier=NULL; } } OMNIEVENTS__DEBUG_REF_COUNTS__DEFN(ConsumerAdmin_i) void ConsumerAdmin_i::send(CORBA::Any* event) { ProxyPushSupplierManager::PauseThenWake p(_pushSupplier); _queue.append(event); } void ConsumerAdmin_i::send(list& events) { if(!events.empty()) { ProxyPushSupplierManager::PauseThenWake p(_pushSupplier); for(list::iterator i=events.begin(); i!=events.end(); ++i) _queue.append( *i ); events.clear(); } } void ConsumerAdmin_i::disconnect() { if(_pushSupplier) _pushSupplier->disconnect(); if(_pullSupplier) _pullSupplier->disconnect(); } void ConsumerAdmin_i::reincarnate(const PersistNode& node) { // Build Push Supplier proxies PersistNode* pushsNode =node.child("ProxyPushSupplier"); if(pushsNode && !pushsNode->_child.empty()) { _pushSupplier=new ProxyPushSupplierManager(_poa,_queue); _pushSupplier->reincarnate(*pushsNode); } // Build Pull Supplier proxies PersistNode* pullsNode =node.child("ProxyPullSupplier"); if(pullsNode && !pullsNode->_child.empty()) { _pullSupplier=new ProxyPullSupplierManager(_channel,_poa,_queue); _pullSupplier->reincarnate(*pullsNode); } } void ConsumerAdmin_i::output(ostream& os) { if(_pushSupplier) { omni_mutex_lock l(_pushSupplier->_lock); _pushSupplier->output(os); } if(_pullSupplier) { _pullSupplier->output(os); } } }; // end namespace OmniEvents omniEvents-2_6_2/src/ConsumerAdmin.h0000644000076400001440000000537510240451207017637 0ustar alexusers00000000000000// Package : omniEvents // src/ConsumerAdmin.h Created : 2003/12/04 // Author : Alex Tingle // // Copyright (C) 2003-2005 Alex Tingle. // // This file is part of the omniEvents application. // // omniEvents is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public // License as published by the Free Software Foundation; either // version 2.1 of the License, or (at your option) any later version. // // omniEvents is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU // Lesser General Public License for more details. // // You should have received a copy of the GNU Lesser General Public // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // #ifndef OMNIEVENTS__CONSUMERADMIN_H #define OMNIEVENTS__CONSUMERADMIN_H #ifdef HAVE_CONFIG_H # include "config.h" #endif #include #ifdef HAVE_IOSTREAM # include #else # include #endif #include "Servant.h" #include "EventQueue.h" #include "CosEventChannelAdmin.hh" #ifdef HAVE_STD_IOSTREAM using namespace std; #endif namespace OmniEvents { class EventChannel_i; class ProxyPushSupplierManager; class ProxyPullSupplierManager; class PersistNode; class ConsumerAdmin_i : public virtual POA_CosEventChannelAdmin::ConsumerAdmin, public PortableServer::RefCountServantBase, public Servant { public: // CORBA interface methods CosEventChannelAdmin::ProxyPushSupplier_ptr obtain_push_supplier(); CosEventChannelAdmin::ProxyPullSupplier_ptr obtain_pull_supplier(); public: ConsumerAdmin_i(const EventChannel_i& channel, PortableServer::POA_ptr poa); virtual ~ConsumerAdmin_i(); OMNIEVENTS__DEBUG_REF_COUNTS__DECL /** Queues a single event for sending to consumers. Takes ownership of the * event. */ void send(CORBA::Any* event); /** Queues up events for sending to consumers. Takes ownership of the * events. On exit, the 'events' parameter is empty. */ void send(list& events); /** Send disconnect_XXX_consumer() to all connected consumers. */ void disconnect(); /** Populate this servant from log information. */ void reincarnate(const PersistNode& node); /** Save this object's state to a stream. */ void output(ostream& os); private: const EventChannel_i& _channel; EventQueue _queue; ProxyPushSupplierManager* _pushSupplier; ProxyPullSupplierManager* _pullSupplier; }; }; // end namespace OmniEvents #endif // OMNIEVENTS__CONSUMERADMIN_H omniEvents-2_6_2/src/EventChannel.cc0000644000076400001440000002464710242570116017611 0ustar alexusers00000000000000// Package : omniEvents // EventChannel.cc Created : 2003/12/04 // Author : Alex Tingle // // Copyright (C) 2003-2005 Alex Tingle. // // This file is part of the omniEvents application. // // omniEvents is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public // License as published by the Free Software Foundation; either // version 2.1 of the License, or (at your option) any later version. // // omniEvents is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU // Lesser General Public License for more details. // // You should have received a copy of the GNU Lesser General Public // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // #include "EventChannel.h" #include "ConsumerAdmin.h" #include "SupplierAdmin.h" #include "omniEventsLog.h" #include "Orb.h" #include namespace OmniEvents { // CORBA interface methods CosEventChannelAdmin::ConsumerAdmin_ptr EventChannel_i::for_consumers() { if(!_consumerAdmin || _shutdownRequested) throw CORBA::OBJECT_NOT_EXIST(); return _consumerAdmin->_this(); } CosEventChannelAdmin::SupplierAdmin_ptr EventChannel_i::for_suppliers() { if(!_supplierAdmin || _shutdownRequested) throw CORBA::OBJECT_NOT_EXIST(); return _supplierAdmin->_this(); } void EventChannel_i::destroy() { if(_shutdownRequested) throw CORBA::OBJECT_NOT_EXIST(); // Prevent further incoming connections. _shutdownRequested=true; DB(5,"EventChannel_i::destroy()") // Send disconnect messages to connected clients. if(_consumerAdmin) _consumerAdmin->disconnect(); if(_supplierAdmin) _supplierAdmin->disconnect(); } EventChannel_i::EventChannel_i(EventChannelStore* store) : Servant(PortableServer::POA::_nil()), _eventChannelStore(store), _consumerAdmin(NULL), _supplierAdmin(NULL), _poaManager(), _shutdownRequested(false), _properties(), _mapper(NULL), _lock(), _refCount(1) {} void EventChannel_i::activate( const char* channelName, const PersistNode* node ) { // The order of these various initialization methods is very important. // I've documented dependencies as 'REQUIRES' comments. createPoa(channelName); if(node) _properties._attr=node->_attr; // REQUIRES: _properties _consumerAdmin=new ConsumerAdmin_i(*this,_poa); // REQUIRES: _consumerAdmin, _properties _supplierAdmin=new SupplierAdmin_i(*this,_poa); if(node) { PersistNode* saNode =node->child("SupplierAdmin"); if(saNode) _supplierAdmin->reincarnate(*saNode); PersistNode* caNode =node->child("ConsumerAdmin"); if(caNode) _consumerAdmin->reincarnate(*caNode); } activateObjectWithId("EventChannel"); // Remove the constructor's reference. This object will now be destroyed when // the POA releases it. _remove_ref(); // REQUIRES: activate() ...since it uses _this(). setInsName(_properties.attrString("InsName")); // Start the channel's thread running. start_undetached(); } EventChannel_i::~EventChannel_i() { DB(20,"~EventChannel_i()") // Destroy the mapper object, even when the EventChannel is being shut down // without a call to destroy(). This can happen if the channel is // implemented through libomniEvents - the channel could be shut down and // later reincarnated in the same process. The Mapper's lifecycle should // match that of the EventChannel. if(_mapper) { _mapper->destroy(); _mapper=NULL; } if(_consumerAdmin) { _consumerAdmin->_remove_ref(); _consumerAdmin=NULL; } if(_supplierAdmin) { _supplierAdmin->_remove_ref(); _supplierAdmin=NULL; } } void* EventChannel_i::run_undetached(void*) { // Ensure that activate() is called before start()/run(). assert(!CORBA::is_nil(_poa)); const char* action=""; try { if(_eventChannelStore) { action="add this object to the store"; _eventChannelStore->insert(this); } if(omniEventsLog::exists()) { action="create this object in the persistency database"; WriteLock log; output(log.os); } // Process events until the channel is destroyed. action="run main loop"; mainLoop(); if(_eventChannelStore) { action="remove this object from the store"; _eventChannelStore->erase(this); } if(_shutdownRequested) { if(omniEventsLog::exists()) { action="remove record from persistency database"; CORBA::String_var poaName =_poa->the_name(); WriteLock log; log.os<<"-ecf/"<destroy( CORBA::Boolean(1) /* etherealize_objects */, CORBA::Boolean(0) /* wait_for_completion */ ); _poa=PortableServer::POA::_nil(); } // end if(_shutdownRequested) } catch(PortableServer::POAManager::AdapterInactive& ex) { DB(0,"EventChannel_i::run_undetached() - failed to "<activate(); unsigned long localCyclePeriod_ns=cyclePeriod_ns(); while(_refCount>0 && !_shutdownRequested) { // // TRANSFER PHASE - transfer events from SupplierAdmin to ConsumerAdmin. _poaManager->hold_requests(CORBA::Boolean(1) /* wait_for_completion */); if(_shutdownRequested) break; list events; _supplierAdmin->collect(events); _consumerAdmin->send(events); assert(events.empty()); _poaManager->activate(); // // COMMUNICATION PHASE - talk with clients' suppliers & consumers. // Note: On Linux the resolution of nanosleep is a huge 10ms. omni_thread::sleep(0,localCyclePeriod_ns); } } void EventChannel_i::_add_ref() { #if OMNIEVENTS__DEBUG_REF_COUNTS DB(20,"EventChannel_i::_add_ref()") #endif omni_mutex_lock pause(_lock); ++_refCount; } void EventChannel_i::_remove_ref() { #if OMNIEVENTS__DEBUG_REF_COUNTS DB(20,"EventChannel_i::_remove_ref()") #endif int myref; { omni_mutex_lock pause(_lock); myref = --_refCount; } if(myref<0) { DB(2,"EventChannel has negative ref count! "<the_name(); string name =string("ecf/")+poaName.in(); _properties.output(os,name); if(_supplierAdmin) _supplierAdmin->output(os); if(_consumerAdmin) _consumerAdmin->output(os); } void EventChannel_i::setInsName(const string v) { Mapper* newMapper =NULL; try { // If _insName is set, then create a mapper object to allow clients to // find this object with a `corbaloc' string. if(!v.empty()) { // !! Throws when there is already an object named 'v' in the INSPOA. CORBA::Object_var obj( _this() ); newMapper=new Mapper(v.c_str(),obj.in()); } // Deactivate the old _mapper object. if(_mapper) _mapper->destroy(); _mapper=newMapper; } catch(...) { // Can't use an auto_ptr, because MS VC++ 6 has no auto_ptr::reset() delete newMapper; throw; } } void EventChannel_i::createPoa(const char* channelName) { using namespace PortableServer; POA_ptr p=Orb::inst()._RootPOA.in(); // POLICIES: // Lifespan =PERSISTENT // we can persist // Assignment =USER_ID // write our own oid // Uniqueness =[default] UNIQUE_ID // one servant per object // ImplicitActivation=[default] IMPLICIT_ACTIVATION // auto activation // RequestProcessing =[default] USE_ACTIVE_OBJECT_MAP_ONLY // ServantRetention =[default] RETAIN // stateless POA // Thread =SINGLE_THREAD_MODEL // keep it simple CORBA::PolicyList policies; policies.length(3); policies[0]=p->create_lifespan_policy(PERSISTENT); policies[1]=p->create_id_assignment_policy(USER_ID); policies[2]=p->create_thread_policy(SINGLE_THREAD_MODEL); try // finally { try { // Create a new POA (and new POAManager) for this channel. // The POAManager will be used for all of this channel's POAs. _poa=p->create_POA(channelName,POAManager::_nil(),policies); _poaManager=_poa->the_POAManager(); } catch(POA::AdapterAlreadyExists& ex) // create_POA { DB(0,"EventChannel_i::createPoa() - POA::AdapterAlreadyExists") throw; } catch(POA::InvalidPolicy& ex) // create_POA { DB(0,"EventChannel_i::createPoa() - POA::InvalidPolicy: "<destroy(); throw; } // Destroy the policy objects (Not strictly necessary in omniORB) for(CORBA::ULong i=0; idestroy(); } // // class EventChannelStore // EventChannelStore::EventChannelStore() :_channels(),_lock() {} EventChannelStore::~EventChannelStore() { // ?? IMPLEMENT ME } void EventChannelStore::insert(EventChannel_i* channel) { omni_mutex_lock l(_lock); bool insertOK =_channels.insert(channel).second; if(!insertOK) DB(2,"Attempted to store an EventChannel, when it is already stored."); } void EventChannelStore::erase(EventChannel_i* channel) { omni_mutex_lock l(_lock); set::iterator pos =_channels.find(channel); if(pos==_channels.end()) DB(2,"Failed to erase unknown EventChannel.") else _channels.erase(pos); } void EventChannelStore::output(ostream &os) { omni_mutex_lock l(_lock); for(set::iterator i=_channels.begin(); i!=_channels.end(); ++i) { (*i)->output(os); } } }; // end namespace OmniEvents omniEvents-2_6_2/src/EventChannel.h0000644000076400001440000002144110250012720017427 0ustar alexusers00000000000000// Package : omniEvents // EventsChannel.h Created : 2003/12/04 // Author : Alex Tingle // // Copyright (C) 2003-2005 Alex Tingle. // // This file is part of the omniEvents application. // // omniEvents is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public // License as published by the Free Software Foundation; either // version 2.1 of the License, or (at your option) any later version. // // omniEvents is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU // Lesser General Public License for more details. // // You should have received a copy of the GNU Lesser General Public // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // #ifndef OMNIEVENTS__EVENTCHANNEL_H #define OMNIEVENTS__EVENTCHANNEL_H #ifdef HAVE_CONFIG_H # include "config.h" #endif #ifdef HAVE_IOSTREAM # include #else # include #endif #include "Servant.h" #include "PersistNode.h" #include "omniEvents.hh" #include "Mapper.h" #include "defaults.h" #include #include #ifdef HAVE_STD_IOSTREAM using namespace std; #endif namespace OmniEvents { class SupplierAdmin_i; class ConsumerAdmin_i; class EventChannelStore; /** Servant for CosEventChannelAdmin::EventChannel objects, also inherits from * omni_thread. Each EventChannel contains five POAs, one for each of the proxy * types, and one for the XXXAdmins and EventChannel itself. This POA also * contains the ProxyManager objects that are used to manage three of the * four proxy object types. * * Here's a summary of the POAs, and their contents: * *
 *     +-POA: EventChannel-----------------------------------------------+
 *     |                                                                 |
 *     |                      Obj: EventChannel_i                        |
 *     |                                                                 |
 *     |       Obj: SupplierAdmin_i           Obj: ConsumerAdmin_i       |
 *     |                                                                 |
 *     |                                 Obj: ProxyPushSupplierManager   |
 *     |                                                                 |
 *     |   +-POA: ProxyPushConsumer---+   +-POA: ProxyPushSupplier---+   |
 *     |   |                          |   |                          |   |
 *     |   | Obj: ProxyPushConsumer_i |   | Obj: ProxyPushSupplier_i |   |
 *     |   | (DEFAULT SERVANT)        |   | Obj: ProxyPushSupplier_i |   |
 *     |   |                          |   | Obj: ProxyPushSupplier_i |   |
 *     |   |                          |   | .                        |   |
 *     |   |                          |   | .                        |   |
 *     |   |                          |   | .                        |   |
 *     |   |                          |   |                          |   |
 *     |   +--------------------------+   +--------------------------+   |
 *     |                                                                 |
 *     |  Obj: ProxyPullConsumerManager  Obj: ProxyPullSupplierManager   |
 *     |                                                                 |
 *     |   +-POA: ProxyPullConsumer---+   +-POA: ProxyPullSupplier---+   |
 *     |   |                          |   |                          |   |
 *     |   | Obj: ProxyPullConsumer_i |   | Obj: ProxyPullSupplier_i |   |
 *     |   | Obj: ProxyPullConsumer_i |   | Obj: ProxyPullSupplier_i |   |
 *     |   | Obj: ProxyPullConsumer_i |   | Obj: ProxyPullSupplier_i |   |
 *     |   | .                        |   | .                        |   |
 *     |   | .                        |   | .                        |   |
 *     |   | .                        |   | .                        |   |
 *     |   |                          |   |                          |   |
 *     |   +--------------------------+   +--------------------------+   |
 *     |                                                                 |
 *     +-----------------------------------------------------------------+
 * 
* * All five POAs are single threaded, and managed by the same POAmanager. This * enables the top level event loop (EventChannel::run()) to hold all incoming * calls while it passes events from the ProxyConsumers over to the * ProxySuppliers. This single threaded model simplifies[*] the implementation * and avoids all of the locking overheads of a multi-threaded solution. * * [*] That's the theory anyway... Actually the single threaded model * complicates the underlying implementation, because omniORB treats single * threaded POAs as a special case on top of multi-threaded ones, rather than * the other way round! Ironic! */ class EventChannel_i : public POA_omniEvents::EventChannel, public Servant, public omni_thread { public: // CORBA interface methods CosEventChannelAdmin::ConsumerAdmin_ptr for_consumers(); CosEventChannelAdmin::SupplierAdmin_ptr for_suppliers(); void destroy(); /** 'ping' method inherited from FT::PullMonitorable. */ CORBA::Boolean is_alive() { return 1; } public: EventChannel_i(EventChannelStore* store=NULL); /** Cleans up the _poa, if this object is deleted before its thread starts. */ ~EventChannel_i(); /** Creates the channel's POA, and any child objects. Must to be called * just after construction, and before start()/run(). */ void activate(const char* channelName, const PersistNode* node =NULL); /** Warn about interface change. */ void start(){DB(0,"It is no longer necessary to call EventChannel::start().")} /** Entry point for the channel's thread. Calls mainLoop() and waits for * it to exit. Handles any exceptions, and shuts down the channel once the * main loop has finished. */ void* run_undetached(void*); /** The main loop for a channel. Work is strictly separated into two phases. * Most of the time, all of the POAs are active, and receiving incoming calls. * Periodically, incoming calls are held and the channel collects new events * from the consumers and sends them to the suppliers. * * Incoming call handlers are all designed to complete in the absolute minimum * time. This enables the POAs to be single threaded, and to hold incoming * calls without having to wait a long time for ongoing invokations to * complete. Sadly, it's not possible to implement ProxyPullSupplier::pull() * 'properly' without blocking, so our version just raises TRANSIENT if there * is no event immediately available. * * Outgoing calls are always sent as deferred requests, to avoid blocking * while we wait for them to return. * */ void mainLoop(); void _add_ref(); void _remove_ref(); ///< Shutdown the thread when refCount reaches zero. void output(ostream& os); // // Accessors ConsumerAdmin_i& consumerAdmin() const {assert(_consumerAdmin!=NULL);return *_consumerAdmin;} const PersistNode& properties() const {return _properties;} // // Values stored in _properties member. CORBA::ULong pullRetryPeriod_ms() const {return _properties.attrLong("PullRetryPeriod_ms",PULL_RETRY_PERIOD_MS);} CORBA::ULong maxQueueLength() const {return _properties.attrLong("MaxQueueLength",MAX_QUEUE_LENGTH);} CORBA::ULong maxNumProxies() const {return _properties.attrLong("MaxNumProxies",MAX_NUM_PROXIES);} unsigned long cyclePeriod_ns() const {return _properties.attrLong("CyclePeriod_ns",CYCLE_PERIOD_NS);} private: /** Construct a new Mapper object, and registers it in the INSPOA. */ void setInsName(const string v); /** Constructs the main POA for this channel. * Policies are: PERSISTENT, USER_ID, SINGLE_THREAD_MODEL. POA name is set to * channelName. */ void createPoa(const char* channelName); private: EventChannelStore* _eventChannelStore; SupplierAdmin_i* _supplierAdmin; ConsumerAdmin_i* _consumerAdmin; PortableServer::POAManager_var _poaManager; bool _shutdownRequested; PersistNode _properties; Mapper* _mapper; omni_mutex _lock; //< Protects _refCount int _refCount; }; /** Container for Event Channels. */ class EventChannelStore { public: EventChannelStore(); ~EventChannelStore(); void insert(EventChannel_i* channel); void erase(EventChannel_i* channel); void output(ostream &os); private: set _channels; omni_mutex _lock; }; }; // end namespace OmniEvents #endif // OMNIEVENTS__EVENTCHANNEL_H omniEvents-2_6_2/src/EventChannelFactory.cc0000644000076400001440000002303610240451210021117 0ustar alexusers00000000000000// -*- Mode: C++; -*- // Package : omniEvents // EventChannelFactory_i.cc Created : 1/4/98 // Author : Paul Nader (pwn) // // Copyright (C) 1998 Paul Nader, 2003-2004 Alex Tingle. // // This file is part of the omniEvents application. // // omniEvents is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public // License as published by the Free Software Foundation; either // version 2.1 of the License, or (at your option) any later version. // // omniEvents is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU // Lesser General Public License for more details. // // You should have received a copy of the GNU Lesser General Public // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // // Description: // Implementation of the COSS Event Services Event Channel Factory // #include "EventChannelFactory.h" #include "Orb.h" #include "EventChannel.h" #include "PersistNode.h" #include #ifdef HAVE_OMNIORB4 # define STR_MATCH(s1,s2) omni::strMatch((s1),(s2)) #else # define STR_MATCH(s1,s2) (0==::strcmp((s1),(s2))) #endif namespace OmniEvents { //------------------------------------------------------------------------ // Event Channel Factory Interface Implementation //------------------------------------------------------------------------ EventChannelFactory_i::EventChannelFactory_i(const PersistNode& node) : Servant(Orb::inst()._omniINSPOA.in()), _port(node.attrLong("port",11169)), _endPointNoListen(node.attrString("endPointNoListen")), _channels() { // Create event channels for(map::const_iterator i=node._child.begin(); i!=node._child.end(); ++i) { EventChannel_i* channel =new EventChannel_i(&_channels); channel->activate( i->first.c_str(), // channelName i->second // node ); } activateObjectWithId("omniEvents"); } EventChannelFactory_i::~EventChannelFactory_i() { DB(20, "EventChannelFactory_i::~EventChannelFactory_i()"); } CORBA::Boolean EventChannelFactory_i::supports(const CosLifeCycle::Key &k) { if((k.length() == 1) && (strcmp(k[0].id, "EventChannel") == 0) && (strcmp(k[0].kind, "object interface") == 0)) return 1; else return 0; } CORBA::Object_ptr EventChannelFactory_i::create_object( const CosLifeCycle::Key& k, const CosLifeCycle::Criteria& criteria ) { // Check the key if(!this->supports(k)) throw CosLifeCycle::NoFactory(k); // Process criteria !! MAY THROW !! auto_ptr criteriaNode( parseCriteria(criteria) ); CORBA::String_var channelId; if(criteriaNode->hasAttr("InsName")) channelId=criteriaNode->attrString("InsName").c_str(); else channelId=newUniqueId(); // Create the channel. // We place it into an auto_ptr - this will automatically clean up if anything // goes wrong. auto_ptr channel( new EventChannel_i(&_channels) ); try { channel->activate(channelId.in(),criteriaNode.get()); // !! MAY THROW !! } catch(PortableServer::POA::ObjectAlreadyActive& ex) { throw CosLifeCycle::InvalidCriteria(criteria); //?? } catch(PortableServer::POA::AdapterAlreadyExists& ex) // create_POA { throw CosLifeCycle::InvalidCriteria(criteria); //?? } // We release() the pointer, as the thread will delete it when it stops. return channel.release()->_this(); } CosEventChannelAdmin::EventChannel_ptr EventChannelFactory_i::create_channel(const char* channel_name) { CosEventChannelAdmin::EventChannel_var result; CosLifeCycle::Key key; key.length(1); key[0].id ="EventChannel"; key[0].kind="object interface"; CosLifeCycle::Criteria criteria; criteria.length(1); criteria[0].name = "InsName"; criteria[0].value <<= channel_name; try { CORBA::Object_var obj=create_object(key,criteria); result=CosEventChannelAdmin::EventChannel::_narrow(obj.in()); } catch(CosLifeCycle::InvalidCriteria& ex) { if(ex.invalid_criteria.length()>0 && STR_MATCH(ex.invalid_criteria[0].name,"InsName")) { throw event::NameAlreadyUsed(); } else { DB(10,"Failed to create_channel." " Converting InvalidCriteria exception into UNKNOWN.") throw CORBA::UNKNOWN(); } } catch(CORBA::UserException& ex) { DB(2,"Failed to create_channel. Converting UserException" IFELSE_OMNIORB4(" '"<id_to_reference(oid.in()); result=CosEventChannelAdmin::EventChannel::_narrow(obj.in()); } catch(POA::ObjectNotActive&) { DB(10,"Failed to join_channel. Object not active.") throw event::EventChannelNotFound(); } catch(CORBA::UserException& ex) { DB(2,"Failed to join_channel. Converting UserException" IFELSE_OMNIORB4(" '"< result( new PersistNode() ); for(CORBA::ULong i=0; i>= pullRetryPeriod_ms)) throw InvalidCriteria(extract("PullRetryPeriod_ms",criteria)); if(pullRetryPeriod_ms <= 0) throw CannotMeetCriteria(extract("PullRetryPeriod_ms",criteria)); result->addattr("PullRetryPeriod_ms",pullRetryPeriod_ms); } else if(strcmp(criteria[i].name, "PullRetryPeriod") == 0) { // This criterion has been deprecated in favour of PullRetryPeriod_ms. // Don't overwrite any value provided by the latter. if(!result->hasAttr("PullRetryPeriod_ms")) { CORBA::ULong pullRetryPeriod; if(! (criteria[i].value >>= pullRetryPeriod)) throw InvalidCriteria(extract("PullRetryPeriod",criteria)); if(pullRetryPeriod <= 0) throw CannotMeetCriteria(extract("PullRetryPeriod",criteria)); result->addattr("PullRetryPeriod_ms",pullRetryPeriod*1000); } } else if(strcmp(criteria[i].name, "MaxQueueLength") == 0) { CORBA::ULong maxQueueLength; if(! (criteria[i].value >>= maxQueueLength)) throw InvalidCriteria(extract("MaxQueueLength",criteria)); if(maxQueueLength > 0) result->addattr("MaxQueueLength",maxQueueLength); else DB(10,"Ignoring CosLifeCycle criterion: MaxQueueLength=0"); } else if(strcmp(criteria[i].name, "MaxNumProxies") == 0) { CORBA::ULong maxNumProxies; if(! (criteria[i].value >>= maxNumProxies)) throw InvalidCriteria(extract("MaxNumProxies",criteria)); if(maxNumProxies > 0) result->addattr("MaxNumProxies",maxNumProxies); else DB(10,"Ignoring CosLifeCycle criterion: MaxNumProxies=0"); } else if(strcmp(criteria[i].name, "CyclePeriod_ns") == 0) { CORBA::ULong cyclePeriod_ns; if(! (criteria[i].value >>= cyclePeriod_ns)) throw InvalidCriteria(extract("CyclePeriod_ns",criteria)); if(cyclePeriod_ns > 0) result->addattr("CyclePeriod_ns",cyclePeriod_ns); else DB(10,"Ignoring CosLifeCycle criterion: CyclePeriod_ns=0"); } else if(strcmp(criteria[i].name, "InsName") == 0) { const char* insName; if(! (criteria[i].value >>= insName)) throw InvalidCriteria(extract("InsName",criteria)); if(insName && insName[0]) result->addattr(string("InsName=")+insName); else DB(10,"Ignoring empty CosLifeCycle criterion: InsName"); } else if(strcmp(criteria[i].name, "FilterId") == 0) { const char* repositoryId; if(! (criteria[i].value >>= repositoryId)) throw InvalidCriteria(extract("FilterId",criteria)); if(repositoryId && repositoryId[0]) result->addattr(string("FilterId=")+repositoryId); else DB(10,"Ignoring empty CosLifeCycle criterion: FilterId"); } else if(strcmp(criteria[i].name, "MaxEventsPerConsumer") == 0) { DB(10,"Ignoring obsolete CosLifeCycle criterion: MaxEventsPerConsumer"); } else { DB(10,"Ignoring unknown CosLifeCycle criterion: "< #else # include #endif #include "omniEvents.hh" #include "Servant.h" #include "EventChannel.h" #ifdef HAVE_STD_STL using namespace std; #endif namespace OmniEvents { class PersistNode; // Event Channel Factory class EventChannelFactory_i : public virtual POA_omniEvents::EventChannelFactory, public PortableServer::RefCountServantBase, public Servant { public: // CORBA METHODS /** Returns true if the key passed has the following contents: * * - id : "EventChannel" * - kind : "object interface" */ CORBA::Boolean supports(const CosLifeCycle::Key& k); CORBA::Object_ptr create_object( const CosLifeCycle::Key &k, const CosLifeCycle::Criteria &the_criteria ); /** 'ping' method inherited from FT::PullMonitorable. */ CORBA::Boolean is_alive() { return 1; } /** DO NOT USE. Only for OpenOrb compatibility. */ CosEventChannelAdmin::EventChannel_ptr create_channel( const char* channel_name ); /** DO NOT USE. Only for OpenOrb compatibility. */ CosEventChannelAdmin::EventChannel_ptr join_channel( const char* channel_name ); public: /** Builds an EventChannelFactory_i from the parsed logfile data. */ EventChannelFactory_i(const PersistNode& node); virtual ~EventChannelFactory_i(); /** Convert CosLifeCycle::Criteria into a PersistNode. The caller is * responsible for deleting the result. */ PersistNode* parseCriteria(const CosLifeCycle::Criteria& criteria) const; /** Utility function: constructs a Criteria that contains a single criterion. * Used to generate Invalid Criteria exceptions. */ CosLifeCycle::Criteria extract( const char* name, const CosLifeCycle::Criteria& from ) const; void output(ostream& os); private: /** The EventChannelFactory listens on this TCP port. Equivalent to * ORB parameter: endPoint = giop:::<_port> */ unsigned int _port; /** Stores the value of the endPointNoListen ORB parameter. omniORB4 allows * us to encode backup server addresses into our object references. */ string _endPointNoListen; EventChannelStore _channels; }; }; // namespace OmniEvents #endif // OMNIEVENTS_EVENTCHANNELFACTORY_H omniEvents-2_6_2/src/EventQueue.cc0000644000076400001440000000424210227236245017317 0ustar alexusers00000000000000// Package : omniEvents // EventQueue.cc Created : 2003/12/04 // Author : Alex Tingle // // Copyright (C) 2003 Alex Tingle. // // This file is part of the omniEvents application. // // omniEvents is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public // License as published by the Free Software Foundation; either // version 2.1 of the License, or (at your option) any later version. // // omniEvents is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU // Lesser General Public License for more details. // // You should have received a copy of the GNU Lesser General Public // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // #include "EventQueue.h" #include // memset #include #ifdef HAVE_CONFIG_H # include "config.h" #endif #ifdef HAVE_OMNIORB3 # include #endif #ifdef HAVE_OMNIORB4 # include #endif namespace OmniEvents { EventQueue::EventQueue(long size) : _next(0), _size(size+1), // Always need an `empty' entry at the head of the buffer. _queue(new CORBA::Any*[_size]), _filter(NULL) { DB(5,"MaxQueueLength="<1); // Explicitly clear the queue with memset, because MS VC++ doesn't like // it as an array initializer. memset(_queue,0,_size*sizeof(CORBA::Any*)); } EventQueue::~EventQueue() { for(long i=0; i<_size; ++i) delete _queue[i]; delete[] _queue; } // // EventQueue::Reader // EventQueue::Reader::Reader(EventQueue& eventQueue) : _eventQueue(eventQueue), _next(eventQueue._next) { // pass } bool EventQueue::Reader::moreEvents() const { return( _next!=_eventQueue._next ); } CORBA::Any* EventQueue::Reader::nextEvent() { CORBA::Any* result =_eventQueue._queue[_next]; _next=(_next+1)%_eventQueue._size; return result; } }; // end namespace OmniEvents omniEvents-2_6_2/src/EventQueue.h0000644000076400001440000000560410227236245017164 0ustar alexusers00000000000000// Package : omniEvents // EventQueue.h Created : 2003/12/04 // Author : Alex Tingle // // Copyright (C) 2003 Alex Tingle. // // This file is part of the omniEvents application. // // omniEvents is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public // License as published by the Free Software Foundation; either // version 2.1 of the License, or (at your option) any later version. // // omniEvents is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU // Lesser General Public License for more details. // // You should have received a copy of the GNU Lesser General Public // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // #ifndef OMNIEVENTS__EVENTQUEUE_H #define OMNIEVENTS__EVENTQUEUE_H #ifdef HAVE_CONFIG_H # include "config.h" #endif #include "Orb.h" #include "Filter.h" #include #ifdef HAVE_STD_STL using namespace std; #endif namespace OmniEvents { /** The EventQueue is a circular buffer, that contains _size-1 events. Events * are stored as pointers to CORBA::Any. The Reader class is a mix-in for * classes that need to consume events from the queue. Readers that cannot keep * up with the flow of messages into the queue will skip _size events * whenever the back of the queue catches up with them. This implements the * usual 'fresh business first' pattern for deciding what to discard. * * Events are not scavenged from the queue. This means that once the queue has * filled up, it will never contain fewer than _size-1 events. This strategy is * usually somewhat wasteful of memory, but guarantees that the worst-case * memory usage will never rise above the defined maximum. */ class EventQueue { public: class Reader { public: Reader(EventQueue& eventQueue); bool moreEvents() const; CORBA::Any* nextEvent(); private: EventQueue& _eventQueue; int _next; ///< Points to the next event to read. }; EventQueue(long size=1023); virtual ~EventQueue(); void setFilter(Filter* filter) { auto_ptr f(filter); _filter=f; // MS VC++ 6 has no auto_ptr::reset() } inline void append(CORBA::Any* event) { if(!_filter.get() || _filter->keep(*event)) { delete _queue[_next]; _queue[_next]=event; _next=(_next+1)%_size; } } private: /** Always points to the next slot to which an event will be written. */ long _next; long _size; CORBA::Any** _queue; auto_ptr _filter; friend class Reader; }; }; // end namespace OmniEvents #endif // OMNIEVENTS__EVENTQUEUE_H omniEvents-2_6_2/src/Filter.cc0000644000076400001440000000507210227236245016460 0ustar alexusers00000000000000// Package : omniEvents // Filter.cc Created : 2004/04/30 // Author : Alex Tingle // // Copyright (C) 2004 Alex Tingle. // // This file is part of the omniEvents application. // // omniEvents is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public // License as published by the Free Software Foundation; either // version 2.1 of the License, or (at your option) any later version. // // omniEvents is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU // Lesser General Public License for more details. // // You should have received a copy of the GNU Lesser General Public // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // #include "Filter.h" #include #ifdef HAVE_OMNIORB4 # define STR_MATCH(s1,s2) omni::strMatch((s1),(s2)) #else # define STR_MATCH(s1,s2) (0==::strcmp((s1),(s2))) #endif namespace OmniEvents { bool FilterByRepositoryId::keep(const CORBA::Any& event) const { using namespace CORBA; CORBA::TypeCode_var tc=event.type(); switch( tc->kind() ) { #ifdef HAVE_OMNIORB4 case _np_tk_indirect: // Internal to omniORB. We should never get this. assert(0); #endif // TCs with Repository ID: case tk_objref: case tk_struct: case tk_union: case tk_enum: case tk_alias: case tk_except: return STR_MATCH( _rid.in(), tc->id() ); // Collections case tk_sequence: case tk_array: // Primitives case tk_null: case tk_void: case tk_short: case tk_long: case tk_ushort: case tk_ulong: case tk_float: case tk_double: case tk_boolean: case tk_char: case tk_octet: case tk_any: case tk_TypeCode: case tk_Principal: case tk_string: #ifdef HAS_LongLong case tk_longlong: case tk_ulonglong: #endif #ifdef HAS_LongDouble case tk_longdouble: #endif #ifndef HAVE_OMNIORB3 case tk_wchar: case tk_wstring: case tk_fixed: // WTF? Not implemented in omniORB? case tk_value: case tk_value_box: case tk_native: case tk_abstract_interface: case tk_local_interface: #else default: #endif break; } // end case. Note: no default, so that missing options are flagged by GCC. return false; } }; // end namespace OmniEvents omniEvents-2_6_2/src/Filter.h0000644000076400001440000000511510227236245016320 0ustar alexusers00000000000000// Package : omniEvents // Filter.h Created : 2004/04/30 // Author : Alex Tingle // // Copyright (C) 2004 Alex Tingle. // // This file is part of the omniEvents application. // // omniEvents is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public // License as published by the Free Software Foundation; either // version 2.1 of the License, or (at your option) any later version. // // omniEvents is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU // Lesser General Public License for more details. // // You should have received a copy of the GNU Lesser General Public // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // #ifndef OMNIEVENTS__FILTER_H #define OMNIEVENTS__FILTER_H #ifdef HAVE_CONFIG_H # include "config.h" #endif #include "Orb.h" #include #ifdef HAVE_IOSTREAM # include #else # include #endif #ifdef HAVE_STD_IOSTREAM using namespace std; #endif namespace OmniEvents { /** Event filter interface. */ class Filter { public: Filter(){} virtual ~Filter(){} /** Returns TRUE if the event passes the filter and FALSE if the event should * be discarded. Called by filter() once for each event. */ virtual bool keep(const CORBA::Any& event) const =0; virtual void output(ostream& os) const =0; }; /** The most basic event filter allows only events of a certain CORBA TCKind to * pass. Usually used to filter basic types. */ class FilterByTCKind: public Filter { public: FilterByTCKind(CORBA::TCKind kind):_kind(kind){} virtual ~FilterByTCKind(){} bool keep(const CORBA::Any& event) const { CORBA::TypeCode_var tc=event.type(); return( tc->kind()==_kind ); } void output(ostream& os) const { os<<"\n FilterKind="<<_kind; } private: CORBA::TCKind _kind; }; /** Allows only events of a certain CORBA RepositoryId to pass. Only passes * events whose type matches exactly. */ class FilterByRepositoryId: public Filter { public: FilterByRepositoryId(const char* rid):_rid(rid){} virtual ~FilterByRepositoryId(){} bool keep(const CORBA::Any& event) const; void output(ostream& os) const { os<<"\n FilterId="<<_rid; } private: CORBA::RepositoryId_var _rid; }; }; // end namespace OmniEvents #endif // OMNIEVENTS__FILTER_H omniEvents-2_6_2/src/Makefile0000644000076400001440000000663110240451210016350 0ustar alexusers00000000000000# Package : omniEvents # src/Makefile Created : 2003/10/31 # Author : Alex Tingle # # Copyright (C) 2003 Alex Tingle. # # This file is part of the omniEvents application. # # omniEvents is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either # version 2.1 of the License, or (at your option) any later version. # # omniEvents is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public # License along with this library; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # LIBRARY_SOURCE_FILES = \ ConsumerAdmin.cc \ EventChannel.cc \ EventChannelFactory.cc \ EventQueue.cc \ Filter.cc \ Orb.cc \ PersistNode.cc \ ProxyManager.cc \ ProxyPullConsumer.cc \ ProxyPullSupplier.cc \ ProxyPushConsumer.cc \ ProxyPushSupplier.cc \ Servant.cc \ SupplierAdmin.cc \ omniEventsLog.cc \ version.cc \ DAEMON_SOURCE_FILES := \ $(LIBRARY_SOURCE_FILES) \ getopt.cc \ main.cc \ naming.cc \ omniEvents.cc \ LIBRARY_HEADER_FILES := $(patsubst %.cc,%.h,$(LIBRARY_SOURCE_FILES)) \ Callback.h \ Mapper.h \ config.h \ defaults.h \ scour.h \ include ../config.mk ifneq "$(strip $(HAVE_GETHOSTNAME))" "yes" LIBRARY_HEADER_FILES += gethostname.h endif INSTALLED_HEADER_FILES := \ $(patsubst %,$(INSTALL_INCLUDE)/$(OMNIEVENTS)/%,$(LIBRARY_HEADER_FILES)) ifneq ($(BUILD_FOR_WINDOWS),) DAEMON_SOURCE_FILES += daemon_windows.cc else DAEMON_SOURCE_FILES += daemon_unix.cc endif DAEMON_EXE := $(OMNIEVENTS)$(EXEEXT) LIBRARY := $(call SharedLibName,$(OMNIEVENTS)) LIBRARY_SONAME := $(call SharedLibSoName,$(OMNIEVENTS),$(PACKAGE_VERSION)) ARCHIVES = ../idl/$(CLIENT_LIB) \ all: exe lib install: all install_dirs $(INSTALLED_HEADER_FILES) $(INSTALL) $(DAEMON_EXE) $(INSTALL_SBIN) $(call InstallSharedLib,$(OMNIEVENTS),$(PACKAGE_VERSION),$(INSTALL_LIB)) $(INSTALLED_HEADER_FILES): $(INSTALL_INCLUDE)/$(OMNIEVENTS)/%: % install_dirs $(INSTALL) -m 644 $< $(INSTALL_INCLUDE)/$(OMNIEVENTS) install_dirs: $(INSTALL) -d $(INSTALL_SBIN) $(INSTALL) -d $(INSTALL_LIB) $(INSTALL) -d $(INSTALL_INCLUDE)/$(OMNIEVENTS) uninstall: $(RMDIR) $(INSTALL_INCLUDE)/$(OMNIEVENTS) $(RM) $(INSTALL_SBIN)/$(DAEMON_EXE) # Don't uninstall shared library. exe: $(DAEMON_EXE) $(DAEMON_EXE): $(patsubst %.cc,%.$(OBJEXT),$(DAEMON_SOURCE_FILES)) $(call CxxBuildExecutable,$@,$^ $(ARCHIVES)) lib: $(LIBRARY) $(LIBRARY): $(patsubst %.cc,%.$(OBJEXT),$(LIBRARY_SOURCE_FILES)) $(call CxxBuildShared,$@,$^ $(ARCHIVES),,$(LIBRARY_SONAME)) clean: $(RM) $(DAEMON_EXE) $(LITE_EXE) $(LIBRARY) *.$(OBJEXT) ## ## A slim version of the daemon that uses the shared library. (Only on Unix). LITE_EXE := oelite$(EXEEXT) LITE_SOURCE_FILES := getopt.cc omniEvents.cc naming.cc main.cc daemon_unix.cc LITE_OBJECTS := $(patsubst %.cc,%.$(OBJEXT),$(LITE_SOURCE_FILES)) $(LITE_EXE): $(LITE_OBJECTS) lib $(call CxxBuildExecutable,$@,$(LITE_OBJECTS) -L. -l$(OMNIEVENTS)) include deps.mk .PHONY: all install install_dirs uninstall exe lib clean omniEvents-2_6_2/src/Mapper.h0000644000076400001440000000446010240451210016303 0ustar alexusers00000000000000// Package : omniMapper // Mapper.h Author : Duncan Grisby (dpg1) // // Copyright (C) 2000 AT&T Laboratories Cambridge // Copyright (C) 2004 Alex Tingle // // This file is part of omniEvents. It is based upon omniMapper. // // omniEvents is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public // License as published by the Free Software Foundation; either // version 2.1 of the License, or (at your option) any later version. // // omniEvents is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU // Lesser General Public License for more details. // // You should have received a copy of the GNU Lesser General Public // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // #include "Servant.h" #include "Orb.h" #include namespace OmniEvents { /** A dummy servant that installs itself into the INSPOA and redirects all * calls to the real destination. Copied from the omniMapper application. */ class Mapper : public Servant, public PortableServer::RefCountServantBase { public: Mapper(const char* id, CORBA::Object_ptr obj) : Servant(Orb::inst()._omniINSPOA.in()), id_( CORBA::string_dup(id) ), obj_( CORBA::Object::_duplicate(obj) ) { DB(1,"Initialising Mapper `"< #else # include #endif #include #include #include "Callback.h" namespace OmniEvents { Orb Orb::_inst; Orb::~Orb() { omni_mutex_lock l(_deferredRequestsLock); list::iterator curr, next=_deferredRequests.begin(); while(next!=_deferredRequests.end()) { curr=next++; CORBA::release(curr->first); _deferredRequests.erase(curr); } } void Orb::resolveInitialReferences() { assert(!CORBA::is_nil(_orb)); const char* action=""; // Use this variable to help report errors. try { CORBA::Object_var obj; action="resolve initial reference 'RootPOA'"; obj=_orb->resolve_initial_references("RootPOA"); _RootPOA=PortableServer::POA::_narrow(obj); if(CORBA::is_nil(_RootPOA)) throw CORBA::OBJECT_NOT_EXIST(); action="resolve initial reference 'omniINSPOA'"; obj=_orb->resolve_initial_references("omniINSPOA"); _omniINSPOA=PortableServer::POA::_narrow(obj); if(CORBA::is_nil(_omniINSPOA)) throw CORBA::OBJECT_NOT_EXIST(); // The naming service is optional. try { action="resolve initial reference 'NameService'"; obj=_orb->resolve_initial_references("NameService"); _NameService=CosNaming::NamingContext::_narrow(obj); } catch(CORBA::Exception& ex) { DB(1,"Warning - failed to "<resolve_initial_references("POACurrent"); _POACurrent=PortableServer::Current::_narrow(obj); if(CORBA::is_nil(_POACurrent)) throw CORBA::OBJECT_NOT_EXIST(); #endif return; } catch(CORBA::ORB::InvalidName& ex) // resolve_initial_references { DB(0,"Failed to "< usedCallbacks; { omni_mutex_lock l(_deferredRequestsLock); DB(20,"Polling "<<_deferredRequests.size()<<" deferred requests.") list::iterator curr, next=_deferredRequests.begin(); while(next!=_deferredRequests.end()) { curr=next++; if(curr->first->poll_response()) { CORBA::Environment_ptr env=curr->first->env();// No need to release. if(!CORBA::is_nil(env) && env->exception()) { CORBA::Exception* ex =env->exception(); // No need to free exception DB(10,"Deferred call to "<first->operation() <<"() got exception" IF_OMNIORB4(<<": "<_name())) } else if(curr->second) { DB(15,"Deferred call to "<first->operation()<<"() returned.") curr->second->callback(curr->first); } else { DB(15,"Orphan call to "<first->operation()<<"() returned.") } CORBA::release(curr->first); if(curr->second) usedCallbacks.push_back( curr->second ); _deferredRequests.erase(curr); } } // end loop while() } // _deferredRequestsLock is now unlocked: clear away used callbacks. // (Cannot do this while _deferredRequestsLock is held, because of the // following deadlock: // _remove_ref() -> ~Proxy() -> Orb::deferredRequest() while(!usedCallbacks.empty()) { usedCallbacks.front()->_remove_ref(); usedCallbacks.pop_front(); } } // end loop while(!_shutdownRequested) // Clean up all outstanding requests. omni_mutex_lock l(_deferredRequestsLock); while(!_deferredRequests.empty()) { _deferredRequests.front().first->get_response(); CORBA::release(_deferredRequests.front().first); if(_deferredRequests.front().second) _deferredRequests.front().second->_remove_ref(); _deferredRequests.pop_front(); } } void Orb::deferredRequest(CORBA::Request_ptr req, Callback* callback) { if(_shutdownRequested) callback=NULL; // If _shutdownRequested and Orb::run() has already terminated, then // the request (req) will never be collected or released. This is sad, and it // makes omniORB complain - but at least it works: // Attempting to get_response() here can cause deadlock. Just releasing the // Request causes a SEGV when the call returns. if(callback) callback->_add_ref(); omni_mutex_lock l(_deferredRequestsLock); _deferredRequests.push_back(RequestCallback_t(req,callback)); } void Orb::reportObjectFailure( const char* here, CORBA::Object_ptr obj, CORBA::Exception* ex ) { assert(!CORBA::is_nil(obj)); #ifdef HAVE_OMNIORB4 { // Hack! The '!' signals object failure. // See DaemonImpl::log() in daemon_unix.cc. omniORB::logger log("omniEvents! Object failure: "); omniIOR* ior =obj->_PR_getobj()->_getIOR(); // Log Repository ID. log<repositoryID(); // Log Object ID. (Limitation: only display the first TAG_INTERNET_IOP) for(CORBA::ULong i=0; iiopProfiles().length(); i++) { if (ior->iopProfiles()[i].tag == IOP::TAG_INTERNET_IOP) { IIOP::ProfileBody pBody; IIOP::unmarshalProfile(ior->iopProfiles()[i],pBody); log<<" \""; for(CORBA::ULong j=0; j=' '&&c<='~')? c: '.' ); // Log object key as text } log<<"\" at "<<(const char*)pBody.address.host<<":"<_name(); CORBA::SystemException* sysex =CORBA::SystemException::_downcast(ex); if(sysex) log<<" ("<object_to_string(obj) ); log< #ifdef HAVE_OMNIORB3 # include #endif #ifdef HAVE_OMNIORB4 # include #endif #ifdef HAVE_OMNIORB4 # define IFELSE_OMNIORB4(omniORB4_code,default_code) omniORB4_code # define IF_OMNIORB4(omniORB4_code) omniORB4_code #else # define IFELSE_OMNIORB4(omniORB4_code,default_code) default_code # define IF_OMNIORB4(omniORB4_code) #endif #define DB(l,x) \ {if(omniORB::trace(l)){omniORB::logger log("omniEvents: ");log< RequestCallback_t; list _deferredRequests; omni_mutex _deferredRequestsLock; bool _shutdownRequested; Orb():_shutdownRequested(false){} friend void OmniEvents_Orb_shutdown(int); public: inline static Orb& inst() { return _inst; } /** Destructor needs to be public to keep MS VC++6 happy. */ ~Orb(); CORBA::ORB_var _orb; PortableServer::POA_var _RootPOA; PortableServer::POA_var _omniINSPOA; CosNaming::NamingContext_var _NameService; #ifdef HAVE_OMNIORB4 PortableServer::Current_ptr _POACurrent; #endif /** _orb must already have been initialized before this method is called. */ void resolveInitialReferences(); /** Parks the main thread, but also picks up (and ignores) responses from * orphan requests. If _shutdownRequested is set, then run() shuts down the * orb and returns. */ void run(); /** Adopts the request and then stores it in _deferredRequests. * run() later picks up the responses and forwards them to 'callback', if it * is set. */ void deferredRequest(CORBA::Request_ptr req, Callback* callback=NULL); /** Called by Callback objects when they are destroyed. */ void cancelCallback(const Callback* callback); /** Called by omniEvents when an object has failed (fatal exception). * The failure is logged as an omniORB message with traceLevel zero. */ void reportObjectFailure( const char* here, CORBA::Object_ptr obj, CORBA::Exception* ex ); /** Sets _shutdownRequested. The parameter is ignored. * This method may be used as a signal handler. */ void shutdown(int) { _shutdownRequested=true; } }; // end class Orb /** Converts a string to a narrowed reference. */ template typename T::_ptr_type string_to_(const char* oidStr) { CORBA::Object_var obj =Orb::inst()._orb->string_to_object(oidStr); if(CORBA::is_nil(obj.in())) throw CORBA::BAD_PARAM(); #ifdef HAVE_OMNIORB4 typename T::_var_type result =T::_unchecked_narrow(obj); #else typename T::_var_type result =T::_narrow(obj); #endif if(CORBA::is_nil(result.in())) throw CORBA::BAD_PARAM(); return result._retn(); } }; // end namespace OmniEvents #endif // OMNIEVENTS__ORB_H omniEvents-2_6_2/src/PersistNode.cc0000644000076400001440000001056610227236245017476 0ustar alexusers00000000000000// Package : omniEvents // PersistNode.cc Created : 2004/04/29 // Author : Alex Tingle // // Copyright (C) 2004 Alex Tingle. // // This file is part of the omniEvents application. // // omniEvents is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public // License as published by the Free Software Foundation; either // version 2.1 of the License, or (at your option) any later version. // // omniEvents is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU // Lesser General Public License for more details. // // You should have received a copy of the GNU Lesser General Public // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // #include "PersistNode.h" #include #include namespace OmniEvents { PersistNode::PersistNode(istream& is) { while( readnode(is) ){} } PersistNode::~PersistNode() { for(map::iterator i=_child.begin(); i!=_child.end(); ++i) delete i->second; } void PersistNode::output(ostream& os,string name) const { if(!name.empty()) // Don't output root node. { os<::const_iterator i=_attr.begin(); i!=_attr.end(); ++i) { os<<" "<first<<"="<second<<'\n'; } os<<" ;;\n"; name+="/"; } for(map::const_iterator i=_child.begin(); i!=_child.end(); ++i) { i->second->output(os,name+i->first); } } inline bool PersistNode::readnode(istream& is) { PersistNode* node =NULL; string tok; while(true) { if(!readtoken(is,tok) || tok==";;") return bool(node); else if(node) node->addattr(tok); else if(tok[0]=='-') delnode(tok.substr(1)); else node=addnode(tok); } } inline bool PersistNode::readtoken(istream& is, string& tok) { while(is) { is>>tok; if(tok.empty()) break; if(tok[0]!='#') return true; is.ignore(INT_MAX,'\n'); } return false; } PersistNode* PersistNode::addnode(const string& name) { string::size_type pos =name.find('/'); // get reference to Next node in the path. PersistNode*& newchild =_child[name.substr(0,pos)]; if(pos==string::npos) // leaf: add new leaf. { if(newchild) delete newchild; // overwrite old leaf (and its children) newchild=new PersistNode(); return newchild; } else // branch: just add the branch if it's missing, and then recurse. { if(!newchild) newchild=new PersistNode(); return newchild->addnode(name.substr(pos+1)); } } void PersistNode::delnode(const string& name) { string::size_type pos =name.find('/'); // get reference to Next node in the path. map::iterator childpos =_child.find(name.substr(0,pos)); if(childpos!=_child.end()) { if(pos==string::npos) // leaf: delete leaf. { delete childpos->second; _child.erase(childpos); } else // branch: recurse { childpos->second->delnode(name.substr(pos+1)); } } } void PersistNode::addattr(const string& keyvalue) { string::size_type pos =keyvalue.find('='); _attr[keyvalue.substr(0,pos)]=(pos==string::npos?"":keyvalue.substr(pos+1)); } void PersistNode::addattr(const string& key, long value) { char buf[64]; sprintf(buf,"%i",value); _attr[key]=string(buf); } bool PersistNode::hasAttr(const string& key) const { return( _attr.find(key)!=_attr.end() ); } string PersistNode::attrString(const string& key, const string& fallback) const { map::const_iterator pos=_attr.find(key); if(pos==_attr.end()) return fallback; else return pos->second; } long PersistNode::attrLong(const string& key, long fallback) const { map::const_iterator pos=_attr.find(key); if(pos==_attr.end()) return fallback; else return atol(pos->second.c_str()); } PersistNode* PersistNode::child(const string& key) const { map::const_iterator pos=_child.find(key); if(pos==_child.end()) return NULL; else return pos->second; } }; // end namespace OmniEvents omniEvents-2_6_2/src/PersistNode.h0000644000076400001440000000455510227236245017341 0ustar alexusers00000000000000// Package : omniEvents // PersistNode.h Created : 2004/04/29 // Author : Alex Tingle // // Copyright (C) 2004 Alex Tingle. // // This file is part of the omniEvents application. // // omniEvents is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public // License as published by the Free Software Foundation; either // version 2.1 of the License, or (at your option) any later version. // // omniEvents is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU // Lesser General Public License for more details. // // You should have received a copy of the GNU Lesser General Public // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // #ifndef OMNIEVENTS__PERSIST_NODE_H #define OMNIEVENTS__PERSIST_NODE_H #ifdef HAVE_CONFIG_H # include "config.h" #endif #include #include #ifdef HAVE_IOSTREAM # include #else # include #endif #ifdef HAVE_STD_IOSTREAM using namespace std; #endif namespace OmniEvents { class PersistNode; class PersistNode { public: PersistNode(){} ///< Create an empty node. PersistNode(istream& is); ///< Create root node and read tree from stream. ~PersistNode(); ///< Free node and all its children. void output(ostream& os,string name) const; public: // Construction inline bool readnode(istream& is); inline bool readtoken(istream& is, string& tok); PersistNode* addnode(const string& name); void delnode(const string& name); void addattr(const string& keyvalue); void addattr(const string& key,long value); public: // Accessors bool hasAttr(const string& key) const; string attrString(const string& key, const string& fallback="") const; long attrLong( const string& key, long fallback=0 ) const; PersistNode* child(const string& key) const; public: // Members map _child; map _attr; friend class omniEventsLog; }; }; // end namespace OmniEvents #endif // OMNIEVENTS__PERSIST_NODE_H omniEvents-2_6_2/src/ProxyManager.cc0000644000076400001440000001355710240451210017640 0ustar alexusers00000000000000// Package : omniEvents // ProxyManager.cc Created : 2003/12/04 // Author : Alex Tingle // // Copyright (C) 2003-2005 Alex Tingle. // // This file is part of the omniEvents application. // // omniEvents is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public // License as published by the Free Software Foundation; either // version 2.1 of the License, or (at your option) any later version. // // omniEvents is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU // Lesser General Public License for more details. // // You should have received a copy of the GNU Lesser General Public // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // #include "ProxyManager.h" #include "PersistNode.h" #include "Orb.h" #include "omniEventsLog.h" #include #include #include #include namespace OmniEvents { // // ProxyManager // void ProxyManager::etherealize( const PortableServer::ObjectId& oid, PortableServer::POA_ptr adapter, PortableServer::Servant serv, CORBA::Boolean cleanup_in_progress, CORBA::Boolean remaining_activations ) { auto_ptr narrowed( dynamic_cast(serv) ); assert(narrowed.get()!=NULL); set::iterator pos =_servants.find(narrowed.get()); if(pos!=_servants.end()) _servants.erase(pos); else DB(1,"\t\teh? - POA attempted to etherealize unknown servant."); // memory freed when narrowed goes out of scope. } void ProxyManager::reincarnate(const PersistNode& node) { // Reincarnate all connections from node's children. for(map::const_iterator i=node._child.begin(); i!=node._child.end(); ++i) { assert(i->second!=NULL); PortableServer::Servant serv = this->incarnate(PortableServer::ObjectId(),_managedPoa); Proxy* proxy =dynamic_cast(serv); assert(proxy!=NULL); try { proxy->reincarnate(i->first,*(i->second)); } catch(CORBA::BAD_PARAM& ex) { // This will happen when IOR fails to narrow. DB(5,"Failed to reincarnate proxy: "<first.c_str()); _servants.erase(proxy); delete proxy; } } } void ProxyManager::output(ostream& os) { for(set::iterator i =_servants.begin(); i!=_servants.end(); ++i) { (*i)->output(os); } } ProxyManager::ProxyManager(PortableServer::POA_ptr p) : Servant(p), _servants(), _managedPoa(PortableServer::POA::_nil()) {} void ProxyManager::activate(const char* name) { using namespace PortableServer; // POLICIES: // Lifespan =PERSISTENT // we can persist // Assignment =USER_ID // write our own oid // Uniqueness =[default] UNIQUE_ID // one servant per object // ImplicitActivation=NO_IMPLICIT_ACTIVATION // disable auto activation // RequestProcessing =USE_SERVANT_MANAGER // ServantRetention =[default] RETAIN // Thread =SINGLE_THREAD_MODEL // keep it simple CORBA::PolicyList policies; policies.length(5); policies[0]=_poa->create_lifespan_policy(PERSISTENT); policies[1]=_poa->create_id_assignment_policy(USER_ID); policies[2]=_poa->create_implicit_activation_policy(NO_IMPLICIT_ACTIVATION); policies[3]=_poa->create_request_processing_policy(USE_SERVANT_MANAGER); policies[4]=_poa->create_thread_policy(SINGLE_THREAD_MODEL); try { // Create a POA for this proxy type in this channel. CORBA::String_var parentName =_poa->the_name(); string poaName =string(parentName.in())+"."+name; POAManager_var parentManager =_poa->the_POAManager(); _managedPoa=_poa->create_POA(poaName.c_str(),parentManager.in(),policies); } catch(POA::AdapterAlreadyExists& ex) // create_POA { DB(0,"ProxyManager::ProxyManager() - POA::AdapterAlreadyExists") } catch(POA::InvalidPolicy& ex) // create_POA { DB(0,"ProxyManager::ProxyManager() - POA::InvalidPolicy: "<destroy(); string oidStr =string(name)+"Manager"; activateObjectWithId(oidStr.c_str()); PortableServer::ServantManager_var manager(_this()); _managedPoa->set_servant_manager(manager); } ProxyManager::~ProxyManager() { // pass } // // Proxy // Proxy::~Proxy() { if(!CORBA::is_nil(_req)) { Orb::inst().deferredRequest(_req._retn()); _req=CORBA::Request::_nil(); } } Proxy::Proxy(PortableServer::POA_ptr poa) : Servant(poa), _req(CORBA::Request::_nil()) { // pass } void Proxy::keyOutput(ostream& os, const char* name) { PortableServer::POA_var parentPoa=_poa->the_parent(); CORBA::String_var channelName=parentPoa->the_name(); PortableServer::ObjectId_var oid=_poa->servant_to_id(this); CORBA::String_var oidStr =PortableServer::ObjectId_to_string(oid.in()); os<<"ecf/"<object_to_string(target); os<<" IOR="< #include #ifdef HAVE_IOSTREAM # include #else # include #endif #include "Servant.h" #ifdef HAVE_STD_IOSTREAM using namespace std; #endif namespace OmniEvents { class Proxy; class PersistNode; /** Base class for ServantActivator classes that manage Proxy servants. Each * ProxyManager manages its own POA (_managedPoa), with policies: PERSISTENT, * USER_ID, NO_IMPLICIT_ACTIVATION, USE_SERVANT_MANAGER, SINGLE_THREAD_MODEL. * This POA is only used to contain objects of a single Proxy type. * Specific subclasses must implement incarnate() & createObject() methods. */ class ProxyManager : public virtual POA_PortableServer::ServantActivator, public Servant { public: // CORBA interface methods /** Implements etherealize() method from ServantActivator interface. */ void etherealize( const PortableServer::ObjectId& oid, PortableServer::POA_ptr adapter, PortableServer::Servant serv, CORBA::Boolean cleanup_in_progress, CORBA::Boolean remaining_activations ); public: /** Re-create servants from information saved in the log file. */ void reincarnate(const PersistNode& node); /** Save this object's state to a stream. */ void output(ostream& os); protected: /** @param poa parent POA. */ ProxyManager(PortableServer::POA_ptr poa); virtual ~ProxyManager(); /** Creates the Proxy-type's POA, and registers this object as its * ServantManager. * * @param name e.g. "ProxyPushSupplier". */ void activate(const char* name); /** The set of all active Proxies in this object's _managedPoa. */ set _servants; /** The POA owned & managed by this object. Don't confuse it with _poa * (inherited from class Servant) which points to the POA in which THIS * object resides. */ PortableServer::POA_var _managedPoa; }; /** Base class for three of the four Proxy servants. Proxy servants are stored * in a ProxyManager. There is one Proxy servant for each CORBA proxy object. * (Compare with ProxyPushConsumer_i, where all objects are implemented by a * single servant.) */ class Proxy : public virtual PortableServer::ServantBase, public Servant { public: virtual ~Proxy(); /** Re-create a servant from information saved in the log file. */ virtual void reincarnate(const string& oid, const PersistNode& node)=0; /** Save this object's state to a stream. */ virtual void output(ostream &os)=0; protected: Proxy(PortableServer::POA_ptr poa); /** Helper method for constructing persistency output. */ void keyOutput(ostream& os, const char* name); /** Helper method for constructing persistency output. */ void eraseKey(const char* name); /** Helper method for constructing persistency output. */ void basicOutput( ostream& os, const char* name, CORBA::Object_ptr target=CORBA::Object::_nil(), const char* extraAttributes=NULL ); CORBA::Request_var _req; private: Proxy(const Proxy&); ///< NO IMPLEMENTATION }; }; // end namespace OmniEvents #endif // OMNIEVENTS__PROXYMANAGER_H omniEvents-2_6_2/src/ProxyPullConsumer.cc0000644000076400001440000001735710242456124020733 0ustar alexusers00000000000000// Package : omniEvents // ProxyPullConsumer.cc Created : 2003/12/04 // Author : Alex Tingle // // Copyright (C) 2003-2005 Alex Tingle. // // This file is part of the omniEvents application. // // omniEvents is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public // License as published by the Free Software Foundation; either // version 2.1 of the License, or (at your option) any later version. // // omniEvents is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU // Lesser General Public License for more details. // // You should have received a copy of the GNU Lesser General Public // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // #include "ProxyPullConsumer.h" #include "Orb.h" #include "omniEventsLog.h" #include "PersistNode.h" #include namespace OmniEvents { // // ProxyPullConsumerManager // PortableServer::Servant ProxyPullConsumerManager::incarnate( const PortableServer::ObjectId& oid, PortableServer::POA_ptr poa ) { DB(20,"ProxyPullConsumerManager::incarnate()") ProxyPullConsumer_i* result =new ProxyPullConsumer_i(_managedPoa,_queue); _servants.insert(result); return result; } ProxyPullConsumerManager::ProxyPullConsumerManager( PortableServer::POA_ptr parentPoa, list& q ) : ProxyManager(parentPoa), _queue(q) { ProxyManager::activate("ProxyPullConsumer"); } ProxyPullConsumerManager::~ProxyPullConsumerManager() { DB(20,"~ProxyPullConsumerManager()") } OMNIEVENTS__DEBUG_REF_COUNTS__DEFN(ProxyPullConsumerManager) CosEventChannelAdmin::ProxyPullConsumer_ptr ProxyPullConsumerManager::createObject() { return createNarrowedReference( _managedPoa.in(), CosEventChannelAdmin::_tc_ProxyPullConsumer->id() ); } void ProxyPullConsumerManager::collect() { // Collect events from each servant in turn. for(set::iterator i =_servants.begin(); i!=_servants.end(); ++i) { ProxyPullConsumer_i* proxy=dynamic_cast(*i); proxy->collect(); } } void ProxyPullConsumerManager::triggerRequest() { // Trigger each servant in turn. for(set::iterator i =_servants.begin(); i!=_servants.end(); ++i) { ProxyPullConsumer_i* proxy=dynamic_cast(*i); proxy->triggerRequest(); } } void ProxyPullConsumerManager::disconnect() { for(set::iterator i =_servants.begin(); i!=_servants.end(); ++i) { Proxy* p =*i; // Sun's CC requires this temporary. ProxyPullConsumer_i* ppc =static_cast(p); // We are in the EventChannel's thread. // Make sure all calls go though the ProxyPullConsumer POA. CosEventChannelAdmin::ProxyPullConsumer_var ppcv =ppc->_this(); ppcv->disconnect_pull_consumer(); } } // // ProxyPullConsumer_i // // CORBA interface methods void ProxyPullConsumer_i::connect_pull_supplier( CosEventComm::PullSupplier_ptr pullSupplier ) { if(CORBA::is_nil(pullSupplier)) throw CORBA::BAD_PARAM(); if(!CORBA::is_nil(_target) || !CORBA::is_nil(_req)) throw CosEventChannelAdmin::AlreadyConnected(); _target=CosEventComm::PullSupplier::_duplicate(pullSupplier); if(omniEventsLog::exists()) { WriteLock log; output(log.os); } } void ProxyPullConsumer_i::disconnect_pull_consumer() { DB(5,"ProxyPullConsumer_i::disconnect_pull_consumer()"); eraseKey("SupplierAdmin/ProxyPullConsumer"); deactivateObject(); if(CORBA::is_nil(_target)) { throw CORBA::OBJECT_NOT_EXIST( IFELSE_OMNIORB4(omni::OBJECT_NOT_EXIST_NoMatch,0), CORBA::COMPLETED_NO ); } else { CORBA::Request_var req=_target->_request("disconnect_pull_supplier"); _target=CosEventComm::PullSupplier::_nil(); req->send_deferred(); Orb::inst().deferredRequest(req._retn()); } } // ProxyPullConsumer_i::ProxyPullConsumer_i( PortableServer::POA_ptr poa, list& q ) : Proxy(poa), _target(CosEventComm::PullSupplier::_nil()), _queue(q), _mode(Pull), // Prefer 'pull' method calls. _exceptionCount(0) {} ProxyPullConsumer_i::~ProxyPullConsumer_i() { DB(20,"~ProxyPullConsumer_i()") } void ProxyPullConsumer_i::collect() { if(!CORBA::is_nil(_req) && _req->poll_response()) ////// RESPONSE HAS ARRIVED { const char* opname =_req->operation(); assert(opname); CORBA::Environment_ptr env =_req->env(); // No need to release environment. if(!CORBA::is_nil(env) && env->exception()) //////////// EXCEPTION OCCURRED { CORBA::Exception* ex =env->exception(); // No need to free exception. DB(10,"ProxyPullConsumer got exception" IF_OMNIORB4(<<": "<_name())<<", op:"<=4) { Orb::inst().reportObjectFailure(HERE,_target.in(),ex); // Try to notify the Supplier that the connection is closing. CORBA::Request_var req=_target->_request("disconnect_pull_supplier"); req->send_deferred(); Orb::inst().deferredRequest(req._retn()); _target=CosEventComm::PullSupplier::_nil(); // disconnected eraseKey("SupplierAdmin/ProxyPullConsumer"); deactivateObject(); } } else //////////////////////////////////////////////// METHOD CALL RETURNED { // Do we have an event? bool hasEvent=false; if(0==strcmp("pull",opname)) { hasEvent=true; } else if(0==strcmp("try_pull",opname)) { CORBA::NVList_ptr args=_req->arguments(); // No need to release args. if(args->count()==1) { CORBA::NamedValue_var hasEventArg=args->item(0); if(0==strcmp(hasEventArg->name(),"has_event")) { CORBA::Any* a =hasEventArg->value(); CORBA::Boolean b; CORBA::Any::to_boolean tb(b); //MS VC++6 is on drugs! hasEvent=(((*a)>>=tb) && b); } } } // Pick up an event, if we have one. if(hasEvent) { CORBA::Any* event =new CORBA::Any(); _req->return_value() >>= (*event); _queue.push_back(event); } // Reset the exception count. _exceptionCount=0; } _req=CORBA::Request::_nil(); } } // ProxyPullConsumer_i::end collect() void ProxyPullConsumer_i::triggerRequest() { if(CORBA::is_nil(_req) && !CORBA::is_nil(_target)) { switch(_mode) { case Pull: _req=_target->_request("pull"); break; case TryPull: _req=_target->_request("try_pull"); _req->add_out_arg("has_event")<<=CORBA::Any::from_boolean(1); break; default: assert(0); } _req->set_return_type(CORBA::_tc_any); _req->send_deferred(); } } void ProxyPullConsumer_i::reincarnate( const string& oid, const PersistNode& node ) { CosEventComm::PullSupplier_var pullSupplier = string_to_(node.attrString("IOR").c_str()); // Do not activate until we know that we have read a valid target. activateObjectWithId(oid.c_str()); connect_pull_supplier(pullSupplier.in()); } void ProxyPullConsumer_i::output(ostream& os) { basicOutput(os,"SupplierAdmin/ProxyPullConsumer",_target.in()); } }; // end namespace OmniEvents omniEvents-2_6_2/src/ProxyPullConsumer.h0000644000076400001440000001012510240451211020545 0ustar alexusers00000000000000// Package : omniEvents // ProxyPullCOnsumer.h Created : 2003/12/04 // Author : Alex Tingle // // Copyright (C) 2003-2005 Alex Tingle. // // This file is part of the omniEvents application. // // omniEvents is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public // License as published by the Free Software Foundation; either // version 2.1 of the License, or (at your option) any later version. // // omniEvents is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU // Lesser General Public License for more details. // // You should have received a copy of the GNU Lesser General Public // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // #ifndef OMNIEVENTS__PROXYPULLCONSUMER_H #define OMNIEVENTS__PROXYPULLCONSUMER_H #ifdef HAVE_CONFIG_H # include "config.h" #endif #include #ifdef HAVE_IOSTREAM # include #else # include #endif #include "ProxyManager.h" #include "CosEventChannelAdmin.hh" #ifdef HAVE_STD_IOSTREAM using namespace std; #endif namespace OmniEvents { class ProxyPullConsumerManager : public ProxyManager, public PortableServer::RefCountServantBase { public: // CORBA interface methods PortableServer::Servant incarnate( const PortableServer::ObjectId& oid, PortableServer::POA_ptr poa ); public: ProxyPullConsumerManager( PortableServer::POA_ptr parentPoa, list& q ); ~ProxyPullConsumerManager(); OMNIEVENTS__DEBUG_REF_COUNTS__DECL CosEventChannelAdmin::ProxyPullConsumer_ptr createObject(); /** Collects events that have arrived at connected proxies. For each proxy: * * - If an exception has arrived, increment the exception count, and switch * to the other operation (pull/try_pull). * - If the exception count is 4+, then deactivate this object. * - If a method has returned, then decide whether we have an event (hasEvent). * If so, the read the event and push it onto the queue. * * Should be called BEFORE triggerRequest(). */ void collect(); /** For each connected proxy, if there is no request in progress, send a new * request to the current operation (pull or try_pull). * Should be called AFTER collect(). */ void triggerRequest(); /** Send disconnect_pull_supplier() to all connected PullSuppliers. */ void disconnect(); private: list& _queue; }; /** Implementation of the ProxyPullConsumer interface. Tries to get messages by * using pull() then try_pull() method calls, but prefers pull(). Switches * between pull() & try_pull() if it gets an exception. Only gives up when both * methods have returned two consecutive exceptions. * * Note, our own implementation of ProxyPullSupplier::pull() is very basic. */ class ProxyPullConsumer_i : public virtual POA_CosEventChannelAdmin::ProxyPullConsumer, public Proxy { public: // CORBA interface methods void connect_pull_supplier(CosEventComm::PullSupplier_ptr pullSupplier); void disconnect_pull_consumer(); public: ProxyPullConsumer_i(PortableServer::POA_ptr poa, list& q); ~ProxyPullConsumer_i(); /** Collects responses since the last trigger. */ void collect(); /** When _req is NIL, sends out a new pull() or try_pull() call. */ void triggerRequest(); void reincarnate(const string& oid, const PersistNode& node); void output(ostream& os); private: CosEventComm::PullSupplier_var _target; list& _queue; /** This proxy can call out in either pull() or try_pull() mode. */ enum Mode { Pull=0, TryPull=1 }; Mode _mode; /** Only when two consecutive exceptions have been received from each mode, * do we consider the connection dead. */ int _exceptionCount; }; }; // end namespace OmniEvents #endif // OMNIEVENTS__PROXYPULLCONSUMER_H omniEvents-2_6_2/src/ProxyPullSupplier.cc0000644000076400001440000001343210242456641020735 0ustar alexusers00000000000000// Package : omniEvents // ProxyPullSupplier.cc Created : 2003/12/04 // Author : Alex Tingle // // Copyright (C) 2003-2005 Alex Tingle. // // This file is part of the omniEvents application. // // omniEvents is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public // License as published by the Free Software Foundation; either // version 2.1 of the License, or (at your option) any later version. // // omniEvents is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU // Lesser General Public License for more details. // // You should have received a copy of the GNU Lesser General Public // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // #include "ProxyPullSupplier.h" #include "EventChannel.h" #include "Orb.h" #include "omniEventsLog.h" #include "PersistNode.h" #include namespace OmniEvents { // // ProxyPullSupplierManager // PortableServer::Servant ProxyPullSupplierManager::incarnate( const PortableServer::ObjectId& oid, PortableServer::POA_ptr poa ) { // Evict the oldest proxy servant, if we have reached the maximum number. if(_servants.size()>=_channel.maxNumProxies()) { ProxyPullSupplier_i* oldest =NULL; unsigned long age =0; for(set::iterator i=_servants.begin(); i!=_servants.end(); ++i) if(!oldest || dynamic_cast(*i)->timestamp()(*i); age=oldest->timestamp(); } DB(5,"Evicting oldest ProxyPullSupplier to make space for a new one") try{ oldest->disconnect_pull_supplier(); }catch(CORBA::OBJECT_NOT_EXIST&){} } // Make a new servant. ProxyPullSupplier_i* result =new ProxyPullSupplier_i(_managedPoa,_queue); _servants.insert(result); return result; } ProxyPullSupplierManager::ProxyPullSupplierManager( const EventChannel_i& channel, PortableServer::POA_ptr parentPoa, EventQueue& q ) : ProxyManager(parentPoa), _queue(q), _channel(channel) { ProxyManager::activate("ProxyPullSupplier"); } ProxyPullSupplierManager::~ProxyPullSupplierManager() { DB(20,"~ProxyPullSupplierManager()") } OMNIEVENTS__DEBUG_REF_COUNTS__DEFN(ProxyPullSupplierManager) CosEventChannelAdmin::ProxyPullSupplier_ptr ProxyPullSupplierManager::createObject() { return createNarrowedReference( _managedPoa.in(), CosEventChannelAdmin::_tc_ProxyPullSupplier->id() ); } void ProxyPullSupplierManager::disconnect() { for(set::iterator i =_servants.begin(); i!=_servants.end(); ++i) { ProxyPullSupplier_i* pps =dynamic_cast(*i); // We are in the EventChannel's thread. // Make sure all calls go though the ProxyPullSupplier POA. CosEventChannelAdmin::ProxyPullSupplier_var ppsv =pps->_this(); ppsv->disconnect_pull_supplier(); } } // // ProxyPullSupplier_i // // CORBA interface methods void ProxyPullSupplier_i::connect_pull_consumer( CosEventComm::PullConsumer_ptr pullConsumer ) { if(_connected || !CORBA::is_nil(_target) || !CORBA::is_nil(_req)) throw CosEventChannelAdmin::AlreadyConnected(); touch(); _connected=true; if(!CORBA::is_nil(pullConsumer)) _target=CosEventComm::PullConsumer::_duplicate(pullConsumer); if(omniEventsLog::exists()) { WriteLock log; output(log.os); } } void ProxyPullSupplier_i::disconnect_pull_supplier() { DB(5,"ProxyPullSupplier_i::disconnect_pull_supplier()"); touch(); eraseKey("ConsumerAdmin/ProxyPullSupplier"); deactivateObject(); if(!_connected) { throw CORBA::OBJECT_NOT_EXIST( IFELSE_OMNIORB4(omni::OBJECT_NOT_EXIST_NoMatch,0), CORBA::COMPLETED_NO ); } else if(!CORBA::is_nil(_target)) { CORBA::Request_var req=_target->_request("disconnect_pull_consumer"); _target=CosEventComm::PullConsumer::_nil(); req->send_deferred(); Orb::inst().deferredRequest(req._retn()); } } CORBA::Any* ProxyPullSupplier_i::pull() { if(!_connected) throw CosEventComm::Disconnected(); touch(); if(moreEvents()) return new CORBA::Any(*nextEvent()); else throw CORBA::TRANSIENT( IFELSE_OMNIORB4(omni::TRANSIENT_CallTimedout,0), CORBA::COMPLETED_NO ); } CORBA::Any* ProxyPullSupplier_i::try_pull(CORBA::Boolean& has_event) { if(!_connected) throw CosEventComm::Disconnected(); touch(); if(moreEvents()) { has_event=1; return new CORBA::Any(*nextEvent()); } else { has_event=0; return new CORBA::Any(); } } // ProxyPullSupplier_i::ProxyPullSupplier_i( PortableServer::POA_ptr poa, EventQueue& q ) : Proxy(poa), EventQueue::Reader(q), _target(CosEventComm::PullConsumer::_nil()), _connected(false), _timestamp(0) { touch(); } ProxyPullSupplier_i::~ProxyPullSupplier_i() { DB(20,"~ProxyPullSupplier_i()") } void ProxyPullSupplier_i::reincarnate( const string& oid, const PersistNode& node ) { CosEventComm::PullConsumer_var pullConsumer = string_to_(node.attrString("IOR").c_str()); // Do not activate until we know that we have read a valid target. activateObjectWithId(oid.c_str()); connect_pull_consumer(pullConsumer.in()); } void ProxyPullSupplier_i::output(ostream& os) { basicOutput(os,"ConsumerAdmin/ProxyPullSupplier",_target.in()); } inline void ProxyPullSupplier_i::touch() { unsigned long nsec; // dummy omni_thread::get_time(&_timestamp,&nsec); } }; // end namespace OmniEvents omniEvents-2_6_2/src/ProxyPullSupplier.h0000644000076400001440000000703010240451211020556 0ustar alexusers00000000000000// Package : omniEvents // ProxyPullSupplier.h Created : 2003/12/04 // Author : Alex Tingle // // Copyright (C) 2003-2005 Alex Tingle. // // This file is part of the omniEvents application. // // omniEvents is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public // License as published by the Free Software Foundation; either // version 2.1 of the License, or (at your option) any later version. // // omniEvents is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU // Lesser General Public License for more details. // // You should have received a copy of the GNU Lesser General Public // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // #ifndef OMNIEVENTS__PROXYPULLSUPPLIER_H #define OMNIEVENTS__PROXYPULLSUPPLIER_H #ifdef HAVE_CONFIG_H # include "config.h" #endif #ifdef HAVE_IOSTREAM # include #else # include #endif #include "ProxyManager.h" #include "EventQueue.h" #include "CosEventChannelAdmin.hh" #ifdef HAVE_STD_IOSTREAM using namespace std; #endif namespace OmniEvents { class EventChannel_i; class ProxyPullSupplierManager : public ProxyManager, public PortableServer::RefCountServantBase { public: // CORBA interface methods PortableServer::Servant incarnate( const PortableServer::ObjectId& oid, PortableServer::POA_ptr poa ); public: ProxyPullSupplierManager( const EventChannel_i& channel, PortableServer::POA_ptr parentPoa, EventQueue& q ); ~ProxyPullSupplierManager(); OMNIEVENTS__DEBUG_REF_COUNTS__DECL CosEventChannelAdmin::ProxyPullSupplier_ptr createObject(); /** Send disconnect_pull_consumer() to all connected PullConsumers. */ void disconnect(); private: const EventChannel_i& _channel; EventQueue& _queue; ///< Reference to queue shared with ProxyPushSuppliers. int _maxNumProxies; ///< Upper limit on number of proxies. }; /** Servant for ProxyPullSupplier interface. Does not properly implement the * blocking pull() method - to do so would need us to create and park a thread * for each waiting pull() method. Instead pull() throws TRANSIENT if the * event queue is empty. */ class ProxyPullSupplier_i : public virtual POA_CosEventChannelAdmin::ProxyPullSupplier, public Proxy, public EventQueue::Reader { public: // CORBA interface methods void connect_pull_consumer(CosEventComm::PullConsumer_ptr pullConsumer); void disconnect_pull_supplier(); CORBA::Any* pull(); CORBA::Any* try_pull(CORBA::Boolean& has_event); public: ProxyPullSupplier_i(PortableServer::POA_ptr poa, EventQueue& q); ~ProxyPullSupplier_i(); void reincarnate(const string& oid, const PersistNode& node); void output(ostream& os); inline unsigned long timestamp() const {return _timestamp;} private: CosEventComm::PullConsumer_var _target; /** Can't use _target to keep track of whether this object is connected, * because it is legal to connect with a nil target. Use this bool instead. */ bool _connected; /** Keep track of when this proxy was last contacted. */ unsigned long _timestamp; /** Update the _timestamp to the current moment. */ inline void touch(); }; }; // end namespace OmniEvents #endif // OMNIEVENTS__PROXYPULLSUPPLIER_H omniEvents-2_6_2/src/ProxyPushConsumer.cc0000644000076400001440000002731310242426013020721 0ustar alexusers00000000000000// Package : omniEvents // ProxyPushConsumer.cc Created : 2003/12/04 // Author : Alex Tingle // // Copyright (C) 2003,2005 Alex Tingle. // // This file is part of the omniEvents application. // // omniEvents is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public // License as published by the Free Software Foundation; either // version 2.1 of the License, or (at your option) any later version. // // omniEvents is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU // Lesser General Public License for more details. // // You should have received a copy of the GNU Lesser General Public // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // #include "ProxyPushConsumer.h" #include "ConsumerAdmin.h" #include "Orb.h" #include "omniEventsLog.h" #include "PersistNode.h" #include namespace OmniEvents { void ProxyPushConsumer_i::connect_push_supplier( CosEventComm::PushSupplier_ptr pushSupplier) { // pushSupplier is permitted to be nil. if(CORBA::is_nil(pushSupplier)) return; string oidstr =currentObjectId(); Connections_t::iterator pos =_connections.find(oidstr); if(pos!=_connections.end()) throw CosEventChannelAdmin::AlreadyConnected(); Connection* newConnection = new Connection( _channelName.in(), oidstr, CosEventComm::PushSupplier::_duplicate(pushSupplier) ); _connections.insert( Connections_t::value_type(oidstr,newConnection) ); // Test to see whether pushSupplier is a ProxyPushSupplier. // If so, then we will aggressively try to reconnect, when we are reincarnated CORBA::Request_var req =pushSupplier->_request("_is_a"); req->add_in_arg() <<= CosEventChannelAdmin::_tc_ProxyPushSupplier->id(); req->set_return_type(CORBA::_tc_boolean); req->send_deferred(); Orb::inst().deferredRequest(req._retn(),newConnection); // Register callback if(omniEventsLog::exists()) { WriteLock log; newConnection->output(log.os); } } void ProxyPushConsumer_i::disconnect_push_consumer() { #ifdef HAVE_OMNIORB4 DB(5,"ProxyPushConsumer_i::disconnect_push_consumer()") string oidstr =currentObjectId(); Connections_t::iterator pos =_connections.find(oidstr); if(pos!=_connections.end()) { CORBA::Request_var req = pos->second->_target->_request("disconnect_push_supplier"); pos->second->_remove_ref(); _connections.erase(pos); // The following line could result in a reentrant callback, if this call was // not made through the POA => must erase the connection BEFORE this point. req->send_deferred(); Orb::inst().deferredRequest(req._retn()); if(omniEventsLog::exists()) { // Erase this connection from the log file. WriteLock log; log.os<<"-ecf/"<<_channelName.in(); log.os<<"/SupplierAdmin/ProxyPushConsumer/"<& q, ConsumerAdmin_i& consumerAdmin ) : Servant(PortableServer::POA::_nil()), _connections(), _channelName(p->the_name()), _consumerAdmin(consumerAdmin), _queue(q), _useLocalQueue(false) { _consumerAdmin._add_ref(); using namespace PortableServer; // POLICIES: // Lifespan =PERSISTENT // we can persist // Assignment =USER_ID // write our own oid // Uniqueness =MULTIPLE_ID // only one servant // ImplicitActivation=NO_IMPLICIT_ACTIVATION // disable auto activation // RequestProcessing =USE_DEFAULT_SERVANT // only one servant // ServantRetention =NON_RETAIN // stateless POA // Thread =SINGLE_THREAD_MODEL // keep it simple CORBA::PolicyList policies; policies.length(7); policies[0]=p->create_lifespan_policy(PERSISTENT); policies[1]=p->create_id_assignment_policy(USER_ID); policies[2]=p->create_id_uniqueness_policy(MULTIPLE_ID); policies[3]=p->create_implicit_activation_policy(NO_IMPLICIT_ACTIVATION); policies[4]=p->create_request_processing_policy(USE_DEFAULT_SERVANT); policies[5]=p->create_servant_retention_policy(NON_RETAIN); policies[6]=p->create_thread_policy(SINGLE_THREAD_MODEL); try { // Create a POA for this proxy type in this channel. string poaName =string(_channelName.in())+".ProxyPushConsumer"; POAManager_var parentManager =p->the_POAManager(); _poa=p->create_POA(poaName.c_str(),parentManager.in(),policies); } catch(POA::AdapterAlreadyExists&) // create_POA { DB(0,"ProxyPushConsumer_i::ProxyPushConsumer_i() - " "POA::AdapterAlreadyExists") } catch(POA::InvalidPolicy& ex) // create_POA { DB(0,"ProxyPushConsumer_i::ProxyPushConsumer_i() - " "POA::InvalidPolicy: "<destroy(); // This object is the POA's default servant. _poa->set_servant(this); } ProxyPushConsumer_i::~ProxyPushConsumer_i() { DB(20,"~ProxyPushConsumer_i()") for(Connections_t::iterator i =_connections.begin(); i!=_connections.end(); ++i) { i->second->_remove_ref(); } _connections.clear(); _consumerAdmin._remove_ref(); } CosEventChannelAdmin::ProxyPushConsumer_ptr ProxyPushConsumer_i::createObject() { return createNarrowedReference( _poa.in(), CosEventChannelAdmin::_tc_ProxyPushConsumer->id() ); } void ProxyPushConsumer_i::disconnect() { // Note. We are (probably) in the EventChannel's thread. Connections_t::iterator curr,next=_connections.begin(); while(next!=_connections.end()) { curr=next++; CORBA::Request_var req = curr->second->_target->_request("disconnect_push_supplier"); curr->second->_remove_ref(); _connections.erase(curr); // The following line could result in a reentrant callback // => must erase the connection BEFORE this point. req->send_deferred(); Orb::inst().deferredRequest(req._retn()); } } void ProxyPushConsumer_i::reincarnate(const PersistNode& node) { // Reincarnate all connections from node's children. for(map::const_iterator i=node._child.begin(); i!=node._child.end(); ++i) { const char* oidstr =i->first.c_str(); string ior( i->second->attrString("IOR") ); bool isProxy( i->second->attrLong("proxy") ); assert(_connections.find(oidstr)==_connections.end()); try { using namespace CosEventComm; using namespace CosEventChannelAdmin; PushSupplier_var supp =string_to_(ior.c_str()); _connections.insert(Connections_t::value_type( oidstr, new Connection(_channelName.in(),oidstr,supp._retn(),isProxy) )); DB(5,"Reincarnated ProxyPushConsumer: "<(ior.c_str()); PortableServer::ObjectId_var objectId = PortableServer::string_to_ObjectId(oidstr); CORBA::Object_var obj = _poa->create_reference_with_id( objectId.in(), CosEventChannelAdmin::_tc_ProxyPushConsumer->id() ); PushConsumer_var thisCons =CosEventComm::PushConsumer::_narrow(obj); proxySupp->connect_push_consumer(thisCons.in()); DB(7,"Reconnected ProxyPushConsumer: "<second->output(os); } } string ProxyPushConsumer_i::currentObjectId() const { #ifdef HAVE_OMNIORB4 try { using namespace PortableServer; ObjectId_var oid =Orb::inst()._POACurrent->get_object_id(); CORBA::String_var oidStr =ObjectId_to_string(oid.in()); return string(oidStr.in()); } catch(PortableServer::Current::NoContext&) // get_object_id() { DB(0,"No context!!") } catch(CORBA::BAD_PARAM&) // ObjectId_to_string() { // Should never get here in omniORB, because ObjectID is a char*. assert(0); } return "ERROR"; #else throw CORBA::NO_IMPLEMENT(); #endif } // // ProxyPushConsumer_i::Connection // #if OMNIEVENTS__DEBUG_SERVANT int ProxyPushConsumer_i::Connection::_objectCount =0; #endif ProxyPushConsumer_i::Connection::Connection( const char* channelName, const string& oidstr, CosEventComm::PushSupplier_ptr pushSupplier, bool isProxy ):Callback(), _channelName(channelName), _oidstr(oidstr), _target(pushSupplier), _targetIsProxy(isProxy) { #if OMNIEVENTS__DEBUG_SERVANT ++_objectCount; DB(21,"ProxyPushConsumer_i::Connection::Connection() count="<<_objectCount) #endif } ProxyPushConsumer_i::Connection::~Connection() { #if OMNIEVENTS__DEBUG_SERVANT --_objectCount; DB(20,"ProxyPushConsumer_i::Connection::~Connection() count="<<_objectCount) #else DB(20,"ProxyPushConsumer_i::Connection::~Connection()") #endif } OMNIEVENTS__DEBUG_REF_COUNTS__DEFN(ProxyPushConsumer_i::Connection) void ProxyPushConsumer_i::Connection::callback(CORBA::Request_ptr req) { bool save =_targetIsProxy; if(req->return_value()>>=CORBA::Any::to_boolean(_targetIsProxy)) { if(_targetIsProxy && omniEventsLog::exists()) { WriteLock log; output(log.os); DB(15,"ProxyPushConsumer is federated."); } } else { DB(2,"ProxyPushConsumer got unexpected callback."); _targetIsProxy=save; // Reset it just to be sure. } } void ProxyPushConsumer_i::Connection::output(ostream& os) const { os<<"ecf/"<<_channelName; os<<"/SupplierAdmin/ProxyPushConsumer/"<<_oidstr; if(!CORBA::is_nil(_target.in())) { CORBA::String_var iorstr; iorstr = Orb::inst()._orb->object_to_string(_target.in()); os<<" IOR="< #include #include #ifdef HAVE_IOSTREAM # include #else # include #endif #include "Callback.h" #include "Servant.h" #include "CosEventChannelAdmin.hh" #ifdef HAVE_STD_IOSTREAM using namespace std; #endif namespace OmniEvents { class PersistNode; class ConsumerAdmin_i; /** Default servant for ProxyPushConsumer objects. All objects are implemented * by a single instance of this servant class. This enables us to deal * statelessly with anonymous connections (where connect_push_supplier() is * called with a NIL callback reference). */ class ProxyPushConsumer_i : public virtual POA_CosEventChannelAdmin::ProxyPushConsumer, public Servant { public: // CORBA interface methods /** If pushSupplier is provided, then it is stored in _connections. Otherwise * this method does nothing. */ void connect_push_supplier(CosEventComm::PushSupplier_ptr pushSupplier); /** We may not have a record of the supplier, so this method must accept * calls from any supplier without complaint. */ void disconnect_push_consumer(); /** Accepts events from any supplier, not just those stored in _connections.*/ void push(const CORBA::Any& event); public: ProxyPushConsumer_i( PortableServer::POA_ptr parentPoa, list& q, ConsumerAdmin_i& consumerAdmin ); virtual ~ProxyPushConsumer_i(); void trigger() {_useLocalQueue=false;} /** Constructs a new object. * This method is almost completely stateless. It makes a new * objectId, and returns it to the caller. But, only when it's * USED the first time (connect_push_consumer) do we store it in * _connections. (Note, The POA doesn't store objects either.) */ CosEventChannelAdmin::ProxyPushConsumer_ptr createObject(); /** Send disconnect_push_supplier() to all connected PushSuppliers. */ void disconnect(); /** Re-create all servants from information saved in the log file. */ void reincarnate(const PersistNode& node); /** Save this object's state to a stream. */ void output(ostream& os) const; private: string currentObjectId() const; struct Connection : public Callback { const char* _channelName; string _oidstr; CosEventComm::PushSupplier_var _target; bool _targetIsProxy; ///< TRUE if _target is a ProxyPushSupplier /** Constructor adopts 'pushSupplier' parameter. */ Connection( const char* channelName, const string& oidstr, CosEventComm::PushSupplier_ptr pushSupplier, bool isProxy=false ); virtual ~Connection(); OMNIEVENTS__DEBUG_REF_COUNTS__DECL /** Sets _targetIsProxy, if it is. */ void callback(CORBA::Request_ptr req); /** Save this object's state to a stream. */ void output(ostream& os) const; private: Connection(); ///< NO IMPLEMENTATION #if OMNIEVENTS__DEBUG_SERVANT static int _objectCount; #endif }; typedef map Connections_t; Connections_t _connections; CORBA::String_var _channelName; ConsumerAdmin_i& _consumerAdmin; list& _queue; bool _useLocalQueue; ///< Switch between RT/chunked modes. }; }; // end namespace OmniEvents #endif // OMNIEVENTS__PROXYPUSHCONSUMER_H omniEvents-2_6_2/src/ProxyPushSupplier.cc0000644000076400001440000003156710260316340020740 0ustar alexusers00000000000000// Package : omniEvents // ProxyPushSupplier.cc Created : 2003/12/04 // Author : Alex Tingle // // Copyright (C) 2003,2005 Alex Tingle. // // This file is part of the omniEvents application. // // omniEvents is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public // License as published by the Free Software Foundation; either // version 2.1 of the License, or (at your option) any later version. // // omniEvents is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU // Lesser General Public License for more details. // // You should have received a copy of the GNU Lesser General Public // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // #include "ProxyPushSupplier.h" #include "Orb.h" #include "omniEventsLog.h" #include "PersistNode.h" #include namespace OmniEvents { /** The opposite of omni_mutex_lock, unlocks the mutex upon construction and * re-locks it upon destruction. */ class omni_mutex_kcol { omni_mutex& mutex; public: omni_mutex_kcol(omni_mutex& m) : mutex(m) { mutex.unlock(); } ~omni_mutex_kcol(void) { mutex.lock(); } private: // dummy copy constructor and operator= to prevent copying omni_mutex_kcol(const omni_mutex_kcol&); omni_mutex_kcol& operator=(const omni_mutex_kcol&); }; // // ProxyPushSupplierManager // PortableServer::Servant ProxyPushSupplierManager::incarnate( const PortableServer::ObjectId& oid, PortableServer::POA_ptr poa ) { ProxyPushSupplier_i* result =new ProxyPushSupplier_i(_managedPoa,_queue); PauseThenWake p(this); _servants.insert(result); return result; } void ProxyPushSupplierManager::etherealize( const PortableServer::ObjectId& oid, PortableServer::POA_ptr adapter, PortableServer::Servant serv, CORBA::Boolean cleanup_in_progress, CORBA::Boolean remaining_activations ) { // This etherealize method needs a special implementation because // ProxyPushSupplier_i objects are freed with _remove_ref() rather than // delete. // Otherwise, this method strongly resembles ProxyManager::etherealize(). omni_mutex_lock pause(_lock); ProxyPushSupplier_i* narrowed =dynamic_cast(serv); assert(narrowed!=NULL); set::iterator pos =_servants.find(narrowed); if(pos!=_servants.end()) { _servants.erase(pos); narrowed->_remove_ref(); } else { DB(1,"\t\teh? - POA attempted to etherealize unknown servant."); } } ProxyPushSupplierManager::ProxyPushSupplierManager( PortableServer::POA_ptr parentPoa, EventQueue& q ) : ProxyManager(parentPoa), omni_thread(NULL,PRIORITY_HIGH), _queue(q), _lock(),_condition(&_lock), _refCount(1) { ProxyManager::activate("ProxyPushSupplier"); start_undetached(); } ProxyPushSupplierManager::~ProxyPushSupplierManager() { DB(20,"~ProxyPushSupplierManager()") } CosEventChannelAdmin::ProxyPushSupplier_ptr ProxyPushSupplierManager::createObject() { return createNarrowedReference( _managedPoa.in(), CosEventChannelAdmin::_tc_ProxyPushSupplier->id() ); } void ProxyPushSupplierManager::disconnect() { for(set::iterator i =_servants.begin(); i!=_servants.end(); ++i) { Proxy* p =*i; // Sun's CC requires this temporary. ProxyPushSupplier_i* pps =static_cast(p); // We are in the EventChannel's thread. // Make sure all calls go though the ProxyPushSupplier POA. CosEventChannelAdmin::ProxyPushSupplier_var ppsv =pps->_this(); ppsv->disconnect_push_supplier(); } } void* ProxyPushSupplierManager::run_undetached(void*) { // This loop repeatedly triggers all of the servants in turn. As long as // something happens each time, then we loop as fast as we can. // As soon as activity dries up, we start to wait longer and longer between // loops (up to a maximum). When there is no work to do, just block until // a new event arrives. // // Rationale: The faster we loop the more events we can deliver to each // consumer per second. However, when nothing is happening, this busy loop // just soaks up CPU and kills performance. The optimum sleep time varies // wildly from platform to platform, and also depends upon the typical ping // time to the consumers. // // This dynamic approach should deliver reasonable performance when things // are hectic, but not soak up too much CPU when not much is happening. // const unsigned long sleepTimeNanosec0 =0x8000; // 33us (doubled before use) const unsigned long maxSleepNanosec =0x800000; // 8.4ms unsigned long sleepTimeNanosec =sleepTimeNanosec0; omni_mutex_lock conditionLock(_lock); while(true) { try { if(_refCount<1) break; bool busy=false; bool waiting=false; // Trigger each servant in turn. for(set::iterator i =_servants.begin(); i!=_servants.end(); ++i) { Proxy* p =*i; // Sun's CC requires this temporary. ProxyPushSupplier_i* pps =static_cast(p); pps->trigger(busy,waiting); } if(busy) { // Something happened last time round. So we'll be optimistic and // immediately go round for another go. Briefly unlock the mutex first, // just to let the other kids get in if they need to. omni_mutex_kcol l(_lock); // 'lock' reversed! // Reset the sleep time. sleepTimeNanosec=sleepTimeNanosec0; } else if(waiting) { // Nothing happened, so we'll wait for a bit and then give it another // go. Each time we wait for twice as long, up to the maximum. if(sleepTimeNanosec_request("_is_a"); req->add_in_arg() <<= CosEventChannelAdmin::_tc_ProxyPushConsumer->id(); req->set_return_type(CORBA::_tc_boolean); req->send_deferred(); Orb::inst().deferredRequest(req._retn(),this); // Register for callback if(omniEventsLog::exists()) { WriteLock log; output(log.os); } } void ProxyPushSupplier_i::disconnect_push_supplier() { DB(5,"ProxyPushSupplier_i::disconnect_push_supplier()"); eraseKey("ConsumerAdmin/ProxyPushSupplier"); deactivateObject(); if(CORBA::is_nil(_target)) { throw CORBA::OBJECT_NOT_EXIST( IFELSE_OMNIORB4(omni::OBJECT_NOT_EXIST_NoMatch,0), CORBA::COMPLETED_NO ); } else { CORBA::Request_var req=_target->_request("disconnect_push_consumer"); _target=CosEventComm::PushConsumer::_nil(); req->send_deferred(); Orb::inst().deferredRequest(req._retn()); } } ProxyPushSupplier_i::ProxyPushSupplier_i( PortableServer::POA_ptr poa, EventQueue& q ) : Proxy(poa), EventQueue::Reader(q), _target(CosEventComm::PushConsumer::_nil()), _targetIsProxy(false) { // pass } ProxyPushSupplier_i::~ProxyPushSupplier_i() { DB(20,"~ProxyPushSupplier_i()") } OMNIEVENTS__DEBUG_REF_COUNTS__DEFN(ProxyPushSupplier_i) inline void ProxyPushSupplier_i::trigger(bool& busy, bool& waiting) { if(!CORBA::is_nil(_req) && _req->poll_response()) // response has arrived { CORBA::Environment_ptr env=_req->env(); // No need to free environment. if(!CORBA::is_nil(env) && env->exception()) { // Shut down the connection CORBA::Exception* ex =env->exception(); // No need to free exception. DB(10,"ProxyPushSupplier got exception" IF_OMNIORB4(": "<_name()) ); Orb::inst().reportObjectFailure(HERE,_target.in(),ex); _req=CORBA::Request::_nil(); // Try to notify the Consumer that the connection is closing. CORBA::Request_var req=_target->_request("disconnect_push_consumer"); req->send_deferred(); Orb::inst().deferredRequest(req._retn()); _target=CosEventComm::PushConsumer::_nil(); // disconnected. eraseKey("ConsumerAdmin/ProxyPushSupplier"); deactivateObject(); return; // No more work to do } _req=CORBA::Request::_nil(); busy=true; } if(CORBA::is_nil(_req) && !CORBA::is_nil(_target) && moreEvents()) { _req=_target->_request("push"); _req->add_in_arg() <<= *(nextEvent()); _req->send_deferred(); busy=true; } if(!CORBA::is_nil(_req)) // More work to do, if _req NOT nil. waiting=true; } void ProxyPushSupplier_i::callback(CORBA::Request_ptr req) { if(_targetIsProxy) { // There should only ever be one of these callbacks per proxy, // because each proxy should only be connected once. DB(2,"WARNING: Multiple connections to ProxyPushSupplier."); } else if(req->return_value()>>=CORBA::Any::to_boolean(_targetIsProxy)) { if(_targetIsProxy && omniEventsLog::exists()) { WriteLock log; output(log.os); DB(15,"ProxyPushSupplier is federated."); } } else { DB(2,"ProxyPushSupplier got unexpected callback."); _targetIsProxy=false; // Reset it just to be sure. } } void ProxyPushSupplier_i::reincarnate( const string& oid, const PersistNode& node ) { try { using namespace CosEventChannelAdmin; string ior( node.attrString("IOR").c_str() ); CosEventComm::PushConsumer_var pushConsumer = string_to_(ior.c_str()); // Do not activate until we know that we have read a valid target. activateObjectWithId(oid.c_str()); _remove_ref(); _target=pushConsumer._retn(); _targetIsProxy=bool(node.attrLong("proxy")); // If pushConsumer is a proxy, then try to reconnect. if(_targetIsProxy) { DB(15,"Attempting to reconnect ProxyPushSupplier: "<(ior.c_str()); CosEventComm::PushSupplier_var thisSupp =_this(); proxyCons->connect_push_supplier(thisSupp); DB(7,"Reconnected ProxyPushSupplier: "< #else # include #endif #include "Callback.h" #include "EventQueue.h" #include "ProxyManager.h" #include "CosEventChannelAdmin.hh" #ifdef HAVE_STD_IOSTREAM using namespace std; #endif namespace OmniEvents { class ProxyPushSupplierManager : public ProxyManager, public omni_thread { public: // CORBA interface methods PortableServer::Servant incarnate( const PortableServer::ObjectId& oid, PortableServer::POA_ptr poa ); /** Pauses the thread, and then calls the parent's implementation. */ void etherealize( const PortableServer::ObjectId& oid, PortableServer::POA_ptr adapter, PortableServer::Servant serv, CORBA::Boolean cleanup_in_progress, CORBA::Boolean remaining_activations ); public: ProxyPushSupplierManager(PortableServer::POA_ptr parentPoa,EventQueue& q); ~ProxyPushSupplierManager(); CosEventChannelAdmin::ProxyPushSupplier_ptr createObject(); /** Send disconnect_push_consumer() to all connected PushConsumers. */ void disconnect(); void* run_undetached(void*); void _add_ref(); void _remove_ref(); ///< Shutdown the thread when refCount reaches zero. omni_mutex _lock; omni_condition _condition; /** Helper class that locks ProxyPushSupplier upon construction, and * wakes it up on destruction. By contrast, just locking & unlocking the mutex * pauses the thread, but doesn't wake it up any faster than it would have * woken anyway. */ class PauseThenWake { ProxyPushSupplierManager* _p; PauseThenWake(const PauseThenWake&); ///< Dummy, no implementation. PauseThenWake(); ///< Dummy, no implementation. public: inline PauseThenWake(ProxyPushSupplierManager* p); inline ~PauseThenWake(); }; private: EventQueue& _queue; int _refCount; }; class ProxyPushSupplier_i : public virtual POA_CosEventChannelAdmin::ProxyPushSupplier, public Proxy, public EventQueue::Reader, public Callback { public: // CORBA interface methods void connect_push_consumer(CosEventComm::PushConsumer_ptr pushConsumer); void disconnect_push_supplier(); public: ProxyPushSupplier_i(PortableServer::POA_ptr poa, EventQueue& q); ~ProxyPushSupplier_i(); OMNIEVENTS__DEBUG_REF_COUNTS__DECL /** Sets 'busy' if some work was done. * Sets 'waiting' if there is an outstanding request. */ inline void trigger(bool& busy, bool& waiting); /** Sets _targetIsProxy, if it is. */ void callback(CORBA::Request_ptr req); void reincarnate(const string& oid, const PersistNode& node); void output(ostream &os); private: CosEventComm::PushConsumer_var _target; bool _targetIsProxy; ///< TRUE if _target is a ProxyPushConsumer. }; // // Inline Implementations. // inline ProxyPushSupplierManager::PauseThenWake::PauseThenWake( ProxyPushSupplierManager* p ):_p(p) { if(_p) _p->_lock.lock(); } inline ProxyPushSupplierManager::PauseThenWake::~PauseThenWake() { if(_p) { _p->_lock.unlock(); _p->_condition.signal(); // Wake up the thread if it's asleep. } } }; // end namespace OmniEvents #endif // OMNIEVENTS__PROXYPUSHSUPPLIER_H omniEvents-2_6_2/src/Servant.cc0000644000076400001440000001205210242464441016647 0ustar alexusers00000000000000// Package : omniEvents // Servant.cc Created : 2003/12/04 // Author : Alex Tingle // // Copyright (C) 2003-2005 Alex Tingle. // // This file is part of the omniEvents application. // // omniEvents is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public // License as published by the Free Software Foundation; either // version 2.1 of the License, or (at your option) any later version. // // omniEvents is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU // Lesser General Public License for more details. // // You should have received a copy of the GNU Lesser General Public // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // #include "Servant.h" #include "Orb.h" #ifdef HAVE_SYS_TYPES_H # include // getpid #endif #ifdef HAVE_UNISTD_H # include // getpid #elif defined(HAVE_PROCESS_H) # include #endif #include // sprintf #include #ifdef HAVE_IOSTREAM # include #else # include #endif #ifdef HAVE_STD_IOSTREAM using namespace std; #endif namespace OmniEvents { CORBA::Object_ptr createReference( PortableServer::POA_ptr poa, // POA to own new object const char* repositoryId // e.g. _tc_ProxyPushSupplier->id() ) { CORBA::String_var oidStr =newUniqueId(); PortableServer::ObjectId_var oid = PortableServer::string_to_ObjectId(oidStr.in()); CORBA::Object_var obj = poa->create_reference_with_id(oid.in(),repositoryId); assert(!CORBA::is_nil(obj)); return obj._retn(); } char* newUniqueId() { static long count=0; static omni_mutex mutex; int mypid =getpid(); // MS VC++6 doesn't have type pid_t! unsigned long sec,nsec; omni_thread::get_time(&sec,&nsec); // More portable than just time(). char buf[128]; { omni_mutex_lock l(mutex); sprintf(buf,"%lx.%d.%lx",++count,mypid,sec); } return CORBA::string_dup(buf); } // // Servant // #if OMNIEVENTS__DEBUG_SERVANT # define OMNIEVENTS__ADDR "["<activate_object_with_id(oid.in(),this); } catch(CORBA::BAD_PARAM& ex) { DB(0,"Can't activate "<the_name(); ObjectId_var oid; try { oid=_poa->servant_to_id(this); } catch(POA::ServantNotActive& ex) { DB(0,"Can't deactivate servant: POA '"<deactivate_object(oid.in()); } catch(POA::ObjectNotActive& ex) { DB(0,"Can't deactivate "< #endif #ifdef HAVE_OMNIORB4 # include #endif // // Debug definitions for servants. // #if OMNIEVENTS__DEBUG_ALL # define OMNIEVENTS__DEBUG_REF_COUNTS 1 # define OMNIEVENTS__DEBUG_SERVANT 1 #else /** Define the macro OMNIEVENTS__DEBUG_REF_COUNTS to 1 in order to * compile in debug versions of _add/remove_ref(). */ # define OMNIEVENTS__DEBUG_REF_COUNTS 0 /** Define the macro OMNIEVENTS__DEBUG_SERVANT to 1 in order to * compile in servant object count checks. */ # define OMNIEVENTS__DEBUG_SERVANT 0 #endif #if OMNIEVENTS__DEBUG_REF_COUNTS # define OMNIEVENTS__DEBUG_REF_COUNTS__DECL void _add_ref();void _remove_ref(); # define OMNIEVENTS__DEBUG_REF_COUNTS__DEFN(C) \ void C::_add_ref() { \ DB(20,#C "::_add_ref()") \ PortableServer::RefCountServantBase::_add_ref(); \ } \ void C::_remove_ref() { \ DB(20,#C "::_remove_ref()") \ PortableServer::RefCountServantBase::_remove_ref(); \ } #else /** Declares debug versions of _add/remove_ref(). */ # define OMNIEVENTS__DEBUG_REF_COUNTS__DECL /** Defines debug versions of _add/remove_ref() for class C. */ # define OMNIEVENTS__DEBUG_REF_COUNTS__DEFN(C) #endif namespace OmniEvents { /** Helper method called by createNarrowedReference(). * * @param poa POA to own new object. * @param repositoryId Identifies the type of object to make. * e.g. _tc_ProxyPushSupplier->id(). */ CORBA::Object_ptr createReference(PortableServer::POA_ptr poa, const char* repositoryId); /** Helper method that creates a new CORBA object and then narrows it to the * appropriate type. Wrapper around POA::create_reference_with_id. * The type T *must* match the repositoryId parameter. Called by a class' * createObject() method. * * @param poa POA to own new object. * @param repositoryId Identifies the type of object to make. * e.g. _tc_ProxyPushSupplier->id(). */ template typename T::_ptr_type createNarrowedReference(PortableServer::POA_ptr poa, const char* repositoryId) { CORBA::Object_var obj =createReference(poa,repositoryId); #ifdef HAVE_OMNIORB4 return T::_unchecked_narrow(obj.in()); #else return T::_narrow(obj.in()); #endif } /** Generates a unique object ID string, based upon the current PID and time. */ char* newUniqueId(); /** Base class for servants. Stores the servant's POA. Provides some * useful helper methods. */ class Servant : public virtual PortableServer::ServantBase { public: virtual PortableServer::POA_ptr _default_POA(); virtual ~Servant(); #if OMNIEVENTS__DEBUG_SERVANT static int _objectCount; #endif protected: Servant(PortableServer::POA_ptr poa); /** Calls activate_object_with_id() to activate this servant in its POA. */ void activateObjectWithId(const char* oidStr); /** Calls deactivate_object() to deactivate this servant in its POA. */ void deactivateObject(); PortableServer::POA_var _poa; private: /** No default constructor. */ Servant(); }; }; // end namespace OmniEvents #endif // OMNIEVENTS__SERVANT_H omniEvents-2_6_2/src/SupplierAdmin.cc0000644000076400001440000001131110241104121017757 0ustar alexusers00000000000000// Package : omniEvents // SupplierAdmin.h Created : 2003/12/04 // Author : Alex Tingle // // Copyright (C) 2003-2005 Alex Tingle. // // This file is part of the omniEvents application. // // omniEvents is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public // License as published by the Free Software Foundation; either // version 2.1 of the License, or (at your option) any later version. // // omniEvents is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU // Lesser General Public License for more details. // // You should have received a copy of the GNU Lesser General Public // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // #include "SupplierAdmin.h" #include "EventChannel.h" #include "ProxyPushConsumer.h" #include "ProxyPullConsumer.h" #include "Orb.h" #include "PersistNode.h" #define MILLION 1000000 #define BILLION 1000000000 namespace OmniEvents { CosEventChannelAdmin::ProxyPushConsumer_ptr SupplierAdmin_i::obtain_push_consumer() { return _pushConsumer->createObject(); } CosEventChannelAdmin::ProxyPullConsumer_ptr SupplierAdmin_i::obtain_pull_consumer() { if(!_pullConsumer) _pullConsumer=new ProxyPullConsumerManager(_poa,_queue); return _pullConsumer->createObject(); } SupplierAdmin_i::SupplierAdmin_i( const EventChannel_i& channel, PortableServer::POA_ptr poa ) : Servant(poa), _channel(channel), _pushConsumer(NULL), _pullConsumer(NULL), _queue(), _nextPull(0,0) { // Initialise _nextPull. Only set it if the cycle period is LESS than the // pull retry period - otherwise just pull every cycle. if(_channel.pullRetryPeriod_ms() > (_channel.cyclePeriod_ns()/MILLION)) { omni_thread::get_time(&(_nextPull.first),&(_nextPull.second)); } // Always create the ProxyPushConsumer_i default servant. This allows // lazy clients to connect suppliers without having to go through the // proper procedure - they can make up an appropriate ObjectId, call push() // and it will just work (TM). // Note: A SupplierAdmin_i is always created by the EventChannel to allow this // behaviour. _pushConsumer=new ProxyPushConsumer_i(_poa,_queue,_channel.consumerAdmin()); activateObjectWithId("SupplierAdmin"); } SupplierAdmin_i::~SupplierAdmin_i() { DB(20,"~SupplierAdmin_i()") if(_pullConsumer) { _pullConsumer->_remove_ref(); _pullConsumer=NULL; } if(_pushConsumer) { delete _pushConsumer; _pushConsumer=NULL; } for(list::iterator i=_queue.begin(); i!=_queue.end(); ++i) delete *i; } OMNIEVENTS__DEBUG_REF_COUNTS__DEFN(SupplierAdmin_i) void SupplierAdmin_i::collect(list& events) { if(_pullConsumer) { _pullConsumer->collect(); if(0==_nextPull.first) { // No delay between pulls. _pullConsumer->triggerRequest(); } else { // Only trigger new pull() calls if `pullRetry' ms have passed. pair now; omni_thread::get_time(&(now.first),&(now.second)); if(now>=_nextPull) { _pullConsumer->triggerRequest(); CORBA::ULong p =_channel.pullRetryPeriod_ms(); do{ _nextPull.second += (p%1000)*MILLION; // nsec _nextPull.first += p/1000 + _nextPull.second/BILLION; // sec _nextPull.second %= BILLION; // nsec } while(now>=_nextPull); } } } _pushConsumer->trigger(); // Pick up events from both pull & push consumers. events=_queue; _queue.clear(); } void SupplierAdmin_i::disconnect() { if(_pushConsumer) _pushConsumer->disconnect(); if(_pullConsumer) _pullConsumer->disconnect(); } void SupplierAdmin_i::reincarnate(const PersistNode& node) { // Build Push Consumer proxies PersistNode* pushcNode =node.child("ProxyPushConsumer"); if(pushcNode && !pushcNode->_child.empty()) { assert(_pushConsumer!=NULL); _pushConsumer->reincarnate(*pushcNode); } // Build Pull Consumer proxies PersistNode* pullcNode =node.child("ProxyPullConsumer"); if(pullcNode && !pullcNode->_child.empty()) { if(!_pullConsumer) _pullConsumer=new ProxyPullConsumerManager(_poa,_queue); _pullConsumer->reincarnate(*pullcNode); } } void SupplierAdmin_i::output(ostream& os) { if(_pushConsumer) _pushConsumer->output(os); if(_pullConsumer) _pullConsumer->output(os); } }; // end namespace OmniEvents omniEvents-2_6_2/src/SupplierAdmin.h0000644000076400001440000000533410240451211017635 0ustar alexusers00000000000000// Package : omniEvents // SupplierAdmin.h Created : 2003/12/04 // Author : Alex Tingle // // Copyright (C) 2003-2005 Alex Tingle. // // This file is part of the omniEvents application. // // omniEvents is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public // License as published by the Free Software Foundation; either // version 2.1 of the License, or (at your option) any later version. // // omniEvents is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU // Lesser General Public License for more details. // // You should have received a copy of the GNU Lesser General Public // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // #ifndef OMNIEVENTS__SUPPLIERADMIN_H #define OMNIEVENTS__SUPPLIERADMIN_H #ifdef HAVE_CONFIG_H # include "config.h" #endif #include #ifdef HAVE_IOSTREAM # include #else # include #endif #include "Servant.h" #include "CosEventChannelAdmin.hh" #ifdef HAVE_STD_IOSTREAM using namespace std; #endif namespace OmniEvents { class EventChannel_i; class ProxyPushConsumer_i; class ProxyPullConsumerManager; class PersistNode; class SupplierAdmin_i : public virtual POA_CosEventChannelAdmin::SupplierAdmin, public PortableServer::RefCountServantBase, public Servant { public: // CORBA interface methods CosEventChannelAdmin::ProxyPushConsumer_ptr obtain_push_consumer(); CosEventChannelAdmin::ProxyPullConsumer_ptr obtain_pull_consumer(); public: SupplierAdmin_i(const EventChannel_i& channel, PortableServer::POA_ptr poa); virtual ~SupplierAdmin_i(); OMNIEVENTS__DEBUG_REF_COUNTS__DECL /** Collects all events that have arrived since the last call. */ void collect(list& events); /** Send disconnect_XXX_supplier() to all connected consumers. */ void disconnect(); /** Populate this servant from log information. */ void reincarnate(const PersistNode& node); /** Save this object's state to a stream. */ void output(ostream& os); private: const EventChannel_i& _channel; ProxyPushConsumer_i* _pushConsumer; ProxyPullConsumerManager* _pullConsumer; list _queue; ///< Incoming queue for the PushConsumer. /** Next time to retry pull (sec,nsec). * Set to (0,0) when we should pull every cycle. */ pair _nextPull; }; }; // end namespace OmniEvents #endif // OMNIEVENTS__SUPPLIERADMIN_H omniEvents-2_6_2/src/config.h.in0000644000076400001440000001520410240451211016730 0ustar alexusers00000000000000/* src/config.h.in. Generated from configure.ac by autoheader. */ /* Define to one of `_getb67', `GETB67', `getb67' for Cray-2 and Cray-YMP systems. This function is required for `alloca.c' support on those systems. */ #undef CRAY_STACKSEG_END /* Define to 1 if using `alloca.c'. */ #undef C_ALLOCA /* define if fstream::open() accepts third parameter. */ #undef FSTREAM_OPEN_PROT /* Define to 1 if you have `alloca', as a function or macro. */ #undef HAVE_ALLOCA /* Define to 1 if you have and it should be used (not on Ultrix). */ #undef HAVE_ALLOCA_H /* define if bool is a built-in type */ #undef HAVE_BOOL /* Define to 1 if you have the header file. */ #undef HAVE_CMATH /* Define to 1 if you have the header file. */ #undef HAVE_FCNTL_H /* define if we have fstream::attach(). */ #undef HAVE_FSTREAM_ATTACH /* define if we have fstream::open(). */ #undef HAVE_FSTREAM_OPEN /* Define to 1 if you have the `gethostname' function. */ #undef HAVE_GETHOSTNAME /* Define to 1 if you have the `getopt' function. */ #undef HAVE_GETOPT /* Define to 1 if you have the header file. */ #undef HAVE_INTTYPES_H /* Define to 1 if you have the header file. */ #undef HAVE_IOMANIP /* Define to 1 if you have the header file. */ #undef HAVE_IOMANIP_H /* Define to 1 if you have the header file. */ #undef HAVE_IOSTREAM /* Define to 1 if you have the header file. */ #undef HAVE_IOSTREAM_H /* Define to 1 if you have the header file. */ #undef HAVE_LIBC_H /* Define to 1 if your system has a GNU libc compatible `malloc' function, and to 0 otherwise. */ #undef HAVE_MALLOC /* Define to 1 if you have the header file. */ #undef HAVE_MALLOC_H /* Define to 1 if you have the header file. */ #undef HAVE_MEMORY_H /* define if the compiler implements namespaces */ #undef HAVE_NAMESPACES /* "define if omniORB3 is available." */ #undef HAVE_OMNIORB3 /* "define if omniORB4 is available." */ #undef HAVE_OMNIORB4 /* Define to 1 if you have the `on_exit' function. */ #undef HAVE_ON_EXIT /* Define to 1 if you have the header file. */ #undef HAVE_PROCESS_H /* Define if you have POSIX threads libraries and header files. */ #undef HAVE_PTHREAD /* Define to 1 if you have the header file. */ #undef HAVE_SIGNAL_H /* Define to 1 if you have the `sigset' function. */ #undef HAVE_SIGSET /* Define to 1 if `stat' has the bug that it succeeds when given the zero-length file name argument. */ #undef HAVE_STAT_EMPTY_STRING_BUG /* Define to 1 if you have the header file. */ #undef HAVE_STDINT_H /* Define to 1 if you have the header file. */ #undef HAVE_STDLIB_H /* define if C++ iostream is in namespace std. */ #undef HAVE_STD_IOSTREAM /* define if C++ Standard Template Library is in namespace std */ #undef HAVE_STD_STL /* define if the compiler supports Standard Template Library */ #undef HAVE_STL /* Define to 1 if you have the `strchr' function. */ #undef HAVE_STRCHR /* Define to 1 if you have the `strdup' function. */ #undef HAVE_STRDUP /* Define to 1 if you have the header file. */ #undef HAVE_STRINGS_H /* Define to 1 if you have the header file. */ #undef HAVE_STRING_H /* Define to 1 if you have the header file. */ #undef HAVE_SYSLOG_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_PARAM_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_STAT_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_TYPES_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_UTSNAME_H /* Define to 1 if you have the `tzset' function. */ #undef HAVE_TZSET /* Define to 1 if you have the `uname' function. */ #undef HAVE_UNAME /* Define to 1 if you have the header file. */ #undef HAVE_UNISTD_H /* Define to 1 if `lstat' dereferences a symlink specified with a trailing slash. */ #undef LSTAT_FOLLOWS_SLASHED_SYMLINK /* Define to the address where bug reports for this package should be sent. */ #undef PACKAGE_BUGREPORT /* Define to the full name of this package. */ #undef PACKAGE_NAME /* Define to the full name and version of this package. */ #undef PACKAGE_STRING /* Define to the one symbol short name of this package. */ #undef PACKAGE_TARNAME /* Define to the version of this package. */ #undef PACKAGE_VERSION /* Define to the necessary symbol if this constant uses a non-standard name on your system. */ #undef PTHREAD_CREATE_JOINABLE /* Define as the return type of signal handlers (`int' or `void'). */ #undef RETSIGTYPE /* If using the C implementation of alloca, define if you know the direction of stack growth for your system; otherwise it will be automatically deduced at run-time. STACK_DIRECTION > 0 => grows toward higher addresses STACK_DIRECTION < 0 => grows toward lower addresses STACK_DIRECTION = 0 => direction of growth unknown */ #undef STACK_DIRECTION /* Define to 1 if you have the ANSI C header files. */ #undef STDC_HEADERS /* for omniORB */ #undef __OSVERSION__ /* needed by DEC/Compaq/HP cxx to activate ANSI standard iostream. */ #undef __USE_STD_IOSTREAM /* for OmniORB on AIX */ #undef __aix__ /* for OmniORB on AlphaProcessor */ #undef __alpha__ /* for OmniORB on ArmProcessor */ #undef __arm__ /* for OmniORB on Darwin */ #undef __darwin__ /* for OmniORB on FreeBSD */ #undef __freebsd__ /* for OmniORB on HppaProcessor */ #undef __hppa__ /* for OmniORB on HPUX */ #undef __hpux__ /* for OmniORB on ia64Processor */ #undef __ia64__ /* for OmniORB on IRIX */ #undef __irix__ /* for OmniORB on Linux, Cygwin */ #undef __linux__ /* for OmniORB on m68kProcessor */ #undef __m68k__ /* for OmniORB on IndigoProcessor */ #undef __mips__ /* for OmniORB on NextStep */ #undef __nextstep__ /* for OmniORB on OSF1 (Tru64) */ #undef __osf1__ /* for OmniORB on OSR5 */ #undef __osr5__ /* for OmniORB on PowerPCProcessor */ #undef __powerpc__ /* for OmniORB on s390Processor */ #undef __s390__ /* for OmniORB on SparcProcessor */ #undef __sparc__ /* for OmniORB on SunOS (Solaris) */ #undef __sunos__ /* for OmniORB on x86Processor */ #undef __x86__ /* Define to empty if `const' does not conform to ANSI C. */ #undef const /* Define to `__inline__' or `__inline' if that's what the C compiler calls it, or to nothing if 'inline' is not supported under any name. */ #ifndef __cplusplus #undef inline #endif /* Define to rpl_malloc if the replacement function should be used. */ #undef malloc /* Define to `unsigned' if does not define. */ #undef size_t /* Clean away the PACKAGE_* macros unless they are needed. */ #include "scour.h" omniEvents-2_6_2/src/daemon.h0000755000076400001440000000332310227236245016340 0ustar alexusers00000000000000// Package : omniEvents // service.h Created : 2004/07/25 // Author : Alex Tingle // // Copyright (C) 2004 Alex Tingle. // // This file is part of the omniEvents application. // // omniEvents is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public // License as published by the Free Software Foundation; either // version 2.1 of the License, or (at your option) any later version. // // omniEvents is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU // Lesser General Public License for more details. // // You should have received a copy of the GNU Lesser General Public // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // #ifndef OMNIEVENTS__SERVICE_H #define OMNIEVENTS__SERVICE_H namespace OmniEvents { /** Interface class that contains various methods for running omniEvents as a * background task. */ class Daemon { Daemon(); ///< No implementation public: Daemon(int& argc,char**& argv); virtual ~Daemon(); void tracefile(const char* val); ///< Set _tracefile. void pidfile(const char* val); ///< Set _pidfile. void foreground(bool val); ///< Set _foreground. /** Redirects output streams to tracefile. */ void daemonize(); /** Called to signal that all startup operations have completed OK. */ void runningOk(); }; // class Daemon } // end namespace OmniEvents #endif // OMNIEVENTS__DAEMON_H omniEvents-2_6_2/src/daemon_unix.cc0000644000076400001440000002542510227236245017545 0ustar alexusers00000000000000// Package : omniEvents // daemon_unix.h Created : 2004/06/29 // Author : Alex Tingle // // Copyright (C) 2004 Alex Tingle. // // This file is part of the omniEvents application. // // omniEvents is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public // License as published by the Free Software Foundation; either // version 2.1 of the License, or (at your option) any later version. // // omniEvents is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU // Lesser General Public License for more details. // // You should have received a copy of the GNU Lesser General Public // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // #include "daemon.h" #include "main.h" #include "daemon_unix.h" #define NEED_PACKAGE_INFO #ifdef HAVE_CONFIG_H # include "config.h" #endif #ifdef HAVE_IOSTREAM # include # include #else # include # include #endif #ifdef HAVE_STD_IOSTREAM using namespace std; #endif #include // exit, on_exit #include // errno #ifdef HAVE_UNISTD_H # include // fork, umask, setsid, dup2, chdir, close #endif #ifdef HAVE_SYS_TYPES_H # include // fork, umask, open #endif #ifdef HAVE_SYS_STAT_H # include //open #endif #ifdef HAVE_FCNTL_H # include // open #endif #ifdef HAVE_SYSLOG_H # include // openlog, syslog #endif #ifdef HAVE_STRING_H # include // strerror #endif #ifdef HAVE_SIGNAL_H #include // kill #endif #include // Forward declaration of omniORB::setLogFunction() namespace omniORB { void setLogFunction(void (*logFunction)(const char*)); } namespace OmniEvents { #define STRERR_FILE_LINE strerror(errno)<<" "<<__FILE__<<":"<<__LINE__ #define PIPE_READ 0 #define PIPE_WRITE 1 ////////////////////////////////////////////////////////////////////////////// /** Singleton - only at file scope. Although we initialize the value to NULL, * we don't trust that the runtime will actually initialise it. */ DaemonImpl daemon; Daemon::Daemon(int&,char**&) { // Initialise the DaemonImpl singleton. daemon._tracefile=NULL; daemon._foreground=false; daemon._pidfile=NULL; daemon._pipe[0]=daemon._pipe[1]=-1; daemon._havePidfile=false; daemon._haveParent=false; daemon._haveSyslog=false; } void Daemon::tracefile(const char* val) { daemon.tracefile(val); } void Daemon::pidfile(const char* val) { daemon.pidfile(val); } void Daemon::foreground(bool val) { daemon.foreground(val); } void Daemon::daemonize() { daemon.daemonize(); } void Daemon::runningOk() { daemon.runningOk(); } Daemon::~Daemon() { daemon.shutdown(0); } void shutdown0(void) { daemon.shutdown(0); } ///< Param to atexit(). void shutdown2(int s,void*){ daemon.shutdown(s); } ///< Param to on_exit(). ////////////////////////////////////////////////////////////////////////////// DaemonImpl::DaemonImpl(){} DaemonImpl::~DaemonImpl() { delete[] _pidfile; delete[] _tracefile; _pidfile=NULL; _tracefile=NULL; } void DaemonImpl::tracefile(const char* val) { _tracefile=::strdup(val); } void DaemonImpl::foreground(bool val) { _foreground=val; } void DaemonImpl::pidfile(const char* val) { string pidfileStr =val; if(pidfileStr[0]!='/') pidfileStr=string("/var/run/")+pidfileStr; DaemonImpl::_pidfile=::strdup(pidfileStr.c_str()); } void DaemonImpl::initialize(int&,char**&) { // Does nothing on Unix } void DaemonImpl::daemonize() { // Register the shutdown function. #ifdef HAVE_ON_EXIT if( ::on_exit(shutdown2,NULL) <0) #else if( ::atexit(shutdown0) <0) #endif { cerr<<"Failed to set exit handler."<fork(); // ...now in the CHILD. } // Check & write the pidfile (if _pidfile is set). checkPidfileOrShutdown(); writePidfile(); // Change the file mode mask ::umask(0); // Change the current working directory if(::chdir("/")!=0) { cerr< stripped off // "omniEvents! " --> stripped off and sets priority to LOG_ERR const char* mPos( message ); const char* pPos( "omniEvents: " ); while(*mPos && (*mPos==*pPos || *pPos==':')) { ++mPos; ++pPos; if(!*pPos) { switch(message[10]) { case '!': priority=LOG_ERR; // ...AND DROPS THROUGH... case ':': message=mPos; } break; // loop exit } } // Send the message. ::syslog(priority,message); #ifndef LOG_PERROR // If we don't have LOG_PERROR, then we'll have to manually send // log messages to stderr. if(daemon._haveParent) cerr<>pidFromFile; infile.close(); } catch(...) { cerr<<"Failed to read pidfile'"<<_pidfile<<"'."<0) { if(0==::kill(pidFromFile,0)) // tests for running 'pidFromFile'. { cerr<<"Quitting because process "<0) { // // Now in the PARENT // // Close the write end of the pipe. if( ::close(_pipe[PIPE_WRITE]) <0) cerr<<"Failed to close pipe: "<parent comms. bool _havePidfile; ///< Is there a pidfile for us to clean up? bool _haveParent; ///< Is there a parent for us to clean up? bool _haveSyslog; ///< Should we close syslog before quitting? DaemonImpl(); ~DaemonImpl(); void tracefile(const char* val); ///< Set _tracefile. void pidfile(const char* val); ///< Set _pidfile. void foreground(bool val); ///< Set _foreground. /** Does nothing on Unix. */ void initialize(int&,char**&); /** Puts the current process into the background. Redirects the omniORB log * output to syslog (or 'tracefile', if it is set). */ void daemonize(); /** Called to signal that all startup operations have completed OK. * Notifies the parent process and redirects stdout & stderr to 'tracefile' * (or else /dev/null). */ void runningOk(); /** Exit handler called (indirectly) by ::on_exit() - shuts down the daemon. * Deletes pidfile (if we have one), notifies the parent (if we have one). */ void shutdown(int status); /** Callback, used as a parameter to omniORB::setLogFunction(). * WARNING: Performs magic! Sets the syslog priority to LOG_INFO or LOG_ERR * depending upon whether the message string starts with 'omniEvents! ' or * 'omniEvents: '. */ static void log(const char* message); private: /** Performs the actual fork. */ void fork(); /** Redirect stdout & stderr to filename. * Also redirects stdin from /dev/null */ void redirectStreamsTo(const char* filename); /** Opens a (new?) file called 'filename' for writing, and uses it to * hijack stream 'fd'. */ int openFileFor(int fd, const char* filename, int flags); /** If pidfile exists & contains a running process then shutdown() (Unix). * Also shuts down if pidfile is inaccessible. */ void checkPidfileOrShutdown(); void writePidfile(); /** Called by the parent process (Unix). Waits for the child to return an * exit status. The status is usually '0' - indicating that the daemon has * started successfully. */ int waitForChild(); /** Tells the parent to exit with the given status (Unix). */ void notifyParent(int status); }; } // end namespace OmniEvents #endif // OMNIEVENTS__DAEMON_UNIX_H omniEvents-2_6_2/src/daemon_windows.cc0000644000076400001440000003070410240451211020233 0ustar alexusers00000000000000// Package : omniEvents // daemon_windows.cc Created : 2004/07/23 // Author : Alex Tingle // // Copyright (C) 2004 Alex Tingle // // This file is part of the omniEvents application. // // omniEvents is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public // License as published by the Free Software Foundation; either // version 2.1 of the License, or (at your option) any later version. // // omniEvents is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU // Lesser General Public License for more details. // // You should have received a copy of the GNU Lesser General Public // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // #include "daemon.h" #include "daemon_windows.h" #include "main.h" #define NEED_PACKAGE_INFO #ifdef HAVE_CONFIG_H # include "config.h" #endif using namespace std; #include #include // exit, on_exit #include // errno #include #include #define AS_STR_2(x) #x #define AS_STR_1(x) AS_STR_2(x) /** Generates a string literal that describes the filename and line number. */ #define HERE __FILE__ ":" AS_STR_1(__LINE__) // Forward declaration of omniORB::setLogFunction() namespace omniORB { void setLogFunction(void (*logFunction)(const char*)); } namespace OmniEvents { /** Utility class, contains functions that Windows should have, but doesn't. */ class Win { public: static const char* strerror(DWORD e) { LPVOID buf; ::FormatMessage( FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM, NULL, e, MAKELANGID(LANG_NEUTRAL,SUBLANG_DEFAULT), (LPTSTR)&buf, 0, NULL ); return (const char*)(buf); } static void perror(const char* s=NULL) { if(s) { Service::log(s); Service::log(": "); } Service::log(Win::strerror(::GetLastError())); } }; /** Opens a windows registry key, and closed it upon destruction. * Upon failure, it emits an error message and then quits. * Why do I have to write this class myself?? */ class RegistryKey { HKEY _hkey; bool _open; private: RegistryKey(); ///< No implementation RegistryKey(HKEY hkey, bool open=true):_hkey(hkey),_open(open){} public: RegistryKey(RegistryKey& right); RegistryKey(HKEY hkey, const char* subkey, REGSAM samDesired=KEY_QUERY_VALUE); ~RegistryKey(); operator bool() const { return _open; } int setValueStr(const char* name, const char* data); char* queryValueStr(const char* name, const int maxlen=2048) const; }; /** Copy constructor, adopts ownership. */ RegistryKey::RegistryKey(RegistryKey& right): _hkey(right._hkey),_open(right._open) { right._open=false; } /** Constructor, opens the key. */ RegistryKey::RegistryKey( HKEY hkey, const char* subkey, REGSAM samDesired ):_hkey(), _open(false) { long ret=::RegOpenKeyEx(hkey,subkey,0,samDesired,&_hkey); ::SetLastError(ret); if(ret==ERROR_SUCCESS) _open=true; } /** Destructor, closes the key. */ RegistryKey::~RegistryKey() { // Windows - why use two lines, when seven will do?? // RegCloseKey() does not set last error, so complexity ensues... if(_open) { long ret =::RegCloseKey(_hkey); ::SetLastError(ret); if(ret!=ERROR_SUCCESS) Win::perror("Warning at " HERE); } } int RegistryKey::setValueStr(const char* name, const char* data) { long ret=::RegSetValueEx( _hkey,name,0,REG_SZ, (const BYTE*)(data), 1+::strlen(data) ); ::SetLastError(ret); if(ret==ERROR_SUCCESS) return 0; else return 1; } char* RegistryKey::queryValueStr(const char* name, const int maxlen) const { char* result =NULL; char* buf =new char[maxlen]; DWORD len =maxlen; long ret=::RegQueryValueEx(_hkey,name,NULL,NULL,(LPBYTE)buf,&len); ::SetLastError(ret); if(ret==ERROR_SUCCESS && len<=maxlen) result=::strdup(buf); // MSVC6 has no strndup()!! delete[] buf; return result; } ////////////////////////////////////////////////////////////////////////////// /** Singleton - only at file scope. */ static Service service; Daemon::Daemon(int& argc,char**& argv) { service.start(argc,argv); } void Daemon::tracefile(const char* val) { service.tracefile(val); } void Daemon::pidfile(const char* val) { service.pidfile(val); } void Daemon::foreground(bool val) { service.foreground(val); } void Daemon::daemonize() { service.daemonize(); } void Daemon::runningOk() { service.runningOk(); } Daemon::~Daemon() { service.shutdown(); } void shutdown0(void){ service.shutdown(); } ///< Param to atexit() /////////////////////////////////////////////////////////////////////////////// Service::Service(): _tracefile(NULL), _regSubKey("SYSTEM\\CurrentControlSet\\Services\\" PACKAGE_NAME), _serviceRunning(false), _callCount(0), _parameters(NULL), _argv(NULL), _logstream(&cerr), _serviceStatusHandle() {} Service::~Service() { delete[] _tracefile; delete[] _parameters; delete[] _argv; if(_logstream!=&cerr) delete _logstream; } void Service::tracefile(const char* val) { delete[] _tracefile; _tracefile=::strdup(val); } void Service::pidfile(const char* val) { Service::log("Option -P not supported on windows.\n"); ::exit(1); } void Service::foreground(bool val) { Service::log("Option -f not supported on windows.\n"); ::exit(1); } void Service::start(int& argc,char**& argv) { ++_callCount; if(_callCount>1) { // This is a re-entrant call. We are inside 'ServiceMain()'. setArgcArgv(argc,argv); // Set argv & argc from the registry. _serviceStatusHandle= ::RegisterServiceCtrlHandler( PACKAGE_NAME, (LPHANDLER_FUNCTION)Service::ctrlHandler ); if(!_serviceStatusHandle) ::exit(1); if(! setServiceStatus(SERVICE_START_PENDING,NO_ERROR,0,1,3000) ) ::exit(1); _serviceRunning=true; // ...and return to main(). } else if(argc>=2 && 0==::strcmp(argv[1],"service")) { // Start service. char* name =::strdup(PACKAGE_NAME); SERVICE_TABLE_ENTRY servicetable[]= { {name,(LPSERVICE_MAIN_FUNCTION)::main}, {NULL,NULL} }; if(! ::StartServiceCtrlDispatcher(servicetable) ) { Win::perror(HERE); ::exit(1); } ::exit(0); } else if(argc>=2 && 0==::strcmp(argv[1],"install")) { install(argc,argv); cout<<"Service '" PACKAGE_NAME "' installed OK."<=2 && 0==::strcmp(argv[1],"uninstall")) { uninstall(); cout<<"Service '" PACKAGE_NAME "' removed."<=2 && 0==::strcmp(argv[1],"getoptions")) { readParameters(); cout<<_parameters<=2 && 0==::strcmp(argv[1],"setoptions")) { writeParameters(argc,argv); ::exit(0); } else if(argc>=2 && 0==::strcmp(argv[1],"run")) { setArgcArgv(argc,argv); // Set argv & argc from the registry. } else { ; // Just run the program in the foreground. } } void Service::daemonize() { if(_tracefile && _tracefile[0]!='\0') { _logstream=new ofstream(_tracefile,ios::out|ios::app); omniORB::setLogFunction(Service::log); } // Register the shutdown function. if( ::atexit(shutdown0) <0) // Windows has atexit() { Service::log("Failed to set exit handler."); ::exit(-1); } } void Service::runningOk() { if(_serviceRunning) { if(! setServiceStatus(SERVICE_RUNNING,NO_ERROR,0,0,0) ) ::exit(1); } } void Service::shutdown() { if(_logstream!=&cerr) { delete _logstream; _logstream=&cerr; } if(_serviceRunning) { setServiceStatus(SERVICE_STOPPED,NO_ERROR,0,0,0); _serviceRunning=false; } } // static callback void Service::log(const char* message) { (*service._logstream)< args; char* param =::strtok(_parameters,"\t "); while(param) { args.push_back(param); param=::strtok(NULL,"\t "); } if(!args.empty()) { _argv=new char*[argc+args.size()]; // deleted by ~Service() int i=0; _argv[i++]=argv[0]; for(int j=0; j #include #include namespace OmniEvents { /** Singleton class that contains various methods for running a * Windows service. */ class Service { public: Service(); ~Service(); void start(int& argc,char**& argv); void tracefile(const char* val); ///< Set _tracefile. void pidfile(const char* val); ///< Set _pidfile. void foreground(bool val); ///< Set _foreground. /** Redirects output streams to tracefile. */ void daemonize(); /** Called to signal that all startup operations have completed OK. */ void runningOk(); /** Exit handler set with ::on_exit() - shuts down the service. */ void shutdown(); // Callbacks. /** Callback, used as a parameter to omniORB::setLogFunction(). */ static void log(const char* message); /** Handles control codes from the Service Control Manager. */ static void ctrlHandler(DWORD controlCode); private: char* _tracefile; ///< The tracefile name (if any). const char* _regSubKey; bool _serviceRunning; int _callCount; char* _parameters; ///< Stores parameters read from the registry. char** _argv; ///< Replacement argv array, read from registry. std::ostream* _logstream; SERVICE_STATUS_HANDLE _serviceStatusHandle; ///< Windows thing void Service::setArgcArgv(int& argc,char**& argv); void install(int argc,char** argv) const; void uninstall() const; /** Populates _parameters from the Registry. */ void readParameters(); /** Writes args 2+ to the Registry. */ void writeParameters(int argc, char** argv) const; bool Service::setServiceStatus( DWORD currentState, DWORD win32ExitCode, DWORD serviceSpecificExitCode, DWORD checkPoint, DWORD waitHint ); }; // class Service } // end namespace OmniEvents #endif // OMNIEVENTS__DAEMON_WINDOWS_H omniEvents-2_6_2/src/defaults.h0000644000076400001440000001076210240451211016671 0ustar alexusers00000000000000// -*- Mode: C++; -*- // Package : omniEvents // defaults.h Created : 1/10/99 // Author : Paul Nader (pwn) // // Copyright (C) 1998 Paul Nader, 2004 Alex Tingle. // // This file is part of the omniEvents application. // // omniEvents is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public // License as published by the Free Software Foundation; either // version 2.1 of the License, or (at your option) any later version. // // omniEvents is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU // Lesser General Public License for more details. // // You should have received a copy of the GNU Lesser General Public // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // // Description: // // Contains definitions of default values. /* $Log: defaults.h,v $ Revision 1.7.2.2 2005/05/10 14:28:10 alextingle Updated copyrights to 2005. Revision 1.7.2.1 2004/11/01 12:27:12 alextingle New EventChannel parameter `PullRetryPeriod_ms' supercedes `PullRetryPeriod'. The new parameter is set by `eventc -R'. The old parameter and its `-r' option still work as before, for backwards compatibility. Revision 1.7 2004/07/26 20:50:39 alextingle Version --> 2.5.4 Revision 1.6 2004/07/06 12:46:34 alextingle Moved default macros into defaults.h Revision 1.5 2004/05/28 10:11:37 alextingle Added a comment. Revision 1.4 2004/04/19 22:04:29 alextingle Corrected default CyclePeriod to 0.1s Revision 1.3 2004/03/28 01:01:21 alextingle New QoS parameters: CyclePeriod_ns and InsName. Revision 1.2 2004/01/11 16:57:26 alextingle New persistancy log file format, implemented by PersistNode.h/cc. The new format enables new nodes to be added and old ones erased by appending a single line to the file, rather than by re-persisting the whole application. This is much more efficient when lots of proxies are being created all at once. It's also a much simpler solution, with far fewer lines of code. Revision 1.1 2003/12/21 16:19:49 alextingle Moved into 'src' directory as part of the change to POA implementation. Revision 1.2 2003/11/03 22:36:48 alextingle Updated License to GNU Lesser General Public v2.1 Revision 1.1.1.1 2002/09/25 19:00:32 shamus13 Import of OmniEvents source tree from release 2.1.1 Revision 1.1 2000/09/05 01:07:40 naderp Added MaxQueueLength QOS. Revision 1.0 1999/11/01 16:48:08 naderp Initial revision */ #ifndef _DEFAULTS_H_ #define _DEFAULTS_H_ #define PULL_RETRY_PERIOD_MS 1000 ///< 1 second #define MAX_QUEUE_LENGTH 1023 #define MAX_NUM_PROXIES 1024 ///< Only limits number of ProxyPullSuppliers. #define CYCLE_PERIOD_NS 100000000 ///< Delay between cycles. (0.1 second) /** Define OMNIEVENTS_LOG_DEFAULT_LOCATION to specify the default location where * the omniEvents server executable places its persistency log file. The default * location is C:\TEMP for Win32 and /var/lib/omniEvents for UNIX systems. The * location can be overridden at runtime using the OMNIEVENTS_LOGDIR environment * variable. * Value must be an absolute pathname. */ #if defined(__WIN32__) # define OMNIEVENTS_LOG_DEFAULT_LOCATION "C:\\omniEvents" #elif defined(__VMS) // What is a good default for VMS? # define OMNIEVENTS_LOG_DEFAULT_LOCATION "[]" #else // Unix # define OMNIEVENTS_LOG_DEFAULT_LOCATION "/var/lib/omniEvents" #endif /** Define OMNIEVENTS_LOGDIR_ENV_VAR to specify the environment variable that * users may set to override the OMNIEVENTS_LOG_DEFAULT_LOCATION. The default * environment variable name is `OMNIEVENTS_LOGDIR'. */ #define OMNIEVENTS_LOGDIR_ENV_VAR "OMNIEVENTS_LOGDIR" /** Define OMNIEVENTS_LOG_CHECKPOINT_PERIOD to specify the number of seconds * the omniEvents server executable should wait before persistency log check- * points. The default value is 900 (ie 15 minutes). You should adjust this * value depending on how often operations involving state changes are performed. * Operations of this type include creating event channels and connecting or * disconnecting clients. Lowering the period reduces the maximum size of the * logfile. * Value is in seconds. */ #define OMNIEVENTS_LOG_CHECKPOINT_PERIOD (15*60) #endif // _DEFAULTS_H_ omniEvents-2_6_2/src/deps.mk0000644000076400001440000003505410303671733016213 0ustar alexusers00000000000000ConsumerAdmin.o: \ ConsumerAdmin.cc \ ../idl/omniEvents.hh \ Callback.h \ Mapper.h \ ../idl/CosLifeCycle.hh \ ProxyPushSupplier.h \ defaults.h \ Servant.h \ PersistNode.h \ ../idl/CosEventComm.hh \ ../idl/FT.hh \ ../idl/COS_sysdep.h \ ../idl/EventChannelAdmin.hh \ Orb.h \ config.h \ EventChannel.h \ Filter.h \ ProxyManager.h \ ../idl/CosEventChannelAdmin.hh \ EventQueue.h \ ConsumerAdmin.h \ scour.h \ ProxyPullSupplier.h \ ## Diagnostic information starts here # ../idl/omniEvents.hh from EventChannel.h # Callback.h from ProxyPushSupplier.h # Mapper.h from EventChannel.h # ../idl/CosLifeCycle.hh from ../idl/EventChannelAdmin.hh # ProxyPushSupplier.h from ConsumerAdmin.cc # defaults.h from EventChannel.h # Servant.h from EventChannel.h # PersistNode.h from EventChannel.h # ../idl/CosEventComm.hh from ../idl/omniEvents.hh # ../idl/FT.hh from ../idl/omniEvents.hh # ../idl/COS_sysdep.h from ../idl/CosEventComm.hh # ../idl/EventChannelAdmin.hh from ../idl/omniEvents.hh # Orb.h from Mapper.h # config.h from EventChannel.h # EventChannel.h from ConsumerAdmin.cc # Filter.h from ConsumerAdmin.cc # ProxyManager.h from ProxyPullSupplier.h # ../idl/CosEventChannelAdmin.hh from ../idl/omniEvents.hh # EventQueue.h from ConsumerAdmin.h # ConsumerAdmin.h from ConsumerAdmin.cc # scour.h from config.h # ProxyPullSupplier.h from ConsumerAdmin.cc daemon_unix.o: \ daemon_unix.cc \ config.h \ daemon.h \ scour.h \ daemon_unix.h \ main.h \ ## Diagnostic information starts here # config.h from daemon_unix.cc # daemon.h from daemon_unix.cc # scour.h from config.h # daemon_unix.h from daemon_unix.cc # main.h from daemon_unix.cc daemon_windows.o: \ daemon_windows.cc \ daemon_windows.h \ config.h \ scour.h \ daemon.h \ main.h \ ## Diagnostic information starts here # daemon_windows.h from daemon_windows.cc # config.h from daemon_windows.cc # scour.h from config.h # daemon.h from daemon_windows.cc # main.h from daemon_windows.cc EventChannel.o: \ EventChannel.cc \ config.h \ EventChannel.h \ ../idl/COS_sysdep.h \ ../idl/omniEvents.hh \ Servant.h \ ../idl/FT.hh \ SupplierAdmin.h \ ../idl/CosEventChannelAdmin.hh \ EventQueue.h \ ConsumerAdmin.h \ ../idl/CosLifeCycle.hh \ PersistNode.h \ Orb.h \ scour.h \ ../idl/EventChannelAdmin.hh \ Filter.h \ Mapper.h \ ../idl/CosEventComm.hh \ defaults.h \ omniEventsLog.h \ ## Diagnostic information starts here # config.h from ConsumerAdmin.h # EventChannel.h from EventChannel.cc # ../idl/COS_sysdep.h from ../idl/CosEventChannelAdmin.hh # ../idl/omniEvents.hh from EventChannel.h # Servant.h from EventChannel.h # ../idl/FT.hh from ../idl/omniEvents.hh # SupplierAdmin.h from EventChannel.cc # ../idl/CosEventChannelAdmin.hh from SupplierAdmin.h # EventQueue.h from ConsumerAdmin.h # ConsumerAdmin.h from EventChannel.cc # ../idl/CosLifeCycle.hh from ../idl/EventChannelAdmin.hh # PersistNode.h from EventChannel.h # Orb.h from Filter.h # scour.h from config.h # ../idl/EventChannelAdmin.hh from ../idl/omniEvents.hh # Filter.h from EventQueue.h # Mapper.h from EventChannel.h # ../idl/CosEventComm.hh from ../idl/CosEventChannelAdmin.hh # defaults.h from EventChannel.h # omniEventsLog.h from EventChannel.cc EventChannelFactory.o: \ EventChannelFactory.cc \ config.h \ EventChannel.h \ ../idl/COS_sysdep.h \ ../idl/omniEvents.hh \ Servant.h \ ../idl/CosLifeCycle.hh \ EventChannelFactory.h \ ../idl/CosEventChannelAdmin.hh \ Mapper.h \ PersistNode.h \ Orb.h \ ../idl/FT.hh \ ../idl/EventChannelAdmin.hh \ ../idl/CosEventComm.hh \ defaults.h \ scour.h \ ## Diagnostic information starts here # config.h from EventChannel.h # EventChannel.h from EventChannelFactory.cc # ../idl/COS_sysdep.h from ../idl/CosEventChannelAdmin.hh # ../idl/omniEvents.hh from EventChannel.h # Servant.h from EventChannel.h # ../idl/CosLifeCycle.hh from ../idl/EventChannelAdmin.hh # EventChannelFactory.h from EventChannelFactory.cc # ../idl/CosEventChannelAdmin.hh from ../idl/omniEvents.hh # Mapper.h from EventChannel.h # PersistNode.h from EventChannel.h # Orb.h from Mapper.h # ../idl/FT.hh from ../idl/omniEvents.hh # ../idl/EventChannelAdmin.hh from ../idl/omniEvents.hh # ../idl/CosEventComm.hh from ../idl/CosEventChannelAdmin.hh # defaults.h from EventChannel.h # scour.h from config.h EventQueue.o: \ EventQueue.cc \ config.h \ Orb.h \ Filter.h \ scour.h \ EventQueue.h \ ## Diagnostic information starts here # config.h from EventQueue.cc # Orb.h from Filter.h # Filter.h from EventQueue.h # scour.h from config.h # EventQueue.h from EventQueue.cc Filter.o: \ Filter.cc \ config.h \ Orb.h \ Filter.h \ scour.h \ ## Diagnostic information starts here # config.h from Filter.h # Orb.h from Filter.h # Filter.h from Filter.cc # scour.h from config.h getopt.o: \ getopt.cc \ config.h \ getopt.h \ scour.h \ ## Diagnostic information starts here # config.h from getopt.cc # getopt.h from getopt.cc # scour.h from config.h main.o: \ main.cc \ ../idl/omniEvents.hh \ naming.h \ Mapper.h \ ../idl/CosLifeCycle.hh \ defaults.h \ Servant.h \ PersistNode.h \ ../idl/CosEventComm.hh \ EventChannelFactory.h \ scour.h \ ../idl/COS_sysdep.h \ ../idl/EventChannelAdmin.hh \ omniEvents.h \ Orb.h \ main.h \ getopt.h \ config.h \ EventChannel.h \ daemon.h \ ../idl/CosEventChannelAdmin.hh \ omniEventsLog.h \ ../idl/FT.hh \ version.h \ ## Diagnostic information starts here # ../idl/omniEvents.hh from EventChannel.h # naming.h from main.cc # Mapper.h from EventChannel.h # ../idl/CosLifeCycle.hh from ../idl/EventChannelAdmin.hh # defaults.h from EventChannel.h # Servant.h from EventChannel.h # PersistNode.h from EventChannel.h # ../idl/CosEventComm.hh from ../idl/CosEventChannelAdmin.hh # EventChannelFactory.h from main.cc # scour.h from config.h # ../idl/COS_sysdep.h from ../idl/CosEventChannelAdmin.hh # ../idl/EventChannelAdmin.hh from ../idl/omniEvents.hh # omniEvents.h from main.cc # Orb.h from main.cc # main.h from main.cc # getopt.h from main.cc # config.h from main.cc # EventChannel.h from EventChannelFactory.h # daemon.h from main.cc # ../idl/CosEventChannelAdmin.hh from ../idl/omniEvents.hh # omniEventsLog.h from main.cc # ../idl/FT.hh from ../idl/omniEvents.hh # version.h from main.cc naming.o: \ naming.cc \ config.h \ scour.h \ naming.h \ ## Diagnostic information starts here # config.h from naming.h # scour.h from config.h # naming.h from naming.cc omniEvents.o: \ omniEvents.cc \ config.h \ omniEvents.h \ defaults.h \ scour.h \ ## Diagnostic information starts here # config.h from omniEvents.cc # omniEvents.h from omniEvents.cc # defaults.h from omniEvents.cc # scour.h from config.h omniEventsLog.o: \ omniEventsLog.cc \ config.h \ EventChannel.h \ PersistNode.h \ ../idl/COS_sysdep.h \ ../idl/omniEvents.hh \ Servant.h \ defaults.h \ ../idl/CosLifeCycle.hh \ gethostname.h \ ../idl/CosEventChannelAdmin.hh \ Mapper.h \ omniEventsLog.h \ Orb.h \ ../idl/FT.hh \ ../idl/EventChannelAdmin.hh \ ../idl/CosEventComm.hh \ EventChannelFactory.h \ scour.h \ ## Diagnostic information starts here # config.h from omniEventsLog.cc # EventChannel.h from EventChannelFactory.h # PersistNode.h from EventChannel.h # ../idl/COS_sysdep.h from ../idl/CosEventChannelAdmin.hh # ../idl/omniEvents.hh from EventChannel.h # Servant.h from EventChannel.h # defaults.h from EventChannel.h # ../idl/CosLifeCycle.hh from ../idl/EventChannelAdmin.hh # gethostname.h from omniEventsLog.cc # ../idl/CosEventChannelAdmin.hh from ../idl/omniEvents.hh # Mapper.h from EventChannel.h # omniEventsLog.h from omniEventsLog.cc # Orb.h from omniEventsLog.cc # ../idl/FT.hh from ../idl/omniEvents.hh # ../idl/EventChannelAdmin.hh from ../idl/omniEvents.hh # ../idl/CosEventComm.hh from ../idl/CosEventChannelAdmin.hh # EventChannelFactory.h from omniEventsLog.cc # scour.h from config.h Orb.o: \ Orb.cc \ config.h \ Orb.h \ Callback.h \ scour.h \ ## Diagnostic information starts here # config.h from Orb.h # Orb.h from Orb.cc # Callback.h from Orb.cc # scour.h from config.h PersistNode.o: \ PersistNode.cc \ config.h \ PersistNode.h \ scour.h \ ## Diagnostic information starts here # config.h from PersistNode.h # PersistNode.h from PersistNode.cc # scour.h from config.h ProxyManager.o: \ ProxyManager.cc \ config.h \ ProxyManager.h \ Servant.h \ omniEventsLog.h \ PersistNode.h \ Orb.h \ scour.h \ ## Diagnostic information starts here # config.h from PersistNode.h # ProxyManager.h from ProxyManager.cc # Servant.h from ProxyManager.h # omniEventsLog.h from ProxyManager.cc # PersistNode.h from ProxyManager.cc # Orb.h from ProxyManager.cc # scour.h from config.h ProxyPullConsumer.o: \ ProxyPullConsumer.cc \ ProxyPullConsumer.h \ config.h \ ../idl/COS_sysdep.h \ ProxyManager.h \ Servant.h \ ../idl/CosEventChannelAdmin.hh \ PersistNode.h \ omniEventsLog.h \ Orb.h \ scour.h \ ../idl/CosEventComm.hh \ ## Diagnostic information starts here # ProxyPullConsumer.h from ProxyPullConsumer.cc # config.h from ProxyPullConsumer.h # ../idl/COS_sysdep.h from ../idl/CosEventChannelAdmin.hh # ProxyManager.h from ProxyPullConsumer.h # Servant.h from ProxyManager.h # ../idl/CosEventChannelAdmin.hh from ProxyPullConsumer.h # PersistNode.h from ProxyPullConsumer.cc # omniEventsLog.h from ProxyPullConsumer.cc # Orb.h from ProxyPullConsumer.cc # scour.h from config.h # ../idl/CosEventComm.hh from ../idl/CosEventChannelAdmin.hh ProxyPullSupplier.o: \ ProxyPullSupplier.cc \ config.h \ EventChannel.h \ ../idl/COS_sysdep.h \ ProxyManager.h \ ../idl/omniEvents.hh \ Servant.h \ ProxyPullSupplier.h \ ../idl/CosLifeCycle.hh \ ../idl/CosEventChannelAdmin.hh \ omniEventsLog.h \ Mapper.h \ PersistNode.h \ Orb.h \ scour.h \ ../idl/EventChannelAdmin.hh \ Filter.h \ EventQueue.h \ ../idl/CosEventComm.hh \ defaults.h \ ../idl/FT.hh \ ## Diagnostic information starts here # config.h from Orb.h # EventChannel.h from ProxyPullSupplier.cc # ../idl/COS_sysdep.h from ../idl/CosEventComm.hh # ProxyManager.h from ProxyPullSupplier.h # ../idl/omniEvents.hh from EventChannel.h # Servant.h from EventChannel.h # ProxyPullSupplier.h from ProxyPullSupplier.cc # ../idl/CosLifeCycle.hh from ../idl/EventChannelAdmin.hh # ../idl/CosEventChannelAdmin.hh from ../idl/omniEvents.hh # omniEventsLog.h from ProxyPullSupplier.cc # Mapper.h from EventChannel.h # PersistNode.h from EventChannel.h # Orb.h from ProxyPullSupplier.cc # scour.h from config.h # ../idl/EventChannelAdmin.hh from ../idl/omniEvents.hh # Filter.h from EventQueue.h # EventQueue.h from ProxyPullSupplier.h # ../idl/CosEventComm.hh from ../idl/omniEvents.hh # defaults.h from EventChannel.h # ../idl/FT.hh from ../idl/omniEvents.hh ProxyPushConsumer.o: \ ProxyPushConsumer.cc \ config.h \ ../idl/COS_sysdep.h \ Filter.h \ Servant.h \ Callback.h \ ../idl/CosEventChannelAdmin.hh \ EventQueue.h \ ConsumerAdmin.h \ PersistNode.h \ Orb.h \ scour.h \ ProxyPushConsumer.h \ ../idl/CosEventComm.hh \ omniEventsLog.h \ ## Diagnostic information starts here # config.h from ConsumerAdmin.h # ../idl/COS_sysdep.h from ../idl/CosEventChannelAdmin.hh # Filter.h from EventQueue.h # Servant.h from ConsumerAdmin.h # Callback.h from ProxyPushConsumer.h # ../idl/CosEventChannelAdmin.hh from ConsumerAdmin.h # EventQueue.h from ConsumerAdmin.h # ConsumerAdmin.h from ProxyPushConsumer.cc # PersistNode.h from ProxyPushConsumer.cc # Orb.h from Filter.h # scour.h from config.h # ProxyPushConsumer.h from ProxyPushConsumer.cc # ../idl/CosEventComm.hh from ../idl/CosEventChannelAdmin.hh # omniEventsLog.h from ProxyPushConsumer.cc ProxyPushSupplier.o: \ ProxyPushSupplier.cc \ config.h \ ../idl/COS_sysdep.h \ Filter.h \ ProxyManager.h \ Servant.h \ Callback.h \ ../idl/CosEventChannelAdmin.hh \ omniEventsLog.h \ PersistNode.h \ Orb.h \ scour.h \ EventQueue.h \ ../idl/CosEventComm.hh \ ProxyPushSupplier.h \ ## Diagnostic information starts here # config.h from PersistNode.h # ../idl/COS_sysdep.h from ../idl/CosEventChannelAdmin.hh # Filter.h from EventQueue.h # ProxyManager.h from ProxyPushSupplier.h # Servant.h from ProxyManager.h # Callback.h from ProxyPushSupplier.h # ../idl/CosEventChannelAdmin.hh from ProxyPushSupplier.h # omniEventsLog.h from ProxyPushSupplier.cc # PersistNode.h from ProxyPushSupplier.cc # Orb.h from ProxyPushSupplier.cc # scour.h from config.h # EventQueue.h from ProxyPushSupplier.h # ../idl/CosEventComm.hh from ../idl/CosEventChannelAdmin.hh # ProxyPushSupplier.h from ProxyPushSupplier.cc Servant.o: \ Servant.cc \ Servant.h \ config.h \ Orb.h \ scour.h \ ## Diagnostic information starts here # Servant.h from Servant.cc # config.h from Servant.h # Orb.h from Servant.cc # scour.h from config.h SupplierAdmin.o: \ SupplierAdmin.cc \ ProxyPullConsumer.h \ config.h \ ../idl/COS_sysdep.h \ ProxyManager.h \ ../idl/omniEvents.hh \ Servant.h \ ../idl/CosLifeCycle.hh \ SupplierAdmin.h \ Callback.h \ ../idl/CosEventChannelAdmin.hh \ Mapper.h \ PersistNode.h \ Orb.h \ scour.h \ EventChannel.h \ ../idl/EventChannelAdmin.hh \ ProxyPushConsumer.h \ ../idl/CosEventComm.hh \ defaults.h \ ../idl/FT.hh \ ## Diagnostic information starts here # ProxyPullConsumer.h from SupplierAdmin.cc # config.h from ProxyPullConsumer.h # ../idl/COS_sysdep.h from ../idl/CosEventChannelAdmin.hh # ProxyManager.h from ProxyPullConsumer.h # ../idl/omniEvents.hh from EventChannel.h # Servant.h from ProxyManager.h # ../idl/CosLifeCycle.hh from ../idl/EventChannelAdmin.hh # SupplierAdmin.h from SupplierAdmin.cc # Callback.h from ProxyPushConsumer.h # ../idl/CosEventChannelAdmin.hh from SupplierAdmin.h # Mapper.h from EventChannel.h # PersistNode.h from EventChannel.h # Orb.h from Mapper.h # scour.h from config.h # EventChannel.h from SupplierAdmin.cc # ../idl/EventChannelAdmin.hh from ../idl/omniEvents.hh # ProxyPushConsumer.h from SupplierAdmin.cc # ../idl/CosEventComm.hh from ../idl/CosEventChannelAdmin.hh # defaults.h from EventChannel.h # ../idl/FT.hh from ../idl/omniEvents.hh version.o: \ version.cc \ config.h \ scour.h \ ## Diagnostic information starts here # config.h from version.cc # scour.h from config.h omniEvents-2_6_2/src/gethostname.h0000644000076400001440000000537510227236245017421 0ustar alexusers00000000000000/* Package : omniEvents * gethostname.h Created : 2003/10/31 * Author : Alex Tingle * * Copyright (C) 2003 Alex Tingle. * * This file is part of the omniEvents application. * * omniEvents is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * omniEvents is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ /** * Provides the function `int gethostname(char* hostname, size_t len)' * in a platform independent manner. The associated macro MAXHOSTNAMELEN * is also guaranteed to be set correctly. */ #ifndef __GETHOSTNAME_H #define __GETHOSTNAME_H #ifdef HAVE_CONFIG_H # include "config.h" #endif #ifdef HAVE_UNISTD_H # include #endif #ifdef SYS_UTSNAME_H # include #endif #ifdef __WIN32__ # include #endif #if defined(__VMS) && __CRTL_VER < 70000000 # include #endif #include /* * Ensure that MAXHOSTNAMELEN is defined correctly. */ #if defined(__WIN32__) && !defined(MAXHOSTNAMELEN) # define MAXHOSTNAMELEN MAX_COMPUTERNAME_LENGTH #elif defined(__WIN32__) && defined(MAXHOSTNAMELEN) # undef MAXHOSTNAMELEN # define MAXHOSTNAMELEN MAX_COMPUTERNAME_LENGTH #elif !defined(MAXHOSTNAMELEN) # define MAXHOSTNAMELEN 256 /* Apparently on some AIX versions, MAXHOSTNAMELEN is too small (32) to * reflect the true size a hostname can be. Check and fix the value. */ #elif defined(MAXHOSTNAMELEN) && (MAXHOSTNAMELEN < 64) # undef MAXHOSTNAMELEN # define MAXHOSTNAMELEN 256 #endif #ifndef HAVE_GETHOSTNAME inline int gethostname(char* hostname, size_t len) { int result =-1; if(len<1) { errno=EINVAL; return result; } if(len>MAXHOSTNAMELEN) { len=MAXHOSTNAMELEN; } #if defined(__WIN32__) DWORD dwordlen = len; if( GetComputerName((LPTSTR) hostname, &dwordlen) ) { result=0; } else { errno=EFAULT; } #else struct utsname un; if( uname(&un)==0 && strlen(un.nodename) #include #include static char* letP =NULL; // Speichert den Ort des Zeichens der // naechsten Option static char SW ='-'; // DOS-Schalter, entweder '-' oder '/' // -------------------------------------------------------------- exports ---- extern "C" { int optind = 1; // Index: welches Argument ist das naechste char* optarg; // Zeiger auf das Argument der akt. Option int opterr = 1; // erlaubt Fehlermeldungen } // =========================================================================== int getopt(int argc, char *argv[], const char *optionS) { unsigned char ch; char *optP; if(argc>optind) { if(letP==NULL) { // Initialize letP if( (letP=argv[optind])==NULL || *(letP++)!=SW ) goto gopEOF; if(*letP == SW) { // "--" is end of options. optind++; goto gopEOF; } } if((ch=*(letP++))== '\0') { // "-" is end of options. optind++; goto gopEOF; } if(':'==ch || (optP=(char*)strchr(optionS,ch)) == NULL) { goto gopError; } // 'ch' is a valid option // 'optP' points to the optoin char in optionS if(':'==*(++optP)) { // Option needs a parameter. optind++; if('\0'==*letP) { // parameter is in next argument if(argc <= optind) goto gopError; letP = argv[optind++]; } optarg = letP; letP = NULL; } else { // Option needs no parameter. if('\0'==*letP) { // Move on to next argument. optind++; letP = NULL; } optarg = NULL; } return ch; } gopEOF: optarg=letP=NULL; return EOF; gopError: optarg = NULL; errno = EINVAL; if(opterr) perror ("error in command line"); return ('?'); } // =========================================================================== // Ende von getopt () // =========================================================================== #endif // HAVE_GETOPT omniEvents-2_6_2/src/getopt.h0000644000076400001440000000421310227236245016373 0ustar alexusers00000000000000// -*- Mode: C++; -*- // Package : omniEvents // getopt.h Created : 1/4/98 // Author : Paul Nader (pwn) // // Copyright (C) 1998 Paul Nader. // // This file is part of the omniEvents application. // // omniEvents is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public // License as published by the Free Software Foundation; either // version 2.1 of the License, or (at your option) any later version. // // omniEvents is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU // Lesser General Public License for more details. // // You should have received a copy of the GNU Lesser General Public // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // // Description: // /* $Log: getopt.h,v $ Revision 1.2 2004/07/15 14:34:31 alextingle Global variables are now declared extern "C". Revision 1.1 2003/12/21 16:19:49 alextingle Moved into 'src' directory as part of the change to POA implementation. Revision 1.2 2003/11/03 22:36:48 alextingle Updated License to GNU Lesser General Public v2.1 Revision 1.1.1.1 2002/09/25 19:00:32 shamus13 Import of OmniEvents source tree from release 2.1.1 Revision 1.4 2000/09/24 07:17:12 naderp Fixed file comment. Revision 1.3 1999/04/23 16:04:53 naderp *** empty log message *** * Revision 1.2 99/04/23 12:11:20 12:11:20 naderp (Paul Nader) * *** empty log message *** * * Revision 1.1 99/04/23 09:36:25 09:36:25 naderp (Paul Nader) * Initial revision * */ #ifndef __GETOPT_H #define __GETOPT_H extern "C" { extern int optind; // Index: welches Argument ist das naechste extern char* optarg; // Zeiger auf das Argument der akt. Option extern int opterr; // erlaubt Fehlermeldungen } int getopt(int argc, char *argv[], const char *optionS); #endif /* __GETOPT_H */ omniEvents-2_6_2/src/main.cc0000644000076400001440000002147410240477571016167 0ustar alexusers00000000000000// Package : omniEvents // main.cc Created : 2004/08/01 // Author : Alex Tingle. // // Copyright (C) 1998 Paul Nader, 2004-2005 Alex Tingle. // // This file is part of the omniEvents application. // // omniEvents is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public // License as published by the Free Software Foundation; either // version 2.1 of the License, or (at your option) any later version. // // omniEvents is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU // Lesser General Public License for more details. // // You should have received a copy of the GNU Lesser General Public // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // // Description: // Event Services Channel Factory implementation. The factory registers // itself with the naming service. Clients wishing to create event // channels can either use the factory by resolving its name with the // naming service or create in-process channels. // #ifdef HAVE_CONFIG_H # include "config.h" #endif #ifdef HAVE_GETOPT # include extern char* optarg; extern int optind; #else # include "getopt.h" #endif #include "main.h" #include "omniEvents.h" #include "naming.h" #include "omniEventsLog.h" #include "EventChannelFactory.h" #include "Orb.h" #include "daemon.h" #include "version.h" #if defined(HAVE_SIGNAL_H) && defined(HAVE_SIGSET) # include # define SIGSET(sig,func) ::sigset(sig,func) #elif defined(HAVE_SIGNAL_H) # include # define SIGSET(sig,func) ::signal(sig,func) #endif #ifdef HAVE_OMNIORB4 # include #endif #include // for sprintf int main(int argc, char** argv) { OmniEvents::Daemon daemon(argc,argv); #ifdef HAVE_OMNIORB4 try { // Duplicate argv & argc. int originalArgc =argc; char** originalArgv =new char*[originalArgc]; for(int i=0; ichild("ecf")->attrLong("port")) { cerr<< "Error: Option '-p "<child("ecf")->attrLong("port")<<"'\n stored in" " database file '"<child("ecf")->attrString("endPointNoListen")) { cerr<< "Error: Option '-a "<child("ecf")->attrString("endPointNoListen")<<"'\n" " stored in database file '"<child("ecf")->attrLong("port",port); string endPoint2=initialState->child("ecf")->attrString("endPointNoListen"); // // Daemonise daemon.daemonize(); // // Initialise orb & POAs. #ifdef HAVE_OMNIORB4 char endPoint[64]; sprintf(endPoint,"giop:::%d",port); if(endPoint2.empty()) { const char* opts[][2] ={ {"endPoint",endPoint}, {0,0} }; Orb::inst()._orb=CORBA::ORB_init(originalArgc,originalArgv,"omniORB4",opts); } else { const char* opts[][2] ={ {"endPoint",endPoint}, {"endPointNoListen",endPoint2.c_str()}, {0,0} }; Orb::inst()._orb=CORBA::ORB_init(originalArgc,originalArgv,"omniORB4",opts); } #else insertArgs(argc, argv, 1, 2); argv[1] = strdup("-ORBpoa_iiop_port"); argv[2] = new char[32 + 1]; sprintf(argv[2], "%d", port); Orb::inst()._orb=CORBA::ORB_init(argc,argv); #endif Orb::inst().resolveInitialReferences(); { PortableServer::POAManager_var pman; pman=Orb::inst()._RootPOA->the_POAManager(); pman->activate(); pman=Orb::inst()._omniINSPOA->the_POAManager(); pman->activate(); } // // If omniEvents is restarting then the omniEventsLog object // will take care of creating the factory and any subordinate // event channels, proxies, etc under it. logfile.incarnateFactory(initialState); delete initialState; // Tidy up. initialState=NULL; { // // Register factory with the Naming Service. omniEvents::EventChannelFactory_var factory( logfile.factory()->_this() ); bindName2Object( Orb::inst()._NameService.in(), str2name(factoryName), factory.in() ); // // Print the factory IOR. if(verbose) { DB(1,"Starting omniEvents on port "<object_to_string(factory.in()); DB(1,iorstr.in()) } } // factory reference is released. #ifdef HAVE_SIGNAL_H SIGSET(SIGINT , ::OmniEvents_Orb_shutdown); SIGSET(SIGTERM, ::OmniEvents_Orb_shutdown); # ifdef SIGUSR1 SIGSET(SIGUSR1, ::OmniEvents_Orb_bumpTraceLevel); # endif # ifdef SIGPIPE SIGSET(SIGPIPE, SIG_IGN); // Ignore broken pipes # endif #endif daemon.runningOk(); // // Start the background tasks. logfile.runWorker(); // Logfile's worker thread. Orb::inst().run(); // Use the main thread to collect orphaned responses. DB(1,"Shutdown requested.") Orb::inst()._orb->shutdown(1); // Synchronous shutdown Orb::inst()._orb->destroy(); // clean up return 0; // Delete any pidfile & exit. #ifdef HAVE_OMNIORB4 } catch (CORBA::SystemException& ex) { DB(0,"System exception: "< Revision 1.4 2004/07/26 16:22:25 alextingle New method: str2name() parses a stringified naming service name info a CosNaming::Name. Revision 1.3 2004/07/02 15:20:39 alextingle Added daemonization, syslog & pidfile support on Unix. Corrected trace levels for consistency with omniORB. Revision 1.2 2004/04/21 10:01:42 alextingle Removed unused code. Now silently fails if the Orb has no naming service ref. Revision 1.1 2003/12/21 16:19:49 alextingle Moved into 'src' directory as part of the change to POA implementation. Revision 1.3 2003/12/01 09:03:13 alextingle Now reports more specific exceptions (only with omniORB4). Revision 1.2 2003/11/03 22:45:31 alextingle Removed all platform specific switches. Now uses autoconf, config.h. Revision 1.1.1.1 2002/09/25 19:00:35 shamus13 Import of OmniEvents source tree from release 2.1.1 Revision 1.3 2000/09/26 08:44:58 naderp Added stdlib.h include for exit function. Revision 1.2 2000/09/04 03:45:52 naderp Changed headers. Revision 1.1 1999/11/01 17:00:16 naderp Initial revision */ #include "naming.h" #include #ifdef HAVE_IOMANIP # include #else # include #endif #ifdef HAVE_STDLIB_H # include // for exit #endif ostream& operator<<(ostream& os, const CosNaming::Name &n) { for(CORBA::ULong i=0; ibind_new_context(n); } catch(CosNaming::NamingContext::AlreadyBound&) { CORBA::Object_var obj2 =namingContext->resolve(n); namingContext=CosNaming::NamingContext::_narrow(obj2); } // One of the context names is already bound to an object. Bail out! if(CORBA::is_nil(namingContext)) return 2; } // Bind the object n[0]=name[name.length()-1]; try { namingContext->bind(n,obj); } catch(CosNaming::NamingContext::AlreadyBound& ex) { // overwrite previously bound object namingContext->rebind(n,obj); } return 0; } catch (CORBA::COMM_FAILURE& ex) { cerr << "Caught system exception COMM_FAILURE, unable to contact the " << "naming service." << endl; } catch (omniORB::fatalException& ex) { cerr << "Caught omniORB fatal exception binding " << name << endl; throw; } catch (CORBA::SystemException& ex) { const char* exName =NULL; const char* exMinor =NULL; #ifdef HAVE_OMNIORB4 exName =ex.NP_minorString(); exMinor=ex.NP_minorString(); #endif cerr<<"System exception binding "< #else # include #endif #ifdef HAVE_STD_IOSTREAM using namespace std; #endif #ifdef HAVE_OMNIORB3 # include #endif #ifdef HAVE_OMNIORB4 # include #endif ostream& operator<<(ostream& os, const CosNaming::Name &n); /** Converts stringified name to naming service name. * * Format for name: [[.]/]*[.] * * E.g. foo, foo.bar, foo.bar/baz/qux, foo/bar/baz.qux */ CosNaming::Name str2name(const char* namestr); /** Binds CosNaming::Name to object in the naming service. */ int bindName2Object( CosNaming::NamingContext_ptr namingContext, const CosNaming::Name & name, CORBA::Object_ptr obj ); #endif /* _NAMING_H_ */ omniEvents-2_6_2/src/omniEvents.cc0000644000076400001440000000623010240451211017342 0ustar alexusers00000000000000// Package : omniEvents // omniEvents.cc Created : 1/4/98 // Author : Paul Nader (pwn) // // Copyright (C) 1998 Paul Nader, 2003-2005 Alex Tingle // // This file is part of the omniEvents application. // // omniEvents is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public // License as published by the Free Software Foundation; either // version 2.1 of the License, or (at your option) any later version. // // omniEvents is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU // Lesser General Public License for more details. // // You should have received a copy of the GNU Lesser General Public // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // #include "omniEvents.h" #define NEED_PACKAGE_INFO #ifdef HAVE_CONFIG_H # include "config.h" #endif #ifdef HAVE_IOSTREAM # include #else # include #endif #ifdef HAVE_STDLIB_H # include // exit() #endif #ifdef HAVE_STD_IOSTREAM using namespace std; #endif #include "defaults.h" namespace OmniEvents { void usage(int argc, char **argv) { const char* command =(argc?argv[0]:PACKAGE_NAME); cout<< "\n" #ifdef __WIN32__ "just run it: "< #ifdef HAVE_STDLIB_H # include #endif #ifdef HAVE_SYS_TYPES_H # include #endif #ifdef HAVE_SYS_STAT_H # include #endif #ifdef HAVE_FCNTL_H # include #endif #if defined(__VMS) && __CRTL_VER < 70000000 # include #endif #ifdef __WIN32__ # include # include # define stat(x,y) _stat(x,y) # define unlink(x) _unlink(x) # define STRUCT_STAT struct _stat #else # define STRUCT_STAT struct stat #endif // __WIN32__ #ifdef HAVE_UNISTD_H # include #endif #ifdef HAVE_LIBC_H # include #endif #ifdef HAVE_SYS_PARAM_H # include #endif #include #include #include #include "gethostname.h" #include "EventChannelFactory.h" #include "Orb.h" #include "defaults.h" // // Set flags for use in calls to omniEventsLog::openOfstream() // #if defined(HAVE_FSTREAM_OPEN) # define FLAG_TRUNCATE ios::trunc # define FLAG_APPEND ios::app # define FLAG_SYNC 0 #elif defined(HAVE_FSTREAM_ATTACH) # if defined(__WIN32__) # define FLAG_SYNC 0 # elif defined(O_SYNC) # define FLAG_SYNC O_SYNC # else # define FLAG_SYNC O_FSYNC // FreeBSD 3.2 does not have O_SYNC??? # endif # define FLAG_TRUNCATE O_CREAT|O_TRUNC # define FLAG_APPEND O_APPEND #else # error "Can't open a file without ofstream::open() or ofstream::attach()" #endif // // Append ';' to VMS filenames to force the latest version. // #ifdef __VMS # define VMS_SEMICOLON ";" #else # define VMS_SEMICOLON #endif extern int yyparse(); extern int yydebug; extern FILE *yyin; namespace OmniEvents { /** This class can be used to generate timestamps. The t() method normally * returns a timestamp string, but if the same timestamp (to the nearest * second) would be returned as last time then an empty string is returned * instead. */ class timestamp { char str[29]; public: timestamp(void) { str[0] = '['; str[1] = str[28] = '\0'; } const char* t(void) { time_t t =time(NULL); char* p =ctime(&t); if(strncmp(p, &str[1], 24) == 0) return ""; strncpy(&str[1], p, 24); str[25] = ']'; str[26] = ' '; str[27] = ' '; return str; } }; timestamp ts; //------------------------------------------------------------------------ // omniEvents Log Implementation //------------------------------------------------------------------------ omniEventsLog *omniEventsLog::theLog = NULL; omniEventsLog::omniEventsLog(const char* logdir) : _logstream(), _activeFilename(NULL), _backupFilename(NULL), _checkpointFilename(NULL), _workerThread(NULL), _factory(NULL), _checkpointNeeded(true), _lock() { omniEventsLog::theLog = this; initializeFileNames(logdir); } omniEventsLog::~omniEventsLog() { DB(20, "omniEventsLog::~omniEventsLog()"); /* if(NULL != _workerThread) { _workerThread->join(0); _workerThread = NULL; } */ if(NULL != _factory) { _factory->_remove_ref(); _factory = NULL; } omniEventsLog::theLog = NULL; } bool omniEventsLog::fileExists(const char* filename) const { STRUCT_STAT sb; return(::stat(filename,&sb) == 0); } PersistNode* omniEventsLog::bootstrap(int port, const char* endPointNoListen) { // // Construct a new initialState, from the arguments. PersistNode* initialState=new PersistNode(); PersistNode* ecf =initialState->addnode("ecf"); ecf->addattr("port",port); if(endPointNoListen && endPointNoListen[0]) ecf->addattr(string("endPointNoListen=")+endPointNoListen); return initialState; } // bootstrap() PersistNode* omniEventsLog::parse() { // // Restart - parse log file. ifstream persiststream(_activeFilename); if(!persiststream) { cerr << "Error: cannot read database file '" << _activeFilename << "'." << endl; if( fileExists(_backupFilename) ) { cerr << " Backup file '" << _backupFilename << "' exists.\n" " Either rename it to '" << _activeFilename << "' to\n" " to recover the server's state, or delete it to create a new\n" " database file." << endl; } exit(1); } PersistNode* initialState=new PersistNode(persiststream); persiststream.close(); // // Check that the file contains a valid EventChannelFactory. const char* errorStr =NULL; PersistNode* ecf=initialState->child("ecf"); if(!ecf) errorStr="Can't find EventChannelFactory."; else if(ecf->attrLong("port",-1)<=0) errorStr="EventChannelFactory is not assigned a valid port."; if(errorStr) { cerr<<"Error parsing database '"<<_activeFilename<<"'.\n" <child("ecf"); assert(ecf!=NULL); _factory =new EventChannelFactory_i(*ecf); CORBA::Object_var obj; assert(!CORBA::is_nil(obj = _factory->_this())); } // incarnateFactory void omniEventsLog::runWorker() { assert(_factory!=NULL); _workerThread=new omniEventsLogWorker( this, &omniEventsLog::checkpoint, // member function pointer omni_thread::PRIORITY_NORMAL ); } void omniEventsLog::output(ostream& os) { _factory->output(os); os<fd()); #endif _logstream.close(); unlink(_backupFilename); #if defined(__WIN32__) if(rename(_activeFilename, _backupFilename) != 0) #elif defined(__VMS) if(rename(_activeFilename, _backupFilename) < 0) #else if(link(_activeFilename,_backupFilename) < 0) #endif { // Failure here leaves old active and checkpoint file. DB(0,ts.t() << "Error: failed to link backup file '" << _backupFilename << "' to old log file '" << _activeFilename << "'.") exit(1); } #if !defined( __VMS) && !defined(__WIN32__) if(unlink(_activeFilename) < 0) { // Failure here leaves active and backup pointing to the same (old) file. DB(0,ts.t() << "Error: failed to unlink old log file '" << _activeFilename << "': " << strerror(errno)) exit(1); } #endif #if defined(__WIN32__) if(rename(_checkpointFilename,_activeFilename) != 0) #elif defined(__VMS) if(rename(_checkpointFilename,_activeFilename) < 0) #else if(link(_checkpointFilename,_activeFilename) < 0) #endif { // Failure here leaves no active but backup points to the old file. DB(0,ts.t() << "Error: failed to link log file '" << _activeFilename << "' to checkpoint file '" << _checkpointFilename << "'.") exit(1); } #if !defined( __VMS) && !defined(__WIN32__) if (unlink(_checkpointFilename) < 0) { // Failure here leaves active and checkpoint pointing to the same file. DB(0,ts.t() << "Error: failed to unlink checkpoint file '" << _checkpointFilename << "'.") exit(1); } #endif try { openOfstream(_logstream,_activeFilename,FLAG_APPEND|FLAG_SYNC,&fd); } catch (IOError& ex) { DB(0,ts.t() << "Error: cannot open new log file '" << _activeFilename << "' for writing.") exit(1); } DB(1,ts.t() << "Checkpointing completed.") _checkpointNeeded=false; _lock.unlock(); } mutex.unlock(); } // checkpoint /** Sets the values of 'active', 'backup' and 'checkpoint' file names. * The files are placed in the log file directory, that is specified by: * * - command line parameter -l, OR ELSE * - OMNIEVENTS_LOGDIR_ENV_VAR env. var. (default `OMNIEVENTS_LOGDIR'), OR ELSE * - OMNIEVENTS_LOG_DEFAULT_LOCATION (set in defaults.h), OR ELSE * - Unix: /var/lib/omniEvents, Win32: C:\TEMP, VMS: [] * * The current hostname is incorporated into the file names. */ void omniEventsLog::initializeFileNames(const char* logdir) { if(!logdir) logdir=getenv(OMNIEVENTS_LOGDIR_ENV_VAR); if(!logdir) logdir=OMNIEVENTS_LOG_DEFAULT_LOCATION; const char* logname ="omnievents-"; char hostname[MAXHOSTNAMELEN]; if (0!=gethostname(hostname,MAXHOSTNAMELEN)) { cerr << "Error: cannot get the name of this host." << endl; exit(1); } const char* sep =""; #if defined(__WIN32__) sep="\\"; #elif defined(__VMS) char last( logdir[strlen(logdir)-1] ); if (last != ':' && last != ']') { cerr << "Error: " << OMNIEVENTS_LOGDIR_ENV_VAR << " (" << logdir << ") is not a directory name." << endl; exit(1); } #else // Unix if (logdir[0] != '/') { cerr << "Error: " << OMNIEVENTS_LOGDIR_ENV_VAR << " (" << logdir << ") is not an absolute path name." << endl; exit(1); } if (logdir[strlen(logdir)-1] != '/') sep="/"; #endif // VMS_SEMICOLON specifies latest version of the file on VMS // (essentially, we're saying we don't want to use VMS file versioning). setFilename(_activeFilename,logdir,sep,logname,hostname,".log" VMS_SEMICOLON); setFilename(_backupFilename,logdir,sep,logname,hostname,".bak" VMS_SEMICOLON); setFilename( _checkpointFilename,logdir,sep,logname,hostname,".ckp" VMS_SEMICOLON); } /** Helper function that sets the value of the first parameter to the * concatenation of all the subsequent parameters. */ void omniEventsLog::setFilename( char*& filename, const char* logdir, const char* sep, const char* logname, const char* hostname, const char* ext) { size_t len=1+ strlen(logdir)+strlen(sep)+strlen(logname)+strlen(hostname)+strlen(ext); filename=new char[len]; sprintf(filename,"%s%s%s%s%s",logdir,sep,logname,hostname,ext); } /** Helper method that opens an output file stream using whatever method * is available. Available flags are: * * - FLAG_TRUNCATE * - FLAG_APPEND * - FLAG_SYNC * * @param s reference to the ofstream object. * @param filename the name of the file to open. * @param flags see description for available mode flags. * @param fd reference to a file descriptor. If used, this parameter is set * to the fd that was opened, if any. */ void omniEventsLog::openOfstream( ofstream& s, const char* filename, int flags, int* fd) { #if defined(HAVE_FSTREAM_OPEN) # ifdef HAVE_STD_IOSTREAM ios::openmode openmodeflags =ios::out|ios::openmode(flags); # else int openmodeflags =ios::out|flags; # endif # ifdef FSTREAM_OPEN_PROT s.open(filename,openmodeflags,0644); # else s.open(filename,openmodeflags); # endif if (!s) throw IOError(); #elif defined(HAVE_FSTREAM_ATTACH) # ifdef __WIN32__ int localFd = _open(filename, O_WRONLY | flags, _S_IWRITE); # else int localFd = open(filename, O_WRONLY | flags, 0644); # endif /* __WIN32__ */ if (localFd < 0) throw IOError(); if(fd) (*fd)=localFd; s.attach(localFd); #endif } //------------------------------------------------------------------------ // OmniEvents Log Worker Implementation //------------------------------------------------------------------------ omniEventsLogWorker::omniEventsLogWorker( omniEventsLog* object, Method method, priority_t priority ):omni_thread(NULL,priority) { DB(15, "omniEventsLogWorker::omniEventsLogWorker()"); _method=method; _object=object; start_undetached(); } void* omniEventsLogWorker::run_undetached(void *) { try { DB(15, "omniEventsLogWorker : run_undetached Start"); (_object->*_method)(); DB(15, "omniEventsLogWorker : run_undetached End"); } catch (CORBA::SystemException& ex) { DB(0,"omniEventsLogWorker killed by CORBA system exception" IF_OMNIORB4(": "< # include #else # include # include #endif #ifdef HAVE_STD_IOSTREAM using namespace std; #endif #ifdef HAVE_OMNIORB3 # include #endif #ifdef HAVE_OMNIORB4 # include #endif namespace OmniEvents { class EventChannelFactory_i; class PersistNode; #ifndef OMNIEVENTS_LOGDIR_ENV_VAR # define OMNIEVENTS_LOGDIR_ENV_VAR "OMNIEVENTS_LOGDIR" #endif class omniEventsLog { public: /** Library code may create Event Service objects without the need for * persistency. We use this method to check for the log object, before * attempting to write out state changes. */ static bool exists() { return NULL!=omniEventsLog::theLog; } omniEventsLog(const char* logdir=NULL); virtual ~omniEventsLog(); bool fileExists(const char* filename) const; const char* activeFilename() const { return _activeFilename; } const char* backupFilename() const { return _backupFilename; } /** Creates an initialState from its arguments. Used when the server is * cold started with no saved state. Aborts with an error if there are any * logfiles in the log directory. */ PersistNode* bootstrap(int port, const char* endPointNoListen); /** Creates an initialState from the logfile. Used when the server is warm * started. Aborts with an error if there is no logfile in the log * directory. */ virtual PersistNode* parse(); /** Constructs the EventChannelFactory from the information in the * initialState parameter. */ void incarnateFactory(PersistNode* initialState); /** Kicks off the worker thread that periodically checkpoints the * persistency logfile. */ virtual void runWorker(); /** accessor method */ EventChannelFactory_i* factory() {return _factory;} /** Entry point used by the omniEventsLogWorker to perform checkpointing. * The active logfile is moved to backup, and a new active logfile is * created. */ void checkpoint(void); virtual void output(ostream& os); public: class IOError {}; protected: virtual void initializeFileNames(const char* logdir); void setFilename( char*& filename, ///< OUT parameter. const char* logdir, const char* sep, const char* logname, const char* hostname, const char* ext ); virtual void openOfstream( ofstream& s, const char* filename, int flags=0, int* fd=NULL ); static omniEventsLog* theLog; ofstream _logstream; char* _activeFilename; char* _backupFilename; char* _checkpointFilename; omni_thread* _workerThread; ///< In charge of checkpoints. EventChannelFactory_i* _factory; bool _checkpointNeeded; omni_mutex _lock; friend class WriteLock; }; class omniEventsLogWorker : public omni_thread { public: typedef void (omniEventsLog::*Method)(void); omniEventsLogWorker( omniEventsLog* object, Method method, priority_t priority=PRIORITY_NORMAL ); void* run_undetached(void *); ~omniEventsLogWorker(); private: omniEventsLog* _object; Method _method; omniEventsLogWorker(); ///< No default construction allowed. }; /** Obtains an output stream to the active persistancy logfile, and * locks it for exclusive access. The lock is released when the object is * destructed. */ class WriteLock { public: WriteLock(): os(omniEventsLog::theLog->_logstream), l(omniEventsLog::theLog->_lock) {} ~WriteLock() { os.flush(); omniEventsLog::theLog->_checkpointNeeded=true; } ostream& os; private: omni_mutex_lock l; WriteLock(const WriteLock&); ///< No implementation }; }; // end namespace OmniEvents #endif /* _OMNIEVENTSLOG_H_ */ omniEvents-2_6_2/src/scour.h0000644000076400001440000000264710227236245016235 0ustar alexusers00000000000000/* Package : omniEvents * scour.h Created : 2003/10/31 * Author : Alex Tingle * * Copyright (C) 2003 Alex Tingle. * * This file is part of the omniEvents application. * * omniEvents is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * omniEvents is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ /* The PACKAGE_* macros cause incompatabilities with omniORB4. Do not export * them unless we specifically need the package info. * These #undefs cannot be put into config.h.in because configure would * then treat them as templates to be overwritten. */ #ifndef NEED_PACKAGE_INFO # undef PACKAGE_BUGREPORT # undef PACKAGE_NAME # undef PACKAGE_STRING # undef PACKAGE_TARNAME # undef PACKAGE_VERSION #endif omniEvents-2_6_2/src/version.cc0000644000076400001440000000241110240477107016711 0ustar alexusers00000000000000// Package : omniEvents // version.cc Created : 2005/05/11 // Author : Alex Tingle // // Copyright (C) 2005 Alex Tingle // // This file is part of the omniEvents application. // // omniEvents is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public // License as published by the Free Software Foundation; either // version 2.1 of the License, or (at your option) any later version. // // omniEvents is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU // Lesser General Public License for more details. // // You should have received a copy of the GNU Lesser General Public // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // #define NEED_PACKAGE_INFO #ifdef HAVE_CONFIG_H # include "config.h" #endif namespace OmniEvents { const char* version() { return( PACKAGE_STRING "\n" "Copyright (C) 1998 Paul Nader, 2003-2005 Alex Tingle" ); } } // end namespace OmniEvents omniEvents-2_6_2/src/version.h0000644000076400001440000000222210240477101016545 0ustar alexusers00000000000000// Package : omniEvents // version.cc Created : 2005/05/11 // Author : Alex Tingle // // Copyright (C) 2005 Alex Tingle // // This file is part of the omniEvents application. // // omniEvents is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public // License as published by the Free Software Foundation; either // version 2.1 of the License, or (at your option) any later version. // // omniEvents is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU // Lesser General Public License for more details. // // You should have received a copy of the GNU Lesser General Public // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // namespace OmniEvents { /** Returns the constant version ID and copyright string. */ const char* version(); } // end namespace OmniEvents omniEvents-2_6_2/test/0000755000076400001440000000000010303573712015106 5ustar alexusers00000000000000omniEvents-2_6_2/test/Makefile0000644000076400001440000000326610240451212016543 0ustar alexusers00000000000000# Package : omniEvents # test/Makefile Created : 2003/12/17 # Author : Alex Tingle # # Copyright (C) 2003 Alex Tingle. # # This file is part of the omniEvents application. # # omniEvents is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either # version 2.1 of the License, or (at your option) any later version. # # omniEvents is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public # License along with this library; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # include ../config.mk # Set this line if your omniidl complains about... # "omniidl: Could not import back-end 'python'" #BACKEND = -pC:\Progra~1\omniORBpy-2.5\lib\python OMNIEVENTS_BASE=.. IDL_FILES = \ $(OMNIEVENTS_BASE)/idl/EventChannelAdmin.idl \ IDL_COS_FILES = \ CosLifeCycle.idl \ CosEventComm.idl \ CosEventChannelAdmin.idl \ CosTypedEventComm.idl \ CosTypedEventChannelAdmin.idl \ all: compile_idl_files compile_idl_files: $(IDL) -bpython $(BACKEND) -I$(IDL_COS_DIR)/COS $(patsubst %,$(IDL_COS_DIR)/COS/%,$(IDL_COS_FILES)) $(IDL) -bpython $(BACKEND) -I$(IDL_COS_DIR)/COS $(IDL_FILES) install: clean: $(RMDIR) EventChannelAdmin* Cos* *.pyc .PHONY: all compile_idl_files install clean omniEvents-2_6_2/test/README0000755000076400001440000000151110227236246015772 0ustar alexusers00000000000000This directory contains Python test programs. Run them using the python interpreter, and then follow with an ORBInitRef option, as follows: # Test event channel interface: python testeventchannel.py -ORBInitRef 'EventChannelFactory=corbaname::localhost#EventChannelFactory.EventChannelFactory' # Test all proxy types: python test.py -ORBInitRef 'Channel=corbaname::localhost#EventChannel.EventChannel' # Test individual proxy types: python testproxypullconsumer.py -ORBInitRef 'Channel=corbaname::localhost#EventChannel.EventChannel' python testproxypullsupplier.py -ORBInitRef 'Channel=corbaname::localhost#EventChannel.EventChannel' python testproxypushconsumer.py -ORBInitRef 'Channel=corbaname::localhost#EventChannel.EventChannel' python testproxypushsupplier.py -ORBInitRef 'Channel=corbaname::localhost#EventChannel.EventChannel' omniEvents-2_6_2/test/actions.py0000644000076400001440000001753610227236246017137 0ustar alexusers00000000000000import time,CORBA import CosEventComm import CosEventChannelAdmin timeout=5 def passed(test): print "passed:",test def failed(test): print "FAILED:",test ## ############################################################################ ## ## actions # EventChannel def for_consumers(channel): assert(channel._is_a(CosEventChannelAdmin._tc_EventChannel.id())) try: result=channel.for_consumers() assert(result._is_a(CosEventChannelAdmin._tc_ConsumerAdmin.id())) return result except CORBA.UserException, ex: failed("2.3.1a (for_consumers raised %s)"%ex.__class__.__name__) raise ex def for_suppliers(channel): assert(channel._is_a(CosEventChannelAdmin._tc_EventChannel.id())) try: result=channel.for_suppliers() assert(result._is_a(CosEventChannelAdmin._tc_SupplierAdmin.id())) return result except CORBA.UserException, ex: failed("2.3.1b (for_suppliers raised %s)"%ex.__class__.__name__) raise ex def destroy(channel): assert(channel._is_a(CosEventChannelAdmin._tc_EventChannel.id())) try: channel.destroy() except CORBA.UserException, ex: failed("2.3.1c (destroy raised %s)"%ex.__class__.__name__) raise ex # ConsumerAdmin def obtain_push_supplier(consumerAdmin): assert(consumerAdmin._is_a(CosEventChannelAdmin._tc_ConsumerAdmin.id())) try: result=consumerAdmin.obtain_push_supplier() assert(result._is_a(CosEventChannelAdmin._tc_ProxyPushSupplier.id())) return result except CORBA.UserException, ex: failed("2.3.2a (obtain_push_supplier raised %s)"%ex.__class__.__name__) raise ex def obtain_pull_supplier(consumerAdmin): assert(consumerAdmin._is_a(CosEventChannelAdmin._tc_ConsumerAdmin.id())) try: result=consumerAdmin.obtain_pull_supplier() assert(result._is_a(CosEventChannelAdmin._tc_ProxyPullSupplier.id())) return result except CORBA.UserException, ex: failed("2.3.2b (obtain_pull_supplier raised %s)"%ex.__class__.__name__) raise ex # SupplierAdmin def obtain_push_consumer(supplierAdmin): assert(supplierAdmin._is_a(CosEventChannelAdmin._tc_SupplierAdmin.id())) try: result=supplierAdmin.obtain_push_consumer() assert(result._is_a(CosEventChannelAdmin._tc_ProxyPushConsumer.id())) return result except CORBA.UserException, ex: failed("2.3.3a (obtain_push_consumer raised %s)"%ex.__class__.__name__) raise ex def obtain_pull_consumer(supplierAdmin): assert(supplierAdmin._is_a(CosEventChannelAdmin._tc_SupplierAdmin.id())) try: result=supplierAdmin.obtain_pull_consumer() assert(result._is_a(CosEventChannelAdmin._tc_ProxyPullConsumer.id())) return result except CORBA.UserException, ex: failed("2.3.3b (obtain_pull_consumer raised %s)"%ex.__class__.__name__) raise ex # ProxyPushConsumer def connect_push_supplier(proxyPushConsumer,pushSupplier): assert(proxyPushConsumer._is_a(CosEventChannelAdmin._tc_ProxyPushConsumer.id())) if(pushSupplier): assert(pushSupplier._is_a(CosEventComm._tc_PushSupplier.id())) try: proxyPushConsumer.connect_push_supplier(pushSupplier) except CosEventChannelAdmin.AlreadyConnected, ex: raise ex except CORBA.Exception, ex: failed("2.3.4a (connect_push_supplier raised %s)"%ex.__class__.__name__) if(pushSupplier is None): failed("2.3.4b (connect_push_supplier(NIL) raised %s)"%ex.__class__.__name__) raise ex # ProxyPullSupplier def connect_pull_consumer(proxyPullSupplier,pullConsumer): assert(proxyPullSupplier._is_a(CosEventChannelAdmin._tc_ProxyPullSupplier.id())) if(pullConsumer): assert(pullConsumer._is_a(CosEventComm._tc_PullConsumer.id())) try: proxyPullSupplier.connect_pull_consumer(pullConsumer) except CosEventChannelAdmin.AlreadyConnected, ex: raise ex except CORBA.Exception, ex: failed("2.3.5a (connect_pull_consumer raised %s)"%ex.__class__.__name__) if(pullConsumer is None): failed("2.3.5b (connect_pull_consumer(NIL) raised %s)"%ex.__class__.__name__) raise # ProxyPullConsumer def connect_pull_supplier(proxyPullConsumer,pullSupplier): assert(proxyPullConsumer._is_a(CosEventChannelAdmin._tc_ProxyPullConsumer.id())) if(pullSupplier): assert(pullSupplier._is_a(CosEventComm._tc_PullSupplier.id())) try: proxyPullConsumer.connect_pull_supplier(pullSupplier) except CosEventChannelAdmin.AlreadyConnected, ex: raise ex except CosEventChannelAdmin.TypeError, ex: raise ex except CORBA.UserException, ex: failed("2.3.6a (connect_pull_supplier raised %s)"%ex.__class__.__name__) raise ex # ProxyPushSupplier def connect_push_consumer(proxyPushSupplier,pushConsumer): assert(proxyPushSupplier._is_a(CosEventChannelAdmin._tc_ProxyPushSupplier.id())) if(pushConsumer): assert(pushConsumer._is_a(CosEventComm._tc_PushConsumer.id())) try: proxyPushSupplier.connect_push_consumer(pushConsumer) except CosEventChannelAdmin.AlreadyConnected, ex: raise ex except CosEventChannelAdmin.TypeError, ex: raise ex except CORBA.BAD_PARAM, ex: raise ex except CORBA.Exception, ex: failed("2.3.7a (connect_push_consumer raised %s)"%ex.__class__.__name__) raise ex # PushConsumer def push(pushConsumer,event): assert(pushConsumer._is_a(CosEventComm._tc_PushConsumer.id())) try: pushConsumer.push(event) except CosEventComm.Disconnected, ex: raise ex except CORBA.Exception, ex: failed("2.1.1b (push raised %s)"%ex.__class__.__name__) raise ex def disconnect_push_consumer(pushConsumer): assert(pushConsumer._is_a(CosEventComm._tc_PushConsumer.id())) try: pushConsumer.disconnect_push_consumer() except CORBA.Exception, ex: failed("2.1.1c (disconnect_push_consumer raised %s)"%ex.__class__.__name__) raise ex # PushSupplier def disconnect_push_supplier(pushSupplier): assert(pushSupplier._is_a(CosEventComm._tc_PushSupplier.id())) try: pushSupplier.disconnect_push_supplier() except CORBA.UserException, ex: failed("2.1.2a (disconnect_push_supplier raised %s)"%ex.__class__.__name__) raise ex # PullSupplier def pull(pullSupplier,until): assert(pullSupplier._is_a(CosEventComm._tc_PullSupplier.id())) result=None while(1): try: result = pullSupplier.pull() break except CORBA.TRANSIENT, ex: if(time.time()>until): raise ex except CosEventComm.Disconnected, ex: raise ex except CORBA.Exception, ex: failed("2.1.3a (pull raised %s)"%ex.__class__.__name__) raise ex #time.sleep(0.1) return result def try_pull(pullSupplier,until): assert(pullSupplier._is_a(CosEventComm._tc_PullSupplier.id())) result=None hasEvent=0 try: while(1): result,hasEvent = pullSupplier.try_pull() if(hasEvent or time.time()>until): break else: time.sleep(0.1) except CosEventComm.Disconnected, ex: raise ex except CORBA.Exception, ex: failed("2.1.3e (try_pull raised %s)"%ex.__class__.__name__) raise ex return result,hasEvent def disconnect_pull_supplier(pullSupplier): assert(pullSupplier._is_a(CosEventComm._tc_PullSupplier.id())) try: pullSupplier.disconnect_pull_supplier() except CORBA.UserException, ex: failed("2.1.3i (disconnect_pull_supplier raised %s)"%ex.__class__.__name__) raise ex # PullConsumer def disconnect_pull_consumer(pullConsumer): assert(pullConsumer._is_a(CosEventComm._tc_PullConsumer.id())) try: pullConsumer.disconnect_pull_consumer() except CORBA.UserException, ex: failed("2.1.4a (disconnect_pull_consumer raised %s)"%ex.__class__.__name__) raise ex ## end actions ## ## ############################################################################ omniEvents-2_6_2/test/analysis.txt0000644000076400001440000002127610227236246017505 0ustar alexusers00000000000000SHALL A complient implementation shall behave as described. FORBID A complient implementation shall NOT behave as described. (There can be no direct tests for such requirements.) ALLOW A compliant implementation MAY behave as described. (There may be tests, but they cannot fail.) 2.1.1 The PushConsumer Interface SHALL a) A supplier communicates event data to the consumer by invoking the push operation and passing the event data as a parameter. ::push FORBID b) shall NOT raise user exceptions other than CosEventComm::Disconnected. ::disconnect_push_consumer FORBID c) shall raise no user exception. SHALL d) terminates event communication. SHALL e) releases resources used at the consumer to support the event communication ALLOW f) causes the implementation to call the disconnect_push_supplier operation on the corresponding PushSupplier interface (if that interface is known). 2.1.2 The PushSupplier Interface ::disconnect_push_supplier FORBID a) shall raise no user exception. FORBID b) terminates event communication. No further events are pushed. SHALL c) causes the implementation to call the disconnect_push_consumer operation on the corresponding PushConsumer interface (if that interface is known[1]). 2.1.3 The PullSupplier Interface ::pull FORBID a) shall NOT raise user exceptions other than CosEventComm::Disconnected. SHALL b) blocks until the event data is available or an exception is raised. ALLOW c) may raise a system exception (OBVIOUSLY!). SHALL d) returns the event data to the consumer. ::try_pull FORBID e) shall NOT raise user exceptions other than CosEventComm::Disconnected. FORBID f) does not block SHALL g) if the event data is available, it returns the event data and sets the has_event parameter to true. SHALL h) if the event is not available, it sets the has_event parameter to false and the event data is returned as `long' with an undefined value. ::disconnect_pull_supplier FORBID i) shall raise no user exception. SHALL j) terminates the event communication SHALL k) releases resources used at the supplier to support the event communication. ALLOW l) causes the implementation to call the disconnect_pull_consumer operation on the corresponding PullConsumer interface (if that interface is known). 2.1.4 The PullConsumer Interface ::disconnect_pull_consumer FORBID a) shall raise no user exception. FORBID b) terminates the event communication. No further pull or try_pull calls may be made. SHALL c) releases resources used at the consumer to support the event communication. SHALL d) causes the implementation to call the disconnect_pull_supplier operation on the corresponding PullSupplier interface (if that interface is known[1]). 2.1.5 Disconnection Behavior SHALL a) If a consumer or supplier has received a disconnect call and subsequently receives another disconnect call, it shall raise a CORBA::OBJECT_NOT_EXIST exception. 2.2.3 Mixed Style Communication with an Event Channel a) An event channel can communicate with a supplier using one style of communication, and communicate with a consumer using a different style of communication. 2.2.4 Multiple Consumers and Multiple Suppliers a) An event channel can also provide many-to-many communication. b) Subject to the quality of service of a particular implementation, an event channel provides an event to all consumers. c) An event channel can support consumers and suppliers using different communication models. d) If an event channel has pull suppliers, it continues to pull events from the suppliers, regardless of whether any consumers are connected to the channel. 2.2.5 Event Channel Administration a) When an event channel is created, no suppliers or consumers are connected to the event channel. b) Upon creation of the channel, the factory returns an object reference that supports the EventChannel interface, c) Proxies are in one of three states: disconnected, connected, or destroyed. d) Push/pull operations are only valid in the connected state. e) Figure 2-6 gives a state diagram for a proxy: obtain connect disconnect / / / / / / (start) ----> DISCONNECTED ----> CONNECTED ----> DESTROYED | | | | +-->--+ \ \ event communication 2.3 The CosEventChannelAdmin Module 2.3.1 The EventChannel Interface FORBID a) ::for_consumers shall raise no user exception. FORBID b) ::for_suppliers shall raise no user exception. ::destroy FORBID c) shall raise no user exception. SHALL d) destroys the event channel. SHALL e) destroys all ConsumerAdmin and SupplierAdmin objects that were created via that channel. SHALL f) Destruction of a ConsumerAdmin or SupplierAdmin object causes the implementation to invoke the disconnect operation on all proxies that were created via that ConsumerAdmin or SupplierAdmin object. 2.3.2 The ConsumerAdmin Interface FORBID a) ::obtain_push_supplier shall raise no user exception. FORBID b) ::obtain_pull_supplier shall raise no user exception. 2.3.3 The SupplierAdmin Interface FORBID a) obtain_push_consumer shall raise no user exception. FORBID b) obtain_pull_consumer shall raise no user exception. 2.3.4 The ProxyPushConsumer Interface ::connect_push_supplier FORBID a) shall NOT raise user exceptions other than CosEventChannelAdmin::AlreadyConnected. FORBID b) shall not raise an exception if a nil object reference is provided. SHALL c) If a nil object reference is provided, events from the supplier shall still be accepted as normal. ALLOW d) If a nil object reference is provided the supplier may be disconnected from the channel without being informed. SHALL e) If a non-nil reference is passed to connect_push_supplier, the implementation calls disconnect_push_supplier via that reference when the ProxyPushConsumer is destroyed. SHALL f) If the ProxyPushConsumer is already connected to a PushSupplier, then the AlreadyConnected exception is raised. 2.3.5 The ProxyPullSupplier Interface ::connect_pull_consumer FORBID a) shall NOT raise user exceptions other than CosEventChannelAdmin::AlreadyConnected. FORBID b) shall not raise an exception if a nil object reference is provided. SHALL c) If a nil object reference is provided, events shall still be provided to the PullConsumer as normal. ALLOW d) If a nil object reference is provided the consumer may be disconnected from the channel without being informed. SHALL e) If a non-nil reference is passed to connect_pull_consumer, the implementation calls disconnect_pull_consumer via that reference when the ProxyPullSupplier is destroyed. SHALL f) If the ProxyPullSupplier is already connected to a PullConsumer, then the AlreadyConnected exception is raised. 2.3.6 The ProxyPullConsumer Interface FORBID a) ::connect_pull_supplier shall NOT raise user exceptions other than CosEventChannelAdmin::AlreadyConnected & CosEventChannelAdmin::TypeError. SHALL b) The implementation calls disconnect_pull_supplier on the reference passed to connect_pull_supplier when the ProxyPullConsumer is destroyed. SHALL c) Implementations shall raise the CORBA standard BAD_PARAM exception if a nil object reference is passed to the connect_pull_supplier operation. SHALL d) If the ProxyPullConsumer is already connected to a PullSupplier, then the AlreadyConnected exception is raised. 2.3.7 The ProxyPushSupplier Interface FORBID a) ::connect_push_consumer shall NOT raise user exceptions other than CosEventChannelAdmin::AlreadyConnected & CosEventChannelAdmin::TypeError. SHALL b) The implementation calls disconnect_push_consumer on the reference passed to connect_push_consumer when the ProxyPushSupplier is destroyed. SHALL c) Implementations shall raise the CORBA standard BAD_PARAM exception if a nil object reference is passed to the connect_push_consumer operation. SHALL d) If the ProxyPushSupplier is already connected to a PushConsumer, then the AlreadyConnected exception is raised. [1] - In this case, the reference MUST be known, in order for the object to function. omniEvents-2_6_2/test/results.txt0000644000076400001440000000315210227236246017354 0ustar alexusers00000000000000% python testeventchannel.py -ORBInitRef 'EventChannelFactory=corbaname::localhost#EventChannelFactory.EventChannelFactory' passed: destroy worked passed: EvCh-1: got exception OBJECT_NOT_EXIST passed: EvCh-2: got exception OBJECT_NOT_EXIST passed: EvCh-3: got exception OBJECT_NOT_EXIST passed: EvCh-4: got exception OBJECT_NOT_EXIST passed: EvCh-5: got exception OBJECT_NOT_EXIST passed: EvCh-6: got exception OBJECT_NOT_EXIST passed: EvCh-7: got exception OBJECT_NOT_EXIST passed: EvCh-8 passed: EvCh-9 passed: EvCh-10 passed: EvCh-11 % % python test.py -ORBInitRef 'Channel=corbaname::localhost#EventChannel.EventChannel' passed: PPshC-1 passed: PPshC-3 passed: PshC-1 FAILED: PshC-2: value arrived (PshC-2) passed: PPshC-2, PshC-4 FAILED: PshC-5: no exception passed: PPulS-1 passed: PPulS-3 passed: PulS-2 passed: PulS-3 passed: PulS-4 passed: PPulS-2 passed: PulS-5: got exception Disconnected passed: PulS-6: got exception Disconnected passed: PPulS-8: got exception OBJECT_NOT_EXIST passed: PPulC-2 passed: PPulC-3 passed: PPulC-works passed: PulC-2 passed: PulC-3 passed: PPshS-2: got exception BAD_PARAM passed: PPshS-3: got exception AlreadyConnected passed: PPshS-works passed: PPshS-1, PshS-1 passed: PshS-2: got exception OBJECT_NOT_EXIST % Note: The two failures are caused by details of the omniEvents implementation. The spec. strongly implies an inefficient implementation where resources are allocated in the server when connect_* is called. omniEvents uses a default servant for its ProxyPushConsumer implementation. This means that it can respond to push calls without the need for connection or resource allocation. omniEvents-2_6_2/test/servant.py0000644000076400001440000000607110227236246017151 0ustar alexusers00000000000000import CORBA import CosEventComm,CosEventComm__POA import CosEventChannelAdmin from actions import * class PullConsumer_i(CosEventComm__POA.PullConsumer): def __init__(self,pullSupplier=None): self.disconnected=0 self.pullSupplier=pullSupplier def disconnect_pull_consumer(self): disconnect=(0==self.disconnected) self.disconnected=1 if(disconnect and self.pullSupplier): try: disconnect_pull_supplier(self.pullSupplier) except: pass def connect(self,channel): consumerAdmin=for_consumers(channel) self.pullSupplier=obtain_pull_supplier(consumerAdmin) connect_pull_consumer(self.pullSupplier,self._this()) #end class PullConsumer_i class PushConsumer_i(CosEventComm__POA.PushConsumer): def __init__(self,pushSupplier=None): self.disconnected=0 self.pushSupplier=pushSupplier self.event=None def disconnect_push_consumer(self): disconnect=(0==self.disconnected) self.disconnected=1 if(disconnect and self.pushSupplier): try: disconnect_push_supplier(self.pushSupplier) except: pass def push(self,event): self.event=event def connect(self,channel): consumerAdmin=for_consumers(channel) self.pushSupplier=obtain_push_supplier(consumerAdmin) connect_push_consumer(self.pushSupplier,self._this()) def receive(self,until): while(not self.event and not time.time()>until): time.sleep(0.1) result=self.event self.event=None return result #end class PushConsumer_i class PushSupplier_i(CosEventComm__POA.PushSupplier): def __init__(self,pushConsumer=None): self.disconnected=0 self.pushConsumer=pushConsumer def disconnect_push_supplier(self): disconnect=(0==self.disconnected) self.disconnected=1 if(disconnect and self.pushConsumer): try: disconnect_push_consumer(self.pushConsumer) except: pass def connect(self,channel): supplierAdmin=for_suppliers(channel) self.pushConsumer=obtain_push_consumer(supplierAdmin) connect_push_supplier(self.pushConsumer,self._this()) #end class PushSupplier_i class PullSupplier_i(CosEventComm__POA.PullSupplier): def __init__(self,pullConsumer=None): self.disconnected=0 self.pullConsumer=pullConsumer self.event=None def disconnect_pull_supplier(self): disconnect=(0==self.disconnected) self.disconnected=1 if(disconnect and self.pullConsumer): try: disconnect_pull_consumer(self.pullConsumer) except: pass def pull(self): if(self.event): result=self.event self.event=None return result else: raise CORBA.TRANSIENT(0,CORBA.COMPLETED_NO) def try_pull(self): if(self.event): result=self.event self.event=None return (result,1) else: return (CORBA.Any(CORBA.TC_long,0),0) def connect(self,channel): supplierAdmin=for_suppliers(channel) self.pullConsumer=obtain_pull_consumer(supplierAdmin) connect_pull_supplier(self.pullConsumer,self._this()) #end class PullSupplier_i omniEvents-2_6_2/test/test.py0000644000076400001440000000144210227236246016443 0ustar alexusers00000000000000import sys,time import CORBA import CosEventChannelAdmin import testproxypushconsumer import testproxypullsupplier import testproxypullconsumer import testproxypushsupplier def main(): orb = CORBA.ORB_init(sys.argv, CORBA.ORB_ID) poa = orb.resolve_initial_references("RootPOA") poaManager = poa._get_the_POAManager() poaManager.activate() obj = orb.resolve_initial_references("Channel") channel = obj._narrow(CosEventChannelAdmin.EventChannel) testproxypushconsumer.test(channel) testproxypullsupplier.test(channel) testproxypullconsumer.test(channel) testproxypushsupplier.test(channel) time.sleep(3) ################################################################################ # If this file is executed directly, then we start here. if(__name__=="__main__"): main() omniEvents-2_6_2/test/testeventchannel.py0000644000076400001440000001245310227236246021042 0ustar alexusers00000000000000import sys,time,CORBA import CosNaming import CosEventComm import CosEventChannelAdmin import EventChannelAdmin from actions import * import servant def makeNVP(name,typecode,value): return CosLifeCycle.NameValuePair(name,CORBA.Any(typecode,value)) def create_channel(factory): assert(factory._is_a(EventChannelAdmin._tc_EventChannelFactory.id())) key=[CosNaming.NameComponent("EventChannel","object interface")] criteria=[] #criteria.append(makeNVP("PullRetryPeriod",CORBA.TC_ulong,1)) #criteria.append(makeNVP("MaxQueueLength" ,CORBA.TC_ulong,1023)) obj=factory.create_object(key,criteria) assert(obj is not None) channel=obj._narrow(CosEventChannelAdmin.EventChannel) assert(channel is not None) return channel def test(factory): # Prepare assert(factory._is_a(EventChannelAdmin._tc_EventChannelFactory.id())) pushconsumer_i=servant.PushConsumer_i() pushsupplier_i=servant.PushSupplier_i() pullconsumer_i=servant.PullConsumer_i() pullsupplier_i=servant.PullSupplier_i() channel=create_channel(factory) consumeradmin=for_consumers(channel) supplieradmin=for_suppliers(channel) pushconsumer_i.connect(channel) pushsupplier_i.connect(channel) pullconsumer_i.connect(channel) pullsupplier_i.connect(channel) # Test EventChannel::destroy() try: destroy(channel) passed('destroy worked') except CORBA.UserException, ex: pass # User Exceptions are reported as a failure except CORBA.SystemException, ex: # Strictly this passes, as there is no requirement for destroy() to # to actually DO anything. passed('destroy raised %s. (STRICT PASS)'%ex.__class__.__name__) time.sleep(2) test="EvCh-1" # ----------------------------------------------------------- try: for_suppliers(channel) failed(test+": no exception") except CORBA.OBJECT_NOT_EXIST, ex: passed(test+": got exception %s"%ex.__class__.__name__) except CORBA.Exception, ex: failed(test+": wrong exception: %s"%ex.__class__.__name__) test="EvCh-2" # ----------------------------------------------------------- try: for_consumers(channel) failed(test+": no exception") except CORBA.OBJECT_NOT_EXIST, ex: passed(test+": got exception %s"%ex.__class__.__name__) except CORBA.Exception, ex: failed(test+": wrong exception: %s"%ex.__class__.__name__) test="EvCh-3" # ----------------------------------------------------------- try: destroy(channel) failed(test+": no exception") except CORBA.OBJECT_NOT_EXIST, ex: passed(test+": got exception %s"%ex.__class__.__name__) except CORBA.Exception, ex: failed(test+": wrong exception: %s"%ex.__class__.__name__) test="EvCh-4" # ----------------------------------------------------------- try: obtain_push_supplier(consumeradmin) failed(test+": no exception") except CORBA.OBJECT_NOT_EXIST, ex: passed(test+": got exception %s"%ex.__class__.__name__) except CORBA.Exception, ex: failed(test+": wrong exception: %s"%ex.__class__.__name__) test="EvCh-5" # ----------------------------------------------------------- try: obtain_pull_supplier(consumeradmin) failed(test+": no exception") except CORBA.OBJECT_NOT_EXIST, ex: passed(test+": got exception %s"%ex.__class__.__name__) except CORBA.Exception, ex: failed(test+": wrong exception: %s"%ex.__class__.__name__) test="EvCh-6" # ----------------------------------------------------------- try: obtain_push_consumer(supplieradmin) failed(test+": no exception") except CORBA.OBJECT_NOT_EXIST, ex: passed(test+": got exception %s"%ex.__class__.__name__) except CORBA.Exception, ex: failed(test+": wrong exception: %s"%ex.__class__.__name__) test="EvCh-7" # ----------------------------------------------------------- try: obtain_pull_consumer(supplieradmin) failed(test+": no exception") except CORBA.OBJECT_NOT_EXIST, ex: passed(test+": got exception %s"%ex.__class__.__name__) except CORBA.Exception, ex: failed(test+": wrong exception: %s"%ex.__class__.__name__) test="EvCh-8" # ----------------------------------------------------------- if(pushsupplier_i.disconnected): passed(test) else: failed(test) test="EvCh-9" # ----------------------------------------------------------- if(pullconsumer_i.disconnected): passed(test) else: failed(test) test="EvCh-10" # ----------------------------------------------------------- if(pullsupplier_i.disconnected): passed(test) else: failed(test) test="EvCh-11" # ----------------------------------------------------------- if(pushconsumer_i.disconnected): passed(test) else: failed(test) #end test ################################################################################ # If this file is executed directly, then we start here. if(__name__=="__main__"): orb = CORBA.ORB_init(sys.argv, CORBA.ORB_ID) poa = orb.resolve_initial_references("RootPOA") poaManager = poa._get_the_POAManager() poaManager.activate() obj = orb.resolve_initial_references("EventChannelFactory") factory = obj._narrow(EventChannelAdmin.EventChannelFactory) test(factory) time.sleep(3) ## omniEvents-2_6_2/test/testproxypullconsumer.py0000644000076400001440000000527510227236246022226 0ustar alexusers00000000000000import sys,time,CORBA import CosEventComm import CosEventChannelAdmin from actions import * import servant def test(channel): # Prepare assert(channel._is_a(CosEventChannelAdmin._tc_EventChannel.id())) consumer_i=servant.PullConsumer_i() consumer_i.connect(channel) supplier_i=servant.PullSupplier_i() supplierAdmin=for_suppliers(channel) supplier_i.event=CORBA.Any(CORBA.TC_string,"PPulC-works") test="PPulC-2" # ---------------------------------------------------------- proxyPullConsumer=obtain_pull_consumer(supplierAdmin) try: connect_pull_supplier(proxyPullConsumer,CosEventComm.PullSupplier._nil) failed(test+": no exception") except CORBA.BAD_PARAM, ex: passed(test) except CORBA.Exception, ex: failed(test+": wrong exception: %s"%ex.__class__.__name__) test="PPulC-3" # ---------------------------------------------------------- connect_pull_supplier(proxyPullConsumer,supplier_i._this()) try: connect_pull_supplier(proxyPullConsumer,supplier_i._this()) failed(test+": no exception") except CosEventChannelAdmin.AlreadyConnected, ex: passed(test) except CORBA.Exception, ex: failed(test+": wrong exception: %s"%ex.__class__.__name__) test="PPulC-works" # ---------------------------------------------------------- result,hasEvent =try_pull(consumer_i.pullSupplier,time.time()+timeout) if(hasEvent): if(result.value(CORBA.TC_string)==test): passed(test) else: failed(test+": wrong value ("+result.value(CORBA.TC_string)+")") else: failed(test+": timed out") test="PulC-2" # ---------------------------------------------------------- disconnect_pull_consumer(proxyPullConsumer) time.sleep(2) if(supplier_i.disconnected): passed(test) else: failed(test) test="PulC-3" # ---------------------------------------------------------- try: disconnect_pull_consumer(proxyPullConsumer) failed(test+": no exception") except CORBA.OBJECT_NOT_EXIST, ex: passed(test) except CORBA.Exception, ex: failed(test+": wrong exception: %s"%ex.__class__.__name__) #end test() ------------------------------------------------------------------- ################################################################################ # If this file is executed directly, then we start here. if(__name__=="__main__"): orb = CORBA.ORB_init(sys.argv, CORBA.ORB_ID) poa = orb.resolve_initial_references("RootPOA") poaManager = poa._get_the_POAManager() poaManager.activate() obj = orb.resolve_initial_references("Channel") channel = obj._narrow(CosEventChannelAdmin.EventChannel) test(channel) time.sleep(3) ## omniEvents-2_6_2/test/testproxypullsupplier.py0000644000076400001440000001215310227236246022227 0ustar alexusers00000000000000import sys,time,CORBA import CosEventComm import CosEventChannelAdmin from actions import * import servant def test(channel): # Prepare assert(channel._is_a(CosEventChannelAdmin._tc_EventChannel.id())) consumer_i=servant.PullConsumer_i() supplier_i=servant.PushSupplier_i() supplier_i.connect(channel) consumerAdmin=for_consumers(channel) test="PPulS-1" # ---------------------------------------------------------- proxyPullSupplier=obtain_pull_supplier(consumerAdmin) try: connect_pull_consumer(proxyPullSupplier,CosEventComm.PullConsumer._nil) push(supplier_i.pushConsumer,CORBA.Any(CORBA.TC_string,test)) result,hasEvent =try_pull(proxyPullSupplier,time.time()+timeout) if(hasEvent): if(result.value(CORBA.TC_string)==test): passed(test) else: failed(test+": wrong value ("+result.value(CORBA.TC_string)+")") else: failed(test+": timed out") disconnect_pull_supplier(proxyPullSupplier) # Tidy up except CORBA.Exception, ex: failed(test+": got exception %s"%ex.__class__.__name__) test="PPulS-3" # ---------------------------------------------------------- proxyPullSupplier=obtain_pull_supplier(consumerAdmin) connect_pull_consumer(proxyPullSupplier,consumer_i._this()) try: connect_pull_consumer(proxyPullSupplier,consumer_i._this()) failed(test+": no exception") except CosEventChannelAdmin.AlreadyConnected, ex: passed(test) except CORBA.Exception, ex: failed(test+": got exception %s"%ex.__class__.__name__) #test="PulS-1" # ----------------------------------------------------------- #try: # result=pull(proxyPullSupplier,time.time()+timeout) # ?? Assumes pull will time out. # failed(test+": pull returned value("+result.value(CORBA.TC_string)+")") #except: # passed(test) test="PulS-2" # ----------------------------------------------------------- push(supplier_i.pushConsumer,CORBA.Any(CORBA.TC_string,test)) try: result=pull(proxyPullSupplier,time.time()+timeout) if(result.value(CORBA.TC_string)==test): passed(test) else: failed(test+": wrong value ("+result.value(CORBA.TC_string)+")") except CORBA.Exception, ex: failed(test+": got exception %s"%ex.__class__.__name__) test="PulS-3" # ----------------------------------------------------------- push(supplier_i.pushConsumer,CORBA.Any(CORBA.TC_string,test)) try: result,hasEvent =try_pull(proxyPullSupplier,time.time()+timeout) if(hasEvent): if(result.value(CORBA.TC_string)==test): passed(test) else: failed(test+": wrong value ("+result.value(CORBA.TC_string)+")") else: failed(test+": timed out") except CORBA.Exception, ex: failed(test+": got exception %s"%ex.__class__.__name__) test="PulS-4" # ----------------------------------------------------------- try: result,hasEvent =try_pull(proxyPullSupplier,time.time()+timeout) if(hasEvent): failed(test+": got event ("+result.value(CORBA.TC_string)+")") else: passed(test) except CORBA.Exception, ex: failed(test+": got exception %s"%ex.__class__.__name__) test="PPulS-2" # ---------------------------------------------------------- disconnect_pull_supplier(proxyPullSupplier) time.sleep(1) if(consumer_i.disconnected): passed(test) else: failed(test) test="PulS-5" # ----------------------------------------------------------- try: result=pull(proxyPullSupplier,time.time()+timeout) failed(test+": got event ("+result.value(CORBA.TC_string)+")") except CORBA.TRANSIENT, ex: failed(test+": got exception %s"%ex.__class__.__name__) except CORBA.Exception, ex: passed(test+": got exception %s"%ex.__class__.__name__) test="PulS-6" # ----------------------------------------------------------- try: result,hasEvent =try_pull(proxyPullSupplier,time.time()+timeout) if(hasEvent): failed(test+": got event ("+result.value(CORBA.TC_string)+")") else: failed(test+": returned (has_event=0)") except CORBA.TRANSIENT, ex: failed(test+": got exception %s"%ex.__class__.__name__) except CORBA.Exception, ex: passed(test+": got exception %s"%ex.__class__.__name__) test="PPulS-8" # ---------------------------------------------------------- try: disconnect_pull_supplier(proxyPullSupplier) except CORBA.OBJECT_NOT_EXIST, ex: passed(test+": got exception %s"%ex.__class__.__name__) except CORBA.Exception, ex: failed(test+": got exception %s"%ex.__class__.__name__) #end test ################################################################################ # If this file is executed directly, then we start here. if(__name__=="__main__"): orb = CORBA.ORB_init(sys.argv, CORBA.ORB_ID) poa = orb.resolve_initial_references("RootPOA") poaManager = poa._get_the_POAManager() poaManager.activate() obj = orb.resolve_initial_references("Channel") channel = obj._narrow(CosEventChannelAdmin.EventChannel) test(channel) time.sleep(3) ## omniEvents-2_6_2/test/testproxypushconsumer.py0000644000076400001440000000663510227236246022232 0ustar alexusers00000000000000import sys,time,CORBA import CosEventComm import CosEventChannelAdmin from actions import * import servant def test(channel): # Prepare assert(channel._is_a(CosEventChannelAdmin._tc_EventChannel.id())) consumer_i=servant.PullConsumer_i() consumer_i.connect(channel) supplier_i=servant.PushSupplier_i() supplierAdmin=for_suppliers(channel) test="PPshC-1" # ---------------------------------------------------------- proxyPushConsumer=obtain_push_consumer(supplierAdmin) connect_push_supplier(proxyPushConsumer,CosEventComm.PushSupplier._nil) push(proxyPushConsumer,CORBA.Any(CORBA.TC_string,test)) result,hasEvent =try_pull(consumer_i.pullSupplier,time.time()+timeout) if(hasEvent): if(result.value(CORBA.TC_string)==test): passed(test) else: failed(test+": wrong value ("+result.value(CORBA.TC_string)+")") else: failed(test+": timed out") disconnect_push_consumer(proxyPushConsumer) # Tidy! test="PPshC-3" # ---------------------------------------------------------- proxyPushConsumer=obtain_push_consumer(supplierAdmin) connect_push_supplier(proxyPushConsumer,supplier_i._this()) try: connect_push_supplier(proxyPushConsumer,supplier_i._this()) failed(test+": no exception") except CosEventChannelAdmin.AlreadyConnected, ex: passed(test) except: failed(test+": wrong exception: %s"%ex.__class__.__name__) test="PshC-1" # ----------------------------------------------------------- push(proxyPushConsumer,CORBA.Any(CORBA.TC_string,test)) result,hasEvent =try_pull(consumer_i.pullSupplier,time.time()+timeout) if(hasEvent): if(result.value(CORBA.TC_string)==test): passed(test) else: failed(test+": wrong value ("+result.value(CORBA.TC_string)+")") else: failed(test+": timed out") test="PshC-2" # ----------------------------------------------------------- disconnect_push_consumer(proxyPushConsumer) try: push(proxyPushConsumer,CORBA.Any(CORBA.TC_string,test)) except: pass result,hasEvent =try_pull(consumer_i.pullSupplier,time.time()+timeout) if(hasEvent and result.value(CORBA.TC_string)==test): failed(test+": value arrived ("+result.value(CORBA.TC_string)+")") else: passed(test) test="PPshC-2" # & PshC-4 # ----------------------------------------------- time.sleep(0.1) if(supplier_i.disconnected): passed(test+", PshC-4") else: failed(test) test="PshC-5" # ----------------------------------------------------------- try: disconnect_push_consumer(proxyPushConsumer) failed(test+": no exception") except CORBA.OBJECT_NOT_EXIST, ex: passed(test) except: failed(test+": wrong exception") #disconnect_pull_supplier(consumer_i.pullSupplier) consumer_i.disconnect_pull_consumer() time.sleep(1) #end testProxyPushConsumer() -------------------------------------------------- ################################################################################ # If this file is executed directly, then we start here. if(__name__=="__main__"): orb = CORBA.ORB_init(sys.argv, CORBA.ORB_ID) poa = orb.resolve_initial_references("RootPOA") poaManager = poa._get_the_POAManager() poaManager.activate() obj = orb.resolve_initial_references("Channel") channel = obj._narrow(CosEventChannelAdmin.EventChannel) test(channel) time.sleep(3) ## omniEvents-2_6_2/test/testproxypushsupplier.py0000644000076400001440000000535510227236246022240 0ustar alexusers00000000000000import sys,time,CORBA import CosEventComm import CosEventChannelAdmin from actions import * import servant def test(channel): # Prepare assert(channel._is_a(CosEventChannelAdmin._tc_EventChannel.id())) consumer_i=servant.PushConsumer_i() supplier_i=servant.PushSupplier_i() supplier_i.connect(channel) consumerAdmin=for_consumers(channel) test="PPshS-2" # ---------------------------------------------------------- proxyPushSupplier=obtain_push_supplier(consumerAdmin) try: connect_push_consumer(proxyPushSupplier,CosEventComm.PushConsumer._nil) failed(test+": no exception") except CORBA.BAD_PARAM, ex: passed(test+": got exception %s"%ex.__class__.__name__) except CORBA.Exception, ex: failed(test+": wrong exception: %s"%ex.__class__.__name__) test="PPshS-3" # ---------------------------------------------------------- connect_push_consumer(proxyPushSupplier,consumer_i._this()) try: connect_push_consumer(proxyPushSupplier,consumer_i._this()) failed(test+": no exception") except CosEventChannelAdmin.AlreadyConnected, ex: passed(test+": got exception %s"%ex.__class__.__name__) except CORBA.Exception, ex: failed(test+": wrong exception: %s"%ex.__class__.__name__) test="PPshS-works" # ---------------------------------------------------------- push(supplier_i.pushConsumer,CORBA.Any(CORBA.TC_string,test)) result=consumer_i.receive(time.time()+timeout) if(result): if(result.value(CORBA.TC_string)==test): passed(test) else: failed(test+": wrong value ("+result.value(CORBA.TC_string)+")") else: failed(test+": timed out") test="PPshS-1" # ---------------------------------------------------------- disconnect_push_supplier(proxyPushSupplier) time.sleep(1) if(consumer_i.disconnected): passed(test+", PshS-1") else: failed(test) test="PshS-2" # ---------------------------------------------------------- try: disconnect_push_supplier(proxyPushSupplier) failed(test+": no exception") except CORBA.OBJECT_NOT_EXIST, ex: passed(test+": got exception %s"%ex.__class__.__name__) except CORBA.Exception, ex: failed(test+": wrong exception: %s"%ex.__class__.__name__) #end test ################################################################################ # If this file is executed directly, then we start here. if(__name__=="__main__"): orb = CORBA.ORB_init(sys.argv, CORBA.ORB_ID) poa = orb.resolve_initial_references("RootPOA") poaManager = poa._get_the_POAManager() poaManager.activate() obj = orb.resolve_initial_references("Channel") channel = obj._narrow(CosEventChannelAdmin.EventChannel) test(channel) time.sleep(3) ## omniEvents-2_6_2/test/tests.txt0000644000076400001440000002131410227236246017015 0ustar alexusers00000000000000EXCEPTIONS: There is no explicit test for the absence of exceptions. All calls are instrumented to detect exceptions, and report specification violation if it occurs. Unless otherwise stated, execeptions are not expected during testing. If an unexpected exception occurs, then the test fails. X is a CORBA 'any' containing a known, unique 'string' value (usually the test's ID). PshS is a reference to a PushSupplier object. PshC is a reference to a PushConsumer object. PulS is a reference to a PullSupplier object. PulC is a reference to a PullConsumer object. Some tests only probe ALLOW-type requirements. These test cannot fail, and are marked NO FAIL. THE PUSHCONSUMER INTERFACE TEST PshC-1: [2.1.1a] Pre: The PushConsumer is set up to receive communication. Action: Call PushConsumer::push(), with some value X as the parameter. Expect: X appears in the PushConsumer's output. TEST PshC-2: [2.1.1d] Pre: The PushConsumer is set up to receive communication. Action: Call PushConsumer::disconnect_push_consumer(), then ::push(X) Expect: X does not appear in the PushConsumer's output. ::push(X) may raise an exception. TEST PshC-3: [2.1.1e] Pre: The PushConsumer is set up to receive communication. Action: Call PushConsumer::disconnect_push_consumer() Expect: Resources are released. TEST PshC-4: [2.1.1f] (NO FAIL) Pre: The PushConsumer is set up to receive communication. Action: Call PushConsumer::disconnect_push_consumer() Expect: disconnect_push_consumer() may be called on connected supplier. TEST PshC-5: [2.1.5a] Pre: The PushConsumer is set up to receive communication. Action: Call PushConsumer::disconnect_push_consumer() twice. Expect: The second call returns CORBA::OBJECT_NOT_EXIST exception. THE PUSHSUPPLIER INTERFACE TEST PshS-1: [2.1.2c] Pre: The PushSupplier is set up to send messages. Action: Call PushSupplier::disconnect_push_supplier Expect: disconnect_push_consumer() is called on the connected consumer. TEST PshS-2: [2.1.5a] Pre: The PushSupplier is set up to send messages. Action: Call PushSupplier::disconnect_push_supplier() twice. Expect: The second call returns CORBA::OBJECT_NOT_EXIST exception. THE PULLSUPPLIER INTERFACE TEST PulS-1: [2.1.3b] Pre: The PullSupplier is set up to send messages, but no messages are available. Action: Call PullSupplier::pull Expect: either the call does not return, or an exception is returned. TEST PulS-2: [2.1.3d] Pre: Test 6 completed without an exception. Action: Event X is made available. Expect: Event X is returned. TEST PulS-3: [2.1.3g] Pre: The PullSupplier is set up to send messages, and event X is made available. Action: Call PullSupplier::try_pull Expect: the call returns without delay. has_event is set to 1. The return value is set to X. TEST PulS-4: [2.1.3h] Pre: The PullSupplier is set up to send messages, but no messages are available. Action: Call PullSupplier::try_pull Expect: the call returns without delay. has_event is set to 0. The return value is set to long(0). TEST PulS-5: [2.1.3j] Pre: The PullSupplier is set up to send messages. Action: Call PullSupplier::disconnect_pull_supplier(), then ::pull() Expect: an exception other than TRANSIENT is returned. TEST PulS-6: [2.1.3j] Pre: The PullSupplier is set up to send messages. Action: Call PullSupplier::disconnect_pull_supplier(), then ::try_pull() Expect: an exception other than TRANSIENT is returned. TEST PulS-7: [2.1.3k] Pre: The PullSupplier is set up to send messages. Action: Call PullSupplier::disconnect_pull_supplier() Expect: Resources are released. TEST PulS-8: [2.1.5a] Pre: The PullSupplier is set up to send messages. Action: Call PullSupplier::disconnect_pull_supplier() twice. Expect: The second call returns CORBA::OBJECT_NOT_EXIST exception. THE PULLCONSUMER INTERFACE TEST PulC-1: [2.1.4c] Pre: The PullConsumer is set up to poll for events. Action: Call PullConsumer::disconnect_pull_consumer(). Expect: Resources are released. TEST PulC-2: [2.1.4d] Pre: The PullConsumer is set up to poll PulS for events. Action: Call PullConsumer::disconnect_pull_consumer(). Expect: PulS.disconnect_pull_supplier() receives a call. TEST PulC-3: [2.1.5a] Pre: The PullConsumer is set up to poll PulS for events. Action: Call PullConsumer::disconnect_pull_consumer() twice. Expect: The second call returns CORBA::OBJECT_NOT_EXIST exception. THE EVENTCHANNEL INTERFACE TEST EvCh-1: [2.3.1d] Pre: An event channel is destroyed. Action: Call ::for_suppliers() Expect: Raises CORBA::OBJECT_NOT_EXIST exception. TEST EvCh-2: [2.3.1d] Pre: An event channel is destroyed. Action: Call ::for_consumers() Expect: Raises CORBA::OBJECT_NOT_EXIST exception. TEST EvCh-3: [2.3.1d] Pre: An event channel is destroyed. Action: Call ::destroy() Expect: Raises CORBA::OBJECT_NOT_EXIST exception. TEST EvCh-4: [2.3.1e] Pre: A ConsumerAdmin is otained, and the channel then destroyed. Action: Call ::obtain_push_supplier() Expect: Raises CORBA::OBJECT_NOT_EXIST exception. TEST EvCh-5: [2.3.1e] Pre: A ConsumerAdmin is otained, and the channel then destroyed. Action: Call ::obtain_pull_supplier() Expect: Raises CORBA::OBJECT_NOT_EXIST exception. TEST EvCh-6: [2.3.1e] Pre: A SupplierAdmin is otained, and the channel then destroyed. Action: Call ::obtain_push_consumer() Expect: Raises CORBA::OBJECT_NOT_EXIST exception. TEST EvCh-7: [2.3.1e] Pre: A SupplierAdmin is otained, and the channel then destroyed. Action: Call ::obtain_pull_consumer() Expect: Raises CORBA::OBJECT_NOT_EXIST exception. TEST EvCh-8: [2.3.1f] Pre: A PushSupplier is connected to a ProxyPushConsumer. Action: Call the event channel's ::destroy() method. Expect: The PushSupplier is disconnected. TEST EvCh-9: [2.3.1f] Pre: A PullConsumer is connected to a ProxyPullSupplier. Action: Call the event channel's ::destroy() method. Expect: The PullConsumer is disconnected. TEST EvCh-10: [2.3.1f] Pre: A PullSupplier is connected to a ProxyPullConsumer. Action: Call the event channel's ::destroy() method. Expect: The PullSupplier is disconnected. TEST EvCh-11: [2.3.1f] Pre: A PushConsumer is connected to a ProxyPushSupplier. Action: Call the event channel's ::destroy() method. Expect: The PushConsumer is disconnected. THE PROXYPUSHCONSUMER INTERFACE TEST PPshC-1: [2.3.4c] Pre: A ProxyPushConsumer is obtained. Action: Call ProxyPushConsumer::connect_push_supplier(NIL), then ::push(X) Expect: X appears in the ProxyPushConsumer's output. TEST PPshC-2: [2.3.4e] Pre: A ProxyPushConsumer is obtained. Action: Call ProxyPushConsumer::connect_push_supplier(PshS), then ::disconnect_push_consumer(). Expect: PshS.disconnect_push_supplier() receives a call. TEST PPshC-3: [2.3.4f] Pre: A ProxyPushConsumer is obtained. Action: Call ProxyPushConsumer::connect_push_supplier(?) twice. Expect: The second call returns AlreadyConnected exception. THE PROXYPULLSUPPLIER INTERFACE TEST PPulS-1: [2.3.5c] Pre: A ProxyPullSupplier is obtained. Action: Call ProxyPullSupplier::connect_pull_consumer(NIL), then supply event X to the channel, then ::try_pull(). Expect: try_pull returns event X. TEST PPulS-2: [2.3.5e] Pre: A ProxyPullSupplier is obtained. Action: Call ProxyPullSupplier::connect_pull_consumer(PulC), then ::disconnect_pull_supplier(). Expect: PulC.disconnect_pull_consumer() receives a call. TEST PPulS-3: [2.3.5f] Pre: A ProxyPullSupplier is obtained. Action: Call ProxyPullSupplier::connect_pull_consumer(?) twice. Expect: The second call returns AlreadyConnected exception. THE PROXYPULLCONSUMER INTERFACE TEST PPulC-1: [2.3.6b] Pre: A ProxyPullConsumer is obtained. Action: Call ProxyPullConsumer::connect_pull_supplier(PulS), then ::disconnect_pull_consumer(). Expect: PulS.disconnect_pull_supplier() receives a call. TEST PPulC-2: [2.3.6c] Pre: A ProxyPullConsumer is obtained. Action: Call ProxyPullConsumer::connect_pull_supplier(NIL). Expect: returns BAD_PARAM exception. TEST PPulC-3: [2.3.6d] Pre: A ProxyPullConsumer is obtained. Action: Call ProxyPullConsumer::connect_pull_supplier(PulS) twice. Expect: The second call returns AlreadyConnected exception. THE PROXYPUSHSUPPLIER INTERFACE TEST PPshS-1: [2.3.7b] Pre: A ProxyPushSupplier is obtained. Action: Call ProxyPushSupplier::connect_push_consumer(PshC), then ::disconnect_push_supplier(). Expect: PshC.disconnect_push_consumer() receives a call. TEST PPshS-2: [2.3.7c] Pre: A ProxyPushSupplier is obtained. Action: Call ProxyPushSupplier::connect_push_consumer(NIL). Expect: returns BAD_PARAM exception. TEST PPshS-3: [2.3.7d] Pre: A ProxyPushSupplier is obtained. Action: Call ProxyPushSupplier::connect_push_consumer(PshC) twice. Expect: The second call returns AlreadyConnected exception. omniEvents-2_6_2/test/CosLifeCycle_idl.py0000644000076400001440000004310610242457405020622 0ustar alexusers00000000000000# Python stubs generated by omniidl from /home/alex/calvino/work/omni.d/local/share/idl/omniORB/COS/CosLifeCycle.idl import omniORB, _omnipy from omniORB import CORBA, PortableServer _0_CORBA = CORBA _omnipy.checkVersion(2,0, __file__) # #include "CosNaming.idl" import CosNaming_idl _0_CosNaming = omniORB.openModule("CosNaming") _0_CosNaming__POA = omniORB.openModule("CosNaming__POA") # # Start of module "CosLifeCycle" # __name__ = "CosLifeCycle" _0_CosLifeCycle = omniORB.openModule("CosLifeCycle", r"/home/alex/calvino/work/omni.d/local/share/idl/omniORB/COS/CosLifeCycle.idl") _0_CosLifeCycle__POA = omniORB.openModule("CosLifeCycle__POA", r"/home/alex/calvino/work/omni.d/local/share/idl/omniORB/COS/CosLifeCycle.idl") # typedef ... Key class Key: _NP_RepositoryId = "IDL:omg.org/CosLifeCycle/Key:1.0" def __init__(self, *args, **kw): raise RuntimeError("Cannot construct objects of this type.") _0_CosLifeCycle.Key = Key _0_CosLifeCycle._d_Key = omniORB.typeMapping["IDL:omg.org/CosNaming/Name:1.0"] _0_CosLifeCycle._ad_Key = (omniORB.tcInternal.tv_alias, Key._NP_RepositoryId, "Key", omniORB.typeCodeMapping["IDL:omg.org/CosNaming/Name:1.0"]._d) _0_CosLifeCycle._tc_Key = omniORB.tcInternal.createTypeCode(_0_CosLifeCycle._ad_Key) omniORB.registerType(Key._NP_RepositoryId, _0_CosLifeCycle._ad_Key, _0_CosLifeCycle._tc_Key) del Key # typedef ... Factory class Factory: _NP_RepositoryId = "IDL:omg.org/CosLifeCycle/Factory:1.0" def __init__(self, *args, **kw): raise RuntimeError("Cannot construct objects of this type.") _0_CosLifeCycle.Factory = Factory _0_CosLifeCycle._d_Factory = omniORB.typeMapping["IDL:omg.org/CORBA/Object:1.0"] _0_CosLifeCycle._ad_Factory = (omniORB.tcInternal.tv_alias, Factory._NP_RepositoryId, "Factory", omniORB.typeMapping["IDL:omg.org/CORBA/Object:1.0"]) _0_CosLifeCycle._tc_Factory = omniORB.tcInternal.createTypeCode(_0_CosLifeCycle._ad_Factory) omniORB.registerType(Factory._NP_RepositoryId, _0_CosLifeCycle._ad_Factory, _0_CosLifeCycle._tc_Factory) del Factory # typedef ... Factories class Factories: _NP_RepositoryId = "IDL:omg.org/CosLifeCycle/Factories:1.0" def __init__(self, *args, **kw): raise RuntimeError("Cannot construct objects of this type.") _0_CosLifeCycle.Factories = Factories _0_CosLifeCycle._d_Factories = (omniORB.tcInternal.tv_sequence, omniORB.typeMapping["IDL:omg.org/CosLifeCycle/Factory:1.0"], 0) _0_CosLifeCycle._ad_Factories = (omniORB.tcInternal.tv_alias, Factories._NP_RepositoryId, "Factories", (omniORB.tcInternal.tv_sequence, omniORB.typeMapping["IDL:omg.org/CosLifeCycle/Factory:1.0"], 0)) _0_CosLifeCycle._tc_Factories = omniORB.tcInternal.createTypeCode(_0_CosLifeCycle._ad_Factories) omniORB.registerType(Factories._NP_RepositoryId, _0_CosLifeCycle._ad_Factories, _0_CosLifeCycle._tc_Factories) del Factories # struct NVP _0_CosLifeCycle.NVP = omniORB.newEmptyClass() class NVP: _NP_RepositoryId = "IDL:omg.org/CosLifeCycle/NVP:1.0" def __init__(self, name, value): self.name = name self.value = value _0_CosLifeCycle.NVP = NVP _0_CosLifeCycle._d_NVP = (omniORB.tcInternal.tv_struct, NVP, NVP._NP_RepositoryId, "NVP", "name", omniORB.typeMapping["IDL:omg.org/CosNaming/Istring:1.0"], "value", omniORB.tcInternal.tv_any) _0_CosLifeCycle._tc_NVP = omniORB.tcInternal.createTypeCode(_0_CosLifeCycle._d_NVP) omniORB.registerType(NVP._NP_RepositoryId, _0_CosLifeCycle._d_NVP, _0_CosLifeCycle._tc_NVP) del NVP # typedef ... NameValuePair class NameValuePair (_0_CosLifeCycle.NVP): _NP_RepositoryId = "IDL:omg.org/CosLifeCycle/NameValuePair:1.0" _0_CosLifeCycle.NameValuePair = NameValuePair _0_CosLifeCycle._d_NameValuePair = omniORB.typeMapping["IDL:omg.org/CosLifeCycle/NVP:1.0"] _0_CosLifeCycle._ad_NameValuePair = (omniORB.tcInternal.tv_alias, NameValuePair._NP_RepositoryId, "NameValuePair", omniORB.typeMapping["IDL:omg.org/CosLifeCycle/NVP:1.0"]) _0_CosLifeCycle._tc_NameValuePair = omniORB.tcInternal.createTypeCode(_0_CosLifeCycle._ad_NameValuePair) omniORB.registerType(NameValuePair._NP_RepositoryId, _0_CosLifeCycle._ad_NameValuePair, _0_CosLifeCycle._tc_NameValuePair) del NameValuePair # typedef ... Criteria class Criteria: _NP_RepositoryId = "IDL:omg.org/CosLifeCycle/Criteria:1.0" def __init__(self, *args, **kw): raise RuntimeError("Cannot construct objects of this type.") _0_CosLifeCycle.Criteria = Criteria _0_CosLifeCycle._d_Criteria = (omniORB.tcInternal.tv_sequence, omniORB.typeMapping["IDL:omg.org/CosLifeCycle/NameValuePair:1.0"], 0) _0_CosLifeCycle._ad_Criteria = (omniORB.tcInternal.tv_alias, Criteria._NP_RepositoryId, "Criteria", (omniORB.tcInternal.tv_sequence, omniORB.typeMapping["IDL:omg.org/CosLifeCycle/NameValuePair:1.0"], 0)) _0_CosLifeCycle._tc_Criteria = omniORB.tcInternal.createTypeCode(_0_CosLifeCycle._ad_Criteria) omniORB.registerType(Criteria._NP_RepositoryId, _0_CosLifeCycle._ad_Criteria, _0_CosLifeCycle._tc_Criteria) del Criteria # exception NoFactory _0_CosLifeCycle.NoFactory = omniORB.newEmptyClass() class NoFactory (CORBA.UserException): _NP_RepositoryId = "IDL:omg.org/CosLifeCycle/NoFactory:1.0" def __init__(self, search_key): CORBA.UserException.__init__(self, search_key) self.search_key = search_key _0_CosLifeCycle.NoFactory = NoFactory _0_CosLifeCycle._d_NoFactory = (omniORB.tcInternal.tv_except, NoFactory, NoFactory._NP_RepositoryId, "NoFactory", "search_key", omniORB.typeMapping["IDL:omg.org/CosLifeCycle/Key:1.0"]) _0_CosLifeCycle._tc_NoFactory = omniORB.tcInternal.createTypeCode(_0_CosLifeCycle._d_NoFactory) omniORB.registerType(NoFactory._NP_RepositoryId, _0_CosLifeCycle._d_NoFactory, _0_CosLifeCycle._tc_NoFactory) del NoFactory # exception NotCopyable _0_CosLifeCycle.NotCopyable = omniORB.newEmptyClass() class NotCopyable (CORBA.UserException): _NP_RepositoryId = "IDL:omg.org/CosLifeCycle/NotCopyable:1.0" def __init__(self, reason): CORBA.UserException.__init__(self, reason) self.reason = reason _0_CosLifeCycle.NotCopyable = NotCopyable _0_CosLifeCycle._d_NotCopyable = (omniORB.tcInternal.tv_except, NotCopyable, NotCopyable._NP_RepositoryId, "NotCopyable", "reason", (omniORB.tcInternal.tv_string,0)) _0_CosLifeCycle._tc_NotCopyable = omniORB.tcInternal.createTypeCode(_0_CosLifeCycle._d_NotCopyable) omniORB.registerType(NotCopyable._NP_RepositoryId, _0_CosLifeCycle._d_NotCopyable, _0_CosLifeCycle._tc_NotCopyable) del NotCopyable # exception NotMovable _0_CosLifeCycle.NotMovable = omniORB.newEmptyClass() class NotMovable (CORBA.UserException): _NP_RepositoryId = "IDL:omg.org/CosLifeCycle/NotMovable:1.0" def __init__(self, reason): CORBA.UserException.__init__(self, reason) self.reason = reason _0_CosLifeCycle.NotMovable = NotMovable _0_CosLifeCycle._d_NotMovable = (omniORB.tcInternal.tv_except, NotMovable, NotMovable._NP_RepositoryId, "NotMovable", "reason", (omniORB.tcInternal.tv_string,0)) _0_CosLifeCycle._tc_NotMovable = omniORB.tcInternal.createTypeCode(_0_CosLifeCycle._d_NotMovable) omniORB.registerType(NotMovable._NP_RepositoryId, _0_CosLifeCycle._d_NotMovable, _0_CosLifeCycle._tc_NotMovable) del NotMovable # exception NotRemovable _0_CosLifeCycle.NotRemovable = omniORB.newEmptyClass() class NotRemovable (CORBA.UserException): _NP_RepositoryId = "IDL:omg.org/CosLifeCycle/NotRemovable:1.0" def __init__(self, reason): CORBA.UserException.__init__(self, reason) self.reason = reason _0_CosLifeCycle.NotRemovable = NotRemovable _0_CosLifeCycle._d_NotRemovable = (omniORB.tcInternal.tv_except, NotRemovable, NotRemovable._NP_RepositoryId, "NotRemovable", "reason", (omniORB.tcInternal.tv_string,0)) _0_CosLifeCycle._tc_NotRemovable = omniORB.tcInternal.createTypeCode(_0_CosLifeCycle._d_NotRemovable) omniORB.registerType(NotRemovable._NP_RepositoryId, _0_CosLifeCycle._d_NotRemovable, _0_CosLifeCycle._tc_NotRemovable) del NotRemovable # exception InvalidCriteria _0_CosLifeCycle.InvalidCriteria = omniORB.newEmptyClass() class InvalidCriteria (CORBA.UserException): _NP_RepositoryId = "IDL:omg.org/CosLifeCycle/InvalidCriteria:1.0" def __init__(self, invalid_criteria): CORBA.UserException.__init__(self, invalid_criteria) self.invalid_criteria = invalid_criteria _0_CosLifeCycle.InvalidCriteria = InvalidCriteria _0_CosLifeCycle._d_InvalidCriteria = (omniORB.tcInternal.tv_except, InvalidCriteria, InvalidCriteria._NP_RepositoryId, "InvalidCriteria", "invalid_criteria", omniORB.typeMapping["IDL:omg.org/CosLifeCycle/Criteria:1.0"]) _0_CosLifeCycle._tc_InvalidCriteria = omniORB.tcInternal.createTypeCode(_0_CosLifeCycle._d_InvalidCriteria) omniORB.registerType(InvalidCriteria._NP_RepositoryId, _0_CosLifeCycle._d_InvalidCriteria, _0_CosLifeCycle._tc_InvalidCriteria) del InvalidCriteria # exception CannotMeetCriteria _0_CosLifeCycle.CannotMeetCriteria = omniORB.newEmptyClass() class CannotMeetCriteria (CORBA.UserException): _NP_RepositoryId = "IDL:omg.org/CosLifeCycle/CannotMeetCriteria:1.0" def __init__(self, unmet_criteria): CORBA.UserException.__init__(self, unmet_criteria) self.unmet_criteria = unmet_criteria _0_CosLifeCycle.CannotMeetCriteria = CannotMeetCriteria _0_CosLifeCycle._d_CannotMeetCriteria = (omniORB.tcInternal.tv_except, CannotMeetCriteria, CannotMeetCriteria._NP_RepositoryId, "CannotMeetCriteria", "unmet_criteria", omniORB.typeMapping["IDL:omg.org/CosLifeCycle/Criteria:1.0"]) _0_CosLifeCycle._tc_CannotMeetCriteria = omniORB.tcInternal.createTypeCode(_0_CosLifeCycle._d_CannotMeetCriteria) omniORB.registerType(CannotMeetCriteria._NP_RepositoryId, _0_CosLifeCycle._d_CannotMeetCriteria, _0_CosLifeCycle._tc_CannotMeetCriteria) del CannotMeetCriteria # interface FactoryFinder _0_CosLifeCycle._d_FactoryFinder = (omniORB.tcInternal.tv_objref, "IDL:omg.org/CosLifeCycle/FactoryFinder:1.0", "FactoryFinder") omniORB.typeMapping["IDL:omg.org/CosLifeCycle/FactoryFinder:1.0"] = _0_CosLifeCycle._d_FactoryFinder _0_CosLifeCycle.FactoryFinder = omniORB.newEmptyClass() class FactoryFinder : _NP_RepositoryId = _0_CosLifeCycle._d_FactoryFinder[1] def __init__(self, *args, **kw): raise RuntimeError("Cannot construct objects of this type.") _nil = CORBA.Object._nil _0_CosLifeCycle.FactoryFinder = FactoryFinder _0_CosLifeCycle._tc_FactoryFinder = omniORB.tcInternal.createTypeCode(_0_CosLifeCycle._d_FactoryFinder) omniORB.registerType(FactoryFinder._NP_RepositoryId, _0_CosLifeCycle._d_FactoryFinder, _0_CosLifeCycle._tc_FactoryFinder) # FactoryFinder operations and attributes FactoryFinder._d_find_factories = ((omniORB.typeMapping["IDL:omg.org/CosLifeCycle/Key:1.0"], ), (omniORB.typeMapping["IDL:omg.org/CosLifeCycle/Factories:1.0"], ), {_0_CosLifeCycle.NoFactory._NP_RepositoryId: _0_CosLifeCycle._d_NoFactory}) # FactoryFinder object reference class _objref_FactoryFinder (CORBA.Object): _NP_RepositoryId = FactoryFinder._NP_RepositoryId def __init__(self): CORBA.Object.__init__(self) def find_factories(self, *args): return _omnipy.invoke(self, "find_factories", _0_CosLifeCycle.FactoryFinder._d_find_factories, args) __methods__ = ["find_factories"] + CORBA.Object.__methods__ omniORB.registerObjref(FactoryFinder._NP_RepositoryId, _objref_FactoryFinder) _0_CosLifeCycle._objref_FactoryFinder = _objref_FactoryFinder del FactoryFinder, _objref_FactoryFinder # FactoryFinder skeleton __name__ = "CosLifeCycle__POA" class FactoryFinder (PortableServer.Servant): _NP_RepositoryId = _0_CosLifeCycle.FactoryFinder._NP_RepositoryId _omni_op_d = {"find_factories": _0_CosLifeCycle.FactoryFinder._d_find_factories} FactoryFinder._omni_skeleton = FactoryFinder _0_CosLifeCycle__POA.FactoryFinder = FactoryFinder del FactoryFinder __name__ = "CosLifeCycle" # interface LifeCycleObject _0_CosLifeCycle._d_LifeCycleObject = (omniORB.tcInternal.tv_objref, "IDL:omg.org/CosLifeCycle/LifeCycleObject:1.0", "LifeCycleObject") omniORB.typeMapping["IDL:omg.org/CosLifeCycle/LifeCycleObject:1.0"] = _0_CosLifeCycle._d_LifeCycleObject _0_CosLifeCycle.LifeCycleObject = omniORB.newEmptyClass() class LifeCycleObject : _NP_RepositoryId = _0_CosLifeCycle._d_LifeCycleObject[1] def __init__(self, *args, **kw): raise RuntimeError("Cannot construct objects of this type.") _nil = CORBA.Object._nil _0_CosLifeCycle.LifeCycleObject = LifeCycleObject _0_CosLifeCycle._tc_LifeCycleObject = omniORB.tcInternal.createTypeCode(_0_CosLifeCycle._d_LifeCycleObject) omniORB.registerType(LifeCycleObject._NP_RepositoryId, _0_CosLifeCycle._d_LifeCycleObject, _0_CosLifeCycle._tc_LifeCycleObject) # LifeCycleObject operations and attributes LifeCycleObject._d_copy = ((omniORB.typeMapping["IDL:omg.org/CosLifeCycle/FactoryFinder:1.0"], omniORB.typeMapping["IDL:omg.org/CosLifeCycle/Criteria:1.0"]), (omniORB.typeMapping["IDL:omg.org/CosLifeCycle/LifeCycleObject:1.0"], ), {_0_CosLifeCycle.NoFactory._NP_RepositoryId: _0_CosLifeCycle._d_NoFactory, _0_CosLifeCycle.NotCopyable._NP_RepositoryId: _0_CosLifeCycle._d_NotCopyable, _0_CosLifeCycle.InvalidCriteria._NP_RepositoryId: _0_CosLifeCycle._d_InvalidCriteria, _0_CosLifeCycle.CannotMeetCriteria._NP_RepositoryId: _0_CosLifeCycle._d_CannotMeetCriteria}) LifeCycleObject._d_move = ((omniORB.typeMapping["IDL:omg.org/CosLifeCycle/FactoryFinder:1.0"], omniORB.typeMapping["IDL:omg.org/CosLifeCycle/Criteria:1.0"]), (), {_0_CosLifeCycle.NoFactory._NP_RepositoryId: _0_CosLifeCycle._d_NoFactory, _0_CosLifeCycle.NotMovable._NP_RepositoryId: _0_CosLifeCycle._d_NotMovable, _0_CosLifeCycle.InvalidCriteria._NP_RepositoryId: _0_CosLifeCycle._d_InvalidCriteria, _0_CosLifeCycle.CannotMeetCriteria._NP_RepositoryId: _0_CosLifeCycle._d_CannotMeetCriteria}) LifeCycleObject._d_remove = ((), (), {_0_CosLifeCycle.NotRemovable._NP_RepositoryId: _0_CosLifeCycle._d_NotRemovable}) # LifeCycleObject object reference class _objref_LifeCycleObject (CORBA.Object): _NP_RepositoryId = LifeCycleObject._NP_RepositoryId def __init__(self): CORBA.Object.__init__(self) def copy(self, *args): return _omnipy.invoke(self, "copy", _0_CosLifeCycle.LifeCycleObject._d_copy, args) def move(self, *args): return _omnipy.invoke(self, "move", _0_CosLifeCycle.LifeCycleObject._d_move, args) def remove(self, *args): return _omnipy.invoke(self, "remove", _0_CosLifeCycle.LifeCycleObject._d_remove, args) __methods__ = ["copy", "move", "remove"] + CORBA.Object.__methods__ omniORB.registerObjref(LifeCycleObject._NP_RepositoryId, _objref_LifeCycleObject) _0_CosLifeCycle._objref_LifeCycleObject = _objref_LifeCycleObject del LifeCycleObject, _objref_LifeCycleObject # LifeCycleObject skeleton __name__ = "CosLifeCycle__POA" class LifeCycleObject (PortableServer.Servant): _NP_RepositoryId = _0_CosLifeCycle.LifeCycleObject._NP_RepositoryId _omni_op_d = {"copy": _0_CosLifeCycle.LifeCycleObject._d_copy, "move": _0_CosLifeCycle.LifeCycleObject._d_move, "remove": _0_CosLifeCycle.LifeCycleObject._d_remove} LifeCycleObject._omni_skeleton = LifeCycleObject _0_CosLifeCycle__POA.LifeCycleObject = LifeCycleObject del LifeCycleObject __name__ = "CosLifeCycle" # interface GenericFactory _0_CosLifeCycle._d_GenericFactory = (omniORB.tcInternal.tv_objref, "IDL:omg.org/CosLifeCycle/GenericFactory:1.0", "GenericFactory") omniORB.typeMapping["IDL:omg.org/CosLifeCycle/GenericFactory:1.0"] = _0_CosLifeCycle._d_GenericFactory _0_CosLifeCycle.GenericFactory = omniORB.newEmptyClass() class GenericFactory : _NP_RepositoryId = _0_CosLifeCycle._d_GenericFactory[1] def __init__(self, *args, **kw): raise RuntimeError("Cannot construct objects of this type.") _nil = CORBA.Object._nil _0_CosLifeCycle.GenericFactory = GenericFactory _0_CosLifeCycle._tc_GenericFactory = omniORB.tcInternal.createTypeCode(_0_CosLifeCycle._d_GenericFactory) omniORB.registerType(GenericFactory._NP_RepositoryId, _0_CosLifeCycle._d_GenericFactory, _0_CosLifeCycle._tc_GenericFactory) # GenericFactory operations and attributes GenericFactory._d_supports = ((omniORB.typeMapping["IDL:omg.org/CosLifeCycle/Key:1.0"], ), (omniORB.tcInternal.tv_boolean, ), None) GenericFactory._d_create_object = ((omniORB.typeMapping["IDL:omg.org/CosLifeCycle/Key:1.0"], omniORB.typeMapping["IDL:omg.org/CosLifeCycle/Criteria:1.0"]), (omniORB.typeMapping["IDL:omg.org/CORBA/Object:1.0"], ), {_0_CosLifeCycle.NoFactory._NP_RepositoryId: _0_CosLifeCycle._d_NoFactory, _0_CosLifeCycle.InvalidCriteria._NP_RepositoryId: _0_CosLifeCycle._d_InvalidCriteria, _0_CosLifeCycle.CannotMeetCriteria._NP_RepositoryId: _0_CosLifeCycle._d_CannotMeetCriteria}) # GenericFactory object reference class _objref_GenericFactory (CORBA.Object): _NP_RepositoryId = GenericFactory._NP_RepositoryId def __init__(self): CORBA.Object.__init__(self) def supports(self, *args): return _omnipy.invoke(self, "supports", _0_CosLifeCycle.GenericFactory._d_supports, args) def create_object(self, *args): return _omnipy.invoke(self, "create_object", _0_CosLifeCycle.GenericFactory._d_create_object, args) __methods__ = ["supports", "create_object"] + CORBA.Object.__methods__ omniORB.registerObjref(GenericFactory._NP_RepositoryId, _objref_GenericFactory) _0_CosLifeCycle._objref_GenericFactory = _objref_GenericFactory del GenericFactory, _objref_GenericFactory # GenericFactory skeleton __name__ = "CosLifeCycle__POA" class GenericFactory (PortableServer.Servant): _NP_RepositoryId = _0_CosLifeCycle.GenericFactory._NP_RepositoryId _omni_op_d = {"supports": _0_CosLifeCycle.GenericFactory._d_supports, "create_object": _0_CosLifeCycle.GenericFactory._d_create_object} GenericFactory._omni_skeleton = GenericFactory _0_CosLifeCycle__POA.GenericFactory = GenericFactory del GenericFactory __name__ = "CosLifeCycle" # # End of module "CosLifeCycle" # __name__ = "CosLifeCycle_idl" _exported_modules = ( "CosLifeCycle", ) # The end. omniEvents-2_6_2/test/CosLifeCycle/0000755000076400001440000000000010242457405017414 5ustar alexusers00000000000000omniEvents-2_6_2/test/CosLifeCycle/__init__.py0000644000076400001440000000026710242457405021532 0ustar alexusers00000000000000# DO NOT EDIT THIS FILE! # # Python module CosLifeCycle generated by omniidl # ** 1. Stub files contributing to this module import CosLifeCycle_idl # ** 2. Sub-modules # ** 3. End omniEvents-2_6_2/test/CosLifeCycle__POA/0000755000076400001440000000000010242457405020252 5ustar alexusers00000000000000omniEvents-2_6_2/test/CosLifeCycle__POA/__init__.py0000644000076400001440000000027410242457405022366 0ustar alexusers00000000000000# DO NOT EDIT THIS FILE! # # Python module CosLifeCycle__POA generated by omniidl # ** 1. Stub files contributing to this module import CosLifeCycle_idl # ** 2. Sub-modules # ** 3. End omniEvents-2_6_2/test/CosEventComm_idl.py0000644000076400001440000002335210242457405020661 0ustar alexusers00000000000000# Python stubs generated by omniidl from /home/alex/calvino/work/omni.d/local/share/idl/omniORB/COS/CosEventComm.idl import omniORB, _omnipy from omniORB import CORBA, PortableServer _0_CORBA = CORBA _omnipy.checkVersion(2,0, __file__) # # Start of module "CosEventComm" # __name__ = "CosEventComm" _0_CosEventComm = omniORB.openModule("CosEventComm", r"/home/alex/calvino/work/omni.d/local/share/idl/omniORB/COS/CosEventComm.idl") _0_CosEventComm__POA = omniORB.openModule("CosEventComm__POA", r"/home/alex/calvino/work/omni.d/local/share/idl/omniORB/COS/CosEventComm.idl") # exception Disconnected _0_CosEventComm.Disconnected = omniORB.newEmptyClass() class Disconnected (CORBA.UserException): _NP_RepositoryId = "IDL:omg.org/CosEventComm/Disconnected:1.0" _0_CosEventComm.Disconnected = Disconnected _0_CosEventComm._d_Disconnected = (omniORB.tcInternal.tv_except, Disconnected, Disconnected._NP_RepositoryId, "Disconnected") _0_CosEventComm._tc_Disconnected = omniORB.tcInternal.createTypeCode(_0_CosEventComm._d_Disconnected) omniORB.registerType(Disconnected._NP_RepositoryId, _0_CosEventComm._d_Disconnected, _0_CosEventComm._tc_Disconnected) del Disconnected # interface PushConsumer _0_CosEventComm._d_PushConsumer = (omniORB.tcInternal.tv_objref, "IDL:omg.org/CosEventComm/PushConsumer:1.0", "PushConsumer") omniORB.typeMapping["IDL:omg.org/CosEventComm/PushConsumer:1.0"] = _0_CosEventComm._d_PushConsumer _0_CosEventComm.PushConsumer = omniORB.newEmptyClass() class PushConsumer : _NP_RepositoryId = _0_CosEventComm._d_PushConsumer[1] def __init__(self, *args, **kw): raise RuntimeError("Cannot construct objects of this type.") _nil = CORBA.Object._nil _0_CosEventComm.PushConsumer = PushConsumer _0_CosEventComm._tc_PushConsumer = omniORB.tcInternal.createTypeCode(_0_CosEventComm._d_PushConsumer) omniORB.registerType(PushConsumer._NP_RepositoryId, _0_CosEventComm._d_PushConsumer, _0_CosEventComm._tc_PushConsumer) # PushConsumer operations and attributes PushConsumer._d_push = ((omniORB.tcInternal.tv_any, ), (), {_0_CosEventComm.Disconnected._NP_RepositoryId: _0_CosEventComm._d_Disconnected}) PushConsumer._d_disconnect_push_consumer = ((), (), None) # PushConsumer object reference class _objref_PushConsumer (CORBA.Object): _NP_RepositoryId = PushConsumer._NP_RepositoryId def __init__(self): CORBA.Object.__init__(self) def push(self, *args): return _omnipy.invoke(self, "push", _0_CosEventComm.PushConsumer._d_push, args) def disconnect_push_consumer(self, *args): return _omnipy.invoke(self, "disconnect_push_consumer", _0_CosEventComm.PushConsumer._d_disconnect_push_consumer, args) __methods__ = ["push", "disconnect_push_consumer"] + CORBA.Object.__methods__ omniORB.registerObjref(PushConsumer._NP_RepositoryId, _objref_PushConsumer) _0_CosEventComm._objref_PushConsumer = _objref_PushConsumer del PushConsumer, _objref_PushConsumer # PushConsumer skeleton __name__ = "CosEventComm__POA" class PushConsumer (PortableServer.Servant): _NP_RepositoryId = _0_CosEventComm.PushConsumer._NP_RepositoryId _omni_op_d = {"push": _0_CosEventComm.PushConsumer._d_push, "disconnect_push_consumer": _0_CosEventComm.PushConsumer._d_disconnect_push_consumer} PushConsumer._omni_skeleton = PushConsumer _0_CosEventComm__POA.PushConsumer = PushConsumer del PushConsumer __name__ = "CosEventComm" # interface PushSupplier _0_CosEventComm._d_PushSupplier = (omniORB.tcInternal.tv_objref, "IDL:omg.org/CosEventComm/PushSupplier:1.0", "PushSupplier") omniORB.typeMapping["IDL:omg.org/CosEventComm/PushSupplier:1.0"] = _0_CosEventComm._d_PushSupplier _0_CosEventComm.PushSupplier = omniORB.newEmptyClass() class PushSupplier : _NP_RepositoryId = _0_CosEventComm._d_PushSupplier[1] def __init__(self, *args, **kw): raise RuntimeError("Cannot construct objects of this type.") _nil = CORBA.Object._nil _0_CosEventComm.PushSupplier = PushSupplier _0_CosEventComm._tc_PushSupplier = omniORB.tcInternal.createTypeCode(_0_CosEventComm._d_PushSupplier) omniORB.registerType(PushSupplier._NP_RepositoryId, _0_CosEventComm._d_PushSupplier, _0_CosEventComm._tc_PushSupplier) # PushSupplier operations and attributes PushSupplier._d_disconnect_push_supplier = ((), (), None) # PushSupplier object reference class _objref_PushSupplier (CORBA.Object): _NP_RepositoryId = PushSupplier._NP_RepositoryId def __init__(self): CORBA.Object.__init__(self) def disconnect_push_supplier(self, *args): return _omnipy.invoke(self, "disconnect_push_supplier", _0_CosEventComm.PushSupplier._d_disconnect_push_supplier, args) __methods__ = ["disconnect_push_supplier"] + CORBA.Object.__methods__ omniORB.registerObjref(PushSupplier._NP_RepositoryId, _objref_PushSupplier) _0_CosEventComm._objref_PushSupplier = _objref_PushSupplier del PushSupplier, _objref_PushSupplier # PushSupplier skeleton __name__ = "CosEventComm__POA" class PushSupplier (PortableServer.Servant): _NP_RepositoryId = _0_CosEventComm.PushSupplier._NP_RepositoryId _omni_op_d = {"disconnect_push_supplier": _0_CosEventComm.PushSupplier._d_disconnect_push_supplier} PushSupplier._omni_skeleton = PushSupplier _0_CosEventComm__POA.PushSupplier = PushSupplier del PushSupplier __name__ = "CosEventComm" # interface PullSupplier _0_CosEventComm._d_PullSupplier = (omniORB.tcInternal.tv_objref, "IDL:omg.org/CosEventComm/PullSupplier:1.0", "PullSupplier") omniORB.typeMapping["IDL:omg.org/CosEventComm/PullSupplier:1.0"] = _0_CosEventComm._d_PullSupplier _0_CosEventComm.PullSupplier = omniORB.newEmptyClass() class PullSupplier : _NP_RepositoryId = _0_CosEventComm._d_PullSupplier[1] def __init__(self, *args, **kw): raise RuntimeError("Cannot construct objects of this type.") _nil = CORBA.Object._nil _0_CosEventComm.PullSupplier = PullSupplier _0_CosEventComm._tc_PullSupplier = omniORB.tcInternal.createTypeCode(_0_CosEventComm._d_PullSupplier) omniORB.registerType(PullSupplier._NP_RepositoryId, _0_CosEventComm._d_PullSupplier, _0_CosEventComm._tc_PullSupplier) # PullSupplier operations and attributes PullSupplier._d_pull = ((), (omniORB.tcInternal.tv_any, ), {_0_CosEventComm.Disconnected._NP_RepositoryId: _0_CosEventComm._d_Disconnected}) PullSupplier._d_try_pull = ((), (omniORB.tcInternal.tv_any, omniORB.tcInternal.tv_boolean), {_0_CosEventComm.Disconnected._NP_RepositoryId: _0_CosEventComm._d_Disconnected}) PullSupplier._d_disconnect_pull_supplier = ((), (), None) # PullSupplier object reference class _objref_PullSupplier (CORBA.Object): _NP_RepositoryId = PullSupplier._NP_RepositoryId def __init__(self): CORBA.Object.__init__(self) def pull(self, *args): return _omnipy.invoke(self, "pull", _0_CosEventComm.PullSupplier._d_pull, args) def try_pull(self, *args): return _omnipy.invoke(self, "try_pull", _0_CosEventComm.PullSupplier._d_try_pull, args) def disconnect_pull_supplier(self, *args): return _omnipy.invoke(self, "disconnect_pull_supplier", _0_CosEventComm.PullSupplier._d_disconnect_pull_supplier, args) __methods__ = ["pull", "try_pull", "disconnect_pull_supplier"] + CORBA.Object.__methods__ omniORB.registerObjref(PullSupplier._NP_RepositoryId, _objref_PullSupplier) _0_CosEventComm._objref_PullSupplier = _objref_PullSupplier del PullSupplier, _objref_PullSupplier # PullSupplier skeleton __name__ = "CosEventComm__POA" class PullSupplier (PortableServer.Servant): _NP_RepositoryId = _0_CosEventComm.PullSupplier._NP_RepositoryId _omni_op_d = {"pull": _0_CosEventComm.PullSupplier._d_pull, "try_pull": _0_CosEventComm.PullSupplier._d_try_pull, "disconnect_pull_supplier": _0_CosEventComm.PullSupplier._d_disconnect_pull_supplier} PullSupplier._omni_skeleton = PullSupplier _0_CosEventComm__POA.PullSupplier = PullSupplier del PullSupplier __name__ = "CosEventComm" # interface PullConsumer _0_CosEventComm._d_PullConsumer = (omniORB.tcInternal.tv_objref, "IDL:omg.org/CosEventComm/PullConsumer:1.0", "PullConsumer") omniORB.typeMapping["IDL:omg.org/CosEventComm/PullConsumer:1.0"] = _0_CosEventComm._d_PullConsumer _0_CosEventComm.PullConsumer = omniORB.newEmptyClass() class PullConsumer : _NP_RepositoryId = _0_CosEventComm._d_PullConsumer[1] def __init__(self, *args, **kw): raise RuntimeError("Cannot construct objects of this type.") _nil = CORBA.Object._nil _0_CosEventComm.PullConsumer = PullConsumer _0_CosEventComm._tc_PullConsumer = omniORB.tcInternal.createTypeCode(_0_CosEventComm._d_PullConsumer) omniORB.registerType(PullConsumer._NP_RepositoryId, _0_CosEventComm._d_PullConsumer, _0_CosEventComm._tc_PullConsumer) # PullConsumer operations and attributes PullConsumer._d_disconnect_pull_consumer = ((), (), None) # PullConsumer object reference class _objref_PullConsumer (CORBA.Object): _NP_RepositoryId = PullConsumer._NP_RepositoryId def __init__(self): CORBA.Object.__init__(self) def disconnect_pull_consumer(self, *args): return _omnipy.invoke(self, "disconnect_pull_consumer", _0_CosEventComm.PullConsumer._d_disconnect_pull_consumer, args) __methods__ = ["disconnect_pull_consumer"] + CORBA.Object.__methods__ omniORB.registerObjref(PullConsumer._NP_RepositoryId, _objref_PullConsumer) _0_CosEventComm._objref_PullConsumer = _objref_PullConsumer del PullConsumer, _objref_PullConsumer # PullConsumer skeleton __name__ = "CosEventComm__POA" class PullConsumer (PortableServer.Servant): _NP_RepositoryId = _0_CosEventComm.PullConsumer._NP_RepositoryId _omni_op_d = {"disconnect_pull_consumer": _0_CosEventComm.PullConsumer._d_disconnect_pull_consumer} PullConsumer._omni_skeleton = PullConsumer _0_CosEventComm__POA.PullConsumer = PullConsumer del PullConsumer __name__ = "CosEventComm" # # End of module "CosEventComm" # __name__ = "CosEventComm_idl" _exported_modules = ( "CosEventComm", ) # The end. omniEvents-2_6_2/test/CosEventComm/0000755000076400001440000000000010303573712017450 5ustar alexusers00000000000000omniEvents-2_6_2/test/CosEventComm/__init__.py0000644000076400001440000000026710242457405021570 0ustar alexusers00000000000000# DO NOT EDIT THIS FILE! # # Python module CosEventComm generated by omniidl # ** 1. Stub files contributing to this module import CosEventComm_idl # ** 2. Sub-modules # ** 3. End omniEvents-2_6_2/test/CosEventComm/__init__.pyc0000644000076400001440000000034610303573712021727 0ustar alexusers00000000000000;ò _ŠBc@s dkZdS(N(sCosEventComm_idl(sCosEventComm_idl((sc/amd/calvino/root/home/alex/share/work/omni.d/events/omniEvents-2_6_2/test/CosEventComm/__init__.pys?somniEvents-2_6_2/test/CosEventComm__POA/0000755000076400001440000000000010242457405020310 5ustar alexusers00000000000000omniEvents-2_6_2/test/CosEventComm__POA/__init__.py0000644000076400001440000000027410242457405022424 0ustar alexusers00000000000000# DO NOT EDIT THIS FILE! # # Python module CosEventComm__POA generated by omniidl # ** 1. Stub files contributing to this module import CosEventComm_idl # ** 2. Sub-modules # ** 3. End omniEvents-2_6_2/test/CosEventChannelAdmin_idl.py0000644000076400001440000005015210242457405022305 0ustar alexusers00000000000000# Python stubs generated by omniidl from /home/alex/calvino/work/omni.d/local/share/idl/omniORB/COS/CosEventChannelAdmin.idl import omniORB, _omnipy from omniORB import CORBA, PortableServer _0_CORBA = CORBA _omnipy.checkVersion(2,0, __file__) # #include "CosEventComm.idl" import CosEventComm_idl _0_CosEventComm = omniORB.openModule("CosEventComm") _0_CosEventComm__POA = omniORB.openModule("CosEventComm__POA") # # Start of module "CosEventChannelAdmin" # __name__ = "CosEventChannelAdmin" _0_CosEventChannelAdmin = omniORB.openModule("CosEventChannelAdmin", r"/home/alex/calvino/work/omni.d/local/share/idl/omniORB/COS/CosEventChannelAdmin.idl") _0_CosEventChannelAdmin__POA = omniORB.openModule("CosEventChannelAdmin__POA", r"/home/alex/calvino/work/omni.d/local/share/idl/omniORB/COS/CosEventChannelAdmin.idl") # exception AlreadyConnected _0_CosEventChannelAdmin.AlreadyConnected = omniORB.newEmptyClass() class AlreadyConnected (CORBA.UserException): _NP_RepositoryId = "IDL:omg.org/CosEventChannelAdmin/AlreadyConnected:1.0" _0_CosEventChannelAdmin.AlreadyConnected = AlreadyConnected _0_CosEventChannelAdmin._d_AlreadyConnected = (omniORB.tcInternal.tv_except, AlreadyConnected, AlreadyConnected._NP_RepositoryId, "AlreadyConnected") _0_CosEventChannelAdmin._tc_AlreadyConnected = omniORB.tcInternal.createTypeCode(_0_CosEventChannelAdmin._d_AlreadyConnected) omniORB.registerType(AlreadyConnected._NP_RepositoryId, _0_CosEventChannelAdmin._d_AlreadyConnected, _0_CosEventChannelAdmin._tc_AlreadyConnected) del AlreadyConnected # exception TypeError _0_CosEventChannelAdmin.TypeError = omniORB.newEmptyClass() class TypeError (CORBA.UserException): _NP_RepositoryId = "IDL:omg.org/CosEventChannelAdmin/TypeError:1.0" _0_CosEventChannelAdmin.TypeError = TypeError _0_CosEventChannelAdmin._d_TypeError = (omniORB.tcInternal.tv_except, TypeError, TypeError._NP_RepositoryId, "TypeError") _0_CosEventChannelAdmin._tc_TypeError = omniORB.tcInternal.createTypeCode(_0_CosEventChannelAdmin._d_TypeError) omniORB.registerType(TypeError._NP_RepositoryId, _0_CosEventChannelAdmin._d_TypeError, _0_CosEventChannelAdmin._tc_TypeError) del TypeError # interface ProxyPushConsumer _0_CosEventChannelAdmin._d_ProxyPushConsumer = (omniORB.tcInternal.tv_objref, "IDL:omg.org/CosEventChannelAdmin/ProxyPushConsumer:1.0", "ProxyPushConsumer") omniORB.typeMapping["IDL:omg.org/CosEventChannelAdmin/ProxyPushConsumer:1.0"] = _0_CosEventChannelAdmin._d_ProxyPushConsumer _0_CosEventChannelAdmin.ProxyPushConsumer = omniORB.newEmptyClass() class ProxyPushConsumer (_0_CosEventComm.PushConsumer): _NP_RepositoryId = _0_CosEventChannelAdmin._d_ProxyPushConsumer[1] def __init__(self, *args, **kw): raise RuntimeError("Cannot construct objects of this type.") _nil = CORBA.Object._nil _0_CosEventChannelAdmin.ProxyPushConsumer = ProxyPushConsumer _0_CosEventChannelAdmin._tc_ProxyPushConsumer = omniORB.tcInternal.createTypeCode(_0_CosEventChannelAdmin._d_ProxyPushConsumer) omniORB.registerType(ProxyPushConsumer._NP_RepositoryId, _0_CosEventChannelAdmin._d_ProxyPushConsumer, _0_CosEventChannelAdmin._tc_ProxyPushConsumer) # ProxyPushConsumer operations and attributes ProxyPushConsumer._d_connect_push_supplier = ((omniORB.typeMapping["IDL:omg.org/CosEventComm/PushSupplier:1.0"], ), (), {_0_CosEventChannelAdmin.AlreadyConnected._NP_RepositoryId: _0_CosEventChannelAdmin._d_AlreadyConnected}) # ProxyPushConsumer object reference class _objref_ProxyPushConsumer (_0_CosEventComm._objref_PushConsumer): _NP_RepositoryId = ProxyPushConsumer._NP_RepositoryId def __init__(self): _0_CosEventComm._objref_PushConsumer.__init__(self) def connect_push_supplier(self, *args): return _omnipy.invoke(self, "connect_push_supplier", _0_CosEventChannelAdmin.ProxyPushConsumer._d_connect_push_supplier, args) __methods__ = ["connect_push_supplier"] + _0_CosEventComm._objref_PushConsumer.__methods__ omniORB.registerObjref(ProxyPushConsumer._NP_RepositoryId, _objref_ProxyPushConsumer) _0_CosEventChannelAdmin._objref_ProxyPushConsumer = _objref_ProxyPushConsumer del ProxyPushConsumer, _objref_ProxyPushConsumer # ProxyPushConsumer skeleton __name__ = "CosEventChannelAdmin__POA" class ProxyPushConsumer (_0_CosEventComm__POA.PushConsumer): _NP_RepositoryId = _0_CosEventChannelAdmin.ProxyPushConsumer._NP_RepositoryId _omni_op_d = {"connect_push_supplier": _0_CosEventChannelAdmin.ProxyPushConsumer._d_connect_push_supplier} _omni_op_d.update(_0_CosEventComm__POA.PushConsumer._omni_op_d) ProxyPushConsumer._omni_skeleton = ProxyPushConsumer _0_CosEventChannelAdmin__POA.ProxyPushConsumer = ProxyPushConsumer del ProxyPushConsumer __name__ = "CosEventChannelAdmin" # interface ProxyPullSupplier _0_CosEventChannelAdmin._d_ProxyPullSupplier = (omniORB.tcInternal.tv_objref, "IDL:omg.org/CosEventChannelAdmin/ProxyPullSupplier:1.0", "ProxyPullSupplier") omniORB.typeMapping["IDL:omg.org/CosEventChannelAdmin/ProxyPullSupplier:1.0"] = _0_CosEventChannelAdmin._d_ProxyPullSupplier _0_CosEventChannelAdmin.ProxyPullSupplier = omniORB.newEmptyClass() class ProxyPullSupplier (_0_CosEventComm.PullSupplier): _NP_RepositoryId = _0_CosEventChannelAdmin._d_ProxyPullSupplier[1] def __init__(self, *args, **kw): raise RuntimeError("Cannot construct objects of this type.") _nil = CORBA.Object._nil _0_CosEventChannelAdmin.ProxyPullSupplier = ProxyPullSupplier _0_CosEventChannelAdmin._tc_ProxyPullSupplier = omniORB.tcInternal.createTypeCode(_0_CosEventChannelAdmin._d_ProxyPullSupplier) omniORB.registerType(ProxyPullSupplier._NP_RepositoryId, _0_CosEventChannelAdmin._d_ProxyPullSupplier, _0_CosEventChannelAdmin._tc_ProxyPullSupplier) # ProxyPullSupplier operations and attributes ProxyPullSupplier._d_connect_pull_consumer = ((omniORB.typeMapping["IDL:omg.org/CosEventComm/PullConsumer:1.0"], ), (), {_0_CosEventChannelAdmin.AlreadyConnected._NP_RepositoryId: _0_CosEventChannelAdmin._d_AlreadyConnected}) # ProxyPullSupplier object reference class _objref_ProxyPullSupplier (_0_CosEventComm._objref_PullSupplier): _NP_RepositoryId = ProxyPullSupplier._NP_RepositoryId def __init__(self): _0_CosEventComm._objref_PullSupplier.__init__(self) def connect_pull_consumer(self, *args): return _omnipy.invoke(self, "connect_pull_consumer", _0_CosEventChannelAdmin.ProxyPullSupplier._d_connect_pull_consumer, args) __methods__ = ["connect_pull_consumer"] + _0_CosEventComm._objref_PullSupplier.__methods__ omniORB.registerObjref(ProxyPullSupplier._NP_RepositoryId, _objref_ProxyPullSupplier) _0_CosEventChannelAdmin._objref_ProxyPullSupplier = _objref_ProxyPullSupplier del ProxyPullSupplier, _objref_ProxyPullSupplier # ProxyPullSupplier skeleton __name__ = "CosEventChannelAdmin__POA" class ProxyPullSupplier (_0_CosEventComm__POA.PullSupplier): _NP_RepositoryId = _0_CosEventChannelAdmin.ProxyPullSupplier._NP_RepositoryId _omni_op_d = {"connect_pull_consumer": _0_CosEventChannelAdmin.ProxyPullSupplier._d_connect_pull_consumer} _omni_op_d.update(_0_CosEventComm__POA.PullSupplier._omni_op_d) ProxyPullSupplier._omni_skeleton = ProxyPullSupplier _0_CosEventChannelAdmin__POA.ProxyPullSupplier = ProxyPullSupplier del ProxyPullSupplier __name__ = "CosEventChannelAdmin" # interface ProxyPullConsumer _0_CosEventChannelAdmin._d_ProxyPullConsumer = (omniORB.tcInternal.tv_objref, "IDL:omg.org/CosEventChannelAdmin/ProxyPullConsumer:1.0", "ProxyPullConsumer") omniORB.typeMapping["IDL:omg.org/CosEventChannelAdmin/ProxyPullConsumer:1.0"] = _0_CosEventChannelAdmin._d_ProxyPullConsumer _0_CosEventChannelAdmin.ProxyPullConsumer = omniORB.newEmptyClass() class ProxyPullConsumer (_0_CosEventComm.PullConsumer): _NP_RepositoryId = _0_CosEventChannelAdmin._d_ProxyPullConsumer[1] def __init__(self, *args, **kw): raise RuntimeError("Cannot construct objects of this type.") _nil = CORBA.Object._nil _0_CosEventChannelAdmin.ProxyPullConsumer = ProxyPullConsumer _0_CosEventChannelAdmin._tc_ProxyPullConsumer = omniORB.tcInternal.createTypeCode(_0_CosEventChannelAdmin._d_ProxyPullConsumer) omniORB.registerType(ProxyPullConsumer._NP_RepositoryId, _0_CosEventChannelAdmin._d_ProxyPullConsumer, _0_CosEventChannelAdmin._tc_ProxyPullConsumer) # ProxyPullConsumer operations and attributes ProxyPullConsumer._d_connect_pull_supplier = ((omniORB.typeMapping["IDL:omg.org/CosEventComm/PullSupplier:1.0"], ), (), {_0_CosEventChannelAdmin.AlreadyConnected._NP_RepositoryId: _0_CosEventChannelAdmin._d_AlreadyConnected, _0_CosEventChannelAdmin.TypeError._NP_RepositoryId: _0_CosEventChannelAdmin._d_TypeError}) # ProxyPullConsumer object reference class _objref_ProxyPullConsumer (_0_CosEventComm._objref_PullConsumer): _NP_RepositoryId = ProxyPullConsumer._NP_RepositoryId def __init__(self): _0_CosEventComm._objref_PullConsumer.__init__(self) def connect_pull_supplier(self, *args): return _omnipy.invoke(self, "connect_pull_supplier", _0_CosEventChannelAdmin.ProxyPullConsumer._d_connect_pull_supplier, args) __methods__ = ["connect_pull_supplier"] + _0_CosEventComm._objref_PullConsumer.__methods__ omniORB.registerObjref(ProxyPullConsumer._NP_RepositoryId, _objref_ProxyPullConsumer) _0_CosEventChannelAdmin._objref_ProxyPullConsumer = _objref_ProxyPullConsumer del ProxyPullConsumer, _objref_ProxyPullConsumer # ProxyPullConsumer skeleton __name__ = "CosEventChannelAdmin__POA" class ProxyPullConsumer (_0_CosEventComm__POA.PullConsumer): _NP_RepositoryId = _0_CosEventChannelAdmin.ProxyPullConsumer._NP_RepositoryId _omni_op_d = {"connect_pull_supplier": _0_CosEventChannelAdmin.ProxyPullConsumer._d_connect_pull_supplier} _omni_op_d.update(_0_CosEventComm__POA.PullConsumer._omni_op_d) ProxyPullConsumer._omni_skeleton = ProxyPullConsumer _0_CosEventChannelAdmin__POA.ProxyPullConsumer = ProxyPullConsumer del ProxyPullConsumer __name__ = "CosEventChannelAdmin" # interface ProxyPushSupplier _0_CosEventChannelAdmin._d_ProxyPushSupplier = (omniORB.tcInternal.tv_objref, "IDL:omg.org/CosEventChannelAdmin/ProxyPushSupplier:1.0", "ProxyPushSupplier") omniORB.typeMapping["IDL:omg.org/CosEventChannelAdmin/ProxyPushSupplier:1.0"] = _0_CosEventChannelAdmin._d_ProxyPushSupplier _0_CosEventChannelAdmin.ProxyPushSupplier = omniORB.newEmptyClass() class ProxyPushSupplier (_0_CosEventComm.PushSupplier): _NP_RepositoryId = _0_CosEventChannelAdmin._d_ProxyPushSupplier[1] def __init__(self, *args, **kw): raise RuntimeError("Cannot construct objects of this type.") _nil = CORBA.Object._nil _0_CosEventChannelAdmin.ProxyPushSupplier = ProxyPushSupplier _0_CosEventChannelAdmin._tc_ProxyPushSupplier = omniORB.tcInternal.createTypeCode(_0_CosEventChannelAdmin._d_ProxyPushSupplier) omniORB.registerType(ProxyPushSupplier._NP_RepositoryId, _0_CosEventChannelAdmin._d_ProxyPushSupplier, _0_CosEventChannelAdmin._tc_ProxyPushSupplier) # ProxyPushSupplier operations and attributes ProxyPushSupplier._d_connect_push_consumer = ((omniORB.typeMapping["IDL:omg.org/CosEventComm/PushConsumer:1.0"], ), (), {_0_CosEventChannelAdmin.AlreadyConnected._NP_RepositoryId: _0_CosEventChannelAdmin._d_AlreadyConnected, _0_CosEventChannelAdmin.TypeError._NP_RepositoryId: _0_CosEventChannelAdmin._d_TypeError}) # ProxyPushSupplier object reference class _objref_ProxyPushSupplier (_0_CosEventComm._objref_PushSupplier): _NP_RepositoryId = ProxyPushSupplier._NP_RepositoryId def __init__(self): _0_CosEventComm._objref_PushSupplier.__init__(self) def connect_push_consumer(self, *args): return _omnipy.invoke(self, "connect_push_consumer", _0_CosEventChannelAdmin.ProxyPushSupplier._d_connect_push_consumer, args) __methods__ = ["connect_push_consumer"] + _0_CosEventComm._objref_PushSupplier.__methods__ omniORB.registerObjref(ProxyPushSupplier._NP_RepositoryId, _objref_ProxyPushSupplier) _0_CosEventChannelAdmin._objref_ProxyPushSupplier = _objref_ProxyPushSupplier del ProxyPushSupplier, _objref_ProxyPushSupplier # ProxyPushSupplier skeleton __name__ = "CosEventChannelAdmin__POA" class ProxyPushSupplier (_0_CosEventComm__POA.PushSupplier): _NP_RepositoryId = _0_CosEventChannelAdmin.ProxyPushSupplier._NP_RepositoryId _omni_op_d = {"connect_push_consumer": _0_CosEventChannelAdmin.ProxyPushSupplier._d_connect_push_consumer} _omni_op_d.update(_0_CosEventComm__POA.PushSupplier._omni_op_d) ProxyPushSupplier._omni_skeleton = ProxyPushSupplier _0_CosEventChannelAdmin__POA.ProxyPushSupplier = ProxyPushSupplier del ProxyPushSupplier __name__ = "CosEventChannelAdmin" # interface ConsumerAdmin _0_CosEventChannelAdmin._d_ConsumerAdmin = (omniORB.tcInternal.tv_objref, "IDL:omg.org/CosEventChannelAdmin/ConsumerAdmin:1.0", "ConsumerAdmin") omniORB.typeMapping["IDL:omg.org/CosEventChannelAdmin/ConsumerAdmin:1.0"] = _0_CosEventChannelAdmin._d_ConsumerAdmin _0_CosEventChannelAdmin.ConsumerAdmin = omniORB.newEmptyClass() class ConsumerAdmin : _NP_RepositoryId = _0_CosEventChannelAdmin._d_ConsumerAdmin[1] def __init__(self, *args, **kw): raise RuntimeError("Cannot construct objects of this type.") _nil = CORBA.Object._nil _0_CosEventChannelAdmin.ConsumerAdmin = ConsumerAdmin _0_CosEventChannelAdmin._tc_ConsumerAdmin = omniORB.tcInternal.createTypeCode(_0_CosEventChannelAdmin._d_ConsumerAdmin) omniORB.registerType(ConsumerAdmin._NP_RepositoryId, _0_CosEventChannelAdmin._d_ConsumerAdmin, _0_CosEventChannelAdmin._tc_ConsumerAdmin) # ConsumerAdmin operations and attributes ConsumerAdmin._d_obtain_push_supplier = ((), (omniORB.typeMapping["IDL:omg.org/CosEventChannelAdmin/ProxyPushSupplier:1.0"], ), None) ConsumerAdmin._d_obtain_pull_supplier = ((), (omniORB.typeMapping["IDL:omg.org/CosEventChannelAdmin/ProxyPullSupplier:1.0"], ), None) # ConsumerAdmin object reference class _objref_ConsumerAdmin (CORBA.Object): _NP_RepositoryId = ConsumerAdmin._NP_RepositoryId def __init__(self): CORBA.Object.__init__(self) def obtain_push_supplier(self, *args): return _omnipy.invoke(self, "obtain_push_supplier", _0_CosEventChannelAdmin.ConsumerAdmin._d_obtain_push_supplier, args) def obtain_pull_supplier(self, *args): return _omnipy.invoke(self, "obtain_pull_supplier", _0_CosEventChannelAdmin.ConsumerAdmin._d_obtain_pull_supplier, args) __methods__ = ["obtain_push_supplier", "obtain_pull_supplier"] + CORBA.Object.__methods__ omniORB.registerObjref(ConsumerAdmin._NP_RepositoryId, _objref_ConsumerAdmin) _0_CosEventChannelAdmin._objref_ConsumerAdmin = _objref_ConsumerAdmin del ConsumerAdmin, _objref_ConsumerAdmin # ConsumerAdmin skeleton __name__ = "CosEventChannelAdmin__POA" class ConsumerAdmin (PortableServer.Servant): _NP_RepositoryId = _0_CosEventChannelAdmin.ConsumerAdmin._NP_RepositoryId _omni_op_d = {"obtain_push_supplier": _0_CosEventChannelAdmin.ConsumerAdmin._d_obtain_push_supplier, "obtain_pull_supplier": _0_CosEventChannelAdmin.ConsumerAdmin._d_obtain_pull_supplier} ConsumerAdmin._omni_skeleton = ConsumerAdmin _0_CosEventChannelAdmin__POA.ConsumerAdmin = ConsumerAdmin del ConsumerAdmin __name__ = "CosEventChannelAdmin" # interface SupplierAdmin _0_CosEventChannelAdmin._d_SupplierAdmin = (omniORB.tcInternal.tv_objref, "IDL:omg.org/CosEventChannelAdmin/SupplierAdmin:1.0", "SupplierAdmin") omniORB.typeMapping["IDL:omg.org/CosEventChannelAdmin/SupplierAdmin:1.0"] = _0_CosEventChannelAdmin._d_SupplierAdmin _0_CosEventChannelAdmin.SupplierAdmin = omniORB.newEmptyClass() class SupplierAdmin : _NP_RepositoryId = _0_CosEventChannelAdmin._d_SupplierAdmin[1] def __init__(self, *args, **kw): raise RuntimeError("Cannot construct objects of this type.") _nil = CORBA.Object._nil _0_CosEventChannelAdmin.SupplierAdmin = SupplierAdmin _0_CosEventChannelAdmin._tc_SupplierAdmin = omniORB.tcInternal.createTypeCode(_0_CosEventChannelAdmin._d_SupplierAdmin) omniORB.registerType(SupplierAdmin._NP_RepositoryId, _0_CosEventChannelAdmin._d_SupplierAdmin, _0_CosEventChannelAdmin._tc_SupplierAdmin) # SupplierAdmin operations and attributes SupplierAdmin._d_obtain_push_consumer = ((), (omniORB.typeMapping["IDL:omg.org/CosEventChannelAdmin/ProxyPushConsumer:1.0"], ), None) SupplierAdmin._d_obtain_pull_consumer = ((), (omniORB.typeMapping["IDL:omg.org/CosEventChannelAdmin/ProxyPullConsumer:1.0"], ), None) # SupplierAdmin object reference class _objref_SupplierAdmin (CORBA.Object): _NP_RepositoryId = SupplierAdmin._NP_RepositoryId def __init__(self): CORBA.Object.__init__(self) def obtain_push_consumer(self, *args): return _omnipy.invoke(self, "obtain_push_consumer", _0_CosEventChannelAdmin.SupplierAdmin._d_obtain_push_consumer, args) def obtain_pull_consumer(self, *args): return _omnipy.invoke(self, "obtain_pull_consumer", _0_CosEventChannelAdmin.SupplierAdmin._d_obtain_pull_consumer, args) __methods__ = ["obtain_push_consumer", "obtain_pull_consumer"] + CORBA.Object.__methods__ omniORB.registerObjref(SupplierAdmin._NP_RepositoryId, _objref_SupplierAdmin) _0_CosEventChannelAdmin._objref_SupplierAdmin = _objref_SupplierAdmin del SupplierAdmin, _objref_SupplierAdmin # SupplierAdmin skeleton __name__ = "CosEventChannelAdmin__POA" class SupplierAdmin (PortableServer.Servant): _NP_RepositoryId = _0_CosEventChannelAdmin.SupplierAdmin._NP_RepositoryId _omni_op_d = {"obtain_push_consumer": _0_CosEventChannelAdmin.SupplierAdmin._d_obtain_push_consumer, "obtain_pull_consumer": _0_CosEventChannelAdmin.SupplierAdmin._d_obtain_pull_consumer} SupplierAdmin._omni_skeleton = SupplierAdmin _0_CosEventChannelAdmin__POA.SupplierAdmin = SupplierAdmin del SupplierAdmin __name__ = "CosEventChannelAdmin" # interface EventChannel _0_CosEventChannelAdmin._d_EventChannel = (omniORB.tcInternal.tv_objref, "IDL:omg.org/CosEventChannelAdmin/EventChannel:1.0", "EventChannel") omniORB.typeMapping["IDL:omg.org/CosEventChannelAdmin/EventChannel:1.0"] = _0_CosEventChannelAdmin._d_EventChannel _0_CosEventChannelAdmin.EventChannel = omniORB.newEmptyClass() class EventChannel : _NP_RepositoryId = _0_CosEventChannelAdmin._d_EventChannel[1] def __init__(self, *args, **kw): raise RuntimeError("Cannot construct objects of this type.") _nil = CORBA.Object._nil _0_CosEventChannelAdmin.EventChannel = EventChannel _0_CosEventChannelAdmin._tc_EventChannel = omniORB.tcInternal.createTypeCode(_0_CosEventChannelAdmin._d_EventChannel) omniORB.registerType(EventChannel._NP_RepositoryId, _0_CosEventChannelAdmin._d_EventChannel, _0_CosEventChannelAdmin._tc_EventChannel) # EventChannel operations and attributes EventChannel._d_for_consumers = ((), (omniORB.typeMapping["IDL:omg.org/CosEventChannelAdmin/ConsumerAdmin:1.0"], ), None) EventChannel._d_for_suppliers = ((), (omniORB.typeMapping["IDL:omg.org/CosEventChannelAdmin/SupplierAdmin:1.0"], ), None) EventChannel._d_destroy = ((), (), None) # EventChannel object reference class _objref_EventChannel (CORBA.Object): _NP_RepositoryId = EventChannel._NP_RepositoryId def __init__(self): CORBA.Object.__init__(self) def for_consumers(self, *args): return _omnipy.invoke(self, "for_consumers", _0_CosEventChannelAdmin.EventChannel._d_for_consumers, args) def for_suppliers(self, *args): return _omnipy.invoke(self, "for_suppliers", _0_CosEventChannelAdmin.EventChannel._d_for_suppliers, args) def destroy(self, *args): return _omnipy.invoke(self, "destroy", _0_CosEventChannelAdmin.EventChannel._d_destroy, args) __methods__ = ["for_consumers", "for_suppliers", "destroy"] + CORBA.Object.__methods__ omniORB.registerObjref(EventChannel._NP_RepositoryId, _objref_EventChannel) _0_CosEventChannelAdmin._objref_EventChannel = _objref_EventChannel del EventChannel, _objref_EventChannel # EventChannel skeleton __name__ = "CosEventChannelAdmin__POA" class EventChannel (PortableServer.Servant): _NP_RepositoryId = _0_CosEventChannelAdmin.EventChannel._NP_RepositoryId _omni_op_d = {"for_consumers": _0_CosEventChannelAdmin.EventChannel._d_for_consumers, "for_suppliers": _0_CosEventChannelAdmin.EventChannel._d_for_suppliers, "destroy": _0_CosEventChannelAdmin.EventChannel._d_destroy} EventChannel._omni_skeleton = EventChannel _0_CosEventChannelAdmin__POA.EventChannel = EventChannel del EventChannel __name__ = "CosEventChannelAdmin" # # End of module "CosEventChannelAdmin" # __name__ = "CosEventChannelAdmin_idl" _exported_modules = ( "CosEventChannelAdmin", ) # The end. omniEvents-2_6_2/test/CosEventChannelAdmin/0000755000076400001440000000000010242457434021102 5ustar alexusers00000000000000omniEvents-2_6_2/test/CosEventChannelAdmin/__init__.py0000644000076400001440000000030710242457405023211 0ustar alexusers00000000000000# DO NOT EDIT THIS FILE! # # Python module CosEventChannelAdmin generated by omniidl # ** 1. Stub files contributing to this module import CosEventChannelAdmin_idl # ** 2. Sub-modules # ** 3. End omniEvents-2_6_2/test/CosEventChannelAdmin/__init__.pyc0000644000076400001440000000040210242457434023352 0ustar alexusers00000000000000;ò _ŠBc@s dkZdS(N(sCosEventChannelAdmin_idl(sCosEventChannelAdmin_idl((so/amd/calvino/root/home/alex/share/work/omni.d/events/omniEvents-2_6_2_rc1/test/CosEventChannelAdmin/__init__.pys?somniEvents-2_6_2/test/CosEventChannelAdmin__POA/0000755000076400001440000000000010242457405021736 5ustar alexusers00000000000000omniEvents-2_6_2/test/CosEventChannelAdmin__POA/__init__.py0000644000076400001440000000031410242457405024045 0ustar alexusers00000000000000# DO NOT EDIT THIS FILE! # # Python module CosEventChannelAdmin__POA generated by omniidl # ** 1. Stub files contributing to this module import CosEventChannelAdmin_idl # ** 2. Sub-modules # ** 3. End omniEvents-2_6_2/test/CosTypedEventComm_idl.py0000644000076400001440000001310310242457405021660 0ustar alexusers00000000000000# Python stubs generated by omniidl from /home/alex/calvino/work/omni.d/local/share/idl/omniORB/COS/CosTypedEventComm.idl import omniORB, _omnipy from omniORB import CORBA, PortableServer _0_CORBA = CORBA _omnipy.checkVersion(2,0, __file__) # #include "CosEventComm.idl" import CosEventComm_idl _0_CosEventComm = omniORB.openModule("CosEventComm") _0_CosEventComm__POA = omniORB.openModule("CosEventComm__POA") # # Start of module "CosTypedEventComm" # __name__ = "CosTypedEventComm" _0_CosTypedEventComm = omniORB.openModule("CosTypedEventComm", r"/home/alex/calvino/work/omni.d/local/share/idl/omniORB/COS/CosTypedEventComm.idl") _0_CosTypedEventComm__POA = omniORB.openModule("CosTypedEventComm__POA", r"/home/alex/calvino/work/omni.d/local/share/idl/omniORB/COS/CosTypedEventComm.idl") # interface TypedPushConsumer _0_CosTypedEventComm._d_TypedPushConsumer = (omniORB.tcInternal.tv_objref, "IDL:omg.org/CosTypedEventComm/TypedPushConsumer:1.0", "TypedPushConsumer") omniORB.typeMapping["IDL:omg.org/CosTypedEventComm/TypedPushConsumer:1.0"] = _0_CosTypedEventComm._d_TypedPushConsumer _0_CosTypedEventComm.TypedPushConsumer = omniORB.newEmptyClass() class TypedPushConsumer (_0_CosEventComm.PushConsumer): _NP_RepositoryId = _0_CosTypedEventComm._d_TypedPushConsumer[1] def __init__(self, *args, **kw): raise RuntimeError("Cannot construct objects of this type.") _nil = CORBA.Object._nil _0_CosTypedEventComm.TypedPushConsumer = TypedPushConsumer _0_CosTypedEventComm._tc_TypedPushConsumer = omniORB.tcInternal.createTypeCode(_0_CosTypedEventComm._d_TypedPushConsumer) omniORB.registerType(TypedPushConsumer._NP_RepositoryId, _0_CosTypedEventComm._d_TypedPushConsumer, _0_CosTypedEventComm._tc_TypedPushConsumer) # TypedPushConsumer operations and attributes TypedPushConsumer._d_get_typed_consumer = ((), (omniORB.typeMapping["IDL:omg.org/CORBA/Object:1.0"], ), None) # TypedPushConsumer object reference class _objref_TypedPushConsumer (_0_CosEventComm._objref_PushConsumer): _NP_RepositoryId = TypedPushConsumer._NP_RepositoryId def __init__(self): _0_CosEventComm._objref_PushConsumer.__init__(self) def get_typed_consumer(self, *args): return _omnipy.invoke(self, "get_typed_consumer", _0_CosTypedEventComm.TypedPushConsumer._d_get_typed_consumer, args) __methods__ = ["get_typed_consumer"] + _0_CosEventComm._objref_PushConsumer.__methods__ omniORB.registerObjref(TypedPushConsumer._NP_RepositoryId, _objref_TypedPushConsumer) _0_CosTypedEventComm._objref_TypedPushConsumer = _objref_TypedPushConsumer del TypedPushConsumer, _objref_TypedPushConsumer # TypedPushConsumer skeleton __name__ = "CosTypedEventComm__POA" class TypedPushConsumer (_0_CosEventComm__POA.PushConsumer): _NP_RepositoryId = _0_CosTypedEventComm.TypedPushConsumer._NP_RepositoryId _omni_op_d = {"get_typed_consumer": _0_CosTypedEventComm.TypedPushConsumer._d_get_typed_consumer} _omni_op_d.update(_0_CosEventComm__POA.PushConsumer._omni_op_d) TypedPushConsumer._omni_skeleton = TypedPushConsumer _0_CosTypedEventComm__POA.TypedPushConsumer = TypedPushConsumer del TypedPushConsumer __name__ = "CosTypedEventComm" # interface TypedPullSupplier _0_CosTypedEventComm._d_TypedPullSupplier = (omniORB.tcInternal.tv_objref, "IDL:omg.org/CosTypedEventComm/TypedPullSupplier:1.0", "TypedPullSupplier") omniORB.typeMapping["IDL:omg.org/CosTypedEventComm/TypedPullSupplier:1.0"] = _0_CosTypedEventComm._d_TypedPullSupplier _0_CosTypedEventComm.TypedPullSupplier = omniORB.newEmptyClass() class TypedPullSupplier (_0_CosEventComm.PullSupplier): _NP_RepositoryId = _0_CosTypedEventComm._d_TypedPullSupplier[1] def __init__(self, *args, **kw): raise RuntimeError("Cannot construct objects of this type.") _nil = CORBA.Object._nil _0_CosTypedEventComm.TypedPullSupplier = TypedPullSupplier _0_CosTypedEventComm._tc_TypedPullSupplier = omniORB.tcInternal.createTypeCode(_0_CosTypedEventComm._d_TypedPullSupplier) omniORB.registerType(TypedPullSupplier._NP_RepositoryId, _0_CosTypedEventComm._d_TypedPullSupplier, _0_CosTypedEventComm._tc_TypedPullSupplier) # TypedPullSupplier operations and attributes TypedPullSupplier._d_get_typed_supplier = ((), (omniORB.typeMapping["IDL:omg.org/CORBA/Object:1.0"], ), None) # TypedPullSupplier object reference class _objref_TypedPullSupplier (_0_CosEventComm._objref_PullSupplier): _NP_RepositoryId = TypedPullSupplier._NP_RepositoryId def __init__(self): _0_CosEventComm._objref_PullSupplier.__init__(self) def get_typed_supplier(self, *args): return _omnipy.invoke(self, "get_typed_supplier", _0_CosTypedEventComm.TypedPullSupplier._d_get_typed_supplier, args) __methods__ = ["get_typed_supplier"] + _0_CosEventComm._objref_PullSupplier.__methods__ omniORB.registerObjref(TypedPullSupplier._NP_RepositoryId, _objref_TypedPullSupplier) _0_CosTypedEventComm._objref_TypedPullSupplier = _objref_TypedPullSupplier del TypedPullSupplier, _objref_TypedPullSupplier # TypedPullSupplier skeleton __name__ = "CosTypedEventComm__POA" class TypedPullSupplier (_0_CosEventComm__POA.PullSupplier): _NP_RepositoryId = _0_CosTypedEventComm.TypedPullSupplier._NP_RepositoryId _omni_op_d = {"get_typed_supplier": _0_CosTypedEventComm.TypedPullSupplier._d_get_typed_supplier} _omni_op_d.update(_0_CosEventComm__POA.PullSupplier._omni_op_d) TypedPullSupplier._omni_skeleton = TypedPullSupplier _0_CosTypedEventComm__POA.TypedPullSupplier = TypedPullSupplier del TypedPullSupplier __name__ = "CosTypedEventComm" # # End of module "CosTypedEventComm" # __name__ = "CosTypedEventComm_idl" _exported_modules = ( "CosTypedEventComm", ) # The end. omniEvents-2_6_2/test/CosTypedEventComm/0000755000076400001440000000000010242457405020460 5ustar alexusers00000000000000omniEvents-2_6_2/test/CosTypedEventComm/__init__.py0000644000076400001440000000030110242457405022563 0ustar alexusers00000000000000# DO NOT EDIT THIS FILE! # # Python module CosTypedEventComm generated by omniidl # ** 1. Stub files contributing to this module import CosTypedEventComm_idl # ** 2. Sub-modules # ** 3. End omniEvents-2_6_2/test/CosTypedEventComm__POA/0000755000076400001440000000000010242457405021316 5ustar alexusers00000000000000omniEvents-2_6_2/test/CosTypedEventComm__POA/__init__.py0000644000076400001440000000030610242457405023426 0ustar alexusers00000000000000# DO NOT EDIT THIS FILE! # # Python module CosTypedEventComm__POA generated by omniidl # ** 1. Stub files contributing to this module import CosTypedEventComm_idl # ** 2. Sub-modules # ** 3. End omniEvents-2_6_2/test/CosTypedEventChannelAdmin_idl.py0000644000076400001440000004556510242457405023327 0ustar alexusers00000000000000# Python stubs generated by omniidl from /home/alex/calvino/work/omni.d/local/share/idl/omniORB/COS/CosTypedEventChannelAdmin.idl import omniORB, _omnipy from omniORB import CORBA, PortableServer _0_CORBA = CORBA _omnipy.checkVersion(2,0, __file__) # #include "CosEventComm.idl" import CosEventComm_idl _0_CosEventComm = omniORB.openModule("CosEventComm") _0_CosEventComm__POA = omniORB.openModule("CosEventComm__POA") # #include "CosEventChannelAdmin.idl" import CosEventChannelAdmin_idl _0_CosEventChannelAdmin = omniORB.openModule("CosEventChannelAdmin") _0_CosEventChannelAdmin__POA = omniORB.openModule("CosEventChannelAdmin__POA") # #include "CosTypedEventComm.idl" import CosTypedEventComm_idl _0_CosTypedEventComm = omniORB.openModule("CosTypedEventComm") _0_CosTypedEventComm__POA = omniORB.openModule("CosTypedEventComm__POA") # # Start of module "CosTypedEventChannelAdmin" # __name__ = "CosTypedEventChannelAdmin" _0_CosTypedEventChannelAdmin = omniORB.openModule("CosTypedEventChannelAdmin", r"/home/alex/calvino/work/omni.d/local/share/idl/omniORB/COS/CosTypedEventChannelAdmin.idl") _0_CosTypedEventChannelAdmin__POA = omniORB.openModule("CosTypedEventChannelAdmin__POA", r"/home/alex/calvino/work/omni.d/local/share/idl/omniORB/COS/CosTypedEventChannelAdmin.idl") # exception InterfaceNotSupported _0_CosTypedEventChannelAdmin.InterfaceNotSupported = omniORB.newEmptyClass() class InterfaceNotSupported (CORBA.UserException): _NP_RepositoryId = "IDL:omg.org/CosTypedEventChannelAdmin/InterfaceNotSupported:1.0" _0_CosTypedEventChannelAdmin.InterfaceNotSupported = InterfaceNotSupported _0_CosTypedEventChannelAdmin._d_InterfaceNotSupported = (omniORB.tcInternal.tv_except, InterfaceNotSupported, InterfaceNotSupported._NP_RepositoryId, "InterfaceNotSupported") _0_CosTypedEventChannelAdmin._tc_InterfaceNotSupported = omniORB.tcInternal.createTypeCode(_0_CosTypedEventChannelAdmin._d_InterfaceNotSupported) omniORB.registerType(InterfaceNotSupported._NP_RepositoryId, _0_CosTypedEventChannelAdmin._d_InterfaceNotSupported, _0_CosTypedEventChannelAdmin._tc_InterfaceNotSupported) del InterfaceNotSupported # exception NoSuchImplementation _0_CosTypedEventChannelAdmin.NoSuchImplementation = omniORB.newEmptyClass() class NoSuchImplementation (CORBA.UserException): _NP_RepositoryId = "IDL:omg.org/CosTypedEventChannelAdmin/NoSuchImplementation:1.0" _0_CosTypedEventChannelAdmin.NoSuchImplementation = NoSuchImplementation _0_CosTypedEventChannelAdmin._d_NoSuchImplementation = (omniORB.tcInternal.tv_except, NoSuchImplementation, NoSuchImplementation._NP_RepositoryId, "NoSuchImplementation") _0_CosTypedEventChannelAdmin._tc_NoSuchImplementation = omniORB.tcInternal.createTypeCode(_0_CosTypedEventChannelAdmin._d_NoSuchImplementation) omniORB.registerType(NoSuchImplementation._NP_RepositoryId, _0_CosTypedEventChannelAdmin._d_NoSuchImplementation, _0_CosTypedEventChannelAdmin._tc_NoSuchImplementation) del NoSuchImplementation # typedef ... Key class Key: _NP_RepositoryId = "IDL:omg.org/CosTypedEventChannelAdmin/Key:1.0" def __init__(self, *args, **kw): raise RuntimeError("Cannot construct objects of this type.") _0_CosTypedEventChannelAdmin.Key = Key _0_CosTypedEventChannelAdmin._d_Key = (omniORB.tcInternal.tv_string,0) _0_CosTypedEventChannelAdmin._ad_Key = (omniORB.tcInternal.tv_alias, Key._NP_RepositoryId, "Key", (omniORB.tcInternal.tv_string,0)) _0_CosTypedEventChannelAdmin._tc_Key = omniORB.tcInternal.createTypeCode(_0_CosTypedEventChannelAdmin._ad_Key) omniORB.registerType(Key._NP_RepositoryId, _0_CosTypedEventChannelAdmin._ad_Key, _0_CosTypedEventChannelAdmin._tc_Key) del Key # interface TypedProxyPushConsumer _0_CosTypedEventChannelAdmin._d_TypedProxyPushConsumer = (omniORB.tcInternal.tv_objref, "IDL:omg.org/CosTypedEventChannelAdmin/TypedProxyPushConsumer:1.0", "TypedProxyPushConsumer") omniORB.typeMapping["IDL:omg.org/CosTypedEventChannelAdmin/TypedProxyPushConsumer:1.0"] = _0_CosTypedEventChannelAdmin._d_TypedProxyPushConsumer _0_CosTypedEventChannelAdmin.TypedProxyPushConsumer = omniORB.newEmptyClass() class TypedProxyPushConsumer (_0_CosEventChannelAdmin.ProxyPushConsumer, _0_CosTypedEventComm.TypedPushConsumer): _NP_RepositoryId = _0_CosTypedEventChannelAdmin._d_TypedProxyPushConsumer[1] def __init__(self, *args, **kw): raise RuntimeError("Cannot construct objects of this type.") _nil = CORBA.Object._nil _0_CosTypedEventChannelAdmin.TypedProxyPushConsumer = TypedProxyPushConsumer _0_CosTypedEventChannelAdmin._tc_TypedProxyPushConsumer = omniORB.tcInternal.createTypeCode(_0_CosTypedEventChannelAdmin._d_TypedProxyPushConsumer) omniORB.registerType(TypedProxyPushConsumer._NP_RepositoryId, _0_CosTypedEventChannelAdmin._d_TypedProxyPushConsumer, _0_CosTypedEventChannelAdmin._tc_TypedProxyPushConsumer) # TypedProxyPushConsumer object reference class _objref_TypedProxyPushConsumer (_0_CosEventChannelAdmin._objref_ProxyPushConsumer, _0_CosTypedEventComm._objref_TypedPushConsumer): _NP_RepositoryId = TypedProxyPushConsumer._NP_RepositoryId def __init__(self): _0_CosEventChannelAdmin._objref_ProxyPushConsumer.__init__(self) _0_CosTypedEventComm._objref_TypedPushConsumer.__init__(self) __methods__ = [] + _0_CosEventChannelAdmin._objref_ProxyPushConsumer.__methods__ + _0_CosTypedEventComm._objref_TypedPushConsumer.__methods__ omniORB.registerObjref(TypedProxyPushConsumer._NP_RepositoryId, _objref_TypedProxyPushConsumer) _0_CosTypedEventChannelAdmin._objref_TypedProxyPushConsumer = _objref_TypedProxyPushConsumer del TypedProxyPushConsumer, _objref_TypedProxyPushConsumer # TypedProxyPushConsumer skeleton __name__ = "CosTypedEventChannelAdmin__POA" class TypedProxyPushConsumer (_0_CosEventChannelAdmin__POA.ProxyPushConsumer, _0_CosTypedEventComm__POA.TypedPushConsumer): _NP_RepositoryId = _0_CosTypedEventChannelAdmin.TypedProxyPushConsumer._NP_RepositoryId _omni_op_d = {} _omni_op_d.update(_0_CosEventChannelAdmin__POA.ProxyPushConsumer._omni_op_d) _omni_op_d.update(_0_CosTypedEventComm__POA.TypedPushConsumer._omni_op_d) TypedProxyPushConsumer._omni_skeleton = TypedProxyPushConsumer _0_CosTypedEventChannelAdmin__POA.TypedProxyPushConsumer = TypedProxyPushConsumer del TypedProxyPushConsumer __name__ = "CosTypedEventChannelAdmin" # interface TypedProxyPullSupplier _0_CosTypedEventChannelAdmin._d_TypedProxyPullSupplier = (omniORB.tcInternal.tv_objref, "IDL:omg.org/CosTypedEventChannelAdmin/TypedProxyPullSupplier:1.0", "TypedProxyPullSupplier") omniORB.typeMapping["IDL:omg.org/CosTypedEventChannelAdmin/TypedProxyPullSupplier:1.0"] = _0_CosTypedEventChannelAdmin._d_TypedProxyPullSupplier _0_CosTypedEventChannelAdmin.TypedProxyPullSupplier = omniORB.newEmptyClass() class TypedProxyPullSupplier (_0_CosEventChannelAdmin.ProxyPullSupplier, _0_CosTypedEventComm.TypedPullSupplier): _NP_RepositoryId = _0_CosTypedEventChannelAdmin._d_TypedProxyPullSupplier[1] def __init__(self, *args, **kw): raise RuntimeError("Cannot construct objects of this type.") _nil = CORBA.Object._nil _0_CosTypedEventChannelAdmin.TypedProxyPullSupplier = TypedProxyPullSupplier _0_CosTypedEventChannelAdmin._tc_TypedProxyPullSupplier = omniORB.tcInternal.createTypeCode(_0_CosTypedEventChannelAdmin._d_TypedProxyPullSupplier) omniORB.registerType(TypedProxyPullSupplier._NP_RepositoryId, _0_CosTypedEventChannelAdmin._d_TypedProxyPullSupplier, _0_CosTypedEventChannelAdmin._tc_TypedProxyPullSupplier) # TypedProxyPullSupplier object reference class _objref_TypedProxyPullSupplier (_0_CosEventChannelAdmin._objref_ProxyPullSupplier, _0_CosTypedEventComm._objref_TypedPullSupplier): _NP_RepositoryId = TypedProxyPullSupplier._NP_RepositoryId def __init__(self): _0_CosEventChannelAdmin._objref_ProxyPullSupplier.__init__(self) _0_CosTypedEventComm._objref_TypedPullSupplier.__init__(self) __methods__ = [] + _0_CosEventChannelAdmin._objref_ProxyPullSupplier.__methods__ + _0_CosTypedEventComm._objref_TypedPullSupplier.__methods__ omniORB.registerObjref(TypedProxyPullSupplier._NP_RepositoryId, _objref_TypedProxyPullSupplier) _0_CosTypedEventChannelAdmin._objref_TypedProxyPullSupplier = _objref_TypedProxyPullSupplier del TypedProxyPullSupplier, _objref_TypedProxyPullSupplier # TypedProxyPullSupplier skeleton __name__ = "CosTypedEventChannelAdmin__POA" class TypedProxyPullSupplier (_0_CosEventChannelAdmin__POA.ProxyPullSupplier, _0_CosTypedEventComm__POA.TypedPullSupplier): _NP_RepositoryId = _0_CosTypedEventChannelAdmin.TypedProxyPullSupplier._NP_RepositoryId _omni_op_d = {} _omni_op_d.update(_0_CosEventChannelAdmin__POA.ProxyPullSupplier._omni_op_d) _omni_op_d.update(_0_CosTypedEventComm__POA.TypedPullSupplier._omni_op_d) TypedProxyPullSupplier._omni_skeleton = TypedProxyPullSupplier _0_CosTypedEventChannelAdmin__POA.TypedProxyPullSupplier = TypedProxyPullSupplier del TypedProxyPullSupplier __name__ = "CosTypedEventChannelAdmin" # interface TypedSupplierAdmin _0_CosTypedEventChannelAdmin._d_TypedSupplierAdmin = (omniORB.tcInternal.tv_objref, "IDL:omg.org/CosTypedEventChannelAdmin/TypedSupplierAdmin:1.0", "TypedSupplierAdmin") omniORB.typeMapping["IDL:omg.org/CosTypedEventChannelAdmin/TypedSupplierAdmin:1.0"] = _0_CosTypedEventChannelAdmin._d_TypedSupplierAdmin _0_CosTypedEventChannelAdmin.TypedSupplierAdmin = omniORB.newEmptyClass() class TypedSupplierAdmin (_0_CosEventChannelAdmin.SupplierAdmin): _NP_RepositoryId = _0_CosTypedEventChannelAdmin._d_TypedSupplierAdmin[1] def __init__(self, *args, **kw): raise RuntimeError("Cannot construct objects of this type.") _nil = CORBA.Object._nil _0_CosTypedEventChannelAdmin.TypedSupplierAdmin = TypedSupplierAdmin _0_CosTypedEventChannelAdmin._tc_TypedSupplierAdmin = omniORB.tcInternal.createTypeCode(_0_CosTypedEventChannelAdmin._d_TypedSupplierAdmin) omniORB.registerType(TypedSupplierAdmin._NP_RepositoryId, _0_CosTypedEventChannelAdmin._d_TypedSupplierAdmin, _0_CosTypedEventChannelAdmin._tc_TypedSupplierAdmin) # TypedSupplierAdmin operations and attributes TypedSupplierAdmin._d_obtain_typed_push_consumer = ((omniORB.typeMapping["IDL:omg.org/CosTypedEventChannelAdmin/Key:1.0"], ), (omniORB.typeMapping["IDL:omg.org/CosTypedEventChannelAdmin/TypedProxyPushConsumer:1.0"], ), {_0_CosTypedEventChannelAdmin.InterfaceNotSupported._NP_RepositoryId: _0_CosTypedEventChannelAdmin._d_InterfaceNotSupported}) TypedSupplierAdmin._d_obtain_typed_pull_consumer = ((omniORB.typeMapping["IDL:omg.org/CosTypedEventChannelAdmin/Key:1.0"], ), (omniORB.typeMapping["IDL:omg.org/CosEventChannelAdmin/ProxyPullConsumer:1.0"], ), {_0_CosTypedEventChannelAdmin.NoSuchImplementation._NP_RepositoryId: _0_CosTypedEventChannelAdmin._d_NoSuchImplementation}) # TypedSupplierAdmin object reference class _objref_TypedSupplierAdmin (_0_CosEventChannelAdmin._objref_SupplierAdmin): _NP_RepositoryId = TypedSupplierAdmin._NP_RepositoryId def __init__(self): _0_CosEventChannelAdmin._objref_SupplierAdmin.__init__(self) def obtain_typed_push_consumer(self, *args): return _omnipy.invoke(self, "obtain_typed_push_consumer", _0_CosTypedEventChannelAdmin.TypedSupplierAdmin._d_obtain_typed_push_consumer, args) def obtain_typed_pull_consumer(self, *args): return _omnipy.invoke(self, "obtain_typed_pull_consumer", _0_CosTypedEventChannelAdmin.TypedSupplierAdmin._d_obtain_typed_pull_consumer, args) __methods__ = ["obtain_typed_push_consumer", "obtain_typed_pull_consumer"] + _0_CosEventChannelAdmin._objref_SupplierAdmin.__methods__ omniORB.registerObjref(TypedSupplierAdmin._NP_RepositoryId, _objref_TypedSupplierAdmin) _0_CosTypedEventChannelAdmin._objref_TypedSupplierAdmin = _objref_TypedSupplierAdmin del TypedSupplierAdmin, _objref_TypedSupplierAdmin # TypedSupplierAdmin skeleton __name__ = "CosTypedEventChannelAdmin__POA" class TypedSupplierAdmin (_0_CosEventChannelAdmin__POA.SupplierAdmin): _NP_RepositoryId = _0_CosTypedEventChannelAdmin.TypedSupplierAdmin._NP_RepositoryId _omni_op_d = {"obtain_typed_push_consumer": _0_CosTypedEventChannelAdmin.TypedSupplierAdmin._d_obtain_typed_push_consumer, "obtain_typed_pull_consumer": _0_CosTypedEventChannelAdmin.TypedSupplierAdmin._d_obtain_typed_pull_consumer} _omni_op_d.update(_0_CosEventChannelAdmin__POA.SupplierAdmin._omni_op_d) TypedSupplierAdmin._omni_skeleton = TypedSupplierAdmin _0_CosTypedEventChannelAdmin__POA.TypedSupplierAdmin = TypedSupplierAdmin del TypedSupplierAdmin __name__ = "CosTypedEventChannelAdmin" # interface TypedConsumerAdmin _0_CosTypedEventChannelAdmin._d_TypedConsumerAdmin = (omniORB.tcInternal.tv_objref, "IDL:omg.org/CosTypedEventChannelAdmin/TypedConsumerAdmin:1.0", "TypedConsumerAdmin") omniORB.typeMapping["IDL:omg.org/CosTypedEventChannelAdmin/TypedConsumerAdmin:1.0"] = _0_CosTypedEventChannelAdmin._d_TypedConsumerAdmin _0_CosTypedEventChannelAdmin.TypedConsumerAdmin = omniORB.newEmptyClass() class TypedConsumerAdmin (_0_CosEventChannelAdmin.ConsumerAdmin): _NP_RepositoryId = _0_CosTypedEventChannelAdmin._d_TypedConsumerAdmin[1] def __init__(self, *args, **kw): raise RuntimeError("Cannot construct objects of this type.") _nil = CORBA.Object._nil _0_CosTypedEventChannelAdmin.TypedConsumerAdmin = TypedConsumerAdmin _0_CosTypedEventChannelAdmin._tc_TypedConsumerAdmin = omniORB.tcInternal.createTypeCode(_0_CosTypedEventChannelAdmin._d_TypedConsumerAdmin) omniORB.registerType(TypedConsumerAdmin._NP_RepositoryId, _0_CosTypedEventChannelAdmin._d_TypedConsumerAdmin, _0_CosTypedEventChannelAdmin._tc_TypedConsumerAdmin) # TypedConsumerAdmin operations and attributes TypedConsumerAdmin._d_obtain_typed_pull_supplier = ((omniORB.typeMapping["IDL:omg.org/CosTypedEventChannelAdmin/Key:1.0"], ), (omniORB.typeMapping["IDL:omg.org/CosTypedEventChannelAdmin/TypedProxyPullSupplier:1.0"], ), {_0_CosTypedEventChannelAdmin.InterfaceNotSupported._NP_RepositoryId: _0_CosTypedEventChannelAdmin._d_InterfaceNotSupported}) TypedConsumerAdmin._d_obtain_typed_push_supplier = ((omniORB.typeMapping["IDL:omg.org/CosTypedEventChannelAdmin/Key:1.0"], ), (omniORB.typeMapping["IDL:omg.org/CosEventChannelAdmin/ProxyPushSupplier:1.0"], ), {_0_CosTypedEventChannelAdmin.NoSuchImplementation._NP_RepositoryId: _0_CosTypedEventChannelAdmin._d_NoSuchImplementation}) # TypedConsumerAdmin object reference class _objref_TypedConsumerAdmin (_0_CosEventChannelAdmin._objref_ConsumerAdmin): _NP_RepositoryId = TypedConsumerAdmin._NP_RepositoryId def __init__(self): _0_CosEventChannelAdmin._objref_ConsumerAdmin.__init__(self) def obtain_typed_pull_supplier(self, *args): return _omnipy.invoke(self, "obtain_typed_pull_supplier", _0_CosTypedEventChannelAdmin.TypedConsumerAdmin._d_obtain_typed_pull_supplier, args) def obtain_typed_push_supplier(self, *args): return _omnipy.invoke(self, "obtain_typed_push_supplier", _0_CosTypedEventChannelAdmin.TypedConsumerAdmin._d_obtain_typed_push_supplier, args) __methods__ = ["obtain_typed_pull_supplier", "obtain_typed_push_supplier"] + _0_CosEventChannelAdmin._objref_ConsumerAdmin.__methods__ omniORB.registerObjref(TypedConsumerAdmin._NP_RepositoryId, _objref_TypedConsumerAdmin) _0_CosTypedEventChannelAdmin._objref_TypedConsumerAdmin = _objref_TypedConsumerAdmin del TypedConsumerAdmin, _objref_TypedConsumerAdmin # TypedConsumerAdmin skeleton __name__ = "CosTypedEventChannelAdmin__POA" class TypedConsumerAdmin (_0_CosEventChannelAdmin__POA.ConsumerAdmin): _NP_RepositoryId = _0_CosTypedEventChannelAdmin.TypedConsumerAdmin._NP_RepositoryId _omni_op_d = {"obtain_typed_pull_supplier": _0_CosTypedEventChannelAdmin.TypedConsumerAdmin._d_obtain_typed_pull_supplier, "obtain_typed_push_supplier": _0_CosTypedEventChannelAdmin.TypedConsumerAdmin._d_obtain_typed_push_supplier} _omni_op_d.update(_0_CosEventChannelAdmin__POA.ConsumerAdmin._omni_op_d) TypedConsumerAdmin._omni_skeleton = TypedConsumerAdmin _0_CosTypedEventChannelAdmin__POA.TypedConsumerAdmin = TypedConsumerAdmin del TypedConsumerAdmin __name__ = "CosTypedEventChannelAdmin" # interface TypedEventChannel _0_CosTypedEventChannelAdmin._d_TypedEventChannel = (omniORB.tcInternal.tv_objref, "IDL:omg.org/CosTypedEventChannelAdmin/TypedEventChannel:1.0", "TypedEventChannel") omniORB.typeMapping["IDL:omg.org/CosTypedEventChannelAdmin/TypedEventChannel:1.0"] = _0_CosTypedEventChannelAdmin._d_TypedEventChannel _0_CosTypedEventChannelAdmin.TypedEventChannel = omniORB.newEmptyClass() class TypedEventChannel : _NP_RepositoryId = _0_CosTypedEventChannelAdmin._d_TypedEventChannel[1] def __init__(self, *args, **kw): raise RuntimeError("Cannot construct objects of this type.") _nil = CORBA.Object._nil _0_CosTypedEventChannelAdmin.TypedEventChannel = TypedEventChannel _0_CosTypedEventChannelAdmin._tc_TypedEventChannel = omniORB.tcInternal.createTypeCode(_0_CosTypedEventChannelAdmin._d_TypedEventChannel) omniORB.registerType(TypedEventChannel._NP_RepositoryId, _0_CosTypedEventChannelAdmin._d_TypedEventChannel, _0_CosTypedEventChannelAdmin._tc_TypedEventChannel) # TypedEventChannel operations and attributes TypedEventChannel._d_for_consumers = ((), (omniORB.typeMapping["IDL:omg.org/CosTypedEventChannelAdmin/TypedConsumerAdmin:1.0"], ), None) TypedEventChannel._d_for_suppliers = ((), (omniORB.typeMapping["IDL:omg.org/CosTypedEventChannelAdmin/TypedSupplierAdmin:1.0"], ), None) TypedEventChannel._d_destroy = ((), (), None) # TypedEventChannel object reference class _objref_TypedEventChannel (CORBA.Object): _NP_RepositoryId = TypedEventChannel._NP_RepositoryId def __init__(self): CORBA.Object.__init__(self) def for_consumers(self, *args): return _omnipy.invoke(self, "for_consumers", _0_CosTypedEventChannelAdmin.TypedEventChannel._d_for_consumers, args) def for_suppliers(self, *args): return _omnipy.invoke(self, "for_suppliers", _0_CosTypedEventChannelAdmin.TypedEventChannel._d_for_suppliers, args) def destroy(self, *args): return _omnipy.invoke(self, "destroy", _0_CosTypedEventChannelAdmin.TypedEventChannel._d_destroy, args) __methods__ = ["for_consumers", "for_suppliers", "destroy"] + CORBA.Object.__methods__ omniORB.registerObjref(TypedEventChannel._NP_RepositoryId, _objref_TypedEventChannel) _0_CosTypedEventChannelAdmin._objref_TypedEventChannel = _objref_TypedEventChannel del TypedEventChannel, _objref_TypedEventChannel # TypedEventChannel skeleton __name__ = "CosTypedEventChannelAdmin__POA" class TypedEventChannel (PortableServer.Servant): _NP_RepositoryId = _0_CosTypedEventChannelAdmin.TypedEventChannel._NP_RepositoryId _omni_op_d = {"for_consumers": _0_CosTypedEventChannelAdmin.TypedEventChannel._d_for_consumers, "for_suppliers": _0_CosTypedEventChannelAdmin.TypedEventChannel._d_for_suppliers, "destroy": _0_CosTypedEventChannelAdmin.TypedEventChannel._d_destroy} TypedEventChannel._omni_skeleton = TypedEventChannel _0_CosTypedEventChannelAdmin__POA.TypedEventChannel = TypedEventChannel del TypedEventChannel __name__ = "CosTypedEventChannelAdmin" # # End of module "CosTypedEventChannelAdmin" # __name__ = "CosTypedEventChannelAdmin_idl" _exported_modules = ( "CosTypedEventChannelAdmin", ) # The end. omniEvents-2_6_2/test/CosTypedEventChannelAdmin/0000755000076400001440000000000010242457405022106 5ustar alexusers00000000000000omniEvents-2_6_2/test/CosTypedEventChannelAdmin/__init__.py0000644000076400001440000000032110242457405024213 0ustar alexusers00000000000000# DO NOT EDIT THIS FILE! # # Python module CosTypedEventChannelAdmin generated by omniidl # ** 1. Stub files contributing to this module import CosTypedEventChannelAdmin_idl # ** 2. Sub-modules # ** 3. End omniEvents-2_6_2/test/CosTypedEventChannelAdmin__POA/0000755000076400001440000000000010242457405022744 5ustar alexusers00000000000000omniEvents-2_6_2/test/CosTypedEventChannelAdmin__POA/__init__.py0000644000076400001440000000032610242457405025056 0ustar alexusers00000000000000# DO NOT EDIT THIS FILE! # # Python module CosTypedEventChannelAdmin__POA generated by omniidl # ** 1. Stub files contributing to this module import CosTypedEventChannelAdmin_idl # ** 2. Sub-modules # ** 3. End omniEvents-2_6_2/test/EventChannelAdmin_idl.py0000644000076400001440000000560110242457405021637 0ustar alexusers00000000000000# Python stubs generated by omniidl from ../idl/EventChannelAdmin.idl import omniORB, _omnipy from omniORB import CORBA, PortableServer _0_CORBA = CORBA _omnipy.checkVersion(2,0, __file__) # #include "CosNaming.idl" import CosNaming_idl _0_CosNaming = omniORB.openModule("CosNaming") _0_CosNaming__POA = omniORB.openModule("CosNaming__POA") # #include "CosLifeCycle.idl" import CosLifeCycle_idl _0_CosLifeCycle = omniORB.openModule("CosLifeCycle") _0_CosLifeCycle__POA = omniORB.openModule("CosLifeCycle__POA") # # Start of module "EventChannelAdmin" # __name__ = "EventChannelAdmin" _0_EventChannelAdmin = omniORB.openModule("EventChannelAdmin", r"../idl/EventChannelAdmin.idl") _0_EventChannelAdmin__POA = omniORB.openModule("EventChannelAdmin__POA", r"../idl/EventChannelAdmin.idl") # interface EventChannelFactory _0_EventChannelAdmin._d_EventChannelFactory = (omniORB.tcInternal.tv_objref, "IDL:EventChannelAdmin/EventChannelFactory:1.0", "EventChannelFactory") omniORB.typeMapping["IDL:EventChannelAdmin/EventChannelFactory:1.0"] = _0_EventChannelAdmin._d_EventChannelFactory _0_EventChannelAdmin.EventChannelFactory = omniORB.newEmptyClass() class EventChannelFactory (_0_CosLifeCycle.GenericFactory): _NP_RepositoryId = _0_EventChannelAdmin._d_EventChannelFactory[1] def __init__(self, *args, **kw): raise RuntimeError("Cannot construct objects of this type.") _nil = CORBA.Object._nil _0_EventChannelAdmin.EventChannelFactory = EventChannelFactory _0_EventChannelAdmin._tc_EventChannelFactory = omniORB.tcInternal.createTypeCode(_0_EventChannelAdmin._d_EventChannelFactory) omniORB.registerType(EventChannelFactory._NP_RepositoryId, _0_EventChannelAdmin._d_EventChannelFactory, _0_EventChannelAdmin._tc_EventChannelFactory) # EventChannelFactory object reference class _objref_EventChannelFactory (_0_CosLifeCycle._objref_GenericFactory): _NP_RepositoryId = EventChannelFactory._NP_RepositoryId def __init__(self): _0_CosLifeCycle._objref_GenericFactory.__init__(self) __methods__ = [] + _0_CosLifeCycle._objref_GenericFactory.__methods__ omniORB.registerObjref(EventChannelFactory._NP_RepositoryId, _objref_EventChannelFactory) _0_EventChannelAdmin._objref_EventChannelFactory = _objref_EventChannelFactory del EventChannelFactory, _objref_EventChannelFactory # EventChannelFactory skeleton __name__ = "EventChannelAdmin__POA" class EventChannelFactory (_0_CosLifeCycle__POA.GenericFactory): _NP_RepositoryId = _0_EventChannelAdmin.EventChannelFactory._NP_RepositoryId _omni_op_d = {} _omni_op_d.update(_0_CosLifeCycle__POA.GenericFactory._omni_op_d) EventChannelFactory._omni_skeleton = EventChannelFactory _0_EventChannelAdmin__POA.EventChannelFactory = EventChannelFactory del EventChannelFactory __name__ = "EventChannelAdmin" # # End of module "EventChannelAdmin" # __name__ = "EventChannelAdmin_idl" _exported_modules = ( "EventChannelAdmin", ) # The end. omniEvents-2_6_2/test/EventChannelAdmin/0000755000076400001440000000000010303573712020431 5ustar alexusers00000000000000omniEvents-2_6_2/test/EventChannelAdmin/__init__.py0000644000076400001440000000030110242457405022536 0ustar alexusers00000000000000# DO NOT EDIT THIS FILE! # # Python module EventChannelAdmin generated by omniidl # ** 1. Stub files contributing to this module import EventChannelAdmin_idl # ** 2. Sub-modules # ** 3. End omniEvents-2_6_2/test/EventChannelAdmin/__init__.pyc0000644000076400001440000000036510303573712022711 0ustar alexusers00000000000000;ò _ŠBc@s dkZdS(N(sEventChannelAdmin_idl(sEventChannelAdmin_idl((sh/amd/calvino/root/home/alex/share/work/omni.d/events/omniEvents-2_6_2/test/EventChannelAdmin/__init__.pys?somniEvents-2_6_2/test/EventChannelAdmin__POA/0000755000076400001440000000000010242457405021271 5ustar alexusers00000000000000omniEvents-2_6_2/test/EventChannelAdmin__POA/__init__.py0000644000076400001440000000030610242457405023401 0ustar alexusers00000000000000# DO NOT EDIT THIS FILE! # # Python module EventChannelAdmin__POA generated by omniidl # ** 1. Stub files contributing to this module import EventChannelAdmin_idl # ** 2. Sub-modules # ** 3. End omniEvents-2_6_2/test/CosEventChannelAdmin_idl.pyc0000644000076400001440000006005410242457434022454 0ustar alexusers00000000000000;ò _ŠBc@s@ dkZdkZdklZlZeZeiddeƒdkZeidƒZ eidƒZ dZ eiddƒZ eiddƒZ eiƒe _d eifd „ƒYZee _eiieeid fe _eiie iƒe _eieie ie iƒ[eiƒe _d eifd „ƒYZee _eiieeid fe _eiie iƒe _eieie ie iƒ[eiid dfe _e ieid fe<_?feidfe>fe<_@d,eiAfd-„ƒYZBei$e<ieBƒeBe _B[<[BdZ d*eiCfd.„ƒYZ<e<e<_%e<e _<[<dZ eiid/d0fe _De iDeid/feE_Gfeidfe>feE_Hd2eiAfd3„ƒYZIei$eEieIƒeIe _I[E[IdZ d0eiCfd4„ƒYZEeEeE_%eEe _E[EdZ eiid5d6fe _Je iJeid5feK_Mfeid/fe>feK_Nffe>feK_Od8eiAfd9„ƒYZPei$eKiePƒePe _P[K[PdZ d6eiCfd:„ƒYZKeKeK_%eKe _K[KdZ d;Z dfZQdS(<N(sCORBAsPortableServeriis CosEventCommsCosEventComm__POAsCosEventChannelAdminsS/home/alex/calvino/work/omni.d/local/share/idl/omniORB/COS/CosEventChannelAdmin.idlsCosEventChannelAdmin__POAsAlreadyConnectedcBstZdZRS(Ns5IDL:omg.org/CosEventChannelAdmin/AlreadyConnected:1.0(s__name__s __module__s_NP_RepositoryId(((sj/amd/calvino/root/home/alex/share/work/omni.d/events/omniEvents-2_6_2_rc1/test/CosEventChannelAdmin_idl.pysAlreadyConnectedss TypeErrorcBstZdZRS(Ns.IDL:omg.org/CosEventChannelAdmin/TypeError:1.0(s__name__s __module__s_NP_RepositoryId(((sj/amd/calvino/root/home/alex/share/work/omni.d/events/omniEvents-2_6_2_rc1/test/CosEventChannelAdmin_idl.pys TypeError$ss6IDL:omg.org/CosEventChannelAdmin/ProxyPushConsumer:1.0sProxyPushConsumercBs*tZeidZd„ZeiiZRS(NicOstdƒ‚dS(Ns&Cannot construct objects of this type.(s RuntimeError(sselfsargsskw((sj/amd/calvino/root/home/alex/share/work/omni.d/events/omniEvents-2_6_2_rc1/test/CosEventChannelAdmin_idl.pys__init__5s( s__name__s __module__s_0_CosEventChannelAdmins_d_ProxyPushConsumers_NP_RepositoryIds__init__sCORBAsObjects_nil(((sj/amd/calvino/root/home/alex/share/work/omni.d/events/omniEvents-2_6_2_rc1/test/CosEventChannelAdmin_idl.pysProxyPushConsumer2s  s)IDL:omg.org/CosEventComm/PushSupplier:1.0s_objref_ProxyPushConsumercBs6tZeiZd„Zd„ZdgeiiZRS(NcCstii|ƒdS(N(s_0_CosEventComms_objref_PushConsumers__init__sself(sself((sj/amd/calvino/root/home/alex/share/work/omni.d/events/omniEvents-2_6_2_rc1/test/CosEventChannelAdmin_idl.pys__init__FscGs ti|dtii|ƒSdS(Nsconnect_push_supplier(s_omnipysinvokesselfs_0_CosEventChannelAdminsProxyPushConsumers_d_connect_push_suppliersargs(sselfsargs((sj/amd/calvino/root/home/alex/share/work/omni.d/events/omniEvents-2_6_2_rc1/test/CosEventChannelAdmin_idl.pysconnect_push_supplierIssconnect_push_supplier( s__name__s __module__sProxyPushConsumers_NP_RepositoryIds__init__sconnect_push_suppliers_0_CosEventComms_objref_PushConsumers __methods__(((sj/amd/calvino/root/home/alex/share/work/omni.d/events/omniEvents-2_6_2_rc1/test/CosEventChannelAdmin_idl.pys_objref_ProxyPushConsumerCs   cBs<tZeiiZhdeii      omniEvents-2_6_2/test/CosLifeCycle_idl.pyc0000644000076400001440000005042110303573712020761 0ustar alexusers00000000000000;ò _ŠBc@sj dkZdkZdklZlZeZeiddeƒdkZeidƒZ eidƒZ dZ eiddƒZ eiddƒZ d fd „ƒYZee _eid e _eiieid eid ife _eiie iƒe _eieie ie iƒ[d fd „ƒYZee _eide _eiieid eidfe _eiie iƒe _eieie ie iƒ[dfd„ƒYZee _eiieiddfe _ eiieideiieiddffe _!eiie i!ƒe _"eieie i!e i"ƒ[ei#ƒe _$dfd„ƒYZ$e$e _$eii%e$e$iddeiddeii&fe _'eiie i'ƒe _(eie$ie i'e i(ƒ[$de i$fd„ƒYZ)e)e _)eide _*eiie)ideidfe _+eiie i+ƒe _,eie)ie i+e i,ƒ[)dfd„ƒYZ-e-e _-eiieiddfe _.eiie-ideiieiddffe _/eiie i/ƒe _0eie-ie i/e i0ƒ[-ei#ƒe _1dei2fd„ƒYZ1e1e _1eii3e1e1iddeid fe _4eiie i4ƒe _5eie1ie i4e i5ƒ[1ei#ƒe _6d!ei2fd"„ƒYZ6e6e _6eii3e6e6id!d#eii7dffe _8eiie i8ƒe _9eie6ie i8e i9ƒ[6ei#ƒe _:d$ei2fd%„ƒYZ:e:e _:eii3e:e:id$d#eii7dffe _;eiie i;ƒe _<eie:ie i;e i<ƒ[:ei#ƒe _=d&ei2fd'„ƒYZ=e=e _=eii3e=e=id&d#eii7dffe _>eiie i>ƒe _?eie=ie i>e i?ƒ[=ei#ƒe _@d(ei2fd)„ƒYZ@e@e _@eii3e@e@id(d*eid+fe _Aeiie iAƒe _Beie@ie iAe iBƒ[@ei#ƒe _Cd,ei2fd-„ƒYZCeCe _Ceii3eCeCid,d.eid+fe _Deiie iDƒe _EeieCie iDe iEƒ[CeiiFd/d0fe _Ge iGeid/„ƒYZXeXe _Xeiie iWƒe _YeieXie iWe iYƒeid feiiZfe[feX_\eid eid+feidfhe i1ie i4<e i@ie iA<e iCie iD extern char* optarg; extern int optind; #else # include "getopt.h" #endif #ifdef HAVE_IOSTREAM # include #else # include #endif #ifdef HAVE_STD_IOSTREAM using namespace std; #endif #ifdef HAVE_STDLIB_H # include #endif #ifdef HAVE_SIGNAL_H # include #endif #include "omniEvents.hh" #include "naming.h" static void usage(int argc, char **argv); static void appendCriterion( CosLifeCycle::Criteria&,const char*,const char*); static void appendCriterionStr(CosLifeCycle::Criteria&,const char*,const char*); int main(int argc, char **argv) { int result =1; // // Start orb. CORBA::ORB_var orb = CORBA::ORB_init(argc,argv); // Process Options bool verbose =false; bool needNameService =false; const char* channelName ="EventChannel"; const char* factoryName ="EventChannelFactory"; CosLifeCycle::Criteria criteria; int c; while ((c = getopt(argc,argv,"n:N:m:c:i:p:q:R:r:t:vh")) != EOF) { switch (c) { case 'n': channelName=optarg; needNameService=true; break; case 'N': factoryName=optarg; break; case 'm': // OLD OPTION appendCriterion(criteria,"MaxEventsPerConsumer",optarg); break; case 'c': appendCriterion(criteria,"CyclePeriod_ns",optarg); break; case 'i': appendCriterionStr(criteria,"InsName",optarg); break; case 'p': appendCriterion(criteria,"MaxNumProxies",optarg); break; case 'q': appendCriterion(criteria,"MaxQueueLength",optarg); break; case 'R': appendCriterion(criteria,"PullRetryPeriod_ms",optarg); break; case 'r': // This option is deprecated in favour of -R: appendCriterion(criteria,"PullRetryPeriod",optarg); break; case 't': appendCriterionStr(criteria,"FilterId",optarg); break; case 'v': verbose=true; break; case 'h': usage(argc,argv); exit(0); default : usage(argc,argv); exit(-1); } } // Need the naming service to find the factory if there is no URI argument. needNameService=(needNameService || optind>=argc); // // Use one big try...catch block. // 'action' variable keeps track of what we're doing. const char* action ="start"; try { CORBA::Object_var obj; // // Get Name Service root context.(we can carry on without it though) CosNaming::NamingContext_var rootContext=CosNaming::NamingContext::_nil(); try { action="resolve initial reference 'NameService'"; obj=orb->resolve_initial_references("NameService"); rootContext=CosNaming::NamingContext::_narrow(obj); if(CORBA::is_nil(rootContext)) throw CORBA::OBJECT_NOT_EXIST(); } catch (CORBA::Exception& ex) { if(needNameService) throw; else cerr<<"Warning - failed to "<string_to_object(argv[optind]); } else { action="find Event Channel Factory in naming service"; obj=rootContext->resolve(str2name(factoryName)); } action="narrow object reference to event channel factory"; omniEvents::EventChannelFactory_var factory = omniEvents::EventChannelFactory::_narrow(obj); if(CORBA::is_nil(factory)) { cerr << "Failed to narrow Event Channel Factory reference." << endl; exit(1); } // Check that the factory is of the right type action="check factory supports EventChannel object interface"; CosLifeCycle::Key key; key.length (1); key[0].id = CORBA::string_dup("EventChannel"); key[0].kind = CORBA::string_dup("object interface"); if(!factory->supports(key)) { cerr << "Factory does not support Event Channel Interface! [\"" << factoryName << "\"]" << endl; exit(1); } // // Create Event Channel Object. action="create EventChannel object"; CORBA::Object_var channelObj =factory->create_object(key, criteria); if (CORBA::is_nil(channelObj)) { cerr << "Channel Factory returned nil reference! [\"" << channelName << "\"]" << endl; exit(1); } // Narrow object returned to an Event Channel CosEventChannelAdmin::EventChannel_var channel = CosEventChannelAdmin::EventChannel::_narrow(channelObj); if (CORBA::is_nil(channel)) { cerr << "Failed to narrow Event Channel! [\"" << channelName << "\"]" << endl; exit(1); } // Print the new EventChannel's IOR to standard output. if(verbose) { CORBA::String_var sior =orb->object_to_string(channel); cout<bind(name,channel.in()); } catch(CosNaming::NamingContext::AlreadyBound& ex) { action="register (rebind) EventChannel with the naming service"; rootContext->rebind(name,channel.in()); } } // // Clean up nicely. action="destroy orb"; orb->destroy(); // // If we get here, then everything has worked OK. result=0; } catch (CosLifeCycle::NoFactory& ex) /* create_object() */ { cerr<<"Failed to create Event Channel: NoFactory" " (interface not supported) "<\n" " -v print the IOR of the new EventChannel to standard output.\n" " -h display this help text\n" "OLD OPTIONS: (only used by omniEvents v2.4 and earlier)\n" " -m override default MaxEventsPerConsumer for new channel\n" << endl; } static void appendCriterion( CosLifeCycle::Criteria& criteria, const char* name, const char* value ) { CORBA::ULong criteriaLen =criteria.length(); ++criteriaLen; criteria.length(criteriaLen); criteria[criteriaLen-1].name=CORBA::string_dup(name); criteria[criteriaLen-1].value<<=CORBA::ULong(atol(value)); } static void appendCriterionStr( CosLifeCycle::Criteria& criteria, const char* name, const char* value ) { CORBA::ULong criteriaLen =criteria.length(); ++criteriaLen; criteria.length(criteriaLen); criteria[criteriaLen-1].name=CORBA::string_dup(name); criteria[criteriaLen-1].value<<=value; } omniEvents-2_6_2/tools/eventf.cc0000644000076400001440000001126310240451217017063 0ustar alexusers00000000000000// Package : omniEvents // eventf.cc Created : 2004-05-30 // Author : Alex Tingle // // Copyright (C) 2004 Alex Tingle // // This file is part of the omniEvents application. // // omniEvents is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public // License as published by the Free Software Foundation; either // version 2.1 of the License, or (at your option) any later version. // // omniEvents is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU // Lesser General Public License for more details. // // You should have received a copy of the GNU Lesser General Public // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // // Description: // Destroys the named EventChannel. // #ifdef HAVE_CONFIG_H # include "config.h" #endif #ifdef HAVE_GETOPT # include extern char* optarg; extern int optind; #else # include "getopt.h" #endif #ifdef HAVE_STDLIB_H # include // exit() #endif #ifdef HAVE_IOSTREAM # include #else # include #endif #ifdef HAVE_STD_IOSTREAM using namespace std; #endif #include "CosEventChannelAdmin.hh" static void usage(int argc, char **argv); static CosEventChannelAdmin::EventChannel_ptr getChannel(const char* sior); CORBA::ORB_ptr orb; int main(int argc, char **argv) { int result =1; // // Start orb. #if defined(HAVE_OMNIORB4) orb=CORBA::ORB_init(argc,argv,"omniORB4"); #else orb=CORBA::ORB_init(argc,argv,"omniORB3"); #endif // Process Options int c; while((c = getopt(argc,argv,"h")) != EOF) { switch (c) { case 'h': usage(argc,argv); exit(0); default : usage(argc,argv); exit(-1); } } if(optind!=argc-2) { usage(argc,argv); exit(-1); } // // Use one big try...catch block. // 'action' variable keeps track of what we're doing. const char* action ="start"; try { using namespace CosEventChannelAdmin; action="convert URI into reference to source channel"; EventChannel_var from_channel =getChannel(argv[optind]); action="convert URI into reference to destination channel"; EventChannel_var to_channel =getChannel(argv[optind+1]); action="obtain ConsumerAdmin"; ConsumerAdmin_var cadmin =from_channel->for_consumers(); action="obtain ProxyPushSupplier"; ProxyPushSupplier_var supplier =cadmin->obtain_push_supplier(); action="obtain SupplierAdmin"; SupplierAdmin_var sadmin =to_channel->for_suppliers(); action="obtain ProxyPushConsumer"; ProxyPushConsumer_var consumer =sadmin->obtain_push_consumer(); action="connect PushConsumer"; consumer->connect_push_supplier(supplier.in()); action="connect PushSupplier"; supplier->connect_push_consumer(consumer.in()); // // Clean up nicely. action="destroy orb"; orb->destroy(); // // If we get here, then everything has worked OK. result=0; } catch(CORBA::TRANSIENT& ex) { // _narrow() cerr<<"Failed to "<string_to_object(sior); // narrow object reference to event channel"; CosEventChannelAdmin::EventChannel_var channel = CosEventChannelAdmin::EventChannel::_narrow(obj); if(CORBA::is_nil(channel)) throw CORBA::OBJECT_NOT_EXIST(); return channel._retn(); } omniEvents-2_6_2/tools/events.cc0000644000076400001440000002476610227236246017124 0ustar alexusers00000000000000// -*- Mode: C++; -*- // Package : omniEvents // events.cc Created : 2004/05/02 // Author : Alex Tingle // // Copyright (C) 2004 Alex Tingle // // This file is part of the omniEvents application. // // omniEvents is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public // License as published by the Free Software Foundation; either // version 2.1 of the License, or (at your option) any later version. // // omniEvents is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU // Lesser General Public License for more details. // // You should have received a copy of the GNU Lesser General Public // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // // Description: // Push Model streamer. // #ifdef HAVE_CONFIG_H # include "config.h" #endif #ifdef HAVE_GETOPT # include extern char* optarg; extern int optind; #else # include "getopt.h" #endif #ifdef HAVE_IOSTREAM # include #else # include #endif #ifdef HAVE_STD_IOSTREAM using namespace std; #endif #ifdef HAVE_STDLIB_H # include #endif #include #if defined HAVE_UNISTD_H # include // read(), write() #elif defined __WIN32__ # include # define write(fd,buf,count) _write(fd,buf,count) # define read(fd,buf,count) _read(fd,buf,count) # define ssize_t int #endif #ifdef HAVE_SIGNAL_H # include #endif #include "CosEventComm.hh" #include "CosEventChannelAdmin.hh" #include "naming.h" #ifndef STDIN_FILENO # define STDIN_FILENO 0 # define STDOUT_FILENO 1 #endif CORBA::ORB_ptr orb; static void usage(int argc, char **argv); // // Time // #define BILLION 1000000000 class Time; class Time { private: CORBA::ULong _sec; CORBA::ULong _nano; public: static Time current() { Time result; unsigned long sec,nano; omni_thread::get_time(&sec,&nano); result._sec=sec; result._nano=nano; return result; } static void sleepUntil(const Time& futureTime) { Time now =current(); if(nowBILLION) { _nano=_nano%BILLION; ++_sec; } return *this; } Time operator+(const Time& right) const { Time result(*this); result+=right; return result; } Time& operator-=(const Time& right) { if(operator<(right)) { cerr<<"Negative time!"<>=(cdrMemoryStream& s) const { _sec>>=s; _nano>>=s; } void operator<<=(cdrMemoryStream& s) { _sec<<=s; _nano<<=s; } bool is_nil() const { return(_sec==0 && _nano==0); } }; // end class Time // // Consumer_i // class Consumer_i : virtual public POA_CosEventComm::PushConsumer { public: Consumer_i(long disconnect=0): _memstream() {} void push(const CORBA::Any& data) { // Record the event timestamp. Time now=Time::current(); now>>=_memstream; // stream event data. data>>=_memstream; // Write to file. write(STDOUT_FILENO,_memstream.bufPtr(),_memstream.bufSize()); // Reset. _memstream.rewindPtrs(); } void disconnect_push_consumer() { cout<<"disconnected"<shutdown(0); } void consume( CosEventChannelAdmin::EventChannel_ptr channel, const char*& action) { action="get ConsumerAdmin"; CosEventChannelAdmin::ConsumerAdmin_var consumer_admin = channel->for_consumers(); action="get ProxyPushSupplier"; CosEventChannelAdmin::ProxyPushSupplier_var proxy_supplier = consumer_admin->obtain_push_supplier(); action="connect to ProxyPushSupplier"; proxy_supplier->connect_push_consumer(_this()); } private: cdrMemoryStream _memstream; }; // // Supplier_i // class Supplier_i : virtual public POA_CosEventComm::PushSupplier { public: Supplier_i(): _connected(true) {} void disconnect_push_supplier() { cout<<"disconnected"<for_suppliers(); action="get ProxyPushConsumer"; CosEventChannelAdmin::ProxyPushConsumer_var proxy_consumer = supplier_admin->obtain_push_consumer(); action="connect to ProxyPushConsumer"; proxy_consumer->connect_push_supplier(_this()); char buf[1024]; ssize_t len; action="read standard input"; // Stream start time (seconds,nanoseconds) Time offsetTime; while(_connected && (len=read(STDIN_FILENO,buf,1024))) { CORBA::Any any; cdrMemoryStream memstr; action="put_octet_array"; memstr.put_octet_array( (_CORBA_Octet*)buf, (int)len ); while(_connected && memstr.currentInputPtr()push(any); } } } private: bool _connected; }; // // main() // int main(int argc, char **argv) { // // Start orb. #if defined(HAVE_OMNIORB4) orb=CORBA::ORB_init(argc,argv,"omniORB4"); #else orb=CORBA::ORB_init(argc,argv,"omniORB3"); #endif // Process Options bool supplierMode =false; const char* channelName ="EventChannel"; int c; while ((c = getopt(argc,argv,"shn:")) != EOF) { switch (c) { case 's': supplierMode=true; break; case 'n': channelName = optarg; break; case 'h': usage(argc,argv); exit(0); default : usage(argc,argv); exit(-1); } } #if defined(HAVE_SIGNAL_H) && defined(SIGPIPE) // Ignore broken pipes signal(SIGPIPE, SIG_IGN); #endif const char* action=""; // Use this variable to help report errors. try { CORBA::Object_var obj; action="resolve initial reference 'RootPOA'"; obj=orb->resolve_initial_references("RootPOA"); PortableServer::POA_var rootPoa =PortableServer::POA::_narrow(obj); if(CORBA::is_nil(rootPoa)) throw CORBA::OBJECT_NOT_EXIST(); action="activate the RootPOA's POAManager"; PortableServer::POAManager_var pman =rootPoa->the_POAManager(); pman->activate(); // // Obtain object reference to EventChannel // (from command-line argument or from the Naming Service). if(optindstring_to_object(argv[optind]); } else { action="resolve initial reference 'NameService'"; obj=orb->resolve_initial_references("NameService"); CosNaming::NamingContext_var rootContext= CosNaming::NamingContext::_narrow(obj); if(CORBA::is_nil(rootContext)) throw CORBA::OBJECT_NOT_EXIST(); action="find EventChannel in NameService"; cout << action << endl; obj=rootContext->resolve(str2name(channelName)); } action="narrow object reference to event channel"; CosEventChannelAdmin::EventChannel_var channel = CosEventChannelAdmin::EventChannel::_narrow(obj); if(CORBA::is_nil(channel)) { cerr << "Failed to narrow Event Channel reference." << endl; exit(1); } if(supplierMode) { action="construct PushSupplier"; Supplier_i* supplier =new Supplier_i(); supplier->supply(channel,action); } else { action="construct PushConsumer"; Consumer_i* consumer =new Consumer_i(); consumer->consume(channel,action); action="run ORB"; orb->run(); } return 0; } catch(CORBA::ORB::InvalidName& ex) { // resolve_initial_references cerr<<"Failed to "< extern char* optarg; extern int optind; #else # include "getopt.h" #endif #ifdef HAVE_STDLIB_H # include // exit() #endif #ifdef HAVE_IOSTREAM # include #else # include #endif #ifdef HAVE_STD_IOSTREAM using namespace std; #endif #include "CosEventChannelAdmin.hh" #include "naming.h" static void usage(int argc, char **argv); int main(int argc, char **argv) { int result =1; // // Start orb. #if defined(HAVE_OMNIORB4) CORBA::ORB_ptr orb = CORBA::ORB_init(argc,argv,"omniORB4"); #else CORBA::ORB_ptr orb = CORBA::ORB_init(argc,argv,"omniORB3"); #endif // Process Options int c; CosNaming::Name ecName =str2name("EventChannel"); while ((c = getopt(argc,argv,"n:h")) != EOF) { switch (c) { case 'n': ecName=str2name(optarg); break; case 'h': usage(argc,argv); exit(0); default : usage(argc,argv); exit(-1); } } // // Use one big try...catch block. // 'action' variable keeps track of what we're doing. const char* action ="start"; try { CORBA::Object_var obj; // // Obtain object reference to EventChannel // (from command-line argument or from the Naming Service). if(optindstring_to_object(argv[optind]); } else { // // Get Name Service root context. action="resolve initial reference 'NameService'"; obj=orb->resolve_initial_references("NameService"); CosNaming::NamingContext_var rootContext= CosNaming::NamingContext::_narrow(obj); if(CORBA::is_nil(rootContext)) throw CORBA::OBJECT_NOT_EXIST(); // // Obtain reference to the Event Channel. action="find Event Channel in naming service"; obj=rootContext->resolve(ecName); // // Unbind the Channel's reference in the naming service. action="unbind Event Channel from naming service"; rootContext->unbind(ecName); } action="narrow object reference to event channel"; CosEventChannelAdmin::EventChannel_var channel = CosEventChannelAdmin::EventChannel::_narrow(obj); if(CORBA::is_nil(channel)) throw CORBA::OBJECT_NOT_EXIST(); // // Destroy the EventChannel. action="destroy Event Channel"; channel->destroy(); // // Clean up nicely. action="destroy orb"; orb->destroy(); // // If we get here, then everything has worked OK. result=0; } catch(CORBA::ORB::InvalidName& ex) { // resolve_initial_references cerr<<"Failed to "<\bin\x86_win32 Test this by checking that this command prints out the omniidl help: omniidl -u o A fairly recent version of GNU make for Windows (3.78.1 or above). Download it from http://unxutils.sourceforge.net/ or Google for `gnu make windows'. The `make.exe' also needs to be in the PATH. For example, you could copy it into your C:\winnt directory. The following command should show version text: make --help 2. Preparation o Copy the file `config.h' from this directory to: \src\config.h o Copy the file `config.mk' from this directory to: \config.mk o Edit `config.mk' to set the values of variables: OMNIORB_BASE - full path to omniORB top-level directory. OMNIORB_LIBS - libraries provided by omniORB. OMNIEVENTS_BASE - full path to omniEvents top-level directory. 3. Compile Open a command window, and `cd' to the omniEvents top-level directory. The following command builds omniEvents: make 4. Use it See the notes for Windows Users in the main README file for important guidelines on how to use omniEvents on Windows. omniEvents-2_6_2/win32/config.h0000755000076400001440000001461010260316167016515 0ustar alexusers00000000000000/* include/config.h.in. Generated from configure.ac by autoheader. */ /* Define to one of `_getb67', `GETB67', `getb67' for Cray-2 and Cray-YMP systems. This function is required for `alloca.c' support on those systems. */ #undef CRAY_STACKSEG_END /* Define to 1 if using `alloca.c'. */ /* #undef C_ALLOCA */ /* define if fstream::open() accepts third parameter. */ #undef FSTREAM_OPEN_PROT /* Define to 1 if you have `alloca', as a function or macro. */ /* #undef HAVE_ALLOCA */ /* Define to 1 if you have and it should be used (not on Ultrix). */ #undef HAVE_ALLOCA_H /* define if bool is a built-in type */ /* #undef HAVE_BOOL */ /* Define to 1 if you have the header file. */ #define HAVE_CMATH /* Define to 1 if you have the header file. */ #define HAVE_FCNTL_H /* define if we have fstream::attach(). */ /* #undef HAVE_FSTREAM_ATTACH */ /* define if we have fstream::open(). ?? */ #define HAVE_FSTREAM_OPEN /* Define to 1 if you have the `gethostname' function. */ #undef HAVE_GETHOSTNAME /* Define to 1 if you have the `getopt' function. */ #undef HAVE_GETOPT /* Define to 1 if you have the header file. */ #undef HAVE_INTTYPES_H /* Define to 1 if you have the header file. */ #define HAVE_IOMANIP /* Define to 1 if you have the header file. */ #define HAVE_IOMANIP_H /* Define to 1 if you have the header file. */ #define HAVE_IOSTREAM /* Define to 1 if you have the header file. */ #define HAVE_IOSTREAM_H /* Define to 1 if you have the header file. */ #undef HAVE_LIBC_H /* Define to 1 if your system has a working `malloc' function. ?? */ #define HAVE_MALLOC /* Define to 1 if you have the header file. */ #define HAVE_MALLOC_H /* Define to 1 if you have the header file. */ #define HAVE_MEMORY_H /* define if the compiler implements namespaces ?? */ #define HAVE_NAMESPACES /* "define if omniORB3 is available." */ #undef HAVE_OMNIORB3 /* "define if omniORB4 is available." */ #define HAVE_OMNIORB4 /* Define to 1 if you have the header file. */ #define HAVE_PROCESS_H /* Define if you have POSIX threads libraries and header files. */ #undef HAVE_PTHREAD /* Define to 1 if you have the header file. */ #define HAVE_SIGNAL_H 1 /* Define to 1 if `stat' has the bug that it succeeds when given the zero-length file name argument. */ /* #undef HAVE_STAT_EMPTY_STRING_BUG */ /* Define to 1 if you have the header file. */ #undef HAVE_STDINT_H /* Define to 1 if you have the header file. */ #define HAVE_STDLIB_H 1 /* define if C++ iostream is in namespace std. ?? */ #define HAVE_STD_IOSTREAM 1 /* define if C++ Standard Template Library is in namespace std ?? */ #define HAVE_STD_STL /* define if the compiler supports Standard Template Library ?? */ #define HAVE_STL /* Define to 1 if you have the `strchr' function. */ /* #undef HAVE_STRCHR */ /* Define to 1 if you have the `strdup' function. ?? */ /* #undef HAVE_STRDUP */ /* Define to 1 if you have the header file. */ #undef HAVE_STRINGS_H /* Define to 1 if you have the header file. */ #define HAVE_STRING_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_PARAM_H /* Define to 1 if you have the header file. */ #define HAVE_SYS_STAT_H /* Define to 1 if you have the header file. */ #define HAVE_SYS_TYPES_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_UTSNAME_H /* Define to 1 if you have the `tzset' function. */ /* #undef HAVE_TZSET */ /* Define to 1 if you have the `uname' function. */ /* #undef HAVE_UNAME */ /* Define to 1 if you have the header file. */ #undef HAVE_UNISTD_H /* Define to 1 if `lstat' dereferences a symlink specified with a trailing slash. */ #undef LSTAT_FOLLOWS_SLASHED_SYMLINK /* Define to the address where bug reports for this package should be sent. */ #define PACKAGE_BUGREPORT "alex.omnievents@firetree.net" /* Define to the full name of this package. */ #define PACKAGE_NAME "omniEvents" /* Define to the full name and version of this package. */ #define PACKAGE_STRING "omniEvents 2.6.2" /* Define to the one symbol short name of this package. */ #define PACKAGE_TARNAME "omnievents" /* Define to the version of this package. */ #define PACKAGE_VERSION "2.6.2" /* Define to the necessary symbol if this constant uses a non-standard name on your system. */ /* #undef PTHREAD_CREATE_JOINABLE */ /* Define as the return type of signal handlers (`int' or `void'). */ /* #undef RETSIGTYPE */ /* If using the C implementation of alloca, define if you know the direction of stack growth for your system; otherwise it will be automatically deduced at run-time. STACK_DIRECTION > 0 => grows toward higher addresses STACK_DIRECTION < 0 => grows toward lower addresses STACK_DIRECTION = 0 => direction of growth unknown */ /* #undef STACK_DIRECTION */ /* Define to 1 if you have the ANSI C header files. ?? */ #define STDC_HEADERS /* for omniORB ?? */ #define __OSVERSION__ 5 /* for OmniORB on AIX */ #undef __aix__ /* for OmniORB on AlphaProcessor */ #undef __alpha__ /* for OmniORB on ArmProcessor */ #undef __arm__ /* for OmniORB on Darwin */ #undef __darwin__ /* for OmniORB on FreeBSD */ #undef __freebsd__ /* for OmniORB on HppaProcessor */ #undef __hppa__ /* for OmniORB on HPUX */ #undef __hpux__ /* for OmniORB on ia64Processor */ #undef __ia64__ /* for OmniORB on IRIX */ #undef __irix__ /* for OmniORB on Linux, Cygwin */ #undef __linux__ /* for OmniORB on m68kProcessor */ #undef __m68k__ /* for OmniORB on IndigoProcessor */ #undef __mips__ /* for OmniORB on NextStep */ #undef __nextstep__ /* for OmniORB on OSF1 (Tru64) */ #undef __osf1__ /* for OmniORB on OSR5 */ #undef __osr5__ /* for OmniORB on PowerPCProcessor */ #undef __powerpc__ /* for OmniORB on s390Processor */ #undef __s390__ /* for OmniORB on SparcProcessor */ #undef __sparc__ /* for OmniORB on SunOS (Solaris) */ #undef __sunos__ /* for OmniORB on x86Processor */ #define __x86__ 1 /* Define to empty if `const' does not conform to ANSI C. */ /* #undef const */ /* Define as `__inline' if that's what the C compiler calls it, or to nothing if it is not supported. */ /* #undef inline */ /* Define to `unsigned' if does not define. */ #undef size_t /* Clean away the PACKAGE_* macros unless they are needed. */ #include "scour.h" omniEvents-2_6_2/win32/config.mk0000755000076400001440000001150410260316167016674 0ustar alexusers00000000000000# Package : omniEvents # config.mk.in Created : 2003/10/31 # Author : Alex Tingle # # Copyright (C) 2003, 2004 Alex Tingle. # # This file is part of the omniEvents application. # # omniEvents is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either # version 2.1 of the License, or (at your option) any later version. # # omniEvents is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public # License along with this library; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # ## ## MANUALLY SET THE BASE DIRECTORY FOR OMNIORB & OMNIEVENTS: ## OMNIORB_BASE = C:\Progra~1\omniORB-4.0.6 OMNIORB_LIBS = omniORB406_rt.lib omniDynamic406_rt.lib omnithread31_rt.lib OMNIEVENTS_BASE = C:\omniEvents-2_6_2 ## CORBA_ORB = omniORB4 BUILD_FOR_WINDOWS := yes # Punctuation EMPTY := SPACE := $(EMPTY) $(EMPTY) # Platform dependent file extensions. OBJEXT := obj EXEEXT := .exe SOEXT := .dll StaticLib = $(1).lib # Name of the application and libraries that we will build. OMNIEVENTS := omniEvents CLIENT_LIB := $(call StaticLib,$(OMNIEVENTS)Cl) PACKAGE_VERSION := 2.6.2 HAVE_GETHOSTNAME := no # Need to install a substitute. # Define installation directories. prefix := C:\events exec_prefix := ${prefix} INSTALL_BIN := $(DESTDIR)${exec_prefix}/bin INSTALL_SBIN := $(DESTDIR)${exec_prefix}/sbin INSTALL_LIB := $(DESTDIR)${exec_prefix}/lib INSTALL_INCLUDE := $(DESTDIR)${prefix}/include INSTALL_IDL := $(DESTDIR)${prefix}/share/idl INSTALL_ETC := $(DESTDIR)/etc SYSCONFIG_DIR := $(DESTDIR)/etc/default # Set up install & clean programs. INSTALL = rem # No install on windows yet RM = del /F RMDIR = del /F ## ## IDL compiler. ## IDL := omniidl IDL_COS_DIR := '$(OMNIORB_BASE)\idl' IDLFLAGS = -bcxx # <--- backend selection should be omniidl's first option. IDLFLAGS += -Wba -Wbh='.hh' -Wbs='.cc' -Wbd='DynSK.cc' -WbBOA -Wbuse_quotes IDLFLAGS += -I$(IDL_COS_DIR)\COS # The IDL compiler doesn't write code that uses config.h, so we have to compile # the generated files with a couple of extra options: EXTRA_IDL_CXXFLAGS = -D__WIN32__ -D__x86__=1 -D__OSVERSION__=5 \ -D_WIN32_WINNT=0x0400 -D__NT__ -D_COS_LIBRARY ## ## C++ compiler: $(CXX) $(CPPFLAGS) $(CXXFLAGS) source ## CXX = cl -nologo CXXFLAGS += -GX -MD -GR # CXXFLAGS CPPFLAGS += -TP -I$(subst \,\\,$(OMNIORB_BASE))\\include # CPPFLAGS CPPFLAGS += $(EXTRA_IDL_CXXFLAGS) -DHAVE_CONFIG_H # DEFS CPPFLAGS += -I../idl -I../src CPPFLAGS += -DENABLE_CLIENT_IR_SUPPORT=1 -DOMNIEVENTS_REAL_TIME_PUSH=1 ## ## C++ Linker: $(LD) objects $(LDFLAGS) $(LDOUT)target $(LDLIBS) ## LD = $(CXX) LDFLAGS += -GX -MD -GR # CXXFLAGS LDFLAGS += -link # LDFLAGS LDLIBS += /LIBPATH:$(subst \,\\,$(OMNIORB_BASE))\\lib\\x86_win32 \ ws2_32.lib mswsock.lib advapi32.lib $(OMNIORB_LIBS) # LIBS ## ## Command to make a symbolic link from $(1) to $(2) ## MakeSymLink = # No symbolic links on Windows. ## ## Command to build C++ static archive (library) ## $(1) - archive/library (output) filename ## $(2) - objects and static libraries to include ## CxxBuildStatic = link /lib /nologo /OUT:$(1) $(2) ## ## Command to build C++ executable. ## $(1) - executable (output) filename ## $(2) - objects and static libraries to include ## CxxBuildExecutable = $(LD) $(2) $(LDFLAGS) /OUT:$(1) $(LDLIBS) ## ## Command to build C++ shared libraries. ## $(1) - output filename (.so) ## $(2) - objects ## $(3) - static libraries to include ## $(4) - soname ## CxxBuildShared = # No shared libraries on windows yet. ## ## Command to install C++ shared libraries. ## $(1) - root library name ## $(2) - package version (MAJOR.MINOR.MICRO) ## $(3) - target directory ## SharedLibName = $(1)$(SOEXT) SharedLibFullName = $(1).$(2)$(SOEXT) SharedLibSoName = $(SharedLibFullName) InstallSharedLib = # No install OR shared libs on windows yet!! ## ## Some compilers & linkers need to be told where to store ## template instantiations. ## CXXFLAGS_PTR := CXX_REPOSITORY := $(OMNIEVENTS_BASE)/templates.d ifneq ("$(CXXFLAGS_PTR)","") CXXFLAGS += $(CXX_REPOSITORY) LDFLAGS += $(CXX_REPOSITORY) endif ## ## Suffix rules for compiling .idl & .cc files. ## .SUFFIXES: .idl .cc .$(OBJEXT) .idl.cc: $(IDL) $(IDLFLAGS) $< .cc.$(OBJEXT): $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) $< # (end) omniEvents-2_6_2/win32/hello.cc0000644000076400001440000000015710227236246016511 0ustar alexusers00000000000000#include using namespace std; int main(int,char**) { cout<<"Hello, world."<disconnect(); if(_supplierAdmin) _supplierAdmin->disconnect(); - - DB(5,"EventChannel_i::destroy()") } Index: src/ProxyPullConsumer.cc =================================================================== RCS file: /cvsroot/omnievents/omniEvents/src/ProxyPullConsumer.cc,v retrieving revision 1.11.2.4 diff -u -r1.11.2.4 ProxyPullConsumer.cc --- src/ProxyPullConsumer.cc 10 May 2005 14:28:06 -0000 1.11.2.4 +++ src/ProxyPullConsumer.cc 18 May 2005 10:15:08 -0000 @@ -97,7 +97,10 @@ { Proxy* p =*i; // Sun's CC requires this temporary. ProxyPullConsumer_i* ppc =static_cast(p); - ppc->disconnect_pull_consumer(); + // We are in the EventChannel's thread. + // Make sure all calls go though the ProxyPullConsumer POA. + CosEventChannelAdmin::ProxyPullConsumer_var ppcv =ppc->_this(); + ppcv->disconnect_pull_consumer(); } } @@ -140,9 +143,9 @@ else { CORBA::Request_var req=_target->_request("disconnect_pull_supplier"); + _target=CosEventComm::PullSupplier::_nil(); req->send_deferred(); Orb::inst().deferredRequest(req._retn()); - _target=CosEventComm::PullSupplier::_nil(); } } Index: src/ProxyPullSupplier.cc =================================================================== RCS file: /cvsroot/omnievents/omniEvents/src/ProxyPullSupplier.cc,v retrieving revision 1.5.2.3 diff -u -r1.5.2.3 ProxyPullSupplier.cc --- src/ProxyPullSupplier.cc 10 May 2005 14:28:07 -0000 1.5.2.3 +++ src/ProxyPullSupplier.cc 18 May 2005 10:15:08 -0000 @@ -91,8 +91,12 @@ { for(set::iterator i =_servants.begin(); i!=_servants.end(); ++i) { - ProxyPullSupplier_i* narrowed =dynamic_cast(*i); - narrowed->disconnect_pull_supplier(); + ProxyPullSupplier_i* pps =dynamic_cast(*i); + // We are in the EventChannel's thread. + // Make sure all calls go though the ProxyPullSupplier POA. + CosEventChannelAdmin::ProxyPullSupplier_var ppsv =pps->_this(); + ppsv->disconnect_pull_supplier(); + } } @@ -137,10 +141,10 @@ else if(!CORBA::is_nil(_target)) { CORBA::Request_var req=_target->_request("disconnect_pull_consumer"); + _target=CosEventComm::PullConsumer::_nil(); req->send_deferred(); Orb::inst().deferredRequest(req._retn()); } - _target=CosEventComm::PullConsumer::_nil(); } CORBA::Any* ProxyPullSupplier_i::pull() Index: src/ProxyPushSupplier.cc =================================================================== RCS file: /cvsroot/omnievents/omniEvents/src/ProxyPushSupplier.cc,v retrieving revision 1.17.2.5 diff -u -r1.17.2.5 ProxyPushSupplier.cc --- src/ProxyPushSupplier.cc 10 May 2005 11:33:44 -0000 1.17.2.5 +++ src/ProxyPushSupplier.cc 18 May 2005 10:15:09 -0000 @@ -122,7 +122,10 @@ { Proxy* p =*i; // Sun's CC requires this temporary. ProxyPushSupplier_i* pps =static_cast(p); - pps->disconnect_push_supplier(); + // We are in the EventChannel's thread. + // Make sure all calls go though the ProxyPushSupplier POA. + CosEventChannelAdmin::ProxyPushSupplier_var ppsv =pps->_this(); + ppsv->disconnect_push_supplier(); } } @@ -284,9 +287,9 @@ else { CORBA::Request_var req=_target->_request("disconnect_push_consumer"); + _target=CosEventComm::PushConsumer::_nil(); req->send_deferred(); Orb::inst().deferredRequest(req._retn()); - _target=CosEventComm::PushConsumer::_nil(); } } Index: src/Servant.cc =================================================================== RCS file: /cvsroot/omnievents/omniEvents/src/Servant.cc,v retrieving revision 1.8.2.3 diff -u -r1.8.2.3 Servant.cc --- src/Servant.cc 12 May 2005 07:58:30 -0000 1.8.2.3 +++ src/Servant.cc 18 May 2005 10:15:09 -0000 @@ -89,7 +89,10 @@ #if OMNIEVENTS__DEBUG_SERVANT +# define OMNIEVENTS__ADDR "["<deactivate_object(oid.in()); } catch(POA::ObjectNotActive& ex) omniEvents-2_6_2/alex20050518-2.patch0000644000076400001440000002116210242716553017073 0ustar alexusers00000000000000? alex20050518-2.patch ? alex20050518.patch ? connection.patch ? foo ? ~foo ? src/.nfs0009f0fa0000007c Index: src/EventChannel.cc =================================================================== RCS file: /cvsroot/omnievents/omniEvents/src/EventChannel.cc,v retrieving revision 1.15.2.7 retrieving revision 1.15.2.8 diff -u -r1.15.2.7 -r1.15.2.8 --- src/EventChannel.cc 13 May 2005 11:35:21 -0000 1.15.2.7 +++ src/EventChannel.cc 18 May 2005 19:50:07 -0000 1.15.2.8 @@ -56,13 +56,13 @@ // Prevent further incoming connections. _shutdownRequested=true; + DB(5,"EventChannel_i::destroy()") + // Send disconnect messages to connected clients. if(_consumerAdmin) _consumerAdmin->disconnect(); if(_supplierAdmin) _supplierAdmin->disconnect(); - - DB(5,"EventChannel_i::destroy()") } Index: src/ProxyPullConsumer.cc =================================================================== RCS file: /cvsroot/omnievents/omniEvents/src/ProxyPullConsumer.cc,v retrieving revision 1.11.2.4 retrieving revision 1.11.2.5 diff -u -r1.11.2.4 -r1.11.2.5 --- src/ProxyPullConsumer.cc 10 May 2005 14:28:06 -0000 1.11.2.4 +++ src/ProxyPullConsumer.cc 18 May 2005 19:50:59 -0000 1.11.2.5 @@ -97,7 +97,10 @@ { Proxy* p =*i; // Sun's CC requires this temporary. ProxyPullConsumer_i* ppc =static_cast(p); - ppc->disconnect_pull_consumer(); + // We are in the EventChannel's thread. + // Make sure all calls go though the ProxyPullConsumer POA. + CosEventChannelAdmin::ProxyPullConsumer_var ppcv =ppc->_this(); + ppcv->disconnect_pull_consumer(); } } @@ -140,9 +143,9 @@ else { CORBA::Request_var req=_target->_request("disconnect_pull_supplier"); + _target=CosEventComm::PullSupplier::_nil(); req->send_deferred(); Orb::inst().deferredRequest(req._retn()); - _target=CosEventComm::PullSupplier::_nil(); } } Index: src/ProxyPullSupplier.cc =================================================================== RCS file: /cvsroot/omnievents/omniEvents/src/ProxyPullSupplier.cc,v retrieving revision 1.5.2.3 retrieving revision 1.5.2.4 diff -u -r1.5.2.3 -r1.5.2.4 --- src/ProxyPullSupplier.cc 10 May 2005 14:28:07 -0000 1.5.2.3 +++ src/ProxyPullSupplier.cc 18 May 2005 19:50:59 -0000 1.5.2.4 @@ -91,8 +91,12 @@ { for(set::iterator i =_servants.begin(); i!=_servants.end(); ++i) { - ProxyPullSupplier_i* narrowed =dynamic_cast(*i); - narrowed->disconnect_pull_supplier(); + ProxyPullSupplier_i* pps =dynamic_cast(*i); + // We are in the EventChannel's thread. + // Make sure all calls go though the ProxyPullSupplier POA. + CosEventChannelAdmin::ProxyPullSupplier_var ppsv =pps->_this(); + ppsv->disconnect_pull_supplier(); + } } @@ -137,10 +141,10 @@ else if(!CORBA::is_nil(_target)) { CORBA::Request_var req=_target->_request("disconnect_pull_consumer"); + _target=CosEventComm::PullConsumer::_nil(); req->send_deferred(); Orb::inst().deferredRequest(req._retn()); } - _target=CosEventComm::PullConsumer::_nil(); } CORBA::Any* ProxyPullSupplier_i::pull() Index: src/ProxyPushConsumer.cc =================================================================== RCS file: /cvsroot/omnievents/omniEvents/src/ProxyPushConsumer.cc,v retrieving revision 1.14.2.4 retrieving revision 1.14.2.5 diff -u -r1.14.2.4 -r1.14.2.5 --- src/ProxyPushConsumer.cc 13 May 2005 20:20:16 -0000 1.14.2.4 +++ src/ProxyPushConsumer.cc 17 May 2005 11:40:28 -0000 1.14.2.5 @@ -79,6 +79,10 @@ { CORBA::Request_var req = pos->second->_target->_request("disconnect_push_supplier"); + pos->second->_remove_ref(); + _connections.erase(pos); + // The following line could result in a reentrant callback, if this call was + // not made through the POA => must erase the connection BEFORE this point. req->send_deferred(); Orb::inst().deferredRequest(req._retn()); if(omniEventsLog::exists()) @@ -88,8 +92,6 @@ log.os<<"-ecf/"<<_channelName.in(); log.os<<"/SupplierAdmin/ProxyPushConsumer/"<second->_remove_ref(); - _connections.erase(pos); } #else /* Silently ignore disconnects with omniORB3 */ DB(5,"Ignoring disconnect_push_consumer(). Upgrade to omniORB4!") @@ -200,16 +202,19 @@ void ProxyPushConsumer_i::disconnect() { + // Note. We are (probably) in the EventChannel's thread. Connections_t::iterator curr,next=_connections.begin(); while(next!=_connections.end()) { curr=next++; CORBA::Request_var req = curr->second->_target->_request("disconnect_push_supplier"); - req->send_deferred(); - Orb::inst().deferredRequest(req._retn()); curr->second->_remove_ref(); _connections.erase(curr); + // The following line could result in a reentrant callback + // => must erase the connection BEFORE this point. + req->send_deferred(); + Orb::inst().deferredRequest(req._retn()); } } Index: src/ProxyPushSupplier.cc =================================================================== RCS file: /cvsroot/omnievents/omniEvents/src/ProxyPushSupplier.cc,v retrieving revision 1.17.2.5 retrieving revision 1.17.2.6 diff -u -r1.17.2.5 -r1.17.2.6 --- src/ProxyPushSupplier.cc 10 May 2005 11:33:44 -0000 1.17.2.5 +++ src/ProxyPushSupplier.cc 18 May 2005 19:51:55 -0000 1.17.2.6 @@ -122,7 +122,10 @@ { Proxy* p =*i; // Sun's CC requires this temporary. ProxyPushSupplier_i* pps =static_cast(p); - pps->disconnect_push_supplier(); + // We are in the EventChannel's thread. + // Make sure all calls go though the ProxyPushSupplier POA. + CosEventChannelAdmin::ProxyPushSupplier_var ppsv =pps->_this(); + ppsv->disconnect_push_supplier(); } } @@ -284,9 +287,9 @@ else { CORBA::Request_var req=_target->_request("disconnect_push_consumer"); + _target=CosEventComm::PushConsumer::_nil(); req->send_deferred(); Orb::inst().deferredRequest(req._retn()); - _target=CosEventComm::PushConsumer::_nil(); } } @@ -308,6 +311,8 @@ DB(20,"~ProxyPushSupplier_i()") } +OMNIEVENTS__DEBUG_REF_COUNTS__DEFN(ProxyPushSupplier_i) + inline void ProxyPushSupplier_i::trigger(bool& busy, bool& waiting) { if(!CORBA::is_nil(_req) && _req->poll_response()) // response has arrived @@ -385,6 +390,7 @@ string_to_(ior.c_str()); // Do not activate until we know that we have read a valid target. activateObjectWithId(oid.c_str()); + _remove_ref(); _target=pushConsumer._retn(); _targetIsProxy=bool(node.attrLong("proxy")); Index: src/ProxyPushSupplier.h =================================================================== RCS file: /cvsroot/omnievents/omniEvents/src/ProxyPushSupplier.h,v retrieving revision 1.8.2.3 retrieving revision 1.8.2.4 diff -u -r1.8.2.3 -r1.8.2.4 --- src/ProxyPushSupplier.h 10 May 2005 14:28:08 -0000 1.8.2.3 +++ src/ProxyPushSupplier.h 18 May 2005 19:52:16 -0000 1.8.2.4 @@ -110,6 +110,7 @@ public: ProxyPushSupplier_i(PortableServer::POA_ptr poa, EventQueue& q); ~ProxyPushSupplier_i(); + OMNIEVENTS__DEBUG_REF_COUNTS__DECL /** Sets 'busy' if some work was done. * Sets 'waiting' if there is an outstanding request. Index: src/Servant.cc =================================================================== RCS file: /cvsroot/omnievents/omniEvents/src/Servant.cc,v retrieving revision 1.8.2.3 retrieving revision 1.8.2.4 diff -u -r1.8.2.3 -r1.8.2.4 --- src/Servant.cc 12 May 2005 07:58:30 -0000 1.8.2.3 +++ src/Servant.cc 18 May 2005 19:53:03 -0000 1.8.2.4 @@ -89,7 +89,10 @@ #if OMNIEVENTS__DEBUG_SERVANT +# define OMNIEVENTS__ADDR "["<deactivate_object(oid.in()); } catch(POA::ObjectNotActive& ex)