diff options
108 files changed, 0 insertions, 19763 deletions
diff --git a/ChangeLog b/ChangeLog index 0a39dab11ef..63a8902a892 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,7 +1,3 @@ -Wed Oct 23 16:37:15 2002 Balachandran Natarajan <bala@isis-server.isis.vanderbilt.edu> - - * THANKS: Added Sandeep to the Hall of Fame. - Wed Oct 23 17:20:18 UTC 2002 Don Hinton <dhinton@ieee.org> * ace/Service_Object.{h,cpp} (suspend, resume, fini): diff --git a/ChangeLogs/ChangeLog-03a b/ChangeLogs/ChangeLog-03a index 0a39dab11ef..63a8902a892 100644 --- a/ChangeLogs/ChangeLog-03a +++ b/ChangeLogs/ChangeLog-03a @@ -1,7 +1,3 @@ -Wed Oct 23 16:37:15 2002 Balachandran Natarajan <bala@isis-server.isis.vanderbilt.edu> - - * THANKS: Added Sandeep to the Hall of Fame. - Wed Oct 23 17:20:18 UTC 2002 Don Hinton <dhinton@ieee.org> * ace/Service_Object.{h,cpp} (suspend, resume, fini): diff --git a/TAO/ChangeLog b/TAO/ChangeLog index 9186327b59f..ac2f05b34e7 100644 --- a/TAO/ChangeLog +++ b/TAO/ChangeLog @@ -1,10 +1,3 @@ -Wed Oct 23 16:32:36 2002 Balachandran Natarajan <bala@isis-server.isis.vanderbilt.edu> - - * orbsvcs/examples/CosEC/RtEC_Based/lib/Makefile: Added a check to - ensure that the contents are not compiled if the dependant - libraries are not available. Thanks to Sandeep Neema - <neemask@corvette.vuse.vanderbilt.edu> for reporting this. - Wed Oct 23 13:38:59 2002 Nanbor Wang <nanbor@cs.wustl.edu> * orbsvcs/orbsvcs/DsEventLogAdmin.dsp: diff --git a/TAO/orbsvcs/examples/CosEC/RtEC_Based/lib/Makefile b/TAO/orbsvcs/examples/CosEC/RtEC_Based/lib/Makefile index 6218339dac6..13a9a2e6544 100644 --- a/TAO/orbsvcs/examples/CosEC/RtEC_Based/lib/Makefile +++ b/TAO/orbsvcs/examples/CosEC/RtEC_Based/lib/Makefile @@ -36,14 +36,6 @@ LSRC = $(addsuffix .cpp,$(FILES)) $(IDL_SRC) include $(ACE_ROOT)/include/makeinclude/wrapper_macros.GNU include $(TAO_ROOT)/rules.tao.GNU -#### If the orbsvcs library wasn't built with all components, don't -#### try to build certain tests. -TAO_ORBSVCS := $(shell sh $(ACE_ROOT)/bin/ace_components --orbsvcs) -ifeq (RTEvent,$(findstring RTEvent,$(TAO_ORBSVCS))) -ifeq (CosEvent,$(findstring CosEvent,$(TAO_ORBSVCS))) - BIN = $(BIN2) -endif # RTEvent -endif # CosEvent include $(ACE_ROOT)/include/makeinclude/macros.GNU include $(ACE_ROOT)/include/makeinclude/rules.common.GNU include $(ACE_ROOT)/include/makeinclude/rules.nonested.GNU diff --git a/TAO/orbsvcs/orbsvcs/CosLoadBalancing_Static.dsp b/TAO/orbsvcs/orbsvcs/CosLoadBalancing_Static.dsp deleted file mode 100644 index e70e958d92a..00000000000 --- a/TAO/orbsvcs/orbsvcs/CosLoadBalancing_Static.dsp +++ /dev/null @@ -1,488 +0,0 @@ -# Microsoft Developer Studio Project File - Name="CosLoadBalancing_Static" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Static Library" 0x0104
-
-CFG=CosLoadBalancing_Static - Win32 Static Debug
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE use the Export Makefile command and run
-!MESSAGE
-!MESSAGE NMAKE /f "CosLoadBalancing_Static.mak".
-!MESSAGE
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE
-!MESSAGE NMAKE /f "CosLoadBalancing_Static.mak" CFG="CosLoadBalancing_Static - Win32 Static Debug"
-!MESSAGE
-!MESSAGE Possible choices for configuration are:
-!MESSAGE
-!MESSAGE "CosLoadBalancing_Static - Win32 Static Release" (based on "Win32 (x86) Static Library")
-!MESSAGE "CosLoadBalancing_Static - Win32 Static Debug" (based on "Win32 (x86) Static Library")
-!MESSAGE
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-CPP=cl.exe
-RSC=rc.exe
-
-!IF "$(CFG)" == "CosLoadBalancing_Static - Win32 Static Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release"
-# PROP BASE Intermediate_Dir "Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir ""
-# PROP Intermediate_Dir "LIB\Release\CosLoadBalancing"
-# PROP Target_Dir ""
-MTL=midl.exe
-LINK32=link.exe -lib
-# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c
-# ADD CPP /nologo /MD /W3 /GX /O2 /I "../" /I "../../" /I "../../../" /D "_MBCS" /D "_LIB" /D "TAO_AS_STATIC_LIBS" /D "NDEBUG" /D "ACE_AS_STATIC_LIBS" /D "WIN32" /FD /c
-# SUBTRACT CPP /YX
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LIB32=link.exe -lib
-# ADD BASE LIB32 /nologo
-# ADD LIB32 /nologo /out:"TAO_CosLoadBalancings.lib"
-
-!ELSEIF "$(CFG)" == "CosLoadBalancing_Static - Win32 Static Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug"
-# PROP BASE Intermediate_Dir "Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir ""
-# PROP Intermediate_Dir "LIB\Debug\CosLoadBalancing"
-# PROP Target_Dir ""
-MTL=midl.exe
-LINK32=link.exe -lib
-# ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c
-# ADD CPP /nologo /MDd /W3 /Gm /GX /Zi /Od /I "../" /I "../../" /I "../../../" /D "_MBCS" /D "_LIB" /D "TAO_AS_STATIC_LIBS" /D "_DEBUG" /D "ACE_AS_STATIC_LIBS" /D "WIN32" /FD /c
-# SUBTRACT CPP /YX
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LIB32=link.exe -lib
-# ADD BASE LIB32 /nologo
-# ADD LIB32 /nologo /out:"TAO_CosLoadBalancingsd.lib"
-
-!ENDIF
-
-# Begin Target
-
-# Name "CosLoadBalancing_Static - Win32 Static Release"
-# Name "CosLoadBalancing_Static - Win32 Static Debug"
-# Begin Group "IDL Files"
-
-# PROP Default_Filter "idl"
-# Begin Source File
-
-SOURCE=.\CosLoadBalancing.idl
-
-!IF "$(CFG)" == "CosLoadBalancing_Static - Win32 Static Release"
-
-# PROP Ignore_Default_Tool 1
-# Begin Custom Build - Invoking TAO_IDL on $(InputPath)
-InputPath=.\CosLoadBalancing.idl
-InputName=CosLoadBalancing
-
-BuildCmds= \
- ..\..\..\bin\Release\tao_idl_static -Ge 1 -GC -I../.. -Wb,pre_include=ace/pre.h -Wb,post_include=ace/post.h -Wb,export_macro=TAO_LoadBalancing_Export -Wb,export_include=LoadBalancing\LoadBalancing_export.h $(InputName).idl
-
-"$(InputName)C.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-"$(InputName)C.i" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-"$(InputName)C.cpp" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-"$(InputName)S.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-"$(InputName)S.i" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-"$(InputName)S.cpp" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-"$(InputName)S_T.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-"$(InputName)S_T.i" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-"$(InputName)S_T.cpp" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-# End Custom Build
-
-!ELSEIF "$(CFG)" == "CosLoadBalancing_Static - Win32 Static Debug"
-
-# PROP Ignore_Default_Tool 1
-USERDEP__COSLO="..\..\..\bin\tao_idl_static.exe"
-# Begin Custom Build - Invoking TAO_IDL on $(InputPath)
-InputPath=.\CosLoadBalancing.idl
-InputName=CosLoadBalancing
-
-BuildCmds= \
- ..\..\..\bin\tao_idl_static -Ge 1 -GC -I../.. -Wb,pre_include=ace/pre.h -Wb,post_include=ace/post.h -Wb,export_macro=TAO_LoadBalancing_Export -Wb,export_include=LoadBalancing\LoadBalancing_export.h $(InputName).idl
-
-"$(InputName)C.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-"$(InputName)C.i" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-"$(InputName)C.cpp" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-"$(InputName)S.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-"$(InputName)S.i" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-"$(InputName)S.cpp" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-"$(InputName)S_T.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-"$(InputName)S_T.i" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-"$(InputName)S_T.cpp" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-# End Custom Build
-
-!ENDIF
-
-# End Source File
-# Begin Source File
-
-SOURCE=.\LB_ORT.idl
-
-!IF "$(CFG)" == "CosLoadBalancing_Static - Win32 Static Release"
-
-# Begin Custom Build
-InputPath=.\LB_ORT.idl
-InputName=LB_ORT
-
-BuildCmds= \
- ..\..\..\bin\Release\tao_idl_static -Ge 1 -Gv -DCORBA3 -I../.. -Wb,pre_include=ace/pre.h -Wb,post_include=ace/post.h $(InputName).idl
-
-"$(InputName)C.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-"$(InputName)C.i" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-"$(InputName)C.cpp" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-"$(InputName)S.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-"$(InputName)S.i" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-"$(InputName)S.cpp" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-"$(InputName)S_T.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-"$(InputName)S_T.i" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-"$(InputName)S_T.cpp" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-# End Custom Build
-
-!ELSEIF "$(CFG)" == "CosLoadBalancing_Static - Win32 Static Debug"
-
-# PROP Ignore_Default_Tool 1
-# Begin Custom Build
-InputPath=.\LB_ORT.idl
-InputName=LB_ORT
-
-BuildCmds= \
- ..\..\..\bin\tao_idl_static -Ge 1 -Gv -DCORBA3 -I../.. -Wb,pre_include=ace/pre.h -Wb,post_include=ace/post.h $(InputName).idl
-
-"$(InputName)C.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-"$(InputName)C.i" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-"$(InputName)C.cpp" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-"$(InputName)S.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-"$(InputName)S.i" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-"$(InputName)S.cpp" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-"$(InputName)S_T.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-"$(InputName)S_T.i" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-"$(InputName)S_T.cpp" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-# End Custom Build
-
-!ENDIF
-
-# End Source File
-# End Group
-# Begin Group "Inline Files"
-
-# PROP Default_Filter "i;inl"
-# Begin Source File
-
-SOURCE=.\CosLoadBalancingC.i
-# End Source File
-# Begin Source File
-
-SOURCE=.\CosLoadBalancingS.i
-# End Source File
-# Begin Source File
-
-SOURCE=.\LoadBalancing\LB_LeastLoaded.inl
-# End Source File
-# Begin Source File
-
-SOURCE=.\LoadBalancing\LB_LoadAlert.inl
-# End Source File
-# Begin Source File
-
-SOURCE=.\LoadBalancing\LB_LoadManager.inl
-# End Source File
-# End Group
-# Begin Group "Header Files"
-
-# PROP Default_Filter "h"
-# Begin Source File
-
-SOURCE=.\CosLoadBalancingC.h
-# End Source File
-# Begin Source File
-
-SOURCE=.\CosLoadBalancingS.h
-# End Source File
-# Begin Source File
-
-SOURCE=.\LoadBalancing\LB_ClientRequestInterceptor.h
-# End Source File
-# Begin Source File
-
-SOURCE=.\LoadBalancing\LB_Component.h
-# End Source File
-# Begin Source File
-
-SOURCE=.\LoadBalancing\LB_conf.h
-# End Source File
-# Begin Source File
-
-SOURCE=.\LoadBalancing\LB_CPU_Monitor.h
-# End Source File
-# Begin Source File
-
-SOURCE=.\LoadBalancing\LB_IORInterceptor.h
-# End Source File
-# Begin Source File
-
-SOURCE=.\LoadBalancing\LB_LeastLoaded.h
-# End Source File
-# Begin Source File
-
-SOURCE=.\LoadBalancing\LB_LoadAlert.h
-# End Source File
-# Begin Source File
-
-SOURCE=.\LoadBalancing\LB_LoadAlert_Factory.h
-# End Source File
-# Begin Source File
-
-SOURCE=.\LoadBalancing\LB_LoadAlert_Handler.h
-# End Source File
-# Begin Source File
-
-SOURCE=.\LoadBalancing\LB_LoadAlert_ReplyHandler.h
-# End Source File
-# Begin Source File
-
-SOURCE=.\LoadBalancing\LB_LoadAlertInfo.h
-# End Source File
-# Begin Source File
-
-SOURCE=.\LoadBalancing\LB_LoadAlertMap.h
-# End Source File
-# Begin Source File
-
-SOURCE=.\LoadBalancing\LB_LoadListMap.h
-# End Source File
-# Begin Source File
-
-SOURCE=.\LoadBalancing\LB_LoadManager.h
-# End Source File
-# Begin Source File
-
-SOURCE=.\LoadBalancing\LB_LoadMap.h
-# End Source File
-# Begin Source File
-
-SOURCE=.\LoadBalancing\LB_Location_Index_Map.h
-# End Source File
-# Begin Source File
-
-SOURCE=.\LoadBalancing\LB_MemberLocator.h
-# End Source File
-# Begin Source File
-
-SOURCE=.\LoadBalancing\LB_MonitorMap.h
-# End Source File
-# Begin Source File
-
-SOURCE=.\LoadBalancing\LB_ObjectReferenceFactory.h
-# End Source File
-# Begin Source File
-
-SOURCE=.\LoadBalancing\LB_ORBInitializer.h
-# End Source File
-# Begin Source File
-
-SOURCE=.\LoadBalancing\LB_Pull_Handler.h
-# End Source File
-# Begin Source File
-
-SOURCE=.\LoadBalancing\LB_Random.h
-# End Source File
-# Begin Source File
-
-SOURCE=.\LoadBalancing\LB_RoundRobin.h
-# End Source File
-# Begin Source File
-
-SOURCE=.\LoadBalancing\LB_ServerRequestInterceptor.h
-# End Source File
-# End Group
-# Begin Group "Source Files"
-
-# PROP Default_Filter "cpp"
-# Begin Source File
-
-SOURCE=.\CosLoadBalancingC.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=.\CosLoadBalancingS.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=.\LoadBalancing\LB_ClientRequestInterceptor.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=.\LoadBalancing\LB_Component.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=.\LoadBalancing\LB_CPU_Monitor.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=.\LoadBalancing\LB_IORInterceptor.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=.\LoadBalancing\LB_LeastLoaded.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=.\LoadBalancing\LB_LoadAlert.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=.\LoadBalancing\LB_LoadAlert_Handler.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=.\LoadBalancing\LB_LoadAlertInfo.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=.\LoadBalancing\LB_LoadAlertMap.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=.\LoadBalancing\LB_LoadListMap.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=.\LoadBalancing\LB_LoadManager.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=.\LoadBalancing\LB_LoadMap.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=.\LoadBalancing\LB_Location_Index_Map.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=.\LoadBalancing\LB_MemberLocator.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=.\LoadBalancing\LB_MonitorMap.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=.\LoadBalancing\LB_ObjectReferenceFactory.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=.\LoadBalancing\LB_ORBInitializer.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=.\LoadBalancing\LB_Pull_Handler.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=.\LoadBalancing\LB_Random.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=.\LoadBalancing\LB_RoundRobin.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=.\LoadBalancing\LB_ServerRequestInterceptor.cpp
-# End Source File
-# End Group
-# End Target
-# End Project
diff --git a/TAO/orbsvcs/orbsvcs/DsLogAdmin.dsp b/TAO/orbsvcs/orbsvcs/DsLogAdmin.dsp deleted file mode 100644 index 56a4a2acf17..00000000000 --- a/TAO/orbsvcs/orbsvcs/DsLogAdmin.dsp +++ /dev/null @@ -1,536 +0,0 @@ -# Microsoft Developer Studio Project File - Name="DsLogAdmin" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102
-
-CFG=DsLogAdmin - Win32 MFC Debug
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE use the Export Makefile command and run
-!MESSAGE
-!MESSAGE NMAKE /f "DsLogAdmin.mak".
-!MESSAGE
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE
-!MESSAGE NMAKE /f "DsLogAdmin.mak" CFG="DsLogAdmin - Win32 MFC Debug"
-!MESSAGE
-!MESSAGE Possible choices for configuration are:
-!MESSAGE
-!MESSAGE "DsLogAdmin - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library")
-!MESSAGE "DsLogAdmin - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library")
-!MESSAGE "DsLogAdmin - Win32 MFC Debug" (based on "Win32 (x86) Dynamic-Link Library")
-!MESSAGE "DsLogAdmin - Win32 MFC Release" (based on "Win32 (x86) Dynamic-Link Library")
-!MESSAGE
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-CPP=cl.exe
-MTL=midl.exe
-RSC=rc.exe
-
-!IF "$(CFG)" == "DsLogAdmin - Win32 Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release"
-# PROP BASE Intermediate_Dir "Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir ""
-# PROP Intermediate_Dir "DLL\Release\DsLogAdmin"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "DsLogAdmin_EXPORTS" /YX /FD /c
-# ADD CPP /nologo /MD /W3 /GX /O2 /I "../" /I "../../" /I "../../../" /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "TAO_LOG_BUILD_DLL" /FD /c
-# SUBTRACT CPP /YX
-# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32
-# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /machine:I386
-# ADD LINK32 TAO_ETCL.lib TAO_Svc_Utils.lib ace.lib TAO.lib TAO_PortableServer.lib /nologo /dll /machine:I386 /out:"..\..\..\bin\TAO_DsLogAdmin.dll" /libpath:"..\..\tao\PortableServer" /libpath:"..\..\tao" /libpath:"..\..\..\ace"
-
-!ELSEIF "$(CFG)" == "DsLogAdmin - Win32 Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug"
-# PROP BASE Intermediate_Dir "Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir ""
-# PROP Intermediate_Dir "DLL\Debug\DsLogAdmin"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "DsLogAdmin_EXPORTS" /YX /FD /c
-# ADD CPP /nologo /MDd /W3 /Gm /GX /Zi /Od /I "../" /I "../../" /I "../../../" /D "_DEBUG" /D "_MBCS" /D "_USRDLL" /D "TAO_ORBSVCS_HAS_NAMING" /D "WIN32" /D "_WINDOWS" /D "TAO_LOG_BUILD_DLL" /FR /FD /c
-# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32
-# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /debug /machine:I386 /pdbtype:sept
-# ADD LINK32 TAO_ETCLd.lib TAO_DynamicAnyd.lib TAO_Svc_Utilsd.lib TAO_PortableServerd.lib TAOd.lib aced.lib /nologo /dll /debug /machine:I386 /out:"..\..\..\bin\TAO_DsLogAdmind.dll" /pdbtype:sept /libpath:"..\..\tao\DynamicAny" /libpath:"..\..\tao\PortableServer" /libpath:"..\..\tao" /libpath:"..\..\..\ace" /libpath:".\ETCL"
-# SUBTRACT LINK32 /pdb:none
-
-!ELSEIF "$(CFG)" == "DsLogAdmin - Win32 MFC Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "DsLogAdmin___Win32_MFC_Debug"
-# PROP BASE Intermediate_Dir "DsLogAdmin___Win32_MFC_Debug"
-# PROP BASE Ignore_Export_Lib 0
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir ""
-# PROP Intermediate_Dir "DLL\Debug\DsLogAdminMFC"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MDd /W3 /Gm /GX /Zi /Od /I "../" /I "../../" /I "../../../" /D "_DEBUG" /D "_MBCS" /D "_USRDLL" /D "TAO_ORBSVCS_HAS_NAMING" /D "WIN32" /D "_WINDOWS" /D "TAO_LOG_BUILD_DLL" /FD /c
-# SUBTRACT BASE CPP /YX
-# ADD CPP /nologo /MDd /W3 /Gm /GX /Zi /Od /I "../" /I "../../" /I "../../../" /D "_DEBUG" /D "_MBCS" /D "_USRDLL" /D "TAO_ORBSVCS_HAS_NAMING" /D "WIN32" /D "_WINDOWS" /D "TAO_LOG_BUILD_DLL" /D ACE_HAS_MFC=1 /FD /c
-# SUBTRACT CPP /YX
-# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32
-# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 TAOd.lib aced.lib TAO_CosTradingd.lib TAO_Svc_Utilsd.lib /nologo /dll /debug /machine:I386 /out:"..\..\..\bin\TAO_DsLogAdmind.dll" /pdbtype:sept /libpath:"..\..\tao" /libpath:"..\..\..\ace"
-# SUBTRACT BASE LINK32 /profile
-# ADD LINK32 TAOmfcd.lib acemfcd.lib TAO_CosTradingmfcd.lib TAO_Svc_Utilsmfcd.lib TAO_PortableServermfcd.lib /nologo /dll /debug /machine:I386 /out:"..\..\..\bin\TAO_DsLogAdminmfcd.dll" /pdbtype:sept /libpath:"..\..\tao\PortableServer" /libpath:"..\..\tao" /libpath:"..\..\..\ace"
-# SUBTRACT LINK32 /profile
-
-!ELSEIF "$(CFG)" == "DsLogAdmin - Win32 MFC Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "DsLogAdmin___Win32_MFC_Release"
-# PROP BASE Intermediate_Dir "DsLogAdmin___Win32_MFC_Release"
-# PROP BASE Ignore_Export_Lib 0
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir ""
-# PROP Intermediate_Dir "DLL\Release\DsLogAdminMFC"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MD /W3 /GX /O2 /I "../" /I "../../" /I "../../../" /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "TAO_LOG_BUILD_DLL" /FD /c
-# SUBTRACT BASE CPP /YX
-# ADD CPP /nologo /MD /W3 /GX /O2 /I "../" /I "../../" /I "../../../" /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "TAO_LOG_BUILD_DLL" /D ACE_HAS_MFC=1 /FD /c
-# SUBTRACT CPP /YX
-# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32
-# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 ace.lib TAO.lib TAO_CosTrading.lib TAO_Svc_Utils.lib /nologo /dll /machine:I386 /out:"..\..\..\bin\TAO_DsLogAdmin.dll" /libpath:"..\..\tao" /libpath:"..\..\..\ace"
-# ADD LINK32 acemfc.lib TAOmfc.lib TAO_CosTradingmfc.lib TAO_Svc_Utilsmfc.lib TAO_PortableServermfc.lib /nologo /dll /machine:I386 /out:"..\..\..\bin\TAO_DsLogAdminmfc.dll" /libpath:"..\..\tao\PortableServer" /libpath:"..\..\tao" /libpath:"..\..\..\ace"
-
-!ENDIF
-
-# Begin Target
-
-# Name "DsLogAdmin - Win32 Release"
-# Name "DsLogAdmin - Win32 Debug"
-# Name "DsLogAdmin - Win32 MFC Debug"
-# Name "DsLogAdmin - Win32 MFC Release"
-# Begin Group "Source Files"
-
-# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
-# Begin Source File
-
-SOURCE=.\Log\BasicLog_i.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=.\Log\BasicLogFactory_i.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=.\DsLogAdminC.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=.\DsLogAdminS.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=.\DsLogNotificationC.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=.\DsLogNotificationS.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=.\Log\Iterator_i.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=.\Log\Log_Constraint_Interpreter.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=.\Log\Log_Constraint_Visitors.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=.\Log\Log_i.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=.\Log\LogMgr_i.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=.\Log\LogNotification.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=.\Log\LogRecordStore.cpp
-# End Source File
-# End Group
-# Begin Group "Header Files"
-
-# PROP Default_Filter "h;hpp;hxx;hm;inl"
-# Begin Source File
-
-SOURCE=.\Log\BasicLog_i.h
-# End Source File
-# Begin Source File
-
-SOURCE=.\Log\BasicLogFactory_i.h
-# End Source File
-# Begin Source File
-
-SOURCE=.\DsLogAdminC.h
-# End Source File
-# Begin Source File
-
-SOURCE=.\DsLogAdminS.h
-# End Source File
-# Begin Source File
-
-SOURCE=.\DsLogAdminS_T.h
-# End Source File
-# Begin Source File
-
-SOURCE=.\DsLogNotificationC.h
-# End Source File
-# Begin Source File
-
-SOURCE=.\DsLogNotificationS.h
-# End Source File
-# Begin Source File
-
-SOURCE=.\DsLogNotificationS_T.h
-# End Source File
-# Begin Source File
-
-SOURCE=.\Log\Iterator_i.h
-# End Source File
-# Begin Source File
-
-SOURCE=.\Log\Log_Constraint_Interpreter.h
-# End Source File
-# Begin Source File
-
-SOURCE=.\Log\Log_Constraint_Visitors.h
-# End Source File
-# Begin Source File
-
-SOURCE=.\Log\log_export.h
-# End Source File
-# Begin Source File
-
-SOURCE=.\Log\Log_i.h
-# End Source File
-# Begin Source File
-
-SOURCE=.\Log\LogMgr_i.h
-# End Source File
-# Begin Source File
-
-SOURCE=.\Log\LogNotification.h
-# End Source File
-# Begin Source File
-
-SOURCE=.\Log\LogRecordStore.h
-# End Source File
-# End Group
-# Begin Group "IDL Files"
-
-# PROP Default_Filter ".idl"
-# Begin Source File
-
-SOURCE=.\DsLogAdmin.idl
-
-!IF "$(CFG)" == "DsLogAdmin - Win32 Release"
-
-# PROP Ignore_Default_Tool 1
-USERDEP__DSLOG="..\..\..\bin\Release\tao_idl.exe"
-# Begin Custom Build - Invoking TAO_IDL Compiler on $(InputName)
-InputPath=.\DsLogAdmin.idl
-InputName=DsLogAdmin
-
-BuildCmds= \
- ..\..\..\bin\Release\tao_idl -Ge 1 -I../.. -Wb,pre_include=ace/pre.h -Wb,post_include=ace/post.h -Wb,export_macro=TAO_Log_Export -Wb,export_include=Log\log_export.h $(InputName).idl
-
-"$(InputName)C.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-"$(InputName)C.i" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-"$(InputName)C.cpp" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-"$(InputName)S.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-"$(InputName)S.i" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-"$(InputName)S.cpp" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-"$(InputName)S_T.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-"$(InputName)S_T.i" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-"$(InputName)S_T.cpp" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-# End Custom Build
-
-!ELSEIF "$(CFG)" == "DsLogAdmin - Win32 Debug"
-
-# PROP Ignore_Default_Tool 1
-USERDEP__DSLOG="..\..\..\bin\tao_idl.exe"
-# Begin Custom Build - Invoking TAO_IDL Compiler on $(InputName)
-InputPath=.\DsLogAdmin.idl
-InputName=DsLogAdmin
-
-BuildCmds= \
- ..\..\..\bin\tao_idl -Ge 1 -I../.. -Wb,pre_include=ace/pre.h -Wb,post_include=ace/post.h -Wb,export_macro=TAO_Log_Export -Wb,export_include=Log\log_export.h $(InputName).idl
-
-"$(InputName)C.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-"$(InputName)C.i" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-"$(InputName)C.cpp" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-"$(InputName)S.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-"$(InputName)S.i" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-"$(InputName)S.cpp" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-"$(InputName)S_T.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-"$(InputName)S_T.i" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-"$(InputName)S_T.cpp" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-# End Custom Build
-
-!ELSEIF "$(CFG)" == "DsLogAdmin - Win32 MFC Debug"
-
-# PROP BASE Ignore_Default_Tool 1
-# PROP Ignore_Default_Tool 1
-
-!ELSEIF "$(CFG)" == "DsLogAdmin - Win32 MFC Release"
-
-# PROP BASE Ignore_Default_Tool 1
-# PROP Ignore_Default_Tool 1
-
-!ENDIF
-
-# End Source File
-# Begin Source File
-
-SOURCE=.\DsLogNotification.idl
-
-!IF "$(CFG)" == "DsLogAdmin - Win32 Release"
-
-# PROP Ignore_Default_Tool 1
-# Begin Custom Build - Invoking TAO_IDL Compiler on $(InputName)
-InputPath=.\DsLogNotification.idl
-InputName=DsLogNotification
-
-BuildCmds= \
- ..\..\..\bin\Release\tao_idl -Ge 1 -I../.. -Wb,pre_include=ace/pre.h -Wb,post_include=ace/post.h -Wb,export_macro=TAO_Log_Export -Wb,export_include=Log\log_export.h $(InputName).idl
-
-"$(InputName)C.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-"$(InputName)C.i" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-"$(InputName)C.cpp" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-"$(InputName)S.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-"$(InputName)S.i" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-"$(InputName)S.cpp" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-"$(InputName)S_T.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-"$(InputName)S_T.i" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-"$(InputName)S_T.cpp" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-# End Custom Build
-
-!ELSEIF "$(CFG)" == "DsLogAdmin - Win32 Debug"
-
-# PROP Ignore_Default_Tool 1
-# Begin Custom Build - Invoking TAO_IDL Compiler on $(InputName)
-InputPath=.\DsLogNotification.idl
-InputName=DsLogNotification
-
-BuildCmds= \
- ..\..\..\bin\tao_idl -Ge 1 -I../.. -Wb,pre_include=ace/pre.h -Wb,post_include=ace/post.h -Wb,export_macro=TAO_Log_Export -Wb,export_include=Log\log_export.h $(InputName).idl
-
-"$(InputName)C.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-"$(InputName)C.i" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-"$(InputName)C.cpp" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-"$(InputName)S.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-"$(InputName)S.i" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-"$(InputName)S.cpp" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-"$(InputName)S_T.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-"$(InputName)S_T.i" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-"$(InputName)S_T.cpp" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-# End Custom Build
-
-!ELSEIF "$(CFG)" == "DsLogAdmin - Win32 MFC Debug"
-
-!ELSEIF "$(CFG)" == "DsLogAdmin - Win32 MFC Release"
-
-!ENDIF
-
-# End Source File
-# End Group
-# Begin Group "Inline Files"
-
-# PROP Default_Filter ".i"
-# Begin Source File
-
-SOURCE=.\DsLogAdminC.i
-# End Source File
-# Begin Source File
-
-SOURCE=.\DsLogAdminS.i
-# End Source File
-# Begin Source File
-
-SOURCE=.\DsLogAdminS_T.i
-# End Source File
-# Begin Source File
-
-SOURCE=.\DsLogNotificationC.i
-# End Source File
-# Begin Source File
-
-SOURCE=.\DsLogNotificationS.i
-# End Source File
-# Begin Source File
-
-SOURCE=.\DsLogNotificationS_T.i
-# End Source File
-# End Group
-# Begin Group "Template Files"
-
-# PROP Default_Filter ""
-# Begin Source File
-
-SOURCE=.\DsLogAdminS_T.cpp
-
-!IF "$(CFG)" == "DsLogAdmin - Win32 Release"
-
-# PROP Exclude_From_Build 1
-
-!ELSEIF "$(CFG)" == "DsLogAdmin - Win32 Debug"
-
-# PROP Exclude_From_Build 1
-
-!ELSEIF "$(CFG)" == "DsLogAdmin - Win32 MFC Debug"
-
-# PROP BASE Exclude_From_Build 1
-# PROP Exclude_From_Build 1
-
-!ELSEIF "$(CFG)" == "DsLogAdmin - Win32 MFC Release"
-
-# PROP BASE Exclude_From_Build 1
-# PROP Exclude_From_Build 1
-
-!ENDIF
-
-# End Source File
-# Begin Source File
-
-SOURCE=.\DsLogNotificationS_T.cpp
-# End Source File
-# End Group
-# Begin Group "Resource Files"
-
-# PROP Default_Filter "rc"
-# Begin Source File
-
-SOURCE=.\DsLogAdmin.rc
-# End Source File
-# End Group
-# End Target
-# End Project
diff --git a/TAO/orbsvcs/orbsvcs/LoadBalancing/LB_Component.cpp b/TAO/orbsvcs/orbsvcs/LoadBalancing/LB_Component.cpp deleted file mode 100644 index 0e3bc923079..00000000000 --- a/TAO/orbsvcs/orbsvcs/LoadBalancing/LB_Component.cpp +++ /dev/null @@ -1,141 +0,0 @@ -#include "LB_Component.h" -#include "LB_ORBInitializer.h" - - -ACE_RCSID (LoadBalancing, - LB_Component, - "$Id$") - - -int -TAO_LB_Component::init (int argc, ACE_TCHAR * argv[]) -{ - // There must be at least six arguments. - if (argc < 6) - return -1; - - // Try to optimize sequence growth by growing it once. - const CORBA::ULong initial_len = argc / 6; // -LBGroup group - // -LBTypeId type_id - // -LBLocation location - - CORBA::StringSeq object_groups (initial_len); - object_groups.length (initial_len); - - CORBA::StringSeq repository_ids (initial_len); - repository_ids.length (initial_len); - - CORBA::String_var location; - - CORBA::ULong len = 0; - - for (int i = 0; i < argc; ++i) - { - if (ACE_OS::strcasecmp (argv[i], "-LBGroup") == 0) - { - const CORBA::ULong j = len; - ++len; - - ++i; // 1 - - object_groups.length (len); - object_groups[j] = CORBA::string_dup (argv[i]); - - ++i; // 2 - - if (ACE_OS::strcasecmp (argv[i], "-LBTypeId") != 0) - return -1; - - ++i; // 3 - - repository_ids.length (len); - repository_ids[j] = CORBA::string_dup (argv[i]); - } - else if (ACE_OS::strcasecmp (argv[i], "-LBTypeId") == 0) - { - const CORBA::ULong j = len; - ++len; - - ++i; // 1 - - repository_ids.length (len); - repository_ids[j] = CORBA::string_dup (argv[i]); - - ++i; // 2 - - if (ACE_OS::strcasecmp (argv[i], "-LBGroup") != 0) - return -1; - - ++i; // 3 - - object_groups.length (len); - object_groups[j] = CORBA::string_dup (argv[i]); - } - else if (ACE_OS::strcasecmp (argv[i], "-LBLocation") == 0) - { - ++i; - location = CORBA::string_dup (argv[i]); - } - } - - return this->register_orb_initializer (object_groups, - repository_ids, - location.in ()); -} - -int -TAO_LB_Component::fini (void) -{ - return 0; -} - -int -TAO_LB_Component::register_orb_initializer ( - const CORBA::StringSeq & object_groups, - const CORBA::StringSeq & repository_ids, - const char * location) -{ - ACE_DECLARE_NEW_CORBA_ENV; - ACE_TRY - { - // Register the LB_Component ORB initializer. - PortableInterceptor::ORBInitializer_ptr tmp; - ACE_NEW_THROW_EX (tmp, - TAO_LB_ORBInitializer (object_groups, - repository_ids, - location), - CORBA::NO_MEMORY ( - CORBA::SystemException::_tao_minor_code ( - TAO_DEFAULT_MINOR_CODE, - ENOMEM), - CORBA::COMPLETED_NO)); - ACE_TRY_CHECK; - - PortableInterceptor::ORBInitializer_var initializer = tmp; - - PortableInterceptor::register_orb_initializer (initializer.in () - ACE_ENV_ARG_PARAMETER); - ACE_TRY_CHECK; - } - ACE_CATCHANY - { - ACE_PRINT_EXCEPTION (ACE_ANY_EXCEPTION, - "Unable to register LB_Component ORB " - "initializer."); - return -1; - } - ACE_ENDTRY; - - return 0; -} - - -ACE_STATIC_SVC_DEFINE (TAO_LB_Component, - ACE_TEXT ("LB_Component"), - ACE_SVC_OBJ_T, - &ACE_SVC_NAME (TAO_LB_Component), - ACE_Service_Type::DELETE_THIS | - ACE_Service_Type::DELETE_OBJ, - 0) - -ACE_FACTORY_DEFINE (TAO_LoadBalancing, TAO_LB_Component) diff --git a/TAO/orbsvcs/orbsvcs/LoadBalancing/LB_Component.h b/TAO/orbsvcs/orbsvcs/LoadBalancing/LB_Component.h deleted file mode 100644 index fba947f2314..00000000000 --- a/TAO/orbsvcs/orbsvcs/LoadBalancing/LB_Component.h +++ /dev/null @@ -1,67 +0,0 @@ -// -*- C++ -*- - -//============================================================================= -/** - * @file LB_Component.h - * - * $Id$ - - * @author Ossama Othman <ossama@uci.edu> - */ -//============================================================================= - -#ifndef TAO_LB_COMPONENT_H -#define TAO_LB_COMPONENT_H - -#include "ace/pre.h" - -#include "orbsvcs/LoadBalancing/LoadBalancing_export.h" - -#if !defined (ACE_LACKS_PRAGMA_ONCE) -# pragma once -#endif /* ACE_LACKS_PRAGMA_ONCE */ - -#include "orbsvcs/LB_ORTC.h" - -#include "ace/Service_Object.h" -#include "ace/Service_Config.h" - -/** - * @class TAO_LB_Component - * - * @brief Service_Object that can be used to add load balancer support - * to a CORBA-base server. - * - * Servers wishing to transparently add load balancing/management - * support load this object via the ACE_Service_Configurator (e.g. by - * listing it in a `svc.conf' file). - */ -class TAO_LoadBalancing_Export TAO_LB_Component - : public ACE_Service_Object -{ -public: - - /// Initializes object when dynamic linking occurs. - virtual int init (int argc, ACE_TCHAR *argv[]); - - /// Terminates object when dynamic unlinking occurs. - virtual int fini (void); - -protected: - - /// Register the LB_Component's ORBInitializer. - int register_orb_initializer (const CORBA::StringSeq & object_groups, - const CORBA::StringSeq & repository_ids, - const char * location); - -}; - - -ACE_STATIC_SVC_DECLARE_EXPORT (TAO_LoadBalancing, TAO_LB_Component) - //ACE_STATIC_SVC_REQUIRE (TAO_LB_Component) -ACE_FACTORY_DECLARE (TAO_LoadBalancing, TAO_LB_Component) - - -#include "ace/post.h" - -#endif /* TAO_LB_COMPONENT_H */ diff --git a/TAO/orbsvcs/orbsvcs/LoadBalancing/LB_IORInterceptor.cpp b/TAO/orbsvcs/orbsvcs/LoadBalancing/LB_IORInterceptor.cpp deleted file mode 100644 index 5c68bdb08a2..00000000000 --- a/TAO/orbsvcs/orbsvcs/LoadBalancing/LB_IORInterceptor.cpp +++ /dev/null @@ -1,185 +0,0 @@ -#include "LB_IORInterceptor.h" -#include "LB_ObjectReferenceFactory.h" -#include "LB_LoadAlert.h" - -#include "tao/debug.h" - - -ACE_RCSID (LoadBalancing, - LB_IORInterceptor, - "$Id$") - - -TAO_LB_IORInterceptor::TAO_LB_IORInterceptor ( - const CORBA::StringSeq & object_groups, - const CORBA::StringSeq & repository_ids, - const char * location, - CosLoadBalancing::LoadManager_ptr lm, - const char * orb_id, - TAO_LB_LoadAlert & /* load_alert */) - : object_groups_ (object_groups), - repository_ids_ (repository_ids), - location_ (location), - lm_ (CosLoadBalancing::LoadManager::_duplicate (lm)), - orb_id_ (CORBA::string_dup (orb_id)) -// , load_alert_ (load_alert) -// , la_ref_ () -// , lock_ () -{ -} - -char * -TAO_LB_IORInterceptor::name (ACE_ENV_SINGLE_ARG_DECL_NOT_USED) - ACE_THROW_SPEC ((CORBA::SystemException)) -{ - return CORBA::string_dup ("TAO_LB_IORInterceptor"); -} - -void -TAO_LB_IORInterceptor::destroy (ACE_ENV_SINGLE_ARG_DECL_NOT_USED) - ACE_THROW_SPEC ((CORBA::SystemException)) -{ - // Force the LoadManager reference to be released since the ORB's - // lifetime is tied to object reference lifetimes. - (void) this->lm_.out (); -} - -void -TAO_LB_IORInterceptor::establish_components ( - PortableInterceptor::IORInfo_ptr - ACE_ENV_ARG_DECL_NOT_USED) - ACE_THROW_SPEC (()) -{ -} - -void -TAO_LB_IORInterceptor::components_established ( - PortableInterceptor::IORInfo_ptr info - ACE_ENV_ARG_DECL) - ACE_THROW_SPEC ((CORBA::SystemException)) -{ - int argc = 0; - CORBA::ORB_var orb = CORBA::ORB_init (argc, - 0, - this->orb_id_.in () - ACE_ENV_ARG_PARAMETER); - ACE_CHECK; - - // Save a copy of the current ObjectReferenceFactory. - PortableInterceptor::ObjectReferenceFactory_var old_orf = - info->current_factory (ACE_ENV_SINGLE_ARG_PARAMETER); - ACE_CHECK; - - PortableInterceptor::ObjectReferenceFactory * tmp; - ACE_NEW_THROW_EX (tmp, - TAO_LB_ObjectReferenceFactory (old_orf.in (), - this->object_groups_, - this->repository_ids_, - this->location_.in (), - orb.in (), - this->lm_.in ()), - CORBA::NO_MEMORY ( - CORBA_SystemException::_tao_minor_code ( - TAO_DEFAULT_MINOR_CODE, - ENOMEM), - CORBA::COMPLETED_NO)); - ACE_CHECK; - - PortableInterceptor::ObjectReferenceFactory_var orf = tmp; - - info->current_factory (orf.in () - ACE_ENV_ARG_PARAMETER); - ACE_CHECK; -} - -void -TAO_LB_IORInterceptor::adapter_manager_state_changed ( - PortableInterceptor::AdapterManagerId, - PortableInterceptor::AdapterState /* state */ - ACE_ENV_ARG_DECL_NOT_USED) - ACE_THROW_SPEC ((CORBA::SystemException)) -{ -// if (state == PortableInterceptor::ACTIVE) -// { -// this->register_load_alert (ACE_ENV_SINGLE_ARG_PARAMETER); -// ACE_CHECK; -// } -} - -void -TAO_LB_IORInterceptor::adapter_state_changed ( - const PortableInterceptor::ObjectReferenceTemplateSeq &, - PortableInterceptor::AdapterState /* state */ - ACE_ENV_ARG_DECL_NOT_USED) - ACE_THROW_SPEC ((CORBA::SystemException)) -{ -// if (state == PortableInterceptor::ACTIVE) -// { -// this->register_load_alert (ACE_ENV_SINGLE_ARG_PARAMETER); -// ACE_CHECK; -// } -} - -void -TAO_LB_IORInterceptor::register_load_alert (ACE_ENV_SINGLE_ARG_DECL_NOT_USED) -{ -// { -// ACE_GUARD (TAO_SYNCH_MUTEX, guard, this->lock_); - -// if (!CORBA::is_nil (this->la_ref_.in ())) -// return; -// } - -// ACE_TRY_EX (foo) -// { -// // By now, the RootPOA has been fully initialized, so it is safe -// // to activate the LoadAlert object. -// CosLoadBalancing::LoadAlert_var la = -// this->load_alert_._this (ACE_ENV_SINGLE_ARG_PARAMETER); -// ACE_TRY_CHECK_EX (foo); - -// { -// ACE_GUARD (TAO_SYNCH_MUTEX, guard, this->lock_); - -// this->la_ref_ = la; -// } - -// } -// ACE_CATCHANY -// { -// ACE_PRINT_EXCEPTION (ACE_ANY_EXCEPTION, -// "LoadAlert::_this()"); -// } -// ACE_ENDTRY; -// ACE_CHECK; - -// ACE_TRY -// { -// PortableGroup::Location location (1); -// location.length (1); -// location[0].id = CORBA::string_dup (this->location_.in ()); - -// this->lm_->register_load_alert (location, -// this->la_ref_.in () -// ACE_ENV_ARG_PARAMETER); -// ACE_TRY_CHECK; -// } -// ACE_CATCH (CosLoadBalancing::LoadAlertAlreadyPresent, ex) -// { -// if (TAO_debug_level > 0) -// ACE_PRINT_EXCEPTION (ex, -// "LoadManager::register_load_alert"); - -// ACE_TRY_THROW (CORBA::BAD_INV_ORDER ()); -// } -// ACE_CATCH (CosLoadBalancing::LoadAlertNotAdded, ex) -// { -// if (TAO_debug_level > 0) -// ACE_PRINT_EXCEPTION (ex, -// "LoadManager::register_load_alert"); - -// ACE_TRY_THROW (CORBA::INTERNAL ()); -// } -// ACE_ENDTRY; -// ACE_CHECK; -} diff --git a/TAO/orbsvcs/orbsvcs/LoadBalancing/LB_LeastLoaded.cpp b/TAO/orbsvcs/orbsvcs/LoadBalancing/LB_LeastLoaded.cpp deleted file mode 100644 index 8a96f967d1b..00000000000 --- a/TAO/orbsvcs/orbsvcs/LoadBalancing/LB_LeastLoaded.cpp +++ /dev/null @@ -1,257 +0,0 @@ -// -*- C++ -*- - -#include "LB_LeastLoaded.h" -#include "LB_LoadMap.h" -#include "orbsvcs/PortableGroup/PG_conf.h" -#include "tao/debug.h" - -ACE_RCSID (LoadBalancing, - LB_LeastLoaded, - "$Id$") - - -#if !defined (__ACE_INLINE__) -#include "LB_LeastLoaded.inl" -#endif /* defined INLINE */ - - -TAO_LB_LeastLoaded::TAO_LB_LeastLoaded (CORBA::Float critical_threshold, - CORBA::Float reject_threshold, - CORBA::Float tolerance, - CORBA::Float dampening, - CORBA::Float per_balance_load) - : load_map_ (0), - lock_ (0), - critical_threshold_ (critical_threshold), - reject_threshold_ (reject_threshold), - tolerance_ (tolerance == 0 ? 1 : tolerance), - dampening_ (dampening), - per_balance_load_ (per_balance_load) -{ - // A load map that retains previous load values at a given location - // and lock are only needed if dampening is enabled, i.e. non-zero. - if (this->dampening_ != 0) - { - ACE_NEW (this->load_map_, TAO_LB_LoadMap (TAO_PG_MAX_LOCATIONS)); - - ACE_NEW (this->lock_, TAO_SYNCH_MUTEX); - } -} - -TAO_LB_LeastLoaded::~TAO_LB_LeastLoaded (void) -{ - delete this->load_map_; - delete this->lock_; -} - -char * -TAO_LB_LeastLoaded::name (ACE_ENV_SINGLE_ARG_DECL_NOT_USED) - ACE_THROW_SPEC ((CORBA::SystemException)) -{ - return CORBA::string_dup ("LeastLoaded"); -} - -CosLoadBalancing::Properties * -TAO_LB_LeastLoaded::get_properties (ACE_ENV_SINGLE_ARG_DECL) - ACE_THROW_SPEC ((CORBA::SystemException)) -{ - CosLoadBalancing::Properties * props = 0; - ACE_NEW_THROW_EX (props, - CosLoadBalancing::Properties, - CORBA::NO_MEMORY ( - CORBA::SystemException::_tao_minor_code ( - TAO_DEFAULT_MINOR_CODE, - ENOMEM), - CORBA::COMPLETED_NO)); - ACE_CHECK_RETURN (props); - - return props; -} - -void -TAO_LB_LeastLoaded::push_loads ( - const PortableGroup::Location & the_location, - const CosLoadBalancing::LoadList & loads - ACE_ENV_ARG_DECL) - ACE_THROW_SPEC ((CORBA::SystemException)) -{ - // Only the first load is used by this load balancing strategy. - if (loads.length () == 0) - ACE_THROW (CORBA::BAD_PARAM ()); - - CosLoadBalancing::Load load; // Unused - - this->push_loads (the_location, - loads, - load - ACE_ENV_ARG_PARAMETER); -} - -void -TAO_LB_LeastLoaded::push_loads ( - const PortableGroup::Location & the_location, - const CosLoadBalancing::LoadList & loads, - CosLoadBalancing::Load & load - ACE_ENV_ARG_DECL) -{ - if (loads.length () == 0) - ACE_THROW (CORBA::BAD_PARAM ()); - - // Only the first load is used by this load balancing strategy. - const CosLoadBalancing::Load & new_load = loads[0]; - - if (this->load_map_ != 0) - { - ACE_GUARD (TAO_SYNCH_MUTEX, guard, *this->lock_); - - TAO_LB_LoadMap::ENTRY * entry; - if (this->load_map_->find (the_location, entry) == 0) - { - CosLoadBalancing::Load & previous_load = entry->int_id_; - - if (previous_load.id != new_load.id) - ACE_THROW (CORBA::BAD_PARAM ()); // Somebody switched - // LoadIds on us! - - previous_load.value = - this->effective_load (previous_load.value, new_load.value); - - load = previous_load; - } - else - { - const CosLoadBalancing::Load eff_load = - { - new_load.id, - this->effective_load (0, new_load.value) - }; - - if (this->load_map_->bind (the_location, eff_load) != 0) - { - if (TAO_debug_level > 0) - ACE_ERROR ((LM_ERROR, - "ERROR: TAO_LB_LeastLoaded - " - "Unable to push loads\n")); - - ACE_THROW (CORBA::INTERNAL ()); - } - - load = eff_load; - } - } - else - { - load.id = new_load.id; - load.value = this->effective_load (0, new_load.value); - } -} - -CORBA::Object_ptr -TAO_LB_LeastLoaded::next_member ( - PortableGroup::ObjectGroup_ptr object_group, - CosLoadBalancing::LoadManager_ptr load_manager - ACE_ENV_ARG_DECL) - ACE_THROW_SPEC ((CORBA::SystemException, - PortableGroup::ObjectGroupNotFound, - PortableGroup::MemberNotFound)) -{ - if (CORBA::is_nil (load_manager)) - ACE_THROW_RETURN (CORBA::BAD_PARAM (), - CORBA::Object::_nil ()); - - PortableGroup::Locations_var locations = - load_manager->locations_of_members (object_group - ACE_ENV_ARG_PARAMETER); - ACE_CHECK_RETURN (CORBA::Object::_nil ()); - - if (locations->length () == 0) - ACE_THROW_RETURN (CORBA::TRANSIENT (), - CORBA::Object::_nil ()); - - // @@ RACE CONDITION. OBJECT GROUP MEMBERSHIP MAY CHANGE AFTER - // RETRIEVING LOCATIONS! HOW DO WE HANDLE THAT? - - PortableGroup::Location location; - CORBA::Boolean found_location = - this->get_location (load_manager, - locations.in (), - location - ACE_ENV_ARG_PARAMETER); - ACE_CHECK_RETURN (CORBA::Object::_nil ()); - - if (found_location) - { - return load_manager->get_member_ref (object_group, - location - ACE_ENV_ARG_PARAMETER); - } - else - { - // This should never occur. - ACE_THROW_RETURN (CORBA::INTERNAL (), - CORBA::Object::_nil ()); - } -} - -CORBA::Boolean -TAO_LB_LeastLoaded::get_location ( - CosLoadBalancing::LoadManager_ptr load_manager, - const PortableGroup::Locations & locations, - PortableGroup::Location & location - ACE_ENV_ARG_DECL) -{ - CORBA::Float min_load = 0; - CORBA::ULong location_index = 0; - CORBA::Boolean found_location = 0; - - const CORBA::ULong len = locations.length (); - - for (CORBA::ULong i = 0; i < len; ++i) - { - const PortableGroup::Location & loc = locations[i]; - - // Retrieve the load list for the location from the LoadManager - // and push it to this Strategy's load processor. - CosLoadBalancing::LoadList_var current_loads = - load_manager->get_loads (loc - ACE_ENV_ARG_PARAMETER); - ACE_CHECK_RETURN (0); - - CosLoadBalancing::Load load; - this->push_loads (loc, - current_loads.in (), - load - ACE_ENV_ARG_PARAMETER); - ACE_CHECK_RETURN (0); - - if (load.value < this->reject_threshold_ - && (i == 0 || load.value < min_load)) - { - min_load = load.value; - location_index = i; - found_location = 1; - } - else if (load.value > this->critical_threshold_) - { - // The location is overloaded. Perform load shedding by - // informing the LoadAlert object associated with the member - // at that location it should redirect client requests back - // to the LoadManager. - load_manager->enable_alert (loc - ACE_ENV_ARG_PARAMETER); - ACE_CHECK_RETURN (0); - } - else if (load.value <= this->critical_threshold_) - { - // The location is not overloaded - load_manager->disable_alert (loc - ACE_ENV_ARG_PARAMETER); - ACE_CHECK_RETURN (0); - } - } - - if (found_location) - location = locations[location_index]; - - return found_location; -} diff --git a/TAO/orbsvcs/orbsvcs/LoadBalancing/LB_LeastLoaded.h b/TAO/orbsvcs/orbsvcs/LoadBalancing/LB_LeastLoaded.h deleted file mode 100644 index 5a078789ccd..00000000000 --- a/TAO/orbsvcs/orbsvcs/LoadBalancing/LB_LeastLoaded.h +++ /dev/null @@ -1,147 +0,0 @@ -// -*- C++ -*- - -//============================================================================= -/** - * @file LB_LeastLoaded.h - * - * $Id$ - * - * @author Ossama Othman <ossama@uci.edu> - */ -//============================================================================= - - -#ifndef LB_LEAST_LOADED_H -#define LB_LEAST_LOADED_H - -#include "ace/pre.h" - -#include "LB_LoadMap.h" - -# if !defined (ACE_LACKS_PRAGMA_ONCE) -# pragma once -# endif /* ACE_LACKS_PRAGMA_ONCE */ - -#include "orbsvcs/CosLoadBalancingC.h" - -#include "ace/Synch.h" - -namespace TAO_LB -{ - /** - * @name Default LeastLoaded strategy parameters. - * - * Defaults defined by the Load Balancing specification. - */ - const CORBA::Float LL_DEFAULT_CRITICAL_THRESHOLD = 0; - const CORBA::Float LL_DEFAULT_REJECT_THRESHOLD = 0; - const CORBA::Float LL_DEFAULT_TOLERANCE = 1; - const CORBA::Float LL_DEFAULT_DAMPENING = 0; - const CORBA::Float LL_DEFAULT_PER_BALANCE_LOAD = 0; -} - -/** - * @class TAO_LB_LeastLoaded - * - * @brief "Least loaded" load balancing strategy - * - * This load balancing strategy is designed to select an object group - * member residing at a location with the smallest load. - */ -class TAO_LB_LeastLoaded - : public virtual CosLoadBalancing::Strategy, - public virtual CORBA::LocalObject -{ -public: - - /// Constructor. - TAO_LB_LeastLoaded ( - CORBA::Float critical_threshold = TAO_LB::LL_DEFAULT_CRITICAL_THRESHOLD, - CORBA::Float reject_threshold = TAO_LB::LL_DEFAULT_REJECT_THRESHOLD, - CORBA::Float tolerance = TAO_LB::LL_DEFAULT_TOLERANCE, - CORBA::Float dampening = TAO_LB::LL_DEFAULT_DAMPENING, - CORBA::Float per_balance_load = TAO_LB::LL_DEFAULT_PER_BALANCE_LOAD); - - /// Destructor. - ~TAO_LB_LeastLoaded (void); - - /** - * @name CosLoadBalancing::Strategy methods - * - * Methods required by the CosLoadBalancing::Strategy interface. - */ - //@{ - virtual char * name (ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS) - ACE_THROW_SPEC ((CORBA::SystemException)); - - virtual CosLoadBalancing::Properties * get_properties ( - ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS) - ACE_THROW_SPEC ((CORBA::SystemException)); - - virtual void push_loads ( - const PortableGroup::Location & the_location, - const CosLoadBalancing::LoadList & loads - ACE_ENV_ARG_DECL_WITH_DEFAULTS) - ACE_THROW_SPEC ((CORBA::SystemException)); - - virtual CORBA::Object_ptr next_member ( - PortableGroup::ObjectGroup_ptr object_group, - CosLoadBalancing::LoadManager_ptr load_manager - ACE_ENV_ARG_DECL_WITH_DEFAULTS) - ACE_THROW_SPEC ((CORBA::SystemException, - PortableGroup::ObjectGroupNotFound, - PortableGroup::MemberNotFound)); - -// virtual void analyze_loads ( -// PortableGroup::ObjectGroup_ptr object_group, -// CosLoadBalancing::LoadManager_ptr load_manager -// ACE_ENV_ARG_DECL_WITH_DEFAULTS) -// ACE_THROW_SPEC ((CORBA::SystemException)); - //@} - -protected: - - /// Retrieve the least loaded location from the given list of - /// locations. - CORBA::Boolean get_location (CosLoadBalancing::LoadManager_ptr load_manager, - const PortableGroup::Locations & locations, - PortableGroup::Location & location - ACE_ENV_ARG_DECL); - - /// Return the effective load. - CORBA::Float effective_load (CORBA::Float previous_load, - CORBA::Float new_load); - - /// Push the new load into this Strategy's load processor, and - /// return the corresponding effective load. - void push_loads ( - const PortableGroup::Location & the_location, - const CosLoadBalancing::LoadList & loads, - CosLoadBalancing::Load & effective_load - ACE_ENV_ARG_DECL); - -private: - - /// Table that maps location to load list. - TAO_LB_LoadMap * load_map_; - - /// Lock used to ensure atomic access to state retained by this - /// class. - TAO_SYNCH_MUTEX * lock_; - - CORBA::Float critical_threshold_; - CORBA::Float reject_threshold_; - CORBA::Float tolerance_; - CORBA::Float dampening_; - CORBA::Float per_balance_load_; - -}; - - -#if defined (__ACE_INLINE__) -#include "LB_LeastLoaded.inl" -#endif /* defined INLINE */ - -#include "ace/post.h" - -#endif /* LB_LEAST_LOADED_H */ diff --git a/TAO/orbsvcs/orbsvcs/LoadBalancing/LB_LoadManager.cpp b/TAO/orbsvcs/orbsvcs/LoadBalancing/LB_LoadManager.cpp deleted file mode 100644 index 308b1d392ec..00000000000 --- a/TAO/orbsvcs/orbsvcs/LoadBalancing/LB_LoadManager.cpp +++ /dev/null @@ -1,1147 +0,0 @@ -#include "LB_LoadManager.h" -#include "LB_MemberLocator.h" -#include "LB_LoadAlert_Handler.h" -#include "LB_RoundRobin.h" -#include "LB_Random.h" -#include "LB_LeastLoaded.h" -#include "LB_conf.h" - -#include "orbsvcs/PortableGroup/PG_Property_Utils.h" -#include "orbsvcs/PortableGroup/PG_conf.h" - -#include "tao/Messaging/Messaging.h" - -#include "tao/debug.h" - -ACE_RCSID (LoadBalancing, - LB_LoadManager, - "$Id$") - - -TAO_LB_LoadManager::TAO_LB_LoadManager (void) - : reactor_ (0), - poa_ (), - monitor_lock_ (), - load_lock_ (), - load_alert_lock_ (), - lock_ (), - monitor_map_ (TAO_PG_MAX_LOCATIONS), - load_map_ (TAO_PG_MAX_LOCATIONS), - load_alert_map_ (TAO_PG_MAX_LOCATIONS), - object_group_manager_ (), - property_manager_ (object_group_manager_), - generic_factory_ (object_group_manager_, property_manager_), - pull_handler_ (), - timer_id_ (-1), - lm_ref_ (), - round_robin_ (0), - random_ (0), - least_loaded_ (0), - built_in_balancing_strategy_name_ (1), - custom_balancing_strategy_name_ (1) -{ - this->pull_handler_.initialize (&this->monitor_map_, this); - - // @note "this->init()" is not called here (in the constructor) - // since it may thrown an exception. Throwing an exception in - // a constructor in an emulated exception environment is - // problematic since native exception semantics cannot be - // reproduced in such a case. As such, init() must be called - // by whatever code instantiates this LoadManager. -} - -TAO_LB_LoadManager::~TAO_LB_LoadManager (void) -{ - delete this->round_robin_; - delete this->random_; - delete this->least_loaded_; -} - -void -TAO_LB_LoadManager::push_loads ( - const PortableGroup::Location & the_location, - const CosLoadBalancing::LoadList & loads - ACE_ENV_ARG_DECL) - ACE_THROW_SPEC ((CORBA::SystemException)) -{ - if (loads.length () == 0) - ACE_THROW (CORBA::BAD_PARAM ()); - - ACE_GUARD (TAO_SYNCH_MUTEX, - guard, - this->load_lock_); - - if (this->load_map_.rebind (the_location, loads) == -1) - ACE_THROW (CORBA::INTERNAL ()); -} - -CosLoadBalancing::LoadList * -TAO_LB_LoadManager::get_loads (const PortableGroup::Location & the_location - ACE_ENV_ARG_DECL) - ACE_THROW_SPEC ((CORBA::SystemException, - CosLoadBalancing::LocationNotFound)) -{ - CosLoadBalancing::LoadList * tmp; - ACE_NEW_THROW_EX (tmp, - CosLoadBalancing::LoadList, - CORBA::NO_MEMORY ( - CORBA::SystemException::_tao_minor_code ( - TAO_DEFAULT_MINOR_CODE, - ENOMEM), - CORBA::COMPLETED_NO)); - ACE_CHECK_RETURN (0); - - CosLoadBalancing::LoadList_var loads = tmp; - - ACE_GUARD_RETURN (TAO_SYNCH_MUTEX, - guard, - this->load_lock_, - 0); - - if (this->load_map_.find (the_location, *tmp) == 0) - return loads._retn (); - else - ACE_THROW_RETURN (CosLoadBalancing::LocationNotFound (), 0); -} - -void -TAO_LB_LoadManager::enable_alert (const PortableGroup::Location & the_location - ACE_ENV_ARG_DECL) - ACE_THROW_SPEC ((CosLoadBalancing::LoadAlertNotFound)) -{ - ACE_GUARD (TAO_SYNCH_MUTEX, guard, this->load_alert_lock_); - - TAO_LB_LoadAlertMap::ENTRY * entry; - if (this->load_alert_map_.find (the_location, entry) == 0) - { - TAO_LB_LoadAlertInfo & info = entry->int_id_; - - // @note This could be problematic if the LoadAlert object is - // registered with more than LoadManager. - if (info.alerted == 1) - return; // No need to set the alert status. It has already - // been set. - - // Duplicate before releasing the LoadAlertMap lock to prevent a - // race condition from occuring. The LoadAlertInfo map may be - // altered prior to invoking an operation on the LoadAlert - // object. - CosLoadBalancing::LoadAlert_var load_alert = - CosLoadBalancing::LoadAlert::_duplicate (info.load_alert.in ()); - - // The alert condition will be enabled. - // @note There is a subtle problem here. If the below - // remote invocation fails, this variable will be - // incorrectly set to "true." - info.alerted = 1; - - // Release the lock prior to making the below remote invocation. - ACE_Reverse_Lock<TAO_SYNCH_MUTEX> reverse_lock (this->load_alert_lock_); - ACE_GUARD (ACE_Reverse_Lock<TAO_SYNCH_MUTEX>, - reverse_guard, - reverse_lock); - - // Use AMI to make the following operation - // "non-blocking," allowing the caller to continue - // without being forced to wait for a response. - // - // AMI is used to improve member selection times and overall - // throughput since the LoadAlert object need not be alerted - // synchronously. In particular, the load alert can and - // should be performed in parallel to other tasks, such as - // member selection. - load_alert->sendc_enable_alert (this->load_alert_handler_.in () - ACE_ENV_ARG_PARAMETER); - ACE_CHECK; - } - else - ACE_THROW (CosLoadBalancing::LoadAlertNotFound ()); -} - -void -TAO_LB_LoadManager::disable_alert (const PortableGroup::Location & the_location - ACE_ENV_ARG_DECL) - ACE_THROW_SPEC ((CosLoadBalancing::LoadAlertNotFound)) -{ - ACE_GUARD (TAO_SYNCH_MUTEX, guard, this->load_alert_lock_); - - TAO_LB_LoadAlertMap::ENTRY * entry; - if (this->load_alert_map_.find (the_location, entry) == 0) - { - TAO_LB_LoadAlertInfo & info = entry->int_id_; - - // @note This could be problematic if the LoadAlert object is - // registered with more than LoadManager. - if (info.alerted == 0) - return; // No need to set the alert status. It has already - // been set. - - // Duplicate before releasing the LoadAlertMap lock to prevent a - // race condition from occuring. The LoadAlertInfo map may be - // altered prior to invoking an operation on the LoadAlert - // object. - CosLoadBalancing::LoadAlert_var load_alert = - CosLoadBalancing::LoadAlert::_duplicate (info.load_alert.in ()); - - // The alert condition will be disabled. - // @note There is a subtle problem here. If the below - // remote invocation fails, this variable will be - // incorrectly set to "false." - info.alerted = 0; - - // Release the lock prior to making the below remote invocation. - ACE_Reverse_Lock<TAO_SYNCH_MUTEX> reverse_lock (this->load_alert_lock_); - ACE_GUARD (ACE_Reverse_Lock<TAO_SYNCH_MUTEX>, - reverse_guard, - reverse_lock); - - // Use AMI to make the following operation - // "non-blocking," allowing the caller to continue - // without being forced to wait for a response. - // - // AMI is used to improve member selection times and overall - // throughput since the LoadAlert object need not be alerted - // synchronously. In particular, the load alert can and - // should be performed in parallel to other tasks, such as - // member selection. - load_alert->sendc_disable_alert (this->load_alert_handler_.in () - ACE_ENV_ARG_PARAMETER); - ACE_CHECK; - } - else - ACE_THROW (CosLoadBalancing::LoadAlertNotFound ()); -} - -void -TAO_LB_LoadManager::register_load_alert ( - const PortableGroup::Location & the_location, - CosLoadBalancing::LoadAlert_ptr load_alert - ACE_ENV_ARG_DECL) - ACE_THROW_SPEC ((CORBA::SystemException, - CosLoadBalancing::LoadAlertAlreadyPresent, - CosLoadBalancing::LoadAlertNotAdded)) -{ - if (CORBA::is_nil (load_alert)) - ACE_THROW (CORBA::BAD_PARAM ()); - - ACE_GUARD (TAO_SYNCH_MUTEX, guard, this->load_alert_lock_); - - TAO_LB_LoadAlertInfo info; - info.load_alert = CosLoadBalancing::LoadAlert::_duplicate (load_alert); - - int result = this->load_alert_map_.bind (the_location, info); - - if (result == 1) - { - ACE_THROW (CosLoadBalancing::LoadAlertAlreadyPresent ()); - } - else if (result == -1) - { - // Problems dude! - ACE_THROW (CosLoadBalancing::LoadAlertNotAdded ()); - } -} - -CosLoadBalancing::LoadAlert_ptr -TAO_LB_LoadManager::get_load_alert ( - const PortableGroup::Location & the_location - ACE_ENV_ARG_DECL) - ACE_THROW_SPEC ((CORBA::SystemException, - CosLoadBalancing::LoadAlertNotFound)) -{ - ACE_GUARD_RETURN (TAO_SYNCH_MUTEX, - guard, - this->load_alert_lock_, - CosLoadBalancing::LoadAlert::_nil ()); - - TAO_LB_LoadAlertMap::ENTRY * entry; - if (this->load_alert_map_.find (the_location, entry) == 0) - { - TAO_LB_LoadAlertInfo & info = entry->int_id_; - - return - CosLoadBalancing::LoadAlert::_duplicate (info.load_alert.in ()); - } - else - { - ACE_THROW_RETURN (CosLoadBalancing::LoadAlertNotFound (), - CosLoadBalancing::LoadAlert::_nil ()); - } -} - -void -TAO_LB_LoadManager::remove_load_alert ( - const PortableGroup::Location & the_location - ACE_ENV_ARG_DECL) - ACE_THROW_SPEC ((CORBA::SystemException, - CosLoadBalancing::LoadAlertNotFound)) -{ - // Disable the "alert" status on the LoadAlert object since it will - // no longer be associated with the LoadManager. In particular, - // requests should be allowed through once again since there will be - // no way to control the load shedding mechanism once the LoadAlert - // object is no longer under the control of the LoadManager. - this->disable_alert (the_location - ACE_ENV_ARG_PARAMETER); - ACE_CHECK; - - ACE_GUARD (TAO_SYNCH_MUTEX, guard, this->load_alert_lock_); - - if (this->load_alert_map_.unbind (the_location) != 0) - { - ACE_THROW (CosLoadBalancing::LoadAlertNotFound ()); - } -} - -void -TAO_LB_LoadManager::register_load_monitor ( - CosLoadBalancing::LoadMonitor_ptr load_monitor, - const PortableGroup::Location & the_location - ACE_ENV_ARG_DECL) - ACE_THROW_SPEC ((CORBA::SystemException, - CosLoadBalancing::MonitorAlreadyPresent)) -{ - if (CORBA::is_nil (load_monitor)) - ACE_THROW (CORBA::BAD_PARAM ()); - - const CosLoadBalancing::LoadMonitor_var the_monitor = - CosLoadBalancing::LoadMonitor::_duplicate (load_monitor); - - ACE_GUARD (TAO_SYNCH_MUTEX, - guard, - this->monitor_lock_); - - int result = this->monitor_map_.bind (the_location, the_monitor); - - if (result == 0 - && this->monitor_map_.current_size () == 1) - { - // Register the "pull monitoring" event handler only after the - // first load monitor is registered. This is an optimization to - // prevent unnecessary invocation of the "pull monitoring" event - // handler. - ACE_Time_Value interval (TAO_LB_PULL_HANDLER_INTERVAL, 0); - ACE_Time_Value restart (TAO_LB_PULL_HANDLER_RESTART, 0); - this->timer_id_ = this->reactor_->schedule_timer (&this->pull_handler_, - 0, - interval, - restart); - - if (this->timer_id_ == -1) - { - if (TAO_debug_level > 0) - ACE_ERROR ((LM_ERROR, - "TAO_LB_LoadManager::register_load_monitor: " - "Unable to schedule timer.\n")); - - ACE_THROW (CORBA::INTERNAL ()); - } - } - else if (result == 1) - ACE_THROW (CosLoadBalancing::MonitorAlreadyPresent ()); - else - { - if (TAO_debug_level > 0) - ACE_ERROR ((LM_ERROR, - "TAO_LB_LoadManager::register_load_monitor: " - "Unable to register load monitor.\n")); - - ACE_THROW (CORBA::INTERNAL ()); - } -} - -CosLoadBalancing::LoadMonitor_ptr -TAO_LB_LoadManager::get_load_monitor ( - const PortableGroup::Location & the_location - ACE_ENV_ARG_DECL) - ACE_THROW_SPEC ((CORBA::SystemException, - CosLoadBalancing::LocationNotFound)) -{ - ACE_GUARD_RETURN (TAO_SYNCH_MUTEX, - guard, - this->monitor_lock_, - CosLoadBalancing::LoadMonitor::_nil ()); - - TAO_LB_MonitorMap::ENTRY * entry; - if (this->monitor_map_.find (the_location, entry) == 0) - { - return - CosLoadBalancing::LoadMonitor::_duplicate (entry->int_id_.in ()); - } - - ACE_THROW_RETURN (CosLoadBalancing::LocationNotFound (), - CosLoadBalancing::LoadMonitor::_nil ()); -} - -void -TAO_LB_LoadManager::remove_load_monitor ( - const PortableGroup::Location & the_location - ACE_ENV_ARG_DECL) - ACE_THROW_SPEC ((CORBA::SystemException, - CosLoadBalancing::LocationNotFound)) -{ - ACE_GUARD (TAO_SYNCH_MUTEX, - guard, - this->monitor_lock_); - - if (this->monitor_map_.unbind (the_location) != 0) - ACE_THROW (CosLoadBalancing::LocationNotFound ()); - - // If no load monitors are registered with the load balancer than - // shutdown the "pull monitoring." - if (this->timer_id_ != -1 - && this->monitor_map_.current_size () == 0) - { - if (this->reactor_->cancel_timer (this->timer_id_) == 0) - { - if (TAO_debug_level > 0) - ACE_ERROR ((LM_ERROR, - "TAO_LB_LoadManager::remove_load_monitor: " - "Unable to cancel timer.\n")); - - ACE_THROW (CORBA::INTERNAL ()); - } - - this->timer_id_ = -1; - } -} - -void -TAO_LB_LoadManager::set_default_properties ( - const PortableGroup::Properties & props - ACE_ENV_ARG_DECL) - ACE_THROW_SPEC ((CORBA::SystemException, - PortableGroup::InvalidProperty, - PortableGroup::UnsupportedProperty)) -{ - this->check_strategy_prop (props - ACE_ENV_ARG_PARAMETER); - ACE_CHECK; - - this->property_manager_.set_default_properties (props - ACE_ENV_ARG_PARAMETER); -} - -PortableGroup::Properties * -TAO_LB_LoadManager::get_default_properties ( - ACE_ENV_SINGLE_ARG_DECL) - ACE_THROW_SPEC ((CORBA::SystemException)) -{ - return - this->property_manager_.get_default_properties ( - ACE_ENV_SINGLE_ARG_PARAMETER); -} - -void -TAO_LB_LoadManager::remove_default_properties ( - const PortableGroup::Properties & props - ACE_ENV_ARG_DECL) - ACE_THROW_SPEC ((CORBA::SystemException, - PortableGroup::InvalidProperty, - PortableGroup::UnsupportedProperty)) -{ - this->property_manager_.remove_default_properties (props - ACE_ENV_ARG_PARAMETER); -} - -void -TAO_LB_LoadManager::set_type_properties ( - const char *type_id, - const PortableGroup::Properties & overrides - ACE_ENV_ARG_DECL) - ACE_THROW_SPEC ((CORBA::SystemException, - PortableGroup::InvalidProperty, - PortableGroup::UnsupportedProperty)) -{ - this->check_strategy_prop (overrides - ACE_ENV_ARG_PARAMETER); - ACE_CHECK; - - this->property_manager_.set_type_properties (type_id, - overrides - ACE_ENV_ARG_PARAMETER); -} - -PortableGroup::Properties * -TAO_LB_LoadManager::get_type_properties ( - const char *type_id - ACE_ENV_ARG_DECL) - ACE_THROW_SPEC ((CORBA::SystemException)) -{ - return - this->property_manager_.get_type_properties (type_id - ACE_ENV_ARG_PARAMETER); -} - -void -TAO_LB_LoadManager::remove_type_properties ( - const char *type_id, - const PortableGroup::Properties & props - ACE_ENV_ARG_DECL) - ACE_THROW_SPEC ((CORBA::SystemException, - PortableGroup::InvalidProperty, - PortableGroup::UnsupportedProperty)) -{ - this->property_manager_.remove_type_properties (type_id, - props - ACE_ENV_ARG_PARAMETER); -} - -void -TAO_LB_LoadManager::set_properties_dynamically ( - PortableGroup::ObjectGroup_ptr object_group, - const PortableGroup::Properties & overrides - ACE_ENV_ARG_DECL) - ACE_THROW_SPEC ((CORBA::SystemException, - PortableGroup::ObjectGroupNotFound, - PortableGroup::InvalidProperty, - PortableGroup::UnsupportedProperty)) -{ - this->check_strategy_prop (overrides - ACE_ENV_ARG_PARAMETER); - ACE_CHECK; - - this->property_manager_.set_properties_dynamically (object_group, - overrides - ACE_ENV_ARG_PARAMETER); -} - -PortableGroup::Properties * -TAO_LB_LoadManager::get_properties ( - PortableGroup::ObjectGroup_ptr object_group - ACE_ENV_ARG_DECL) - ACE_THROW_SPEC ((CORBA::SystemException, - PortableGroup::ObjectGroupNotFound)) -{ - return - this->property_manager_.get_properties (object_group - ACE_ENV_ARG_PARAMETER); -} - -PortableGroup::ObjectGroup_ptr -TAO_LB_LoadManager::create_member ( - PortableGroup::ObjectGroup_ptr object_group, - const PortableGroup::Location & the_location, - const char * type_id, - const PortableGroup::Criteria & the_criteria - ACE_ENV_ARG_DECL) - ACE_THROW_SPEC ((CORBA::SystemException, - PortableGroup::ObjectGroupNotFound, - PortableGroup::MemberAlreadyPresent, - PortableGroup::NoFactory, - PortableGroup::ObjectNotCreated, - PortableGroup::InvalidCriteria, - PortableGroup::CannotMeetCriteria)) -{ - return - this->object_group_manager_.create_member (object_group, - the_location, - type_id, - the_criteria - ACE_ENV_ARG_PARAMETER); -} - -PortableGroup::ObjectGroup_ptr -TAO_LB_LoadManager::add_member ( - PortableGroup::ObjectGroup_ptr object_group, - const PortableGroup::Location & the_location, - CORBA::Object_ptr member - ACE_ENV_ARG_DECL) - ACE_THROW_SPEC ((CORBA::SystemException, - PortableGroup::ObjectGroupNotFound, - PortableGroup::MemberAlreadyPresent, - PortableGroup::ObjectNotAdded)) -{ - return - this->object_group_manager_.add_member (object_group, - the_location, - member - ACE_ENV_ARG_PARAMETER); -} - -PortableGroup::ObjectGroup_ptr -TAO_LB_LoadManager::remove_member ( - PortableGroup::ObjectGroup_ptr object_group, - const PortableGroup::Location & the_location - ACE_ENV_ARG_DECL) - ACE_THROW_SPEC ((CORBA::SystemException, - PortableGroup::ObjectGroupNotFound, - PortableGroup::MemberNotFound)) -{ - return - this->object_group_manager_.remove_member (object_group, - the_location - ACE_ENV_ARG_PARAMETER); -} - -PortableGroup::Locations * -TAO_LB_LoadManager::locations_of_members ( - PortableGroup::ObjectGroup_ptr object_group - ACE_ENV_ARG_DECL) - ACE_THROW_SPEC ((CORBA::SystemException, - PortableGroup::ObjectGroupNotFound)) -{ - return - this->object_group_manager_.locations_of_members (object_group - ACE_ENV_ARG_PARAMETER); -} - -PortableGroup::ObjectGroupId -TAO_LB_LoadManager::get_object_group_id ( - PortableGroup::ObjectGroup_ptr object_group - ACE_ENV_ARG_DECL) - ACE_THROW_SPEC ((CORBA::SystemException, - PortableGroup::ObjectGroupNotFound)) -{ - return - this->object_group_manager_.get_object_group_id (object_group - ACE_ENV_ARG_PARAMETER); -} - -PortableGroup::ObjectGroup_ptr -TAO_LB_LoadManager::get_object_group_ref ( - PortableGroup::ObjectGroup_ptr object_group - ACE_ENV_ARG_DECL) - ACE_THROW_SPEC ((CORBA::SystemException, - PortableGroup::ObjectGroupNotFound)) -{ - return - this->object_group_manager_.get_object_group_ref (object_group - ACE_ENV_ARG_PARAMETER); -} - -CORBA::Object_ptr -TAO_LB_LoadManager::get_member_ref ( - PortableGroup::ObjectGroup_ptr object_group, - const PortableGroup::Location & the_location - ACE_ENV_ARG_DECL) - ACE_THROW_SPEC ((CORBA::SystemException, - PortableGroup::ObjectGroupNotFound, - PortableGroup::MemberNotFound)) -{ - return - this->object_group_manager_.get_member_ref (object_group, - the_location - ACE_ENV_ARG_PARAMETER); -} - -CORBA::Object_ptr -TAO_LB_LoadManager::create_object ( - const char * type_id, - const PortableGroup::Criteria & the_criteria, - PortableGroup::GenericFactory::FactoryCreationId_out - factory_creation_id - ACE_ENV_ARG_DECL) - ACE_THROW_SPEC ((CORBA::SystemException, - PortableGroup::NoFactory, - PortableGroup::ObjectNotCreated, - PortableGroup::InvalidCriteria, - PortableGroup::InvalidProperty, - PortableGroup::CannotMeetCriteria)) -{ -// this->init (ACE_ENV_SINGLE_ARG_PARAMETER); -// ACE_CHECK_RETURN (CORBA::Object::_nil ()); - - CORBA::Object_ptr obj = - this->generic_factory_.create_object (type_id, - the_criteria, - factory_creation_id - ACE_ENV_ARG_PARAMETER); - ACE_CHECK_RETURN (CORBA::Object::_nil ()); - - - return obj; -} - -#if 0 -void -TAO_LB_LoadManager::process_criteria ( - const PortableGroup::Criteria & the_criteria - ACE_ENV_ARG_DECL) -{ - // List of invalid criteria. If this list has a length greater than - // zero, then the PortableGroup::InvalidCriteria exception will - // be thrown. - PortableGroup::Criteria invalid_criteria; - - int found_factory = 0; // If factory was found in the_criteria, then - // set to 1. - - // Parse the criteria. - CORBA::ULong criteria_count = the_criteria.length (); - for (CORBA::ULong i = 0; i < criteria_size; ++i) - { - CORBA::UShort initial_number_replicas = 0; - PortableGroup::FactoryInfos factory_infos; - - // Obtain the InitialNumberMembers from the_criteria. - if (this->get_initial_number_replicas (type_id, - the_criteria[i], - initial_number_replicas) != 0) - { - CORBA::ULong len = invalid_criteria.length (); - invalid_criteria.length (len + 1); - invalid_criteria[len] = the_criteria[i]; - } - - // Obtain the FactoryInfos from the_criteria. This method also - // ensures that GenericFactories at different locations are used. - else if (this->get_factory_infos (type_id, - the_criteria[i], - factory_infos) == 0) - found_factory = 1; - - // Unknown property - else - ACE_THROW (PortableGroup::InvalidProperty (the_criteria[i].nam, - the_criteria[i].val)); - } - - if (invalid_criteria.length () != 0) - ACE_THROW (PortableGroup::InvalidCriteria (invalid_criteria)); - - if (found_factory == 0) - ACE_THROW (PortableGroup::NoFactory ()); -} -#endif /* 0 */ - -void -TAO_LB_LoadManager::delete_object ( - const PortableGroup::GenericFactory::FactoryCreationId & - factory_creation_id - ACE_ENV_ARG_DECL) - ACE_THROW_SPEC ((CORBA::SystemException, - PortableGroup::ObjectNotFound)) -{ - this->generic_factory_.delete_object (factory_creation_id - ACE_ENV_ARG_PARAMETER); -} - -CORBA::Object_ptr -TAO_LB_LoadManager::next_member (const PortableServer::ObjectId & oid - ACE_ENV_ARG_DECL) -{ - PortableGroup::ObjectGroup_var object_group = - this->object_group_manager_.object_group (oid); - - if (CORBA::is_nil (object_group.in ())) - ACE_THROW_RETURN (CORBA::OBJECT_NOT_EXIST (), - CORBA::Object::_nil ()); - - PortableGroup::Properties_var properties = - this->get_properties (object_group.in () - ACE_ENV_ARG_PARAMETER); - ACE_CHECK_RETURN (CORBA::Object::_nil ()); - - // Prefer custom load balancing strategies over built-in ones. - PortableGroup::Value value; - CosLoadBalancing::Strategy_var balancing_strategy; - CosLoadBalancing::StrategyInfo * built_in; // Built-in Strategy - // information. - - if ((TAO_PG::get_property_value (this->custom_balancing_strategy_name_, - properties.in (), - value) - && (value >>= balancing_strategy.inout ()) - && !CORBA::is_nil (balancing_strategy.in ()))) - { - return balancing_strategy->next_member (object_group.in (), - this->lm_ref_.in () - ACE_ENV_ARG_PARAMETER); - } - else if (TAO_PG::get_property_value (this->built_in_balancing_strategy_name_, - properties.in (), - value) - && (value >>= built_in)) - { - balancing_strategy = this->built_in_strategy (built_in - ACE_ENV_ARG_PARAMETER); - ACE_CHECK_RETURN (CORBA::Object::_nil ()); - - if (!CORBA::is_nil (balancing_strategy.in ())) - { - return balancing_strategy->next_member (object_group.in (), - this->lm_ref_.in () - ACE_ENV_ARG_PARAMETER); - } - else - { - ACE_THROW_RETURN (CORBA::INTERNAL (), - CORBA::Object::_nil ()); - } - } - else - { - ACE_THROW_RETURN (CORBA::OBJECT_NOT_EXIST (), - CORBA::Object::_nil ()); - } -} - -void -TAO_LB_LoadManager::init (ACE_Reactor * reactor, - CORBA::ORB_ptr orb, - PortableServer::POA_ptr root_poa - ACE_ENV_ARG_DECL) -{ - ACE_ASSERT (!CORBA::is_nil (orb)); - ACE_ASSERT (!CORBA::is_nil (root_poa)); - - ACE_GUARD (TAO_SYNCH_MUTEX, - guard, - this->lock_); - - if (CORBA::is_nil (this->poa_.in ())) - { - // Create a new transient servant manager object in the child - // POA. - PortableServer::ServantManager_ptr tmp; - ACE_NEW_THROW_EX (tmp, - TAO_LB_MemberLocator (this), - CORBA::NO_MEMORY ( - CORBA::SystemException::_tao_minor_code ( - TAO_DEFAULT_MINOR_CODE, - ENOMEM), - CORBA::COMPLETED_NO)); - ACE_CHECK; - - PortableServer::ServantManager_var member_locator = tmp; - - // Create the appropriate RequestProcessingPolicy - // (USE_SERVANT_MANAGER) and ServantRetentionPolicy (NON_RETAIN) - // for a ServantLocator. - PortableServer::RequestProcessingPolicy_var request = - root_poa->create_request_processing_policy ( - PortableServer::USE_SERVANT_MANAGER - ACE_ENV_ARG_PARAMETER); - ACE_CHECK; - - PortableServer::ServantRetentionPolicy_var retention = - root_poa->create_servant_retention_policy ( - PortableServer::NON_RETAIN - ACE_ENV_ARG_PARAMETER); - ACE_CHECK; - - // Create the PolicyList containing the policies necessary for - // the POA to support ServantLocators. - CORBA::PolicyList policy_list; - policy_list.length (2); - policy_list[0] = - PortableServer::RequestProcessingPolicy::_duplicate ( - request.in ()); - policy_list[1] = - PortableServer::ServantRetentionPolicy::_duplicate ( - retention.in ()); - - // Create the child POA with the above ServantManager policies. - // The ServantManager will be the MemberLocator. - PortableServer::POAManager_var poa_manager = - root_poa->the_POAManager (ACE_ENV_SINGLE_ARG_PARAMETER); - ACE_CHECK; - - - // The child POA's name will consist of a string that includes - // the current time in milliseconds in hexidecimal format (only - // four bytes will be used). This is an attempt to prevent - // different load manager servants within the same ORB from - // using the same POA. - const ACE_Time_Value tv = ACE_OS::gettimeofday (); - const CORBA::Long time = - ACE_static_cast (CORBA::Long, - tv.msec ()); // Time in milliseconds. - - char poa_name[] = "TAO_LB_LoadManager_POA - 0xZZZZZZZZ"; - char * astr = - poa_name - + sizeof (poa_name) - - 9 /* 8 + 1 */; - - // Overwrite the last 8 characters in the POA name. - ACE_OS::sprintf (astr, "%d", time); - - this->poa_ = root_poa->create_POA (poa_name, - poa_manager.in (), - policy_list - ACE_ENV_ARG_PARAMETER); - ACE_CHECK; - - request->destroy (ACE_ENV_SINGLE_ARG_PARAMETER); - ACE_CHECK; - - retention->destroy (ACE_ENV_SINGLE_ARG_PARAMETER); - ACE_CHECK; - - // Now set the MemberLocator as the child POA's Servant - // Manager. - this->poa_->set_servant_manager (member_locator.in () - ACE_ENV_ARG_PARAMETER); - ACE_CHECK; - - this->object_group_manager_.poa (this->poa_.in ()); - this->generic_factory_.poa (this->poa_.in ()); - - // Activate the child POA. - poa_manager->activate (ACE_ENV_SINGLE_ARG_PARAMETER); - ACE_CHECK; - - this->reactor_ = reactor; - } - - if (CORBA::is_nil (this->lm_ref_.in ())) - { - this->lm_ref_ = this->_this (ACE_ENV_SINGLE_ARG_PARAMETER); - ACE_CHECK; - - orb->register_initial_reference ("LoadManager", - this->lm_ref_.in () - ACE_ENV_ARG_PARAMETER); - ACE_CHECK; - } - - if (CORBA::is_nil (this->load_alert_handler_.in ())) - { - TAO_LB_LoadAlert_Handler * handler; - ACE_NEW_THROW_EX (handler, - TAO_LB_LoadAlert_Handler, - CORBA::NO_MEMORY ( - CORBA::SystemException::_tao_minor_code ( - TAO_DEFAULT_MINOR_CODE, - ENOMEM), - CORBA::COMPLETED_NO)); - ACE_CHECK; - - PortableServer::ServantBase_var safe_handler = handler; - - this->load_alert_handler_ = - handler->_this (ACE_ENV_SINGLE_ARG_PARAMETER); - ACE_CHECK; - } - - this->built_in_balancing_strategy_name_.length (1); - this->built_in_balancing_strategy_name_[0].id = - CORBA::string_dup ("org.omg.CosLoadBalancing.Strategy"); - - this->custom_balancing_strategy_name_.length (1); - this->custom_balancing_strategy_name_[0].id = - CORBA::string_dup ("org.omg.CosLoadBalancing.CustomStrategy"); -} - -CosLoadBalancing::Strategy_ptr -TAO_LB_LoadManager::built_in_strategy (CosLoadBalancing::StrategyInfo * info - ACE_ENV_ARG_DECL) -{ - ACE_ASSERT (info != 0); - - const char * name = info->name.in (); - const PortableGroup::Properties & props = info->props; - - CosLoadBalancing::Strategy_ptr strategy = - CosLoadBalancing::Strategy::_nil (); - - // @todo We should probably shove this code into a factory. - - if (ACE_OS::strcmp ("RoundRobin", name) == 0) - { - // Double-checked locking - if (this->round_robin_ == 0) - { - ACE_GUARD_RETURN (TAO_SYNCH_MUTEX, - guard, - this->lock_, - 0); - - if (this->round_robin_ == 0) - { - ACE_NEW_THROW_EX (this->round_robin_, - TAO_LB_RoundRobin, - CORBA::NO_MEMORY ()); - ACE_CHECK_RETURN (CosLoadBalancing::Strategy::_nil ()); - } - } - - strategy = this->round_robin_; - } - - else if (ACE_OS::strcmp ("Random", name) == 0) - { - // Double-checked locking - if (this->random_ == 0) - { - ACE_GUARD_RETURN (TAO_SYNCH_MUTEX, - guard, - this->lock_, - 0); - - if (this->random_ == 0) - { - ACE_NEW_THROW_EX (this->random_, - TAO_LB_Random, - CORBA::NO_MEMORY ()); - ACE_CHECK_RETURN (CosLoadBalancing::Strategy::_nil ()); - } - } - - strategy = this->random_; - } - - else if (ACE_OS::strcmp ("LeastLoaded", name) == 0) - { - this->init_least_loaded (props - ACE_ENV_ARG_PARAMETER); - ACE_CHECK_RETURN (CosLoadBalancing::Strategy::_nil ()); - - strategy = this->least_loaded_; - } - - else - { - if (TAO_debug_level > 0) - ACE_ERROR ((LM_ERROR, - "ERROR: TAO_LB_LoadManager::next_member - " - "Unknown/unexpected built-in Strategy:\n" - " \"%s\"\n", - strategy)); - - // This should never occur! - return CosLoadBalancing::Strategy::_nil (); - } - - ACE_ASSERT (!CORBA::is_nil (strategy)); - - return CosLoadBalancing::Strategy::_duplicate (strategy); -} - -void -TAO_LB_LoadManager::check_strategy_prop ( - const PortableGroup::Properties & props - ACE_ENV_ARG_DECL) -{ - const CORBA::ULong len = props.length (); - for (CORBA::ULong i = 0; i < len; ++i) - { - const PortableGroup::Property & property = props[i]; - if (ACE_OS::strcmp (property.nam[0].id.in (), - "org.omg.CosLoadBalancing.CustomStrategy") == 0) - { - CosLoadBalancing::CustomStrategy_var strategy; - if (!(property.val >>= strategy.inout ()) - || CORBA::is_nil (strategy.in ())) - ACE_THROW (PortableGroup::InvalidProperty (property.nam, - property.val)); - } - - else if (ACE_OS::strcmp (property.nam[0].id.in (), - "org.omg.CosLoadBalancing.Strategy") == 0) - { - CosLoadBalancing::StrategyInfo * info; - if (property.val >>= info) - { - if (ACE_OS::strcmp (info->name.in (), "LeastLoaded") == 0) - { - this->init_least_loaded (info->props - ACE_ENV_ARG_PARAMETER); - ACE_CHECK; - } - } - else - ACE_THROW (PortableGroup::InvalidProperty (property.nam, - property.val)); - } - - } -} - -void -TAO_LB_LoadManager::init_least_loaded (const PortableGroup::Properties & props - ACE_ENV_ARG_DECL) -{ - // Double-checked locking - if (this->least_loaded_ == 0) - { - ACE_GUARD (TAO_SYNCH_MUTEX, guard, this->lock_); - - if (this->least_loaded_ == 0) - { - CORBA::Float critical_threshold = - TAO_LB::LL_DEFAULT_CRITICAL_THRESHOLD; - CORBA::Float reject_threshold = TAO_LB::LL_DEFAULT_REJECT_THRESHOLD; - CORBA::Float tolerance = TAO_LB::LL_DEFAULT_TOLERANCE; - CORBA::Float dampening = TAO_LB::LL_DEFAULT_DAMPENING; - CORBA::Float per_balance_load = TAO_LB::LL_DEFAULT_PER_BALANCE_LOAD; - - const CORBA::ULong len = props.length (); - for (CORBA::ULong i = 0; i < len; ++i) - { - const PortableGroup::Property & property = props[i]; - if (ACE_OS::strcmp (property.nam[0].id.in (), - "org.omg.CosLoadBalancing.Strategy.LeastLoaded.CriticalThreshold") == 0) - { - this->extract_float_property (property, - critical_threshold - ACE_ENV_ARG_PARAMETER); - ACE_CHECK; - } - - else if (ACE_OS::strcmp (property.nam[0].id.in (), - "org.omg.CosLoadBalancing.Strategy.LeastLoaded.RejectThreshold") == 0) - { - this->extract_float_property (property, - reject_threshold - ACE_ENV_ARG_PARAMETER); - ACE_CHECK; - } - - else if (ACE_OS::strcmp (property.nam[0].id.in (), - "org.omg.CosLoadBalancing.Strategy.LeastLoaded.Tolerance") == 0) - { - this->extract_float_property (property, - tolerance - ACE_ENV_ARG_PARAMETER); - ACE_CHECK; - } - - else if (ACE_OS::strcmp (property.nam[0].id.in (), - "org.omg.CosLoadBalancing.Strategy.LeastLoaded.Dampening") == 0) - { - this->extract_float_property (property, - dampening - ACE_ENV_ARG_PARAMETER); - ACE_CHECK; - } - - else if (ACE_OS::strcmp (property.nam[0].id.in (), - "org.omg.CosLoadBalancing.Strategy.LeastLoaded.PerBalanceLoad") == 0) - { - this->extract_float_property (property, - per_balance_load - ACE_ENV_ARG_PARAMETER); - ACE_CHECK; - } - } - - // Use default "LeastLoaded" properties. - ACE_NEW_THROW_EX (this->least_loaded_, - TAO_LB_LeastLoaded (critical_threshold, - reject_threshold, - tolerance, - dampening, - per_balance_load), - CORBA::NO_MEMORY ( - CORBA::SystemException::_tao_minor_code ( - TAO_DEFAULT_MINOR_CODE, - ENOMEM), - CORBA::COMPLETED_NO)); - ACE_CHECK; - } - } -} - -void -TAO_LB_LoadManager::extract_float_property ( - const PortableGroup::Property & property, - CORBA::Float & value - ACE_ENV_ARG_DECL) -{ - if (!(property.val >>= value)) - ACE_THROW (PortableGroup::InvalidProperty (property.nam, - property.val)); -} diff --git a/TAO/orbsvcs/orbsvcs/LoadBalancing/LB_Random.cpp b/TAO/orbsvcs/orbsvcs/LoadBalancing/LB_Random.cpp deleted file mode 100644 index a81e3371a32..00000000000 --- a/TAO/orbsvcs/orbsvcs/LoadBalancing/LB_Random.cpp +++ /dev/null @@ -1,113 +0,0 @@ -// -*- C++ -*- - -#include "LB_Random.h" - -ACE_RCSID (LoadBalancing, - LB_Random, - "$Id$") - -TAO_LB_Random::TAO_LB_Random (void) -{ - // Seed the random number generator with the current time. - ACE_OS::srand (ACE_static_cast (unsigned int, ACE_OS::time ())); -} - -char * -TAO_LB_Random::name (ACE_ENV_SINGLE_ARG_DECL_NOT_USED) - ACE_THROW_SPEC ((CORBA::SystemException)) -{ - return CORBA::string_dup ("Random"); -} - -CosLoadBalancing::Properties * -TAO_LB_Random::get_properties (ACE_ENV_SINGLE_ARG_DECL) - ACE_THROW_SPEC ((CORBA::SystemException)) -{ - CosLoadBalancing::Properties * props = 0; - ACE_NEW_THROW_EX (props, - CosLoadBalancing::Properties, - CORBA::NO_MEMORY ( - CORBA::SystemException::_tao_minor_code ( - TAO_DEFAULT_MINOR_CODE, - ENOMEM), - CORBA::COMPLETED_NO)); - ACE_CHECK_RETURN (props); - - return props; -} - -void -TAO_LB_Random::push_loads ( - const PortableGroup::Location & /* the_location */, - const CosLoadBalancing::LoadList & /* loads */ - ACE_ENV_ARG_DECL) - ACE_THROW_SPEC ((CORBA::SystemException, - CosLoadBalancing::StrategyNotAdaptive)) -{ - ACE_THROW (CosLoadBalancing::StrategyNotAdaptive ()); -} - -CORBA::Object_ptr -TAO_LB_Random::next_member ( - PortableGroup::ObjectGroup_ptr object_group, - CosLoadBalancing::LoadManager_ptr load_manager - ACE_ENV_ARG_DECL) - ACE_THROW_SPEC ((CORBA::SystemException, - PortableGroup::ObjectGroupNotFound, - PortableGroup::MemberNotFound)) -{ - PortableGroup::Locations_var locations = - load_manager->locations_of_members (object_group - ACE_ENV_ARG_PARAMETER); - ACE_CHECK_RETURN (CORBA::Object::_nil ()); - - const CORBA::ULong len = locations->length (); - if (len == 0) - ACE_THROW_RETURN (CORBA::TRANSIENT (), - CORBA::Object::_nil ()); - - // Pick a random location in the sequence using the higher order - // bits (zero based indexing). - // - // See Numerical Recipes in C: The Art of Scientific Computing - // (William H. Press, Brian P. Flannery, Saul A. Teukolsky, - // William T. Vetterling; New York: Cambridge University Press, - // 1992 (2nd ed., p. 277)) for details on why using the lower order - // bits, as in (rand() % 10), is bad. In particular, the lower - // order bits in older rand() implementations may not be as random - // as the higher order bits. - // - // @todo It would be better to use the random() function since it - // is supposed to have a larger period than rand(), in - // addition to the fact that the lower order bits should be as - // random as the higher order bits. - - const CORBA::Float flen = len; // Prevent integer arithmetic - // overflow. - const CORBA::ULong i = - ACE_static_cast (CORBA::ULong, - flen * ACE_OS::rand () / (RAND_MAX + 1.0)); - - ACE_ASSERT (i < len); - -// ACE_DEBUG ((LM_DEBUG, -// "** Len = %u\t" -// "Location # %u\t" -// "Loc Name = \"%s\"\n", -// len, -// i, -// locations[i][0].id.in ())); - - return load_manager->get_member_ref (object_group, - locations[i] - ACE_ENV_ARG_PARAMETER); -} - -void -TAO_LB_Random::analyze_loads ( - PortableGroup::ObjectGroup_ptr /* object_group */, - CosLoadBalancing::LoadManager_ptr /* load_manager */ - ACE_ENV_ARG_DECL_NOT_USED) - ACE_THROW_SPEC ((CORBA::SystemException)) -{ -} diff --git a/TAO/orbsvcs/orbsvcs/LoadBalancing/LB_Random.h b/TAO/orbsvcs/orbsvcs/LoadBalancing/LB_Random.h deleted file mode 100644 index f927a277764..00000000000 --- a/TAO/orbsvcs/orbsvcs/LoadBalancing/LB_Random.h +++ /dev/null @@ -1,85 +0,0 @@ -// -*- C++ -*- - -//============================================================================= -/** - * @file LB_Random.h - * - * $Id$ - * - * @author Ossama Othman <ossama@uci.edu> - */ -//============================================================================= - - -#ifndef LB_RANDOM_H -#define LB_RANDOM_H - -#include "ace/pre.h" - -#include "orbsvcs/CosLoadBalancingC.h" - -# if !defined (ACE_LACKS_PRAGMA_ONCE) -# pragma once -# endif /* ACE_LACKS_PRAGMA_ONCE */ - -/** - * @class TAO_LB_Random - * - * @brief "Random" load balancing strategy - * - * This load balancing strategy is designed to select an object group - * member residing at a random location. - */ -class TAO_LB_Random - : public virtual CosLoadBalancing::Strategy, - public virtual CORBA::LocalObject -{ -public: - - /// Constructor. - /** - * Seeds the OS' random number generator. - */ - TAO_LB_Random (void); - - /** - * @name CosLoadBalancing::Strategy methods - * - * Methods required by the CosLoadBalancing::Strategy interface. - */ - //@{ - virtual char * name (ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS) - ACE_THROW_SPEC ((CORBA::SystemException)); - - virtual CosLoadBalancing::Properties * get_properties ( - ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS) - ACE_THROW_SPEC ((CORBA::SystemException)); - - virtual void push_loads ( - const PortableGroup::Location & the_location, - const CosLoadBalancing::LoadList & loads - ACE_ENV_ARG_DECL_WITH_DEFAULTS) - ACE_THROW_SPEC ((CORBA::SystemException, - CosLoadBalancing::StrategyNotAdaptive)); - - virtual CORBA::Object_ptr next_member ( - PortableGroup::ObjectGroup_ptr object_group, - CosLoadBalancing::LoadManager_ptr load_manager - ACE_ENV_ARG_DECL_WITH_DEFAULTS) - ACE_THROW_SPEC ((CORBA::SystemException, - PortableGroup::ObjectGroupNotFound, - PortableGroup::MemberNotFound)); - - virtual void analyze_loads ( - PortableGroup::ObjectGroup_ptr object_group, - CosLoadBalancing::LoadManager_ptr load_manager - ACE_ENV_ARG_DECL_WITH_DEFAULTS) - ACE_THROW_SPEC ((CORBA::SystemException)); - //@} - -}; - - -#include "ace/post.h" - -#endif /* LB_RANDOM_H */ diff --git a/TAO/orbsvcs/orbsvcs/Log/NotifyLogNotification.h b/TAO/orbsvcs/orbsvcs/Log/NotifyLogNotification.h deleted file mode 100644 index 797edf90760..00000000000 --- a/TAO/orbsvcs/orbsvcs/Log/NotifyLogNotification.h +++ /dev/null @@ -1,95 +0,0 @@ -/* -*- C++ -*- */ - -//============================================================================= -/** - * @file NotifyLogNotification.h - * - * $Id$ - * - * Methods to enable log-generated events. - * - * - * @author D A Hanvey <d.hanvey@qub.ac.uk> - * - * - */ -//============================================================================= - -#ifndef TLS_NOTIFY_LOG_NOTIFICATION_H -#define TLS_NOTIFY_LOG_NOTIFICATION_H -#include "ace/pre.h" - -#include "orbsvcs/DsNotifyLogAdminS.h" -#include "orbsvcs/Notify/Notify_EventChannelFactory_i.h" -#include "orbsvcs/Notify/Notify_EventChannel_i.h" -#include "orbsvcs/CosEventCommS.h" -#include "orbsvcs/CosNotifyChannelAdminS.h" -#include "orbsvcs/CosNotifyCommC.h" -#include "orbsvcs/CosNamingC.h" - -#include "notifylog_export.h" -#if !defined (ACE_LACKS_PRAGMA_ONCE) -# pragma once -#endif /* ACE_LACKS_PRAGMA_ONCE */ - - -class TAO_NotifyLog_Export NotifyLogNotification : public LogNotification, - public POA_CosNotifyComm::PushSupplier, public PortableServer::RefCountServantBase -{ - // = TITLE - // Used to forward log generated events to a logging server - // - // = DESCRIPTION - // This implementation attempts to conform to the telecom - // logging specification. - -public: - // = Initialization and Termination - NotifyLogNotification (CosNotifyChannelAdmin::EventChannel_ptr); - // Constructor. - - ~NotifyLogNotification (void); - // Destructor. - -protected: - // = Helper methods - // = Data members - CosNotifyChannelAdmin::ProxyPushConsumer_var proxy_consumer_; - // The proxy that we are connected to. - - CosNotifyChannelAdmin::ProxyID proxy_consumer_id_; - // This supplier's id. - - // = NotifySubscribe - virtual void subscription_change ( - const CosNotification::EventTypeSeq & added, - const CosNotification::EventTypeSeq & removed - ACE_ENV_ARG_DECL - ) - ACE_THROW_SPEC (( - CORBA::SystemException, - CosNotifyComm::InvalidEventType - )); - - // = StructuredPushSupplier method - virtual void disconnect_push_supplier ( - ACE_ENV_SINGLE_ARG_DECL - ) - ACE_THROW_SPEC (( - CORBA::SystemException - )); - - virtual void send_notification (const CORBA::Any& any) - ACE_THROW_SPEC (( - CORBA::SystemException - )); - // Send the event on the event channel. - - -private: - CORBA::ORB_var orb_; - - CosNotifyChannelAdmin::EventChannel_var event_channel_; -}; -#include "ace/post.h" -#endif /* TLS_NOTIFY_LOG_NOTIFICATION_H */ diff --git a/TAO/orbsvcs/orbsvcs/Log/NotifyLog_i.h b/TAO/orbsvcs/orbsvcs/Log/NotifyLog_i.h deleted file mode 100644 index 80318c9d507..00000000000 --- a/TAO/orbsvcs/orbsvcs/Log/NotifyLog_i.h +++ /dev/null @@ -1,284 +0,0 @@ -// -*- C++ -*- - -//============================================================================= -/** - * @file NotifyLog_i.h - * - * $Id$ - * - * Implementation of the DsNotifyLogAdmin::NotifyLog interface. - * - * - * @author David A. Hanvey <d.hanvey@qub.ac.uk> - */ -//============================================================================= - -#ifndef TLS_NOTIFYLOG_I_H -#define TLS_NOTIFYLOG_I_H - -#include "orbsvcs/DsLogAdminS.h" -#include "orbsvcs/DsNotifyLogAdminS.h" -#include "orbsvcs/Log/Log_i.h" -#include "orbsvcs/Notify/Notify_EventChannel_i.h" - -#include "notifylog_export.h" - -#if !defined (ACE_LACKS_PRAGMA_ONCE) -# pragma once -#endif /* ACE_LACKS_PRAGMA_ONCE */ - -#if defined(_MSC_VER) -#if (_MSC_VER >= 1200) -#pragma warning(push) -#endif /* _MSC_VER >= 1200 */ -#pragma warning(disable:4250) -#endif /* _MSC_VER */ - -class LogMgr_i; -class NotifyLog_i; -class NotifyLogFactory_i; - -// Bug in MSVC 5, See KB article Q167350 -#if defined (_MSC_VER) && (_MSC_VER == 1100) -using DsLogAdmin::wrap; -#endif /* (_MSC_VER) && (_MSC_VER == 1100) */ - -class TAO_Notify_LogConsumer : public virtual POA_CosNotifyComm::StructuredPushConsumer, - public PortableServer::RefCountServantBase -{ -public: - TAO_Notify_LogConsumer (NotifyLog_i *log); - - void connect (CosNotifyChannelAdmin::ConsumerAdmin_ptr consumer_admin ACE_ENV_ARG_DECL); - - virtual void disconnect (ACE_ENV_SINGLE_ARG_DECL); - -protected: - virtual ~TAO_Notify_LogConsumer (void); - - // = NotifyPublish method - virtual void offer_change ( - const CosNotification::EventTypeSeq & added, - const CosNotification::EventTypeSeq & removed - ACE_ENV_ARG_DECL - ) - ACE_THROW_SPEC (( - CORBA::SystemException, - CosNotifyComm::InvalidEventType - )); - - // = StructuredPushSupplier methods - virtual void push_structured_event ( - const CosNotification::StructuredEvent & notification - ACE_ENV_ARG_DECL - ) - ACE_THROW_SPEC (( - CORBA::SystemException, - CosEventComm::Disconnected - )); - - virtual void disconnect_structured_push_consumer ( - ACE_ENV_SINGLE_ARG_DECL - ) - ACE_THROW_SPEC (( - CORBA::SystemException - )); - - CosNotifyChannelAdmin::StructuredProxyPushSupplier_var proxy_supplier_; - - CosNotifyChannelAdmin::ProxyID proxy_supplier_id_; - - NotifyLog_i *log_; -}; - -class NotifyLog_i : public Log_i, - public POA_DsNotifyLogAdmin::NotifyLog, - public virtual PortableServer::RefCountServantBase -{ - // = TITLE - // EventLog_i - // = DESCRIPTION - // The class supports the <destroy> method to destroy the Log. - // -public: - // = Initialization and Termination. - NotifyLog_i (LogMgr_i &logmgr_i, - DsLogAdmin::LogMgr_ptr factory, - NotifyLogFactory_i *notify_log_factory, - CosNotifyChannelAdmin::EventChannelFactory_ptr ecf, - LogNotification *log_notifier, - DsLogAdmin::LogId id, - DsLogAdmin::LogFullActionType log_full_action = DsLogAdmin::wrap, - CORBA::ULongLong max_size = 0, - ACE_Reactor *reactor = ACE_Reactor::instance ()); - // Constructor - - ~NotifyLog_i (); - // Destructor. - - virtual DsLogAdmin::Log_ptr copy (DsLogAdmin::LogId &id ACE_ENV_ARG_DECL) - ACE_THROW_SPEC (( - CORBA::SystemException - )); - - virtual DsLogAdmin::Log_ptr copy_with_id (DsLogAdmin::LogId id ACE_ENV_ARG_DECL) - ACE_THROW_SPEC (( - CORBA::SystemException - )); - - void - destroy (ACE_ENV_SINGLE_ARG_DECL) - ACE_THROW_SPEC ((CORBA::SystemException)); - // Destroy the log object and all contained records. - - void - activate (ACE_ENV_SINGLE_ARG_DECL); - - //IDL to C++ - CosNotifyFilter::Filter_ptr - get_filter (ACE_ENV_SINGLE_ARG_DECL) - ACE_THROW_SPEC (( - CORBA::SystemException - )); - - void set_filter (CosNotifyFilter::Filter_ptr filter ACE_ENV_ARG_DECL) - ACE_THROW_SPEC (( - CORBA::SystemException - )); - - CosNotifyChannelAdmin::EventChannelFactory_ptr - MyFactory (ACE_ENV_SINGLE_ARG_DECL) - ACE_THROW_SPEC (( - CORBA::SystemException - )); - - CosNotifyChannelAdmin::ConsumerAdmin_ptr - default_consumer_admin (ACE_ENV_SINGLE_ARG_DECL) - ACE_THROW_SPEC (( - CORBA::SystemException - )); - - CosNotifyChannelAdmin::SupplierAdmin_ptr - default_supplier_admin (ACE_ENV_SINGLE_ARG_DECL) - ACE_THROW_SPEC (( - CORBA::SystemException - )); - - CosNotifyFilter::FilterFactory_ptr - default_filter_factory (ACE_ENV_SINGLE_ARG_DECL) - ACE_THROW_SPEC (( - CORBA::SystemException - )); - - CosNotifyChannelAdmin::ConsumerAdmin_ptr - new_for_consumers (CosNotifyChannelAdmin::InterFilterGroupOperator op, - CosNotifyChannelAdmin::AdminID& id ACE_ENV_ARG_DECL) - ACE_THROW_SPEC (( - CORBA::SystemException - )); - - CosNotifyChannelAdmin::SupplierAdmin_ptr - new_for_suppliers (CosNotifyChannelAdmin::InterFilterGroupOperator op, - CosNotifyChannelAdmin::AdminID& id ACE_ENV_ARG_DECL) - ACE_THROW_SPEC (( - CORBA::SystemException - )); - - CosNotifyChannelAdmin::ConsumerAdmin_ptr - get_consumeradmin (CosNotifyChannelAdmin::AdminID id ACE_ENV_ARG_DECL) - ACE_THROW_SPEC (( - CosNotifyChannelAdmin::AdminNotFound, - CORBA::SystemException - )); - - CosNotifyChannelAdmin::SupplierAdmin_ptr - get_supplieradmin (CosNotifyChannelAdmin::AdminID id ACE_ENV_ARG_DECL) - ACE_THROW_SPEC (( - CosNotifyChannelAdmin::AdminNotFound, - CORBA::SystemException - )); - - CosNotifyChannelAdmin::AdminIDSeq* - get_all_consumeradmins (ACE_ENV_SINGLE_ARG_DECL) - ACE_THROW_SPEC (( - CORBA::SystemException - )); - - CosNotifyChannelAdmin::AdminIDSeq* - get_all_supplieradmins (ACE_ENV_SINGLE_ARG_DECL) - ACE_THROW_SPEC (( - CORBA::SystemException - )); - - CosNotification::AdminProperties* - get_admin (ACE_ENV_SINGLE_ARG_DECL) - ACE_THROW_SPEC (( - CORBA::SystemException - )); - - void set_admin (const CosNotification::AdminProperties& admin ACE_ENV_ARG_DECL) - ACE_THROW_SPEC (( - CosNotification::UnsupportedAdmin, - CORBA::SystemException - )); - - CosNotification::QoSProperties* - get_qos (ACE_ENV_SINGLE_ARG_DECL) - ACE_THROW_SPEC (( - CORBA::SystemException - )); - - void set_qos (const CosNotification::QoSProperties& ACE_ENV_ARG_DECL) - ACE_THROW_SPEC (( - CosNotification::UnsupportedQoS, - CORBA::SystemException - )); - - void validate_qos (const CosNotification::QoSProperties&, - CosNotification::NamedPropertyRangeSeq_out ACE_ENV_ARG_DECL) - ACE_THROW_SPEC (( - CosNotification::UnsupportedQoS, - CORBA::SystemException - )); - - CosEventChannelAdmin::ConsumerAdmin_ptr - for_consumers (ACE_ENV_SINGLE_ARG_DECL) - ACE_THROW_SPEC (( - CORBA::SystemException - )); - - CosEventChannelAdmin::SupplierAdmin_ptr - for_suppliers (ACE_ENV_SINGLE_ARG_DECL) - ACE_THROW_SPEC (( - CORBA::SystemException - )); - - void write_recordlist (const DsLogAdmin::RecordList & list - ACE_ENV_ARG_DECL) - ACE_THROW_SPEC (( - CORBA::SystemException, - DsLogAdmin::LogFull, - DsLogAdmin::LogLocked - )); - -protected: - LogMgr_i &logmgr_i_; - // Used to access the hash map that holds all the Logs created. - -private: - TAO_Notify_LogConsumer *my_log_consumer_; - - CosNotifyChannelAdmin::EventChannel_var event_channel_; - - CosNotifyChannelAdmin::ChannelID channelID_; - - CosNotifyChannelAdmin::EventChannelFactory_var notify_factory_; - - CosNotifyChannelAdmin::ConsumerAdmin_var consumer_admin_; -}; - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -#pragma warning(pop) -#endif /* _MSC_VER */ - -#endif /* TLS_NOTIFYLOG_I_H */ diff --git a/TAO/orbsvcs/orbsvcs/Notify/Notify_AdminProperties.cpp b/TAO/orbsvcs/orbsvcs/Notify/Notify_AdminProperties.cpp deleted file mode 100644 index 727cd0d066a..00000000000 --- a/TAO/orbsvcs/orbsvcs/Notify/Notify_AdminProperties.cpp +++ /dev/null @@ -1,111 +0,0 @@ -// $Id$ - -#include "Notify_AdminProperties.h" - -#if ! defined (__ACE_INLINE__) -#include "Notify_AdminProperties.i" -#endif /* __ACE_INLINE__ */ - -ACE_RCSID(Notify, Notify_AdminProperties, "$Id$") - -TAO_Notify_AdminProperties::TAO_Notify_AdminProperties (void) - : max_queue_length_ (0), - max_consumers_ (0), - max_suppliers_ (0), - reject_new_events_ (0) -{ -} - -TAO_Notify_AdminProperties::~TAO_Notify_AdminProperties () -{ -} - -CosNotification::AdminProperties* -TAO_Notify_AdminProperties::get_admin (ACE_ENV_SINGLE_ARG_DECL) - ACE_THROW_SPEC (( - CORBA::SystemException - )) -{ - CORBA::Long property_count = 4; //The spec has 4 properties, so far. - - CosNotification::AdminProperties_var admin; - - ACE_NEW_THROW_EX (admin, - CosNotification::AdminProperties (property_count), - CORBA::NO_MEMORY ()); - admin->length (property_count); - - (*admin)[0].name = - CORBA::string_dup (CosNotification::MaxQueueLength); - (*admin)[0].value <<= (CORBA::Long)max_queue_length_; - - (*admin)[1].name = - CORBA::string_dup (CosNotification::MaxConsumers); - (*admin)[1].value <<= (CORBA::Long)max_consumers_; - - (*admin)[2].name = - CORBA::string_dup (CosNotification::MaxSuppliers); - (*admin)[2].value <<= (CORBA::Long)max_suppliers_; - - (*admin)[3].name = - CORBA::string_dup (CosNotification::RejectNewEvents); - (*admin)[3].value <<= CORBA::Any::from_boolean (this->reject_new_events_); - - return admin._retn (); -} - -void -TAO_Notify_AdminProperties::set_admin (const CosNotification::AdminProperties & admin ACE_ENV_ARG_DECL) - ACE_THROW_SPEC (( - CORBA::SystemException, - CosNotification::UnsupportedAdmin - )) -{ - for (CORBA::ULong i = 0; i < admin.length (); ++i) - { - if (ACE_OS::strcmp (admin[i].name, - CosNotification::MaxQueueLength) == 0) - { - admin[i].value >>= max_queue_length_; - } - else if (ACE_OS::strcmp (admin[i].name, - CosNotification::MaxSuppliers) == 0) - { - admin[i].value >>= this->max_suppliers_; - } - else if (ACE_OS::strcmp (admin[i].name, - CosNotification::MaxConsumers) == 0) - { - admin[i].value >>= this->max_consumers_; - } - else if (ACE_OS::strcmp (admin[i].name, - CosNotification::RejectNewEvents) == 0) - { - admin[i].value >>= CORBA::Any::to_boolean (this->reject_new_events_); - } - else - ACE_THROW (CosNotification::UnsupportedAdmin ()); - } -} - -CORBA::Boolean -TAO_Notify_AdminProperties::queue_full (void) -{ - if (this->max_queue_length () == 0) - return 0; - else - if (this->queue_length ()->value () > this->max_queue_length ()) - return 1; - - return 0; -} - -#if defined (ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION) -template class ACE_Atomic_Op<TAO_SYNCH_MUTEX,int>; -template class ACE_Atomic_Op_Ex<TAO_SYNCH_MUTEX,int>; -template class TAO_Notify_Signal_Property<TAO_SYNCH_MUTEX,int>; -#elif defined (ACE_HAS_TEMPLATE_INSTANTIATION_PRAGMA) -#pragma instantiate ACE_Atomic_Op<TAO_SYNCH_MUTEX,int> -#pragma instantiate ACE_Atomic_Op_Ex<TAO_SYNCH_MUTEX,int> -#pragma instantiate TAO_Notify_Signal_Property<TAO_SYNCH_MUTEX,int> -#endif /* ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION */ diff --git a/TAO/orbsvcs/orbsvcs/Notify/Notify_AdminProperties.h b/TAO/orbsvcs/orbsvcs/Notify/Notify_AdminProperties.h deleted file mode 100644 index 52474c23e27..00000000000 --- a/TAO/orbsvcs/orbsvcs/Notify/Notify_AdminProperties.h +++ /dev/null @@ -1,119 +0,0 @@ -/* -*- C++ -*- */ -//============================================================================= -/** - * @file Notify_AdminProperties.h - * - * $Id$ - * - * Implements get/set methods for EC Admin properties. - * - * - * @author Pradeep Gore <pradeep@cs.wustl.edu> - */ -//============================================================================= - -#ifndef TAO_NOTIFY_ADMINPROPERTIES_H -#define TAO_NOTIFY_ADMINPROPERTIES_H - -#include "ace/pre.h" -#include "orbsvcs/CosNotificationC.h" - -#if !defined (ACE_LACKS_PRAGMA_ONCE) -# pragma once -#endif /* ACE_LACKS_PRAGMA_ONCE */ - -#include "Notify_Listeners.h" -#include "notify_export.h" -#include "Notify_Signal_Property_T.h" - - -typedef ACE_Atomic_Op <TAO_SYNCH_MUTEX,CORBA::Long> TAO_Notify_Property_Long; -typedef TAO_Notify_Signal_Property <TAO_SYNCH_MUTEX,CORBA::Long> TAO_Notify_Signal_Property_Long; - -/** - * @class TAO_Notify_AdminProperties - * - * @brief TAO_Notify_AdminProperties - * - * All the EC Admin properties are get/set via this class. - */ -class TAO_Notify_Export TAO_Notify_AdminProperties -{ -public: - TAO_Notify_AdminProperties (void); - virtual ~TAO_Notify_AdminProperties (); - - virtual CosNotification::AdminProperties * get_admin ( - ACE_ENV_SINGLE_ARG_DECL - ) - ACE_THROW_SPEC (( - CORBA::SystemException - )); - - virtual void set_admin ( - const CosNotification::AdminProperties & admin - ACE_ENV_ARG_DECL - ) - ACE_THROW_SPEC (( - CORBA::SystemException, - CosNotification::UnsupportedAdmin - )); - - // = Accessors - // There was no reason for these not to be const - CORBA::Long max_queue_length (void) const; - CORBA::Long max_consumers (void) const; - CORBA::Long max_suppliers (void) const; - CORBA::Boolean reject_new_events (void) const; - - TAO_Notify_Signal_Property_Long* queue_length (void); - TAO_Notify_Property_Long* consumers (void); - TAO_Notify_Property_Long* suppliers (void); - - // = Helper method - /// Returns true if Queue is full - CORBA::Boolean queue_full (void); - -protected: - // @@ Pradeep can you explain why there is any maximum for these - // values? Should they be configurable by the user so the resource - // requirements can be bounded? - - // = Admin. properties - // for all these properties the default O implies no limit - /** - * The maximum number of events that will be queued by the channel before - * the channel begins discarding events or rejecting new events upon - * receipt of each new event. - */ - CORBA::Long max_queue_length_; - - /// The maximum number of consumers that can be connected to the channel at - /// any given time. - CORBA::Long max_consumers_; - - /// The maximum number of suppliers that can be connected to the channel at - /// any given time. - CORBA::Long max_suppliers_; - - /// Reject any new event. - CORBA::Boolean reject_new_events_; - - //= Variables - /// This is used to count the queue length across all buffers in the Notify Service - /// to enforce the "MaxQueueLength" property. - TAO_Notify_Signal_Property_Long queue_length_; - - /// These are used to count the number of consumers and suppliers connected to - /// the system. - TAO_Notify_Property_Long consumers_; - TAO_Notify_Property_Long suppliers_; -}; - - -#if defined (__ACE_INLINE__) -#include "Notify_AdminProperties.i" -#endif /* __ACE_INLINE__ */ - -#include "ace/post.h" -#endif /* TAO_NOTIFY_ADMINPROPERTIES_H */ diff --git a/TAO/orbsvcs/orbsvcs/Notify/Notify_AdminProperties.i b/TAO/orbsvcs/orbsvcs/Notify/Notify_AdminProperties.i deleted file mode 100644 index 5ff900bd5f3..00000000000 --- a/TAO/orbsvcs/orbsvcs/Notify/Notify_AdminProperties.i +++ /dev/null @@ -1,45 +0,0 @@ -// $Id$ - -#include "Notify_AdminProperties.h" - -ACE_INLINE CORBA::Long -TAO_Notify_AdminProperties::max_queue_length (void) const -{ - return this->max_queue_length_; -} - -ACE_INLINE CORBA::Long -TAO_Notify_AdminProperties::max_consumers (void) const -{ - return this->max_consumers_; -} - -ACE_INLINE CORBA::Long -TAO_Notify_AdminProperties::max_suppliers (void) const -{ - return this->max_suppliers_; -} - -ACE_INLINE CORBA::Boolean -TAO_Notify_AdminProperties::reject_new_events (void) const -{ - return this->reject_new_events_; -} - -ACE_INLINE TAO_Notify_Signal_Property_Long* -TAO_Notify_AdminProperties::queue_length (void) -{ - return &(this->queue_length_); -} - -ACE_INLINE TAO_Notify_Property_Long* -TAO_Notify_AdminProperties::consumers (void) -{ - return &(this->consumers_); -} - -ACE_INLINE TAO_Notify_Property_Long* -TAO_Notify_AdminProperties::suppliers (void) -{ - return &(this->suppliers_); -} diff --git a/TAO/orbsvcs/orbsvcs/Notify/Notify_Buffering_Strategy.cpp b/TAO/orbsvcs/orbsvcs/Notify/Notify_Buffering_Strategy.cpp deleted file mode 100644 index 16db407d876..00000000000 --- a/TAO/orbsvcs/orbsvcs/Notify/Notify_Buffering_Strategy.cpp +++ /dev/null @@ -1,233 +0,0 @@ -// $Id$ - -#include "Notify_Buffering_Strategy.h" -#include "Notify_Command.h" - -#include "orbsvcs/CosNotificationC.h" - -#include "tao/debug.h" - -ACE_RCSID(Notify, Notify_Buffering_Strategy, "$Id$") - -TAO_Notify_Buffering_Strategy::TAO_Notify_Buffering_Strategy ( - TAO_Notify_Signal_Property_Long* const queue_length) - : queue_length_ (queue_length), - max_queue_length_ (0), - max_events_per_consumer_ (0), - order_policy_ (CosNotification::AnyOrder), - discard_policy_ (CosNotification::AnyOrder), - use_max_queue_ (0), - blocking_timeout_ (0), - use_blocking_timeout_ (0) -{ -} - -TAO_Notify_Buffering_Strategy::~TAO_Notify_Buffering_Strategy () -{ -} - -void -TAO_Notify_Buffering_Strategy::execute (ACE_Message_Queue<ACE_SYNCH>* msg_queue, TAO_Notify_Command *mb ACE_ENV_ARG_DECL_NOT_USED /*ACE_ENV_SINGLE_ARG_PARAMETER*/, ACE_Time_Value *tv) -{ - // use_max_queue_ may be set to 0. If max_events_per_consumer_ is - // 0, then we are going to use the maximum queue length regardless. - if (this->max_events_per_consumer_ == 0) - this->use_max_queue_ = 1; - - if (TAO_debug_level > 0) - { - if (this->use_max_queue_) - ACE_DEBUG ((LM_DEBUG, "Notify (%P|%t) - Enqueing command " - "priority %d, queue_length = %d, max queue" - " length = %d\n", - mb->priority (), this->queue_length_->value (), - this->max_queue_length_)); - else - ACE_DEBUG ((LM_DEBUG, "Notify (%P|%t) - Enqueing command " - "priority %d, queue_length = %d, max events" - " per consumer = %d\n", - mb->priority (), this->queue_length_->value (), - this->max_events_per_consumer_)); - } - - int result = 0; - - // If we decide to use_max_queue_ and max_queue_length_ is not 0 and - // the queue_length_ is more than max_queue_length_. - // Or if we did not decide to use_max_queue_ and max_events_per_consumer_ - // and queue_length_ is more than max_events_per_consumer_. - CORBA::Long current = this->queue_length_->value (); - if ((this->use_max_queue_ && this->max_queue_length_ != 0 && - current > this->max_queue_length_) || - (!this->use_max_queue_ && this->max_events_per_consumer_ != 0 && - current > this->max_events_per_consumer_)) - { - if (this->use_blocking_timeout_) - { - - // I am multiplying blocking_timeout_ by 1 because it is a - // CORBA::ULongLong, which on some platforms doesn't automatically - // convert to the long that the ACE_Time_Value expects. The / - // operator returns a 32-bit integer. - ACE_Time_Value absolute; - - if (this->blocking_timeout_ != 0) - { - absolute = ACE_OS::gettimeofday () + -# if defined (ACE_CONFIG_WIN32_H) - ACE_Time_Value ( - ACE_static_cast (long, - this->blocking_timeout_)); -# else - ACE_Time_Value (this->blocking_timeout_ / 1); -# endif /* ACE_CONFIG_WIN32_H */ - - } - if (TAO_debug_level > 0) - ACE_DEBUG ((LM_DEBUG, - "Notify (%P|%t) - Blocking\n")); - - if (this->queue_length_->wait_for_change (&absolute) == -1) - { - // We timed out waiting for the queue length to change - ACE_DEBUG ((LM_DEBUG, "Notify (%P|%t) - " - "Timed out blocking on the client\n")); - return; - } - - if (TAO_debug_level > 0) - ACE_DEBUG ((LM_DEBUG, - "Notify (%P|%t) - Resuming\n")); - } - else - { - if (TAO_debug_level > 0) - { - if (this->use_max_queue_) - ACE_DEBUG ((LM_DEBUG, "Notify (%P|%t) - max queue length " - "reached, discarding event with " - "policy %d\n", - this->discard_policy_)); - else - ACE_DEBUG ((LM_DEBUG, "Notify (%P|%t) - max events per " - "consumer reached, discarding event " - "with policy %d\n", - this->discard_policy_)); - } - - if (this->discard_policy_ == CosNotification::AnyOrder || - this->discard_policy_ == CosNotification::FifoOrder) - { - ACE_Message_Block *first_item; - result = msg_queue->dequeue_head (first_item, tv); - } - else if (this->discard_policy_ == CosNotification::LifoOrder) - { - ACE_Message_Block *last_item; - result = msg_queue->dequeue_tail (last_item, tv); - } - else if (this->discard_policy_ == CosNotification::DeadlineOrder) - { - ACE_Message_Block *dequeued_item; - result = msg_queue->dequeue_deadline (dequeued_item, tv); - } - else if (this->discard_policy_ == CosNotification::PriorityOrder) - { - ACE_Message_Block *dequeued_item; - result = msg_queue->dequeue_prio (dequeued_item, tv); - } - else - { - if (TAO_debug_level > 0) - ACE_DEBUG ((LM_DEBUG, "Notify (%P|%t) - " - "Invalid discard policy\n")); - result = -1; - } - - if (result == -1) // we could not dequeue successfully. - { - return; // behave as if we discarded this event. - } - else - { - // decrement the global count of events since we successfully - // dequeued an item from the message queue. - (*this->queue_length_)--; - } - } - } - - // Queue according to order policy - if (this->order_policy_ == CosNotification::AnyOrder || - this->order_policy_ == CosNotification::FifoOrder) - { - if (TAO_debug_level > 0) - ACE_DEBUG ((LM_DEBUG, "Notify (%P|%t) - " - "enqueue in fifo order\n")); - // Insert at the end of the queue. - result = msg_queue->enqueue_tail (mb, tv); - } - else if (this->order_policy_ == CosNotification::PriorityOrder) - { - if (TAO_debug_level > 0) - ACE_DEBUG ((LM_DEBUG, "Notify (%P|%t) - " - "enqueue in priority order\n")); - result = msg_queue->enqueue_prio (mb, tv); - } - else if (this->order_policy_ == CosNotification::DeadlineOrder) - { - if (TAO_debug_level > 0) - ACE_DEBUG ((LM_DEBUG, "Notify (%P|%t) - " - "enqueue in deadline order\n")); - result = msg_queue->enqueue_deadline (mb, tv); - } - else - { - if (TAO_debug_level > 0) - ACE_DEBUG ((LM_DEBUG, "Notify (%P|%t) - Invalid order policy\n")); - result = -1; - } - - if (result == -1) // we could not enqueue successfully - { - ACE_DEBUG ((LM_DEBUG, "Notify (%P|%t) - " - "Panic! failed to enqueue event")); - // behave as if we discarded this event. - } - else - { - // increment the global count of events. - (*this->queue_length_)++; - } -} - -void -TAO_Notify_Buffering_Strategy::max_queue_length (CORBA::Long max_queue_length) -{ - this->max_queue_length_ = max_queue_length; -} - -void -TAO_Notify_Buffering_Strategy::max_events_per_consumer (CORBA::Long max_events_per_consumer) -{ - this->max_events_per_consumer_ = max_events_per_consumer; -} - -void -TAO_Notify_Buffering_Strategy::order_policy (CORBA::Short order_policy) -{ - this->order_policy_ = order_policy; -} - -void -TAO_Notify_Buffering_Strategy::discard_policy (CORBA::Short discard_policy) -{ - this->discard_policy_ = discard_policy; -} - -void -TAO_Notify_Buffering_Strategy::blocking_timeout (TimeBase::TimeT timeout) -{ - this->blocking_timeout_ = timeout; - this->use_blocking_timeout_ = 1; -} diff --git a/TAO/orbsvcs/orbsvcs/Notify/Notify_Buffering_Strategy.h b/TAO/orbsvcs/orbsvcs/Notify/Notify_Buffering_Strategy.h deleted file mode 100644 index 1d6fb5c048d..00000000000 --- a/TAO/orbsvcs/orbsvcs/Notify/Notify_Buffering_Strategy.h +++ /dev/null @@ -1,92 +0,0 @@ -/* -*- C++ -*- */ -//============================================================================= -/** - * @file Notify_Buffering_Strategy.h - * - * $Id$ - * - * A Strategy class that buffers command objects in a message queue. - * - * - * @author Pradeep Gore <pradeep@cs.wustl.edu> - */ -//============================================================================= - -#ifndef TAO_NOTIFY_BUFFERING_STRATEGY_H -#define TAO_NOTIFY_BUFFERING_STRATEGY_H - -#include "ace/pre.h" -#include "tao/corba.h" - -#if !defined (ACE_LACKS_PRAGMA_ONCE) -# pragma once -#endif /* ACE_LACKS_PRAGMA_ONCE */ - -#include "Notify_AdminProperties.h" -#include "orbsvcs/TimeBaseC.h" - -#include "ace/Message_Queue.h" -#include "ace/Synch.h" - -class TAO_Notify_Command; - -/** - * @class TAO_Notify_Buffering_Strategy - * - * @brief TAO_Notify_Buffering_Strategy - * - * This buffering strategy buffers and discards events according to the - * policies specified in the CosNotification.idl - */ -class TAO_Notify_Export TAO_Notify_Buffering_Strategy -{ -public: - TAO_Notify_Buffering_Strategy (TAO_Notify_Signal_Property_Long* const queue_length); - - virtual ~TAO_Notify_Buffering_Strategy (); - - /// Execute this strategy. - virtual void execute (ACE_Message_Queue<ACE_SYNCH>* msg_queue, TAO_Notify_Command *mb ACE_ENV_ARG_DECL, ACE_Time_Value *tv); - - /// Set the max. queue length. - void max_queue_length (CORBA::Long max_queue_length); - - /// Set the max. events per consumer. - void max_events_per_consumer (CORBA::Long max_events_per_consumer); - - /// Set the order policy. - void order_policy (CORBA::Short order_policy); - - /// Set the discard policy. - void discard_policy (CORBA::Short discard_policy); - - /// Set the blocking timeout. - void blocking_timeout (TimeBase::TimeT timeout); - -protected: - /// The overall queue length. - TAO_Notify_Signal_Property_Long* const queue_length_; - - /// Discarding policies kicks in when the <queue_length_> exceeds <max_queue_length_> - CORBA::Long max_queue_length_; - - /// Discarding policies kicks in when the <queue_length_> exceeds <max_events_per_consumer_> - CORBA::Long max_events_per_consumer_; - - /// Order of events in internal buffers. - CORBA::Short order_policy_; - - /// Policy to discard when buffers are full. - CORBA::Short discard_policy_; - - /// Should we use the max queue or max events. - CORBA::Boolean use_max_queue_; - - /// The blocking timeout will be used in place of discarding - /// if use_blocking_timeout_ is set. This is a TAO specific extension. - TimeBase::TimeT blocking_timeout_; - CORBA::Boolean use_blocking_timeout_; -}; - -#include "ace/post.h" -#endif /* TAO_NOTIFY_BUFFERING_STRATEGY_H */ diff --git a/TAO/orbsvcs/orbsvcs/Notify/Notify_Channel_Objects_Factory.h b/TAO/orbsvcs/orbsvcs/Notify/Notify_Channel_Objects_Factory.h deleted file mode 100644 index 9376ea7096e..00000000000 --- a/TAO/orbsvcs/orbsvcs/Notify/Notify_Channel_Objects_Factory.h +++ /dev/null @@ -1,113 +0,0 @@ -/* -*- C++ -*- */ -//============================================================================= -/** - * @file Notify_Channel_Objects_Factory.h - * - * $Id$ - * - * Factory for all CosNotify objects defined in the idl files and - * other related objects. - * - * - * @author Pradeep Gore <pradeep@cs.wustl.edu> - */ -//============================================================================= - - -#ifndef TAO_NOTIFY_CO_FACTORY_H -#define TAO_NOTIFY_CO_FACTORY_H - -#include "ace/pre.h" -#include "ace/Service_Object.h" - -#if !defined (ACE_LACKS_PRAGMA_ONCE) -# pragma once -#endif /* ACE_LACKS_PRAGMA_ONCE */ - -#include "tao/corba.h" -#include "notify_export.h" - -class TAO_Notify_EventChannelFactory_i; -class TAO_Notify_EventChannel_i; -class TAO_Notify_ConsumerAdmin_i; -class TAO_Notify_SupplierAdmin_i; -class TAO_Notify_FilterFactory_i; -class TAO_Notify_StructuredProxyPushSupplier_i; -class TAO_Notify_SequenceProxyPushSupplier_i; -class TAO_Notify_ProxyPushSupplier_i; -class TAO_Notify_StructuredProxyPushConsumer_i; -class TAO_Notify_SequenceProxyPushConsumer_i; -class TAO_Notify_ProxyPushConsumer_i; -class ACE_Lock; - -// @@ Pradeep: I'm not sure if I like the name of this class (and the -// name of the file is mismatched).... In any case, you need a better -// description here. I don't see any destroy methods: what if the -// objects are allocated from a free list, or from shared memory or -// something like that? - /** - * @class TAO_Notify_CO_Factory - * - * @brief TAO_Notify_CO_Factory - * - * Factory for channel objects. - */ -class TAO_Notify_Export TAO_Notify_CO_Factory : public ACE_Service_Object -{ - public: - // = Creation methods - /// Create an Event Channel. - virtual TAO_Notify_EventChannel_i* create_event_channel (TAO_Notify_EventChannelFactory_i* parent ACE_ENV_ARG_DECL)=0; - - /// Create a Consumer Admin. - virtual TAO_Notify_ConsumerAdmin_i* create_consumer_admin (TAO_Notify_EventChannel_i* channel ACE_ENV_ARG_DECL)=0; - - /// Create a Supplier Admin. - virtual TAO_Notify_SupplierAdmin_i* create_supplier_admin (TAO_Notify_EventChannel_i* channel ACE_ENV_ARG_DECL)=0; - - /// Create the Filter Factory. - virtual TAO_Notify_FilterFactory_i* create_filter_factory (ACE_ENV_SINGLE_ARG_DECL)=0; - - // = Proxy Creation methods. - /// Create a Structured ProxyPushSupplier. - virtual TAO_Notify_StructuredProxyPushSupplier_i* create_struct_proxy_pushsupplier (TAO_Notify_ConsumerAdmin_i* parent ACE_ENV_ARG_DECL)=0; - - /// Create a Sequence ProxyPushSupplier. - virtual TAO_Notify_SequenceProxyPushSupplier_i* create_seq_proxy_pushsupplier (TAO_Notify_ConsumerAdmin_i* parent ACE_ENV_ARG_DECL)=0; - - /// Create a ProxyPushSupplier. - virtual TAO_Notify_ProxyPushSupplier_i* create_proxy_pushsupplier (TAO_Notify_ConsumerAdmin_i* parent ACE_ENV_ARG_DECL)=0; - - /// Create a Structured ProxyPushConsumer. - virtual TAO_Notify_StructuredProxyPushConsumer_i* create_struct_proxy_pushconsumer (TAO_Notify_SupplierAdmin_i* parent ACE_ENV_ARG_DECL)=0; - - /// Create a Sequence ProxyPushConsumer. - virtual TAO_Notify_SequenceProxyPushConsumer_i* create_seq_proxy_pushconsumer (TAO_Notify_SupplierAdmin_i* parent ACE_ENV_ARG_DECL)=0; - - /// Create a ProxyPushConsumer. - virtual TAO_Notify_ProxyPushConsumer_i* create_proxy_pushconsumer (TAO_Notify_SupplierAdmin_i* parent ACE_ENV_ARG_DECL)=0; - - //= Locks - // = Methods to create locks. - /// Create lock type used by channel factory. - virtual ACE_Lock* create_channel_factory_lock (ACE_ENV_SINGLE_ARG_DECL)=0; - - /// Create lock type used by EC's. - virtual ACE_Lock* create_event_channel_lock (ACE_ENV_SINGLE_ARG_DECL)=0; - - /// Create lock type used by Consumer Admin's. - virtual ACE_Lock* create_consumer_admin_lock (ACE_ENV_SINGLE_ARG_DECL)=0; - - /// Create lock type used by Supplier Admin's. - virtual ACE_Lock* create_supplier_admin_lock (ACE_ENV_SINGLE_ARG_DECL)=0; - - /// Create lock type used by proxy supplier. - virtual ACE_Lock* create_proxy_supplier_lock (ACE_ENV_SINGLE_ARG_DECL)=0; - - /// Create lock type used by proxy consumer. - virtual ACE_Lock* create_proxy_consumer_lock (ACE_ENV_SINGLE_ARG_DECL)=0; -}; - -#include "ace/post.h" - -#endif /* TAO_NOTIFY_CO_FACTORY_H */ diff --git a/TAO/orbsvcs/orbsvcs/Notify/Notify_Collection.cpp b/TAO/orbsvcs/orbsvcs/Notify/Notify_Collection.cpp deleted file mode 100644 index c982a30a01b..00000000000 --- a/TAO/orbsvcs/orbsvcs/Notify/Notify_Collection.cpp +++ /dev/null @@ -1,192 +0,0 @@ -// $Id$ - -#include "Notify_Collection.h" -//#include "Notify_Event.h" -#include "Notify_Listeners.h" -#include "tao/debug.h" - -ACE_RCSID(Notify, Notify_Collection, "$Id$") - -void -TAO_Notify_EventType_List::preprocess (TAO_Notify_EventType_List& current, TAO_Notify_EventType_List& seq_added, TAO_Notify_EventType_List& seq_removed) -{ - #if 0 - if (TAO_debug_level > 0) - { - ACE_DEBUG ((LM_DEBUG, " Before preprocess: current = ")); current.dump (); - ACE_DEBUG ((LM_DEBUG, "\n Before preprocess: seq_added = ")); seq_added.dump (); - ACE_DEBUG ((LM_DEBUG, "\n Before preprocess: seq_removed = ")); seq_removed.dump (); - } -#endif - TAO_Notify_EventType special = TAO_Notify_EventType::special_event_type (); - - if (current.find (special) == 0) - { - if (seq_added.find (special) == 0) - { - seq_added.reset (); - seq_removed.reset (); - } - else - { - current.reset (); - current.insert_seq (seq_added); - - seq_removed.reset (); - seq_removed.insert (special); - } - } - else - { - if (seq_added.find (special) == 0) - { - if (seq_removed.find (special) == 0) - { - seq_added.reset (); - seq_removed.reset (); - } - else - { - seq_removed.reset (); - seq_removed.insert_seq (current); - - current.reset (); - current.insert (special); - - seq_added.reset (); - seq_added.insert (special); - } - } - else - { - if (seq_removed.find (special) == 0) - { - - seq_removed.reset (); - seq_removed.insert_seq (current); - - current.reset (); - current.insert_seq (seq_added); - } - else - { - current.insert_seq (seq_added); - current.remove_seq (seq_removed); - } - } - } - - if (TAO_debug_level > 0) - { - ACE_DEBUG ((LM_DEBUG, " After preprocess: current = ")); current.dump (); - ACE_DEBUG ((LM_DEBUG, "\n After preprocess: seq_added = ")); seq_added.dump (); - ACE_DEBUG ((LM_DEBUG, "\n After preprocess: seq_removed = ")); seq_removed.dump (); - } -} - -// = TAO_Notify_EventType_List -void -TAO_Notify_EventType_List::populate (CosNotification::EventTypeSeq& event_type_seq) -{ - event_type_seq.length (this->size ()); - - TAO_Notify_EventType_List::CONST_ITERATOR iter (*this); - - TAO_Notify_EventType* event_type; - - CORBA::ULong i = 0; - for (iter.first (); iter.next (event_type); iter.advance (), ++i) - event_type_seq[i] = event_type->get_native (); -} - -void -TAO_Notify_EventType_List::insert_seq (const CosNotification::EventTypeSeq& event_type_seq) -{ - TAO_Notify_EventType event_type; - - for (CORBA::ULong i = 0; i < event_type_seq.length (); ++i) - { - event_type = event_type_seq[i]; - inherited::insert (event_type); - } -} - -void -TAO_Notify_EventType_List::remove_seq (const CosNotification::EventTypeSeq& event_type_seq) -{ - TAO_Notify_EventType event_type; - - for (CORBA::ULong i = 0; i < event_type_seq.length (); ++i) - { - event_type = event_type_seq[i]; - inherited::remove (event_type); - } -} - -void -TAO_Notify_EventType_List::insert_seq (const TAO_Notify_EventType_List& event_type_seq) -{ - TAO_Notify_EventType_List::CONST_ITERATOR iter (event_type_seq); - - TAO_Notify_EventType* event_type; - - for (iter.first (); iter.next (event_type); iter.advance ()) - inherited::insert (*event_type); -} - -void -TAO_Notify_EventType_List::remove_seq (const TAO_Notify_EventType_List& event_type_seq) -{ - TAO_Notify_EventType_List::CONST_ITERATOR iter (event_type_seq); - - TAO_Notify_EventType* event_type; - - for (iter.first (); iter.next (event_type); iter.advance ()) - inherited::remove (*event_type); -} - -/********************************************************************/ - -TAO_Notify_Shutdown_Worker::TAO_Notify_Shutdown_Worker (void) -{ -} - -void -TAO_Notify_Shutdown_Worker::work (TAO_Notify_EventListener* listener ACE_ENV_ARG_DECL) -{ - listener->shutdown (ACE_ENV_SINGLE_ARG_PARAMETER); -} - -/********************************************************************/ - -#if defined (ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION) - -template class ACE_Unbounded_Set <TAO_Notify_EventType>; -template class ACE_Unbounded_Set_Iterator<TAO_Notify_EventType>; -template class ACE_Unbounded_Set_Const_Iterator<TAO_Notify_EventType>; -template class ACE_Node<TAO_Notify_EventType>; - -template class ACE_Unbounded_Set<TAO_Notify_EventListener*>; -template class ACE_Unbounded_Set_Iterator<TAO_Notify_EventListener*>; -template class ACE_Node<TAO_Notify_EventListener*>; - -template class ACE_Unbounded_Set<TAO_Notify_UpdateListener*>; -template class ACE_Unbounded_Set_Iterator<TAO_Notify_UpdateListener*>; -template class ACE_Node<TAO_Notify_UpdateListener*>; - -#elif defined (ACE_HAS_TEMPLATE_INSTANTIATION_PRAGMA) - -#pragma instantiate ACE_Unbounded_Set<TAO_Notify_EventType> -#pragma instantiate ACE_Unbounded_Set_Iterator<TAO_Notify_EventType> -#pragma instantiate ACE_Unbounded_Set_Const_Iterator<TAO_Notify_EventType> -#pragma instantiate ACE_Node<TAO_Notify_EventType> - -#pragma instantiate ACE_Unbounded_Set<TAO_Notify_EventListener*> -#pragma instantiate ACE_Unbounded_Set_Iterator<TAO_Notify_EventListener*> -#pragma instantiate ACE_Node<TAO_Notify_EventListener*> - -#pragma instantiate ACE_Unbounded_Set<TAO_Notify_UpdateListener*> -#pragma instantiate ACE_Unbounded_Set_Iterator<TAO_Notify_UpdateListener*> -#pragma instantiate ACE_Node<TAO_Notify_UpdateListener*> - -#endif /*ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION */ diff --git a/TAO/orbsvcs/orbsvcs/Notify/Notify_Collection.h b/TAO/orbsvcs/orbsvcs/Notify/Notify_Collection.h deleted file mode 100644 index a014d9c3b6c..00000000000 --- a/TAO/orbsvcs/orbsvcs/Notify/Notify_Collection.h +++ /dev/null @@ -1,96 +0,0 @@ -//============================================================================= -/** - * @file Notify_Collection.h - * - * $Id$ - * - * Collection types used by Notify - * - * - * @author Pradeep Gore <pradeep@cs.wustl.edu> - */ -//============================================================================= - - -#ifndef TAO_NOTIFY_COLLECTION_H -#define TAO_NOTIFY_COLLECTION_H - -#include "ace/pre.h" -#include "orbsvcs/CosNotifyCommC.h" - -#if !defined (ACE_LACKS_PRAGMA_ONCE) -# pragma once -#endif /* ACE_LACKS_PRAGMA_ONCE */ - -#include "orbsvcs/ESF/ESF_Worker.h" -#include "notify_export.h" -#include "Notify_Event.h" - -template<class PROXY> class TAO_ESF_Proxy_Collection; -template<class T> class ACE_Unbounded_Set; - -class TAO_Notify_EventListener; -class TAO_Notify_UpdateListener; -class TAO_Notify_EventType; - -/// A list of event listeners that are looking for the same event type. -typedef TAO_ESF_Proxy_Collection<TAO_Notify_EventListener> TAO_Notify_EventListener_List; - -/// A list of update listeners who want to be notified about publish/subscribe changes. -typedef TAO_ESF_Proxy_Collection<TAO_Notify_UpdateListener> TAO_Notify_UpdateListener_List; - -/** - * @class TAO_Notify_EventType_List - * - * @brief TAO_Notify_EventType_List - * - * Allows operations using the CosNotification::EventTypeSeq type. - */ -class TAO_Notify_Export TAO_Notify_EventType_List : public ACE_Unbounded_Set <TAO_Notify_EventType> -{ - - typedef ACE_Unbounded_Set <TAO_Notify_EventType> inherited; - -public: - /// Preprocess lists for subscriptions - static void preprocess (TAO_Notify_EventType_List& current, TAO_Notify_EventType_List& seq_added, TAO_Notify_EventType_List& seq_removed); - - /// Populate <event_type_seq> with the contents of this object. - void populate (CosNotification::EventTypeSeq& event_type_seq); - - /// insert the contents of <event_type_seq> into this object. - void insert_seq (const CosNotification::EventTypeSeq& event_type_seq); - - /// remove the contents of <event_type_seq> from this object. - void remove_seq (const CosNotification::EventTypeSeq& event_type_seq); - - /// insert the contents of <event_type_seq> into this object. - void insert_seq (const TAO_Notify_EventType_List& event_type_seq); - - /// remove the contents of <event_type_seq> from this object. - void remove_seq (const TAO_Notify_EventType_List& event_type_seq); -}; - -// **************************************************************** - -// = Collection Iterators. - - /** - * @class TAO_Notify_Shutdown_Worker - * - * @brief TAO_Notify_Shutdown_Worker - * - * Shutdown each listener - */ -class TAO_Notify_Export TAO_Notify_Shutdown_Worker : public TAO_ESF_Worker<TAO_Notify_EventListener> -{ - public: - TAO_Notify_Shutdown_Worker (void); - - // = TAO_ESF_Worker method - void work (TAO_Notify_EventListener* listener ACE_ENV_ARG_DECL); -}; - -// **************************************************************** -#include "ace/post.h" -#endif /* TAO_NOTIFY_COLLECTION_H */ diff --git a/TAO/orbsvcs/orbsvcs/Notify/Notify_Collection_Factory.h b/TAO/orbsvcs/orbsvcs/Notify/Notify_Collection_Factory.h deleted file mode 100644 index 2d06c672fe3..00000000000 --- a/TAO/orbsvcs/orbsvcs/Notify/Notify_Collection_Factory.h +++ /dev/null @@ -1,49 +0,0 @@ -/* -*- C++ -*- */ -//============================================================================= -/** - * @file Notify_Collection_Factory.h - * - * $Id$ - * - * A factory fpr the collection types used by Notify. - * - * - * @author Pradeep Gore <pradeep@cs.wustl.edu> - */ -//============================================================================= - - -#ifndef NOTIFY_COLLECTION_FACTORY_H -#define NOTIFY_COLLECTION_FACTORY_H - -#include "ace/pre.h" -#include "ace/Service_Object.h" - -#if !defined (ACE_LACKS_PRAGMA_ONCE) -# pragma once -#endif /* ACE_LACKS_PRAGMA_ONCE */ - -#include "notify_export.h" -#include "Notify_Collection.h" - -/** - * @class TAO_Notify_Collection_Factory - * - * @brief TAO_Notify_Collection_Factory - * - * Collection factory - */ -class TAO_Notify_Export TAO_Notify_Collection_Factory : public ACE_Service_Object -{ -public: - // = Methods to create listener collections. - /// Create the event listener list. - virtual TAO_Notify_EventListener_List* create_event_listener_list (ACE_ENV_SINGLE_ARG_DECL) = 0; - - /// Create update listener list. - virtual TAO_Notify_UpdateListener_List* create_update_listener_list (ACE_ENV_SINGLE_ARG_DECL) = 0; -}; - -#include "ace/post.h" - -#endif /* NOTIFY_COLLECTION_FACTORY_H */ diff --git a/TAO/orbsvcs/orbsvcs/Notify/Notify_Command.cpp b/TAO/orbsvcs/orbsvcs/Notify/Notify_Command.cpp deleted file mode 100644 index d42202b5074..00000000000 --- a/TAO/orbsvcs/orbsvcs/Notify/Notify_Command.cpp +++ /dev/null @@ -1,9 +0,0 @@ -// $Id$ - -#include "Notify_Command.h" - -#if !defined (__ACE_INLINE__) -#include "Notify_Command.i" -#endif /* __ACE_INLINE__ */ - -ACE_RCSID(Notify, Notify_Command, "$Id$") diff --git a/TAO/orbsvcs/orbsvcs/Notify/Notify_Command.h b/TAO/orbsvcs/orbsvcs/Notify/Notify_Command.h deleted file mode 100644 index 14d1c5a5e18..00000000000 --- a/TAO/orbsvcs/orbsvcs/Notify/Notify_Command.h +++ /dev/null @@ -1,72 +0,0 @@ -/* -*- C++ -*- */ -//============================================================================= -/** - * @file Notify_Command.h - * - * $Id$ - * - * Command Object base class used by Notify's Worker Task objects. - * - * - * @author Pradeep Gore <pradeep@cs.wustl.edu> - */ -//============================================================================= - - -#ifndef TAO_NOTIFY_COMMAND_H -#define TAO_NOTIFY_COMMAND_H - -#include "ace/pre.h" -#include "ace/Message_Block.h" - -#if !defined (ACE_LACKS_PRAGMA_ONCE) -# pragma once -#endif /* ACE_LACKS_PRAGMA_ONCE */ - -#include "tao/corba.h" -#include "notify_export.h" - -#if !defined (TAO_NOTIFY_COMMAND_PRIORITY_BASE) -#define TAO_NOTIFY_COMMAND_PRIORITY_BASE 32768 -#endif /* TAO_NOTIFY_COMMAND_PRIORITY_BASE */ - -class TAO_Notify_Event_Processor; -class TAO_Notify_Event; - - /** - * @class TAO_Notify_Command - * - * @brief TAO_Notify_Command - * - * Base class for Command Objects. - * Command objects are executed by the Notify_Worker_Task. - */ -class TAO_Notify_Export TAO_Notify_Command : public ACE_Message_Block -{ - public: - TAO_Notify_Command (TAO_Notify_Event_Processor* event_processor, TAO_Notify_Event* event); - ~TAO_Notify_Command (); - - /// Command callback - virtual int execute (ACE_ENV_SINGLE_ARG_DECL) = 0; - - virtual CORBA::Short priority (void) const; - -protected: - // = Data Members - /// The command objects should notify the event processor once they have successfully - /// executed commands. - TAO_Notify_Event_Processor* event_processor_; - - /// The event that we "execute" this command on. - TAO_Notify_Event* event_; -}; - - -#if defined (__ACE_INLINE__) -#include "Notify_Command.i" -#endif /* __ACE_INLINE__ */ - -#include "ace/post.h" - -#endif /* TAO_NOTIFY_COMMAND_H */ diff --git a/TAO/orbsvcs/orbsvcs/Notify/Notify_Command.i b/TAO/orbsvcs/orbsvcs/Notify/Notify_Command.i deleted file mode 100644 index a44544ff9cf..00000000000 --- a/TAO/orbsvcs/orbsvcs/Notify/Notify_Command.i +++ /dev/null @@ -1,56 +0,0 @@ -//$Id$ - -#include "Notify_Command.h" -#include "Notify_Event.h" - -ACE_INLINE -TAO_Notify_Command::TAO_Notify_Command (TAO_Notify_Event_Processor* event_processor, TAO_Notify_Event* event) - :event_processor_ (event_processor), - event_ (event) -{ - // Set the parameters that affect queuing in the message queue. - // The ACE_Message_Block priorities go from 0 (lowest) to ULONG_MAX - // (highest), while the Notification Events go from -32767 (lowest, - // even though CORBA::Short goes to -32768) to 32767 (highest). - if (this->event_) - { - // Convert to CORBA::Long to preserve the sign. Conversion to - // unsigned long will happen automatically and we do not have to worry - // about losing the number in the addition since priority () returns a - // CORBA::Short. - this->msg_priority ((CORBA::Long)this->event_->priority () + - TAO_NOTIFY_COMMAND_PRIORITY_BASE); - - // The deadline time for the message block is absolute, while the - // timeout for the event is relative to the time it was received. - // So, we do a little conversion and set it on the message block (us) - if (this->event_->timeout () != 0) - { - // I am multiplying timeout () by 1 because it returns a - // CORBA::ULongLong, which on some platforms doesn't automatically - // convert to the long that the ACE_Time_Value expects. The / - // operator returns a 32-bit integer. - ACE_Time_Value current = ACE_OS::gettimeofday () + -# if defined (ACE_CONFIG_WIN32_H) - ACE_Time_Value ( - ACE_static_cast (long, - this->event_->timeout ())); -# else - ACE_Time_Value (this->event_->timeout () / 1); -# endif /* ACE_CONFIG_WIN32_H */ - this->msg_deadline_time (current); - } - } -} - -ACE_INLINE -TAO_Notify_Command::~TAO_Notify_Command () -{ -} - -ACE_INLINE CORBA::Short -TAO_Notify_Command::priority (void) const -{ - return (CORBA::Short)(this->msg_priority () - - TAO_NOTIFY_COMMAND_PRIORITY_BASE); -} diff --git a/TAO/orbsvcs/orbsvcs/Notify/Notify_Constraint_Interpreter.cpp b/TAO/orbsvcs/orbsvcs/Notify/Notify_Constraint_Interpreter.cpp deleted file mode 100644 index 70cca1e06f0..00000000000 --- a/TAO/orbsvcs/orbsvcs/Notify/Notify_Constraint_Interpreter.cpp +++ /dev/null @@ -1,49 +0,0 @@ -// $Id$ - -#include "Notify_Constraint_Interpreter.h" -#include "Notify_Constraint_Visitors.h" - -ACE_RCSID(Notify, Notify_Constraint_Interpreter, "$Id$") - -TAO_Notify_Constraint_Interpreter::TAO_Notify_Constraint_Interpreter (void) -{ -} - -TAO_Notify_Constraint_Interpreter::~TAO_Notify_Constraint_Interpreter (void) -{ -} - -void -TAO_Notify_Constraint_Interpreter::build_tree ( - const char *constraints - ACE_ENV_ARG_DECL - ) - ACE_THROW_SPEC ((CosNotifyFilter::InvalidConstraint, - CORBA::NO_MEMORY)) -{ - if (TAO_ETCL_Interpreter::is_empty_string (constraints)) - { - // Root is deleted in the TAO_Interpreter's destructor. - ACE_NEW_THROW_EX (this->root_, - TAO_ETCL_Literal_Constraint ((CORBA::Boolean) 1), - CORBA::NO_MEMORY ()); - ACE_CHECK; - } - else - { - // root_ is set in this base class call. - if (TAO_ETCL_Interpreter::build_tree (constraints) != 0) - ACE_THROW (CosNotifyFilter::InvalidConstraint ()); - } -} - -CORBA::Boolean -TAO_Notify_Constraint_Interpreter::evaluate ( - TAO_Notify_Constraint_Visitor &evaluator - ) -{ - CORBA::Boolean retval = - evaluator.evaluate_constraint (this->root_); - - return retval; -} diff --git a/TAO/orbsvcs/orbsvcs/Notify/Notify_Constraint_Interpreter.h b/TAO/orbsvcs/orbsvcs/Notify/Notify_Constraint_Interpreter.h deleted file mode 100644 index 2f12529e974..00000000000 --- a/TAO/orbsvcs/orbsvcs/Notify/Notify_Constraint_Interpreter.h +++ /dev/null @@ -1,63 +0,0 @@ -/* -*- C++ -*- */ -//============================================================================= -/** - * @file Notify_Constraint_Interpreter.h - * - * $Id$ - * - * - * - * - * @author Pradeep Gore <pradeep@cs.wustl.edu> - */ -//============================================================================= - - -#ifndef TAO_NOTIFY_CONSTRAINT_INTERPRETER_H -#define TAO_NOTIFY_CONSTRAINT_INTERPRETER_H - -#include "ace/pre.h" -#include "orbsvcs/ETCL/ETCL_Interpreter.h" - -#if !defined (ACE_LACKS_PRAGMA_ONCE) -# pragma once -#endif /* ACE_LACKS_PRAGMA_ONCE */ - -#include "orbsvcs/ETCL/ETCL_Constraint.h" -#include "orbsvcs/CosNotifyFilterC.h" -#include "notify_export.h" - -class TAO_Notify_Constraint_Visitor; - -/** - * @class TAO_Notify_Constraint_Interpreter - * - * @brief "ETCL" Interpreter for the Notify queries. - */ -class TAO_Notify_Export TAO_Notify_Constraint_Interpreter - : public TAO_ETCL_Interpreter -{ -public: - // = Initialization and termination methods. - TAO_Notify_Constraint_Interpreter (void); - - /// Destructor - ~TAO_Notify_Constraint_Interpreter (void); - - /** - * This method builds an expression tree representing the - * constraint specified in <constraints>, and throws an Illegal - * Constraint exception if the constraint given has syntax errors or - * semantic errors, such as mismatched types. - */ - void build_tree (const char* constraints - ACE_ENV_ARG_DECL) - ACE_THROW_SPEC ((CosNotifyFilter::InvalidConstraint, - CORBA::NO_MEMORY)); - - /// Returns true if the constraint is evaluated successfully by - /// the evaluator. - CORBA::Boolean evaluate (TAO_Notify_Constraint_Visitor &evaluator); -}; -#include "ace/post.h" -#endif /* TAO_NOTIFY_CONSTRAINT_INTERPRETER_H */ diff --git a/TAO/orbsvcs/orbsvcs/Notify/Notify_Constraint_Visitors.cpp b/TAO/orbsvcs/orbsvcs/Notify/Notify_Constraint_Visitors.cpp deleted file mode 100644 index 49cc40225aa..00000000000 --- a/TAO/orbsvcs/orbsvcs/Notify/Notify_Constraint_Visitors.cpp +++ /dev/null @@ -1,1564 +0,0 @@ -/* -*- C++ -*- */ -/* $Id$ */ - -#include "Notify_Constraint_Visitors.h" -#include "orbsvcs/ETCL/ETCL_Constraint.h" -#include "orbsvcs/ETCL/ETCL_y.h" -#include "tao/DynamicAny/DynArray_i.h" -#include "tao/DynamicAny/DynSequence_i.h" -#include "tao/DynamicAny/DynStruct_i.h" -#include "tao/DynamicAny/DynUnion_i.h" -#include "tao/DynamicAny/DynEnum_i.h" -#include "tao/DynamicAny/DynAnyFactory.h" - -TAO_Notify_Constraint_Visitor::TAO_Notify_Constraint_Visitor (void) - : implicit_id_ (NONE) -{ - (void) this->implicit_ids_.bind (ACE_CString ("filterable_data", - 0, - 0), - FILTERABLE_DATA); - (void) this->implicit_ids_.bind (ACE_CString ("header", - 0, - 0), - HEADER); - (void) this->implicit_ids_.bind (ACE_CString ("remainder_of_body", - 0, - 0), - REMAINDER_OF_BODY); - (void) this->implicit_ids_.bind (ACE_CString ("fixed_header", - 0, - 0), - FIXED_HEADER); - (void) this->implicit_ids_.bind (ACE_CString ("variable_header", - 0, - 0), - VARIABLE_HEADER); - (void) this->implicit_ids_.bind (ACE_CString ("event_name", - 0, - 0), - EVENT_NAME); - (void) this->implicit_ids_.bind (ACE_CString ("event_type", - 0, - 0), - EVENT_TYPE); - (void) this->implicit_ids_.bind (ACE_CString ("domain_name", - 0, - 0), - DOMAIN_NAME); - (void) this->implicit_ids_.bind (ACE_CString ("type_name", - 0, - 0), - TYPE_NAME); -} - -int -TAO_Notify_Constraint_Visitor::bind_structured_event ( - const CosNotification::StructuredEvent &s_event - ) -{ - // The two sequences contained in a structured event are - // copied into hash tables so iteration is done only once. - - CORBA::ULong length = s_event.filterable_data.length (); - CORBA::ULong index = 0; - - for (index = 0; index < length; ++index) - { - ACE_CString name_str (s_event.filterable_data[index].name, 0, 0); - - int status = - this->filterable_data_.bind ( - name_str, - ACE_const_cast (CORBA::Any *, - &s_event.filterable_data[index].value) - ); - - if (status != 0) - { - return -1; - } - } - - length = s_event.header.variable_header.length (); - - for (index = 0; index < length; ++index) - { - ACE_CString name_str (s_event.header.variable_header[index].name, 0, 0); - - int status = - this->variable_header_.bind ( - name_str, - ACE_const_cast (CORBA::Any *, - &s_event.header.variable_header[index].value) - ); - - if (status != 0) - { - return -1; - } - } - - this->domain_name_ = - CORBA::string_dup (s_event.header.fixed_header.event_type.domain_name); - - this->type_name_ = - CORBA::string_dup (s_event.header.fixed_header.event_type.type_name); - - this->event_name_ = - CORBA::string_dup (s_event.header.fixed_header.event_name); - - this->remainder_of_body_ = s_event.remainder_of_body; - - return 0; -} - -CORBA::Boolean -TAO_Notify_Constraint_Visitor::evaluate_constraint ( - TAO_ETCL_Constraint* root - ) -{ - CORBA::Boolean result = 0; - this->queue_.reset (); - - // Evaluate the constraint in root_; - if (root != 0) - { - if ((root->accept (this) == 0) && - (! this->queue_.is_empty ())) - { - TAO_ETCL_Literal_Constraint top; - this->queue_.dequeue_head (top); - result = (CORBA::Boolean) top; - } - } - - // If a property couldn't be evaluated we must return 0. - return result; -} - -int -TAO_Notify_Constraint_Visitor::visit_literal ( - TAO_ETCL_Literal_Constraint *literal - ) -{ - this->queue_.enqueue_head (*literal); - return 0; -} - -int -TAO_Notify_Constraint_Visitor::visit_identifier (TAO_ETCL_Identifier *ident) -{ - int return_value = -1; - const char *name = ident->value (); - ACE_CString key (name, 0, 0); - - CORBA::Any *any = 0; - - if (this->filterable_data_.find (key, any) == 0) - { - if (any != 0) - { - this->queue_.enqueue_head (TAO_ETCL_Literal_Constraint (any)); - return_value = 0; - } - } - - return return_value; -} - -int -TAO_Notify_Constraint_Visitor::visit_union_value ( - TAO_ETCL_Union_Value *union_value - ) -{ - switch (union_value->sign ()) - { - case 0: - this->queue_.enqueue_head (*union_value->string ()); - break; - case -1: - this->queue_.enqueue_head (-(*union_value->integer ())); - break; - case 1: - this->queue_.enqueue_head (*union_value->integer ()); - break; - default: - return -1; - } - - return 0; -} - -int -TAO_Notify_Constraint_Visitor::visit_union_pos ( - TAO_ETCL_Union_Pos *union_pos - ) -{ - ACE_DECLARE_NEW_CORBA_ENV; - ACE_TRY - { - if (union_pos->union_value ()->accept (this) == 0) - { - TAO_ETCL_Literal_Constraint disc_val; - this->queue_.dequeue_head (disc_val); - - TAO_DynUnion_i dyn_union; - dyn_union.init (this->current_value_.in () - ACE_ENV_ARG_PARAMETER); - ACE_TRY_CHECK; - - CORBA::TypeCode_var tc = this->current_value_->type (); - - switch (disc_val.expr_type ()) - { - case TAO_ETCL_INTEGER: - case TAO_ETCL_SIGNED: - case TAO_ETCL_UNSIGNED: - { - CORBA::Any disc_any; - CORBA::TypeCode_var disc_tc = - tc->discriminator_type (ACE_ENV_SINGLE_ARG_PARAMETER); - ACE_TRY_CHECK; - CORBA::TCKind disc_kind = - TAO_DynAnyFactory::unalias (disc_tc.in () - ACE_ENV_ARG_PARAMETER); - ACE_TRY_CHECK; - - switch (disc_kind) - { - case CORBA::tk_boolean: - disc_any <<= CORBA::Any::from_boolean ((CORBA::Boolean) disc_val); - break; - case CORBA::tk_short: - disc_any <<= (CORBA::Short) ((CORBA::Long) disc_val); - break; - case CORBA::tk_ushort: - disc_any <<= (CORBA::UShort) ((CORBA::ULong) disc_val); - break; - case CORBA::tk_long: - disc_any <<= (CORBA::Long) disc_val; - break; - case CORBA::tk_ulong: - disc_any <<= (CORBA::ULong) disc_val; - break; - case CORBA::tk_enum: - { - TAO_OutputCDR cdr; - cdr.write_ulong ((CORBA::ULong) disc_val); - disc_any._tao_replace (disc_tc.in (), - TAO_ENCAP_BYTE_ORDER, - cdr.begin ()); - break; - } - // @@@ (JP) I don't think ETCL handles 64-bit - // integers at this point, and I also think that - // chars and/or wchars will just come out in the - // constraint as (w)strings of length 1. - case CORBA::tk_longlong: - case CORBA::tk_ulonglong: - case CORBA::tk_char: - case CORBA::tk_wchar: - default: - return -1; - } - - DynamicAny::DynAny_var dyn_any = - TAO_DynAnyFactory::make_dyn_any (disc_any - ACE_ENV_ARG_PARAMETER); - ACE_TRY_CHECK; - dyn_union.set_discriminator (dyn_any.in () - ACE_ENV_ARG_PARAMETER); - ACE_TRY_CHECK; - DynamicAny::DynAny_var u_member = - dyn_union.member (ACE_ENV_SINGLE_ARG_PARAMETER); - ACE_TRY_CHECK; - this->current_value_ = - u_member->to_any (ACE_ENV_SINGLE_ARG_PARAMETER); - ACE_TRY_CHECK; - - break; - } - case TAO_ETCL_STRING: - { - const char *name = (const char *) disc_val; - CORBA::ULong count = - tc->member_count (ACE_ENV_SINGLE_ARG_PARAMETER); - ACE_TRY_CHECK; - - const char *member_name = 0; - CORBA::ULong i = 0; - - for (i = 0; i < count; ++i) - { - member_name = tc->member_name (i - ACE_ENV_ARG_PARAMETER); - ACE_TRY_CHECK; - - if (ACE_OS::strcmp (name, member_name) == 0) - { - break; - } - } - - // If there's no match, member_label will throw - // CORBA::TypeCode::Bounds and the catch block will - // return -1; - this->current_value_ = tc->member_label (i - ACE_ENV_ARG_PARAMETER); - ACE_TRY_CHECK; - - break; - } - // The TAO_ETCL_Union_Value that was put on the queue - // shouldn't have any other type. - default: - return -1; - } - - TAO_ETCL_Constraint *nested = union_pos->component (); - - // If there's no nested component, then we just want the - // union member value on the queue. Otherwise, we want - // the member value in current_value_ while we visit - // the nested component. - if (nested == 0) - { - TAO_ETCL_Literal_Constraint lit (this->current_value_); - this->queue_.enqueue_head (lit); - return 0; - } - else - { - return nested->accept (this); - } - } - else - { - return -1; - } - } - ACE_CATCHANY - { - return -1; - } - ACE_ENDTRY; - - ACE_NOTREACHED (return 0); -} - -int -TAO_Notify_Constraint_Visitor::visit_component_pos ( - TAO_ETCL_Component_Pos *pos - ) -{ - ACE_DECLARE_NEW_CORBA_ENV; - ACE_TRY - { - // If we are here (from visit_component) the Any containing the - // component as found in filterable_data_ will be in current_value_. - CORBA::TypeCode_var tc = this->current_value_->type (); - CORBA::TCKind kind = TAO_DynAnyFactory::unalias (tc.in () - ACE_ENV_ARG_PARAMETER); - ACE_TRY_CHECK; - - DynamicAny::DynAny_var member; - CORBA::Boolean success = 0; - CORBA::ULong slot = (CORBA::ULong) *pos->integer (); - - switch (kind) - { - case CORBA::tk_enum: - { - TAO_DynEnum_i dyn_enum; - dyn_enum.init (this->current_value_.in () - ACE_ENV_ARG_PARAMETER); - ACE_TRY_CHECK; - - success = dyn_enum.seek (slot - ACE_ENV_ARG_PARAMETER); - ACE_TRY_CHECK; - - if (success == 0) - { - return -1; - } - - member = - dyn_enum.current_component (ACE_ENV_SINGLE_ARG_PARAMETER); - ACE_TRY_CHECK; - - break; - } - case CORBA::tk_struct: - { - TAO_DynStruct_i dyn_struct; - dyn_struct.init (this->current_value_.in () - ACE_ENV_ARG_PARAMETER); - ACE_TRY_CHECK; - - success = dyn_struct.seek (slot - ACE_ENV_ARG_PARAMETER); - ACE_TRY_CHECK; - - if (success == 0) - { - return -1; - } - - member = dyn_struct.current_component (ACE_ENV_SINGLE_ARG_PARAMETER); - ACE_TRY_CHECK; - - break; - } - // @@@ (JP) I think enums and structs are the only two cases handled - // by Component_Pos, since arrays and sequences are handled by - // Component_Array, and unions are handled by Union_Pos. - default: - return -1; - } - - CORBA::Any_var value = member->to_any (ACE_ENV_SINGLE_ARG_PARAMETER); - ACE_TRY_CHECK; - - TAO_ETCL_Constraint *comp = pos->component (); - - if (comp == 0) - { - TAO_ETCL_Literal_Constraint result (value); - this->queue_.enqueue_head (result); - return 0; - } - else - { - this->current_value_ = value._retn (); - return comp->accept (this); - } - } - ACE_CATCHANY - { - return -1; - } - ACE_ENDTRY; - - ACE_NOTREACHED (return 0); -} - -int -TAO_Notify_Constraint_Visitor::visit_component_assoc ( - TAO_ETCL_Component_Assoc *assoc - ) -{ - CORBA::Any *any = 0; - ACE_CString name (assoc->identifier ()->value (), - 0, - 0); - - switch (this->implicit_id_) - { - case FILTERABLE_DATA: - if (this->filterable_data_.find (name, any) != 0 - || any == 0) - { - return -1; - } - - break; - case VARIABLE_HEADER: - if (this->variable_header_.find (name, any) != 0 - || any == 0) - { - return -1; - } - - break; - // Only the sequence members of CosNotification::StructuredEvent can be - // treated as associative arrays. - default: - return -1; - } - - TAO_ETCL_Constraint *comp = assoc->component (); - CORBA::Any *any_ptr = 0; - - if (comp == 0) - { - TAO_ETCL_Literal_Constraint result (any); - this->queue_.enqueue_head (result); - - // If we're at the end of the line, put the name into - // current_value_ so visit_exist can use it. - ACE_NEW_RETURN (any_ptr, - CORBA::Any, - -1); - (*any_ptr) <<= name.c_str (); - this->current_value_ = any_ptr; - - return 0; - } - else - { - ACE_NEW_RETURN (any_ptr, - CORBA::Any (*any), - -1); - this->current_value_ = any_ptr; - return comp->accept (this); - } -} - -int -TAO_Notify_Constraint_Visitor::visit_component_array ( - TAO_ETCL_Component_Array *array - ) -{ - ACE_DECLARE_NEW_CORBA_ENV; - ACE_TRY - { - // If we are here (from visit_component) the Any containing the - // component as found in filterable_data_ will be in current_value_. - CORBA::TypeCode_var tc = this->current_value_->type (); - CORBA::TCKind kind = TAO_DynAnyFactory::unalias (tc.in () - ACE_ENV_ARG_PARAMETER); - ACE_TRY_CHECK; - - DynamicAny::DynAny_var member; - CORBA::Boolean success = 0; - CORBA::ULong slot = (CORBA::ULong) *array->integer (); - - switch (kind) - { - case CORBA::tk_array: - { - TAO_DynEnum_i dyn_array; - dyn_array.init (this->current_value_.in () - ACE_ENV_ARG_PARAMETER); - ACE_TRY_CHECK; - - success = dyn_array.seek (slot - ACE_ENV_ARG_PARAMETER); - ACE_TRY_CHECK; - - if (success == 0) - { - return -1; - } - - member = dyn_array.current_component (ACE_ENV_SINGLE_ARG_PARAMETER); - ACE_TRY_CHECK; - - break; - } - case CORBA::tk_sequence: - { - TAO_DynStruct_i dyn_sequence; - dyn_sequence.init (this->current_value_.in () - ACE_ENV_ARG_PARAMETER); - ACE_TRY_CHECK; - - success = dyn_sequence.seek (slot - ACE_ENV_ARG_PARAMETER); - ACE_TRY_CHECK; - - if (success == 0) - { - return -1; - } - - member = - dyn_sequence.current_component (ACE_ENV_SINGLE_ARG_PARAMETER); - ACE_TRY_CHECK; - - break; - } - // Enums and sequences are the only two cases handled - // by Component_Array. - default: - return -1; - } - - CORBA::Any_var value = member->to_any (ACE_ENV_SINGLE_ARG_PARAMETER); - ACE_TRY_CHECK; - - TAO_ETCL_Constraint *comp = array->component (); - - if (comp == 0) - { - TAO_ETCL_Literal_Constraint result (value); - this->queue_.enqueue_head (result); - return 0; - } - else - { - this->current_value_ = value._retn (); - return comp->accept (this); - } - } - ACE_CATCHANY - { - return -1; - } - ACE_ENDTRY; - - ACE_NOTREACHED (return 0); -} - -int -TAO_Notify_Constraint_Visitor::visit_special (TAO_ETCL_Special *special) -{ - ACE_DECLARE_NEW_CORBA_ENV; - ACE_TRY - { - CORBA::TypeCode_var tc = this->current_value_->type (); - - switch (special->type ()) - { - case TAO_ETCL_LENGTH: - { - // If the TCKind is not a sequence or an array, the - // call to length() will raise an exception, and the - // catch block will return -1; - CORBA::ULong length = tc->length (ACE_ENV_SINGLE_ARG_PARAMETER); - ACE_TRY_CHECK; - - TAO_ETCL_Literal_Constraint lit (length); - this->queue_.enqueue_head (lit); - return 0; - } - case TAO_ETCL_DISCRIMINANT: - { - // If the TCKind is not a union, the - // call to init() will raise an exception, and the - // catch block will return -1; - TAO_DynUnion_i dyn_union; - dyn_union.init (this->current_value_.in () - ACE_ENV_ARG_PARAMETER); - ACE_TRY_CHECK; - - DynamicAny::DynAny_var disc = - dyn_union.get_discriminator (ACE_ENV_SINGLE_ARG_PARAMETER); - ACE_TRY_CHECK; - - CORBA::Any_var disc_any = disc->to_any (ACE_ENV_SINGLE_ARG_PARAMETER); - ACE_TRY_CHECK; - - TAO_ETCL_Literal_Constraint lit (disc_any); - this->queue_.enqueue_head (lit); - return 0; - } - case TAO_ETCL_TYPE_ID: - { - const char *name = tc->name (ACE_ENV_SINGLE_ARG_PARAMETER); - ACE_TRY_CHECK; - - TAO_ETCL_Literal_Constraint lit (name); - this->queue_.enqueue_head (lit); - return 0; - } - case TAO_ETCL_REPOS_ID: - { - const char *id = tc->id (ACE_ENV_SINGLE_ARG_PARAMETER); - ACE_TRY_CHECK; - - TAO_ETCL_Literal_Constraint lit (id); - this->queue_.enqueue_head (lit); - return 0; - } - default: - return -1; - } - } - ACE_CATCHANY - { - return -1; - } - ACE_ENDTRY; - - ACE_NOTREACHED (return 0); -} - -int -TAO_Notify_Constraint_Visitor::visit_component ( - TAO_ETCL_Component *component - ) -{ - TAO_ETCL_Constraint *nested = component->component (); - TAO_ETCL_Identifier *identifier = component->identifier (); - ACE_CString component_name (identifier->value (), - 0, - 0); - CORBA::Any *any_ptr = 0; - - if (this->implicit_ids_.find (component_name, this->implicit_id_) != 0) - { - this->implicit_id_ = NONE; - } - - // If this component has no sub-component, only an identifier, - // then we just visit the identifier, which puts a literal on - // the queue to be handled upon returning from this method call. - // If there is a sub-component, we store the literal's value - // in our member _var for possible examination at a more - // nested level, and visit the sub-component. If the identifier - // matches one of the nested field names in - // CosNotification::StructuredEvent, we just visit the nested - // component, if any. - if (this->implicit_id_ == NONE) - { - if (nested == 0) - { - // If this is the end of the line, we put the component name - // into current_value_ so visit_exist can use it. - ACE_NEW_RETURN (any_ptr, - CORBA::Any, - -1); - (*any_ptr) <<= component_name.c_str (); - this->current_value_ = any_ptr; - return identifier->accept (this); - } - else - { - int result = identifier->accept (this); - - if (result != 0) - { - return result; - } - - TAO_ETCL_Literal_Constraint id; - this->queue_.dequeue_head (id); - ACE_NEW_RETURN (any_ptr, - CORBA::Any (*(const CORBA::Any *) id), - -1); - this->current_value_ = any_ptr; - } - } - - if (nested != 0) - { - return nested->accept (this); - } - else - { - switch (this->implicit_id_) - { - case TYPE_NAME: - { - TAO_ETCL_Literal_Constraint tn (this->type_name_.in ()); - this->queue_.enqueue_head (tn); - return 0; - } - case EVENT_NAME: - { - TAO_ETCL_Literal_Constraint en (this->event_name_.in ()); - this->queue_.enqueue_head (en); - return 0; - } - case DOMAIN_NAME: - { - TAO_ETCL_Literal_Constraint dn (this->domain_name_.in ()); - this->queue_.enqueue_head (dn); - return 0; - } - case REMAINDER_OF_BODY: - { - TAO_ETCL_Literal_Constraint rob (&this->remainder_of_body_); - this->queue_.enqueue_head (rob); - return 0; - } - // The above cases are the leaves of the - // CosNotification::StructuredEvent "tree". Anything else and we - // should have a nested component. otherwise, it's an error. - default: - return -1; - } - } -} - -int -TAO_Notify_Constraint_Visitor::visit_dot (TAO_ETCL_Dot *dot) -{ - // If we are here, we know we're headed for a more nested - // level, so we just visit it, there's nothing else in this - // constraint. - return dot->component ()->accept (this); -} - -int -TAO_Notify_Constraint_Visitor::visit_eval (TAO_ETCL_Eval *eval) -{ - // Nothing to do but visit the contained component. - return eval->component ()->accept (this); -} - -int -TAO_Notify_Constraint_Visitor::visit_default (TAO_ETCL_Default *def) -{ - TAO_ETCL_Constraint *comp = def->component (); - - if (comp == 0) - { - return -1; - } - - if (comp->accept (this) != 0) - { - return -1; - } - - ACE_DECLARE_NEW_CORBA_ENV; - ACE_TRY - { - CORBA::TypeCode_var tc = this->current_value_->type (); - - // If the current member is not a union, this call will - // throw BadKind and the catch block will return -1. - CORBA::Long default_index = tc->default_index (ACE_ENV_SINGLE_ARG_PARAMETER); - ACE_TRY_CHECK; - - // No default index. - if (default_index == -1) - { - TAO_ETCL_Literal_Constraint result ((CORBA::Boolean) 0); - this->queue_.enqueue_head (result); - return 0; - } - - // Okay, there's a default index, but is it active? - - TAO_ETCL_Literal_Constraint disc; - this->queue_.dequeue_head (disc); - TAO_ETCL_Literal_Constraint default_index_value (default_index); - return (disc == default_index_value); - } - ACE_CATCHANY - { - return -1; - } - ACE_ENDTRY; - - ACE_NOTREACHED (return 0); -} - -int -TAO_Notify_Constraint_Visitor::visit_exist (TAO_ETCL_Exist *exist) -{ - TAO_ETCL_Constraint *component = exist->component (); - - if (component->accept (this) == 0) - { - const char *value = 0; - CORBA::Boolean result = 0; - - // For the two cases below, we don't want the item at the top of - // the queue, because it's the result of a hash table lookup. For - // an existence test, we want the key value, which is stored in - // the current_value_ member. - if (this->implicit_id_ == FILTERABLE_DATA - || this->implicit_id_ == VARIABLE_HEADER) - { - TAO_ETCL_Literal_Constraint current ( - &this->current_value_.inout () - ); - value = CORBA::string_dup ((const char *) current); - } - - switch (this->implicit_id_) - { - case FILTERABLE_DATA: - result = - (this->filterable_data_.find (ACE_CString (value, 0, 0)) == 0); - break; - case VARIABLE_HEADER: - result = - (this->variable_header_.find (ACE_CString (value, 0, 0)) == 0); - break; - case TYPE_NAME: - result = (this->type_name_.in () != 0); - break; - case EVENT_NAME: - result = (this->event_name_.in () != 0); - break; - case DOMAIN_NAME: - result = (this->domain_name_.in () != 0); - break; - // Anything other than the above cases is an error. - default: - return -1; - } - - this->queue_.enqueue_head (TAO_ETCL_Literal_Constraint (result)); - - return 0; - } - - return -1; -} - -int -TAO_Notify_Constraint_Visitor::visit_unary_expr ( - TAO_ETCL_Unary_Expr *unary_expr - ) -{ - TAO_ETCL_Constraint *subexpr = unary_expr->subexpr (); - - if (subexpr->accept (this) == 0) - { - TAO_ETCL_Literal_Constraint subexpr_result; - CORBA::Boolean result = 0; - int op_type = unary_expr->type (); - - switch (op_type) - { - case TAO_ETCL_NOT: - this->queue_.dequeue_head (subexpr_result); - result = ! (CORBA::Boolean) subexpr_result; - this->queue_.enqueue_head (TAO_ETCL_Literal_Constraint (result)); - return 0; - case TAO_ETCL_MINUS: - // The leading '-' was parsed separately, so we have to pull - // the literal constraint off the queue, apply the class' own - // unary minus operator, and put it back. - this->queue_.dequeue_head (subexpr_result); - this->queue_.enqueue_head (-subexpr_result); - return 0; - case TAO_ETCL_PLUS: - // Leave the literal constraint on the queue. The leading - // '+' was just syntactic sugar - no action is necessary. - return 0; - default: - // The parser should never construct a TAO_ETCL_Unary_Constraint - // behind any operators except the above three. - return -1; - } - } - - return -1; -} - -int -TAO_Notify_Constraint_Visitor::visit_binary_expr ( - TAO_ETCL_Binary_Expr *binary_expr - ) -{ - int bin_op_type = binary_expr->type (); - - switch (bin_op_type) - { - case TAO_ETCL_OR: - return this->visit_or (binary_expr); - case TAO_ETCL_AND: - return this->visit_and (binary_expr); - case TAO_ETCL_LT: - case TAO_ETCL_LE: - case TAO_ETCL_GT: - case TAO_ETCL_GE: - case TAO_ETCL_EQ: - case TAO_ETCL_NE: - case TAO_ETCL_PLUS: - case TAO_ETCL_MINUS: - case TAO_ETCL_MULT: - case TAO_ETCL_DIV: - return this->visit_binary_op (binary_expr, - bin_op_type); - case TAO_ETCL_TWIDDLE: - return this->visit_twiddle (binary_expr); - case TAO_ETCL_IN: - return this->visit_in (binary_expr); - default: - return -1; - } -} - -int -TAO_Notify_Constraint_Visitor::visit_or ( - TAO_ETCL_Binary_Expr *binary - ) -{ - int return_value = -1; - CORBA::Boolean result = 0; - TAO_ETCL_Constraint *lhs = binary->lhs (); - - if (lhs->accept (this) == 0) - { - TAO_ETCL_Literal_Constraint lhs_result; - this->queue_.dequeue_head (lhs_result); - result = (CORBA::Boolean) lhs_result; - - // Short-circuiting OR. - if (result == 0) - { - TAO_ETCL_Constraint *rhs = binary->rhs (); - - if (rhs->accept (this) == 0) - { - TAO_ETCL_Literal_Constraint rhs_result; - this->queue_.dequeue_head (rhs_result); - result = (CORBA::Boolean) rhs_result; - return_value = 0; - } - } - else - { - return_value = 0; - } - } - - if (return_value == 0) - { - this->queue_.enqueue_head (TAO_ETCL_Literal_Constraint (result)); - } - - return return_value; -} - -int -TAO_Notify_Constraint_Visitor::visit_and ( - TAO_ETCL_Binary_Expr *binary - ) -{ - int return_value = -1; - CORBA::Boolean result = 0; - TAO_ETCL_Constraint *lhs = binary->lhs (); - - if (lhs->accept (this) == 0) - { - TAO_ETCL_Literal_Constraint lhs_result; - this->queue_.dequeue_head (lhs_result); - result = (CORBA::Boolean) lhs_result; - - // Short-circuiting AND. - if (result == 1) - { - TAO_ETCL_Constraint *rhs = binary->rhs (); - - if (rhs->accept (this) == 0) - { - TAO_ETCL_Literal_Constraint rhs_result; - this->queue_.dequeue_head (rhs_result); - result = (CORBA::Boolean) rhs_result; - return_value = 0; - } - } - else - { - return_value = 0; - } - } - - if (return_value == 0) - { - this->queue_.enqueue_head (TAO_ETCL_Literal_Constraint (result)); - } - - return return_value; -} - -int -TAO_Notify_Constraint_Visitor::visit_binary_op ( - TAO_ETCL_Binary_Expr *binary, - int op_type - ) -{ - int return_value = -1; - TAO_ETCL_Constraint *lhs = binary->lhs (); - CORBA::Boolean result = 0; - - // Perform an operation on the results of evaluating the left and - // right branches of this subtree. - if (lhs->accept (this) == 0) - { - TAO_ETCL_Literal_Constraint left_operand; - this->queue_.dequeue_head (left_operand); - TAO_ETCL_Constraint *rhs = binary->rhs (); - - if (rhs->accept (this) == 0) - { - TAO_ETCL_Literal_Constraint right_operand; - this->queue_.dequeue_head (right_operand); - return_value = 0; - - switch (op_type) - { - case TAO_ETCL_LT: - result = left_operand < right_operand; - this->queue_.enqueue_head (TAO_ETCL_Literal_Constraint (result)); - break; - case TAO_ETCL_LE: - result = left_operand <= right_operand; - this->queue_.enqueue_head (TAO_ETCL_Literal_Constraint (result)); - break; - case TAO_ETCL_GT: - result = left_operand > right_operand; - this->queue_.enqueue_head (TAO_ETCL_Literal_Constraint (result)); - break; - case TAO_ETCL_GE: - result = left_operand >= right_operand; - this->queue_.enqueue_head (TAO_ETCL_Literal_Constraint (result)); - break; - case TAO_ETCL_EQ: - result = left_operand == right_operand; - this->queue_.enqueue_head (TAO_ETCL_Literal_Constraint (result)); - break; - case TAO_ETCL_NE: - result = left_operand != right_operand; - this->queue_.enqueue_head (TAO_ETCL_Literal_Constraint (result)); - break; - case TAO_ETCL_PLUS: - this->queue_.enqueue_head (left_operand + right_operand); - break; - case TAO_ETCL_MINUS: - this->queue_.enqueue_head (left_operand - right_operand); - break; - case TAO_ETCL_MULT: - this->queue_.enqueue_head (left_operand * right_operand); - break; - case TAO_ETCL_DIV: - this->queue_.enqueue_head (left_operand / right_operand); - break; - default: - return_value = -1; - } - } - } - - return return_value; -} - -int -TAO_Notify_Constraint_Visitor::visit_twiddle ( - TAO_ETCL_Binary_Expr *binary - ) -{ - int return_value = -1; - TAO_ETCL_Constraint *lhs = binary->lhs (); - - // Determine if the left operand is a substring of the right. - if (lhs->accept (this) == 0) - { - TAO_ETCL_Literal_Constraint left; - this->queue_.dequeue_head (left); - TAO_ETCL_Constraint *rhs = binary->rhs (); - - if (rhs->accept (this) == 0) - { - TAO_ETCL_Literal_Constraint right; - this->queue_.dequeue_head (right); - CORBA::Boolean result = - (ACE_OS::strstr ((const char *) right, - (const char *) left) != 0); - this->queue_.enqueue_head (TAO_ETCL_Literal_Constraint (result)); - return_value = 0; - } - } - - return return_value; -} - -int -TAO_Notify_Constraint_Visitor::visit_in ( - TAO_ETCL_Binary_Expr *binary - ) -{ - int return_value = -1; - TAO_ETCL_Constraint *lhs = binary->lhs (); - - // Determine if the left operand is contained in the right. - - if (lhs->accept (this) == 0) - { - TAO_ETCL_Literal_Constraint left; - this->queue_.dequeue_head (left); - - TAO_ETCL_Constraint *rhs = binary->rhs (); - - if (rhs->accept (this) == 0) - { - TAO_ETCL_Literal_Constraint bag; - this->queue_.dequeue_head (bag); - - if (bag.expr_type () == TAO_ETCL_COMPONENT) - { - const CORBA::Any *component = (const CORBA::Any *) bag; - CORBA::TCKind kind = CORBA::tk_null; - - ACE_DECLARE_NEW_CORBA_ENV; - ACE_TRY - { - CORBA::TypeCode_var tc = component->type (); - kind = TAO_DynAnyFactory::unalias (tc.in () - ACE_ENV_ARG_PARAMETER); - ACE_TRY_CHECK; - } - ACE_CATCHANY - { - return return_value; - } - ACE_ENDTRY; - - CORBA::Boolean result = 0; - - switch (kind) - { - case CORBA::tk_sequence: - result = this->sequence_does_contain (component, - left); - break; - case CORBA::tk_array: - result = this->array_does_contain (component, - left); - break; - case CORBA::tk_struct: - result = this->struct_does_contain (component, - left); - break; - case CORBA::tk_union: - result = this->union_does_contain (component, - left); - break; - case CORBA::tk_any: - result = this->any_does_contain (component, - left); - break; - default: - return return_value; - } - - this->queue_.enqueue_head (TAO_ETCL_Literal_Constraint (result)); - return_value = 0; - } - } - } - - return return_value; -} - -int -TAO_Notify_Constraint_Visitor::visit_preference ( - TAO_ETCL_Preference * - ) -{ - // According to OMG 00-06-20 section 2.4.1, the Notification Service - // does not use the preference operators. The method must be here - // because it is called by the ETCL node, which may be used by other - // CORBA services that do use the preference operators. - return -1; -} - -CORBA::Boolean -TAO_Notify_Constraint_Visitor::sequence_does_contain ( - const CORBA::Any *any, - TAO_ETCL_Literal_Constraint &item - ) -{ - ACE_DECLARE_NEW_CORBA_ENV; - ACE_TRY - { - CORBA::TypeCode_var type = any->type (); - CORBA::TCKind kind = TAO_DynAnyFactory::unalias (type.in () - ACE_ENV_ARG_PARAMETER); - ACE_TRY_CHECK; - - // The literal and the array elements must be - // of the same simple type. - CORBA::Boolean match = this->simple_type_match (item.expr_type (), - kind); - - if (match == 0) - { - return 0; - } - - TAO_DynSequence_i dyn_seq; - dyn_seq.init (*any - ACE_ENV_ARG_PARAMETER); - ACE_TRY_CHECK; - - DynamicAny::AnySeq_var any_seq = - dyn_seq.get_elements (ACE_ENV_SINGLE_ARG_PARAMETER); - ACE_TRY_CHECK; - - CORBA::ULong length = any_seq->length (); - - for (CORBA::ULong i = 0; i < length; ++i) - { - TAO_ETCL_Literal_Constraint element (&any_seq[i]); - - if (item == element) - { - return 1; - } - } - } - ACE_CATCHANY - { - return 0; - } - ACE_ENDTRY; - - return 0; -} - -CORBA::Boolean -TAO_Notify_Constraint_Visitor::array_does_contain ( - const CORBA::Any *any, - TAO_ETCL_Literal_Constraint &item - ) -{ - ACE_DECLARE_NEW_CORBA_ENV; - ACE_TRY - { - CORBA::TypeCode_var type = any->type (); - CORBA::TCKind kind = TAO_DynAnyFactory::unalias (type.in () - ACE_ENV_ARG_PARAMETER); - ACE_TRY_CHECK; - - // The literal and the array elements must be - // of the same simple type. - CORBA::Boolean match = this->simple_type_match (item.expr_type (), - kind); - - if (match == 0) - { - return 0; - } - - TAO_DynArray_i dyn_array; - dyn_array.init (*any - ACE_ENV_ARG_PARAMETER); - ACE_TRY_CHECK; - - DynamicAny::AnySeq_var any_seq = - dyn_array.get_elements (ACE_ENV_SINGLE_ARG_PARAMETER); - ACE_TRY_CHECK; - - CORBA::ULong length = any_seq->length (); - - for (CORBA::ULong i = 0; i < length; ++i) - { - TAO_ETCL_Literal_Constraint element (&any_seq[i]); - - if (item == element) - { - return 1; - } - } - } - ACE_CATCHANY - { - return 0; - } - ACE_ENDTRY; - - return 0; -} - -CORBA::Boolean -TAO_Notify_Constraint_Visitor::struct_does_contain ( - const CORBA::Any *any, - TAO_ETCL_Literal_Constraint &item - ) -{ - ACE_DECLARE_NEW_CORBA_ENV; - ACE_TRY - { - TAO_DynStruct_i dyn_struct; - dyn_struct.init (*any - ACE_ENV_ARG_PARAMETER); - ACE_TRY_CHECK; - - DynamicAny::NameValuePairSeq_var members = - dyn_struct.get_members (ACE_ENV_SINGLE_ARG_PARAMETER); - ACE_TRY_CHECK; - - CORBA::ULong length = members->length (); - CORBA::TypeCode_var tc; - CORBA::TCKind kind; - - for (CORBA::ULong i = 0; i < length; ++i) - { - tc = members[i].value.type (); - kind = TAO_DynAnyFactory::unalias (tc.in () - ACE_ENV_ARG_PARAMETER); - ACE_TRY_CHECK; - - // The literal and the struct member must be - // of the same simple type. - CORBA::Boolean match = this->simple_type_match (item.expr_type (), - kind); - - if (match == 0) - { - continue; - } - - TAO_ETCL_Literal_Constraint element (&members[i].value); - - if (item == element) - { - return 1; - } - } - } - ACE_CATCHANY - { - return 0; - } - ACE_ENDTRY; - - return 0; -} - -CORBA::Boolean -TAO_Notify_Constraint_Visitor::union_does_contain ( - const CORBA::Any *any, - TAO_ETCL_Literal_Constraint &item - ) -{ - ACE_DECLARE_NEW_CORBA_ENV; - ACE_TRY - { - TAO_DynUnion_i dyn_union; - dyn_union.init (*any - ACE_ENV_ARG_PARAMETER); - ACE_TRY_CHECK; - - DynamicAny::DynAny_var cc = - dyn_union.current_component (ACE_ENV_SINGLE_ARG_PARAMETER); - ACE_TRY_CHECK; - - CORBA::Any_var member = cc->to_any (ACE_ENV_SINGLE_ARG_PARAMETER); - ACE_TRY_CHECK; - - CORBA::TypeCode_var tc = member->type (); - CORBA::TCKind kind = TAO_DynAnyFactory::unalias (tc.in () - ACE_ENV_ARG_PARAMETER); - ACE_TRY_CHECK; - - // The literal and the union member must be - // of the same simple type. - CORBA::Boolean match = this->simple_type_match (item.expr_type (), - kind); - - if (match == 0) - { - return 0; - } - - TAO_ETCL_Literal_Constraint element (&member.inout ()); - - return (item == element); - } - ACE_CATCHANY - { - return 0; - } - ACE_ENDTRY; - - ACE_NOTREACHED (return 0); -} - -CORBA::Boolean -TAO_Notify_Constraint_Visitor::any_does_contain ( - const CORBA::Any *any, - TAO_ETCL_Literal_Constraint &item - ) -{ - const CORBA::Any *result = 0; - - *any >>= result; - - TAO_ETCL_Literal_Constraint element (ACE_const_cast (CORBA::Any *, - result)); - - return (item == element); -} - -CORBA::Boolean -TAO_Notify_Constraint_Visitor::simple_type_match (int expr_type, - CORBA::TCKind tc_kind) -{ - switch (expr_type) - { - case TAO_ETCL_STRING: - if (tc_kind != CORBA::tk_string) - { - return 0; - } - case TAO_ETCL_DOUBLE: - if (tc_kind != CORBA::tk_double - && tc_kind != CORBA::tk_float) - { - return 0; - } - case TAO_ETCL_INTEGER: - case TAO_ETCL_SIGNED: - if (tc_kind != CORBA::tk_short - && tc_kind != CORBA::tk_long - && tc_kind != CORBA::tk_longlong) - { - return 0; - } - case TAO_ETCL_UNSIGNED: - if (tc_kind != CORBA::tk_ushort - && tc_kind != CORBA::tk_ulong - && tc_kind != CORBA::tk_ulonglong) - { - return 0; - } - case TAO_ETCL_BOOLEAN: - if (tc_kind != CORBA::tk_boolean) - { - return 0; - } - default: - return 0; - } -} - -#if defined (ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION) - -template class ACE_Hash_Map_Manager<ACE_CString, CORBA::Any*, TAO_SYNCH_MUTEX>; -template class ACE_Hash_Map_Manager_Ex<ACE_CString, CORBA::Any *, ACE_Hash<ACE_CString>, ACE_Equal_To<ACE_CString>, TAO_SYNCH_MUTEX>; -template class ACE_Hash_Map_Entry <ACE_CString, CORBA::Any*>; -template class ACE_Hash_Map_Iterator<ACE_CString, CORBA::Any*, TAO_SYNCH_MUTEX>; -template class ACE_Hash_Map_Iterator_Ex<ACE_CString, CORBA::Any *, ACE_Hash<ACE_CString>, ACE_Equal_To<ACE_CString>, TAO_SYNCH_MUTEX>; -template class ACE_Hash_Map_Iterator_Base_Ex<ACE_CString, CORBA::Any *, ACE_Hash<ACE_CString>, ACE_Equal_To<ACE_CString>, TAO_SYNCH_MUTEX>; -template class ACE_Hash_Map_Reverse_Iterator<ACE_CString, CORBA::Any*, TAO_SYNCH_MUTEX>; -template class ACE_Hash_Map_Reverse_Iterator_Ex<ACE_CString, CORBA::Any *, ACE_Hash<ACE_CString>, ACE_Equal_To<ACE_CString>, TAO_SYNCH_MUTEX>; -template class ACE_Node<TAO_ETCL_Literal_Constraint>; -template class ACE_Unbounded_Queue<TAO_ETCL_Literal_Constraint>; -template class ACE_Unbounded_Queue_Iterator<TAO_ETCL_Literal_Constraint>; - - -template class ACE_Hash_Map_Manager<ACE_CString, TAO_Notify_Constraint_Visitor::structured_event_field, TAO_SYNCH_MUTEX>; -template class ACE_Hash_Map_Manager_Ex<ACE_CString, TAO_Notify_Constraint_Visitor::structured_event_field, ACE_Hash<ACE_CString>, ACE_Equal_To<ACE_CString>, TAO_SYNCH_MUTEX>; -template class ACE_Hash_Map_Entry <ACE_CString, TAO_Notify_Constraint_Visitor::structured_event_field>; -template class ACE_Hash_Map_Iterator<ACE_CString, TAO_Notify_Constraint_Visitor::structured_event_field, TAO_SYNCH_MUTEX>; -template class ACE_Hash_Map_Iterator_Ex<ACE_CString, TAO_Notify_Constraint_Visitor::structured_event_field, ACE_Hash<ACE_CString>, ACE_Equal_To<ACE_CString>, TAO_SYNCH_MUTEX>; -template class ACE_Hash_Map_Iterator_Base_Ex<ACE_CString, TAO_Notify_Constraint_Visitor::structured_event_field, ACE_Hash<ACE_CString>, ACE_Equal_To<ACE_CString>, TAO_SYNCH_MUTEX>; -template class ACE_Hash_Map_Reverse_Iterator<ACE_CString, TAO_Notify_Constraint_Visitor::structured_event_field, TAO_SYNCH_MUTEX>; -template class ACE_Hash_Map_Reverse_Iterator_Ex<ACE_CString, TAO_Notify_Constraint_Visitor::structured_event_field, ACE_Hash<ACE_CString>, ACE_Equal_To<ACE_CString>, TAO_SYNCH_MUTEX>; -#elif defined (ACE_HAS_TEMPLATE_INSTANTIATION_PRAGMA) - -#pragma instantiate ACE_Hash_Map_Manager<ACE_CString, CORBA::Any*, TAO_SYNCH_MUTEX> -#pragma instantiate ACE_Hash_Map_Manager_Ex<ACE_CString, CORBA::Any *, ACE_Hash<ACE_CString>, ACE_Equal_To<ACE_CString>, TAO_SYNCH_MUTEX> -#pragma instantiate ACE_Hash_Map_Entry <ACE_CString, CORBA::Any*> -#pragma instantiate ACE_Hash_Map_Iterator<ACE_CString, CORBA::Any*, TAO_SYNCH_MUTEX> -#pragma instantiate ACE_Hash_Map_Iterator_Ex<ACE_CString, CORBA::Any *, ACE_Hash<ACE_CString>, ACE_Equal_To<ACE_CString>, TAO_SYNCH_MUTEX> -#pragma instantiate ACE_Hash_Map_Iterator_Base_Ex<ACE_CString, CORBA::Any *, ACE_Hash<ACE_CString>, ACE_Equal_To<ACE_CString>, TAO_SYNCH_MUTEX> -#pragma instantiate ACE_Hash_Map_Reverse_Iterator<ACE_CString, CORBA::Any*, TAO_SYNCH_MUTEX> -#pragma instantiate ACE_Hash_Map_Reverse_Iterator_Ex<ACE_CString, CORBA::Any *, ACE_Hash<ACE_CString>, ACE_Equal_To<ACE_CString>, TAO_SYNCH_MUTEX> -#pragma instantiate ACE_Node<TAO_ETCL_Literal_Constraint> -#pragma instantiate ACE_Unbounded_Queue<TAO_ETCL_Literal_Constraint> -#pragma instantiate ACE_Unbounded_Queue_Iterator<TAO_ETCL_Literal_Constraint> - -#pragma instantiate ACE_Hash_Map_Manager<ACE_CString, TAO_Notify_Constraint_Visitor::structured_event_field, TAO_SYNCH_MUTEX> -#pragma instantiate ACE_Hash_Map_Manager_Ex<ACE_CString, TAO_Notify_Constraint_Visitor::structured_event_field, ACE_Hash<ACE_CString>, ACE_Equal_To<ACE_CString>, TAO_SYNCH_MUTEX> -#pragma instantiate ACE_Hash_Map_Entry <ACE_CString, TAO_Notify_Constraint_Visitor::structured_event_field> -#pragma instantiate ACE_Hash_Map_Iterator<ACE_CString, TAO_Notify_Constraint_Visitor::structured_event_field, TAO_SYNCH_MUTEX> -#pragma instantiate ACE_Hash_Map_Iterator_Ex<ACE_CString, TAO_Notify_Constraint_Visitor::structured_event_field, ACE_Hash<ACE_CString>, ACE_Equal_To<ACE_CString>, TAO_SYNCH_MUTEX> -#pragma instantiate ACE_Hash_Map_Iterator_Base_Ex<ACE_CString, TAO_Notify_Constraint_Visitor::structured_event_field, ACE_Hash<ACE_CString>, ACE_Equal_To<ACE_CString>, TAO_SYNCH_MUTEX> -#pragma instantiate ACE_Hash_Map_Reverse_Iterator<ACE_CString, TAO_Notify_Constraint_Visitor::structured_event_field, TAO_SYNCH_MUTEX> -#pragma instantiate ACE_Hash_Map_Reverse_Iterator_Ex<ACE_CString, TAO_Notify_Constraint_Visitor::structured_event_field, ACE_Hash<ACE_CString>, ACE_Equal_To<ACE_CString>, TAO_SYNCH_MUTEX> - -#endif /* ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION */ diff --git a/TAO/orbsvcs/orbsvcs/Notify/Notify_Constraint_Visitors.h b/TAO/orbsvcs/orbsvcs/Notify/Notify_Constraint_Visitors.h deleted file mode 100644 index 9ca060decee..00000000000 --- a/TAO/orbsvcs/orbsvcs/Notify/Notify_Constraint_Visitors.h +++ /dev/null @@ -1,149 +0,0 @@ -/* -*- C++ -*- */ -//============================================================================= -/** - * @file Notify_Constraint_Visitors.h - * - * $Id$ - * - * - * - * - * @author Pradeep Gore <pradeep@cs.wustl.edu> - * @author Jeff Parsons <parsons@cs.wustl.edu> - */ -//============================================================================= - - -#ifndef NOTIFY_CONSTRAINT_VISITORS_H -#define NOTIFY_CONSTRAINT_VISITORS_H - -#include "ace/pre.h" -#include "ace/Hash_Map_Manager.h" - -#if !defined (ACE_LACKS_PRAGMA_ONCE) -# pragma once -#endif /* ACE_LACKS_PRAGMA_ONCE */ - -#include "orbsvcs/ETCL/ETCL_Constraint_Visitor.h" -#include "orbsvcs/CosNotificationC.h" -#include "notify_export.h" - -class TAO_ETCL_Constraint; -class TAO_ETCL_Literal_Constraint; -class TAO_Notify_Property_Constraint; - -class TAO_Notify_Export TAO_Notify_Constraint_Visitor - : public TAO_ETCL_Constraint_Visitor -{ -public: - /// Constructor. - TAO_Notify_Constraint_Visitor (void); - - /// Put the event data into our hash map. - int bind_structured_event (const CosNotification::StructuredEvent &s_event); - - /** - * Returns 1 if the event satisfies the constraint - * represented by the the expression tree rooted at <root>, 0 if it - * doesn't. If an error occurs during the process, the traversal - * automatically fails. - */ - CORBA::Boolean evaluate_constraint (TAO_ETCL_Constraint *root); - - // The overridden methods. - int visit_literal (TAO_ETCL_Literal_Constraint *); - int visit_identifier (TAO_ETCL_Identifier *); - int visit_union_value (TAO_ETCL_Union_Value *); - int visit_union_pos (TAO_ETCL_Union_Pos *); - int visit_component_pos (TAO_ETCL_Component_Pos *); - int visit_component_assoc (TAO_ETCL_Component_Assoc *); - int visit_component_array (TAO_ETCL_Component_Array *); - int visit_special (TAO_ETCL_Special *); - int visit_component (TAO_ETCL_Component *); - int visit_dot (TAO_ETCL_Dot *); - int visit_eval (TAO_ETCL_Eval *); - int visit_default (TAO_ETCL_Default *); - int visit_exist (TAO_ETCL_Exist *); - int visit_unary_expr (TAO_ETCL_Unary_Expr *); - int visit_binary_expr (TAO_ETCL_Binary_Expr *); - int visit_preference (TAO_ETCL_Preference *); - -protected: - // Sub-methods for visit_binary_expr(). - int visit_or (TAO_ETCL_Binary_Expr *); - int visit_and (TAO_ETCL_Binary_Expr *); - int visit_twiddle (TAO_ETCL_Binary_Expr *); - int visit_in (TAO_ETCL_Binary_Expr *); - int visit_binary_op (TAO_ETCL_Binary_Expr *binary_expr, - int op_type); - - // These use dynamic anys to look inside the ETCL component. - CORBA::Boolean sequence_does_contain (const CORBA::Any *any, - TAO_ETCL_Literal_Constraint &item); - CORBA::Boolean array_does_contain (const CORBA::Any *any, - TAO_ETCL_Literal_Constraint &item); - CORBA::Boolean struct_does_contain (const CORBA::Any *any, - TAO_ETCL_Literal_Constraint &item); - CORBA::Boolean union_does_contain (const CORBA::Any *any, - TAO_ETCL_Literal_Constraint &item); - CORBA::Boolean any_does_contain (const CORBA::Any *any, - TAO_ETCL_Literal_Constraint &item); - - // Utility function to compare a TAO_ETCL_Literal_Constraint type - // and a type code. - CORBA::Boolean simple_type_match (int expr_type, - CORBA::TCKind tc_kind); - - enum structured_event_field - { - FILTERABLE_DATA, - HEADER, - FIXED_HEADER, - EVENT_TYPE, - DOMAIN_NAME, - TYPE_NAME, - EVENT_NAME, - VARIABLE_HEADER, - REMAINDER_OF_BODY, - NONE - }; - - /// Storage for the type of implicit id the component has (if any). - structured_event_field implicit_id_; - - /// Lookup table for the implicit ids, to avoid string comparisons in - /// derived visitors. - ACE_Hash_Map_Manager <ACE_CString, structured_event_field, TAO_SYNCH_MUTEX> - implicit_ids_; - - /// Used to lookup names and values in the event's 'filterable_data' field. - ACE_Hash_Map_Manager <ACE_CString, CORBA::Any *, TAO_SYNCH_MUTEX> - filterable_data_; - - /// Used to lookup names and values in the event's 'variable_header' field. - ACE_Hash_Map_Manager <ACE_CString, CORBA::Any *, TAO_SYNCH_MUTEX> - variable_header_; - - /// Storage for string names under the structured event's - /// 'fixed_header' field. - CORBA::String_var domain_name_; - CORBA::String_var type_name_; - CORBA::String_var event_name_; - - /// Storage for the structured_event's 'remainder_of_body' field. - CORBA::Any remainder_of_body_; - - /// The result of a non_boolean operation. - ACE_Unbounded_Queue <TAO_ETCL_Literal_Constraint> queue_; - - /// Holder for a value found in the event fields filterable_data, - /// variable_header or remainder_of_body. - CORBA::Any_var current_value_; - - /// Holder for a string name in the event fields fixed_header, - /// variable_header, or filterable_data. - CORBA::String_var current_name_; -}; - -#include "ace/post.h" -#endif /* NOTIFY_CONSTRAINT_VISITORS_H */ diff --git a/TAO/orbsvcs/orbsvcs/Notify/Notify_ConsumerAdmin_i.cpp b/TAO/orbsvcs/orbsvcs/Notify/Notify_ConsumerAdmin_i.cpp deleted file mode 100644 index aacf0df5f45..00000000000 --- a/TAO/orbsvcs/orbsvcs/Notify/Notify_ConsumerAdmin_i.cpp +++ /dev/null @@ -1,814 +0,0 @@ -// $Id$ - -#include "Notify_ConsumerAdmin_i.h" -#include "orbsvcs/ESF/ESF_Proxy_Collection.h" -#include "Notify_ProxyPushSupplier_i.h" -#include "Notify_StructuredProxyPushSupplier_i.h" -#include "Notify_SequenceProxyPushSupplier_i.h" -#include "Notify_EventChannel_i.h" -#include "Notify_Event_Manager.h" -#include "Notify_Channel_Objects_Factory.h" -#include "Notify_POA_Factory.h" -#include "Notify_Event_Manager_Objects_Factory.h" -#include "Notify_Collection_Factory.h" -#include "Notify_Factory.h" -#include "Notify_Listener_Filter_Eval_Command.h" -#include "Notify_Worker_Task.h" -#include "Notify_Event_Dispatch_Command.h" -#include "Notify_Event_Processor.h" -#include "Notify_Worker_Task.h" - -#include "tao/debug.h" - -ACE_RCSID (Notify, - Notify_ConsumerAdmin_i, - "$Id$") - -// Implementation skeleton constructor -TAO_Notify_ConsumerAdmin_i::TAO_Notify_ConsumerAdmin_i ( - TAO_Notify_EventChannel_i* event_channel - ) - :lock_ (0), - refcount_ (1), - destory_child_POAs_ (0), - event_channel_ (event_channel), - // @@ Pradeep: don't use statics, it is better to pass these as - // arguments. - channel_objects_factory_ (TAO_Notify_Factory::get_channel_objects_factory ()), - poa_factory_ (TAO_Notify_Factory::get_poa_factory ()), - collection_factory_ (TAO_Notify_Factory::get_collection_factory ()), - event_manager_ (event_channel->get_event_manager ()), - event_listener_list_ (0), - dispatching_task_ (0), - filter_eval_task_ (0) -{ - // @@ Pradeep: don't forget the this-> stuff for local variables. - this->event_manager_objects_factory_ = this->event_manager_->resource_factory (); - this->event_channel_->_add_ref (); // we don't want our parent to go away! -} - -// Implementation skeleton destructor -TAO_Notify_ConsumerAdmin_i::~TAO_Notify_ConsumerAdmin_i (void) -{ - if (TAO_debug_level > 0) - { - ACE_DEBUG ((LM_DEBUG, - "in CA %d dtor\n", - this->my_id_)); - } - - delete this->lock_; - - delete this->event_listener_list_; - - this->event_channel_->consumer_admin_destroyed (this->my_id_); - this->event_channel_->_remove_ref (); - - delete this->dispatching_task_; - delete this->filter_eval_task_; -} - -CORBA::ULong -TAO_Notify_ConsumerAdmin_i::_incr_refcnt (void) -{ - ACE_GUARD_RETURN (ACE_Lock, - ace_mon, - *this->lock_, - 0); - return this->refcount_++; -} - -CORBA::ULong -TAO_Notify_ConsumerAdmin_i::_decr_refcnt (void) -{ - { - ACE_GUARD_RETURN (ACE_Lock, ace_mon, *this->lock_, 0); - this->refcount_--; - - if (this->refcount_ != 0) - { - return this->refcount_; - } - } - - delete this; - return 0; -} - -void -TAO_Notify_ConsumerAdmin_i::_add_ref (ACE_ENV_SINGLE_ARG_DECL_NOT_USED) -{ - this->_incr_refcnt (); -} - -void -TAO_Notify_ConsumerAdmin_i::_remove_ref (ACE_ENV_SINGLE_ARG_DECL_NOT_USED) -{ - this->_decr_refcnt (); -} - -void -TAO_Notify_ConsumerAdmin_i::dispatch_event (TAO_Notify_Event &event - ACE_ENV_ARG_DECL) -{ - // Dispatch the event to all the registered listeners. - TAO_Notify_Dispatch_Command_Worker worker (&event, - this->event_manager_->event_processor ()); - // Propogate the filter command. - - this->event_listener_list_->for_each (&worker ACE_ENV_ARG_PARAMETER); -} - -CORBA::Boolean -TAO_Notify_ConsumerAdmin_i::evaluate_filter (TAO_Notify_Event &event, CORBA::Boolean /*eval_parent*/ ACE_ENV_ARG_DECL) -{ - CORBA::Boolean bval = - this->get_filter_admin ().match (event ACE_ENV_ARG_PARAMETER); - ACE_CHECK_RETURN (0); - - if ((bval == 1 && this->filter_operator_ == CosNotifyChannelAdmin::AND_OP) || - (bval == 0 && this->filter_operator_ == CosNotifyChannelAdmin::OR_OP)) - { - // If the filter operator requires that each listener attached to this admin be evaluated, - // we feed the listeners to the "listener filter evaluation" task. - - TAO_Notify_Filter_Command_Worker worker (&event, this->event_manager_->event_processor (), 0); - // note the last param. we ask that the parent filter *not* be evaluated again - // because we've done it here. - - this->event_listener_list_->for_each (&worker ACE_ENV_ARG_PARAMETER); - ACE_CHECK_RETURN (0); - // Propogate the filter command. - - return 0; - } - else if (bval == 1 && this->filter_operator_ == CosNotifyChannelAdmin::OR_OP) - { - // no need to check any of the children. happy dispatching! - return 1; - - // OR we could instead do: - // - // this->dispatch_event (event ACE_ENV_ARG_PARAMETER); - // return 0; - // - // This will short circuit a few steps, because the event processor is going to - // turn around and create a dispatching command object to call dispatch_event. - // My $.02 worth optimization fetish! - // but we'll give in favour of consistency ;) - } - - return 0; // in all [other] cases, return false. -} - -void -TAO_Notify_ConsumerAdmin_i::proxy_pushsupplier_destroyed (CosNotifyChannelAdmin::ProxyID proxyID) -{ - this->proxy_pushsupplier_ids_.put (proxyID); // This id is no longer in use. -} - -void -TAO_Notify_ConsumerAdmin_i::init (CosNotifyChannelAdmin::AdminID my_id, - CosNotifyChannelAdmin::InterFilterGroupOperator filter_operator, - PortableServer::POA_ptr my_POA - ACE_ENV_ARG_DECL) -{ - my_POA_ = PortableServer::POA::_duplicate (my_POA); - - this->lock_ = - this->channel_objects_factory_->create_consumer_admin_lock (ACE_ENV_SINGLE_ARG_PARAMETER); - ACE_CHECK; - - this->proxy_pushsupplier_POA_ = this->poa_factory_-> - create_proxy_pushsupplier_POA (this->my_POA_.in (), my_id - ACE_ENV_ARG_PARAMETER); - ACE_CHECK; - - this->my_id_ = my_id; - this->filter_operator_ = filter_operator; - - this->event_listener_list_ = - this->collection_factory_->create_event_listener_list (ACE_ENV_SINGLE_ARG_PARAMETER); - ACE_CHECK; - - // Create the task to forward filtering/dispatching commands to: - // @@ think about how get rid of these 2 allocations per consumer admin. - // add a "get_singleton_reactive_task" to the event manager factory interface. - this->dispatching_task_ = - new TAO_Notify_Worker_Task (); - /*this->event_manager_objects_factory_->create_dispatching_task (ACE_ENV_SINGLE_ARG_PARAMETER); - ACE_CHECK; - */ - this->filter_eval_task_ = - new TAO_Notify_Worker_Task (); - // this->event_manager_objects_factory_->create_listener_eval_task (ACE_ENV_SINGLE_ARG_PARAMETER); - ACE_CHECK; - - // Get hold of the admin properties. - TAO_Notify_AdminProperties* const admin_properties = - this->event_manager_->admin_properties (); - - // Init the tasks, allowing them to update values based on - // the admin and qos properties. - this->dispatching_task_->init_task (admin_properties, - &(this->qos_admin_)); - this->filter_eval_task_->init_task (admin_properties, - &(this->qos_admin_)); - - // Initially we set up things so that all listeners are subscribed for - // all the events so that things "work" even if we don't twiddle with - // the subscriptions. The side effect is that whenever we start setting - // up subscriptions, we must remove the special event type otherwise we - // will get the same event twice! - // check with the resource manager if this option is enabled. - /*if (this->resource_manager_->default_subscription_enabled () == 1) - { - TAO_Notify_EventType& special_type = - TAO_Notify_EventType::special_event_type (); - - CosNotification::EventTypeSeq added (1), removed (0); - - added.length (1); - removed.length (0); - - added[0] = special_type.get_native (); - - this->subscription_change (added, removed ACE_ENV_ARG_PARAMETER); - ACE_CHECK; - } - */ -} - -void -TAO_Notify_ConsumerAdmin_i::destroy_i (ACE_ENV_SINGLE_ARG_DECL) -{ - CosNotification::EventTypeSeq removed; - - CosNotification::EventTypeSeq added (0); - added.length (0); - - // unsubscribe it to our current subscriptions. - removed.length (this->subscription_list_.size ()); - - this->subscription_list_.populate (removed); - - this->event_manager_->subscribe_for_events (this, - added, removed ACE_ENV_ARG_PARAMETER); - ACE_CHECK; - - // deactivate ourselves - this->poa_factory_->deactivate_object (this, this->my_POA_.in () - ACE_ENV_ARG_PARAMETER); - - // shutdown proxys. - TAO_Notify_Shutdown_Worker shutdown_worker; - - this->event_listener_list_->for_each (&shutdown_worker ACE_ENV_ARG_PARAMETER); - ACE_CHECK; - - this->event_listener_list_->shutdown (ACE_ENV_SINGLE_ARG_PARAMETER); - ACE_CHECK; - - this->poa_factory_->destroy_POA (this->proxy_pushsupplier_POA_.in () - ACE_ENV_ARG_PARAMETER); - ACE_CHECK; - - this->dispatching_task_->shutdown (ACE_ENV_SINGLE_ARG_PARAMETER); - ACE_CHECK; - - this->filter_eval_task_->shutdown (ACE_ENV_SINGLE_ARG_PARAMETER); - ACE_CHECK; -} - -void -TAO_Notify_ConsumerAdmin_i::destroy (ACE_ENV_SINGLE_ARG_DECL) - ACE_THROW_SPEC (( - CORBA::SystemException - )) -{ - // unregister from EC - this->event_channel_->unregister_listener (this ACE_ENV_ARG_PARAMETER); - ACE_CHECK; - - this->destroy_i (ACE_ENV_SINGLE_ARG_PARAMETER); -} - -void -TAO_Notify_ConsumerAdmin_i::shutdown (ACE_ENV_SINGLE_ARG_DECL) -{ - this->destroy_i (ACE_ENV_SINGLE_ARG_PARAMETER); -} - -TAO_Notify_Worker_Task* -TAO_Notify_ConsumerAdmin_i::event_dispatch_task (void) -{ - return this->dispatching_task_; -} - -TAO_Notify_Worker_Task* -TAO_Notify_ConsumerAdmin_i::filter_eval_task (void) -{ - return this->filter_eval_task_; -} - -void -TAO_Notify_ConsumerAdmin_i::subscription_change (const CosNotification::EventTypeSeq & added, const CosNotification::EventTypeSeq & removed ACE_ENV_ARG_DECL) - ACE_THROW_SPEC (( - CORBA::SystemException, - CosNotifyComm::InvalidEventType - )) -{ - - TAO_Notify_EventType_List seq_added, seq_removed; - - seq_added.insert_seq (added); - seq_removed.insert_seq (removed); - - { - ACE_GUARD_THROW_EX (ACE_Lock, ace_mon, *this->lock_, - CORBA::INTERNAL ()); - ACE_CHECK; - - TAO_Notify_EventType_List::preprocess (this->subscription_list_, seq_added, seq_removed); - - } - - CosNotification::EventTypeSeq p_added, p_removed; - - seq_added.populate (p_added); - seq_removed.populate (p_removed); - - this->event_manager_->subscribe_for_events (this, - p_added, - p_removed - ACE_ENV_ARG_PARAMETER); - - if (TAO_debug_level > 0) - { - ACE_DEBUG ((LM_DEBUG, - "ConsumerAdmin %d: added following types: ", - my_id_ )); - - CORBA::ULong i = 0; - - for (i = 0; i < p_added.length (); ++i) - { - ACE_DEBUG ((LM_DEBUG, - "(%s, %s)\t", - p_added[i].domain_name.in(), - p_added[i].type_name.in())); - } - - ACE_DEBUG ((LM_DEBUG,"\n ConsumerAdmin %d: removed following types: ",my_id_ )); - - for (i = 0; i < p_removed.length (); ++i) - { - ACE_DEBUG ((LM_DEBUG, - "(%s, %s)\t", - p_removed[i].domain_name.in(), - p_removed[i].type_name.in())); - } - - CosNotification::EventTypeSeq current; - this->subscription_list_.populate (current); - - ACE_DEBUG ((LM_DEBUG, - "\n ConsumerAdmin %d:current subscriptions: ", - my_id_)); - - for (i = 0; i < current.length (); ++i) - { - ACE_DEBUG ((LM_DEBUG, - "(%s, %s)\n", - current[i].domain_name.in(), - current[i].type_name.in())); - } - } -} - -CosNotifyChannelAdmin::ConsumerAdmin_ptr -TAO_Notify_ConsumerAdmin_i::get_ref (ACE_ENV_SINGLE_ARG_DECL) -{ - CORBA::Object_var obj = this->poa_factory_-> - servant_to_reference (this->my_POA_.in (), this ACE_ENV_ARG_PARAMETER); - - ACE_CHECK_RETURN (CosNotifyChannelAdmin::ConsumerAdmin::_nil ()); - - return CosNotifyChannelAdmin::ConsumerAdmin::_narrow (obj.in () - ACE_ENV_ARG_PARAMETER); -} - -TAO_Notify_Event_Manager* -TAO_Notify_ConsumerAdmin_i::get_event_manager (void) -{ - return this->event_manager_; -} - -TAO_Notify_FilterAdmin_i& -TAO_Notify_ConsumerAdmin_i::get_filter_admin (void) -{ - return this->filter_admin_; -} - -void -TAO_Notify_ConsumerAdmin_i::register_listener (TAO_Notify_EventListener *listener ACE_ENV_ARG_DECL) -{ - // register it. - this->event_listener_list_->connected (listener ACE_ENV_ARG_PARAMETER); - ACE_CHECK; -} - -void -TAO_Notify_ConsumerAdmin_i::unregister_listener (TAO_Notify_EventListener *listener ACE_ENV_ARG_DECL) -{ - this->event_listener_list_->disconnected (listener ACE_ENV_ARG_PARAMETER); - ACE_CHECK; -} - -void -TAO_Notify_ConsumerAdmin_i::deactivate_proxy_pushsupplier (PortableServer::Servant servant ACE_ENV_ARG_DECL) -{ - this->poa_factory_-> - deactivate_object (servant, this->proxy_pushsupplier_POA_.in () - ACE_ENV_ARG_PARAMETER); -} - -CosNotifyChannelAdmin::AdminID -TAO_Notify_ConsumerAdmin_i::MyID (ACE_ENV_SINGLE_ARG_DECL_NOT_USED/*ACE_ENV_SINGLE_ARG_PARAMETER*/) - ACE_THROW_SPEC (( - CORBA::SystemException - )) -{ - return my_id_; -} - -CosNotifyChannelAdmin::EventChannel_ptr -TAO_Notify_ConsumerAdmin_i::MyChannel (ACE_ENV_SINGLE_ARG_DECL) - ACE_THROW_SPEC (( - CORBA::SystemException - )) -{ - return event_channel_->get_ref (ACE_ENV_SINGLE_ARG_PARAMETER); -} - -CosNotifyChannelAdmin::InterFilterGroupOperator -TAO_Notify_ConsumerAdmin_i::MyOperator (ACE_ENV_SINGLE_ARG_DECL_NOT_USED/*ACE_ENV_SINGLE_ARG_PARAMETER*/) - ACE_THROW_SPEC (( - CORBA::SystemException - )) -{ - return filter_operator_; -} - -CosNotifyChannelAdmin::ProxyIDSeq* -TAO_Notify_ConsumerAdmin_i::push_suppliers (ACE_ENV_SINGLE_ARG_DECL) - ACE_THROW_SPEC (( - CORBA::SystemException - )) -{ - return this->proxy_pushsupplier_ids_.get_sequence (ACE_ENV_SINGLE_ARG_PARAMETER); -} - -CosNotifyChannelAdmin::ProxySupplier_ptr -TAO_Notify_ConsumerAdmin_i::get_proxy_supplier (CosNotifyChannelAdmin::ProxyID proxy_id ACE_ENV_ARG_DECL) - ACE_THROW_SPEC (( - CORBA::SystemException, - CosNotifyChannelAdmin::ProxyNotFound - )) -{ - CORBA::Object_var obj = - this->poa_factory_->id_to_reference (proxy_id, - proxy_pushsupplier_POA_.in () - ACE_ENV_ARG_PARAMETER); - ACE_CHECK_RETURN (CosNotifyChannelAdmin::ProxySupplier::_nil ()); - - return CosNotifyChannelAdmin::ProxySupplier::_narrow (obj.in ()); -} - -CORBA::Object_ptr -TAO_Notify_ConsumerAdmin_i::obtain_struct_proxy_pushsupplier_i (CosNotifyChannelAdmin::ProxyID proxy_id ACE_ENV_ARG_DECL) -{ - TAO_Notify_StructuredProxyPushSupplier_i* struct_proxy_pushsupplier = - this->channel_objects_factory_->create_struct_proxy_pushsupplier (this - ACE_ENV_ARG_PARAMETER); - ACE_CHECK_RETURN (CORBA::Object::_nil ()); - - PortableServer::ServantBase_var proxy_pushsupplier_var (struct_proxy_pushsupplier); - - struct_proxy_pushsupplier->init (proxy_id ACE_ENV_ARG_PARAMETER); - ACE_CHECK_RETURN (CORBA::Object::_nil ()); - - return this->poa_factory_-> - activate_object_with_id (proxy_id, - this->proxy_pushsupplier_POA_.in (), - struct_proxy_pushsupplier - ACE_ENV_ARG_PARAMETER); -} - -CORBA::Object_ptr -TAO_Notify_ConsumerAdmin_i::obtain_sequence_proxy_pushsupplier_i (CosNotifyChannelAdmin::ProxyID proxy_id ACE_ENV_ARG_DECL) -{ - TAO_Notify_SequenceProxyPushSupplier_i* seq_proxy_pushsupplier = - this->channel_objects_factory_->create_seq_proxy_pushsupplier (this - ACE_ENV_ARG_PARAMETER); - ACE_CHECK_RETURN (CORBA::Object::_nil ()); - - PortableServer::ServantBase_var proxy_pushsupplier_var (seq_proxy_pushsupplier); - - seq_proxy_pushsupplier->init (proxy_id ACE_ENV_ARG_PARAMETER); - ACE_CHECK_RETURN (CORBA::Object::_nil ()); - - return this->poa_factory_-> - activate_object_with_id (proxy_id, - this->proxy_pushsupplier_POA_.in (), - seq_proxy_pushsupplier - ACE_ENV_ARG_PARAMETER); -} - -CORBA::Object_ptr -TAO_Notify_ConsumerAdmin_i::obtain_proxy_pushsupplier_i (CosNotifyChannelAdmin::ProxyID proxy_id ACE_ENV_ARG_DECL) -{ - TAO_Notify_ProxyPushSupplier_i* proxy_pushsupplier = - this->channel_objects_factory_->create_proxy_pushsupplier (this ACE_ENV_ARG_PARAMETER); - ACE_CHECK_RETURN (CORBA::Object::_nil ()); - - PortableServer::ServantBase_var proxy_pushsupplier_var (proxy_pushsupplier); - - proxy_pushsupplier->init (proxy_id ACE_ENV_ARG_PARAMETER); - ACE_CHECK_RETURN (CORBA::Object::_nil ()); - - return this->poa_factory_-> - activate_object_with_id (proxy_id, - this->proxy_pushsupplier_POA_.in (), - proxy_pushsupplier - ACE_ENV_ARG_PARAMETER); -} - -CosNotifyChannelAdmin::ProxySupplier_ptr -TAO_Notify_ConsumerAdmin_i::obtain_notification_push_supplier (CosNotifyChannelAdmin::ClientType ctype, CosNotifyChannelAdmin::ProxyID_out proxy_id ACE_ENV_ARG_DECL) - ACE_THROW_SPEC (( - CORBA::SystemException, - CosNotifyChannelAdmin::AdminLimitExceeded - )) -{ - CORBA::Object_var obj; - - { - ACE_GUARD_THROW_EX (ACE_Lock, ace_mon, *this->lock_, - CORBA::INTERNAL ()); - ACE_CHECK_RETURN (CosNotifyChannelAdmin::ProxySupplier::_nil ()); - - proxy_id = this->proxy_pushsupplier_ids_.get (); - } - - switch (ctype) - { - case CosNotifyChannelAdmin::ANY_EVENT: - { - obj = this->obtain_proxy_pushsupplier_i (proxy_id ACE_ENV_ARG_PARAMETER); - ACE_CHECK_RETURN (CosNotifyChannelAdmin::ProxySupplier::_nil ()); - } - break; - case CosNotifyChannelAdmin::STRUCTURED_EVENT: - { - obj = this->obtain_struct_proxy_pushsupplier_i (proxy_id ACE_ENV_ARG_PARAMETER); - ACE_CHECK_RETURN (CosNotifyChannelAdmin::ProxySupplier::_nil ()); - } - break; - - case CosNotifyChannelAdmin::SEQUENCE_EVENT: - { - obj = this->obtain_sequence_proxy_pushsupplier_i (proxy_id - ACE_ENV_ARG_PARAMETER); - ACE_CHECK_RETURN (CosNotifyChannelAdmin::ProxySupplier::_nil ()); - } - break; - - default: - ACE_THROW_RETURN (CORBA::BAD_PARAM (), - CosNotifyChannelAdmin::ProxySupplier::_nil ()); - } - - this->proxy_pushsupplier_ids_.next (); // commit this id to the pool - return CosNotifyChannelAdmin::ProxySupplier::_narrow (obj.in () - ACE_ENV_ARG_PARAMETER); -} - -CosNotification::QoSProperties* -TAO_Notify_ConsumerAdmin_i::get_qos (ACE_ENV_SINGLE_ARG_DECL) - ACE_THROW_SPEC (( - CORBA::SystemException - )) -{ - return this->qos_admin_.get_qos (ACE_ENV_SINGLE_ARG_PARAMETER); -} - -void -TAO_Notify_ConsumerAdmin_i::set_qos (const CosNotification::QoSProperties & qos ACE_ENV_ARG_DECL) - ACE_THROW_SPEC (( - CORBA::SystemException, - CosNotification::UnsupportedQoS - )) -{ - this->qos_admin_.set_qos (qos ACE_ENV_ARG_PARAMETER); - ACE_CHECK; - - // Then update our task's qos - if (this->dispatching_task_ != 0) - { - this->dispatching_task_->update_qos (this->qos_admin_); - } - if (this->filter_eval_task_ != 0) - { - this->filter_eval_task_->update_qos (this->qos_admin_); - } -} - -void -TAO_Notify_ConsumerAdmin_i::validate_qos (const CosNotification::QoSProperties & required_qos, CosNotification::NamedPropertyRangeSeq_out available_qos ACE_ENV_ARG_DECL) - ACE_THROW_SPEC (( - CORBA::SystemException, - CosNotification::UnsupportedQoS - )) -{ - this->qos_admin_.validate_qos (required_qos, available_qos ACE_ENV_ARG_PARAMETER); -} - -CosNotifyFilter::FilterID -TAO_Notify_ConsumerAdmin_i::add_filter (CosNotifyFilter::Filter_ptr new_filter ACE_ENV_ARG_DECL) - ACE_THROW_SPEC (( - CORBA::SystemException - )) -{ - return this->filter_admin_.add_filter (new_filter ACE_ENV_ARG_PARAMETER); -} - -void -TAO_Notify_ConsumerAdmin_i::remove_filter (CosNotifyFilter::FilterID filter ACE_ENV_ARG_DECL) - ACE_THROW_SPEC (( - CORBA::SystemException, - CosNotifyFilter::FilterNotFound - )) -{ - this->filter_admin_.remove_filter (filter ACE_ENV_ARG_PARAMETER); -} - -CosNotifyFilter::Filter_ptr -TAO_Notify_ConsumerAdmin_i::get_filter (CosNotifyFilter::FilterID filter ACE_ENV_ARG_DECL) - ACE_THROW_SPEC (( - CORBA::SystemException, - CosNotifyFilter::FilterNotFound - )) -{ - return this->filter_admin_.get_filter (filter ACE_ENV_ARG_PARAMETER); -} - -CosNotifyFilter::FilterIDSeq* -TAO_Notify_ConsumerAdmin_i::get_all_filters (ACE_ENV_SINGLE_ARG_DECL) - ACE_THROW_SPEC (( - CORBA::SystemException - )) -{ - return this->filter_admin_.get_all_filters (ACE_ENV_SINGLE_ARG_PARAMETER); -} - -void -TAO_Notify_ConsumerAdmin_i::remove_all_filters (ACE_ENV_SINGLE_ARG_DECL) - ACE_THROW_SPEC (( - CORBA::SystemException - )) -{ - this->filter_admin_.remove_all_filters (ACE_ENV_SINGLE_ARG_PARAMETER); -} - -CosEventChannelAdmin::ProxyPushSupplier_ptr -TAO_Notify_ConsumerAdmin_i::obtain_push_supplier (ACE_ENV_SINGLE_ARG_DECL) - ACE_THROW_SPEC (( - CORBA::SystemException - )) -{ - TAO_Notify_CosEC_ProxyPushSupplier_i* cosec_proxy; - - ACE_NEW_THROW_EX (cosec_proxy, - TAO_Notify_CosEC_ProxyPushSupplier_i (this), - CORBA::NO_MEMORY ()); - - PortableServer::ServantBase_var proxy_var (cosec_proxy); - - cosec_proxy->init (ACE_ENV_SINGLE_ARG_PARAMETER); - ACE_CHECK_RETURN (CosEventChannelAdmin::ProxyPushSupplier::_nil ()); - - PortableServer::POA_var def_poa = - this->event_channel_->get_default_POA (); - - CORBA::Object_var obj = this->poa_factory_-> - activate_object (def_poa.in (), cosec_proxy ACE_ENV_ARG_PARAMETER); - ACE_CHECK_RETURN (CosEventChannelAdmin::ProxyPushSupplier::_nil ()); - - return CosEventChannelAdmin::ProxyPushSupplier::_narrow (obj.in ()); -} - -CosNotifyChannelAdmin::ProxySupplier_ptr -TAO_Notify_ConsumerAdmin_i::obtain_notification_pull_supplier (CosNotifyChannelAdmin::ClientType /*ctype*/, CosNotifyChannelAdmin::ProxyID_out /*proxy_id*/ ACE_ENV_ARG_DECL) - ACE_THROW_SPEC (( - CORBA::SystemException, - CosNotifyChannelAdmin::AdminLimitExceeded - )) -{ - ACE_THROW_RETURN (CORBA::NO_IMPLEMENT (), - CosNotifyChannelAdmin::ProxySupplier::_nil ()); -} - -CosEventChannelAdmin::ProxyPullSupplier_ptr -TAO_Notify_ConsumerAdmin_i::obtain_pull_supplier (ACE_ENV_SINGLE_ARG_DECL) - ACE_THROW_SPEC (( - CORBA::SystemException - )) -{ - ACE_THROW_RETURN (CORBA::NO_IMPLEMENT (), - CosEventChannelAdmin::ProxyPullSupplier::_nil ()); -} - - -CosNotifyFilter::MappingFilter_ptr -TAO_Notify_ConsumerAdmin_i::priority_filter (ACE_ENV_SINGLE_ARG_DECL) - ACE_THROW_SPEC (( - CORBA::SystemException - )) -{ - ACE_THROW_RETURN (CORBA::NO_IMPLEMENT (), - CosNotifyFilter::MappingFilter::_nil ()); -} - -void -TAO_Notify_ConsumerAdmin_i::priority_filter (CosNotifyFilter::MappingFilter_ptr /*priority_filter*/ ACE_ENV_ARG_DECL) - ACE_THROW_SPEC (( - CORBA::SystemException - )) -{ - ACE_THROW (CORBA::NO_IMPLEMENT ()); -} - -CosNotifyFilter::MappingFilter_ptr -TAO_Notify_ConsumerAdmin_i::lifetime_filter (ACE_ENV_SINGLE_ARG_DECL) - ACE_THROW_SPEC (( - CORBA::SystemException - )) -{ - ACE_THROW_RETURN (CORBA::NO_IMPLEMENT (), - CosNotifyFilter::MappingFilter::_nil ()); -} - -void -TAO_Notify_ConsumerAdmin_i::lifetime_filter (CosNotifyFilter::MappingFilter_ptr /*lifetime_filter*/ ACE_ENV_ARG_DECL) - ACE_THROW_SPEC (( - CORBA::SystemException - )) -{ - ACE_THROW (CORBA::NO_IMPLEMENT ()); -} - -CosNotifyChannelAdmin::ProxyIDSeq* -TAO_Notify_ConsumerAdmin_i::pull_suppliers (ACE_ENV_SINGLE_ARG_DECL) - ACE_THROW_SPEC (( - CORBA::SystemException - )) -{ - ACE_THROW_RETURN (CORBA::NO_IMPLEMENT (), 0); -} - -/****************************************************************************************************/ - -TAO_Notify_Filter_Command_Worker::TAO_Notify_Filter_Command_Worker (TAO_Notify_Event* event, TAO_Notify_Event_Processor* event_processor, CORBA::Boolean eval_parent) - : event_ (event), - event_processor_ (event_processor), - eval_parent_ (eval_parent) -{ -} - -void -TAO_Notify_Filter_Command_Worker::work (TAO_Notify_EventListener* event_listener ACE_ENV_ARG_DECL) -{ - this->event_processor_->evaluate_listener_filter (this->event_, event_listener, - this->eval_parent_ ACE_ENV_ARG_PARAMETER); -} - -/****************************************************************************************************/ - -TAO_Notify_Dispatch_Command_Worker::TAO_Notify_Dispatch_Command_Worker (TAO_Notify_Event* event, TAO_Notify_Event_Processor* event_processor) - : event_ (event), - event_processor_ (event_processor) -{ -} - -TAO_Notify_Dispatch_Command_Worker::~TAO_Notify_Dispatch_Command_Worker () -{ -} - -void -TAO_Notify_Dispatch_Command_Worker::work (TAO_Notify_EventListener* event_listener ACE_ENV_ARG_DECL) -{ - this->event_processor_->dispatch_event (this->event_, event_listener ACE_ENV_ARG_PARAMETER); -} - -/****************************************************************************************************/ diff --git a/TAO/orbsvcs/orbsvcs/Notify/Notify_ConsumerAdmin_i.h b/TAO/orbsvcs/orbsvcs/Notify/Notify_ConsumerAdmin_i.h deleted file mode 100644 index 76992877c46..00000000000 --- a/TAO/orbsvcs/orbsvcs/Notify/Notify_ConsumerAdmin_i.h +++ /dev/null @@ -1,440 +0,0 @@ -//============================================================================= -/** - * @file Notify_ConsumerAdmin_i.h - * - * $Id$ - * - * Implements the CosNotifyChannelAdmin::ConsumerAdmin interface. - * - * - * @author Pradeep Gore <pradeep@cs.wustl.edu> - */ -//============================================================================= - -#ifndef TAO_NOTIFY_CONSUMERADMIN_I_H -#define TAO_NOTIFY_CONSUMERADMIN_I_H -#include "ace/pre.h" -#include "orbsvcs/CosNotifyChannelAdminS.h" - -#if !defined (ACE_LACKS_PRAGMA_ONCE) -#pragma once -#endif /* ACE_LACKS_PRAGMA_ONCE */ - -#include "Notify_ID_Pool_T.h" -#include "Notify_QoSAdmin_i.h" -#include "Notify_FilterAdmin_i.h" -#include "Notify_Event.h" -#include "Notify_Listeners.h" -#include "Notify_Collection.h" -#include "notify_export.h" - -class TAO_Notify_EventChannel_i; -class TAO_Notify_Event_Manager; -class TAO_Notify_CO_Factory; -class TAO_Notify_POA_Factory; -class TAO_Notify_EMO_Factory; -class TAO_Notify_Collection_Factory; -class TAO_Notify_Worker_Task; -class TAO_Notify_Event_Processor; - -#if defined(_MSC_VER) -#if (_MSC_VER >= 1200) -#pragma warning(push) -#endif /* _MSC_VER >= 1200 */ -#pragma warning(disable:4250) -#endif /* _MSC_VER */ - -/** - * @class TAO_Notify_ConsumerAdmin_i - * - * @brief TAO_Notify_ConsumerAdmin_i - * - * Implements the CosNotifyChannelAdmin::ConsumerAdmin interface. - */ -class TAO_Notify_Export TAO_Notify_ConsumerAdmin_i : public TAO_Notify_EventListener, public POA_CosNotifyChannelAdmin::ConsumerAdmin, public PortableServer::RefCountServantBase -{ - - public: - /// Constructor - /// <myChannel> is this objects parent. - TAO_Notify_ConsumerAdmin_i (TAO_Notify_EventChannel_i* myChannel); - - /// Destructor - virtual ~TAO_Notify_ConsumerAdmin_i (void); - - // = TAO_Notify_RefCounted - virtual CORBA::ULong _incr_refcnt (void); - virtual CORBA::ULong _decr_refcnt (void); - - // = The Servant methods - virtual void _add_ref (ACE_ENV_SINGLE_ARG_DECL); - virtual void _remove_ref (ACE_ENV_SINGLE_ARG_DECL); - - //= TAO_Notify_EventListener methods - /// Callback methods to supply the event to the listener. - virtual void dispatch_event (TAO_Notify_Event &event ACE_ENV_ARG_DECL); - - /// Evaluates true if this event is acceptable by the listener. - virtual CORBA::Boolean evaluate_filter (TAO_Notify_Event &event, CORBA::Boolean eval_parent ACE_ENV_ARG_DECL); - - /// Ask the listener to relinqish any bindings and prepare to be disposed. - virtual void shutdown (ACE_ENV_SINGLE_ARG_DECL); - - /// The Worker task associated with the event listener for event dispatching - virtual TAO_Notify_Worker_Task* event_dispatch_task (void); - - /// The Worker task associated with the event listener for filter evaluation. - ///= Admin Methods. - virtual TAO_Notify_Worker_Task* filter_eval_task (void); - - /// Initialize the Consumer Admin. - void init (CosNotifyChannelAdmin::AdminID myID, - CosNotifyChannelAdmin::InterFilterGroupOperator myOperator, - PortableServer::POA_ptr my_POA - ACE_ENV_ARG_DECL); - - /// Return the CORBA object for this servant. - CosNotifyChannelAdmin::ConsumerAdmin_ptr get_ref (ACE_ENV_SINGLE_ARG_DECL); - - /// Accesor for the event manager. - TAO_Notify_Event_Manager* get_event_manager (void); - - /// Get our filter admin. - TAO_Notify_FilterAdmin_i& get_filter_admin (void); - - /// Deactivate servant from <proxy_pushsupplier_POA_>. - void deactivate_proxy_pushsupplier (PortableServer::Servant servant ACE_ENV_ARG_DECL); - - /// Register with parent for subscription updates. - void register_listener (TAO_Notify_EventListener *listener ACE_ENV_ARG_DECL); - - /// Unregister with parent from subscription updates. - void unregister_listener (TAO_Notify_EventListener *listener ACE_ENV_ARG_DECL); - - /// This id is no longer in use.It can be reused by <proxy_pushsupplier_ids_> - void proxy_pushsupplier_destroyed (CosNotifyChannelAdmin::ProxyID proxyID); - - // = Interface methods - virtual CosNotifyChannelAdmin::AdminID MyID ( - ACE_ENV_SINGLE_ARG_DECL - ) - ACE_THROW_SPEC (( - CORBA::SystemException - )); - -virtual CosNotifyChannelAdmin::EventChannel_ptr MyChannel ( - ACE_ENV_SINGLE_ARG_DECL - ) - ACE_THROW_SPEC (( - CORBA::SystemException - )); - -virtual CosNotifyChannelAdmin::InterFilterGroupOperator MyOperator ( - ACE_ENV_SINGLE_ARG_DECL - ) - ACE_THROW_SPEC (( - CORBA::SystemException - )); - -virtual CosNotifyFilter::MappingFilter_ptr priority_filter ( - ACE_ENV_SINGLE_ARG_DECL - ) - ACE_THROW_SPEC (( - CORBA::SystemException - )); - -virtual void priority_filter ( - CosNotifyFilter::MappingFilter_ptr priority_filter - ACE_ENV_ARG_DECL - ) - ACE_THROW_SPEC (( - CORBA::SystemException - )); - -virtual CosNotifyFilter::MappingFilter_ptr lifetime_filter ( - ACE_ENV_SINGLE_ARG_DECL - ) - ACE_THROW_SPEC (( - CORBA::SystemException - )); - -virtual void lifetime_filter ( - CosNotifyFilter::MappingFilter_ptr lifetime_filter - ACE_ENV_ARG_DECL - ) - ACE_THROW_SPEC (( - CORBA::SystemException - )); - -virtual CosNotifyChannelAdmin::ProxyIDSeq * pull_suppliers ( - ACE_ENV_SINGLE_ARG_DECL - ) - ACE_THROW_SPEC (( - CORBA::SystemException - )); - -virtual CosNotifyChannelAdmin::ProxyIDSeq * push_suppliers ( - ACE_ENV_SINGLE_ARG_DECL - ) - ACE_THROW_SPEC (( - CORBA::SystemException - )); - -virtual CosNotifyChannelAdmin::ProxySupplier_ptr get_proxy_supplier ( - CosNotifyChannelAdmin::ProxyID proxy_id - ACE_ENV_ARG_DECL - ) - ACE_THROW_SPEC (( - CORBA::SystemException, - CosNotifyChannelAdmin::ProxyNotFound - )); - -virtual CosNotifyChannelAdmin::ProxySupplier_ptr obtain_notification_pull_supplier ( - CosNotifyChannelAdmin::ClientType ctype, - CosNotifyChannelAdmin::ProxyID_out proxy_id - ACE_ENV_ARG_DECL - ) - ACE_THROW_SPEC (( - CORBA::SystemException, - CosNotifyChannelAdmin::AdminLimitExceeded - )); - -virtual CosNotifyChannelAdmin::ProxySupplier_ptr obtain_notification_push_supplier ( - CosNotifyChannelAdmin::ClientType ctype, - CosNotifyChannelAdmin::ProxyID_out proxy_id - ACE_ENV_ARG_DECL - ) - ACE_THROW_SPEC (( - CORBA::SystemException, - CosNotifyChannelAdmin::AdminLimitExceeded - )); - -virtual void destroy ( - ACE_ENV_SINGLE_ARG_DECL - ) - ACE_THROW_SPEC (( - CORBA::SystemException - )); - -virtual CosNotification::QoSProperties * get_qos ( - ACE_ENV_SINGLE_ARG_DECL - ) - ACE_THROW_SPEC (( - CORBA::SystemException - )); - -virtual void set_qos ( - const CosNotification::QoSProperties & qos - ACE_ENV_ARG_DECL - ) - ACE_THROW_SPEC (( - CORBA::SystemException, - CosNotification::UnsupportedQoS - )); - -virtual void validate_qos ( - const CosNotification::QoSProperties & required_qos, - CosNotification::NamedPropertyRangeSeq_out available_qos - ACE_ENV_ARG_DECL - ) - ACE_THROW_SPEC (( - CORBA::SystemException, - CosNotification::UnsupportedQoS - )); - -virtual void subscription_change ( - const CosNotification::EventTypeSeq & added, - const CosNotification::EventTypeSeq & removed - ACE_ENV_ARG_DECL - ) - ACE_THROW_SPEC (( - CORBA::SystemException, - CosNotifyComm::InvalidEventType - )); - -virtual CosNotifyFilter::FilterID add_filter ( - CosNotifyFilter::Filter_ptr new_filter - ACE_ENV_ARG_DECL - ) - ACE_THROW_SPEC (( - CORBA::SystemException - )); - -virtual void remove_filter ( - CosNotifyFilter::FilterID filter - ACE_ENV_ARG_DECL - ) - ACE_THROW_SPEC (( - CORBA::SystemException, - CosNotifyFilter::FilterNotFound - )); - -virtual CosNotifyFilter::Filter_ptr get_filter ( - CosNotifyFilter::FilterID filter - ACE_ENV_ARG_DECL - ) - ACE_THROW_SPEC (( - CORBA::SystemException, - CosNotifyFilter::FilterNotFound - )); - -virtual CosNotifyFilter::FilterIDSeq * get_all_filters ( - ACE_ENV_SINGLE_ARG_DECL - ) - ACE_THROW_SPEC (( - CORBA::SystemException - )); - -virtual void remove_all_filters ( - ACE_ENV_SINGLE_ARG_DECL - ) - ACE_THROW_SPEC (( - CORBA::SystemException - )); - -virtual CosEventChannelAdmin::ProxyPushSupplier_ptr obtain_push_supplier ( - ACE_ENV_SINGLE_ARG_DECL - ) - ACE_THROW_SPEC (( - CORBA::SystemException - )); - -virtual CosEventChannelAdmin::ProxyPullSupplier_ptr obtain_pull_supplier ( - ACE_ENV_SINGLE_ARG_DECL - ) - ACE_THROW_SPEC (( - CORBA::SystemException - )); - -protected: - // = Helper methods - /// Destroy CA - void destroy_i (ACE_ENV_SINGLE_ARG_DECL); - - /// Obtain a proxy pushsupplier object - CORBA::Object_ptr obtain_struct_proxy_pushsupplier_i (CosNotifyChannelAdmin::ProxyID proxy_id ACE_ENV_ARG_DECL); - - /// Obtain a structured proxy pushsupplier object. - CORBA::Object_ptr obtain_proxy_pushsupplier_i (CosNotifyChannelAdmin::ProxyID proxy_id ACE_ENV_ARG_DECL); - - /// Obtain a sequence proxy pushsupplier object. - CORBA::Object_ptr obtain_sequence_proxy_pushsupplier_i (CosNotifyChannelAdmin::ProxyID proxy_id ACE_ENV_ARG_DECL); - - // = Data members - /// The locking strategy. - ACE_Lock* lock_; - - /// The reference count. - CORBA::ULong refcount_; - - /// Flag to tell if the child poa's should be destroyed. - CORBA::Boolean destory_child_POAs_; - - /// The channel to which we belong. - TAO_Notify_EventChannel_i* event_channel_; - - /// The factory for channel objects. - TAO_Notify_CO_Factory* channel_objects_factory_; - - /// The factory for POA based containers. - TAO_Notify_POA_Factory* poa_factory_; - - /// Event manager objects factory, - TAO_Notify_EMO_Factory* event_manager_objects_factory_; - - /// Collection objects factory - TAO_Notify_Collection_Factory* collection_factory_; - - /// The event manager to use. - TAO_Notify_Event_Manager* event_manager_; - - /// The inter filter operator to use. - CosNotifyChannelAdmin::InterFilterGroupOperator filter_operator_; - - /// My ID. - CosNotifyChannelAdmin::AdminID my_id_; - - /// The POA in which we live. - PortableServer::POA_var my_POA_; - - /// The POA in which all our push suppliers live. - /// We create and own this POA. - PortableServer::POA_var proxy_pushsupplier_POA_; - - /// The list of event types that all our proxys are interested in receiving. - TAO_Notify_EventType_List subscription_list_; - - /// The list of event listeners that have registered with us - TAO_Notify_EventListener_List* event_listener_list_; - - /// Id generator for proxy push suppliers. - TAO_Notify_ID_Pool_Ex<CosNotifyChannelAdmin::ProxyID, - CosNotifyChannelAdmin::ProxyIDSeq> proxy_pushsupplier_ids_; - - /// Handle QoS admin methods. - TAO_Notify_QoSAdmin_i qos_admin_; - - /// Handles the Filter Admin methods. - TAO_Notify_FilterAdmin_i filter_admin_; - - /// The dispatching task to send events to a listener group affiliated with this admin. - TAO_Notify_Worker_Task* dispatching_task_; - - /// The filter evaluation task for this admin. - TAO_Notify_Worker_Task* filter_eval_task_; -}; - -/****************************************************************************************************/ - -/** - * @class TAO_Notify_Filter_Command_Worker - * - * @brief TAO_Notify_Filter_Command_Worker - * - * Enqueue each listener for the filter evaluation command. - */ -class TAO_Notify_Export TAO_Notify_Filter_Command_Worker : public TAO_ESF_Worker<TAO_Notify_EventListener> -{ -public: - TAO_Notify_Filter_Command_Worker (TAO_Notify_Event* event, TAO_Notify_Event_Processor* event_processor, CORBA::Boolean eval_parent); - - // = TAO_ESF_Worker method - void work (TAO_Notify_EventListener* listener ACE_ENV_ARG_DECL); - -protected: - TAO_Notify_Event* event_; - TAO_Notify_Event_Processor* event_processor_; - CORBA::Boolean eval_parent_; -}; - -/****************************************************************************************************/ - -/** - * @class TAO_Notify_Dispatch_Command_Worker - * - * @brief TAO_Notify_Dispatch_Command_Worker - * - * Worker to invoke the dispatch command for each member of the collection. - */ -class TAO_Notify_Export TAO_Notify_Dispatch_Command_Worker : public TAO_ESF_Worker<TAO_Notify_EventListener> -{ -public: - TAO_Notify_Dispatch_Command_Worker (TAO_Notify_Event* event, TAO_Notify_Event_Processor* event_processor); - ~TAO_Notify_Dispatch_Command_Worker (); - - // = TAO_ESF_Worker method - void work (TAO_Notify_EventListener* listener ACE_ENV_ARG_DECL); - -protected: - TAO_Notify_Event* event_; - TAO_Notify_Event_Processor* event_processor_; -}; - -/****************************************************************************************************/ - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -#pragma warning(pop) -#endif /* _MSC_VER */ - -#include "ace/post.h" -#endif /* TAO_NOTIFY_CONSUMERADMIN_I_H */ diff --git a/TAO/orbsvcs/orbsvcs/Notify/Notify_Event.cpp b/TAO/orbsvcs/orbsvcs/Notify/Notify_Event.cpp deleted file mode 100644 index 45ae9463e96..00000000000 --- a/TAO/orbsvcs/orbsvcs/Notify/Notify_Event.cpp +++ /dev/null @@ -1,493 +0,0 @@ -// $Id$ -#include "Notify_Event.h" - -#include "tao/debug.h" - -#if ! defined (__ACE_INLINE__) -#include "Notify_Event.i" -#endif /* __ACE_INLINE__ */ - - -ACE_RCSID(Notify, Notify_Event, "$Id$") - -// @@ Pradeep: David is going to give you a hard time from having a -// static object -TAO_Notify_EventType -TAO_Notify_EventType::special_event_type_ ("*", "%ALL"); - -// @@ You can probably get away returning this stuff by value, and -// creating it on the fly, assuming there aren't too many calls to -// this. -TAO_Notify_EventType& -TAO_Notify_EventType::special_event_type (void) -{ - return special_event_type_; -} - -TAO_Notify_EventType::TAO_Notify_EventType (void) -{ - // No-Op. -} - -void -TAO_Notify_EventType::init_i (const char* domain_name, - const char* type_name) -{ - this->event_type_.domain_name = domain_name; - this->event_type_.type_name = type_name; - - if (this->is_special () == 1) - { - this->event_type_.domain_name = "*"; - this->event_type_.type_name = "%ALL"; - } - - this->recompute_hash (); -} - -TAO_Notify_EventType::TAO_Notify_EventType (const char* domain_name, - const char* type_name) -{ - this->init_i (domain_name, type_name); -} - -TAO_Notify_EventType::TAO_Notify_EventType (const CosNotification::EventType& event_type) -{ - this->init_i (event_type.domain_name.in (),event_type.type_name.in ()); -} - -TAO_Notify_EventType::~TAO_Notify_EventType () -{ -} - -u_long -TAO_Notify_EventType::hash (void) const -{ - // @@ Pradeep: this is an excellent candidate for an inline - // function. Get in the habit of creating .h, .cpp and .i files, - // even if initially the .i file is empty, that way it is easier to - // do this stuff. - return this->hash_value_; -} - -void -TAO_Notify_EventType::recompute_hash (void) -{ - // @@ Pradeep: this code is bound to crash someday if the strings - // are too long.... See if the hash_pjw () function can be modified - // to take accumulate multiple strings, as in: - // hash = ACE::hash_pjw_accummulate (0, str1); - // hash = ACE::hash_pjw_accummulate (hash, str2); - // - // @@ Or use grow the buffer when needed, or just add the two hash - // values or something, but fix this code! - // - char buffer[BUFSIZ]; - ACE_OS::strcpy (buffer, this->event_type_.domain_name.in ()); - ACE_OS::strcat (buffer, this->event_type_.type_name.in ()); - - this->hash_value_ = ACE::hash_pjw (buffer); -} - -void -TAO_Notify_EventType::operator=(const CosNotification::EventType& rhs) -{ - this->init_i (rhs.domain_name.in (),rhs.type_name.in ()); -} - -void -TAO_Notify_EventType::operator=(CosNotification::EventType& rhs) -{ - this->init_i (rhs.domain_name.in (),rhs.type_name.in ()); -} - -int -TAO_Notify_EventType::operator==(const TAO_Notify_EventType& rhs) const -{ - if (this->hash () != rhs.hash ()) - return 0; - else // compare the strings - return (ACE_OS::strcmp (this->event_type_.type_name, rhs.event_type_.type_name) == 0 && - ACE_OS::strcmp (this->event_type_.domain_name, rhs.event_type_.domain_name) == 0 - ); -} - -CORBA::Boolean -TAO_Notify_EventType::is_special (void) const -{ - if ((this->event_type_.domain_name == 0 || - ACE_OS::strcmp (this->event_type_.domain_name, "") == 0 || - ACE_OS::strcmp (this->event_type_.domain_name, "*") == 0) && - (this->event_type_.type_name == 0 || - ACE_OS::strcmp (this->event_type_.type_name, "") == 0 || - ACE_OS::strcmp (this->event_type_.type_name, "*") == 0 || - ACE_OS::strcmp (this->event_type_.type_name, "%ALL") == 0)) - return 1; - else - return 0; -} - -const CosNotification::EventType& -TAO_Notify_EventType::get_native (void) const -{ - return event_type_; -} - -// **************************************************************** - -TAO_Notify_Event::TAO_Notify_Event (void) - :lock_ (0), - refcount_ (1), - event_reliability_ (CosNotification::BestEffort), - priority_ (CosNotification::DefaultPriority), - // start_time_ (0), - // stop_time_ (0), - timeout_ (0) -{ - ACE_NEW (this->lock_, ACE_Lock_Adapter<TAO_SYNCH_MUTEX> ()); -} - -TAO_Notify_Event::~TAO_Notify_Event () -{ - delete this->lock_; - this->lock_ = 0; - if (TAO_debug_level > 0) - ACE_DEBUG ((LM_DEBUG, "in ~TAO_Notify_Event %X\n", this)); -} - - -void -TAO_Notify_Event::_incr_refcnt (void) -{ - ACE_GUARD (ACE_Lock, ace_mon, *this->lock_); - this->refcount_++; - - if (TAO_debug_level > 0) - ACE_DEBUG ((LM_DEBUG, "in TAO_Notify_Event %X incr %d\n", this, this->refcount_)); -} - -void -TAO_Notify_Event::_decr_refcnt (void) -{ - int delete_me = 0; - - { - ACE_GUARD (ACE_Lock, ace_mon, *this->lock_); - this->refcount_--; - - if (TAO_debug_level > 0) - ACE_DEBUG ((LM_DEBUG, "in TAO_Notify_Event %X decr %d\n", this, this->refcount_)); - - if (this->refcount_ == 0) - delete_me = 1; - } - - if (delete_me == 1) - delete this; -} - -// **************************************************************** - -// = Any Event Type. - -TAO_Notify_Any::TAO_Notify_Any (CORBA::Any * data) - :data_ (data), - is_owner_ (1) -{ -} - -TAO_Notify_Any::TAO_Notify_Any (const CORBA::Any * data) - :data_ ((CORBA::Any*)data), - is_owner_ (0) -{ -} - -TAO_Notify_Any::~TAO_Notify_Any () -{ - if (this->is_owner_) - delete this->data_; -} - -TAO_Notify_Event* -TAO_Notify_Any::clone (void) -{ - TAO_Notify_Any* clone; - - if (this->is_owner_) - { - // @@ Are you sure this is the right way to clone? You are - // stealing the data from the original class... - ACE_NEW_RETURN (clone, TAO_Notify_Any ((CORBA::Any const *)this->data_), - 0); - this->is_owner_ = 0; - } - else - { - CORBA::Any * data_copy; - ACE_NEW_RETURN (data_copy, CORBA::Any (*this->data_), 0); - ACE_NEW_RETURN (clone, TAO_Notify_Any (data_copy), 0); - - // Later: cleanup data_copy if this new fails. - } - - return clone; -} - -void -TAO_Notify_Any::operator=(const TAO_Notify_Any& notify_any) -{ - if (TAO_debug_level > 0) - ACE_DEBUG ((LM_DEBUG, "In TAO_Notify_Any::operator=\n")); - - if (this->is_owner_) - delete data_; - - ACE_NEW (this->data_, - CORBA::Any (*notify_any.data_)); - - this->is_owner_ = 1; -} - -CORBA::Boolean -TAO_Notify_Any::is_special_event_type (void) const -{ - return 1; -} - -const TAO_Notify_EventType& -TAO_Notify_Any::event_type (void) const -{ - return TAO_Notify_EventType::special_event_type (); -} - -CORBA::Boolean -TAO_Notify_Any::do_match (CosNotifyFilter::Filter_ptr filter - ACE_ENV_ARG_DECL) -{ - if (TAO_debug_level > 0) - ACE_DEBUG ((LM_DEBUG, "Notify (%P|%t) - " - "TAO_Notify_Any::do_match ()\n")); - - return filter->match (*this->data_ ACE_ENV_ARG_PARAMETER); -} - -void -TAO_Notify_Any::do_push (CosEventComm::PushConsumer_ptr consumer - ACE_ENV_ARG_DECL) const -{ - if (TAO_debug_level > 0) - ACE_DEBUG ((LM_DEBUG, "Notify (%P|%t) - " - "TAO_Notify_Any::do_push (" - "CosEventComm::PushConsumer_ptr)\n")); - - consumer->push (*this->data_ ACE_ENV_ARG_PARAMETER); -} - -void -TAO_Notify_Any::do_push (CosNotifyComm::StructuredPushConsumer_ptr consumer - ACE_ENV_ARG_DECL) const -{ - if (TAO_debug_level > 0) - ACE_DEBUG ((LM_DEBUG, "Notify (%P|%t) - " - "TAO_Notify_Any::do_push (" - "CosNotifyComm::StructuredPushConsumer_ptr)\n")); - - // translation pg. 28 - CosNotification::StructuredEvent event; - event.remainder_of_body <<= *this->data_; - event.header.fixed_header.event_type.type_name = CORBA::string_dup ("%ANY"); - event.header.fixed_header.event_type.domain_name = CORBA::string_dup (""); - - consumer->push_structured_event (event ACE_ENV_ARG_PARAMETER); -} - -void -TAO_Notify_Any::do_push (CosNotifyComm::SequencePushConsumer_ptr consumer, - const TAO_Notify_QoSAdmin_i& /*qos_admin*/, - CosNotification::EventBatch& /*unsent*/, - int /*flush_queue*/ - ACE_ENV_ARG_DECL) const -{ - if (TAO_debug_level > 0) - ACE_DEBUG ((LM_DEBUG, "Notify (%P|%t) - " - "TAO_Notify_Any::do_push (" - "CosNotifyComm::SequencePushConsumer_ptr)\n")); - - // translation pg. 28 - CosNotification::StructuredEvent event; - event.remainder_of_body <<= *this->data_; - event.header.fixed_header.event_type.type_name = CORBA::string_dup ("%ANY"); - event.header.fixed_header.event_type.domain_name = CORBA::string_dup (""); - - CosNotification::EventBatch events; - events.length (1); - events[0] = event; - - consumer->push_structured_events (events ACE_ENV_ARG_PARAMETER); -} - -// **************************************************************** - -// = TAO_Notify_StructuredEvent - -// @@ Pradeep: many of the same comments that i made for -// TAO_Notify_Any apply here too. - -TAO_Notify_StructuredEvent::TAO_Notify_StructuredEvent (CosNotification::StructuredEvent * notification) - :data_ (notification), - event_type_ (notification->header.fixed_header.event_type), - is_owner_ (1) -{ - - this->init_QoS (); -} - -TAO_Notify_StructuredEvent::TAO_Notify_StructuredEvent (const CosNotification::StructuredEvent * notification) - :data_ ((CosNotification::StructuredEvent*)notification), - event_type_ (notification->header.fixed_header.event_type), - is_owner_ (0) -{ -} - -TAO_Notify_StructuredEvent::~TAO_Notify_StructuredEvent () -{ - if (this->is_owner_) - delete this->data_; -} - -void -TAO_Notify_StructuredEvent::init_QoS (void) -{ - CosNotification::PropertySeq& qos = this->data_->header.variable_header; - - for (CORBA::ULong index = 0; index < qos.length (); ++index) - { - ACE_CString property_name (qos[index].name); - - if (property_name.compare (CosNotification::Priority) == 0) - { - qos[index].value >>= this->priority_; - } - else if (property_name.compare (CosNotification::StartTime) == 0) - { - // qos[index].value >>= this->start_time_; - } - else if (property_name.compare (CosNotification::StopTime) == 0) - { - // qos[index].value >>= this->stop_time_; - } - else if (property_name.compare (CosNotification::Timeout) == 0) - { - qos[index].value >>= this->timeout_; - } - } -} - -TAO_Notify_Event* -TAO_Notify_StructuredEvent::clone (void) -{ - TAO_Notify_StructuredEvent* clone; - - if (this->is_owner_) - { - ACE_NEW_RETURN (clone, TAO_Notify_StructuredEvent ((CosNotification::StructuredEvent const *) this->data_), 0); - this->is_owner_ = 0; - } - else - { - CosNotification::StructuredEvent *data_copy; - ACE_NEW_RETURN (data_copy, CosNotification::StructuredEvent (*this->data_), - 0); - ACE_NEW_RETURN (clone, TAO_Notify_StructuredEvent (data_copy), 0); - // Later: cleanup *data_copy if this new fails. - clone->is_owner_ = 1; - } - - return clone; -} - -void -TAO_Notify_StructuredEvent::operator=(const TAO_Notify_StructuredEvent& structured_event) -{ - if (TAO_debug_level > 0) - ACE_DEBUG ((LM_DEBUG, "In TAO_Notify_StructuredEvent::operator=\n")); - - if (this->is_owner_) - delete this->data_; - - ACE_NEW (this->data_, - CosNotification::StructuredEvent (*structured_event.data_)); - - this->is_owner_ = 1; - this->event_type_ = structured_event.data_->header.fixed_header.event_type; -} - -CORBA::Boolean -TAO_Notify_StructuredEvent::is_special_event_type (void) const -{ - return this->event_type_.is_special (); -} - -const TAO_Notify_EventType& -TAO_Notify_StructuredEvent::event_type (void) const -{ - return this->event_type_; -} - -CORBA::Boolean -TAO_Notify_StructuredEvent::do_match (CosNotifyFilter::Filter_ptr filter - ACE_ENV_ARG_DECL) -{ - if (TAO_debug_level > 0) - ACE_DEBUG ((LM_DEBUG, "Notify (%P|%t) - " - "TAO_Notify_StructuredEvent::do_match ()\n")); - - return filter->match_structured (*this->data_ ACE_ENV_ARG_PARAMETER); -} - -void -TAO_Notify_StructuredEvent::do_push (CosEventComm::PushConsumer_ptr consumer - ACE_ENV_ARG_DECL) const -{ - if (TAO_debug_level > 0) - ACE_DEBUG ((LM_DEBUG, "Notify (%P|%t) - " - "TAO_Notify_StructuredEvent::do_push (" - "CosEventComm::PushConsumer_ptr)\n")); - - // translation pg. 28 - CORBA::Any any; - any <<= *this->data_; - // is the typecode set by this operation or do we need to set it explicity. - - consumer->push (any ACE_ENV_ARG_PARAMETER); -} - -void -TAO_Notify_StructuredEvent::do_push (CosNotifyComm::StructuredPushConsumer_ptr consumer ACE_ENV_ARG_DECL) const -{ - if (TAO_debug_level > 0) - ACE_DEBUG ((LM_DEBUG, "Notify (%P|%t) - " - "TAO_Notify_StructuredEvent::do_push (" - "CosNotifyComm::StructuredPushConsumer_ptr)\n")); - - consumer->push_structured_event (*this->data_ ACE_ENV_ARG_PARAMETER); -} - -void -TAO_Notify_StructuredEvent::do_push (CosNotifyComm::SequencePushConsumer_ptr consumer, - const TAO_Notify_QoSAdmin_i& /*qos_admin*/, - CosNotification::EventBatch& /*unsent*/, - int /*flush_queue*/ - ACE_ENV_ARG_DECL) const -{ - if (TAO_debug_level > 0) - ACE_DEBUG ((LM_DEBUG, "Notify (%P|%t) - " - "TAO_Notify_StructuredEvent::do_push (" - "CosNotifyComm::SequencePushConsumer_ptr)\n")); - - CosNotification::EventBatch events; - events.length (1); - events[0] = *this->data_; - - consumer->push_structured_events (events ACE_ENV_ARG_PARAMETER); -} diff --git a/TAO/orbsvcs/orbsvcs/Notify/Notify_Event.h b/TAO/orbsvcs/orbsvcs/Notify/Notify_Event.h deleted file mode 100644 index f539895eddf..00000000000 --- a/TAO/orbsvcs/orbsvcs/Notify/Notify_Event.h +++ /dev/null @@ -1,288 +0,0 @@ -/* -*- C++ -*- */ -//============================================================================= -/** - * @file Notify_Event.h - * - * $Id$ - * - * Abstraction for Notify's event types. - * - * - * @author Pradeep Gore <pradeep@cs.wustl.edu> - */ -//============================================================================= - - -#ifndef TAO_NOTIFY_EVENT_H -#define TAO_NOTIFY_EVENT_H - -#include "ace/pre.h" -#include "orbsvcs/CosNotificationC.h" -#include "orbsvcs/TimeBaseC.h" -#include "notify_export.h" - -#if !defined (ACE_LACKS_PRAGMA_ONCE) -# pragma once -#endif /* ACE_LACKS_PRAGMA_ONCE */ - -#include "orbsvcs/CosNotifyFilterC.h" -#include "orbsvcs/CosEventCommC.h" - -// Needed for the SequencePushConsumer -class TAO_Notify_QoSAdmin_i; - -// @@ Pradeep: this is another case of multiple classes bunched in the -// same file, you should really think about separating it. - -/** - * @class TAO_Notify_EventType - * - * @brief TAO_Notify_EventType - * - * This type is used to compare different event types. - * It is used by the Event Manager as a key to find subscription lists. - */ -class TAO_Notify_Export TAO_Notify_EventType -{ -public: - // = Initialization and termination - /// Constuctor - TAO_Notify_EventType (void); - TAO_Notify_EventType (const char* domain_name, const char* type_name); - TAO_Notify_EventType (const CosNotification::EventType& event_type); - - /// Destructor - ~TAO_Notify_EventType (); - - /// Hash value - u_long hash (void) const; - - /// Assignment from CosNotification::EventType - void operator=(const CosNotification::EventType& event_type); - - /// Assignment from CosNotification::EventType - void operator=(CosNotification::EventType& event_type); - - /// == operator - int operator==(const TAO_Notify_EventType& notify_event_type) const; - - /// Return the special event type. - static TAO_Notify_EventType& special_event_type (void); - - /// Is this the special event (accept everything). - CORBA::Boolean is_special (void) const; - - /// Get the type underneath us. - const CosNotification::EventType& get_native (void) const; - -protected: - /// Init this object. - void init_i (const char* domain_name, const char* type_name); - - /// Recompute the hash value. - void recompute_hash (void); - - // = Data Members - /// The event_type that we're decorating. - CosNotification::EventType event_type_; - - /// The hash value computed. - u_long hash_value_; - - /// A special event type - static TAO_Notify_EventType special_event_type_; -}; - -// **************************************************************** -// @@ Pradeep: please remember to separate your classes with a line -// like the one above. Or better yet, do not put multiple classes in -// the same file. - -/** - * @class TAO_Notify_Event - * - * @brief TAO_Notify_Event - * - * Abstraction for an event - * This class allows us to treat event types homogenously. - * Derived types for anys and structured events provide the implementation. - * This the the "prototype" creational pattern. - */ -class TAO_Notify_Export TAO_Notify_Event -{ -public: - /// The lock for its ref. count. - /// Owns the lock. - TAO_Notify_Event (void); - - virtual ~TAO_Notify_Event (); - - /// Is this the "special" event type. - virtual CORBA::Boolean is_special_event_type (void) const = 0; - - /// Get the event type. - virtual const TAO_Notify_EventType& event_type (void) const = 0; - - /** - * We may need to make a copy of the underlying data if it is not owned - * by us. - * Note this behaviour: If this object owns the data, then we *transfer* - * ownership of the data to the new object otherwise we copy the data - * for the new object. - */ - virtual TAO_Notify_Event* clone (void) = 0; - - /// Returns true if the filter matches. - virtual CORBA::Boolean do_match (CosNotifyFilter::Filter_ptr filter ACE_ENV_ARG_DECL) = 0; - - /// Push self to <consumer> - virtual void do_push (CosEventComm::PushConsumer_ptr consumer ACE_ENV_ARG_DECL) const = 0; - virtual void do_push (CosNotifyComm::StructuredPushConsumer_ptr consumer ACE_ENV_ARG_DECL) const = 0; - virtual void do_push (CosNotifyComm::SequencePushConsumer_ptr consumer, - const TAO_Notify_QoSAdmin_i& qos_admin, - CosNotification::EventBatch& unsent, - int flush_queue - ACE_ENV_ARG_DECL) const = 0; - - // = QoS Properties. - // - - /// Not implemented. - CORBA::Short event_reliability (void); - void event_reliability (CORBA::Short event_reliability); - - /// Get the event priority - CORBA::Short priority (void); - - /// Set the event priority - void priority (CORBA::Short priority); - - /// Earliest delivery time. - TimeBase::UtcT start_time (void); - void start_time (TimeBase::UtcT start_time); - - /// Latest absolute expiry time for this event. - TimeBase::UtcT stop_time (void); - void stop_time (TimeBase::UtcT stop_time); - - /// Relative expiry time. - TimeBase::TimeT timeout (void); - void timeout (TimeBase::TimeT timeout); - - // = Refcounted lifetime - void _incr_refcnt (void); - void _decr_refcnt (void); - -protected: - /// The locking strategy. - ACE_Lock* lock_; - - /// The reference count. - CORBA::ULong refcount_; - - // = QoS properties - CORBA::Short event_reliability_; - CORBA::Short priority_; - TimeBase::UtcT start_time_; - TimeBase::UtcT stop_time_; - TimeBase::TimeT timeout_; -}; - -// **************************************************************** - -/** - * @class TAO_Notify_Any - * - * @brief TAO_Notify_Any - * - * This class is the concrete prototype for the Any type. - */ -class TAO_Notify_Export TAO_Notify_Any : public TAO_Notify_Event -{ - -public: - /// Refers to the data. Owns it! - TAO_Notify_Any (CORBA::Any* data); - - /// Does not own data. - TAO_Notify_Any (const CORBA::Any* data); - - virtual ~TAO_Notify_Any (); - - virtual TAO_Notify_Event* clone (void); - - void operator=(const TAO_Notify_Any& notify_any); - - virtual CORBA::Boolean is_special_event_type (void) const; - virtual const TAO_Notify_EventType& event_type (void) const; - virtual CORBA::Boolean do_match (CosNotifyFilter::Filter_ptr filter ACE_ENV_ARG_DECL); - virtual void do_push (CosEventComm::PushConsumer_ptr consumer ACE_ENV_ARG_DECL) const; - virtual void do_push (CosNotifyComm::StructuredPushConsumer_ptr consumer ACE_ENV_ARG_DECL) const; - virtual void do_push (CosNotifyComm::SequencePushConsumer_ptr consumer, - const TAO_Notify_QoSAdmin_i& qos_admin, - CosNotification::EventBatch& unsent, - int flush_queue - ACE_ENV_ARG_DECL) const; - -protected: - /// The data - CORBA::Any* data_; - - /// Do we own the data. - CORBA::Boolean is_owner_; -}; - -// **************************************************************** - -/** - * @class TAO_Notify_StructuredEvent - * - * @brief TAO_Notify_StructuredEvent - * - * This class is the concrete prototype for the Structured Event Type. - */ -class TAO_Notify_Export TAO_Notify_StructuredEvent : public TAO_Notify_Event -{ -public: - TAO_Notify_StructuredEvent (CosNotification::StructuredEvent * notification); - TAO_Notify_StructuredEvent (const CosNotification::StructuredEvent * notification); - virtual ~TAO_Notify_StructuredEvent (); - - virtual TAO_Notify_Event* clone (void); - void operator=(const TAO_Notify_StructuredEvent &structured_event); - - virtual CORBA::Boolean is_special_event_type (void) const; - virtual const TAO_Notify_EventType& event_type (void) const; - virtual CORBA::Boolean do_match (CosNotifyFilter::Filter_ptr filter ACE_ENV_ARG_DECL); - virtual void do_push (CosEventComm::PushConsumer_ptr consumer ACE_ENV_ARG_DECL) const; - virtual void do_push (CosNotifyComm::StructuredPushConsumer_ptr consumer ACE_ENV_ARG_DECL) const; - virtual void do_push (CosNotifyComm::SequencePushConsumer_ptr consumer, - const TAO_Notify_QoSAdmin_i& qos_admin, - CosNotification::EventBatch& unsent, - int flush_queue - ACE_ENV_ARG_DECL) const; - -protected: - - /// Load the QoS properties specified for this event from <data_>. - void init_QoS (void); - - // = Data Members - /// The data - CosNotification::StructuredEvent* data_; - - /// The event type of <data_> - TAO_Notify_EventType event_type_; - - /// Do we own the data. - CORBA::Boolean is_owner_; -}; - - -#if defined (__ACE_INLINE__) -#include "Notify_Event.i" -#endif /* __ACE_INLINE__ */ - -#include "ace/post.h" - -#endif /* TAO_NOTIFY_EVENT_H */ diff --git a/TAO/orbsvcs/orbsvcs/Notify/Notify_Event.i b/TAO/orbsvcs/orbsvcs/Notify/Notify_Event.i deleted file mode 100644 index 2e1541c89fd..00000000000 --- a/TAO/orbsvcs/orbsvcs/Notify/Notify_Event.i +++ /dev/null @@ -1,63 +0,0 @@ -// $Id$ - -#include "Notify_Event.h" - -ACE_INLINE CORBA::Short -TAO_Notify_Event::event_reliability (void) -{ - return this->event_reliability_; -} - -ACE_INLINE void -TAO_Notify_Event::event_reliability (CORBA::Short event_reliability) -{ - this->event_reliability_ = event_reliability; -} - -ACE_INLINE CORBA::Short -TAO_Notify_Event::priority (void) -{ - return this->priority_; -} - -ACE_INLINE void -TAO_Notify_Event::priority (CORBA::Short priority) -{ - this->priority_ = priority; -} - -ACE_INLINE TimeBase::UtcT -TAO_Notify_Event::start_time (void) -{ - return this->start_time_; -} - -ACE_INLINE void -TAO_Notify_Event::start_time (TimeBase::UtcT start_time) -{ - this->start_time_ = start_time; -} - -ACE_INLINE TimeBase::UtcT -TAO_Notify_Event::stop_time (void) -{ - return this->stop_time_; -} - -ACE_INLINE void -TAO_Notify_Event::stop_time (TimeBase::UtcT stop_time) -{ - this->stop_time_ = stop_time; -} - -ACE_INLINE TimeBase::TimeT -TAO_Notify_Event::timeout (void) -{ - return this->timeout_; -} - -ACE_INLINE void -TAO_Notify_Event::timeout (TimeBase::TimeT timeout) -{ - this->timeout_ = timeout; -} diff --git a/TAO/orbsvcs/orbsvcs/Notify/Notify_Event_Dispatch_Command.cpp b/TAO/orbsvcs/orbsvcs/Notify/Notify_Event_Dispatch_Command.cpp deleted file mode 100644 index 84c80dfe3f9..00000000000 --- a/TAO/orbsvcs/orbsvcs/Notify/Notify_Event_Dispatch_Command.cpp +++ /dev/null @@ -1,39 +0,0 @@ -// $Id$ - -#include "Notify_Event_Dispatch_Command.h" -#include "Notify_Listeners.h" -#include "Notify_Event.h" -#include "Notify_Event_Processor.h" - -#include "tao/debug.h" - -ACE_RCSID(Notify, TAO_Notify_Event_Dispatch_Command, "$Id$") - -TAO_Notify_Event_Dispatch_Command::TAO_Notify_Event_Dispatch_Command (TAO_Notify_Event_Processor* event_processor, TAO_Notify_Event* event, TAO_Notify_EventListener* event_listener) - :TAO_Notify_Command (event_processor, event), - event_listener_ (event_listener) -{ - if (TAO_debug_level > 0) - ACE_DEBUG ((LM_DEBUG, "in TAO_Notify_Event_Dispatch_Command %X\n", this)); - - event_listener_->_incr_refcnt (); - this->event_->_incr_refcnt (); -} - -TAO_Notify_Event_Dispatch_Command::~TAO_Notify_Event_Dispatch_Command () -{ - if (TAO_debug_level > 0) - ACE_DEBUG ((LM_DEBUG, "in ~TAO_Notify_Event_Dispatch_Command %X\n", this)); - - event_listener_->_decr_refcnt (); - this->event_->_decr_refcnt (); -} - -int -TAO_Notify_Event_Dispatch_Command::execute (ACE_ENV_SINGLE_ARG_DECL) -{ - this->event_listener_->dispatch_event (*this->event_ ACE_ENV_ARG_PARAMETER); - ACE_CHECK_RETURN (-1); - - return 0; -} diff --git a/TAO/orbsvcs/orbsvcs/Notify/Notify_Event_Dispatch_Command.h b/TAO/orbsvcs/orbsvcs/Notify/Notify_Event_Dispatch_Command.h deleted file mode 100644 index 9b2f7baf96b..00000000000 --- a/TAO/orbsvcs/orbsvcs/Notify/Notify_Event_Dispatch_Command.h +++ /dev/null @@ -1,54 +0,0 @@ -/* -*- C++ -*- */ -//============================================================================= -/** - * @file Notify_Event_Dispatch_Command.h - * - * $Id$ - * - * Definition for the Command object responsible for dispatching events to consumers. - * - * - * @author Pradeep Gore <pradeep@cs.wustl.edu> - */ -//============================================================================= - - -#ifndef TAO_NOTIFY_EVENT_DISPATCH_COMMAND_H -#define TAO_NOTIFY_EVENT_DISPATCH_COMMAND_H - -#include "ace/pre.h" -#include "Notify_Command.h" - -#if !defined (ACE_LACKS_PRAGMA_ONCE) -# pragma once -#endif /* ACE_LACKS_PRAGMA_ONCE */ - -class TAO_Notify_Event; -class TAO_Notify_EventListener; -class TAO_Notify_Worker_Task; - - /** - * @class TAO_Notify_Event_Dispatch_Command - * - * @brief TAO_Notify_Event_Dispatch_Command - * - * The Command for dispatching to a consumer. - */ -class TAO_Notify_Export TAO_Notify_Event_Dispatch_Command : public TAO_Notify_Command -{ - public: - // = Initialization and termination code. - TAO_Notify_Event_Dispatch_Command (TAO_Notify_Event_Processor* event_processor, TAO_Notify_Event* event, TAO_Notify_EventListener* event_listener); - - ~TAO_Notify_Event_Dispatch_Command (); - - /// Command callback - virtual int execute (ACE_ENV_SINGLE_ARG_DECL); - - protected: - // = Data Members - TAO_Notify_EventListener* event_listener_; -}; - -#include "ace/post.h" -#endif /* TAO_NOTIFY_EVENT_DISPATCH_COMMAND_H */ diff --git a/TAO/orbsvcs/orbsvcs/Notify/Notify_Event_Manager.cpp b/TAO/orbsvcs/orbsvcs/Notify/Notify_Event_Manager.cpp deleted file mode 100644 index a2628852f52..00000000000 --- a/TAO/orbsvcs/orbsvcs/Notify/Notify_Event_Manager.cpp +++ /dev/null @@ -1,194 +0,0 @@ -// $Id$ - -#include "orbsvcs/ESF/ESF_Proxy_Collection.h" -#include "Notify_Event_Manager.h" -#include "Notify_Factory.h" -#include "Notify_Worker_Task.h" -#include "Notify_Event_Manager_Objects_Factory.h" -#include "Notify_Update_Dispatch_Command.h" -#include "Notify_AdminProperties.h" -#include "Notify_QoSAdmin_i.h" -#include "Notify_EventChannel_i.h" - -#if ! defined (__ACE_INLINE__) -#include "Notify_Event_Manager.i" -#endif /* __ACE_INLINE__ */ - -ACE_RCSID(Notify, Notify_Event_Manager, "$Id$") - -TAO_Notify_Event_Manager::TAO_Notify_Event_Manager (TAO_Notify_EventChannel_i* event_channel, TAO_Notify_EMO_Factory* emo_factory) - :event_channel_ (event_channel), - event_map_ (0), - event_processor_ (0), - updates_dispatching_task_ (0), - emo_factory_ (emo_factory), - admin_properties_ (0) -{ -} - -TAO_Notify_Event_Manager::~TAO_Notify_Event_Manager () -{ - delete this->event_map_; - delete this->event_processor_; - delete this->lock_; - delete this->admin_properties_; - - this->emo_factory_->destroy_updates_task (this->updates_dispatching_task_); -} - -void -TAO_Notify_Event_Manager::init (ACE_ENV_SINGLE_ARG_DECL) -{ - ACE_NEW_THROW_EX (this->lock_, - ACE_Lock_Adapter<TAO_SYNCH_MUTEX> (), - CORBA::NO_MEMORY ()); - - // Create members. - - this->admin_properties_ = new TAO_Notify_AdminProperties (); - - this->event_map_ = - this->emo_factory_->create_event_map (ACE_ENV_SINGLE_ARG_PARAMETER); - ACE_CHECK; - - this->event_processor_ = - this->emo_factory_->create_event_processor (this ACE_ENV_ARG_PARAMETER); - ACE_CHECK; - - this->updates_dispatching_task_ = - this->emo_factory_->create_updates_task (ACE_ENV_SINGLE_ARG_PARAMETER); - ACE_CHECK; - - // Init the objects - this->event_map_->init (ACE_ENV_SINGLE_ARG_PARAMETER); - ACE_CHECK; - - TAO_Notify_QoSAdmin_i* qos_admin = - (TAO_Notify_QoSAdmin_i*)&(this->event_channel_->qos_admin ()); - - this->event_processor_->init (qos_admin ACE_ENV_ARG_PARAMETER); - ACE_CHECK; - - if (this->updates_dispatching_task_->init_task ( - this->admin_properties_, - qos_admin) != 0) - { - // Some error has ocurred. - ACE_THROW (CORBA::UNKNOWN ()); - } -} - -void -TAO_Notify_Event_Manager::shutdown (ACE_ENV_SINGLE_ARG_DECL) -{ - ACE_GUARD_THROW_EX (ACE_Lock, ace_mon, *this->lock_, - CORBA::INTERNAL ()); - ACE_CHECK; - - this->event_processor_->shutdown (ACE_ENV_SINGLE_ARG_PARAMETER); - ACE_CHECK; - - this->event_map_->shutdown (ACE_ENV_SINGLE_ARG_PARAMETER); - ACE_CHECK; - - this->updates_dispatching_task_->shutdown (ACE_ENV_SINGLE_ARG_PARAMETER); -} - -void -TAO_Notify_Event_Manager::subscribe_for_events (TAO_Notify_EventListener* event_listener, const CosNotification::EventTypeSeq & added, const CosNotification::EventTypeSeq & removed ACE_ENV_ARG_DECL) -{ - TAO_Notify_EventType_List added_update, removed_update; - - this->event_map_->subscribe_for_events (event_listener, added_update, - added ACE_ENV_ARG_PARAMETER); - ACE_CHECK; - - this->event_map_->unsubscribe_from_events (event_listener, removed_update, - removed ACE_ENV_ARG_PARAMETER); - ACE_CHECK; - - // if either of the lists are *not* empty, send updates - if (added_update.is_empty () == 0 || removed_update.is_empty () == 0) - this->dispatch_updates_i (this->event_map_->subscription_change_listeners (), - added_update, removed_update ACE_ENV_ARG_PARAMETER); -} - -void -TAO_Notify_Event_Manager::update_publication_list (const CosNotification::EventTypeSeq & added, const CosNotification::EventTypeSeq & removed ACE_ENV_ARG_DECL) -{ - TAO_Notify_EventType_List added_list; - TAO_Notify_EventType_List removed_list; - - this->event_map_->update_publication_list (added, removed, - added_list, removed_list ACE_ENV_ARG_PARAMETER); - ACE_CHECK; - - // if either of the lists are *not* empty, send updates - if (added_list.is_empty () == 0 || removed_list.is_empty () == 0) - this->dispatch_updates_i (this->event_map_->publication_change_listeners (), - added_list, removed_list ACE_ENV_ARG_PARAMETER); -} - -void -TAO_Notify_Event_Manager::update_task_admins (void) -{ - this->updates_dispatching_task_->update_admin (*this->admin_properties_); -} - -void -TAO_Notify_Event_Manager::dispatch_updates_i (TAO_Notify_UpdateListener_List* update_listener_list, TAO_Notify_EventType_List& added, TAO_Notify_EventType_List& removed ACE_ENV_ARG_DECL) -{ - ACE_GUARD_THROW_EX (ACE_Lock, ace_mon, *this->lock_, - CORBA::INTERNAL ()); - - TAO_Notify_Update_Worker update_worker (this->updates_dispatching_task_, - added, removed); - - update_listener_list->for_each (&update_worker ACE_ENV_ARG_PARAMETER); -} - -/********************************************************************/ - -TAO_Notify_Update_Worker::TAO_Notify_Update_Worker (TAO_Notify_Worker_Task * updates_dispatching_task, TAO_Notify_EventType_List& added, TAO_Notify_EventType_List& removed) - : added_ (added), - removed_ (removed), - updates_dispatching_task_ (updates_dispatching_task) -{ -} - -void -TAO_Notify_Update_Worker::work (TAO_Notify_UpdateListener* listener ACE_ENV_ARG_DECL) -{ - TAO_Notify_Update_Dispatch_Command* mb = - new TAO_Notify_Update_Dispatch_Command (listener, this->added_, - this->removed_); - - this->updates_dispatching_task_->process_event (mb ACE_ENV_ARG_PARAMETER); -} - -/********************************************************************/ -#if defined (ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION) - -template class ACE_Hash_Map_Entry<TAO_Notify_EventType, TAO_Notify_EventListener_List *>; -template class ACE_Hash_Map_Manager<TAO_Notify_EventType, TAO_Notify_EventListener_List *,TAO_SYNCH_MUTEX>; -template class ACE_Hash_Map_Manager_Ex<TAO_Notify_EventType, TAO_Notify_EventListener_List *,ACE_Hash<TAO_Notify_EventType>, ACE_Equal_To<TAO_Notify_EventType>,TAO_SYNCH_MUTEX>; -template class ACE_Hash_Map_Iterator<TAO_Notify_EventType, TAO_Notify_EventListener_List *,TAO_SYNCH_MUTEX>; -template class ACE_Hash_Map_Iterator_Ex<TAO_Notify_EventType, TAO_Notify_EventListener_List *,ACE_Hash<TAO_Notify_EventType>, ACE_Equal_To<TAO_Notify_EventType>,TAO_SYNCH_MUTEX>; -template class ACE_Hash_Map_Iterator_Base_Ex<TAO_Notify_EventType, TAO_Notify_EventListener_List *,ACE_Hash<TAO_Notify_EventType>, ACE_Equal_To<TAO_Notify_EventType>,TAO_SYNCH_MUTEX>; -template class ACE_Hash_Map_Reverse_Iterator<TAO_Notify_EventType, TAO_Notify_EventListener_List *,TAO_SYNCH_MUTEX>; -template class ACE_Hash_Map_Reverse_Iterator_Ex<TAO_Notify_EventType, TAO_Notify_EventListener_List *,ACE_Hash<TAO_Notify_EventType>, ACE_Equal_To<TAO_Notify_EventType>,TAO_SYNCH_MUTEX>; -template class ACE_Hash<TAO_Notify_EventType>; -template class ACE_Equal_To<TAO_Notify_EventType>; -#elif defined (ACE_HAS_TEMPLATE_INSTANTIATION_PRAGMA) - -#pragma instantiate ACE_Hash_Map_Entry<TAO_Notify_EventType, TAO_Notify_EventListener_List *> -#pragma instantiate ACE_Hash_Map_Manager<TAO_Notify_EventType, TAO_Notify_EventListener_List *,TAO_SYNCH_MUTEX> -#pragma instantiate ACE_Hash_Map_Manager_Ex<TAO_Notify_EventType, TAO_Notify_EventListener_List *,ACE_Hash<TAO_Notify_EventType>, ACE_Equal_To<TAO_Notify_EventType>,TAO_SYNCH_MUTEX> -#pragma instantiate ACE_Hash_Map_Iterator<TAO_Notify_EventType, TAO_Notify_EventListener_List *,TAO_SYNCH_MUTEX> -#pragma instantiate ACE_Hash_Map_Iterator_Ex<TAO_Notify_EventType, TAO_Notify_EventListener_List *,ACE_Hash<TAO_Notify_EventType>, ACE_Equal_To<TAO_Notify_EventType>,TAO_SYNCH_MUTEX> -#pragma instantiate ACE_Hash_Map_Iterator_Base_Ex<TAO_Notify_EventType, TAO_Notify_EventListener_List *,ACE_Hash<TAO_Notify_EventType>, ACE_Equal_To<TAO_Notify_EventType>,TAO_SYNCH_MUTEX> -#pragma instantiate ACE_Hash_Map_Reverse_Iterator<TAO_Notify_EventType, TAO_Notify_EventListener_List *,TAO_SYNCH_MUTEX> -#pragma instantiate ACE_Hash_Map_Reverse_Iterator_Ex<TAO_Notify_EventType, TAO_Notify_EventListener_List *,ACE_Hash<TAO_Notify_EventType>, ACE_Equal_To<TAO_Notify_EventType>,TAO_SYNCH_MUTEX> -#pragma instantiate template ACE_Hash<TAO_Notify_EventType> -#pragma instantiate template ACE_Equal_To<TAO_Notify_EventType> -#endif /*ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION */ diff --git a/TAO/orbsvcs/orbsvcs/Notify/Notify_Event_Manager.h b/TAO/orbsvcs/orbsvcs/Notify/Notify_Event_Manager.h deleted file mode 100644 index 527d0c66728..00000000000 --- a/TAO/orbsvcs/orbsvcs/Notify/Notify_Event_Manager.h +++ /dev/null @@ -1,182 +0,0 @@ -/* -*- C++ -*- */ -//============================================================================= -/** - * @file Notify_Event_Manager.h - * - * $Id$ - * - * An Event Manager for the Notification Service. - * - * - * @author Pradeep Gore <pradeep@cs.wustl.edu> - */ -//============================================================================= - - -#ifndef TAO_NOTIFY_EVENT_MANAGER -#define TAO_NOTIFY_EVENT_MANAGER -#include "ace/pre.h" -#include "orbsvcs/CosNotificationC.h" - -#if !defined (ACE_LACKS_PRAGMA_ONCE) -#pragma once -#endif /* ACE_LACKS_PRAGMA_ONCE */ - -#include "notify_export.h" -#include "Notify_Listeners.h" -#include "Notify_Collection.h" - -class TAO_Notify_EventChannel_i; -class TAO_Notify_Event; -class TAO_Notify_Event_Processor; -class TAO_Notify_Event_Map; -class TAO_Notify_Update_Dispatcher; -class TAO_Notify_EventSource; -class TAO_Notify_EventListener; -class TAO_Notify_Worker_Task; -class TAO_Notify_EMO_Factory; -class TAO_Notify_Event_Processor; -class TAO_Notify_AdminProperties; - -/** - * @class TAO_Notify_Event_Manager - * - * @brief TAO_Notify_Event_Manager - * - * Handles all aspects of event propogation thru the channel. - * Also keeps track of publications and subscriptions. - */ -class TAO_Notify_Export TAO_Notify_Event_Manager -{ - - public: - // = Initialization and termination code. - /// Constructor. - TAO_Notify_Event_Manager (TAO_Notify_EventChannel_i* parent, - TAO_Notify_EMO_Factory* emo_factory); - - /// Destructor. - ~TAO_Notify_Event_Manager (); - - /// Init - void init (ACE_ENV_SINGLE_ARG_DECL); - - /// Shutdown operations. - void shutdown (ACE_ENV_SINGLE_ARG_DECL); - - // = Publish/Subscribe management - // = Subscription - /// Subscribes <event_listener> for events <added>. - /// Unsubscribes <event_listener> for events <removed>. - void subscribe_for_events (TAO_Notify_EventListener* event_listener, const CosNotification::EventTypeSeq & added, const CosNotification::EventTypeSeq & removed ACE_ENV_ARG_DECL); - - // = Publications - /// Suppliers can send anonymous requests to the Event Manager to indicate - /// what kind of events they expect to produce. - void update_publication_list (const CosNotification::EventTypeSeq & added, const CosNotification::EventTypeSeq & removed ACE_ENV_ARG_DECL); - - // = Updates - /// Registers the subscription update listener with the Event Manager. - void register_for_subscription_updates (TAO_Notify_UpdateListener* update_listener ACE_ENV_ARG_DECL); - - /// Unregister from subscription updates. - void unregister_from_subscription_updates (TAO_Notify_UpdateListener* update_listener ACE_ENV_ARG_DECL); - - /// Registers the publication update listener with the Event Manager. - void register_for_publication_updates (TAO_Notify_UpdateListener* update_listener ACE_ENV_ARG_DECL); - - /// Unregister from publication updates. - void unregister_from_publication_updates (TAO_Notify_UpdateListener* update_listener ACE_ENV_ARG_DECL); - - // = Accessors - /// Obtain the publication list. - CosNotification::EventTypeSeq* obtain_offered_types (void); - - /// Obtain the subscription list. - CosNotification::EventTypeSeq* obtain_subscription_types (void); - - /// Get the event map. - TAO_Notify_Event_Map* event_map (void); - - /// Get the Event Processor. - TAO_Notify_Event_Processor* event_processor (void); - - /// Get the Admin Properties. - TAO_Notify_AdminProperties* admin_properties (void); - - /// Get the Resource Factory. - TAO_Notify_EMO_Factory* resource_factory (void); - - // = Event forwarding methods. - /// Delivers the event to listeners subscribed for <event> - /// <event_source> is the <event> source to the Event Manager. - void process_event (TAO_Notify_Event* event, - TAO_Notify_EventSource* event_source - ACE_ENV_ARG_DECL); - - void update_task_admins (void); - -protected: - // = Event dispatching methods. - /// Dispatch the updates to the <update_listener_list> - void dispatch_updates_i (TAO_Notify_UpdateListener_List* update_listener_list, - TAO_Notify_EventType_List& added, - TAO_Notify_EventType_List& removed - ACE_ENV_ARG_DECL); - - // = Data members. - /// The Event Channel that we're managing for. - TAO_Notify_EventChannel_i * event_channel_; - - /// Container for event <-> source/sinks mappings. - TAO_Notify_Event_Map* event_map_; - - /// Handles processing of events. - TAO_Notify_Event_Processor * event_processor_; - - /// Dispatches updates to update listeners. - TAO_Notify_Worker_Task * updates_dispatching_task_; - - /// Event manager objects factory. - TAO_Notify_EMO_Factory* emo_factory_; - - /// The locking strategy. - ACE_Lock* lock_; - - /// Admin properties. - TAO_Notify_AdminProperties* admin_properties_; -}; - -/**************************************************************************/ - - /** - * @class TAO_Notify_Update_Worker - * - * @brief TAO_Notify_Update_Worker - * - * Worker to send update commands to the updates dispatching task. - */ -class TAO_Notify_Export TAO_Notify_Update_Worker : public TAO_ESF_Worker<TAO_Notify_UpdateListener> -{ - public: - // = Initialization and termination code. - TAO_Notify_Update_Worker (TAO_Notify_Worker_Task * updates_dispatching_task, TAO_Notify_EventType_List& added, TAO_Notify_EventType_List& removed); - - // = TAO_ESF_Worker method - void work (TAO_Notify_UpdateListener* listener ACE_ENV_ARG_DECL); - protected: - // = Data members. - /// Data to transmit. - TAO_Notify_EventType_List& added_; - TAO_Notify_EventType_List& removed_; - - /// Update dispatcher - TAO_Notify_Worker_Task * updates_dispatching_task_; -}; - -#if defined (__ACE_INLINE__) -#include "Notify_Event_Manager.i" -#endif /* __ACE_INLINE__ */ - -#include "ace/post.h" -#endif /* TAO_NOTIFY_EVENT_MANAGER */ diff --git a/TAO/orbsvcs/orbsvcs/Notify/Notify_Event_Manager.i b/TAO/orbsvcs/orbsvcs/Notify/Notify_Event_Manager.i deleted file mode 100644 index 0b9af87de70..00000000000 --- a/TAO/orbsvcs/orbsvcs/Notify/Notify_Event_Manager.i +++ /dev/null @@ -1,85 +0,0 @@ -//$Id$ -#include "Notify_Listeners.h" -#include "Notify_Event_Map.h" -#include "Notify_Event_Processor.h" -#include "Notify_AdminProperties.h" -#include "tao/corba.h" - -ACE_INLINE void -TAO_Notify_Event_Manager::process_event (TAO_Notify_Event* event, - TAO_Notify_EventSource* event_source - ACE_ENV_ARG_DECL) -{ - if (admin_properties_->reject_new_events () == 1 - && admin_properties_->queue_full ()) - ACE_THROW (CORBA::IMP_LIMIT ()); - - this->event_processor_->evaluate_source_filter (event, - event_source - ACE_ENV_ARG_PARAMETER); - // Start by checking if the event passes through the Source's filter. -} - -ACE_INLINE void -TAO_Notify_Event_Manager::register_for_publication_updates (TAO_Notify_UpdateListener* update_listener ACE_ENV_ARG_DECL) -{ - this->event_map_->register_for_publication_updates (update_listener - ACE_ENV_ARG_PARAMETER); -} - -ACE_INLINE void -TAO_Notify_Event_Manager::register_for_subscription_updates (TAO_Notify_UpdateListener* update_listener ACE_ENV_ARG_DECL) -{ - this->event_map_->register_for_subscription_updates (update_listener - ACE_ENV_ARG_PARAMETER); -} - -ACE_INLINE void -TAO_Notify_Event_Manager:: unregister_from_subscription_updates (TAO_Notify_UpdateListener* update_listener ACE_ENV_ARG_DECL) -{ - this->event_map_->unregister_from_subscription_updates (update_listener - ACE_ENV_ARG_PARAMETER); -} - -ACE_INLINE void -TAO_Notify_Event_Manager::unregister_from_publication_updates (TAO_Notify_UpdateListener* update_listener ACE_ENV_ARG_DECL) -{ - this->event_map_->unregister_from_publication_updates(update_listener - ACE_ENV_ARG_PARAMETER); -} - -ACE_INLINE TAO_Notify_Event_Map* -TAO_Notify_Event_Manager::event_map (void) -{ - return this->event_map_; -} - -ACE_INLINE TAO_Notify_Event_Processor* -TAO_Notify_Event_Manager::event_processor (void) -{ - return this->event_processor_; -} - -ACE_INLINE CosNotification::EventTypeSeq* -TAO_Notify_Event_Manager::obtain_offered_types (void) -{ - return this->event_map_->obtain_offered_types (); -} - -ACE_INLINE CosNotification::EventTypeSeq* -TAO_Notify_Event_Manager::obtain_subscription_types (void) -{ - return this->event_map_->obtain_subscription_types (); -} - -ACE_INLINE TAO_Notify_AdminProperties* -TAO_Notify_Event_Manager::admin_properties (void) -{ - return this->admin_properties_; -} - -ACE_INLINE TAO_Notify_EMO_Factory* -TAO_Notify_Event_Manager::resource_factory (void) -{ - return this->emo_factory_; -} diff --git a/TAO/orbsvcs/orbsvcs/Notify/Notify_Event_Manager_Objects_Factory.h b/TAO/orbsvcs/orbsvcs/Notify/Notify_Event_Manager_Objects_Factory.h deleted file mode 100644 index e3dd51673ee..00000000000 --- a/TAO/orbsvcs/orbsvcs/Notify/Notify_Event_Manager_Objects_Factory.h +++ /dev/null @@ -1,78 +0,0 @@ -/* -*- C++ -*- */ -//============================================================================= -/** - * @file Notify_Event_Manager_Objects_Factory.h - * - * $Id$ - * - * Interface definition of Factory for event manager objects. - * - * - * @author Pradeep Gore <pradeep@cs.wustl.edu> - */ -//============================================================================= - - -#ifndef NOTIFY_EMO_FACTORY_H -#define NOTIFY_EMO_FACTORY_H - -#include "ace/pre.h" -#include "ace/Service_Object.h" - -#if !defined (ACE_LACKS_PRAGMA_ONCE) -# pragma once -#endif /* ACE_LACKS_PRAGMA_ONCE */ - -#include "tao/corba.h" -#include "notify_export.h" - -class TAO_Notify_Event_Manager; -class TAO_Notify_Event_Map; -class TAO_Notify_Event_Processor; -class TAO_Notify_Worker_Task; -class TAO_Notify_EventChannel_i; - - /** - * @class TAO_Notify_EMO_Factory - * - * @brief TAO_Notify_EMO_Factory - * - * Factory interface for event manager and friends. - */ -class TAO_Notify_Export TAO_Notify_EMO_Factory : public ACE_Service_Object -{ - public: - virtual ~TAO_Notify_EMO_Factory (){}; - - /// Create an event manager. - virtual TAO_Notify_Event_Manager* create_event_manager (TAO_Notify_EventChannel_i* channel ACE_ENV_ARG_DECL)= 0; - - /// Create the event map. - virtual TAO_Notify_Event_Map* create_event_map (ACE_ENV_SINGLE_ARG_DECL)= 0; - - /// Create event processor. - virtual TAO_Notify_Event_Processor* create_event_processor (TAO_Notify_Event_Manager* event_manager ACE_ENV_ARG_DECL)= 0; - - // = Create processing tasks. - virtual TAO_Notify_Worker_Task* create_source_eval_task (ACE_ENV_SINGLE_ARG_DECL)= 0; - virtual TAO_Notify_Worker_Task* create_lookup_task (ACE_ENV_SINGLE_ARG_DECL)= 0; - virtual TAO_Notify_Worker_Task* create_listener_eval_task (ACE_ENV_SINGLE_ARG_DECL)= 0; - - /// Task that dispatches events. - /// Task that dispatches updates. - virtual TAO_Notify_Worker_Task* create_dispatching_task (ACE_ENV_SINGLE_ARG_DECL)= 0; - virtual TAO_Notify_Worker_Task* create_updates_task (ACE_ENV_SINGLE_ARG_DECL)= 0; - - // Destroy processing tasks. - virtual void destroy_source_eval_task (TAO_Notify_Worker_Task* task) = 0; - virtual void destroy_lookup_task (TAO_Notify_Worker_Task* task) = 0; - virtual void destroy_listener_eval_task (TAO_Notify_Worker_Task* task) = 0; - virtual void destroy_dispatching_task (TAO_Notify_Worker_Task* task) = 0; - virtual void destroy_updates_task (TAO_Notify_Worker_Task* task) = 0; - - /// bad hack. why is this here?! - virtual void print_values (void) = 0; -}; - -#include "ace/post.h" -#endif /* NOTIFY_EMO_FACTORY_H */ diff --git a/TAO/orbsvcs/orbsvcs/Notify/Notify_Event_Map.cpp b/TAO/orbsvcs/orbsvcs/Notify/Notify_Event_Map.cpp deleted file mode 100644 index 7881ebdfd17..00000000000 --- a/TAO/orbsvcs/orbsvcs/Notify/Notify_Event_Map.cpp +++ /dev/null @@ -1,236 +0,0 @@ -// $Id$ - -#include "orbsvcs/ESF/ESF_Proxy_Collection.h" -#include "Notify_Event.h" -#include "Notify_Event_Map.h" -#include "Notify_Factory.h" -#include "Notify_Collection.h" -#include "Notify_Event_Manager_Objects_Factory.h" -#include "Notify_Collection_Factory.h" - -#if ! defined (__ACE_INLINE__) -#include "Notify_Event_Map.i" -#endif /* __ACE_INLINE__ */ - -ACE_RCSID(Notify, Notify_Event_Map, "$Id$") - -TAO_Notify_Event_Map::TAO_Notify_Event_Map (TAO_Notify_EMO_Factory* emo_factory) - :default_subscription_list_ (0), - subscription_change_listeners_ (0), - publication_change_listeners_ (0), - emo_factory_ (emo_factory), - collection_factory_ (TAO_Notify_Factory::get_collection_factory ()) -{ -} - -TAO_Notify_Event_Map::~TAO_Notify_Event_Map () -{ - // delete all event listener lists in the event map. - EVENT_RECIPIENT_MAP::ITERATOR iterator (this->event_recipient_map_); - - for (EVENT_RECIPIENT_MAP::ENTRY *entry = 0; - iterator.next (entry) != 0; - iterator.advance ()) - { - delete entry->int_id_; - } - - delete default_subscription_list_; - delete subscription_change_listeners_; - delete publication_change_listeners_; -} - -void -TAO_Notify_Event_Map::init (ACE_ENV_SINGLE_ARG_DECL) -{ - this->default_subscription_list_ = - this->collection_factory_->create_event_listener_list (ACE_ENV_SINGLE_ARG_PARAMETER); - ACE_CHECK; - // Create the default list of listeners. - - this->subscription_change_listeners_ - = this->collection_factory_->create_update_listener_list (ACE_ENV_SINGLE_ARG_PARAMETER); - ACE_CHECK; - - this->publication_change_listeners_ - = this->collection_factory_->create_update_listener_list (ACE_ENV_SINGLE_ARG_PARAMETER); -} - -void -TAO_Notify_Event_Map::shutdown (ACE_ENV_SINGLE_ARG_DECL) -{ - // Shutdown all event listener lists in the event map. - EVENT_RECIPIENT_MAP::ITERATOR iterator (this->event_recipient_map_); - - for (EVENT_RECIPIENT_MAP::ENTRY *entry = 0; - iterator.next (entry) != 0; - iterator.advance ()) - { - entry->int_id_->shutdown (ACE_ENV_SINGLE_ARG_PARAMETER); - ACE_CHECK; - } - - default_subscription_list_->shutdown (ACE_ENV_SINGLE_ARG_PARAMETER); - ACE_CHECK; - - subscription_change_listeners_->shutdown (ACE_ENV_SINGLE_ARG_PARAMETER); - ACE_CHECK; - - publication_change_listeners_->shutdown (ACE_ENV_SINGLE_ARG_PARAMETER); -} - -void -TAO_Notify_Event_Map::subscribe_for_events (TAO_Notify_EventListener* event_listener, TAO_Notify_EventType_List& update, const CosNotification::EventTypeSeq & added ACE_ENV_ARG_DECL) -{ - TAO_Notify_EventListener_List* event_listener_list; - TAO_Notify_EventType event_type; - - for (CORBA::ULong index = 0; index < added.length (); index++) - { - event_type = added[index]; -#if 0 - ACE_DEBUG ((LM_DEBUG, "subscribing %x for event: %s, %s\n", - event_listener, - event_type.event_type_.domain_name.in (), - event_type.event_type_.type_name.in ())); -#endif - if (event_type.is_special ()) - event_listener_list = default_subscription_list_; - else if (this->event_recipient_map_.find (event_type, - event_listener_list) == -1) - { - // create the list. - TAO_Notify_EventListener_List* new_list = - this->collection_factory_->create_event_listener_list (ACE_ENV_SINGLE_ARG_PARAMETER); - ACE_CHECK; - - // add the list to the recipient map. - this->event_recipient_map_.bind (event_type, new_list); - event_listener_list = new_list; - } - - event_listener_list->connected (event_listener ACE_ENV_ARG_PARAMETER); - ACE_CHECK; - - // mirror changes in the subscription list - if (this->subscription_list_.insert (event_type) == 0) - update.insert (event_type); - } -} - -void -TAO_Notify_Event_Map::unsubscribe_from_events (TAO_Notify_EventListener* event_listener, TAO_Notify_EventType_List &update, const CosNotification::EventTypeSeq & removed ACE_ENV_ARG_DECL) -{ - TAO_Notify_EventListener_List* event_listener_list; - TAO_Notify_EventType event_type; - - for (CORBA::ULong index = 0; index < removed.length (); index++) - { - event_type = removed[index]; - - // find out if there is a event listener list for this event type. - if (event_type.is_special ()) - event_listener_list = this->default_subscription_list_; - else if (this->event_recipient_map_.find (event_type, - event_listener_list) == -1) - continue; - - // remove <event_listener> from the list. - - event_listener_list->disconnected (event_listener ACE_ENV_ARG_PARAMETER); - ACE_CHECK; - - // If this was the last entry in the list then we should remove - // the corrsponding event_type from the recipient_map. - // However i'm going to leave the blank entries based on the assumption - // that a system will have a fixed set of event types. - // This way we save that cost of creating a new entry in the map and - // its corresponding listener list when an event type seen before - // shows up again. - // Later we could add logic to check at non-time-critical points, if - // the map has grown too big and prune it. (lazy evaluation). - - // mirror changes in the subscription list - if (this->subscription_list_.remove (event_type) == 0) - update.insert (event_type); // modify the update list. - } -} - -void -TAO_Notify_Event_Map::register_for_publication_updates (TAO_Notify_UpdateListener* update_listener ACE_ENV_ARG_DECL) -{ - this->publication_change_listeners_->connected (update_listener ACE_ENV_ARG_PARAMETER); -} - -void -TAO_Notify_Event_Map::register_for_subscription_updates (TAO_Notify_UpdateListener* update_listener ACE_ENV_ARG_DECL) -{ - this->subscription_change_listeners_->connected (update_listener ACE_ENV_ARG_PARAMETER); -} - -void -TAO_Notify_Event_Map:: unregister_from_subscription_updates (TAO_Notify_UpdateListener* update_listener ACE_ENV_ARG_DECL) -{ - this->subscription_change_listeners_->disconnected (update_listener ACE_ENV_ARG_PARAMETER); -} - -void -TAO_Notify_Event_Map::unregister_from_publication_updates (TAO_Notify_UpdateListener* update_listener ACE_ENV_ARG_DECL) -{ - this->publication_change_listeners_->disconnected (update_listener ACE_ENV_ARG_PARAMETER); -} - -CosNotification::EventTypeSeq* -TAO_Notify_Event_Map::obtain_offered_types (void) -{ - CosNotification::EventTypeSeq* event_type_seq; - - ACE_NEW_RETURN (event_type_seq, - CosNotification::EventTypeSeq(this->publication_list_.size ()), - 0); - - this->publication_list_.populate (*event_type_seq); - - return event_type_seq; -} - -CosNotification::EventTypeSeq* -TAO_Notify_Event_Map::obtain_subscription_types (void) -{ - CosNotification::EventTypeSeq* event_type_seq; - - ACE_NEW_RETURN (event_type_seq, - CosNotification::EventTypeSeq(this->subscription_list_.size ()), - 0); - - this->subscription_list_.populate (*event_type_seq); - - return event_type_seq; -} - -void -TAO_Notify_Event_Map::update_publication_list (const CosNotification::EventTypeSeq & added, const CosNotification::EventTypeSeq & removed, TAO_Notify_EventType_List &added_list, TAO_Notify_EventType_List &removed_list ACE_ENV_ARG_DECL_NOT_USED/*ACE_ENV_SINGLE_ARG_PARAMETER*/) -{ - TAO_Notify_EventType event_type; - - CORBA::ULong len = removed.length (); - CORBA::ULong i = 0 ; - for (; i < len; ++i) - { - event_type = removed[i]; - if (this->publication_list_.remove (event_type) == 0) - { - removed_list.insert (event_type); - } - } - - len = added.length (); - for (i = 0; i < len; i++) - { - event_type = added[i]; - if (this->publication_list_.insert (event_type) == 0) - { - added_list.insert (event_type); - } - } -} diff --git a/TAO/orbsvcs/orbsvcs/Notify/Notify_Event_Map.h b/TAO/orbsvcs/orbsvcs/Notify/Notify_Event_Map.h deleted file mode 100644 index 44281098d80..00000000000 --- a/TAO/orbsvcs/orbsvcs/Notify/Notify_Event_Map.h +++ /dev/null @@ -1,153 +0,0 @@ -/* -*- C++ -*- */ -//============================================================================= -/** - * @file Notify_Event_Map.h - * - * $Id$ - * - * Stores information about subscription mappings - * - * - * @author Pradeep Gore <pradeep@cs.wustl.edu> - */ -//============================================================================= - - -#ifndef TAO_NOTIFY_Event_Map_HEADER_H -#define TAO_NOTIFY_Event_Map_HEADER_H -#include "ace/pre.h" - -#include "orbsvcs/CosNotificationC.h" - -#if !defined (ACE_LACKS_PRAGMA_ONCE) -# pragma once -#endif /* ACE_LACKS_PRAGMA_ONCE */ - -#include "Notify_Collection.h" -#include "notify_export.h" -#include "orbsvcs/ESF/ESF_Worker.h" - -#include "ace/Hash_Map_Manager.h" - -class TAO_Notify_EventListener; -class TAO_Notify_UpdateListener; -class TAO_Notify_EventType; -class TAO_Notify_Collection_Factory; -class TAO_Notify_EMO_Factory; - -/** - * @class TAO_Notify_Event_Map - * - * @brief TAO_Notify_Event_Map - * - * This is a compound container consisting of: - * - A "recipient" map : mapping between an event and its subscriibers - * - Lists of current events being subscribed, published. - * - Lists of subscriptions, publications update listeners. - */ -class TAO_Notify_Export TAO_Notify_Event_Map -{ -public: - /// Constructor. - TAO_Notify_Event_Map (TAO_Notify_EMO_Factory* emo_factory); - - /// Destructor. - virtual ~TAO_Notify_Event_Map (); - - /// Init - void init (ACE_ENV_SINGLE_ARG_DECL); - - /// Shutdown releases all listeners. - void shutdown (ACE_ENV_SINGLE_ARG_DECL); - - // = Subscribe and Unsubscribe methods. - void subscribe_for_events (TAO_Notify_EventListener* event_listener, TAO_Notify_EventType_List& update, const CosNotification::EventTypeSeq & added ACE_ENV_ARG_DECL); - - void unsubscribe_from_events (TAO_Notify_EventListener* event_listener, TAO_Notify_EventType_List &update, const CosNotification::EventTypeSeq & removed ACE_ENV_ARG_DECL); - - // = Publish and Unpublish methods - // Later: - // Suppliers can send anonymous requests to the Event Manager to indicate - // what kind of events they expect to produce. - void update_publication_list (const CosNotification::EventTypeSeq & added, const CosNotification::EventTypeSeq & removed, TAO_Notify_EventType_List &added_list, TAO_Notify_EventType_List &removed_list ACE_ENV_ARG_DECL); - - // = Subscription Updates - /// Registers the subscription update listener with the Event Manager. - void register_for_subscription_updates (TAO_Notify_UpdateListener* update_listener ACE_ENV_ARG_DECL); - - /// Unregister from subscription updates. - void unregister_from_subscription_updates (TAO_Notify_UpdateListener* update_listener ACE_ENV_ARG_DECL); - - // = Publication Updates - /// Registers the publication update listener with the Event Manager. - void register_for_publication_updates (TAO_Notify_UpdateListener* update_listener ACE_ENV_ARG_DECL); - - /// Unregister from publication updates. - void unregister_from_publication_updates (TAO_Notify_UpdateListener* update_listener ACE_ENV_ARG_DECL); - - // = Subscription list lookup - int find (TAO_Notify_EventType const & event_type, TAO_Notify_EventListener_List*& event_listener_list); - - // = Accessors - /// Obtain the publication list. - CosNotification::EventTypeSeq* obtain_offered_types(void); - - /// Obtain the subscription list. - CosNotification::EventTypeSeq* obtain_subscription_types (void); - - TAO_Notify_UpdateListener_List* subscription_change_listeners (void); - TAO_Notify_UpdateListener_List* publication_change_listeners (void); - TAO_Notify_EventListener_List* default_subscription_list (void); - -protected: - // = Typedefs - typedef ACE_Hash_Map_Manager <TAO_Notify_EventType, - TAO_Notify_EventListener_List*, TAO_SYNCH_MUTEX> EVENT_RECIPIENT_MAP; - - // = Data Members - /** - * A Map of event types and the groups of event listeners interested in them. - * The keys of the map are a list of events that consumers have currently - * subscribed for. - */ - EVENT_RECIPIENT_MAP event_recipient_map_; - - /// Save a reference to the default list, we don't want to spend time - /// looking for it in the <event_recipient_map>. - TAO_Notify_EventListener_List* default_subscription_list_; - - /// The list of event types that are being currently published by suppliers. - TAO_Notify_EventType_List publication_list_; - - /** - * The list of event types that are being currently subscribed to by - * consumers. This list is the same as the list of keys in the - * <event_recepient_map>. We keep a copy of that list here to reduce - * contention for the map which will be accessed for every event that - * enters the system. - */ - TAO_Notify_EventType_List subscription_list_; - - /// This is a list of listeners that want to be notified if the subsciptions - /// from consumers changes the <event_recipient_map_> keys. - TAO_Notify_UpdateListener_List* subscription_change_listeners_; - - /// This is a list of listeners that want to be notified if the publications - /// from suppliers changes the <publication_list_>. - TAO_Notify_UpdateListener_List* publication_change_listeners_; - - /// Evenet Manager Objects factory. - TAO_Notify_EMO_Factory* emo_factory_; - - /// Collection objects factory. - TAO_Notify_Collection_Factory* collection_factory_; -}; - -/********************************************************************/ - -#if defined (__ACE_INLINE__) -#include "Notify_Event_Map.i" -#endif /* __ACE_INLINE__ */ - -#include "ace/post.h" -#endif /* TAO_NOTIFY_Event_Map_HEADER_H */ diff --git a/TAO/orbsvcs/orbsvcs/Notify/Notify_Event_Map.i b/TAO/orbsvcs/orbsvcs/Notify/Notify_Event_Map.i deleted file mode 100644 index 003c4bd3e59..00000000000 --- a/TAO/orbsvcs/orbsvcs/Notify/Notify_Event_Map.i +++ /dev/null @@ -1,29 +0,0 @@ -//$Id$ - -#include "ace/Containers_T.h" -#include "orbsvcs/ESF/ESF_Proxy_Collection.h" -#include "Notify_Event.h" - -ACE_INLINE int -TAO_Notify_Event_Map::find (TAO_Notify_EventType const & event_type, TAO_Notify_EventListener_List*& event_listener_list) -{ - return this->event_recipient_map_.find (event_type, event_listener_list); -} - -ACE_INLINE TAO_Notify_UpdateListener_List* -TAO_Notify_Event_Map::publication_change_listeners (void) -{ - return publication_change_listeners_; -} - -ACE_INLINE TAO_Notify_UpdateListener_List* -TAO_Notify_Event_Map::subscription_change_listeners (void) -{ - return subscription_change_listeners_; -} - -ACE_INLINE TAO_Notify_EventListener_List* -TAO_Notify_Event_Map::default_subscription_list (void) -{ - return default_subscription_list_; -} diff --git a/TAO/orbsvcs/orbsvcs/Notify/Notify_Event_Processor.cpp b/TAO/orbsvcs/orbsvcs/Notify/Notify_Event_Processor.cpp deleted file mode 100644 index ce55df28f1a..00000000000 --- a/TAO/orbsvcs/orbsvcs/Notify/Notify_Event_Processor.cpp +++ /dev/null @@ -1,103 +0,0 @@ -// $Id$ - -#include "Notify_Event_Processor.h" -#include "Notify_Worker_Task.h" -#include "Notify_Source_Filter_Eval_Command.h" -#include "Notify_Listener_Filter_Eval_Command.h" -#include "Notify_Event_Manager_Objects_Factory.h" -#include "Notify_Lookup_Command.h" -#include "Notify_Event_Dispatch_Command.h" -#include "Notify_Factory.h" -#include "Notify_Listeners.h" -#include "Notify_Event_Manager.h" -#include "tao/debug.h" - -ACE_RCSID(Notify, Notify_Event_Processor, "$Id$") - -TAO_Notify_Event_Processor::TAO_Notify_Event_Processor (TAO_Notify_Event_Manager* event_manager) - :event_manager_ (event_manager), - lookup_task_ (0), - emo_factory_ (0) -{ - this->emo_factory_ = this->event_manager_->resource_factory (); -} - -TAO_Notify_Event_Processor::~TAO_Notify_Event_Processor () -{ - delete this->lookup_task_; -} - -void -TAO_Notify_Event_Processor::init (TAO_Notify_QoSAdmin_i* qos_properties - ACE_ENV_ARG_DECL) -{ - this->lookup_task_ = this->emo_factory_->create_lookup_task (ACE_ENV_SINGLE_ARG_PARAMETER); - ACE_CHECK; - - // Get hold of the admin properties. - TAO_Notify_AdminProperties* const admin_properties = - this->event_manager_->admin_properties (); - - this->lookup_task_->init_task (admin_properties, - qos_properties); -} - -void -TAO_Notify_Event_Processor::shutdown (ACE_ENV_SINGLE_ARG_DECL) -{ - this->lookup_task_->shutdown (ACE_ENV_SINGLE_ARG_PARAMETER); -} - -void -TAO_Notify_Event_Processor::evaluate_source_filter (TAO_Notify_Event* event, - TAO_Notify_EventSource* event_source - ACE_ENV_ARG_DECL) -{ - // TODO: use cache allocator here. - // @@ Pradeep: you shouldn't be allocating at all! If this must go - // into a queue then the processing queue should make the - // allocation, that way the single threaded case works just fine. - TAO_Notify_Source_Filter_Eval_Command* mb = - new TAO_Notify_Source_Filter_Eval_Command (this, event, event_source); - - if (TAO_debug_level > 0) - ACE_DEBUG ((LM_DEBUG, "Notify (%P|%t) - " - "Evaluating listener filter\n")); - - event_source->filter_eval_task ()->process_event (mb ACE_ENV_ARG_PARAMETER); -} - -void -TAO_Notify_Event_Processor::lookup_subscriptions (TAO_Notify_Event* event, - TAO_Notify_EventSource* /*event_source*/ - ACE_ENV_ARG_DECL) -{ - TAO_Notify_Lookup_Command* lookup = - new TAO_Notify_Lookup_Command (this, event, this->event_manager_->event_map ()); - - this->lookup_task_->process_event (lookup ACE_ENV_ARG_PARAMETER); -} - -void -TAO_Notify_Event_Processor::evaluate_listener_filter (TAO_Notify_Event* event, TAO_Notify_EventListener* event_listener, CORBA::Boolean eval_parent ACE_ENV_ARG_DECL) -{ - // @@ Pradeep: you should use ACE_NEW here.... - // @@ Pradeep: do you really need to allocate this guy from the - // heap? Maybe you can just allocate it from the stack and only if - // somebody really wants to keep it around you make a copy? The - // idea is to save allocations in the good case. - - TAO_Notify_Listener_Filter_Eval_Command* mb = - new TAO_Notify_Listener_Filter_Eval_Command (this, event, event_listener, eval_parent); - - event_listener->filter_eval_task ()->process_event (mb ACE_ENV_ARG_PARAMETER); -} - -void -TAO_Notify_Event_Processor::dispatch_event (TAO_Notify_Event* event, TAO_Notify_EventListener* event_listener ACE_ENV_ARG_DECL) -{ - TAO_Notify_Event_Dispatch_Command* dispatch = - new TAO_Notify_Event_Dispatch_Command (this, event, event_listener); - - event_listener->event_dispatch_task ()->process_event (dispatch ACE_ENV_ARG_PARAMETER); -} diff --git a/TAO/orbsvcs/orbsvcs/Notify/Notify_Event_Processor.h b/TAO/orbsvcs/orbsvcs/Notify/Notify_Event_Processor.h deleted file mode 100644 index 5810abbd27d..00000000000 --- a/TAO/orbsvcs/orbsvcs/Notify/Notify_Event_Processor.h +++ /dev/null @@ -1,101 +0,0 @@ -/* -*- C++ -*- */ -//============================================================================= -/** - * @file Notify_Event_Processor.h - * - * $Id$ - * - * The QoS properties of "Order Policy" and "Discard Policy" can be set - * per proxy.To accomodate this we now have an ACE_Task per proxy. - * The TAO_Notify_Event_Processor asks each event listener and source - * for the task object to send commands to. - * - * - * @author Pradeep Gore <pradeep@cs.wustl.edu> - */ -//============================================================================= - -// - -#ifndef TAO_NOTIFY_EVENT_PROCESSOR_H -#define TAO_NOTIFY_EVENT_PROCESSOR_H - -#include "ace/pre.h" -#include "ace/Module.h" - -#if !defined (ACE_LACKS_PRAGMA_ONCE) -# pragma once -#endif /* ACE_LACKS_PRAGMA_ONCE */ - -#include "ace/Stream.h" -#include "ace/streams.h" -#include "tao/corba.h" -#include "notify_export.h" - -class TAO_Notify_Event; -class TAO_Notify_Event_Manager; -class TAO_Notify_EventSource; -class TAO_Notify_Worker_Task; -class TAO_Notify_EMO_Factory; -class TAO_Notify_EventListener; -class TAO_Notify_QoSAdmin_i; - - /** - * @class TAO_Notify_Event_Processor - * - * @brief TAO_Notify_Event_Processor - * - * The Event Processor. - */ -class TAO_Notify_Export TAO_Notify_Event_Processor -{ - public: - // = Initialialization and termination code. - TAO_Notify_Event_Processor (TAO_Notify_Event_Manager* event_manager); - virtual ~TAO_Notify_Event_Processor (); - - /// Init - void init (TAO_Notify_QoSAdmin_i* qos_properties - ACE_ENV_ARG_DECL); - - /// Shutdown operations. - void shutdown (ACE_ENV_SINGLE_ARG_DECL); - - /// Event processing entry point. - void evaluate_source_filter (TAO_Notify_Event* event, - TAO_Notify_EventSource* event_source - ACE_ENV_ARG_DECL); - - // = Callbacks for Source/Event Listeners. - /// This method is called by an Event_Source after it has - /// successfully evaluated its filter. - void lookup_subscriptions (TAO_Notify_Event* event, - TAO_Notify_EventSource* event_source - ACE_ENV_ARG_DECL); - - /// This method is called by the subscription lookup command asking - /// that <event> be delivered to <event_listener>. - void evaluate_listener_filter (TAO_Notify_Event* event, - TAO_Notify_EventListener* event_listener, - CORBA::Boolean eval_parent - ACE_ENV_ARG_DECL); - - /// This method is called by an Event_Listener after it has - /// successfully evaluated its filter. - void dispatch_event (TAO_Notify_Event* event, - TAO_Notify_EventListener* event_listener - ACE_ENV_ARG_DECL); - -protected: - // = Data Members - /// The Event Manager - TAO_Notify_Event_Manager* event_manager_; - - TAO_Notify_Worker_Task* lookup_task_; - - /// Factory for manager ojects - TAO_Notify_EMO_Factory* emo_factory_; -}; - -#include "ace/post.h" -#endif /* TAO_NOTIFY_EVENT_PROCESSOR_H */ diff --git a/TAO/orbsvcs/orbsvcs/Notify/Notify_Factory.cpp b/TAO/orbsvcs/orbsvcs/Notify/Notify_Factory.cpp deleted file mode 100644 index 99ac21f7715..00000000000 --- a/TAO/orbsvcs/orbsvcs/Notify/Notify_Factory.cpp +++ /dev/null @@ -1,114 +0,0 @@ -// $Id$ - -#include "ace/Dynamic_Service.h" -#include "Notify_Factory.h" -#include "Notify_Default_CO_Factory.h" -#include "Notify_Default_POA_Factory.h" -#include "Notify_Default_Collection_Factory.h" -#include "Notify_Default_EMO_Factory.h" -#include "Notify_Event.h" - -ACE_RCSID(Notify, Notify_Factory, "$Id$") - -TAO_Notify_CO_Factory* TAO_Notify_Factory::co_factory_ = 0; -TAO_Notify_POA_Factory* TAO_Notify_Factory::poa_factory_ = 0; -TAO_Notify_Collection_Factory* TAO_Notify_Factory::collection_factory_ = 0; -TAO_Notify_EMO_Factory* TAO_Notify_Factory::emo_factory_ = 0; - -void -TAO_Notify_Factory::init (ACE_ENV_SINGLE_ARG_DECL) -{ - co_factory_ = - ACE_Dynamic_Service <TAO_Notify_CO_Factory>::instance (TAO_NOTIFY_DEF_CO_FACTORY_NAME); - - if (co_factory_ == 0) - { - ACE_NEW_THROW_EX (co_factory_, - TAO_Notify_Default_CO_Factory (), - CORBA::NO_MEMORY ()); - } - - poa_factory_ = - ACE_Dynamic_Service <TAO_Notify_POA_Factory>::instance (TAO_NOTIFY_DEF_POA_FACTORY_NAME); - - if (poa_factory_ == 0) - { - ACE_NEW_THROW_EX (poa_factory_, - TAO_Notify_Default_POA_Factory (), - CORBA::NO_MEMORY ()); - } - - collection_factory_ = - ACE_Dynamic_Service <TAO_Notify_Collection_Factory>::instance (TAO_NOTIFY_DEF_COLLECTION_FACTORY_NAME); - - if (collection_factory_ == 0) - { - ACE_NEW_THROW_EX (collection_factory_, - TAO_Notify_Default_Collection_Factory (), - CORBA::NO_MEMORY ()); - } - - emo_factory_ = - ACE_Dynamic_Service <TAO_Notify_EMO_Factory>::instance (TAO_NOTIFY_DEF_EMO_FACTORY_NAME); - - if (emo_factory_ == 0) - ACE_DEBUG ((LM_DEBUG, "Unable to load Event Manager factory...\n")); - else - { - ACE_DEBUG ((LM_DEBUG, "Loaded Event Manager factory...\n")); - emo_factory_->print_values (); - } -} - -void -TAO_Notify_Factory::shutdown (void) -{ - // @@ -} - -TAO_Notify_CO_Factory* -TAO_Notify_Factory::get_channel_objects_factory (void) -{ - return TAO_Notify_Factory::co_factory_; -} - -TAO_Notify_POA_Factory* -TAO_Notify_Factory::get_poa_factory (void) -{ - return TAO_Notify_Factory::poa_factory_; -} - -TAO_Notify_Collection_Factory* -TAO_Notify_Factory::get_collection_factory (void) -{ - return TAO_Notify_Factory::collection_factory_; -} - -TAO_Notify_EMO_Factory* -TAO_Notify_Factory::create_event_manager_objects_factory (void) -{ - ACE_DECLARE_NEW_CORBA_ENV; - TAO_Notify_Default_EMO_Factory* local_emo_fact; - ACE_NEW_THROW_EX (local_emo_fact, - TAO_Notify_Default_EMO_Factory (), - CORBA::NO_MEMORY ()); - - local_emo_fact->init_instance (); - // @@ check return value - return local_emo_fact; -} - -// **************************************************************** - -#if defined (ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION) - -template class ACE_Dynamic_Service<TAO_Notify_CO_Factory>; -template class ACE_Dynamic_Service<TAO_Notify_POA_Factory>; -template class ACE_Dynamic_Service<TAO_Notify_Collection_Factory>; -template class ACE_Dynamic_Service<TAO_Notify_EMO_Factory>; - -#elif defined (ACE_HAS_TEMPLATE_INSTANTIATION_PRAGMA) - -#pragma instantiate ACE_Dynamic_Service<TAO_Notify_Resource_Factory> - -#endif /*ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION */ diff --git a/TAO/orbsvcs/orbsvcs/Notify/Notify_Factory.h b/TAO/orbsvcs/orbsvcs/Notify/Notify_Factory.h deleted file mode 100644 index 6aa9522e3a1..00000000000 --- a/TAO/orbsvcs/orbsvcs/Notify/Notify_Factory.h +++ /dev/null @@ -1,81 +0,0 @@ -/* -*- C++ -*- */ -//============================================================================= -/** - * @file Notify_Factory.h - * - * $Id$ - * - * A collection of factories - - * a) A factory for event channel objects - the EC factory, EC, Admins, Proxys, et al. - * b) A factory for collections. - * c) A factory for POA's. - * d) A factory for manager objects. - * - * - * @author Pradeep Gore <pradeep@cs.wustl.edu> - */ -//============================================================================= - - -#ifndef NOTIFY_FACTORY_H -#define NOTIFY_FACTORY_H - -#include "ace/pre.h" -#include "tao/corba.h" -#include "notify_export.h" - -#if !defined (ACE_LACKS_PRAGMA_ONCE) -# pragma once -#endif /* ACE_LACKS_PRAGMA_ONCE */ - -class TAO_Notify_CO_Factory; -class TAO_Notify_POA_Factory; -class TAO_Notify_Collection_Factory; -class TAO_Notify_EMO_Factory; -class TAO_Notify_EventChannelFactory_i; - - /** - * @class TAO_Notify_Factory - * - * @brief TAO_Notify_Factory - * - * This classes initializes the static default factories. - */ -class TAO_Notify_Export TAO_Notify_Factory -{ - public: - /// The factory for channel objects. - static TAO_Notify_CO_Factory* get_channel_objects_factory (void); - - /// The factory for POA's. - static TAO_Notify_POA_Factory* get_poa_factory (void); - - /// Factory for all collections in the notify service. - static TAO_Notify_Collection_Factory* get_collection_factory (void); - - /// The event manager objects. - static TAO_Notify_EMO_Factory* create_event_manager_objects_factory (void); - - protected: - friend class TAO_Notify_EventChannelFactory_i; - - /// Initalize the services. - static void init (ACE_ENV_SINGLE_ARG_DECL); - - /// shutdown the svcs. - static void shutdown (void); - - // = Data Members - static TAO_Notify_CO_Factory* co_factory_; - static TAO_Notify_POA_Factory* poa_factory_; - static TAO_Notify_Collection_Factory* collection_factory_; - static TAO_Notify_EMO_Factory* emo_factory_; -}; - -#define TAO_NOTIFY_DEF_CO_FACTORY_NAME "Notify_Default_Channel_Objects_Factory" -#define TAO_NOTIFY_DEF_POA_FACTORY_NAME "Notify_Default_POA_Factory" -#define TAO_NOTIFY_DEF_COLLECTION_FACTORY_NAME "Notify_Default_Collection_Factory" -#define TAO_NOTIFY_DEF_EMO_FACTORY_NAME "Notify_Default_Event_Manager_Objects_Factory" - -#include "ace/post.h" -#endif /* NOTIFY_FACTORY_H */ diff --git a/TAO/orbsvcs/orbsvcs/Notify/Notify_FilterAdmin_i.cpp b/TAO/orbsvcs/orbsvcs/Notify/Notify_FilterAdmin_i.cpp deleted file mode 100644 index ecf40231947..00000000000 --- a/TAO/orbsvcs/orbsvcs/Notify/Notify_FilterAdmin_i.cpp +++ /dev/null @@ -1,155 +0,0 @@ -/* -*- C++ -*- $Id$ */ -#include "Notify_FilterAdmin_i.h" - -ACE_RCSID(Notify, Notify_FilterAdmin_i, "$Id$") - -// Implementation skeleton constructor -TAO_Notify_FilterAdmin_i::TAO_Notify_FilterAdmin_i (void) -{ -} - -// Implementation skeleton destructor -TAO_Notify_FilterAdmin_i::~TAO_Notify_FilterAdmin_i (void) -{ -} - -CORBA::Boolean -TAO_Notify_FilterAdmin_i::match (TAO_Notify_Event &event ACE_ENV_ARG_DECL) - ACE_THROW_SPEC (( - CORBA::SystemException, - CosNotifyFilter::UnsupportedFilterableData - )) -{ - // If no filter is active, treat it as a '*' i.e, let all events pass. - // or if its the special type, let it pass. - if (this->filter_list_.current_size () == 0) // || event.is_special_event_type ()) - return 1; - - // We want to return true if atleast one constraint matches. - FILTER_LIST::ITERATOR iter (this->filter_list_); - FILTER_LIST::ENTRY *entry; - CORBA::Boolean ret_val = 0; - - for (; iter.next (entry); iter.advance ()) - { - ret_val = event.do_match (entry->int_id_.in () ACE_ENV_ARG_PARAMETER); - ACE_CHECK_RETURN (0); - - if (ret_val == 1) - return 1; - } - - return 0; -} - -CosNotifyFilter::FilterID -TAO_Notify_FilterAdmin_i::add_filter ( - CosNotifyFilter::Filter_ptr new_filter - ACE_ENV_ARG_DECL - ) - ACE_THROW_SPEC (( - CORBA::SystemException - )) -{ - if (CORBA::is_nil (new_filter)) - ACE_THROW_RETURN (CORBA::BAD_PARAM (), 0); - - CosNotifyFilter::FilterID new_id = this->filter_ids_.get (); - - CosNotifyFilter::Filter_var new_filter_var = - CosNotifyFilter::Filter::_duplicate (new_filter); - - if (this->filter_list_.bind (new_id, new_filter_var) == -1) - ACE_THROW_RETURN (CORBA::INTERNAL (), - 0); - else - { - this->filter_ids_.next (); - return new_id; - } -} - -void TAO_Notify_FilterAdmin_i::remove_filter (CosNotifyFilter::FilterID filter_id ACE_ENV_ARG_DECL) - ACE_THROW_SPEC (( - CORBA::SystemException, - CosNotifyFilter::FilterNotFound - )) -{ - if (this->filter_list_.unbind (filter_id) == -1) - ACE_THROW (CosNotifyFilter::FilterNotFound ()); - - this->filter_ids_.put (filter_id); -} - -CosNotifyFilter::Filter_ptr -TAO_Notify_FilterAdmin_i::get_filter ( - CosNotifyFilter::FilterID filter - ACE_ENV_ARG_DECL - ) - ACE_THROW_SPEC (( - CORBA::SystemException, - CosNotifyFilter::FilterNotFound - )) -{ - CosNotifyFilter::Filter_var filter_var; - - if (this->filter_list_.find (filter, - filter_var) == -1) - ACE_THROW_RETURN (CosNotifyFilter::FilterNotFound (), - 0); - - return CosNotifyFilter::Filter::_duplicate (filter_var.in ()); -} - -CosNotifyFilter::FilterIDSeq* -TAO_Notify_FilterAdmin_i::get_all_filters (ACE_ENV_SINGLE_ARG_DECL) - ACE_THROW_SPEC (( - CORBA::SystemException - )) -{ - return this->filter_ids_.get_sequence(ACE_ENV_SINGLE_ARG_PARAMETER); -} - -void -TAO_Notify_FilterAdmin_i::remove_all_filters (ACE_ENV_SINGLE_ARG_DECL) - ACE_THROW_SPEC (( - CORBA::SystemException - )) -{ - CosNotifyFilter::FilterIDSeq* id_list = - this->get_all_filters (ACE_ENV_SINGLE_ARG_PARAMETER); - ACE_CHECK; - - for (CORBA::ULong i = 0; i < id_list->length (); ++i) - { - CosNotifyFilter::FilterID id = (*id_list)[i]; - this->remove_filter (id ACE_ENV_ARG_PARAMETER); - ACE_CHECK; - } - - delete id_list; -} - -#if defined (ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION) -template class ACE_Hash_Map_Entry<CosNotifyFilter::FilterID,CosNotifyFilter::Filter_var>; -template class ACE_Hash_Map_Manager<CosNotifyFilter::FilterID,CosNotifyFilter::Filter_var,TAO_SYNCH_MUTEX>; -template class ACE_Hash_Map_Manager_Ex<CosNotifyFilter::FilterID,CosNotifyFilter::Filter_var,ACE_Hash<CosNotifyFilter::FilterID>, ACE_Equal_To<CosNotifyFilter::FilterID>,TAO_SYNCH_MUTEX>; -template class ACE_Hash_Map_Iterator<CosNotifyFilter::FilterID,CosNotifyFilter::Filter_var,TAO_SYNCH_MUTEX>; -template class ACE_Hash_Map_Iterator_Ex<CosNotifyFilter::FilterID,CosNotifyFilter::Filter_var,ACE_Hash<CosNotifyFilter::FilterID>, ACE_Equal_To<CosNotifyFilter::FilterID>,TAO_SYNCH_MUTEX>; -template class ACE_Hash_Map_Iterator_Base_Ex<CosNotifyFilter::FilterID,CosNotifyFilter::Filter_var,ACE_Hash<CosNotifyFilter::FilterID>, ACE_Equal_To<CosNotifyFilter::FilterID>,TAO_SYNCH_MUTEX>; -template class ACE_Hash_Map_Reverse_Iterator<CosNotifyFilter::FilterID,CosNotifyFilter::Filter_var,TAO_SYNCH_MUTEX>; -template class ACE_Hash_Map_Reverse_Iterator_Ex<CosNotifyFilter::FilterID,CosNotifyFilter::Filter_var,ACE_Hash<CosNotifyFilter::FilterID>, ACE_Equal_To<CosNotifyFilter::FilterID>,TAO_SYNCH_MUTEX>; -template class TAO_Notify_ID_Pool_Ex<CosNotifyFilter::FilterID,CosNotifyFilter::FilterIDSeq>; - -#elif defined (ACE_HAS_TEMPLATE_INSTANTIATION_PRAGMA) -#pragma instantiate ACE_Hash_Map_Entry<CosNotifyFilter::FilterID,CosNotifyFilter::Filter_var> -#pragma instantiate ACE_Hash_Map_Manager<CosNotifyFilter::FilterID,CosNotifyFilter::Filter_var,TAO_SYNCH_MUTEX> -#pragma instantiate ACE_Hash_Map_Manager_Ex<CosNotifyFilter::FilterID,CosNotifyFilter::Filter_var,ACE_Hash<CosNotifyFilter::FilterID>, ACE_Equal_To<CosNotifyFilter::FilterID>,TAO_SYNCH_MUTEX> -#pragma instantiate ACE_Hash_Map_Iterator<CosNotifyFilter::FilterID,CosNotifyFilter::Filter_var,TAO_SYNCH_MUTEX> -#pragma instantiate ACE_Hash_Map_Iterator_Ex<CosNotifyFilter::FilterID,CosNotifyFilter::Filter_var,ACE_Hash<CosNotifyFilter::FilterID>, ACE_Equal_To<CosNotifyFilter::FilterID>,TAO_SYNCH_MUTEX> -#pragma instantiate ACE_Hash_Map_Iterator_Base_Ex<CosNotifyFilter::FilterID,CosNotifyFilter::Filter_var,ACE_Hash<CosNotifyFilter::FilterID>, ACE_Equal_To<CosNotifyFilter::FilterID>,TAO_SYNCH_MUTEX> -#pragma instantiate ACE_Hash_Map_Reverse_Iterator<CosNotifyFilter::FilterID,CosNotifyFilter::Filter_var,TAO_SYNCH_MUTEX> -#pragma instantiate ACE_Hash_Map_Reverse_Iterator_Ex<CosNotifyFilter::FilterID,CosNotifyFilter::Filter_var,ACE_Hash<CosNotifyFilter::FilterID>, ACE_Equal_To<CosNotifyFilter::FilterID>,TAO_SYNCH_MUTEX> -#pragma instantiate TAO_Notify_ID_Pool_Ex<CosNotifyFilter::FilterID,CosNotifyFilter::FilterIDSeq> - -#endif /*ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION */ diff --git a/TAO/orbsvcs/orbsvcs/Notify/Notify_FilterAdmin_i.h b/TAO/orbsvcs/orbsvcs/Notify/Notify_FilterAdmin_i.h deleted file mode 100644 index a566cbe56e7..00000000000 --- a/TAO/orbsvcs/orbsvcs/Notify/Notify_FilterAdmin_i.h +++ /dev/null @@ -1,99 +0,0 @@ -//============================================================================= -/** - * @file Notify_FilterAdmin_i.h - * - * $Id$ - * - * - * - * - * @author Pradeep Gore <pradeep@cs.wustl.edu> - */ -//============================================================================= - - -#ifndef NOTIFY_FILTERADMIN_H -#define NOTIFY_FILTERADMIN_H -#include "ace/pre.h" - -#include "Notify_ID_Pool_T.h" -#include "Notify_Event.h" -#include "orbsvcs/CosNotifyFilterS.h" -#include "ace/Hash_Map_Manager.h" -#include "notify_export.h" - -/** - * @class TAO_Notify_FilterAdmin_i - * - * @brief TAO_Notify_FilterAdmin_i - * - */ -class TAO_Notify_Export TAO_Notify_FilterAdmin_i -{ - -public: - /// Constructor - TAO_Notify_FilterAdmin_i (void); - - /// Destructor - virtual ~TAO_Notify_FilterAdmin_i (void); - - // = match operation on all the filters - /// See if any of the filters match. - CORBA::Boolean match (TAO_Notify_Event &event ACE_ENV_ARG_DECL) - ACE_THROW_SPEC (( - CORBA::SystemException, - CosNotifyFilter::UnsupportedFilterableData - )); - - virtual CosNotifyFilter::FilterID add_filter ( - CosNotifyFilter::Filter_ptr new_filter - ACE_ENV_ARG_DECL - ) - ACE_THROW_SPEC (( - CORBA::SystemException - )); - - virtual void remove_filter ( - CosNotifyFilter::FilterID filter - ACE_ENV_ARG_DECL - ) - ACE_THROW_SPEC (( - CORBA::SystemException, - CosNotifyFilter::FilterNotFound - )); - - virtual CosNotifyFilter::Filter_ptr get_filter ( - CosNotifyFilter::FilterID filter - ACE_ENV_ARG_DECL - ) - ACE_THROW_SPEC (( - CORBA::SystemException, - CosNotifyFilter::FilterNotFound - )); - - virtual CosNotifyFilter::FilterIDSeq * get_all_filters ( - ACE_ENV_SINGLE_ARG_DECL - ) - ACE_THROW_SPEC (( - CORBA::SystemException - )); - - virtual void remove_all_filters ( - ACE_ENV_SINGLE_ARG_DECL - ) - ACE_THROW_SPEC (( - CORBA::SystemException - )); - -private: - /// List of filters - typedef ACE_Hash_Map_Manager <CosNotifyFilter::FilterID, CosNotifyFilter::Filter_var, TAO_SYNCH_MUTEX> FILTER_LIST; - FILTER_LIST filter_list_; - - /// Id generator for proxy suppliers - TAO_Notify_ID_Pool_Ex<CosNotifyFilter::FilterID,CosNotifyFilter::FilterIDSeq> filter_ids_; -}; - -#include "ace/post.h" -#endif /* NOTIFY_FILTERADMIN_H */ diff --git a/TAO/orbsvcs/orbsvcs/Notify/Notify_FilterFactory_i.cpp b/TAO/orbsvcs/orbsvcs/Notify/Notify_FilterFactory_i.cpp deleted file mode 100644 index 388bdefeee2..00000000000 --- a/TAO/orbsvcs/orbsvcs/Notify/Notify_FilterFactory_i.cpp +++ /dev/null @@ -1,65 +0,0 @@ -/* -*- C++ -*- $Id$ */ - -#include "Notify_FilterFactory_i.h" -#include "Notify_Filter_i.h" - -ACE_RCSID(Notify, Notify_FilterFactory_i, "$Id$") - -// Implementation skeleton constructor -TAO_Notify_FilterFactory_i::TAO_Notify_FilterFactory_i (void) -{ -} - -// Implementation skeleton destructor -TAO_Notify_FilterFactory_i::~TAO_Notify_FilterFactory_i (void) -{ -} - -CosNotifyFilter::FilterFactory_ptr -TAO_Notify_FilterFactory_i::get_ref (ACE_ENV_SINGLE_ARG_DECL) -{ - CosNotifyFilter::FilterFactory_var filterfactory; - - filterfactory = _this (ACE_ENV_SINGLE_ARG_PARAMETER); - ACE_CHECK_RETURN (CosNotifyFilter::FilterFactory::_nil ()); - - return filterfactory._retn (); -} - -CosNotifyFilter::Filter_ptr -TAO_Notify_FilterFactory_i::create_filter ( - const char *constraint_grammar - ACE_ENV_ARG_DECL - ) - ACE_THROW_SPEC (( - CORBA::SystemException, - CosNotifyFilter::InvalidGrammar - )) -{ - // @@: change to "ExTCL" later. - if (ACE_OS::strcmp (constraint_grammar, "TCL") != 0 && - ACE_OS::strcmp (constraint_grammar, "ETCL") != 0) - ACE_THROW_RETURN (CosNotifyFilter::InvalidGrammar (), 0); - - TAO_Notify_Filter_i* filter; - - ACE_NEW_THROW_EX (filter, - TAO_Notify_Filter_i (constraint_grammar), - CORBA::NO_MEMORY ()); - - return filter->get_ref (ACE_ENV_SINGLE_ARG_PARAMETER); -} - -CosNotifyFilter::MappingFilter_ptr -TAO_Notify_FilterFactory_i::create_mapping_filter ( - const char * /*constraint_grammar*/, - const CORBA::Any & /*default_value*/ - ACE_ENV_ARG_DECL_NOT_USED //ACE_ENV_SINGLE_ARG_PARAMETER - ) - ACE_THROW_SPEC (( - CORBA::SystemException, - CosNotifyFilter::InvalidGrammar - )) -{ - return 0; -} diff --git a/TAO/orbsvcs/orbsvcs/Notify/Notify_FilterFactory_i.h b/TAO/orbsvcs/orbsvcs/Notify/Notify_FilterFactory_i.h deleted file mode 100644 index 460b7354e8f..00000000000 --- a/TAO/orbsvcs/orbsvcs/Notify/Notify_FilterFactory_i.h +++ /dev/null @@ -1,71 +0,0 @@ -/* -*- C++ -*- */ -//============================================================================= -/** - * $Id$ - * - * - * @author Pradeep Gore <pradeep@cs.wustl.edu> - */ -//============================================================================= - - -#ifndef NOTIFY_FILTER_FACTORY_I_H -#define NOTIFY_FILTER_FACTORY_I_H -#include "ace/pre.h" - -#include "orbsvcs/orbsvcs/CosNotifyFilterS.h" -#include "notify_export.h" - -#if defined(_MSC_VER) -#if (_MSC_VER >= 1200) -#pragma warning(push) -#endif /* _MSC_VER >= 1200 */ -#pragma warning(disable:4250) -#endif /* _MSC_VER */ - -/** - * @class TAO_Notify_FilterFactory_i - * - * - */ -class TAO_Notify_Export TAO_Notify_FilterFactory_i : public POA_CosNotifyFilter::FilterFactory, public PortableServer::RefCountServantBase -{ - -public: - /// Constructor - TAO_Notify_FilterFactory_i (void); - - /// Destructor - virtual ~TAO_Notify_FilterFactory_i (void); - - /// Activate with the default POA - CosNotifyFilter::FilterFactory_ptr - get_ref (ACE_ENV_SINGLE_ARG_DECL); - - virtual CosNotifyFilter::Filter_ptr create_filter ( - const char * constraint_grammar - ACE_ENV_ARG_DECL - ) - ACE_THROW_SPEC (( - CORBA::SystemException, - CosNotifyFilter::InvalidGrammar - )); - - virtual CosNotifyFilter::MappingFilter_ptr create_mapping_filter ( - const char * constraint_grammar, - const CORBA::Any & default_value - ACE_ENV_ARG_DECL - ) - ACE_THROW_SPEC (( - CORBA::SystemException, - CosNotifyFilter::InvalidGrammar - )); - -}; - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -#pragma warning(pop) -#endif /* _MSC_VER */ - -#include "ace/post.h" -#endif /* NOTIFY_FILTER_FACTORY_I_H */ diff --git a/TAO/orbsvcs/orbsvcs/Notify/Notify_Filter_i.cpp b/TAO/orbsvcs/orbsvcs/Notify/Notify_Filter_i.cpp deleted file mode 100644 index 8c9bfaeb18b..00000000000 --- a/TAO/orbsvcs/orbsvcs/Notify/Notify_Filter_i.cpp +++ /dev/null @@ -1,507 +0,0 @@ -/* -*- C++ -*- $Id$ */ - -#include "Notify_Filter_i.h" -#include "Notify_Constraint_Visitors.h" - -#include "tao/debug.h" - -#include "ace/Auto_Ptr.h" - -ACE_RCSID(Notify, Notify_Filter_i, "$Id$") - -// Implementation skeleton constructor -TAO_Notify_Filter_i::TAO_Notify_Filter_i (const char* constraint_grammar) - : constraint_grammar_ (constraint_grammar) -{ -} - -// Implementation skeleton destructor -TAO_Notify_Filter_i::~TAO_Notify_Filter_i (void) -{ - ACE_DECLARE_NEW_CORBA_ENV; - this->remove_all_constraints (ACE_ENV_SINGLE_ARG_PARAMETER); - ACE_CHECK; - - if (TAO_debug_level > 0) - { - ACE_DEBUG ((LM_DEBUG, "Filter Destroyed\n")); - } -} - -CosNotifyFilter::Filter_ptr -TAO_Notify_Filter_i::get_ref (ACE_ENV_SINGLE_ARG_DECL) -{ - PortableServer::POA_var my_POA = _default_POA (); - - PortableServer::ServantBase_var filter_var (this); - - PortableServer::ObjectId_var oid = - my_POA->activate_object (this - ACE_ENV_ARG_PARAMETER); - ACE_CHECK_RETURN (CosNotifyFilter::Filter::_nil ()); - - CORBA::Object_var obj = - my_POA->id_to_reference (oid.in () - ACE_ENV_ARG_PARAMETER); - ACE_CHECK_RETURN (CosNotifyFilter::Filter::_nil ()); - - return CosNotifyFilter::Filter::_narrow (obj.in () - ACE_ENV_ARG_PARAMETER); -} - -char* -TAO_Notify_Filter_i::constraint_grammar ( - ACE_ENV_SINGLE_ARG_DECL_NOT_USED - ) - ACE_THROW_SPEC (( - CORBA::SystemException - )) -{ - return CORBA::string_dup (constraint_grammar_.in ()); -} - -void -TAO_Notify_Filter_i::add_constraints_i ( - const CosNotifyFilter::ConstraintInfoSeq& constraint_info_seq - ACE_ENV_ARG_DECL - ) - ACE_THROW_SPEC (( - CORBA::SystemException, - CosNotifyFilter::InvalidConstraint - )) -{ - for (CORBA::ULong index = 0; - index < constraint_info_seq.length (); - ++index) - { - Notify_Constraint_Expr* notify_constr_expr; - - ACE_TRY - { - ACE_NEW_THROW_EX (notify_constr_expr, - Notify_Constraint_Expr (), - CORBA::NO_MEMORY ()); - - const CosNotifyFilter::ConstraintExp& expr = - constraint_info_seq[index].constraint_expression; - - notify_constr_expr->interpreter.build_tree ( - expr.constraint_expr.in () - ACE_ENV_ARG_PARAMETER - ); - ACE_TRY_CHECK; - - notify_constr_expr->constr_expr = expr; - - CosNotifyFilter::ConstraintID cnstr_id = - constraint_expr_ids_.get (); - - if (this->constraint_expr_list_.bind (cnstr_id, notify_constr_expr) - == -1) - { - ACE_THROW (CORBA::NO_RESOURCES ()); - } - - // Commit this id. - this->constraint_expr_ids_.next (); - - } - ACE_CATCHANY - { - // Delete the one that failed us. - delete notify_constr_expr; - ACE_RE_THROW; - } - ACE_ENDTRY; - ACE_CHECK; - } -} - -CosNotifyFilter::ConstraintInfoSeq* -TAO_Notify_Filter_i::add_constraints ( - const CosNotifyFilter::ConstraintExpSeq& constraint_list - ACE_ENV_ARG_DECL - ) - ACE_THROW_SPEC (( - CORBA::SystemException, - CosNotifyFilter::InvalidConstraint - )) -{ - CORBA::ULong constraint_length = constraint_list.length (); - - if (TAO_debug_level > 0) - { - ACE_DEBUG ((LM_DEBUG, - "constraint_length = %d\n", - constraint_length)); - } - - // Create the list that goes out. - CosNotifyFilter::ConstraintInfoSeq *infoseq; - ACE_NEW_THROW_EX (infoseq, - CosNotifyFilter::ConstraintInfoSeq (constraint_length), - CORBA::NO_MEMORY ()); - ACE_CHECK_RETURN (0); - - infoseq->length (constraint_length); - - auto_ptr<CosNotifyFilter::ConstraintInfoSeq> auto_infoseq (infoseq); - - // Populate infoseq. - for (CORBA::ULong pop_index = 0; pop_index < constraint_length; ++pop_index) - { - (*infoseq)[pop_index].constraint_expression = - constraint_list [pop_index]; - - if (TAO_debug_level > 0) - { - ACE_DEBUG ((LM_DEBUG, - "adding constraint %d, %s", - pop_index, - constraint_list [pop_index].constraint_expr.in ())); - } - } - - this->add_constraints_i (*infoseq - ACE_ENV_ARG_PARAMETER); - ACE_CHECK_RETURN (0); - - auto_infoseq.release (); - - return infoseq; -} - -void -TAO_Notify_Filter_i::modify_constraints ( - const CosNotifyFilter::ConstraintIDSeq & del_list, - const CosNotifyFilter::ConstraintInfoSeq & modify_list - ACE_ENV_ARG_DECL - ) - ACE_THROW_SPEC (( - CORBA::SystemException, - CosNotifyFilter::InvalidConstraint, - CosNotifyFilter::ConstraintNotFound - )) -{ - // First check if all the ids are valid. - u_int index; - - for (index = 0; index < del_list.length (); ++index) - { - if (this->constraint_expr_list_.find (del_list [index]) == -1) - { - ACE_THROW (CosNotifyFilter::ConstraintNotFound (del_list [index])); - } - } - - for (index = 0; index < modify_list.length (); ++index) - { - if (this->constraint_expr_list_.find (modify_list [index].constraint_id) - == -1) - { - ACE_THROW ( - CosNotifyFilter::ConstraintNotFound ( - modify_list [index].constraint_id - ) - ); - } - } - - // Remove previous entries and save them in case we need to reinstate them. - ACE_Array<Notify_Constraint_Expr*> constr_saved (modify_list.length ()); - Notify_Constraint_Expr* constr_expr = 0; - - for (index = 0; index < modify_list.length (); ++index) - { - CosNotifyFilter::ConstraintID cnstr_id = - modify_list [index].constraint_id; - - if (this->constraint_expr_list_.unbind (cnstr_id, constr_expr) != -1) - { - constr_saved[index] = constr_expr; - } - - this->constraint_expr_ids_.put (cnstr_id); - } - - // Now add the new entries. - // Keep a list of ids generated in this session. - ACE_TRY - { - this->add_constraints_i (modify_list - ACE_ENV_ARG_PARAMETER); - ACE_TRY_CHECK; - } - ACE_CATCHANY - { - // Restore, - for (index = 0; index < modify_list.length (); ++index) - { - CosNotifyFilter::ConstraintID cnstr_id = - this->constraint_expr_ids_.get (); - - if (constraint_expr_list_.bind (cnstr_id, - constr_saved[index]) == -1) - ACE_THROW (CORBA::NO_RESOURCES ()); - - this->constraint_expr_ids_.next (); // commit this id. - } - - ACE_RE_THROW; - } - ACE_ENDTRY; - ACE_CHECK; - - // Now go around deleting... - // for the del_list. - for (index = 0; index < del_list.length (); ++index) - { - if (this->constraint_expr_list_.unbind (del_list [index], constr_expr) - != -1) - { - delete constr_expr; - } - } - - // Delete the old constraints. - for (index = 0; index < constr_saved.max_size (); ++index) - { - delete constr_saved[index]; - } -} - -CosNotifyFilter::ConstraintInfoSeq * -TAO_Notify_Filter_i::get_constraints ( - const CosNotifyFilter::ConstraintIDSeq & id_list - ACE_ENV_ARG_DECL - ) - ACE_THROW_SPEC ((CORBA::SystemException, - CosNotifyFilter::ConstraintNotFound)) -{ - // Create the list that goes out. - CosNotifyFilter::ConstraintInfoSeq *infoseq; - ACE_NEW_THROW_EX (infoseq, - CosNotifyFilter::ConstraintInfoSeq (id_list.length ()), - CORBA::NO_MEMORY ()); - ACE_CHECK_RETURN (0); - - auto_ptr<CosNotifyFilter::ConstraintInfoSeq> auto_infoseq (infoseq); - - Notify_Constraint_Expr *notify_constr_expr = 0; - - for (u_int index = 0; index < id_list.length (); ++index) - { - if (this->constraint_expr_list_.find (id_list[index], - notify_constr_expr) == -1) - ACE_THROW_RETURN (CosNotifyFilter::ConstraintNotFound (id_list[index]), - 0); - - (*infoseq)[index].constraint_expression = - notify_constr_expr->constr_expr; - - // Get an id. - (*infoseq)[index].constraint_id = id_list[index]; - } - - auto_infoseq.release (); - return infoseq; -} - -CosNotifyFilter::ConstraintInfoSeq * -TAO_Notify_Filter_i::get_all_constraints (ACE_ENV_SINGLE_ARG_DECL) - ACE_THROW_SPEC ((CORBA::SystemException)) -{ - size_t current_size = this->constraint_expr_list_.current_size (); - - // Create the list that goes out. - CosNotifyFilter::ConstraintInfoSeq *infoseq; - ACE_NEW_THROW_EX (infoseq, - CosNotifyFilter::ConstraintInfoSeq (current_size), - CORBA::NO_MEMORY ()); - ACE_CHECK_RETURN (0); - - infoseq->length (current_size); - CONSTRAINT_EXPR_LIST_ITER iter (this->constraint_expr_list_); - CONSTRAINT_EXPR_ENTRY *entry; - - for (u_int index = 0; iter.done () == 0; iter.advance (), ++index) - { - if (iter.next (entry) != 0) - { - // Why do we cast to a const object? - // We want to force the TAO_String_Manager to make a - // copy of the string. It wouldn't unless we coax it to use - // the correct assignment operator. - (*infoseq)[index].constraint_expression = - ACE_static_cast (const CosNotifyFilter::ConstraintExp, - entry->int_id_->constr_expr); - - (*infoseq)[index].constraint_id = entry->ext_id_; - } - } - - return infoseq; -} - -void -TAO_Notify_Filter_i::remove_all_constraints (ACE_ENV_SINGLE_ARG_DECL_NOT_USED) - ACE_THROW_SPEC ((CORBA::SystemException)) -{ - CONSTRAINT_EXPR_LIST_ITER iter (this->constraint_expr_list_); - CONSTRAINT_EXPR_ENTRY *entry; - - u_int index; - - for (index = 0; iter.done () == 0; iter.advance (), ++index) - { - if (iter.next (entry) != 0) - { - delete entry->int_id_; - } - } - - this->constraint_expr_list_.unbind_all (); -} - -void -TAO_Notify_Filter_i::destroy (ACE_ENV_SINGLE_ARG_DECL) - ACE_THROW_SPEC ((CORBA::SystemException)) -{ - this->remove_all_constraints (ACE_ENV_SINGLE_ARG_PARAMETER); - ACE_CHECK; - - PortableServer::POA_var my_POA = _default_POA (); - - PortableServer::ObjectId_var refTemp = my_POA->servant_to_id (this); - - my_POA->deactivate_object (refTemp.in ()); -} - -CORBA::Boolean -TAO_Notify_Filter_i::match (const CORBA::Any & /*filterable_data */ - ACE_ENV_ARG_DECL) - ACE_THROW_SPEC ((CORBA::SystemException, - CosNotifyFilter::UnsupportedFilterableData)) -{ - ACE_THROW_RETURN (CORBA::NO_IMPLEMENT (), - 0); -} - -CORBA::Boolean -TAO_Notify_Filter_i::match_structured ( - const CosNotification::StructuredEvent & filterable_data - ACE_ENV_ARG_DECL_NOT_USED - ) - ACE_THROW_SPEC ((CORBA::SystemException, - CosNotifyFilter::UnsupportedFilterableData)) -{ - // We want to return true if at least one constraint matches. - CONSTRAINT_EXPR_LIST_ITER iter (this->constraint_expr_list_); - CONSTRAINT_EXPR_ENTRY *entry; - - TAO_Notify_Constraint_Visitor visitor; - - if (visitor.bind_structured_event (filterable_data) != 0) - { - // Maybe throw some kind of exception here, or lower down, - return 0; - } - - for (; iter.done () == 0; iter.advance ()) - { - if (iter.next (entry) != 0) - { - if (entry->int_id_->interpreter.evaluate (visitor) == 1) - { - return 1; - } - } - } - - return 0; -} - -CORBA::Boolean -TAO_Notify_Filter_i::match_typed ( - const CosNotification::PropertySeq & /* filterable_data */ - ACE_ENV_ARG_DECL - ) - ACE_THROW_SPEC (( CORBA::SystemException, - CosNotifyFilter::UnsupportedFilterableData)) -{ - ACE_THROW_RETURN (CORBA::NO_IMPLEMENT (), - 0); -} - -CosNotifyFilter::CallbackID -TAO_Notify_Filter_i::attach_callback ( - CosNotifyComm::NotifySubscribe_ptr /* callback */ - ACE_ENV_ARG_DECL - ) - ACE_THROW_SPEC ((CORBA::SystemException)) -{ - ACE_THROW_RETURN (CORBA::NO_IMPLEMENT (), - 0); -} - -void -TAO_Notify_Filter_i::detach_callback ( - CosNotifyFilter::CallbackID /* callback */ - ACE_ENV_ARG_DECL - ) - ACE_THROW_SPEC ((CORBA::SystemException, - CosNotifyFilter::CallbackNotFound)) -{ - ACE_THROW (CORBA::NO_IMPLEMENT ()); -} - -CosNotifyFilter::CallbackIDSeq * -TAO_Notify_Filter_i::get_callbacks (ACE_ENV_SINGLE_ARG_DECL) - ACE_THROW_SPEC ((CORBA::SystemException)) -{ - ACE_THROW_RETURN (CORBA::NO_IMPLEMENT (), - 0); -} - -#if defined (ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION) -template class ACE_Hash_Map_Entry<CosNotifyFilter::ConstraintID,TAO_Notify_Filter_i::Notify_Constraint_Expr *>; -template class ACE_Hash_Map_Manager<CosNotifyFilter::ConstraintID,TAO_Notify_Filter_i::Notify_Constraint_Expr*,TAO_SYNCH_MUTEX>; -template class ACE_Hash_Map_Manager_Ex<CosNotifyFilter::ConstraintID,TAO_Notify_Filter_i::Notify_Constraint_Expr*,ACE_Hash<CosNotifyFilter::ConstraintID>, ACE_Equal_To<CosNotifyFilter::ConstraintID>,TAO_SYNCH_MUTEX>; -template class ACE_Hash_Map_Iterator<CosNotifyFilter::ConstraintID,TAO_Notify_Filter_i::Notify_Constraint_Expr*,TAO_SYNCH_MUTEX>; -template class ACE_Hash_Map_Iterator_Ex<CosNotifyFilter::ConstraintID,TAO_Notify_Filter_i::Notify_Constraint_Expr*,ACE_Hash<CosNotifyFilter::ConstraintID>, ACE_Equal_To<CosNotifyFilter::ConstraintID>,TAO_SYNCH_MUTEX>; -template class ACE_Hash_Map_Iterator_Base_Ex<CosNotifyFilter::ConstraintID,TAO_Notify_Filter_i::Notify_Constraint_Expr*,ACE_Hash<CosNotifyFilter::ConstraintID>, ACE_Equal_To<CosNotifyFilter::ConstraintID>,TAO_SYNCH_MUTEX>; -template class ACE_Hash_Map_Reverse_Iterator<CosNotifyFilter::ConstraintID,TAO_Notify_Filter_i::Notify_Constraint_Expr*,TAO_SYNCH_MUTEX>; -template class ACE_Hash_Map_Reverse_Iterator_Ex<CosNotifyFilter::ConstraintID,TAO_Notify_Filter_i::Notify_Constraint_Expr*,ACE_Hash<CosNotifyFilter::ConstraintID>, ACE_Equal_To<CosNotifyFilter::ConstraintID>,TAO_SYNCH_MUTEX>; - -#if !defined (ACE_HAS_STD_TEMPLATE_SPECIALIZATION) -template class ACE_Equal_To<CosNotifyFilter::ConstraintID>; -#endif /* ACE_HAS_STD_TEMPLATE_SPECIALIZATION */ - -template class ACE_Array<TAO_Notify_Filter_i::Notify_Constraint_Expr*>; -template class ACE_Array_Base<TAO_Notify_Filter_i::Notify_Constraint_Expr*>; - -template class auto_ptr<CosNotifyFilter::ConstraintInfoSeq>; -template class ACE_Auto_Basic_Ptr<CosNotifyFilter::ConstraintInfoSeq>; - -#elif defined (ACE_HAS_TEMPLATE_INSTANTIATION_PRAGMA) - -#pragma instantiate ACE_Hash_Map_Entry<CosNotifyFilter::ConstraintID,TAO_Notify_Filter_i::Notify_Constraint_Expr*> -#pragma instantiate ACE_Hash_Map_Manager<CosNotifyFilter::ConstraintID,TAO_Notify_Filter_i::Notify_Constraint_Expr*,TAO_SYNCH_MUTEX> -#pragma instantiate ACE_Hash_Map_Manager_Ex<CosNotifyFilter::ConstraintID,TAO_Notify_Filter_i::Notify_Constraint_Expr*,ACE_Hash<CosNotifyFilter::ConstraintID>, ACE_Equal_To<CosNotifyFilter::ConstraintID>,TAO_SYNCH_MUTEX> -#pragma instantiate ACE_Hash_Map_Iterator<CosNotifyFilter::ConstraintID,TAO_Notify_Filter_i::Notify_Constraint_Expr*,TAO_SYNCH_MUTEX> -#pragma instantiate ACE_Hash_Map_Iterator_Ex<CosNotifyFilter::ConstraintID,TAO_Notify_Filter_i::Notify_Constraint_Expr*,ACE_Hash<CosNotifyFilter::ConstraintID>, ACE_Equal_To<CosNotifyFilter::ConstraintID>,TAO_SYNCH_MUTEX> -#pragma instantiate ACE_Hash_Map_Iterator_Base_Ex<CosNotifyFilter::ConstraintID,TAO_Notify_Filter_i::Notify_Constraint_Expr*,ACE_Hash<CosNotifyFilter::ConstraintID>, ACE_Equal_To<CosNotifyFilter::ConstraintID>,TAO_SYNCH_MUTEX> -#pragma instantiate ACE_Hash_Map_Reverse_Iterator<CosNotifyFilter::ConstraintID,TAO_Notify_Filter_i::Notify_Constraint_Expr*,TAO_SYNCH_MUTEX> -#pragma instantiate ACE_Hash_Map_Reverse_Iterator_Ex<CosNotifyFilter::ConstraintID,TAO_Notify_Filter_i::Notify_Constraint_Expr*,ACE_Hash<CosNotifyFilter::ConstraintID>, ACE_Equal_To<CosNotifyFilter::ConstraintID>,TAO_SYNCH_MUTEX> - -#if !defined (ACE_HAS_STD_TEMPLATE_SPECIALIZATION) -#pragma instantiate ACE_Equal_To<CosNotifyFilter::ConstraintID> -#endif /* ACE_HAS_STD_TEMPLATE_SPECIALIZATION */ - -#pragma instantiate ACE_Array<TAO_Notify_Filter_i::Notify_Constraint_Expr*> -#pragma instantiate ACE_Array_Base<TAO_Notify_Filter_i::Notify_Constraint_Expr*> - -#pragma instantiate auto_ptr<CosNotifyFilter::ConstraintInfoSeq> -#pragma instantiate ACE_Auto_Basic_Ptr<CosNotifyFilter::ConstraintInfoSeq> - -#endif /*ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION */ diff --git a/TAO/orbsvcs/orbsvcs/Notify/Notify_Filter_i.h b/TAO/orbsvcs/orbsvcs/Notify/Notify_Filter_i.h deleted file mode 100644 index fa3ccb01b49..00000000000 --- a/TAO/orbsvcs/orbsvcs/Notify/Notify_Filter_i.h +++ /dev/null @@ -1,211 +0,0 @@ -//============================================================================= -/** - * @file Notify_Filter_i.h - * - * $Id$ - * - * - * - * - * @author Pradeep Gore <pradeep@cs.wustl.edu> - */ -//============================================================================= - - -#ifndef TAO_NOTIFY_FILTER_I_H -#define TAO_NOTIFY_FILTER_I_H -#include "ace/pre.h" - -#include "Notify_Constraint_Interpreter.h" -#include "Notify_ID_Pool_T.h" -#include "orbsvcs/CosNotifyFilterS.h" -#include "ace/Containers_T.h" -#include "ace/Hash_Map_Manager.h" - -#if !defined (ACE_LACKS_PRAGMA_ONCE) -#pragma once -#endif /* ACE_LACKS_PRAGMA_ONCE */ - -#if defined(_MSC_VER) -#if (_MSC_VER >= 1200) -#pragma warning(push) -#endif /* _MSC_VER >= 1200 */ -#pragma warning(disable:4250) -#endif /* _MSC_VER */ - -/** - * @class TAO_Notify_Filter_i - * - */ - -class TAO_Notify_Export TAO_Notify_Filter_i : public POA_CosNotifyFilter::Filter, - public PortableServer::RefCountServantBase -{ -public: - /// Constructor - TAO_Notify_Filter_i (const char* constraint_grammar); - - /// Destructor - virtual ~TAO_Notify_Filter_i (void); - - /// Activate with the default POA - CosNotifyFilter::Filter_ptr - get_ref (ACE_ENV_SINGLE_ARG_DECL); - -virtual char * constraint_grammar ( - ACE_ENV_SINGLE_ARG_DECL - ) - ACE_THROW_SPEC (( - CORBA::SystemException - )); - -virtual CosNotifyFilter::ConstraintInfoSeq * add_constraints ( - const CosNotifyFilter::ConstraintExpSeq & constraint_list - ACE_ENV_ARG_DECL - ) - ACE_THROW_SPEC (( - CORBA::SystemException, - CosNotifyFilter::InvalidConstraint - )); - -virtual void modify_constraints ( - const CosNotifyFilter::ConstraintIDSeq & del_list, - const CosNotifyFilter::ConstraintInfoSeq & modify_list - ACE_ENV_ARG_DECL - ) - ACE_THROW_SPEC (( - CORBA::SystemException, - CosNotifyFilter::InvalidConstraint, - CosNotifyFilter::ConstraintNotFound - )); - -virtual CosNotifyFilter::ConstraintInfoSeq * get_constraints ( - const CosNotifyFilter::ConstraintIDSeq & id_list - ACE_ENV_ARG_DECL - ) - ACE_THROW_SPEC (( - CORBA::SystemException, - CosNotifyFilter::ConstraintNotFound - )); - -virtual CosNotifyFilter::ConstraintInfoSeq * get_all_constraints ( - ACE_ENV_SINGLE_ARG_DECL - ) - ACE_THROW_SPEC (( - CORBA::SystemException - )); - -virtual void remove_all_constraints ( - ACE_ENV_SINGLE_ARG_DECL - ) - ACE_THROW_SPEC (( - CORBA::SystemException - )); - -virtual void destroy ( - ACE_ENV_SINGLE_ARG_DECL - ) - ACE_THROW_SPEC (( - CORBA::SystemException - )); - -virtual CORBA::Boolean match ( - const CORBA::Any & filterable_data - ACE_ENV_ARG_DECL - ) - ACE_THROW_SPEC (( - CORBA::SystemException, - CosNotifyFilter::UnsupportedFilterableData - )); - -virtual CORBA::Boolean match_structured ( - const CosNotification::StructuredEvent & filterable_data - ACE_ENV_ARG_DECL - ) - ACE_THROW_SPEC (( - CORBA::SystemException, - CosNotifyFilter::UnsupportedFilterableData - )); - -virtual CORBA::Boolean match_typed ( - const CosNotification::PropertySeq & filterable_data - ACE_ENV_ARG_DECL - ) - ACE_THROW_SPEC (( - CORBA::SystemException, - CosNotifyFilter::UnsupportedFilterableData - )); - -virtual CosNotifyFilter::CallbackID attach_callback ( - CosNotifyComm::NotifySubscribe_ptr callback - ACE_ENV_ARG_DECL - ) - ACE_THROW_SPEC (( - CORBA::SystemException - )); - -virtual void detach_callback ( - CosNotifyFilter::CallbackID callback - ACE_ENV_ARG_DECL - ) - ACE_THROW_SPEC (( - CORBA::SystemException, - CosNotifyFilter::CallbackNotFound - )); - -virtual CosNotifyFilter::CallbackIDSeq * get_callbacks ( - ACE_ENV_SINGLE_ARG_DECL - ) - ACE_THROW_SPEC (( - CORBA::SystemException - )); - -private: - void add_constraints_i ( - const CosNotifyFilter::ConstraintInfoSeq& constraint_info_seq - ACE_ENV_ARG_DECL - ) - ACE_THROW_SPEC (( - CORBA::SystemException, - CosNotifyFilter::InvalidConstraint - )); - - struct Notify_Constraint_Expr - { - // = DESCRIPTION - // Structure for associating ConstraintInfo with an interpreter. - // - CosNotifyFilter::ConstraintExp constr_expr; - // Constraint Expression. - - TAO_Notify_Constraint_Interpreter interpreter; - // Constraint Interpreter. - }; - - /// Id generator for ConstraintInfo's. - TAO_Notify_ID_Pool <CosNotifyFilter::ConstraintID> constraint_expr_ids_; - - /// A list of the constraints stored in this filter. - ACE_Hash_Map_Manager <CosNotifyFilter::ConstraintID, - ACE_NESTED_CLASS (TAO_Notify_Filter_i, Notify_Constraint_Expr*), - TAO_SYNCH_MUTEX> - constraint_expr_list_; - - typedef ACE_Hash_Map_Iterator <CosNotifyFilter::ConstraintID, - ACE_NESTED_CLASS (TAO_Notify_Filter_i, Notify_Constraint_Expr*), - TAO_SYNCH_MUTEX> - CONSTRAINT_EXPR_LIST_ITER; - - typedef ACE_Hash_Map_Entry <CosNotifyFilter::ConstraintID, - ACE_NESTED_CLASS (TAO_Notify_Filter_i, - Notify_Constraint_Expr*)> - CONSTRAINT_EXPR_ENTRY; - CORBA::String_var constraint_grammar_; -}; - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -#pragma warning(pop) -#endif /* _MSC_VER */ - -#include "ace/post.h" -#endif /* TAO_NOTIFY_FILTER_I_H */ diff --git a/TAO/orbsvcs/orbsvcs/Notify/Notify_ID_Pool_T.cpp b/TAO/orbsvcs/orbsvcs/Notify/Notify_ID_Pool_T.cpp deleted file mode 100644 index c8d462a1af9..00000000000 --- a/TAO/orbsvcs/orbsvcs/Notify/Notify_ID_Pool_T.cpp +++ /dev/null @@ -1,81 +0,0 @@ -// $Id$ - -#ifndef TAO_NOTIFY_ID_POOL_T_C -#define TAO_NOTIFY_ID_POOL_T_C - -#include "Notify_ID_Pool_T.h" - -#if !defined (__ACE_INLINE__) -#include "Notify_ID_Pool_T.i" -#endif /* __ACE_INLINE__ */ - -template <class ID_TYPE> -TAO_Notify_ID_Pool<ID_TYPE>::TAO_Notify_ID_Pool (void) - : id_ (0) -{ - // No-Op. -} - -template <class ID_TYPE> -TAO_Notify_ID_Pool<ID_TYPE>::~TAO_Notify_ID_Pool () -{ - // No-Op. -} - -template <class ID_TYPE> ID_TYPE -TAO_Notify_ID_Pool<ID_TYPE>::get (void) -{ - // Using the prefix ++ operator here causes problems with - // the default supplier and consumer admins. - return this->id_++; -} - -template <class ID_TYPE> void -TAO_Notify_ID_Pool<ID_TYPE>::put (ID_TYPE id ) -{ - this->active_list_.remove (id); -} - -template <class ID_TYPE> void -TAO_Notify_ID_Pool<ID_TYPE>::next (void) -{ - this->active_list_.insert (this->id_); -} - -template <class ID_TYPE, class ID_TYPE_SEQ> -TAO_Notify_ID_Pool_Ex<ID_TYPE, ID_TYPE_SEQ>::TAO_Notify_ID_Pool_Ex (void) -{ -} - -template <class ID_TYPE, class ID_TYPE_SEQ> -TAO_Notify_ID_Pool_Ex<ID_TYPE, ID_TYPE_SEQ>::~TAO_Notify_ID_Pool_Ex () -{ -} - -template <class ID_TYPE, class ID_TYPE_SEQ> ID_TYPE_SEQ* -TAO_Notify_ID_Pool_Ex<ID_TYPE, ID_TYPE_SEQ>::get_sequence (ACE_ENV_SINGLE_ARG_DECL) -{ - // Figure out the length of the list. - size_t len = this->active_list_.size (); - - ID_TYPE_SEQ* list; - - // Allocate the list of <len> length. - ACE_NEW_THROW_EX (list, - ID_TYPE_SEQ (len), - CORBA::NO_MEMORY ()); - ACE_CHECK_RETURN (0); - - list->length (len); - - ACE_Unbounded_Set_Iterator<ID_TYPE> iter (this->active_list_); - ID_TYPE* id_ret; - - int i = 0; - for (iter.first (); iter.next (id_ret) == 1; iter.advance ()) - (*list)[i++] = *id_ret; - - return list; -} - -#endif /* TAO_NOTIFY_ID_POOL_T_C */ diff --git a/TAO/orbsvcs/orbsvcs/Notify/Notify_ID_Pool_T.h b/TAO/orbsvcs/orbsvcs/Notify/Notify_ID_Pool_T.h deleted file mode 100644 index e7df736ca07..00000000000 --- a/TAO/orbsvcs/orbsvcs/Notify/Notify_ID_Pool_T.h +++ /dev/null @@ -1,98 +0,0 @@ -//============================================================================= -/** - * @file Notify_ID_Pool_T.h - * - * $Id$ - * - * A class to generate ID's. - * - * - * @author Pradeep Gore <pradeep@cs.wustl.edu> - */ -//============================================================================= - - -#ifndef TAO_NOTIFY_ID_POOL_T_H -#define TAO_NOTIFY_ID_POOL_T_H -#include "ace/pre.h" -#include "ace/OS.h" - -#if !defined (ACE_LACKS_PRAGMA_ONCE) -# pragma once -#endif /* ACE_LACKS_PRAGMA_ONCE */ - -#include "ace/Containers_T.h" -#include "orbsvcs/CosNotifyChannelAdminS.h" - -/** - * @class TAO_Notify_ID_Pool - * - * @brief ID_Pool - * - * This class is used by factories that need to associate id's with the - * objects that they create. - * The very first id generated is always 0.The condition is necessary to - * support ids for default objects that require an id of 0. - */ -template <class ID_TYPE> -class TAO_Notify_ID_Pool -{ -public: - - /// Constructor. - TAO_Notify_ID_Pool (void); - - /// Destructor. - ~TAO_Notify_ID_Pool (); - - /// Returns the current id. - ID_TYPE get (void); - - /// Return the id back. - void put (ID_TYPE id); - - /// The current id is moved to the active_list_. - void next (void); - - protected: - /// The next available id. - ID_TYPE id_; - - /// List of ids currently in use by clients of this class. - ACE_Unbounded_Set <ID_TYPE> active_list_; -}; - - /** - * @class TAO_Notify_ID_Pool_Ex - * - * @brief TAO_Notify_ID_Pool_Ex - * - * Extends the TAO_Notify_ID_Pool with a method to convert the active_list - * into a sequence type. - */ -template <class ID_TYPE, class ID_TYPE_SEQ> -class TAO_Notify_ID_Pool_Ex : public TAO_Notify_ID_Pool <ID_TYPE> -{ - public: - TAO_Notify_ID_Pool_Ex (void); - ~TAO_Notify_ID_Pool_Ex (); - - /// Get a list of all ids in use. - /// Essentially converts the <active_list_> to a Sequence. - ID_TYPE_SEQ* get_sequence (ACE_ENV_SINGLE_ARG_DECL); -}; - -#if defined (__ACE_INLINE__) -#include "Notify_ID_Pool_T.i" -#endif /* __ACE_INLINE__ */ - -#if defined (ACE_TEMPLATES_REQUIRE_SOURCE) -#include "Notify_ID_Pool_T.cpp" -#endif /* ACE_TEMPLATES_REQUIRE_SOURCE */ - -#if defined (ACE_TEMPLATES_REQUIRE_PRAGMA) -#pragma implementation ("Notify_ID_Pool_T.cpp") -#endif /* ACE_TEMPLATES_REQUIRE_PRAGMA */ - -#include "ace/post.h" -#endif /* TAO_NOTIFY_ID_POOL_T_H */ diff --git a/TAO/orbsvcs/orbsvcs/Notify/Notify_ID_Pool_T.i b/TAO/orbsvcs/orbsvcs/Notify/Notify_ID_Pool_T.i deleted file mode 100644 index 47159b11f78..00000000000 --- a/TAO/orbsvcs/orbsvcs/Notify/Notify_ID_Pool_T.i +++ /dev/null @@ -1 +0,0 @@ -/* -*- C++ -*- $Id$ */ diff --git a/TAO/orbsvcs/orbsvcs/Notify/Notify_Listener_Filter_Eval_Command.cpp b/TAO/orbsvcs/orbsvcs/Notify/Notify_Listener_Filter_Eval_Command.cpp deleted file mode 100644 index 7be49ac9fe3..00000000000 --- a/TAO/orbsvcs/orbsvcs/Notify/Notify_Listener_Filter_Eval_Command.cpp +++ /dev/null @@ -1,44 +0,0 @@ -// $Id$ - -#include "orbsvcs/ESF/ESF_Proxy_Collection.h" -#include "Notify_Listener_Filter_Eval_Command.h" -#include "Notify_Event_Dispatch_Command.h" -#include "Notify_Worker_Task.h" -#include "Notify_Listeners.h" -#include "Notify_Event.h" -#include "Notify_Event_Processor.h" - -ACE_RCSID(Notify, Notify_Listener_Filter_Eval_Command, "$Id$") - -TAO_Notify_Listener_Filter_Eval_Command::TAO_Notify_Listener_Filter_Eval_Command (TAO_Notify_Event_Processor* event_processor, TAO_Notify_Event* event, TAO_Notify_EventListener* event_listener, CORBA::Boolean eval_parent) - :TAO_Notify_Command (event_processor, event), - event_listener_ (event_listener), - eval_parent_ (eval_parent) -{ - event_listener_->_incr_refcnt (); - this->event_->_incr_refcnt (); -} - -TAO_Notify_Listener_Filter_Eval_Command::~TAO_Notify_Listener_Filter_Eval_Command () -{ - event_listener_->_decr_refcnt (); - this->event_->_decr_refcnt (); -} - -int -TAO_Notify_Listener_Filter_Eval_Command::execute (ACE_ENV_SINGLE_ARG_DECL) -{ - CORBA::Boolean result = - this->event_listener_->evaluate_filter (*this->event_, this->eval_parent_ ACE_ENV_ARG_PARAMETER); - ACE_CHECK_RETURN (-1); - - if (result == 1) - { - this->event_processor_->dispatch_event (this->event_, this->event_listener_ ACE_ENV_ARG_PARAMETER); - ACE_CHECK_RETURN (-1); - - return 0; - } - - return -1; -} diff --git a/TAO/orbsvcs/orbsvcs/Notify/Notify_Listener_Filter_Eval_Command.h b/TAO/orbsvcs/orbsvcs/Notify/Notify_Listener_Filter_Eval_Command.h deleted file mode 100644 index 865fc0298d8..00000000000 --- a/TAO/orbsvcs/orbsvcs/Notify/Notify_Listener_Filter_Eval_Command.h +++ /dev/null @@ -1,55 +0,0 @@ -/* -*- C++ -*- */ -//============================================================================= -/** - * @file Notify_Listener_Filter_Eval_Command.h - * - * $Id$ - * - * Defines the Command object for evaluating the listener's filter. - * - * - * @author Pradeep Gore <pradeep@cs.wustl.edu> - */ -//============================================================================= - - -#ifndef TAO_NOTIFY_LISTENER_FILTER_EVAL_COMMAND_H -#define TAO_NOTIFY_LISTENER_FILTER_EVAL_COMMAND_H - -#include "ace/pre.h" -#include "Notify_Command.h" - -#if !defined (ACE_LACKS_PRAGMA_ONCE) -# pragma once -#endif /* ACE_LACKS_PRAGMA_ONCE */ - -class TAO_Notify_Event; -class TAO_Notify_EventListener; -class TAO_Notify_Event_Processor; - - /** - * @class TAO_Notify_Listener_Filter_Eval_Command - * - * @brief TAO_Notify_Listener_Filter_Eval_Command - * - * Listener filter evaluation command. - */ -class TAO_Notify_Export TAO_Notify_Listener_Filter_Eval_Command : public TAO_Notify_Command -{ - public: - /// The event, listener, and hint to pass (see the listener interface for details) - TAO_Notify_Listener_Filter_Eval_Command (TAO_Notify_Event_Processor* event_processor, TAO_Notify_Event* event, TAO_Notify_EventListener* event_listener, CORBA::Boolean eval_parent); - - ~TAO_Notify_Listener_Filter_Eval_Command(); - - /// Command callback - virtual int execute (ACE_ENV_SINGLE_ARG_DECL); - - protected: - // = Data Members - TAO_Notify_EventListener* event_listener_; - CORBA::Boolean eval_parent_; -}; - -#include "ace/post.h" -#endif /* TAO_NOTIFY_LISTENER_FILTER_EVAL_COMMAND_H */ diff --git a/TAO/orbsvcs/orbsvcs/Notify/Notify_Listeners.h b/TAO/orbsvcs/orbsvcs/Notify/Notify_Listeners.h deleted file mode 100644 index 3791241bd03..00000000000 --- a/TAO/orbsvcs/orbsvcs/Notify/Notify_Listeners.h +++ /dev/null @@ -1,139 +0,0 @@ -/** - * @file Notify_Listeners.h - * - * $Id$ - * - * Internal "observer" interfaces for Notify. - * - * @author Pradeep Gore <pradeep@cs.wustl.edu> - */ - -#ifndef TAO_NOTIFY_LISTENERS_H -#define TAO_NOTIFY_LISTENERS_H - -#include "ace/pre.h" -#include "tao/corba.h" - -#if !defined (ACE_LACKS_PRAGMA_ONCE) -# pragma once -#endif /* ACE_LACKS_PRAGMA_ONCE */ - -#include "notify_export.h" - -class TAO_Notify_Event; -class TAO_Notify_EventType_List; -class TAO_Notify_Worker_Task; - -// @@ Pradeep: this file has three separate classes, that do not seem -// related in anyway, you should move them to their own files. -// @@ Pradeep: it seems like the classes in this file are fundamental -// interfaces used all over the place, you should document them and -// how they interact, in the README file or in the paper or both. - -// @@ Pradeep: if this class is what I think it is then it should be -// in its own file.. - /** - * @class TAO_Notify_RefCounted - * - * @brief TAO_Notify_RefCounted - * - * @@ Pradeep: what do you mean "often", is it used for something - * else sometimes? Or is it that sometimes refcounting is done - * some other way? - * Often used interface for ref. counting. - */ -class TAO_Notify_Export TAO_Notify_RefCounted -{ - public: - /// Increment the reference count. - virtual CORBA::ULong _incr_refcnt (void) = 0; - - /// Decrement the reference count. - virtual CORBA::ULong _decr_refcnt (void) = 0; -}; - -// **************************************************************** - -/** - * @class TAO_Notify_EventListener - * - * @brief TAO_Notify_EventListener - * - * All entities interested in receiving events can implement this interface - * and subscribe with the Event Manager. During subscription, the Listener - * must specify what kind of events it is interested in. - */ -class TAO_Notify_Export TAO_Notify_EventListener : virtual public TAO_Notify_RefCounted -{ - -public: - /// Callback methods to supply the event to the listener. - virtual void dispatch_event (TAO_Notify_Event &event - ACE_ENV_ARG_DECL) = 0; - - /** - * Evaluates true if this event is acceptable by the listener. - * The <eval_parent> is a hint to the listener to help it determine - * if its wise to evaluate the parents filter too. This helps in - * implementing the "interfilter group operator" logic. - */ - virtual CORBA::Boolean evaluate_filter (TAO_Notify_Event &event, - CORBA::Boolean eval_parent - ACE_ENV_ARG_DECL) = 0; - - /// Ask the listener to relinquish any bindings and prepare to be - /// disposed. - virtual void shutdown (ACE_ENV_SINGLE_ARG_DECL) = 0; - - /// The Worker task associated with the event listener for event dispatching - virtual TAO_Notify_Worker_Task* event_dispatch_task (void) = 0; - - /// The Worker task associated with the event listener for filter evaluation. - virtual TAO_Notify_Worker_Task* filter_eval_task (void) = 0; -}; - -// **************************************************************** - - /** - * @class TAO_Notify_EventSource - * - * @brief TAO_Notify_EventSource - * - * The event source suppliers events to the Notify Manager. - */ -class TAO_Notify_Export TAO_Notify_EventSource : virtual public TAO_Notify_RefCounted -{ - public: - // TODO: add a shutdown method to this interface!! - - /// Evaluates true if this event is acceptable by the Source. - virtual CORBA::Boolean evaluate_filter (TAO_Notify_Event &event - ACE_ENV_ARG_DECL) = 0; - - /// The Worker task associated with the event listener for filter evaluation. - virtual TAO_Notify_Worker_Task* filter_eval_task (void) = 0; -}; - -// **************************************************************** - -/** - * @class TAO_Notify_UpdateListener - * - * @brief TAO_Notify_UpdateListener - * - * All entities interested in receiving subscription and publication - * change messages can implement this interface and register it with - * the Event Manager to receive updates. - */ -class TAO_Notify_Export TAO_Notify_UpdateListener : virtual public TAO_Notify_RefCounted -{ - - public: - /// Callback method to supply updates. - virtual void dispatch_update (TAO_Notify_EventType_List& added, - TAO_Notify_EventType_List& removed - ACE_ENV_ARG_DECL) = 0; -}; - -#include "ace/post.h" -#endif /* TAO_NOTIFY_LISTENERS_H */ diff --git a/TAO/orbsvcs/orbsvcs/Notify/Notify_Lookup_Command.cpp b/TAO/orbsvcs/orbsvcs/Notify/Notify_Lookup_Command.cpp deleted file mode 100644 index 46ca4442051..00000000000 --- a/TAO/orbsvcs/orbsvcs/Notify/Notify_Lookup_Command.cpp +++ /dev/null @@ -1,66 +0,0 @@ -// $Id$ - -#include "orbsvcs/ESF/ESF_Proxy_Collection.h" -#include "Notify_Lookup_Command.h" -#include "Notify_Event_Manager.h" -#include "Notify_Listener_Filter_Eval_Command.h" -#include "Notify_Event.h" -#include "Notify_Event_Map.h" -#include "Notify_Event_Processor.h" - -ACE_RCSID(Notify, Notify_Lookup_Command, "$Id$") - -TAO_Notify_Lookup_Command::TAO_Notify_Lookup_Command (TAO_Notify_Event_Processor* event_processor, TAO_Notify_Event* event, TAO_Notify_Event_Map* event_map) - :TAO_Notify_Command (event_processor, event), - event_map_ (event_map) -{ - this->event_->_incr_refcnt (); -} - -TAO_Notify_Lookup_Command::~TAO_Notify_Lookup_Command () -{ - this->event_->_decr_refcnt (); -} - -int -TAO_Notify_Lookup_Command::execute (ACE_ENV_SINGLE_ARG_DECL) -{ - // If the event is *not* the special event - // send it to the list that matches it. - // In any case send it to the default list. -#if 0 - ACE_DEBUG ((LM_DEBUG, "finding a match for event: %s, %s\n", - event->event_type ().event_type_.domain_name.in (), - event->event_type ().event_type_.type_name.in ())); -#endif - - if (!this->event_->is_special_event_type ()) - { - TAO_Notify_EventListener_List* listener_list; - // find the subscription list for <event_type> - - if (event_map_->find (this->event_->event_type (), - listener_list) == 0) - { - listener_list->for_each (this ACE_ENV_ARG_PARAMETER); - ACE_CHECK_RETURN (-1); - } - } - // Those subscribed for the default events get everything. - // if (this->default_subscription_list_->is_empty () == 0) - // @@ can't do this test - is_empty is not impl. - { - event_map_->default_subscription_list ()->for_each (this ACE_ENV_ARG_PARAMETER); - ACE_CHECK_RETURN (-1); - } - - return 0; -} - -void -TAO_Notify_Lookup_Command::work (TAO_Notify_EventListener* event_listener - ACE_ENV_ARG_DECL) -{ - this->event_processor_->evaluate_listener_filter (this->event_, event_listener, 1 ACE_ENV_ARG_PARAMETER); - // Note the last parameter, we want the parent filter to be evaluated. -} diff --git a/TAO/orbsvcs/orbsvcs/Notify/Notify_Lookup_Command.h b/TAO/orbsvcs/orbsvcs/Notify/Notify_Lookup_Command.h deleted file mode 100644 index 85924c39ba7..00000000000 --- a/TAO/orbsvcs/orbsvcs/Notify/Notify_Lookup_Command.h +++ /dev/null @@ -1,58 +0,0 @@ -/* -*- C++ -*- */ -//============================================================================= -/** - * @file Notify_Lookup_Command.h - * - * $Id$ - * - * Command object for looking up subscriptions for a given event. - * - * - * @author Pradeep Gore <pradeep@cs.wustl.edu> - */ -//============================================================================= - - -#ifndef TAO_NOTIFY_LOOKUP_COMMAND_H -#define TAO_NOTIFY_LOOKUP_COMMAND_H - -#include "ace/pre.h" -#include "orbsvcs/ESF/ESF_Worker.h" -#include "Notify_Command.h" - -#if !defined (ACE_LACKS_PRAGMA_ONCE) -# pragma once -#endif /* ACE_LACKS_PRAGMA_ONCE */ - -class TAO_Notify_Event; -class TAO_Notify_EventListener; -class TAO_Notify_Event_Map; - - /** - * @class TAO_Notify_Lookup_Command - * - * @brief TAO_Notify_Lookup_Command - * - * Command object for event subscription lookup in the event map. - */ -class TAO_Notify_Export TAO_Notify_Lookup_Command : public TAO_Notify_Command, public TAO_ESF_Worker<TAO_Notify_EventListener> -{ - public: - // = Initialization and termination code - TAO_Notify_Lookup_Command (TAO_Notify_Event_Processor* event_processor, TAO_Notify_Event* event, TAO_Notify_Event_Map* event_map); - - ~TAO_Notify_Lookup_Command (); - - /// Command callback - virtual int execute (ACE_ENV_SINGLE_ARG_DECL_NOT_USED); - - // = TAO_ESF_Worker method - void work (TAO_Notify_EventListener* listener ACE_ENV_ARG_DECL); - protected: - // = Data member - /// The event map to lookup in. - TAO_Notify_Event_Map* event_map_; -}; - -#include "ace/post.h" -#endif /* TAO_NOTIFY_LOOKUP_COMMAND_H */ diff --git a/TAO/orbsvcs/orbsvcs/Notify/Notify_MT_Worker_Task.cpp b/TAO/orbsvcs/orbsvcs/Notify/Notify_MT_Worker_Task.cpp deleted file mode 100644 index 34cfcdf67bd..00000000000 --- a/TAO/orbsvcs/orbsvcs/Notify/Notify_MT_Worker_Task.cpp +++ /dev/null @@ -1,219 +0,0 @@ -// $Id$ - -#include "Notify_MT_Worker_Task.h" -#include "Notify_Command.h" -#include "Notify_AdminProperties.h" -#include "Notify_Buffering_Strategy.h" -#include "Notify_QoSAdmin_i.h" -#include "Notify_Extensions.h" - -#include "tao/debug.h" - -ACE_RCSID(Notify, Notify_MT_Worker_Task, "$Id$") - -TAO_Notify_MT_Worker_Task::TAO_Notify_MT_Worker_Task (int n_threads, long flags, int force_active, long priority) - :buffering_strategy_ (0), - queue_length_ (0), - n_threads_ (n_threads), - flags_ (flags), - force_active_ (force_active), - priority_ (priority) -{ -} - -TAO_Notify_MT_Worker_Task::~TAO_Notify_MT_Worker_Task () -{ - delete this->buffering_strategy_; -} - -int -TAO_Notify_MT_Worker_Task::init_task ( - TAO_Notify_AdminProperties* const admin_properties, - TAO_Notify_QoSAdmin_i* const qos_properties) -{ - // Store the admin properties... - this->queue_length_ = admin_properties->queue_length (); - - // Make us an Active Object. - if (this->activate (this->flags_, this->n_threads_, this->force_active_, this->priority_) == -1) - ACE_ERROR_RETURN ((LM_ERROR, - ACE_TEXT ("%p\n"), - ACE_TEXT ("activate failed")), -1); - - // Create the dispatching strategy. - ACE_NEW_RETURN (this->buffering_strategy_, - TAO_Notify_Buffering_Strategy ( - admin_properties->queue_length ()), - -1); - - // Set the admin properties - this->update_admin (*admin_properties); - - // Set the qos policies - this->update_qos (*qos_properties); - - return 0; -} - -void -TAO_Notify_MT_Worker_Task::shutdown (ACE_ENV_SINGLE_ARG_DECL_NOT_USED /*ACE_ENV_SINGLE_ARG_PARAMETER*/) -{ - // Put a shutdown message in the task queue and wait here till all - // threads exit. - this->close (0); -} - -int -TAO_Notify_MT_Worker_Task::close (u_long) -{ - if (TAO_debug_level > 0) - ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("(%t) close of worker\n"))); - - TAO_Notify_Shutdown_Command * mb = new TAO_Notify_Shutdown_Command (); - - ACE_DECLARE_NEW_CORBA_ENV; - this->process_event (mb ACE_ENV_ARG_PARAMETER); - ACE_CHECK_RETURN (-1); - - // We can not wait for ourselves to quit - if (this->thr_mgr ()) - { - // call this->thr_mgr ()->task () in the main thread will assert () - // fail in ACE_Thread_Manager::thread_desc_self (void) so I get - // task this way. - ACE_Thread_Descriptor *mydesc = this->thr_mgr ()->thread_descriptor (ACE_OS::thr_self ()); - - if (mydesc && mydesc->task () == this) - return -1; - } - return this->wait (); -} - -int -TAO_Notify_MT_Worker_Task::process_event (TAO_Notify_Command *mb ACE_ENV_ARG_DECL, ACE_Time_Value *tv) -{ - // Execute the buffering strategy. - this->buffering_strategy_->execute (this->msg_queue (), mb ACE_ENV_ARG_PARAMETER, tv); - ACE_CHECK_RETURN (-1); - - return 0; -} - -void -TAO_Notify_MT_Worker_Task::update_admin (TAO_Notify_AdminProperties& admin) -{ - this->buffering_strategy_->max_queue_length (admin.max_queue_length ()); -} - -void -TAO_Notify_MT_Worker_Task::update_qos (TAO_Notify_QoSAdmin_i& qos_admin) -{ - // Only set values on the buffering_strategy_ that have actually been - // set on the qos_admin that is passed in. This way, values on the - // buffering_strategy_ are preserved when the qos parameters are not - // set on say the event channel or the supplier proxy. - ACE_TRY_NEW_ENV - { - CosNotification::QoSProperties_var qos = qos_admin.get_qos (ACE_ENV_SINGLE_ARG_PARAMETER); - ACE_TRY_CHECK; - - for (CORBA::ULong index = 0; index < qos->length (); ++index) - { - if (ACE_OS::strcmp (qos[index].name, - CosNotification::OrderPolicy) == 0) - { - CORBA::Short value; - qos[index].value >>= value; - this->buffering_strategy_->order_policy (value); - } - else if (ACE_OS::strcmp (qos[index].name, - CosNotification::DiscardPolicy) == 0) - { - CORBA::Short value; - qos[index].value >>= value; - this->buffering_strategy_->discard_policy (value); - } - else if (ACE_OS::strcmp (qos[index].name, - CosNotification::MaxEventsPerConsumer) == 0) - { - CORBA::Long value; - qos[index].value >>= value; - this->buffering_strategy_->max_events_per_consumer (value); - } - else if (ACE_OS::strcmp (qos[index].name, - TAO_Notify_Extensions::BlockingPolicy) == 0) - { - TimeBase::TimeT value; - qos[index].value >>= value; - this->buffering_strategy_->blocking_timeout (value); - } - } - } - ACE_CATCHANY - { - ACE_PRINT_EXCEPTION (ACE_ANY_EXCEPTION, - "EC (%P|%t) exception in update_qos"); - } - ACE_ENDTRY; -} - -int -TAO_Notify_MT_Worker_Task::svc (void) -{ - int done = 0; - while (!done) - { - ACE_TRY_NEW_ENV - { - ACE_Message_Block *mb; - if (this->getq (mb) == -1) - if (ACE_OS::last_error () == ESHUTDOWN) - return 0; - else - ACE_ERROR ((LM_ERROR, - "EC (%P|%t) getq error in Dispatching Queue\n")); - - // Decrement the global event count. - (*this->queue_length_)--; - - if (TAO_debug_level > 0) - ACE_DEBUG ((LM_DEBUG, "removing from queue\n")); - TAO_Notify_Command *command = - ACE_dynamic_cast (TAO_Notify_Command*, mb); - - int result = 0; - - if (command != 0) - { - result = command->execute (ACE_ENV_SINGLE_ARG_PARAMETER); - ACE_TRY_CHECK; - } - - ACE_Message_Block::release (mb); - - if (result == -1) - done = 1; - } - ACE_CATCHANY - { - ACE_PRINT_EXCEPTION (ACE_ANY_EXCEPTION, - "EC (%P|%t) exception in dispatching queue"); - } - ACE_ENDTRY; - } - return 0; -} - -/**************************************************************************/ - -TAO_Notify_Shutdown_Command::TAO_Notify_Shutdown_Command (void) - :TAO_Notify_Command (0,0) -{ -} - -int -TAO_Notify_Shutdown_Command::execute (ACE_ENV_SINGLE_ARG_DECL_NOT_USED /*ACE_ENV_SINGLE_ARG_PARAMETER*/) -{ - return -1; -} -/**************************************************************************/ diff --git a/TAO/orbsvcs/orbsvcs/Notify/Notify_MT_Worker_Task.h b/TAO/orbsvcs/orbsvcs/Notify/Notify_MT_Worker_Task.h deleted file mode 100644 index 3590ee817ab..00000000000 --- a/TAO/orbsvcs/orbsvcs/Notify/Notify_MT_Worker_Task.h +++ /dev/null @@ -1,110 +0,0 @@ -/* -*- C++ -*- */ -//============================================================================= -/** - * @file Notify_MT_Worker_Task.h - * - * $Id$ - * - * MT Worker task - * - * - * @author Pradeep Gore <pradeep@cs.wustl.edu> - */ -//============================================================================= - - -#ifndef TAO_MT_NOTIFY_WORKER_TASK_H -#define TAO_MT_NOTIFY_WORKER_TASK_H - -#include "ace/pre.h" -#include "ace/Task.h" - -#if !defined (ACE_LACKS_PRAGMA_ONCE) -# pragma once -#endif /* ACE_LACKS_PRAGMA_ONCE */ - -#include "Notify_Worker_Task.h" -#include "Notify_AdminProperties.h" - -class TAO_Notify_Event_Processor; -class TAO_Notify_Buffering_Strategy; -class TAO_Notify_QoSAdmin_i; - -/** - * @class TAO_Notify_MT_Worker_Task - * - * @brief TAO_Notify_MT_Worker_Task - * - * A MT worker task that we use for various event processing jobs. - * Also see TAO_Notify_Command - This task executes Notify_Command objects. - */ -class TAO_Notify_Export TAO_Notify_MT_Worker_Task : public TAO_Notify_Worker_Task, public ACE_Task<ACE_SYNCH> -{ -public: - // = Initialization and termination code - /// Constructor. - TAO_Notify_MT_Worker_Task (int n_threads = 1, - long flags = THR_NEW_LWP | THR_JOINABLE, - int force_active = 0, - long priority = ACE_DEFAULT_THREAD_PRIORITY); - - /// Destructor. - ~TAO_Notify_MT_Worker_Task (); - - /// Init the task - virtual int init_task (TAO_Notify_AdminProperties* const admin_properties, - TAO_Notify_QoSAdmin_i* const qos_properties); - - /// Shutdown this task. - virtual void shutdown (ACE_ENV_SINGLE_ARG_DECL); - - /// Process the command. - virtual int process_event (TAO_Notify_Command *mb ACE_ENV_ARG_DECL, ACE_Time_Value *tv = 0); - - virtual void update_admin (TAO_Notify_AdminProperties& admin); - virtual void update_qos (TAO_Notify_QoSAdmin_i& qos_admin); - - protected: - /// svc command processes objects stored in the message queue. - virtual int svc (void); - - /// Close hook. - virtual int close (u_long); - - /// The buffering strategy to use. - TAO_Notify_Buffering_Strategy* buffering_strategy_; - - /// We need to decrement the event_count_ everytime we dequeue a command - /// object. - TAO_Notify_Signal_Property_Long* queue_length_; - - // = Parameters to activate - int n_threads_; - long flags_; - int force_active_; - long priority_; -}; - -//**************************************************************************************** - - /** - * @class TAO_Notify_Shutdown_Command - * - * @brief TAO_Notify_Shutdown_Command - * - * Shutdown command to shutdown the task. - */ -class TAO_Notify_Export TAO_Notify_Shutdown_Command : public TAO_Notify_Command -{ - public: - - TAO_Notify_Shutdown_Command (void); - - /// Returns -1. This signals worker threads to finish servicing requests. - virtual int execute (ACE_ENV_SINGLE_ARG_DECL); -}; - -//**************************************************************************************** - -#include "ace/post.h" -#endif /* TAO_MT_NOTIFY_WORKER_TASK_H */ diff --git a/TAO/orbsvcs/orbsvcs/Notify/Notify_POA_Factory.h b/TAO/orbsvcs/orbsvcs/Notify/Notify_POA_Factory.h deleted file mode 100644 index 1951e296392..00000000000 --- a/TAO/orbsvcs/orbsvcs/Notify/Notify_POA_Factory.h +++ /dev/null @@ -1,81 +0,0 @@ -/* -*- C++ -*- */ -//============================================================================= -/** - * @file Notify_POA_Factory.h - * - * $Id$ - * - * Factory interface for POA objects. - * - * - * @author Pradeep Gore <pradeep@cs.wustl.edu> - */ -//============================================================================= - - -#ifndef TAO_NOTIFY_POA_FACTORY_H -#define TAO_NOTIFY_POA_FACTORY_H - -#include "ace/pre.h" -#include "ace/Service_Object.h" -#include "ace/Service_Config.h" - -#if !defined (ACE_LACKS_PRAGMA_ONCE) -# pragma once -#endif /* ACE_LACKS_PRAGMA_ONCE */ - -#include "tao/corba.h" -#include "tao/PortableServer/PortableServer.h" -#include "notify_export.h" - - /** - * @class TAO_Notify_POA_Factory - * - * @brief TAO_Notify_POA_Factory - * - * Interface for POA objects. - */ -class TAO_Notify_Export TAO_Notify_POA_Factory : public ACE_Service_Object -{ - public: - // = POA creation methods. - /// Create the POA to activate Event Channels in. - virtual PortableServer::POA_ptr create_event_channel_POA (PortableServer::POA_ptr parent_poa ACE_ENV_ARG_DECL) = 0; - - /// Create the POA to activate SA's in. - virtual PortableServer::POA_ptr create_supplier_admin_POA (PortableServer::POA_ptr parent_poa, CORBA::Long new_poa_id ACE_ENV_ARG_DECL) = 0; - - /// Create the POA to activate CA's in. - virtual PortableServer::POA_ptr create_consumer_admin_POA (PortableServer::POA_ptr parent_poa, CORBA::Long new_poa_id ACE_ENV_ARG_DECL) = 0; - - /// Create the POA to activate proxy push consumers in. - virtual PortableServer::POA_ptr create_proxy_pushconsumer_POA (PortableServer::POA_ptr parent_poa, CORBA::Long new_poa_id ACE_ENV_ARG_DECL) = 0; - - /// Create the POA to activate proxy push suppliers in. - virtual PortableServer::POA_ptr create_proxy_pushsupplier_POA (PortableServer::POA_ptr parent_poa, CORBA::Long new_poa_id ACE_ENV_ARG_DECL) = 0; - - // = Object activation and POA methods - /// Converts <id> to an ObjectId and registers with the POA <poa>. - virtual CORBA::Object_ptr activate_object_with_id (CORBA::Long id, PortableServer::POA_ptr poa,PortableServer::Servant servant ACE_ENV_ARG_DECL) = 0; - - /// Registers with the POA <poa>. - virtual CORBA::Object_ptr activate_object (PortableServer::POA_ptr poa,PortableServer::Servant servant ACE_ENV_ARG_DECL) = 0; - - /// Registers with the POA <poa>. - virtual CORBA::Object_ptr servant_to_reference (PortableServer::POA_ptr poa,PortableServer::Servant servant ACE_ENV_ARG_DECL) = 0; - - /// Look for the Object with id <id> in <poa>. - virtual CORBA::Object_ptr id_to_reference (CORBA::Long id, PortableServer::POA_ptr poa ACE_ENV_ARG_DECL) = 0; - - /// Destroy the <poa> - virtual void destroy_POA (PortableServer::POA_ptr poa ACE_ENV_ARG_DECL) = 0; - - /// Deactivate the object. - virtual void deactivate_object (CORBA::Object_ptr obj, PortableServer::POA_ptr poa ACE_ENV_ARG_DECL) = 0; - - /// Deactivate the object. - virtual void deactivate_object (PortableServer::Servant servant, PortableServer::POA_ptr ACE_ENV_ARG_DECL) = 0; -}; - -#include "ace/post.h" -#endif /* TAO_NOTIFY_POA_FACTORY_H */ diff --git a/TAO/orbsvcs/orbsvcs/Notify/Notify_ProxyConsumer_T.cpp b/TAO/orbsvcs/orbsvcs/Notify/Notify_ProxyConsumer_T.cpp deleted file mode 100644 index 0eb9eaaba70..00000000000 --- a/TAO/orbsvcs/orbsvcs/Notify/Notify_ProxyConsumer_T.cpp +++ /dev/null @@ -1,215 +0,0 @@ -// $Id$ -#ifndef TAO_NOTIFY_PROXYCONSUMER_T_C -#define TAO_NOTIFY_PROXYCONSUMER_T_C - -#include "Notify_ProxyConsumer_T.h" -#include "Notify_Event_Manager.h" -#include "Notify_SupplierAdmin_i.h" -#include "Notify_Factory.h" -#include "Notify_Channel_Objects_Factory.h" -#include "Notify_Event_Manager_Objects_Factory.h" -#include "Notify_Worker_Task.h" -#include "Notify_AdminProperties.h" - -ACE_RCSID(Notify, Notify_ProxyConsumer_T, "$Id$") - -template <class SERVANT_TYPE> -TAO_Notify_ProxyConsumer<SERVANT_TYPE>::TAO_Notify_ProxyConsumer (TAO_Notify_SupplierAdmin_i* supplier_admin) - : supplier_admin_ (supplier_admin), - filter_eval_task_ (0) -{ - this->event_manager_ = supplier_admin->get_event_manager (); - this->supplier_admin_->_add_ref (); -} - -template <class SERVANT_TYPE> void -TAO_Notify_ProxyConsumer<SERVANT_TYPE>::init (CosNotifyChannelAdmin::ProxyID proxy_id ACE_ENV_ARG_DECL) -{ - this->proxy_id_ = proxy_id; - - TAO_Notify_CO_Factory* cof = - TAO_Notify_Factory::get_channel_objects_factory (); - - this->lock_ = cof->create_proxy_consumer_lock (ACE_ENV_SINGLE_ARG_PARAMETER); - ACE_CHECK; - - // Create the task to forward filtering commands to: - - TAO_Notify_EMO_Factory* event_manager_objects_factory = - this->event_manager_->resource_factory (); - - this->filter_eval_task_ = - event_manager_objects_factory->create_source_eval_task (ACE_ENV_SINGLE_ARG_PARAMETER); - ACE_CHECK; - - // Get hold of the admin properties. - TAO_Notify_AdminProperties* const admin_properties = - this->event_manager_->admin_properties (); - - // open the tasks - this->filter_eval_task_->init_task (admin_properties, - &(this->qos_admin_)); -} - -// Implementation skeleton destructor -template <class SERVANT_TYPE> -TAO_Notify_ProxyConsumer<SERVANT_TYPE>::~TAO_Notify_ProxyConsumer (void) -{ - ACE_DECLARE_NEW_CORBA_ENV; - - this->event_manager_->unregister_from_subscription_updates (this - ACE_ENV_ARG_PARAMETER); - ACE_CHECK; - - delete this->lock_; - - this->supplier_admin_->proxy_pushconsumer_destroyed (this->proxy_id_); - this->supplier_admin_->_remove_ref (); - - // @@: Move this to on_disconnected - this->filter_eval_task_->shutdown (ACE_ENV_SINGLE_ARG_PARAMETER); - ACE_CHECK; - - TAO_Notify_EMO_Factory* event_manager_objects_factory = - this->event_manager_->resource_factory (); - - event_manager_objects_factory->destroy_listener_eval_task (this->filter_eval_task_); -} - -template <class SERVANT_TYPE> CORBA::Boolean -TAO_Notify_ProxyConsumer<SERVANT_TYPE>::evaluate_filter (TAO_Notify_Event &event ACE_ENV_ARG_DECL) -{ - // check if it passes the parent filter. - CORBA::Boolean bval = - this->supplier_admin_->get_filter_admin ().match (event - ACE_ENV_ARG_PARAMETER); - ACE_CHECK_RETURN (0); - - CORBA::Boolean ret_val; - - ret_val = this->supplier_admin_->MyOperator (ACE_ENV_SINGLE_ARG_PARAMETER); - ACE_CHECK_RETURN (0); - - if (ret_val == CosNotifyChannelAdmin::AND_OP) - { - ret_val = bval && this->filter_admin_.match (event ACE_ENV_ARG_PARAMETER); - ACE_CHECK_RETURN (0); - } - else - { - ret_val = bval || this->filter_admin_.match (event ACE_ENV_ARG_PARAMETER); - ACE_CHECK_RETURN (0); - } - - return ret_val; -} - -template <class SERVANT_TYPE> TAO_Notify_Worker_Task* -TAO_Notify_ProxyConsumer<SERVANT_TYPE>::filter_eval_task (void) -{ - return this->filter_eval_task_; -} - -template <class SERVANT_TYPE> void -TAO_Notify_ProxyConsumer<SERVANT_TYPE>::on_connected (ACE_ENV_SINGLE_ARG_DECL) -{ - // Get hold of the admin properties. - TAO_Notify_AdminProperties* const admin_properties = - this->event_manager_->admin_properties (); - - TAO_Notify_Property_Long* const supplier_count = - admin_properties->suppliers (); - - if (admin_properties->max_suppliers () != 0 && - supplier_count->value () >= admin_properties->max_suppliers ()) - ACE_THROW (CORBA::IMP_LIMIT ()); // we've reached the limit of suppliers connected. - - this->event_manager_->register_for_subscription_updates (this ACE_ENV_ARG_PARAMETER); - ACE_CHECK; - - (*supplier_count)++; -} - -template <class SERVANT_TYPE> void -TAO_Notify_ProxyConsumer<SERVANT_TYPE>::on_disconnected (ACE_ENV_SINGLE_ARG_DECL_NOT_USED/*ACE_ENV_SINGLE_ARG_PARAMETER*/) -{ - // Get hold of the admin properties. - TAO_Notify_AdminProperties* const admin_properties = - this->event_manager_->admin_properties (); - - (*(admin_properties->suppliers ()))--; -} - -template <class SERVANT_TYPE> void -TAO_Notify_ProxyConsumer<SERVANT_TYPE>::offer_change (const CosNotification::EventTypeSeq & added, const CosNotification::EventTypeSeq & removed ACE_ENV_ARG_DECL) - ACE_THROW_SPEC (( - CORBA::SystemException, - CosNotifyComm::InvalidEventType - )) -{ - this->event_manager_->update_publication_list (added, removed ACE_ENV_ARG_PARAMETER); -} - -template <class SERVANT_TYPE> CosNotification::EventTypeSeq* -TAO_Notify_ProxyConsumer<SERVANT_TYPE>::obtain_subscription_types (CosNotifyChannelAdmin::ObtainInfoMode mode ACE_ENV_ARG_DECL) - ACE_THROW_SPEC (( - CORBA::SystemException - )) -{ - CosNotification::EventTypeSeq* event_type_seq = 0; - - if (mode == CosNotifyChannelAdmin::ALL_NOW_UPDATES_OFF || - mode == CosNotifyChannelAdmin::ALL_NOW_UPDATES_ON) - { - event_type_seq = this->event_manager_->obtain_subscription_types (); - } - - if (mode == CosNotifyChannelAdmin::NONE_NOW_UPDATES_ON || - mode == CosNotifyChannelAdmin::ALL_NOW_UPDATES_ON) - { - // if updates are currently off, switch them on. - if (this->updates_on_ == 0) - this->event_manager_->register_for_subscription_updates (this - ACE_ENV_ARG_PARAMETER); - } - else - { - // if updates are currently on, switch them off. - if (this->updates_on_ == 1) - this->event_manager_->unregister_from_subscription_updates (this - ACE_ENV_ARG_PARAMETER); - } - - return event_type_seq; -} - -template <class SERVANT_TYPE> CosNotifyChannelAdmin::SupplierAdmin_ptr -TAO_Notify_ProxyConsumer<SERVANT_TYPE>::MyAdmin (ACE_ENV_SINGLE_ARG_DECL) - ACE_THROW_SPEC (( - CORBA::SystemException - )) -{ - return this->supplier_admin_->get_ref (ACE_ENV_SINGLE_ARG_PARAMETER); -} - -template <class SERVANT_TYPE> void -TAO_Notify_ProxyConsumer<SERVANT_TYPE>::set_qos ( - const CosNotification::QoSProperties & qos - ACE_ENV_ARG_DECL) - ACE_THROW_SPEC (( - CORBA::SystemException, - CosNotification::UnsupportedQoS - )) -{ - // Call our base class set_qos (). - TAO_Notify_Proxy<SERVANT_TYPE>::set_qos (qos ACE_ENV_ARG_PARAMETER); - ACE_CHECK; - - // Then update our task's qos - if (this->filter_eval_task_ != 0) - { - this->filter_eval_task_->update_qos (this->qos_admin_); - } -} - -#endif /* TAO_NOTIFY_PROXYCONSUMER_T_C */ diff --git a/TAO/orbsvcs/orbsvcs/Notify/Notify_ProxyConsumer_T.h b/TAO/orbsvcs/orbsvcs/Notify/Notify_ProxyConsumer_T.h deleted file mode 100644 index f1f76291ba2..00000000000 --- a/TAO/orbsvcs/orbsvcs/Notify/Notify_ProxyConsumer_T.h +++ /dev/null @@ -1,126 +0,0 @@ -//============================================================================= -/** - * @file Notify_ProxyConsumer_T.h - * - * $Id$ - * - * Template Base class for all Proxy Consumers. - * - * - * @author Pradeep Gore <pradeep@cs.wustl.edu> - */ -//============================================================================= - - -#ifndef TAO_NOTIFY_PROXYCONSUMER_T_H -#define TAO_NOTIFY_PROXYCONSUMER_T_H -#include "ace/pre.h" -#include "Notify_Proxy_T.h" - -#if !defined (ACE_LACKS_PRAGMA_ONCE) -# pragma once -#endif /* ACE_LACKS_PRAGMA_ONCE */ - -#include "Notify_Listeners.h" - -class TAO_Notify_SupplierAdmin_i; - -#if defined (_MSC_VER) -#if (_MSC_VER >= 1200) -#pragma warning (push) -#endif /* _MSC_VER >= 1200 */ -#pragma warning (disable:4250) -#endif /* _MSC_VER */ - -/** - * @class TAO_Notify_ProxyConsumer - * - * @brief TAO_Notify_ProxyConsumer - * - * The is a base class for all proxy consumers. - */ -template <class SERVANT_TYPE> -class TAO_Notify_Export TAO_Notify_ProxyConsumer : public TAO_Notify_Proxy<SERVANT_TYPE>, virtual public TAO_Notify_EventSource -{ - -public: - /// Constructor - TAO_Notify_ProxyConsumer (TAO_Notify_SupplierAdmin_i* supplier_admin); - - /// Destructor - virtual ~TAO_Notify_ProxyConsumer (void); - - /// Init the Proxy. - void init (CosNotifyChannelAdmin::ProxyID myID ACE_ENV_ARG_DECL); - - // = TAO_Notify_EventSource methods. - /// Evaluates true if this event is acceptable by the Source. - virtual CORBA::Boolean evaluate_filter (TAO_Notify_Event &event ACE_ENV_ARG_DECL); - - /// The Worker task associated with the event listener for filter evaluation. - TAO_Notify_Worker_Task* filter_eval_task (void); - - virtual CosNotifyChannelAdmin::SupplierAdmin_ptr MyAdmin (ACE_ENV_SINGLE_ARG_DECL) - ACE_THROW_SPEC (( - CORBA::SystemException - )); - - virtual CosNotification::EventTypeSeq * obtain_subscription_types ( - CosNotifyChannelAdmin::ObtainInfoMode mode - ACE_ENV_ARG_DECL - ) - ACE_THROW_SPEC (( - CORBA::SystemException - )); - - virtual void offer_change ( - const CosNotification::EventTypeSeq & added, - const CosNotification::EventTypeSeq & removed - ACE_ENV_ARG_DECL - ) - ACE_THROW_SPEC (( - CORBA::SystemException, - CosNotifyComm::InvalidEventType - )); - - // Override the set_qos that comes from TAO_Notify_Proxy - // so we can update the qos on our tasks. - virtual void set_qos ( - const CosNotification::QoSProperties & qos - ACE_ENV_ARG_DECL - ) - ACE_THROW_SPEC (( - CORBA::SystemException, - CosNotification::UnsupportedQoS - )); - -protected: - // = Helper methods - /// Derived classes should call this when their suppliers connect. - void on_connected (ACE_ENV_SINGLE_ARG_DECL); - - /// Derived classes should call this when their suppliers disconnect. - void on_disconnected (ACE_ENV_SINGLE_ARG_DECL); - - // = Data members - /// My parent supplier admin. - TAO_Notify_SupplierAdmin_i* supplier_admin_; - - /// The filter evaluation task for this listener. - TAO_Notify_Worker_Task* filter_eval_task_; -}; - -#if defined (ACE_TEMPLATES_REQUIRE_SOURCE) -#include "Notify_ProxyConsumer_T.cpp" -#endif /* ACE_TEMPLATES_REQUIRE_SOURCE */ - -#if defined (ACE_TEMPLATES_REQUIRE_PRAGMA) -#pragma implementation ("Notify_ProxyConsumer_T.cpp") -#endif /* ACE_TEMPLATES_REQUIRE_PRAGMA */ - -#if defined (_MSC_VER) && (_MSC_VER >= 1200) -#pragma warning (pop) -#endif /* _MSC_VER */ - -#include "ace/post.h" -#endif /* TAO_NOTIFY_PROXYPUSHCONSUMER_T_H */ diff --git a/TAO/orbsvcs/orbsvcs/Notify/Notify_ProxyPushConsumer_i.cpp b/TAO/orbsvcs/orbsvcs/Notify/Notify_ProxyPushConsumer_i.cpp deleted file mode 100644 index 567124efd80..00000000000 --- a/TAO/orbsvcs/orbsvcs/Notify/Notify_ProxyPushConsumer_i.cpp +++ /dev/null @@ -1,200 +0,0 @@ -// $Id$ - -#include "Notify_ProxyPushConsumer_i.h" -#include "Notify_Event_Manager.h" -#include "Notify_SupplierAdmin_i.h" - -ACE_RCSID(Notify, Notify_ProxyPushConsumer_i, "$Id$") - -typedef ACE_Reverse_Lock<ACE_Lock> TAO_Notify_Unlock; - -// Implementation skeleton constructor -TAO_Notify_ProxyPushConsumer_i::TAO_Notify_ProxyPushConsumer_i (TAO_Notify_SupplierAdmin_i* supplier_admin) - : proxy_inherited (supplier_admin), - notify_style_supplier_ (0) -{ -} - -// Implementation skeleton destructor -TAO_Notify_ProxyPushConsumer_i::~TAO_Notify_ProxyPushConsumer_i (void) -{ -} - -void -TAO_Notify_ProxyPushConsumer_i::connect_any_push_supplier (CosEventComm::PushSupplier_ptr push_supplier ACE_ENV_ARG_DECL) - ACE_THROW_SPEC (( - CORBA::SystemException, - CosEventChannelAdmin::AlreadyConnected - )) -{ - ACE_GUARD_THROW_EX (ACE_Lock, ace_mon, *this->lock_, - CORBA::INTERNAL ()); - ACE_CHECK; - - if (this->is_connected_ == 1) - ACE_THROW (CosEventChannelAdmin::AlreadyConnected ()); - else - { - this->cosec_push_supplier_ = - CosEventComm::PushSupplier::_duplicate (push_supplier); - - this->notify_push_supplier_ = - CosNotifyComm::PushSupplier::_narrow (push_supplier ACE_ENV_ARG_PARAMETER); - ACE_CHECK; - - if (!CORBA::is_nil (this->notify_push_supplier_.in ())) - { - this->cosec_push_supplier_ = CosNotifyComm::PushSupplier::_nil (); - this->notify_style_supplier_ = 1; - } - - this->is_connected_ = 1; - } - - ACE_TRY - { - TAO_Notify_Unlock reverse_lock (*this->lock_); - - { - ACE_GUARD_THROW_EX (TAO_Notify_Unlock, ace_mon, reverse_lock, - CORBA::INTERNAL ()); - ACE_TRY_CHECK; - - this->on_connected (ACE_ENV_SINGLE_ARG_PARAMETER); - ACE_TRY_CHECK; - } - } - ACE_CATCHALL - { - this->cosec_push_supplier_ = - CosEventComm::PushSupplier::_nil (); - - this->notify_push_supplier_ = - CosNotifyComm::PushSupplier::_nil (); - - this->is_connected_ = 0; - - ACE_RE_THROW; - } - ACE_ENDTRY; -} - -void -TAO_Notify_ProxyPushConsumer_i::dispatch_update_i (CosNotification::EventTypeSeq added, CosNotification::EventTypeSeq removed ACE_ENV_ARG_DECL) -{ - { - ACE_GUARD_THROW_EX (ACE_Lock, ace_mon, *this->lock_, - CORBA::INTERNAL ()); - ACE_CHECK; - - if (this->notify_style_supplier_ == 0) - return; // Our supplier doesn't support subscription_change. - } - - ACE_TRY - { - this->notify_push_supplier_->subscription_change (added, removed - ACE_ENV_ARG_PARAMETER); - ACE_TRY_CHECK; - } - ACE_CATCHALL - { - // misbehaving client, ignore for now. - } - ACE_ENDTRY; -} - -void -TAO_Notify_ProxyPushConsumer_i::push (const CORBA::Any & data ACE_ENV_ARG_DECL) - ACE_THROW_SPEC (( - CORBA::SystemException, - CosEventComm::Disconnected - )) -{ - { - ACE_GUARD_THROW_EX (ACE_Lock, ace_mon, *this->lock_, - CORBA::INTERNAL ()); - ACE_CHECK; - - if (this->is_connected_ == 0) - ACE_THROW (CosEventComm::Disconnected ()); - } - - CORBA::Any * data_copy; - ACE_NEW_THROW_EX (data_copy, CORBA::Any (data), CORBA::NO_MEMORY ()); - - TAO_Notify_Any* notify_event = new TAO_Notify_Any(data_copy); - - this->event_manager_->process_event (notify_event, this ACE_ENV_ARG_PARAMETER); - ACE_CHECK; - - notify_event->_decr_refcnt (); -} - -void -TAO_Notify_ProxyPushConsumer_i::disconnect_push_consumer ( - ACE_ENV_SINGLE_ARG_DECL - ) - ACE_THROW_SPEC (( - CORBA::SystemException - )) -{ - // ask our parent to deactivate us. - this->supplier_admin_-> - deactivate_proxy_pushconsumer (this ACE_ENV_ARG_PARAMETER); - ACE_CHECK; - - this->on_disconnected (ACE_ENV_SINGLE_ARG_PARAMETER); -} - -// = TAO_Notify_CosEC_ProxyPushConsumer_i - -TAO_Notify_CosEC_ProxyPushConsumer_i::TAO_Notify_CosEC_ProxyPushConsumer_i (TAO_Notify_SupplierAdmin_i* supplieradmin) - :notify_proxy_ (supplieradmin) -{ - // No-Op. -} - -TAO_Notify_CosEC_ProxyPushConsumer_i::~TAO_Notify_CosEC_ProxyPushConsumer_i (void) -{ - // No-Op. -} - -void -TAO_Notify_CosEC_ProxyPushConsumer_i::init (ACE_ENV_SINGLE_ARG_DECL) -{ - // Pass the default id. - this->notify_proxy_.init (0 ACE_ENV_ARG_PARAMETER); -} - -void -TAO_Notify_CosEC_ProxyPushConsumer_i::push (const CORBA::Any &data ACE_ENV_ARG_DECL) - ACE_THROW_SPEC ((CORBA::SystemException)) -{ - this->notify_proxy_.push (data ACE_ENV_ARG_PARAMETER); -} - -void -TAO_Notify_CosEC_ProxyPushConsumer_i::disconnect_push_consumer (ACE_ENV_SINGLE_ARG_DECL) - ACE_THROW_SPEC ((CORBA::SystemException)) -{ - this->notify_proxy_.disconnect_push_consumer (ACE_ENV_SINGLE_ARG_PARAMETER); -} - -void -TAO_Notify_CosEC_ProxyPushConsumer_i::connect_push_supplier(CosEventComm::PushSupplier_ptr push_supplier ACE_ENV_ARG_DECL) - ACE_THROW_SPEC ((CORBA::SystemException, - CosEventChannelAdmin::AlreadyConnected)) -{ - this->notify_proxy_.connect_any_push_supplier (push_supplier ACE_ENV_ARG_PARAMETER); -} - -#if defined (ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION) -template class TAO_Notify_ProxyConsumer<POA_CosNotifyChannelAdmin::ProxyPushConsumer>; -template class TAO_Notify_Proxy<POA_CosNotifyChannelAdmin::ProxyPushConsumer>; - -#elif defined (ACE_HAS_TEMPLATE_INSTANTIATION_PRAGMA) -#pragma instantiate TAO_Notify_ProxyConsumer<POA_CosNotifyChannelAdmin::ProxyPushConsumer> -#pragma instantiate TAO_Notify_Proxy<POA_CosNotifyChannelAdmin::ProxyPushConsumer> - -#endif /*ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION */ diff --git a/TAO/orbsvcs/orbsvcs/Notify/Notify_ProxyPushConsumer_i.h b/TAO/orbsvcs/orbsvcs/Notify/Notify_ProxyPushConsumer_i.h deleted file mode 100644 index f9947de3365..00000000000 --- a/TAO/orbsvcs/orbsvcs/Notify/Notify_ProxyPushConsumer_i.h +++ /dev/null @@ -1,145 +0,0 @@ -//============================================================================= -/** - * @file Notify_ProxyPushConsumer_i.h - * - * $Id$ - * - * Implements the CosNotifyChannelAdmin::ProxyPushConsumer interface and - * CosEventChannelAdmin::ProxyPushConsumerx - * - * - * @author Pradeep Gore <pradeep@cs.wustl.edu> - */ -//============================================================================= - - -#ifndef TAO_NOTIFY_PROXYPUSHCONSUMER_I_H -#define TAO_NOTIFY_PROXYPUSHCONSUMER_I_H - -#include "ace/pre.h" -#include "Notify_ProxyConsumer_T.h" - -#if !defined (ACE_LACKS_PRAGMA_ONCE) -# pragma once -#endif /* ACE_LACKS_PRAGMA_ONCE */ - -#include "orbsvcs/CosNotifyChannelAdminS.h" - -class TAO_Notify_SupplierAdmin_i; -class TAO_Notify_Event_Manager; - -#if defined(_MSC_VER) -#if (_MSC_VER >= 1200) -#pragma warning(push) -#endif /* _MSC_VER >= 1200 */ -#pragma warning(disable:4250) -#endif /* _MSC_VER */ - -/** - * @class TAO_Notify_ProxyPushConsumer_i - * - * @brief TAO_Notify_ProxyPushConsumer_i - * - * Implements the CosNotifyChannelAdmin::ProxyPushConsumer interface. - */ -class TAO_Notify_Export TAO_Notify_ProxyPushConsumer_i : public TAO_Notify_ProxyConsumer <POA_CosNotifyChannelAdmin::ProxyPushConsumer> -{ - -public: - /// Constructor - TAO_Notify_ProxyPushConsumer_i (TAO_Notify_SupplierAdmin_i* supplier_admin); - - /// Destructor - virtual ~TAO_Notify_ProxyPushConsumer_i (void); - - // = Interface methods - void push (const CORBA::Any & data ACE_ENV_ARG_DECL) - ACE_THROW_SPEC (( - CORBA::SystemException, - CosEventComm::Disconnected - )); - - virtual void connect_any_push_supplier ( - CosEventComm::PushSupplier_ptr push_supplier - ACE_ENV_ARG_DECL - ) - ACE_THROW_SPEC (( - CORBA::SystemException, - CosEventChannelAdmin::AlreadyConnected - )); - -virtual void disconnect_push_consumer ( - ACE_ENV_SINGLE_ARG_DECL - ) - ACE_THROW_SPEC (( - CORBA::SystemException - )); - - protected: -// = Helper methods - virtual void dispatch_update_i (CosNotification::EventTypeSeq added, CosNotification::EventTypeSeq removed ACE_ENV_ARG_DECL); - - // = Data members - /** - * True if the supplier supports the NotifySubscribe interface. - * If it does, we use the <notify_push_supplier_> else we use - * <cosec_push_supplier_> - */ - CORBA::Boolean notify_style_supplier_; - - /// The supplier connected to us. - CosEventComm::PushSupplier_var cosec_push_supplier_; - CosNotifyComm::PushSupplier_var notify_push_supplier_; - - private: - typedef TAO_Notify_ProxyConsumer <POA_CosNotifyChannelAdmin::ProxyPushConsumer> - proxy_inherited; -}; - -/** - * @class TAO_Notify_CosEC_ProxyPushConsumer_i - * - * @brief TAO_Notify_CosEC_ProxyPushConsumer_i - * - * CosEventChannelAdmin::ProxyPushConsumer wrapper implementation. - * Delegates to TAO_Notify_ProxyPushConsumer_i. - */ -class TAO_Notify_Export TAO_Notify_CosEC_ProxyPushConsumer_i : public virtual POA_CosEventChannelAdmin::ProxyPushConsumer, public virtual PortableServer::RefCountServantBase -{ -public: - // = Initialization and termination methods. - /// Constructor. - TAO_Notify_CosEC_ProxyPushConsumer_i (TAO_Notify_SupplierAdmin_i* supplieradmi); - - /// Destructor. - virtual ~TAO_Notify_CosEC_ProxyPushConsumer_i (void); - - /// init. - void init (ACE_ENV_SINGLE_ARG_DECL); - - /// Suppliers call this method to pass data to connected consumers. - virtual void push (const CORBA::Any &data - ACE_ENV_ARG_DECL) - ACE_THROW_SPEC ((CORBA::SystemException)); - - /// Disconnects the supplier from the event communication. - virtual void disconnect_push_consumer (ACE_ENV_SINGLE_ARG_DECL) - ACE_THROW_SPEC ((CORBA::SystemException)); - - /// Connects a push supplier. - virtual void connect_push_supplier(CosEventComm::PushSupplier_ptr push_supplier - ACE_ENV_ARG_DECL) - ACE_THROW_SPEC ((CORBA::SystemException, - CosEventChannelAdmin::AlreadyConnected)); - protected: - // = Data Members - /// Proxy to delegate to. - TAO_Notify_ProxyPushConsumer_i notify_proxy_; -}; - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -#pragma warning(pop) -#endif /* _MSC_VER */ - -#include "ace/post.h" -#endif /* TAO_NOTIFY_PROXYPUSHCONSUMER_I_H */ diff --git a/TAO/orbsvcs/orbsvcs/Notify/Notify_ProxyPushSupplier_i.cpp b/TAO/orbsvcs/orbsvcs/Notify/Notify_ProxyPushSupplier_i.cpp deleted file mode 100644 index 049cc32f249..00000000000 --- a/TAO/orbsvcs/orbsvcs/Notify/Notify_ProxyPushSupplier_i.cpp +++ /dev/null @@ -1,229 +0,0 @@ -//$Id$ - -#include "Notify_ProxyPushSupplier_i.h" -#include "Notify_Event_Manager.h" -#include "Notify_ConsumerAdmin_i.h" - -ACE_RCSID(Notify, Notify_ProxyPushSupplier_i, "$Id$") - -typedef ACE_Reverse_Lock<ACE_Lock> TAO_Notify_Unlock; - -TAO_Notify_ProxyPushSupplier_i::TAO_Notify_ProxyPushSupplier_i (TAO_Notify_ConsumerAdmin_i* consumer_admin) - :proxy_inherited (consumer_admin), - notify_style_consumer_ (0) -{ -} - -// Implementation skeleton destructor -TAO_Notify_ProxyPushSupplier_i::~TAO_Notify_ProxyPushSupplier_i (void) -{ -} - -void -TAO_Notify_ProxyPushSupplier_i::dispatch_event_i (TAO_Notify_Event &event ACE_ENV_ARG_DECL) -{ - ACE_TRY - { - event.do_push (this->cosec_push_consumer_.in () ACE_ENV_ARG_PARAMETER); - ACE_TRY_CHECK; - } - ACE_CATCHALL - { - ACE_DEBUG ((LM_DEBUG, "Exception dispatching any event\n")); - // misbehaving client, - this->shutdown (ACE_ENV_SINGLE_ARG_PARAMETER); - } - ACE_ENDTRY; -} - -void -TAO_Notify_ProxyPushSupplier_i::dispatch_update_i (CosNotification::EventTypeSeq added, CosNotification::EventTypeSeq removed ACE_ENV_ARG_DECL) -{ - { - ACE_GUARD (ACE_Lock, ace_mon, *this->lock_); - if (this->notify_style_consumer_ == 0) - return; // Our consumer doesn't support offer_change. - } - - ACE_TRY - { - this->notify_push_consumer_->offer_change (added, removed ACE_ENV_ARG_PARAMETER); - ACE_TRY_CHECK; - } - ACE_CATCHALL - { - // misbehaving client, ignore for now. - } - ACE_ENDTRY; -} - -void -TAO_Notify_ProxyPushSupplier_i::connect_any_push_consumer (CosEventComm::PushConsumer_ptr push_consumer ACE_ENV_ARG_DECL) - ACE_THROW_SPEC (( - CORBA::SystemException, - CosEventChannelAdmin::AlreadyConnected, - CosEventChannelAdmin::TypeError - )) -{ - ACE_GUARD_THROW_EX (ACE_Lock, ace_mon, *this->lock_, - CORBA::INTERNAL ()); - ACE_CHECK; - - if (CORBA::is_nil (push_consumer)) - ACE_THROW (CosEventChannelAdmin::TypeError ()); - else if (this->is_connected_ == 1) - ACE_THROW (CosEventChannelAdmin::AlreadyConnected ()); - else - { - this->cosec_push_consumer_ = - CosEventComm::PushConsumer::_duplicate (push_consumer); - - this->notify_push_consumer_ = - CosNotifyComm::PushConsumer::_narrow (push_consumer ACE_ENV_ARG_PARAMETER); - ACE_CHECK; - - if (!CORBA::is_nil (this->notify_push_consumer_.in ())) - { - CosNotifyComm::PushConsumer:: - _duplicate (this->notify_push_consumer_.in ()); - this->notify_style_consumer_ = 1; - } - - this->is_connected_ = 1; - } // else - - ACE_TRY - { - TAO_Notify_Unlock reverse_lock (*this->lock_); - - { - ACE_GUARD_THROW_EX (TAO_Notify_Unlock, ace_mon, reverse_lock, - CORBA::INTERNAL ()); - ACE_CHECK; - - this->on_connected (ACE_ENV_SINGLE_ARG_PARAMETER); - ACE_TRY_CHECK; - } - } - ACE_CATCHALL - { - this->cosec_push_consumer_ = CosNotifyComm::PushConsumer::_nil (); - this->notify_push_consumer_ = CosNotifyComm::PushConsumer::_nil (); - - this->is_connected_ = 0; - ACE_RE_THROW; - } - ACE_ENDTRY; -} - -void -TAO_Notify_ProxyPushSupplier_i::shutdown_i (ACE_ENV_SINGLE_ARG_DECL) -{ - this->on_disconnected (ACE_ENV_SINGLE_ARG_PARAMETER); - ACE_CHECK; - - // ask our parent to deactivate us. - this->consumer_admin_-> - deactivate_proxy_pushsupplier (this ACE_ENV_ARG_PARAMETER); -} - -void -TAO_Notify_ProxyPushSupplier_i::disconnect_push_supplier (ACE_ENV_SINGLE_ARG_DECL) - ACE_THROW_SPEC (( - CORBA::SystemException - )) -{ - // unregister with CA - this->consumer_admin_->unregister_listener (this ACE_ENV_ARG_PARAMETER); - ACE_CHECK; - - this->shutdown_i (ACE_ENV_SINGLE_ARG_PARAMETER); -} - -void -TAO_Notify_ProxyPushSupplier_i::shutdown (ACE_ENV_SINGLE_ARG_DECL) -{ - // Tell the consumer that we're going away ... - // @@ Later, lookup a "notify_on_disconnect" option. - - { - ACE_GUARD (ACE_Lock, ace_mon, *this->lock_); - - if (this->is_connected_ == 0) - return; - } - - this->shutdown_i (ACE_ENV_SINGLE_ARG_PARAMETER); - ACE_CHECK; - - ACE_TRY - { - this->cosec_push_consumer_->disconnect_push_consumer (ACE_ENV_SINGLE_ARG_PARAMETER); - ACE_TRY_CHECK; - } - ACE_CATCHALL - { - // ignore - } - ACE_ENDTRY; -} - -// = TAO_Notify_CosEC_ProxyPushSupplier_i - -TAO_Notify_CosEC_ProxyPushSupplier_i::TAO_Notify_CosEC_ProxyPushSupplier_i (TAO_Notify_ConsumerAdmin_i* consumer_admin) - :notify_proxy_ (consumer_admin) -{ - // No-Op. -} - -TAO_Notify_CosEC_ProxyPushSupplier_i::~TAO_Notify_CosEC_ProxyPushSupplier_i (void) -{ -} - -void -TAO_Notify_CosEC_ProxyPushSupplier_i::init (ACE_ENV_SINGLE_ARG_DECL) -{ - this->notify_proxy_.init (0 ACE_ENV_ARG_PARAMETER); -} - -void -TAO_Notify_CosEC_ProxyPushSupplier_i::disconnect_push_supplier (ACE_ENV_SINGLE_ARG_DECL) - ACE_THROW_SPEC ((CORBA::SystemException)) -{ - this->notify_proxy_.disconnect_push_supplier (ACE_ENV_SINGLE_ARG_PARAMETER); -} - -void -TAO_Notify_CosEC_ProxyPushSupplier_i::connect_push_consumer(CosEventComm::PushConsumer_ptr push_consumer ACE_ENV_ARG_DECL) - ACE_THROW_SPEC ((CORBA::SystemException, - CosEventChannelAdmin::AlreadyConnected, - CosEventChannelAdmin::TypeError)) -{ - this->notify_proxy_.connect_any_push_consumer (push_consumer ACE_ENV_ARG_PARAMETER); -} - -#if defined (ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION) - -template class TAO_Notify_ProxySupplier<POA_CosNotifyChannelAdmin::ProxyPushSupplier>; -template class TAO_Notify_Proxy<POA_CosNotifyChannelAdmin::ProxyPushSupplier>; - -#elif defined (ACE_HAS_TEMPLATE_INSTANTIATION_PRAGMA) - -#pragma instantiate TAO_Notify_ProxySupplier<POA_CosNotifyChannelAdmin::ProxyPushSupplier> -#pragma instantiate TAO_Notify_Proxy<POA_CosNotifyChannelAdmin::ProxyPushSupplier> - -#endif /*ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION */ - -#if defined (ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION) - -template class ACE_Unbounded_Queue<TAO_Notify_Event*>; -template class ACE_Node<TAO_Notify_Event*>; -template class ACE_Unbounded_Queue_Iterator <TAO_Notify_Event*>; - -#elif defined (ACE_HAS_TEMPLATE_INSTANTIATION_PRAGMA) - -#pragma instantiate ACE_Unbounded_Queue<TAO_Notify_Event*> -#pragma instantiate ACE_Node<TAO_Notify_Event*> -#pragma instantiate ACE_Unbounded_Queue_Iterator <TAO_Notify_Event*> - -#endif /*ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION */ diff --git a/TAO/orbsvcs/orbsvcs/Notify/Notify_ProxyPushSupplier_i.h b/TAO/orbsvcs/orbsvcs/Notify/Notify_ProxyPushSupplier_i.h deleted file mode 100644 index ccf8d305d52..00000000000 --- a/TAO/orbsvcs/orbsvcs/Notify/Notify_ProxyPushSupplier_i.h +++ /dev/null @@ -1,140 +0,0 @@ -//============================================================================= -/** - * @file Notify_ProxyPushSupplier_i.h - * - * $Id$ - * - * implements CosNotifyChannelAdmin::ProxyPushSupplier and - * CosEventChannelAdmin::ProxyPushSupplier - * - * - * @author Pradeep Gore <pradeep@cs.wustl.edu> - */ -//============================================================================= - -#ifndef TAO_NOTIFY_PROXYPUSHSUPPLIER_I_H -#define TAO_NOTIFY_PROXYPUSHSUPPLIER_I_H - -#include "ace/pre.h" -#include "Notify_ProxySupplier_T.h" - -#if !defined (ACE_LACKS_PRAGMA_ONCE) -# pragma once -#endif /* ACE_LACKS_PRAGMA_ONCE */ - -#include "orbsvcs/CosNotifyChannelAdminS.h" - -class TAO_Notify_ConsumerAdmin_i; - -#if defined(_MSC_VER) -#if (_MSC_VER >= 1200) -#pragma warning(push) -#endif /* _MSC_VER >= 1200 */ -#pragma warning(disable:4250) -#endif /* _MSC_VER */ - -/** - * @class TAO_Notify_ProxyPushSupplier_i - * - * @brief TAO_Notify_ProxyPushSupplier_i - * - * implements CosNotifyChannelAdmin::ProxyPushSupplier. - */ -class TAO_Notify_Export TAO_Notify_ProxyPushSupplier_i : public TAO_Notify_ProxySupplier<POA_CosNotifyChannelAdmin::ProxyPushSupplier> -{ - -public: - /// Constructor - TAO_Notify_ProxyPushSupplier_i (TAO_Notify_ConsumerAdmin_i* consumeradmin); - - /// Destructor - virtual ~TAO_Notify_ProxyPushSupplier_i (void); - - // = Interface methods - virtual void connect_any_push_consumer ( - CosEventComm::PushConsumer_ptr push_consumer - ACE_ENV_ARG_DECL - ) - ACE_THROW_SPEC (( - CORBA::SystemException, - CosEventChannelAdmin::AlreadyConnected, - CosEventChannelAdmin::TypeError - )); - - virtual void disconnect_push_supplier ( - ACE_ENV_SINGLE_ARG_DECL - ) - ACE_THROW_SPEC (( - CORBA::SystemException - )); - - /// Shutdown. - virtual void shutdown (ACE_ENV_SINGLE_ARG_DECL); - - protected: - /// Shutdown - void shutdown_i (ACE_ENV_SINGLE_ARG_DECL); - - /// Deliver the event to the consumer. - virtual void dispatch_event_i (TAO_Notify_Event &event ACE_ENV_ARG_DECL); - - /// Deliver the update to the consumer. - virtual void dispatch_update_i (CosNotification::EventTypeSeq added, CosNotification::EventTypeSeq removed ACE_ENV_ARG_DECL); - - // = Data Members. - /// True if the consumer supports the NotifyPublish interface. - /// If it does, we use the <notify_push_consumer_> else <cosec_push_consumer_> - CORBA::Boolean notify_style_consumer_; - - /// The consumer connected to us. - CosEventComm::PushConsumer_var cosec_push_consumer_; - CosNotifyComm::PushConsumer_var notify_push_consumer_; - - private: - typedef TAO_Notify_ProxySupplier<POA_CosNotifyChannelAdmin::ProxyPushSupplier> - proxy_inherited; -}; - -/** - * @class TAO_Notify_CosEC_ProxyPushSupplier_i - * - * @brief TAO_Notify_CosEC_ProxyPushSupplier_i - * - * implements CosEventChannelAdmin::ProxyPushSupplier by delegating - * to TAO_Notify_ProxyPushSupplier_i. - */ -class TAO_Notify_Export TAO_Notify_CosEC_ProxyPushSupplier_i : public POA_CosEventChannelAdmin::ProxyPushSupplier, public virtual PortableServer::RefCountServantBase -{ -public: - // = Initialization and termination methods. - /// Constructor. - TAO_Notify_CosEC_ProxyPushSupplier_i(TAO_Notify_ConsumerAdmin_i* consumeradmin); - - /// Destructor. - ~TAO_Notify_CosEC_ProxyPushSupplier_i (void); - - /// Init. - void init (ACE_ENV_SINGLE_ARG_DECL); - - /// Ends the event communication and disposes this object. - virtual void disconnect_push_supplier (ACE_ENV_SINGLE_ARG_DECL) - ACE_THROW_SPEC ((CORBA::SystemException)); - - /// Connects the <push_consumer> to the Event Channel. - virtual void connect_push_consumer(CosEventComm::PushConsumer_ptr push_consumer ACE_ENV_ARG_DECL) - ACE_THROW_SPEC ((CORBA::SystemException, - CosEventChannelAdmin::AlreadyConnected, - CosEventChannelAdmin::TypeError)); - - protected: - // = Data Members - /// The proxy that we delegate too. - TAO_Notify_ProxyPushSupplier_i notify_proxy_; -}; - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -#pragma warning(pop) -#endif /* _MSC_VER */ - -#include "ace/post.h" -#endif /* TAO_NOTIFY_PROXYPUSHSUPPLIER_I_H */ diff --git a/TAO/orbsvcs/orbsvcs/Notify/Notify_ProxySupplier_T.cpp b/TAO/orbsvcs/orbsvcs/Notify/Notify_ProxySupplier_T.cpp deleted file mode 100644 index 3de9a2d04c8..00000000000 --- a/TAO/orbsvcs/orbsvcs/Notify/Notify_ProxySupplier_T.cpp +++ /dev/null @@ -1,499 +0,0 @@ -// $Id$ - -#ifndef TAO_NOTIFY_PROXYSUPPLIER_T_C -#define TAO_NOTIFY_PROXYSUPPLIER_T_C - -#include "Notify_ProxySupplier_T.h" -#include "Notify_Event_Manager.h" -#include "Notify_ConsumerAdmin_i.h" -#include "Notify_Factory.h" -#include "Notify_Channel_Objects_Factory.h" -#include "Notify_Event_Manager_Objects_Factory.h" -#include "Notify_Worker_Task.h" -#include "Notify_AdminProperties.h" - -ACE_RCSID (Notify, - Notify_ProxySupplier_T, - "$Id$") - -template <class SERVANT_TYPE> -TAO_Notify_ProxySupplier<SERVANT_TYPE>::TAO_Notify_ProxySupplier (TAO_Notify_ConsumerAdmin_i* consumer_admin) - :consumer_admin_ (consumer_admin), - is_suspended_ (0), - dispatching_task_ (0), - filter_eval_task_ (0) -{ - this->event_manager_ = consumer_admin->get_event_manager (); -} - -template <class SERVANT_TYPE> void -TAO_Notify_ProxySupplier<SERVANT_TYPE>::init (CosNotifyChannelAdmin::ProxyID proxy_id ACE_ENV_ARG_DECL) -{ - consumer_admin_->_add_ref (ACE_ENV_SINGLE_ARG_PARAMETER); - ACE_CHECK; - - this->proxy_id_ = proxy_id; - - TAO_Notify_CO_Factory* cof = - TAO_Notify_Factory::get_channel_objects_factory (); - - this->lock_ = cof->create_proxy_supplier_lock (ACE_ENV_SINGLE_ARG_PARAMETER); - ACE_CHECK; - - TAO_Notify_EMO_Factory* event_manager_objects_factory = - this->event_manager_->resource_factory (); - - // Create the task to forward filtering/dispatching commands to: - this->dispatching_task_ = - event_manager_objects_factory->create_dispatching_task (ACE_ENV_SINGLE_ARG_PARAMETER); - ACE_CHECK; - - this->filter_eval_task_ = - event_manager_objects_factory->create_listener_eval_task (ACE_ENV_SINGLE_ARG_PARAMETER); - ACE_CHECK; - - // Get hold of the admin properties. - TAO_Notify_AdminProperties* const admin_properties = - this->event_manager_->admin_properties (); - - // Init the tasks - this->dispatching_task_->init_task (admin_properties, - &(this->qos_admin_)); - this->filter_eval_task_->init_task (admin_properties, - &(this->qos_admin_)); - - { - TAO_Notify_EventType& special_type = - TAO_Notify_EventType::special_event_type (); - - CosNotification::EventTypeSeq added (1), removed (0); - - added.length (1); - removed.length (0); - - added[0] = special_type.get_native (); - - this->subscription_change (added, removed ACE_ENV_ARG_PARAMETER); - ACE_CHECK; - } -} - -// Implementation skeleton destructor -template <class SERVANT_TYPE> -TAO_Notify_ProxySupplier<SERVANT_TYPE>::~TAO_Notify_ProxySupplier (void) -{ - ACE_DECLARE_NEW_CORBA_ENV; - this->event_manager_->unregister_from_publication_updates (this - ACE_ENV_ARG_PARAMETER); - ACE_CHECK; - - // unsubscribe it to our current subscriptions. - CosNotification::EventTypeSeq added (0); - CosNotification::EventTypeSeq removed (this->subscription_list_.size ()); - - this->subscription_list_.populate (removed); - added.length (0); - - this->event_manager_->subscribe_for_events (this, - added, removed ACE_ENV_ARG_PARAMETER); - ACE_CHECK; - - delete this->lock_; - - this->consumer_admin_->proxy_pushsupplier_destroyed (this->proxy_id_); - - consumer_admin_->_remove_ref (ACE_ENV_SINGLE_ARG_PARAMETER); - ACE_CHECK; - - TAO_Notify_EMO_Factory* event_manager_objects_factory = - this->event_manager_->resource_factory (); - - event_manager_objects_factory->destroy_dispatching_task (this->dispatching_task_); - event_manager_objects_factory->destroy_source_eval_task (this->filter_eval_task_); -} - -template <class SERVANT_TYPE> CORBA::Boolean -TAO_Notify_ProxySupplier<SERVANT_TYPE>::evaluate_filter (TAO_Notify_Event &event, CORBA::Boolean eval_parent ACE_ENV_ARG_DECL) -{ - if (eval_parent == 1) - { - CosNotifyChannelAdmin::InterFilterGroupOperator filter_operator = - consumer_admin_->MyOperator (ACE_ENV_SINGLE_ARG_PARAMETER); - ACE_CHECK_RETURN (0); - // Inter-filter group operator. - - CORBA::Boolean bval = - this->consumer_admin_->get_filter_admin ().match (event ACE_ENV_ARG_PARAMETER); - ACE_CHECK_RETURN (0); - - if ((bval == 1 && filter_operator == CosNotifyChannelAdmin::AND_OP) || - (bval == 0 && filter_operator == CosNotifyChannelAdmin::OR_OP)) - { - bval = this->filter_admin_.match (event ACE_ENV_ARG_PARAMETER); - ACE_CHECK_RETURN (0); - return bval; - } - else if (bval == 1 && filter_operator == CosNotifyChannelAdmin::OR_OP) - { - return 1; - } - else - { - return 0; - } - } - else - { - int status = this->filter_admin_.match (event ACE_ENV_ARG_PARAMETER); - ACE_CHECK_RETURN (0); - return status; - } -} - -template <class SERVANT_TYPE> void -TAO_Notify_ProxySupplier<SERVANT_TYPE>::dispatch_event (TAO_Notify_Event &event ACE_ENV_ARG_DECL) -{ - if (this->is_connected_ == 0) - { - ACE_DEBUG ((LM_DEBUG,"%t, %P", - "dispatch_event to disconnected proxy supplier from EC\n")); - return; - } - - if (this->is_suspended_ == 1) - { - ACE_GUARD_THROW_EX (ACE_Lock, ace_mon, *this->lock_, - CORBA::INTERNAL ()); - ACE_CHECK; - - this->event_list_.enqueue_tail (event.clone ()); - } - else - { - if (TAO_debug_level > 0) - ACE_DEBUG ((LM_DEBUG, "Notify (%P|%t) - " - "dispatching event\n")); - this->dispatch_event_i (event ACE_ENV_ARG_PARAMETER); - ACE_CHECK; - } -} - -template <class SERVANT_TYPE> TAO_Notify_Worker_Task* -TAO_Notify_ProxySupplier<SERVANT_TYPE>::event_dispatch_task (void) -{ - return this->dispatching_task_; -} - -template <class SERVANT_TYPE> TAO_Notify_Worker_Task* -TAO_Notify_ProxySupplier<SERVANT_TYPE>::filter_eval_task (void) -{ - return this->filter_eval_task_; -} - -template <class SERVANT_TYPE> void -TAO_Notify_ProxySupplier<SERVANT_TYPE>::subscription_change ( - const CosNotification::EventTypeSeq & added, - const CosNotification::EventTypeSeq & removed - ACE_ENV_ARG_DECL - ) - ACE_THROW_SPEC ((CORBA::SystemException, - CosNotifyComm::InvalidEventType)) -{ - TAO_Notify_EventType_List seq_added, seq_removed; - - seq_added.insert_seq (added); - seq_removed.insert_seq (removed); - - { - ACE_GUARD_THROW_EX (ACE_Lock, ace_mon, *this->lock_, - CORBA::INTERNAL ()); - ACE_CHECK; - - TAO_Notify_EventType_List::preprocess (this->subscription_list_, seq_added, seq_removed); - } - - if (this->is_connected_ == 1) - { - CosNotification::EventTypeSeq p_added, p_removed; - - seq_added.populate (p_added); - seq_removed.populate (p_removed); - - this->event_manager_->subscribe_for_events (this, - p_added, p_removed ACE_ENV_ARG_PARAMETER); - ACE_CHECK; - - - if (TAO_debug_level > 0) - { - ACE_DEBUG ((LM_DEBUG, - "ProxySupplier %d: added following types: ", - proxy_id_ )); - - CORBA::ULong i = 0; - - for (i = 0; i < p_added.length (); ++i) - { - ACE_DEBUG ((LM_DEBUG, - "(%s, %s)\t", - p_added[i].domain_name.in(), - p_added[i].type_name.in())); - } - - ACE_DEBUG ((LM_DEBUG,"\n ProxySupplier %d: removed following types: ",proxy_id_ )); - - for (i = 0; i < p_removed.length (); ++i) - { - ACE_DEBUG ((LM_DEBUG, - "(%s, %s)\t", - p_removed[i].domain_name.in(), - p_removed[i].type_name.in())); - } - - CosNotification::EventTypeSeq current; - this->subscription_list_.populate (current); - - ACE_DEBUG ((LM_DEBUG, - "\n ProxySupplier %d:current subscriptions: ", - proxy_id_ )); - - for (i = 0; i < current.length (); ++i) - { - ACE_DEBUG ((LM_DEBUG, - "(%s, %s)\n", - current[i].domain_name.in(), - current[i].type_name.in())); - } - } - } -} - -template <class SERVANT_TYPE> void -TAO_Notify_ProxySupplier<SERVANT_TYPE>::on_connected (ACE_ENV_SINGLE_ARG_DECL) -{ - // Get hold of the admin properties. - TAO_Notify_AdminProperties* const admin_properties = - this->event_manager_->admin_properties (); - - TAO_Notify_Property_Long* const consumer_count = - admin_properties->consumers (); - - if (admin_properties->max_consumers () != 0 && - consumer_count->value () >= admin_properties->max_consumers ()) - ACE_THROW (CORBA::IMP_LIMIT ()); // we've reached the limit of consumers connected. - - // register with CA - this->consumer_admin_->register_listener (this ACE_ENV_ARG_PARAMETER); - ACE_CHECK; - - CosNotification::EventTypeSeq added; - - CosNotification::EventTypeSeq removed (0); - removed.length (0); - - // subscribe it to our current subscriptions. - added.length (this->subscription_list_.size ()); - - this->subscription_list_.populate (added); - - this->event_manager_->subscribe_for_events (this, - added, - removed - ACE_ENV_ARG_PARAMETER); - ACE_CHECK; - - this->event_manager_->register_for_publication_updates (this ACE_ENV_ARG_PARAMETER); - ACE_CHECK; - - (*consumer_count)++; -} - -template <class SERVANT_TYPE> void -TAO_Notify_ProxySupplier<SERVANT_TYPE>::on_disconnected (ACE_ENV_SINGLE_ARG_DECL) -{ - { - ACE_GUARD_THROW_EX (ACE_Lock, ace_mon, *this->lock_, - CORBA::INTERNAL ()); - ACE_CHECK; - - if (this->is_connected_ == 0) - return; - - this->is_connected_ = 0; - } - - CosNotification::EventTypeSeq removed; - - CosNotification::EventTypeSeq added (0); - added.length (0); - - // unsubscribe it to our current subscriptions. - removed.length (this->subscription_list_.size ()); - - this->subscription_list_.populate (removed); - - this->event_manager_->subscribe_for_events (this, - added, removed ACE_ENV_ARG_PARAMETER); - ACE_CHECK; - - this->event_manager_->unregister_from_publication_updates (this ACE_ENV_ARG_PARAMETER); - ACE_CHECK; - - // shutdown the tasks. - - this->dispatching_task_->shutdown (ACE_ENV_SINGLE_ARG_PARAMETER); - ACE_CHECK; - - this->filter_eval_task_->shutdown (ACE_ENV_SINGLE_ARG_PARAMETER); - ACE_CHECK; - - // Get hold of the admin properties. - TAO_Notify_AdminProperties* const admin_properties = - this->event_manager_->admin_properties (); - - (*(admin_properties->consumers ()))--; -} - -template <class SERVANT_TYPE> void -TAO_Notify_ProxySupplier<SERVANT_TYPE>::suspend_connection (ACE_ENV_SINGLE_ARG_DECL_NOT_USED/*ACE_ENV_SINGLE_ARG_PARAMETER*/) - ACE_THROW_SPEC (( - CORBA::SystemException, - CosNotifyChannelAdmin::ConnectionAlreadyInactive, - CosNotifyChannelAdmin::NotConnected - )) -{ - this->is_suspended_ = 1; -} - -template <class SERVANT_TYPE> void -TAO_Notify_ProxySupplier<SERVANT_TYPE>::resume_connection (ACE_ENV_SINGLE_ARG_DECL) - ACE_THROW_SPEC (( - CORBA::SystemException, - CosNotifyChannelAdmin::ConnectionAlreadyActive, - CosNotifyChannelAdmin::NotConnected - )) -{ - TAO_Notify_Event* event; - - this->is_suspended_ = 0; - - { - ACE_GUARD_THROW_EX (ACE_Lock, ace_mon, *this->lock_, - CORBA::INTERNAL ()); - ACE_CHECK; - - while (this->event_list_.dequeue_head (event) == 0) - { - this->dispatch_event_i (*event ACE_ENV_ARG_PARAMETER); - ACE_CHECK; - - delete event; - } - } -} - -template <class SERVANT_TYPE> CosNotifyChannelAdmin::ConsumerAdmin_ptr -TAO_Notify_ProxySupplier<SERVANT_TYPE>::MyAdmin (ACE_ENV_SINGLE_ARG_DECL) - ACE_THROW_SPEC (( - CORBA::SystemException - )) -{ - return this->consumer_admin_->get_ref (ACE_ENV_SINGLE_ARG_PARAMETER); -} - -template <class SERVANT_TYPE> CosNotifyFilter::MappingFilter_ptr -TAO_Notify_ProxySupplier<SERVANT_TYPE>::priority_filter (ACE_ENV_SINGLE_ARG_DECL) - ACE_THROW_SPEC (( - CORBA::SystemException - )) -{ - ACE_THROW_RETURN (CORBA::NO_IMPLEMENT (), - CosNotifyFilter::MappingFilter::_nil ()); -} - -template <class SERVANT_TYPE> void -TAO_Notify_ProxySupplier<SERVANT_TYPE>::priority_filter (CosNotifyFilter::MappingFilter_ptr /*priority_filter*/ ACE_ENV_ARG_DECL) - ACE_THROW_SPEC (( - CORBA::SystemException - )) -{ - ACE_THROW (CORBA::NO_IMPLEMENT ()); -} - -template <class SERVANT_TYPE> CosNotifyFilter::MappingFilter_ptr -TAO_Notify_ProxySupplier<SERVANT_TYPE>::lifetime_filter (ACE_ENV_SINGLE_ARG_DECL) - ACE_THROW_SPEC (( - CORBA::SystemException - )) -{ - ACE_THROW_RETURN (CORBA::NO_IMPLEMENT (), - CosNotifyFilter::MappingFilter::_nil ()); -} - -template <class SERVANT_TYPE> void -TAO_Notify_ProxySupplier<SERVANT_TYPE>::lifetime_filter (CosNotifyFilter::MappingFilter_ptr /*lifetime_filter*/ ACE_ENV_ARG_DECL) - ACE_THROW_SPEC (( - CORBA::SystemException - )) -{ - ACE_THROW (CORBA::NO_IMPLEMENT ()); -} - -template <class SERVANT_TYPE> CosNotification::EventTypeSeq* -TAO_Notify_ProxySupplier<SERVANT_TYPE>::obtain_offered_types (CosNotifyChannelAdmin::ObtainInfoMode mode ACE_ENV_ARG_DECL) - ACE_THROW_SPEC (( - CORBA::SystemException - )) -{ - CosNotification::EventTypeSeq* event_type_seq = 0; - - if (mode == CosNotifyChannelAdmin::ALL_NOW_UPDATES_OFF || - mode == CosNotifyChannelAdmin::ALL_NOW_UPDATES_ON) - { - event_type_seq = this->event_manager_->obtain_offered_types (); - } - - if (mode == CosNotifyChannelAdmin::NONE_NOW_UPDATES_ON || - mode == CosNotifyChannelAdmin::ALL_NOW_UPDATES_ON) - { - // if updates are currently off, switch them on. - if (this->updates_on_ == 0) - this->event_manager_->register_for_publication_updates (this - ACE_ENV_ARG_PARAMETER); - } - else - { - // if updates are currently on, switch them off. - if (this->updates_on_ == 1) - this->event_manager_->unregister_from_publication_updates (this - ACE_ENV_ARG_PARAMETER); - } - return event_type_seq; -} - -template <class SERVANT_TYPE> void -TAO_Notify_ProxySupplier<SERVANT_TYPE>::set_qos ( - const CosNotification::QoSProperties & qos - ACE_ENV_ARG_DECL) - ACE_THROW_SPEC (( - CORBA::SystemException, - CosNotification::UnsupportedQoS - )) -{ - // Call our base class set_qos (). - TAO_Notify_Proxy<SERVANT_TYPE>::set_qos (qos ACE_ENV_ARG_PARAMETER); - ACE_CHECK; - - // Then update our task's qos - if (this->dispatching_task_ != 0) - { - this->dispatching_task_->update_qos (this->qos_admin_); - } - if (this->filter_eval_task_ != 0) - { - this->filter_eval_task_->update_qos (this->qos_admin_); - } -} - - -#endif /* TAO_NOTIFY_PROXYSUPPLIER_T_C */ diff --git a/TAO/orbsvcs/orbsvcs/Notify/Notify_ProxySupplier_T.h b/TAO/orbsvcs/orbsvcs/Notify/Notify_ProxySupplier_T.h deleted file mode 100644 index e314a742b6c..00000000000 --- a/TAO/orbsvcs/orbsvcs/Notify/Notify_ProxySupplier_T.h +++ /dev/null @@ -1,189 +0,0 @@ -/** - * @file Notify_ProxySupplier_T.h - * - * $Id$ - * - * Template Base class for all Proxy Suppliers. - * - * @author Pradeep Gore <pradeep@cs.wustl.edu> - */ - -#ifndef TAO_NOTIFY_PROXY_SUPPLIER_T_H -#define TAO_NOTIFY_PROXY_SUPPLIER_T_H -#include "ace/pre.h" - -#include "Notify_Proxy_T.h" -#include "Notify_Collection.h" - -class TAO_Notify_ConsumerAdmin_i; - -#if defined (_MSC_VER) -#if (_MSC_VER >= 1200) -#pragma warning (push) -#endif /* _MSC_VER >= 1200 */ -#pragma warning (disable:4250) -#endif /* _MSC_VER */ - -/** - * @class TAO_Notify_ProxySupplier - * - * @brief TAO_Notify_ProxySupplier - * - * The is a base class for all proxy suppliers. - */ -template <class SERVANT_TYPE> -class TAO_Notify_Export TAO_Notify_ProxySupplier : public TAO_Notify_Proxy <SERVANT_TYPE>, virtual public TAO_Notify_EventListener -{ - -public: - /// Constructor - TAO_Notify_ProxySupplier (TAO_Notify_ConsumerAdmin_i* consumeradmin); - - /// Destructor - virtual ~TAO_Notify_ProxySupplier (void); - - /// Init the Proxy. - void init (CosNotifyChannelAdmin::ProxyID myID ACE_ENV_ARG_DECL); - - // = Notify_Event_Listener methods - virtual void dispatch_event (TAO_Notify_Event &event ACE_ENV_ARG_DECL); - - virtual CORBA::Boolean evaluate_filter (TAO_Notify_Event &event, CORBA::Boolean eval_parent ACE_ENV_ARG_DECL); - - /// The Worker task associated with the event listener for event dispatching - virtual TAO_Notify_Worker_Task* event_dispatch_task (void); - - /// The Worker task associated with the event listener for filter evaluation. - virtual TAO_Notify_Worker_Task* filter_eval_task (void); - - // = Interface methods - virtual CosNotifyChannelAdmin::ConsumerAdmin_ptr MyAdmin ( - ACE_ENV_SINGLE_ARG_DECL - ) - ACE_THROW_SPEC (( - CORBA::SystemException - )); - - virtual void suspend_connection ( - ACE_ENV_SINGLE_ARG_DECL - ) - ACE_THROW_SPEC (( - CORBA::SystemException, - CosNotifyChannelAdmin::ConnectionAlreadyInactive, - CosNotifyChannelAdmin::NotConnected - )); - - virtual void resume_connection ( - ACE_ENV_SINGLE_ARG_DECL - ) - ACE_THROW_SPEC (( - CORBA::SystemException, - CosNotifyChannelAdmin::ConnectionAlreadyActive, - CosNotifyChannelAdmin::NotConnected - )); - - virtual CosNotifyFilter::MappingFilter_ptr priority_filter ( - ACE_ENV_SINGLE_ARG_DECL - ) - ACE_THROW_SPEC (( - CORBA::SystemException - )); - - virtual void priority_filter ( - CosNotifyFilter::MappingFilter_ptr priority_filter - ACE_ENV_ARG_DECL - ) - ACE_THROW_SPEC (( - CORBA::SystemException - )); - - virtual CosNotifyFilter::MappingFilter_ptr lifetime_filter ( - ACE_ENV_SINGLE_ARG_DECL - ) - ACE_THROW_SPEC (( - CORBA::SystemException - )); - - virtual void lifetime_filter ( - CosNotifyFilter::MappingFilter_ptr lifetime_filter - ACE_ENV_ARG_DECL - ) - ACE_THROW_SPEC (( - CORBA::SystemException - )); - - virtual CosNotification::EventTypeSeq * obtain_offered_types ( - CosNotifyChannelAdmin::ObtainInfoMode mode - ACE_ENV_ARG_DECL - ) - ACE_THROW_SPEC (( - CORBA::SystemException - )); - - virtual void subscription_change ( - const CosNotification::EventTypeSeq & added, - const CosNotification::EventTypeSeq & removed - ACE_ENV_ARG_DECL - ) - ACE_THROW_SPEC (( - CORBA::SystemException, - CosNotifyComm::InvalidEventType - )); - - // override the set_qos that comes from TAO_Notify_Proxy - // so we can update the qos on our tasks. - virtual void set_qos ( - const CosNotification::QoSProperties & qos - ACE_ENV_ARG_DECL - ) - ACE_THROW_SPEC (( - CORBA::SystemException, - CosNotification::UnsupportedQoS - )); - - protected: - // = Helper methods - /// Derived classes should implement this. - virtual void dispatch_event_i (TAO_Notify_Event &event ACE_ENV_ARG_DECL) = 0; - - /// Derived classes should call this when their consumers connect. - void on_connected (ACE_ENV_SINGLE_ARG_DECL); - - /// Derived classes should call this when their consumers disconnect. - void on_disconnected (ACE_ENV_SINGLE_ARG_DECL); - - // = Data members - /// My parent consumer admin. - TAO_Notify_ConsumerAdmin_i* consumer_admin_; - - /// A list of event types that we are interested in. - TAO_Notify_EventType_List subscription_list_; - - /// True if we are connected to a consumer and suspended. - CORBA::Boolean is_suspended_; - - /// A list of events populated when we're suspended. - typedef ACE_Unbounded_Queue<TAO_Notify_Event*> TAO_Notify_Event_List; - TAO_Notify_Event_List event_list_; - - /// The dispatching task to send events to a listener group affiliated with this listener. - TAO_Notify_Worker_Task* dispatching_task_; - - /// The filter evaluation task for this listener. - TAO_Notify_Worker_Task* filter_eval_task_; -}; - -#if defined (ACE_TEMPLATES_REQUIRE_SOURCE) -#include "Notify_ProxySupplier_T.cpp" -#endif /* ACE_TEMPLATES_REQUIRE_SOURCE */ - -#if defined (ACE_TEMPLATES_REQUIRE_PRAGMA) -#pragma implementation ("Notify_ProxySupplier_T.cpp") -#endif /* ACE_TEMPLATES_REQUIRE_PRAGMA */ - -#if defined (_MSC_VER) && (_MSC_VER >= 1200) -#pragma warning (pop) -#endif /* _MSC_VER */ - -#include "ace/post.h" -#endif /* TAO_NOTIFY_PROXY_SUPPLIER_T_H */ diff --git a/TAO/orbsvcs/orbsvcs/Notify/Notify_Proxy_T.cpp b/TAO/orbsvcs/orbsvcs/Notify/Notify_Proxy_T.cpp deleted file mode 100644 index 690b25585e7..00000000000 --- a/TAO/orbsvcs/orbsvcs/Notify/Notify_Proxy_T.cpp +++ /dev/null @@ -1,195 +0,0 @@ -// $Id$ - -#ifndef TAO_NOTIFY_PROXY_T_C -#define TAO_NOTIFY_PROXY_T_C - -#include "Notify_Proxy_T.h" -#include "Notify_Event_Manager.h" - -#include "tao/debug.h" - -ACE_RCSID(Notify, Notify_Proxy_T, "$Id$") - -template <class SERVANT_TYPE> -TAO_Notify_Proxy<SERVANT_TYPE>::TAO_Notify_Proxy (void) - :lock_ (0), - refcount_ (1), - is_connected_ (0), - updates_on_ (1) -{ - // No-Op. -} - -// Implementation skeleton destructor -template <class SERVANT_TYPE> -TAO_Notify_Proxy<SERVANT_TYPE>::~TAO_Notify_Proxy (void) -{ - if (TAO_debug_level > 0) - ACE_DEBUG ((LM_DEBUG, "in ~TAO_Notify_Proxy\n")); -} - -template <class SERVANT_TYPE> CORBA::ULong -TAO_Notify_Proxy<SERVANT_TYPE>::_incr_refcnt (void) -{ - ACE_GUARD_RETURN (ACE_Lock, ace_mon, *this->lock_, 0); - return this->refcount_++; -} - -template <class SERVANT_TYPE> CORBA::ULong -TAO_Notify_Proxy<SERVANT_TYPE>::_decr_refcnt (void) -{ - { - ACE_GUARD_RETURN (ACE_Lock, ace_mon, *this->lock_, 0); - this->refcount_--; - if (this->refcount_ != 0) - return this->refcount_; - } - - delete this; - return 0; -} - -template <class SERVANT_TYPE> void -TAO_Notify_Proxy<SERVANT_TYPE>::_add_ref (ACE_ENV_SINGLE_ARG_DECL_NOT_USED/*ACE_ENV_SINGLE_ARG_PARAMETER*/) -{ - this->_incr_refcnt (); -} - -template <class SERVANT_TYPE> void -TAO_Notify_Proxy<SERVANT_TYPE>::_remove_ref (ACE_ENV_SINGLE_ARG_DECL_NOT_USED/*ACE_ENV_SINGLE_ARG_PARAMETER*/) -{ - this->_decr_refcnt (); -} - -template <class SERVANT_TYPE> void -TAO_Notify_Proxy<SERVANT_TYPE>::dispatch_update (TAO_Notify_EventType_List& added_list, TAO_Notify_EventType_List& removed_list ACE_ENV_ARG_DECL) -{ - CosNotification::EventTypeSeq added (added_list.size ()); - CosNotification::EventTypeSeq removed (removed_list.size ()); - - added_list.populate (added); - removed_list.populate (removed); - - this->dispatch_update_i (added, removed ACE_ENV_ARG_PARAMETER); -} - -template <class SERVANT_TYPE> CosNotifyChannelAdmin::ProxyType -TAO_Notify_Proxy<SERVANT_TYPE>::MyType (ACE_ENV_SINGLE_ARG_DECL_NOT_USED/*ACE_ENV_SINGLE_ARG_PARAMETER*/) - ACE_THROW_SPEC (( - CORBA::SystemException - )) -{ - return proxy_type_; -} - -template <class SERVANT_TYPE> void -TAO_Notify_Proxy<SERVANT_TYPE>::validate_event_qos (const CosNotification::QoSProperties & /*required_qos*/, CosNotification::NamedPropertyRangeSeq_out /*available_qos*/ ACE_ENV_ARG_DECL) - ACE_THROW_SPEC (( - CORBA::SystemException, - CosNotification::UnsupportedQoS - )) -{ - ACE_THROW (CORBA::NO_IMPLEMENT ()); -} - -template <class SERVANT_TYPE> CosNotification::QoSProperties* -TAO_Notify_Proxy<SERVANT_TYPE>::get_qos (ACE_ENV_SINGLE_ARG_DECL) - ACE_THROW_SPEC (( - CORBA::SystemException - )) -{ - return this->qos_admin_.get_qos (ACE_ENV_SINGLE_ARG_PARAMETER); -} - -template <class SERVANT_TYPE> void -TAO_Notify_Proxy<SERVANT_TYPE>::set_qos (const CosNotification::QoSProperties & qos ACE_ENV_ARG_DECL) - ACE_THROW_SPEC (( - CORBA::SystemException, - CosNotification::UnsupportedQoS - )) -{ - this->qos_admin_.set_qos (qos ACE_ENV_ARG_PARAMETER); - ACE_CHECK; - - this->setup_qos_policies (ACE_ENV_SINGLE_ARG_PARAMETER); - ACE_CHECK; -} - -template <class SERVANT_TYPE> void -TAO_Notify_Proxy<SERVANT_TYPE>::validate_qos ( - const CosNotification::QoSProperties & required_qos, - CosNotification::NamedPropertyRangeSeq_out available_qos - ACE_ENV_ARG_DECL - ) - ACE_THROW_SPEC (( - CORBA::SystemException, - CosNotification::UnsupportedQoS - )) -{ - this->qos_admin_.validate_qos (required_qos, available_qos ACE_ENV_ARG_PARAMETER); -} - -template <class SERVANT_TYPE> CosNotifyFilter::FilterID -TAO_Notify_Proxy<SERVANT_TYPE>::add_filter (CosNotifyFilter::Filter_ptr new_filter ACE_ENV_ARG_DECL) - ACE_THROW_SPEC (( - CORBA::SystemException - )) -{ - return this->filter_admin_.add_filter (new_filter ACE_ENV_ARG_PARAMETER); -} - -template <class SERVANT_TYPE> void -TAO_Notify_Proxy<SERVANT_TYPE>::remove_filter ( - CosNotifyFilter::FilterID filter - ACE_ENV_ARG_DECL - ) - ACE_THROW_SPEC (( - CORBA::SystemException, - CosNotifyFilter::FilterNotFound - )) -{ - this->filter_admin_.remove_filter (filter ACE_ENV_ARG_PARAMETER); -} - -template <class SERVANT_TYPE> CosNotifyFilter::Filter_ptr -TAO_Notify_Proxy<SERVANT_TYPE>::get_filter (CosNotifyFilter::FilterID filter ACE_ENV_ARG_DECL) - ACE_THROW_SPEC (( - CORBA::SystemException, - CosNotifyFilter::FilterNotFound - )) -{ - return this->filter_admin_.get_filter (filter ACE_ENV_ARG_PARAMETER); -} - -template <class SERVANT_TYPE> CosNotifyFilter::FilterIDSeq* -TAO_Notify_Proxy<SERVANT_TYPE>::get_all_filters (ACE_ENV_SINGLE_ARG_DECL) - ACE_THROW_SPEC (( - CORBA::SystemException - )) -{ - return this->filter_admin_.get_all_filters (ACE_ENV_SINGLE_ARG_PARAMETER); -} - -template <class SERVANT_TYPE> void -TAO_Notify_Proxy<SERVANT_TYPE>::remove_all_filters (ACE_ENV_SINGLE_ARG_DECL) - ACE_THROW_SPEC (( - CORBA::SystemException - )) -{ - this->filter_admin_.remove_all_filters (ACE_ENV_SINGLE_ARG_PARAMETER); -} - -template <class SERVANT_TYPE> const TAO_Notify_QoSAdmin_i& -TAO_Notify_Proxy<SERVANT_TYPE>::qos_admin (void) const -{ - return this->qos_admin_; -} - -template <class SERVANT_TYPE> void -TAO_Notify_Proxy<SERVANT_TYPE>::setup_qos_policies ( - ACE_ENV_SINGLE_ARG_DECL) -{ - this->filter_admin_.remove_all_filters (ACE_ENV_SINGLE_ARG_PARAMETER); -} - -#endif /* TAO_NOTIFY_PROXY_T_C */ diff --git a/TAO/orbsvcs/orbsvcs/Notify/Notify_Proxy_T.h b/TAO/orbsvcs/orbsvcs/Notify/Notify_Proxy_T.h deleted file mode 100644 index 6b1b7b1c95f..00000000000 --- a/TAO/orbsvcs/orbsvcs/Notify/Notify_Proxy_T.h +++ /dev/null @@ -1,211 +0,0 @@ -//============================================================================= -/** - * @file Notify_Proxy_T.h - * - * $Id$ - * - * Template Base class for all Proxys. - * - * @author Pradeep Gore <pradeep@cs.wustl.edu> - */ -//============================================================================= - -#ifndef TAO_NOTIFY_PROXY_T_H -#define TAO_NOTIFY_PROXY_T_H -#include "ace/pre.h" -#include "ace/Containers_T.h" - -#if !defined (ACE_LACKS_PRAGMA_ONCE) -#pragma once -#endif /* ACE_LACKS_PRAGMA_ONCE */ - -#include "orbsvcs/CosNotifyChannelAdminS.h" -#include "orbsvcs/CosNotificationS.h" -#include "Notify_QoSAdmin_i.h" -#include "Notify_FilterAdmin_i.h" -#include "Notify_Listeners.h" -#include "notify_export.h" - -class TAO_Notify_Event_Manager; - -#if defined (_MSC_VER) -#if (_MSC_VER >= 1200) -#pragma warning (push) -#endif /* _MSC_VER >= 1200 */ -#pragma warning (disable:4250) -#endif /* _MSC_VER */ - -// @@ Pradeep: this is cool, deriving from the template type is really -// neat. I bet it is going to break something like 90% of the -// compilers, but they deserve it! ;-) ;-) - -/** - * @class TAO_Notify_Proxy - * - * @brief TAO_Notify_Proxy - * - * The is a base class for all proxys , templatized by the servant - * type. All the Filter Admin and QoS Admin interface methods are - * implemented here by delegating to the admin implementations. - */ -template <class SERVANT_TYPE> -class TAO_Notify_Export TAO_Notify_Proxy : public SERVANT_TYPE, virtual public TAO_Notify_UpdateListener, public PortableServer::RefCountServantBase -{ - -public: - /// Constructor - TAO_Notify_Proxy (void); - - /// Destructor - virtual ~TAO_Notify_Proxy (void); - - // = TAO_Notify_RefCounted methods - /// Increment the reference count. - CORBA::ULong _incr_refcnt (void); - - /// Decrement the reference count. - CORBA::ULong _decr_refcnt (void); - - // = The Servant methods - virtual void _add_ref (ACE_ENV_SINGLE_ARG_DECL); - virtual void _remove_ref (ACE_ENV_SINGLE_ARG_DECL); - - // = Notify_Update_Listener methods - virtual void dispatch_update (TAO_Notify_EventType_List& added_list, TAO_Notify_EventType_List& removed_list ACE_ENV_ARG_DECL); - - virtual CosNotifyChannelAdmin::ProxyType MyType ( - ACE_ENV_SINGLE_ARG_DECL - ) - ACE_THROW_SPEC (( - CORBA::SystemException - )); - - virtual void validate_event_qos ( - const CosNotification::QoSProperties & required_qos, - CosNotification::NamedPropertyRangeSeq_out available_qos - ACE_ENV_ARG_DECL - ) - ACE_THROW_SPEC (( - CORBA::SystemException, - CosNotification::UnsupportedQoS - )); - - virtual CosNotification::QoSProperties * get_qos ( - ACE_ENV_SINGLE_ARG_DECL - ) - ACE_THROW_SPEC (( - CORBA::SystemException - )); - - virtual void set_qos ( - const CosNotification::QoSProperties & qos - ACE_ENV_ARG_DECL - ) - ACE_THROW_SPEC (( - CORBA::SystemException, - CosNotification::UnsupportedQoS - )); - - virtual void validate_qos ( - const CosNotification::QoSProperties & required_qos, - CosNotification::NamedPropertyRangeSeq_out available_qos - ACE_ENV_ARG_DECL - ) - ACE_THROW_SPEC (( - CORBA::SystemException, - CosNotification::UnsupportedQoS - )); - - virtual CosNotifyFilter::FilterID add_filter ( - CosNotifyFilter::Filter_ptr new_filter - ACE_ENV_ARG_DECL - ) - ACE_THROW_SPEC (( - CORBA::SystemException - )); - - virtual void remove_filter ( - CosNotifyFilter::FilterID filter - ACE_ENV_ARG_DECL - ) - ACE_THROW_SPEC (( - CORBA::SystemException, - CosNotifyFilter::FilterNotFound - )); - - virtual CosNotifyFilter::Filter_ptr get_filter ( - CosNotifyFilter::FilterID filter - ACE_ENV_ARG_DECL - ) - ACE_THROW_SPEC (( - CORBA::SystemException, - CosNotifyFilter::FilterNotFound - )); - - virtual CosNotifyFilter::FilterIDSeq * get_all_filters ( - ACE_ENV_SINGLE_ARG_DECL - ) - ACE_THROW_SPEC (( - CORBA::SystemException - )); - - virtual void remove_all_filters ( - ACE_ENV_SINGLE_ARG_DECL - ) - ACE_THROW_SPEC (( - CORBA::SystemException - )); - - const TAO_Notify_QoSAdmin_i& qos_admin (void) const; - -protected: - /// Derived types should implement this to deliver the update. - virtual void dispatch_update_i (CosNotification::EventTypeSeq added, CosNotification::EventTypeSeq removed ACE_ENV_ARG_DECL) = 0; - - /// Derived types may implement this if they need to do something - /// directly after setting the qos policies. - virtual void setup_qos_policies (ACE_ENV_SINGLE_ARG_DECL); - - // = Data members - /// The locking strategy. - ACE_Lock* lock_; - - /// The reference count. - CORBA::ULong refcount_; - - /// What type are we? - CosNotifyChannelAdmin::ProxyType proxy_type_; - - /// Our event manager. - TAO_Notify_Event_Manager* event_manager_; - - /// True if we are connected to a consumer. - CORBA::Boolean is_connected_; - - /// True by default, for subscription/publication updates. - CORBA::Boolean updates_on_; - - /// Handle QoS admin methods. - TAO_Notify_QoSAdmin_i qos_admin_; - - /// Handles the Filter admin methods. - TAO_Notify_FilterAdmin_i filter_admin_; - - /// The ID assigned to this Proxy. - CosNotifyChannelAdmin::ProxyID proxy_id_; -}; - -#if defined (ACE_TEMPLATES_REQUIRE_SOURCE) -#include "Notify_Proxy_T.cpp" -#endif /* ACE_TEMPLATES_REQUIRE_SOURCE */ - -#if defined (ACE_TEMPLATES_REQUIRE_PRAGMA) -#pragma implementation ("Notify_Proxy_T.cpp") -#endif /* ACE_TEMPLATES_REQUIRE_PRAGMA */ - -#if defined (_MSC_VER) && (_MSC_VER >= 1200) -#pragma warning (pop) -#endif /* _MSC_VER */ - -#include "ace/post.h" -#endif /* TAO_NOTIFY_PROXY_T_H */ diff --git a/TAO/orbsvcs/orbsvcs/Notify/Notify_QoSAdmin_i.cpp b/TAO/orbsvcs/orbsvcs/Notify/Notify_QoSAdmin_i.cpp deleted file mode 100644 index 97287df8c1d..00000000000 --- a/TAO/orbsvcs/orbsvcs/Notify/Notify_QoSAdmin_i.cpp +++ /dev/null @@ -1,244 +0,0 @@ -/* -*- C++ -*- $Id$ */ - -#include "Notify_QoSAdmin_i.h" -#include "Notify_Extensions.h" - -#if !defined (__ACE_INLINE__) -#include "Notify_QoSAdmin_i.inl" -#endif /* __ACE_INLINE__ */ - -ACE_RCSID(Notify, Notify_QoSAdmin_i, "$Id$") - -// Implementation skeleton constructor -TAO_Notify_QoSAdmin_i::TAO_Notify_QoSAdmin_i (void) - :event_reliability_ (CosNotification::BestEffort), - event_reliability_set_ (0), - connection_reliability_ (CosNotification::BestEffort), - connection_reliability_set_ (0), - priority_ (CosNotification::DefaultPriority), - priority_set_ (0), - timeout_ (0), - timeout_set_ (0), - start_time_supported_ (0), - start_time_supported_set_ (0), - stop_time_supported_ (0), - stop_time_supported_set_ (0), - max_events_per_consumer_ (0), - max_events_per_consumer_set_ (0), - order_policy_ (CosNotification::AnyOrder), - order_policy_set_ (0), - discard_policy_ (CosNotification::AnyOrder), - discard_policy_set_ (0), - maximum_batch_size_ (1), - maximum_batch_size_set_ (0), - pacing_interval_ (0), - pacing_interval_set_ (0), - blocking_timeout_ (0), - blocking_timeout_set_ (0) -{ -} - -// Implementation skeleton destructor -TAO_Notify_QoSAdmin_i::~TAO_Notify_QoSAdmin_i (void) -{ -} - -CosNotification::QoSProperties * TAO_Notify_QoSAdmin_i::get_qos ( - ACE_ENV_SINGLE_ARG_DECL - ) - ACE_THROW_SPEC (( - CORBA::SystemException - )) -{ - static const unsigned int property_count = 12; - CosNotification::QoSProperties_var properties; - ACE_NEW_THROW_EX (properties, - CosNotification::AdminProperties (property_count), - CORBA::NO_MEMORY ()); - - properties->length (property_count); - unsigned int index = 0; - - if (this->event_reliability_set_) - { - (*properties)[index].name = - CORBA::string_dup (CosNotification::EventReliability); - (*properties)[index++].value <<= this->event_reliability_; - } - if (this->connection_reliability_set_) - { - (*properties)[index].name = - CORBA::string_dup (CosNotification::ConnectionReliability); - (*properties)[index++].value <<= this->connection_reliability_; - } - if (this->priority_set_) - { - (*properties)[index].name = - CORBA::string_dup (CosNotification::Priority); - (*properties)[index++].value <<= this->priority_; - } - if (this->timeout_set_) - { - (*properties)[index].name = - CORBA::string_dup (CosNotification::Timeout); - (*properties)[index++].value <<= this->timeout_; - } - if (this->blocking_timeout_set_) - { - (*properties)[index].name = - CORBA::string_dup (TAO_Notify_Extensions::BlockingPolicy); - (*properties)[index++].value <<= this->blocking_timeout_; - } - if (this->start_time_supported_set_) - { - (*properties)[index].name = - CORBA::string_dup (CosNotification::StartTimeSupported); - (*properties)[index++].value <<= CORBA::Any::from_boolean ( - this->start_time_supported_); - } - if (this->stop_time_supported_set_) - { - (*properties)[index].name = - CORBA::string_dup (CosNotification::StopTimeSupported); - (*properties)[index++].value <<= CORBA::Any::from_boolean ( - this->stop_time_supported_); - } - if (this->max_events_per_consumer_set_) - { - (*properties)[index].name = - CORBA::string_dup (CosNotification::MaxEventsPerConsumer); - (*properties)[index++].value <<= this->max_events_per_consumer_; - } - if (this->order_policy_set_) - { - (*properties)[index].name = - CORBA::string_dup (CosNotification::OrderPolicy); - (*properties)[index++].value <<= this->order_policy_; - } - if (this->discard_policy_set_) - { - (*properties)[index].name = - CORBA::string_dup (CosNotification::DiscardPolicy); - (*properties)[index++].value <<= this->discard_policy_; - } - if (this->maximum_batch_size_set_) - { - (*properties)[index].name = - CORBA::string_dup (CosNotification::MaximumBatchSize); - (*properties)[index++].value <<= this->maximum_batch_size_; - } - if (this->pacing_interval_set_) - { - (*properties)[index].name = - CORBA::string_dup (CosNotification::PacingInterval); - (*properties)[index++].value <<= this->pacing_interval_; - } - - // Set the length - properties->length (index); - - return properties._retn (); -} - -void -TAO_Notify_QoSAdmin_i::set_qos (const CosNotification::QoSProperties & qos - ACE_ENV_ARG_DECL - ) - ACE_THROW_SPEC (( - CORBA::SystemException, - CosNotification::UnsupportedQoS - )) -{ - for (CORBA::ULong index = 0; index < qos.length (); ++index) - { - ACE_CString property_name (qos[index].name); - - if (property_name.compare (CosNotification::EventReliability) == 0) - { - CosNotification::PropertyErrorSeq err_seq (1); - err_seq.length (1); - - err_seq[0].code = CosNotification::UNSUPPORTED_PROPERTY; - err_seq[0].name = CORBA::string_dup (CosNotification::EventReliability); - - this->event_reliability_set_ = 1; - ACE_THROW (CosNotification::UnsupportedQoS (err_seq)); - } - else if (property_name.compare (CosNotification::ConnectionReliability) == 0) - { - CosNotification::PropertyErrorSeq err_seq (1); - err_seq.length (1); - - err_seq[0].code = CosNotification::UNSUPPORTED_PROPERTY; - err_seq[0].name = CORBA::string_dup (CosNotification::ConnectionReliability); - - this->connection_reliability_set_ = 1; - ACE_THROW (CosNotification::UnsupportedQoS (err_seq)); - } - else if (property_name.compare (CosNotification::Priority) == 0) - { - qos[index].value >>= this->priority_; - this->priority_set_ = 1; - } - else if (property_name.compare (CosNotification::Timeout) == 0) - { - qos[index].value >>= this->timeout_; - this->timeout_set_ = 1; - } - else if (property_name.compare (TAO_Notify_Extensions::BlockingPolicy) == 0) - { - qos[index].value >>= this->blocking_timeout_; - this->blocking_timeout_set_ = 1; - } - else if (property_name.compare (CosNotification::StartTimeSupported) == 0) - { - qos[index].value >>= CORBA::Any::to_boolean (this->start_time_supported_); - this->start_time_supported_set_ = 1; - } - else if (property_name.compare (CosNotification::StopTimeSupported) == 0) - { - qos[index].value >>= CORBA::Any::to_boolean (this->stop_time_supported_); - this->stop_time_supported_set_ = 1; - } - else if (property_name.compare (CosNotification::MaxEventsPerConsumer) == 0) - { - qos[index].value >>= this->max_events_per_consumer_; - this->max_events_per_consumer_set_ = 1; - } - else if (property_name.compare (CosNotification::OrderPolicy) == 0) - { - qos[index].value >>= this->order_policy_; - this->order_policy_set_ = 1; - } - else if (property_name.compare (CosNotification::DiscardPolicy) == 0) - { - qos[index].value >>= this->discard_policy_; - this->discard_policy_set_ = 1; - } - else if (property_name.compare (CosNotification::MaximumBatchSize) == 0) - { - qos[index].value >>= this->maximum_batch_size_; - this->maximum_batch_size_set_ = 1; - } - else if (property_name.compare (CosNotification::PacingInterval) == 0) - { - qos[index].value >>= this->pacing_interval_; - this->pacing_interval_set_ = 1; - } - } -} - -void -TAO_Notify_QoSAdmin_i::validate_qos ( - const CosNotification::QoSProperties & /*required_qos*/, - CosNotification::NamedPropertyRangeSeq_out /*available_qos*/ - ACE_ENV_ARG_DECL_NOT_USED //ACE_ENV_SINGLE_ARG_PARAMETER - ) - ACE_THROW_SPEC (( - CORBA::SystemException, - CosNotification::UnsupportedQoS - )) -{ - //Add your implementation here - return; -} diff --git a/TAO/orbsvcs/orbsvcs/Notify/Notify_QoSAdmin_i.h b/TAO/orbsvcs/orbsvcs/Notify/Notify_QoSAdmin_i.h deleted file mode 100644 index 23e631f47a9..00000000000 --- a/TAO/orbsvcs/orbsvcs/Notify/Notify_QoSAdmin_i.h +++ /dev/null @@ -1,137 +0,0 @@ -/* -*- C++ -*- */ -//============================================================================= -/** - * @file Notify_QoSAdmin_i.h - * - * $Id$ - * - * Implements get/set methods for QoS properties. - * - * - * @author Pradeep Gore <pradeep@cs.wustl.edu> - */ -//============================================================================= - -#ifndef TAO_NOTIFY_QOSADMIN_I_H -#define TAO_NOTIFY_QOSADMIN_I_H -#include "ace/pre.h" - -#include "orbsvcs/CosNotificationC.h" -#include "orbsvcs/TimeBaseC.h" - -#include "notify_export.h" - -#if !defined (ACE_LACKS_PRAGMA_ONCE) -# pragma once -#endif /* ACE_LACKS_PRAGMA_ONCE */ - -/** - * @class TAO_Notify_QoSAdmin_i - * - * @brief TAO_Notify_QoSAdmin_i - * - */ -class TAO_Notify_Export TAO_Notify_QoSAdmin_i -{ -public: - /// Constructor - TAO_Notify_QoSAdmin_i (void); - - /// Destructor - virtual ~TAO_Notify_QoSAdmin_i (void); - - virtual CosNotification::QoSProperties * get_qos ( - ACE_ENV_SINGLE_ARG_DECL - ) - ACE_THROW_SPEC (( - CORBA::SystemException - )); - - virtual void set_qos ( - const CosNotification::QoSProperties & qos - ACE_ENV_ARG_DECL - ) - ACE_THROW_SPEC (( - CORBA::SystemException, - CosNotification::UnsupportedQoS - )); - - virtual void validate_qos ( - const CosNotification::QoSProperties & required_qos, - CosNotification::NamedPropertyRangeSeq_out available_qos - ACE_ENV_ARG_DECL - ) - ACE_THROW_SPEC (( - CORBA::SystemException, - CosNotification::UnsupportedQoS - )); - - // Accessors - CORBA::Long maximum_batch_size (void) const; - TimeBase::TimeT pacing_interval (void) const; - -protected: - // = QoS Properties - CORBA::Short event_reliability_; - CORBA::Boolean event_reliability_set_; - - /// Reliability properties (to be implemented "later"). - CORBA::Short connection_reliability_; - CORBA::Boolean connection_reliability_set_; - - /// Priority for the event - CORBA::Short priority_; - CORBA::Boolean priority_set_; - - /// Earliest delivery time - /* - TimeBase::UtcT start_time_; - - TimeBase::UtcT stop_time_; - - */ - - /// Expiry time - TimeBase::TimeT timeout_; - CORBA::Boolean timeout_set_; - - CORBA::Boolean start_time_supported_; - CORBA::Boolean start_time_supported_set_; - - /// Are start/stop times supported - CORBA::Boolean stop_time_supported_; - CORBA::Boolean stop_time_supported_set_; - - /// Max events allowed to be queued on behalf of a consumer - CORBA::Long max_events_per_consumer_; - CORBA::Boolean max_events_per_consumer_set_; - - /// Order of events in internal buffers. - CORBA::Short order_policy_; - CORBA::Boolean order_policy_set_; - - /// Policy to discard when buffers are full. - CORBA::Short discard_policy_; - CORBA::Boolean discard_policy_set_; - - /// Batch size for sequences of structured events. - CORBA::Long maximum_batch_size_; - CORBA::Boolean maximum_batch_size_set_; - - /// Max. period of time that events are collected before delivering - /// them as a sequence of structured events. - TimeBase::TimeT pacing_interval_; - CORBA::Boolean pacing_interval_set_; - - // TAO Specific QoS Properties - /// - TimeBase::TimeT blocking_timeout_; - CORBA::Boolean blocking_timeout_set_; -}; - -#if defined (__ACE_INLINE__) -#include "Notify_QoSAdmin_i.inl" -#endif /* __ACE_INLINE__ */ - -#include "ace/post.h" -#endif /* TAO_NOTIFY_QOSADMIN_I_H */ diff --git a/TAO/orbsvcs/orbsvcs/Notify/Notify_QoSAdmin_i.inl b/TAO/orbsvcs/orbsvcs/Notify/Notify_QoSAdmin_i.inl deleted file mode 100644 index 734d2421279..00000000000 --- a/TAO/orbsvcs/orbsvcs/Notify/Notify_QoSAdmin_i.inl +++ /dev/null @@ -1,16 +0,0 @@ -//$Id$ - -ACE_INLINE CORBA::Long -TAO_Notify_QoSAdmin_i::maximum_batch_size (void) const -{ - return this->maximum_batch_size_; -} - - -ACE_INLINE TimeBase::TimeT -TAO_Notify_QoSAdmin_i::pacing_interval (void) const -{ - return this->pacing_interval_; -} - - diff --git a/TAO/orbsvcs/orbsvcs/Notify/Notify_SequenceProxyPushConsumer_i.cpp b/TAO/orbsvcs/orbsvcs/Notify/Notify_SequenceProxyPushConsumer_i.cpp deleted file mode 100644 index d85cb9f24b3..00000000000 --- a/TAO/orbsvcs/orbsvcs/Notify/Notify_SequenceProxyPushConsumer_i.cpp +++ /dev/null @@ -1,135 +0,0 @@ -/* -*- C++ -*- */ -// $Id$ - -#include "Notify_SequenceProxyPushConsumer_i.h" -#include "Notify_Event_Manager.h" -#include "Notify_SupplierAdmin_i.h" -#include "Notify_StructuredEvents.h" - -ACE_RCSID(Notify, Notify_SequenceProxyPushConsumer_i, "$Id$") - -typedef ACE_Reverse_Lock<ACE_Lock> TAO_Notify_Unlock; - -TAO_Notify_SequenceProxyPushConsumer_i::TAO_Notify_SequenceProxyPushConsumer_i (TAO_Notify_SupplierAdmin_i* supplier_admin) - : proxy_inherited (supplier_admin) -{ -} - -TAO_Notify_SequenceProxyPushConsumer_i::~TAO_Notify_SequenceProxyPushConsumer_i (void) -{ -} - -void -TAO_Notify_SequenceProxyPushConsumer_i::connect_sequence_push_supplier (CosNotifyComm::SequencePushSupplier_ptr push_supplier ACE_ENV_ARG_DECL) - ACE_THROW_SPEC (( - CORBA::SystemException, - CosEventChannelAdmin::AlreadyConnected - )) -{ - // @@ Pradeep: here is another example on code that is not thread - // safe, i know you are post-poning the thread safety issues, but it - // is not that easy! - - ACE_GUARD_THROW_EX (ACE_Lock, ace_mon, *this->lock_, - CORBA::INTERNAL ()); - ACE_CHECK; - - if (this->is_connected_ == 1) - ACE_THROW (CosEventChannelAdmin::AlreadyConnected ()); - else - this->push_supplier_ = - CosNotifyComm::SequencePushSupplier::_duplicate (push_supplier); - - this->is_connected_ = 1; - - ACE_TRY - { - TAO_Notify_Unlock reverse_lock (*this->lock_); - - { - ACE_GUARD_THROW_EX (TAO_Notify_Unlock, ace_mon, reverse_lock, - CORBA::INTERNAL ()); - ACE_TRY_CHECK; - - this->on_connected (ACE_ENV_SINGLE_ARG_PARAMETER); - ACE_TRY_CHECK; - } - } - ACE_CATCHALL - { - this->push_supplier_ = CosNotifyComm::SequencePushSupplier::_nil (); - this->is_connected_ = 0; - - ACE_RE_THROW; - } - ACE_ENDTRY; -} - -void -TAO_Notify_SequenceProxyPushConsumer_i::dispatch_update_i (CosNotification::EventTypeSeq added, CosNotification::EventTypeSeq removed ACE_ENV_ARG_DECL) -{ - ACE_TRY - { - this->push_supplier_->subscription_change (added, removed - ACE_ENV_ARG_PARAMETER); - ACE_TRY_CHECK; - } - ACE_CATCHALL - { - // misbehaving client, ignore for now. - } - ACE_ENDTRY; -} - -void -TAO_Notify_SequenceProxyPushConsumer_i::push_structured_events (const CosNotification::EventBatch & notifications ACE_ENV_ARG_DECL) - ACE_THROW_SPEC (( - CORBA::SystemException, - CosEventComm::Disconnected - )) -{ - { - ACE_GUARD_THROW_EX (ACE_Lock, ace_mon, *this->lock_, - CORBA::INTERNAL ()); - ACE_CHECK; - - if (this->is_connected_ == 0) - ACE_THROW (CosEventComm::Disconnected ()); - } - - // Pack up the nofications in a TAO_Notify_StructuredEvents - TAO_Notify_StructuredEvents* notify_events = - new TAO_Notify_StructuredEvents (notifications); - - // Send 'em out - this->event_manager_->process_event (notify_events, this ACE_ENV_ARG_PARAMETER); - ACE_CHECK; - - notify_events->_decr_refcnt (); -} - -void -TAO_Notify_SequenceProxyPushConsumer_i::disconnect_sequence_push_consumer (ACE_ENV_SINGLE_ARG_DECL) - ACE_THROW_SPEC (( - CORBA::SystemException - )) -{ - // ask our parent to deaactivate us. - this->supplier_admin_-> - deactivate_proxy_pushconsumer (this ACE_ENV_ARG_PARAMETER); - ACE_CHECK; - - this->on_disconnected (ACE_ENV_SINGLE_ARG_PARAMETER); -} - -#if defined (ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION) - -template class TAO_Notify_ProxyConsumer<POA_CosNotifyChannelAdmin::SequenceProxyPushConsumer>; -template class TAO_Notify_Proxy<POA_CosNotifyChannelAdmin::SequenceProxyPushConsumer>; - -#elif defined (ACE_HAS_TEMPLATE_INSTANTIATION_PRAGMA) - -#pragma instantiate TAO_Notify_ProxyConsumer<POA_CosNotifyChannelAdmin::SequenceProxyPushConsumer> -#pragma instantiate TAO_Notify_Proxy<POA_CosNotifyChannelAdmin::SequenceProxyPushConsumer> - -#endif /*ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION */ diff --git a/TAO/orbsvcs/orbsvcs/Notify/Notify_SequenceProxyPushConsumer_i.h b/TAO/orbsvcs/orbsvcs/Notify/Notify_SequenceProxyPushConsumer_i.h deleted file mode 100644 index dfc6c0da0af..00000000000 --- a/TAO/orbsvcs/orbsvcs/Notify/Notify_SequenceProxyPushConsumer_i.h +++ /dev/null @@ -1,93 +0,0 @@ -/* -*- C++ -*- */ -//============================================================================= -/** - * @file Notify_SequenceProxyPushConsumer_i.h - * - * $Id$ - * - * Implements the CosNotifyChannelAdmin::SequenceProxyPushConsumer - * interface. - * - * @author Pradeep Gore <pradeep@cs.wustl.edu> - */ -//============================================================================= - - -#ifndef TAO_NOTIFY_SEQUENCEPROXYPUSHCONSUMER_I_H -#define TAO_NOTIFY_SEQUENCEPROXYPUSHCONSUMER_I_H -#include "ace/pre.h" - -#include "Notify_ProxyConsumer_T.h" -#include "orbsvcs/CosNotifyChannelAdminS.h" - -class TAO_Notify_SupplierAdmin_i; - -#if defined(_MSC_VER) -#if (_MSC_VER >= 1200) -#pragma warning(push) -#endif /* _MSC_VER >= 1200 */ -#pragma warning(disable:4250) -#endif /* _MSC_VER */ - -/** - * @class TAO_Notify_SequenceProxyPushConsumer_i - * - * @brief TAO_Notify_SequenceProxyPushConsumer_i - * - * Implements CosNotifyChannelAdmin::SequenceProxyPushConsumer - */ -class TAO_Notify_Export TAO_Notify_SequenceProxyPushConsumer_i : public TAO_Notify_ProxyConsumer <POA_CosNotifyChannelAdmin::SequenceProxyPushConsumer> -{ - -public: - /// Constructor - TAO_Notify_SequenceProxyPushConsumer_i (TAO_Notify_SupplierAdmin_i* supplier_admin); - - /// Destructor - virtual ~TAO_Notify_SequenceProxyPushConsumer_i (void); - - // = interface methods - virtual void connect_sequence_push_supplier ( - CosNotifyComm::SequencePushSupplier_ptr push_supplier - ACE_ENV_ARG_DECL - ) - ACE_THROW_SPEC (( - CORBA::SystemException, - CosEventChannelAdmin::AlreadyConnected - )); - - virtual void push_structured_events ( - const CosNotification::EventBatch & notifications - ACE_ENV_ARG_DECL - ) - ACE_THROW_SPEC (( - CORBA::SystemException, - CosEventComm::Disconnected - )); - - virtual void disconnect_sequence_push_consumer ( - ACE_ENV_SINGLE_ARG_DECL - ) - ACE_THROW_SPEC (( - CORBA::SystemException - )); - -protected: - // = Helper methods - /// Sends updates to the supplier. - virtual void dispatch_update_i (CosNotification::EventTypeSeq added, CosNotification::EventTypeSeq removed ACE_ENV_ARG_DECL); - - // = Data members - /// The supplier that we're connected to. - CosNotifyComm::SequencePushSupplier_ptr push_supplier_; - -private: - typedef TAO_Notify_ProxyConsumer <POA_CosNotifyChannelAdmin::SequenceProxyPushConsumer> proxy_inherited; -}; - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -#pragma warning(pop) -#endif /* _MSC_VER */ - -#include "ace/post.h" -#endif /* TAO_NOTIFY_SEQUENCEPROXYPUSHCONSUMER_I_H */ diff --git a/TAO/orbsvcs/orbsvcs/Notify/Notify_SequenceProxyPushSupplier_i.cpp b/TAO/orbsvcs/orbsvcs/Notify/Notify_SequenceProxyPushSupplier_i.cpp deleted file mode 100644 index 68af758ef3a..00000000000 --- a/TAO/orbsvcs/orbsvcs/Notify/Notify_SequenceProxyPushSupplier_i.cpp +++ /dev/null @@ -1,276 +0,0 @@ -/* -*- C++ -*- */ -// $Id$ - -#include "Notify_SequenceProxyPushSupplier_i.h" -#include "Notify_ConsumerAdmin_i.h" -#include "Notify_StructuredEvents.h" -#include "Notify_Factory.h" -#include "Notify_Channel_Objects_Factory.h" - -#include "tao/ORB_Core.h" -#include "tao/PortableServer/Object_Adapter.h" - -ACE_RCSID(Notify, Notify_SequenceProxyPushSupplier_i, "$Id$") - -typedef ACE_Reverse_Lock<ACE_Lock> TAO_Notify_Unlock; - -TAO_Notify_SequenceProxyPushSupplier_i::TAO_Notify_SequenceProxyPushSupplier_i (TAO_Notify_ConsumerAdmin_i* consumer_admin) - : proxy_inherited (consumer_admin), - from_timeout_ (0), - reset_timeout_flag_ (0), - batch_lock_ (0) -{ -} - -TAO_Notify_SequenceProxyPushSupplier_i::~TAO_Notify_SequenceProxyPushSupplier_i (void) -{ - delete batch_lock_; -} - -void -TAO_Notify_SequenceProxyPushSupplier_i::connect_sequence_push_consumer (CosNotifyComm::SequencePushConsumer_ptr push_consumer ACE_ENV_ARG_DECL) - ACE_THROW_SPEC (( - CORBA::SystemException, - CosEventChannelAdmin::AlreadyConnected, - CosEventChannelAdmin::TypeError - )) -{ - ACE_GUARD_THROW_EX (ACE_Lock, ace_mon, *this->lock_, - CORBA::INTERNAL ()); - ACE_CHECK; - - if (CORBA::is_nil (push_consumer)) - ACE_THROW (CosEventChannelAdmin::TypeError ()); - else if (this->is_connected_ == 1) - ACE_THROW (CosEventChannelAdmin::AlreadyConnected ()); - else - { - this->push_consumer_ = - CosNotifyComm::SequencePushConsumer::_duplicate (push_consumer); - - this->is_connected_ = 1; - } - - ACE_TRY - { - TAO_Notify_Unlock reverse_lock (*this->lock_); - - { - ACE_GUARD_THROW_EX (TAO_Notify_Unlock, ace_mon, reverse_lock, - CORBA::INTERNAL ()); - ACE_CHECK; - - this->on_connected (ACE_ENV_SINGLE_ARG_PARAMETER); - ACE_TRY_CHECK; - } - } - ACE_CATCHALL - { - this->push_consumer_ = - CosNotifyComm::SequencePushConsumer::_nil (); - ACE_RE_THROW; - } - ACE_ENDTRY; -} - -void -TAO_Notify_SequenceProxyPushSupplier_i::dispatch_event_i (TAO_Notify_Event& events - ACE_ENV_ARG_DECL) -{ - // If we are in this method then we are a SequenceProxyPushSupplier - // connected up to a SequenceProxyPushConsumer and the only thing - // that events can actually be is a TAO_Notify_StructuredEvents object. - - ACE_TRY - { - // We only have a batch_lock_ if - // the PacingInterval policy was used. - if (this->batch_lock_ != 0) - { - // I don't use ACE_GUARD here, because I don't want - // to block if I can't get this lock. The timeout handler - // in the same thread would cause a deadlock. - ACE_Guard<ACE_Lock> ace_mon (*this->batch_lock_, 0); - if (ace_mon.locked () == 0) return; - - // Only set this if we have successfully obtained the lock. - // This way, if from_timeout_ is ever set to 1 it will - // only be set back to 0 if do_push () is called when timeout_ - // is set to 1 (causing the cache to be flushed). - this->reset_timeout_flag_ = 1; - events.do_push (this->push_consumer_.in (), - this->qos_admin (), - this->event_cache_, - this->from_timeout_ - ACE_ENV_ARG_PARAMETER); - } - else - { - events.do_push (this->push_consumer_.in (), - this->qos_admin (), - this->event_cache_, - this->from_timeout_ - ACE_ENV_ARG_PARAMETER); - } - ACE_TRY_CHECK; - } - ACE_CATCHALL - { - ACE_DEBUG ((LM_DEBUG, "Exception dispatching structured event\n")); - // misbehaving client, ignore for now. - } - ACE_ENDTRY; -} - -void -TAO_Notify_SequenceProxyPushSupplier_i::dispatch_update_i (CosNotification::EventTypeSeq added, CosNotification::EventTypeSeq removed ACE_ENV_ARG_DECL) -{ - ACE_TRY - { - this->push_consumer_->offer_change (added, removed ACE_ENV_ARG_PARAMETER); - ACE_TRY_CHECK; - } - ACE_CATCHALL - { - // misbehaving client, ignore for now. - } - ACE_ENDTRY; -} - -void -TAO_Notify_SequenceProxyPushSupplier_i::disconnect_sequence_push_supplier(ACE_ENV_SINGLE_ARG_DECL) - ACE_THROW_SPEC (( - CORBA::SystemException - )) -{ - this->on_disconnected (ACE_ENV_SINGLE_ARG_PARAMETER); - ACE_CHECK; - - // ask our parent to deactivate us. - this->consumer_admin_-> - deactivate_proxy_pushsupplier (this ACE_ENV_ARG_PARAMETER); -} - - -void -TAO_Notify_SequenceProxyPushSupplier_i::shutdown (ACE_ENV_SINGLE_ARG_DECL) -{ - // Tell the consumer that we're going away ... - // @@ Later, lookup a "notify_on_disconnect" option. - - { - ACE_GUARD (ACE_Lock, ace_mon, *this->lock_); - - if (this->is_connected_ == 0) - return; - } - - this->disconnect_sequence_push_supplier (ACE_ENV_SINGLE_ARG_PARAMETER); - ACE_CHECK; - - ACE_TRY - { - this->push_consumer_->disconnect_sequence_push_consumer (ACE_ENV_SINGLE_ARG_PARAMETER); - ACE_TRY_CHECK; - } - ACE_CATCHALL - { - // ignore - } - ACE_ENDTRY; -} - - -void -TAO_Notify_SequenceProxyPushSupplier_i::setup_qos_policies ( - ACE_ENV_SINGLE_ARG_DECL) -{ -# if defined (ACE_CONFIG_WIN32_H) - ACE_Time_Value interval ( - ACE_static_cast (long, this->qos_admin ().pacing_interval ())); -# else - ACE_Time_Value interval (this->qos_admin ().pacing_interval () / 1); -# endif /* ACE_CONFIG_WIN32_H */ - - if (interval != ACE_Time_Value::zero) - { - // Only create the batch_lock_ if we are going to have a timer - TAO_Notify_CO_Factory* cof = - TAO_Notify_Factory::get_channel_objects_factory (); - - this->batch_lock_ = cof->create_proxy_supplier_lock (ACE_ENV_SINGLE_ARG_PARAMETER); - ACE_CHECK; - - // Get back to the reactor to schedule the timer - TAO_POA_Current_Impl *poa_current_impl = - ACE_static_cast (TAO_POA_Current_Impl *, - TAO_TSS_RESOURCES::instance ()->poa_current_impl_); - if (poa_current_impl != 0) - { - ACE_Reactor* reactor = poa_current_impl->orb_core ().reactor (); - reactor->schedule_timer (this, 0, interval, interval); - } - else - { - ACE_ERROR ((LM_ERROR, - "(%P|%t) Unable to schedule " - "timer for the pacing interval\n")); - } - } -} - - -int -TAO_Notify_SequenceProxyPushSupplier_i::handle_timeout ( - const ACE_Time_Value& /*current_time*/, - const void* /*act*/) -{ - - ACE_TRY_NEW_ENV - { - // We don't need to bother if there is nothing in the cache - if (this->event_cache_.length () > 0) - { - // We need a TAO_Notify_StructuredEvents when we call - // dispatch_event (). It doesn't matter that there's nothing - // in it. - CosNotification::EventBatch notifications; - TAO_Notify_StructuredEvents dummy_events (notifications); - - // Set the flag saying that we are comming from the timeout. - // The worst that could happen if this is set while - // dispatch_event_i was called by the event processor is that - // the event cache will be flushed a split second before it - // normally would. - this->from_timeout_ = 1; - this->dispatch_event (dummy_events ACE_ENV_ARG_PARAMETER); - ACE_TRY_CHECK; - } - } - ACE_CATCHALL - { - ACE_DEBUG ((LM_DEBUG, "Exception dispatching handle_timeout\n")); - // We must eat the exception in this case - } - ACE_ENDTRY; - - if (this->reset_timeout_flag_) - { - this->from_timeout_ = 0; - this->reset_timeout_flag_ = 0; - } - return 0; -} - - -#if defined (ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION) - -template class TAO_Notify_ProxySupplier<POA_CosNotifyChannelAdmin::SequenceProxyPushSupplier>; -template class TAO_Notify_Proxy<POA_CosNotifyChannelAdmin::SequenceProxyPushSupplier>; - -#elif defined (ACE_HAS_TEMPLATE_INSTANTIATION_PRAGMA) - -#pragma instantiate TAO_Notify_ProxySupplier<POA_CosNotifyChannelAdmin::SequenceProxyPushSupplier> -#pragma instantiate TAO_Notify_Proxy<POA_CosNotifyChannelAdmin::SequenceProxyPushSupplier> - -#endif /*ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION */ diff --git a/TAO/orbsvcs/orbsvcs/Notify/Notify_SequenceProxyPushSupplier_i.h b/TAO/orbsvcs/orbsvcs/Notify/Notify_SequenceProxyPushSupplier_i.h deleted file mode 100644 index 794844c0826..00000000000 --- a/TAO/orbsvcs/orbsvcs/Notify/Notify_SequenceProxyPushSupplier_i.h +++ /dev/null @@ -1,110 +0,0 @@ -//============================================================================= -/** - * @file Notify_SequenceProxyPushSupplier_i.h - * - * $Id$ - * - * Implements the POA_CosNotifyChannelAdmin::SequenceProxyPushSupplier - * interface. - * - * - * @author Pradeep Gore <pradeep@cs.wustl.edu> - */ -//============================================================================= - -#ifndef TAO_NOTIFY_SEQUENCEPROXYPUSHSUPPLIER_I_H -#define TAO_NOTIFY_SEQUENCEPROXYPUSHSUPPLIER_I_H -#include "ace/pre.h" - -#include "Notify_ProxySupplier_T.h" -#include "orbsvcs/CosNotifyChannelAdminS.h" - -class TAO_Notify_ConsumerAdmin_i; - -#if defined (_MSC_VER) -#if (_MSC_VER >= 1200) -#pragma warning (push) -#endif /* _MSC_VER >= 1200 */ -#pragma warning (disable:4250) -#endif /* _MSC_VER */ - -/** - * @class TAO_Notify_SequenceProxyPushSupplier_i - * - * @brief Implements CosNotifyChannelAdmin::SequenceProxyPushSupplier. - */ -class TAO_Notify_Export TAO_Notify_SequenceProxyPushSupplier_i : public TAO_Notify_ProxySupplier<POA_CosNotifyChannelAdmin::SequenceProxyPushSupplier>, - public ACE_Event_Handler -{ - -public: - /// Constructor - TAO_Notify_SequenceProxyPushSupplier_i (TAO_Notify_ConsumerAdmin_i* consumer_admin); - - /// Destructor - virtual ~TAO_Notify_SequenceProxyPushSupplier_i (void); - - virtual void connect_sequence_push_consumer ( - CosNotifyComm::SequencePushConsumer_ptr push_consumer - ACE_ENV_ARG_DECL - ) - ACE_THROW_SPEC (( - CORBA::SystemException, - CosEventChannelAdmin::AlreadyConnected, - CosEventChannelAdmin::TypeError - )); - - // @@ Pradeep: more indentation problems.... - virtual void disconnect_sequence_push_supplier ( - ACE_ENV_SINGLE_ARG_DECL - ) - ACE_THROW_SPEC (( - CORBA::SystemException - )); - - - /// Shutdown. - virtual void shutdown (ACE_ENV_SINGLE_ARG_DECL); - -protected: - /// Deliver the event to the consumer. - virtual void dispatch_event_i (TAO_Notify_Event &event ACE_ENV_ARG_DECL); - - /// Deliver the update to the consumer. - virtual void dispatch_update_i (CosNotification::EventTypeSeq added, CosNotification::EventTypeSeq removed ACE_ENV_ARG_DECL); - - /// Do what we need to do after the qos policies are set. - void setup_qos_policies (ACE_ENV_SINGLE_ARG_DECL); - - /// When the pacing interval is used, handle_timeout () is called by - /// the reactor. - virtual int handle_timeout (const ACE_Time_Value& current_time, - const void* act = 0); - - /// The consumer that we're connect to. - CosNotifyComm::SequencePushConsumer_var push_consumer_; - -private: - typedef TAO_Notify_ProxySupplier<POA_CosNotifyChannelAdmin::SequenceProxyPushSupplier> - proxy_inherited; - - /// Cache events until maximum batch size is reached. - CosNotification::EventBatch event_cache_; - - /// Flag to specify that dispatch_event was called from the timeout - CORBA::Boolean from_timeout_; - - /// Flag to specify that dispatch_event_i was successfully called from - /// the timeout handler - CORBA::Boolean reset_timeout_flag_; - - /// Lock to synchronize the modification of event_cache_ - ACE_Lock* batch_lock_; -}; - -#if defined (_MSC_VER) && (_MSC_VER >= 1200) -#pragma warning (pop) -#endif /* _MSC_VER */ - -#include "ace/post.h" -#endif /* TAO_NOTIFY_SEQUENCEPROXYPUSHSUPPLIER_I_H */ diff --git a/TAO/orbsvcs/orbsvcs/Notify/Notify_Source_Filter_Eval_Command.cpp b/TAO/orbsvcs/orbsvcs/Notify/Notify_Source_Filter_Eval_Command.cpp deleted file mode 100644 index d3ba6f93475..00000000000 --- a/TAO/orbsvcs/orbsvcs/Notify/Notify_Source_Filter_Eval_Command.cpp +++ /dev/null @@ -1,43 +0,0 @@ -// $Id$ - -#include "Notify_Source_Filter_Eval_Command.h" -#include "Notify_Listeners.h" -#include "Notify_Lookup_Command.h" -#include "Notify_Worker_Task.h" -#include "Notify_Event.h" -#include "Notify_Event_Processor.h" - -ACE_RCSID(Notify, Notify_Source_Filter_Eval_Command, "$Id$") - -TAO_Notify_Source_Filter_Eval_Command::TAO_Notify_Source_Filter_Eval_Command (TAO_Notify_Event_Processor* event_processor, TAO_Notify_Event* event, TAO_Notify_EventSource* event_source) - :TAO_Notify_Command (event_processor, event), - event_source_ (event_source) -{ - this->event_source_->_incr_refcnt (); - this->event_->_incr_refcnt (); -} - -TAO_Notify_Source_Filter_Eval_Command::~TAO_Notify_Source_Filter_Eval_Command () -{ - this->event_source_->_decr_refcnt (); - this->event_->_decr_refcnt (); -} - -int -TAO_Notify_Source_Filter_Eval_Command::execute (ACE_ENV_SINGLE_ARG_DECL) -{ - CORBA::Boolean result = - this->event_source_->evaluate_filter (*this->event_ ACE_ENV_ARG_PARAMETER); - ACE_CHECK_RETURN (-1); - - if (result == 1) - { - this->event_processor_-> - lookup_subscriptions (this->event_, this->event_source_ ACE_ENV_ARG_PARAMETER); - ACE_CHECK_RETURN (-1); - - return 0; - } - else - return -1; -} diff --git a/TAO/orbsvcs/orbsvcs/Notify/Notify_Source_Filter_Eval_Command.h b/TAO/orbsvcs/orbsvcs/Notify/Notify_Source_Filter_Eval_Command.h deleted file mode 100644 index e5bb7e9ef9c..00000000000 --- a/TAO/orbsvcs/orbsvcs/Notify/Notify_Source_Filter_Eval_Command.h +++ /dev/null @@ -1,57 +0,0 @@ -/* -*- C++ -*- */ -//============================================================================= -/** - * @file Notify_Source_Filter_Eval_Command.h - * - * $Id$ - * - * Command object for evaluating source filter. - * - * - * @author Pradeep Gore <pradeep@cs.wustl.edu> - */ -//============================================================================= - - -#ifndef TAO_NOTIFY_SOURCE_FILTER_EVAL_COMMAND_H -#define TAO_NOTIFY_SOURCE_FILTER_EVAL_COMMAND_H - -#include "ace/pre.h" -#include "Notify_Command.h" - -#if !defined (ACE_LACKS_PRAGMA_ONCE) -# pragma once -#endif /* ACE_LACKS_PRAGMA_ONCE */ - -#include "notify_export.h" - -class TAO_Notify_Event; -class TAO_Notify_EventSource; - -/** - * @class TAO_Notify_Source_Filter_Eval_Command - * - * @brief TAO_Notify_Source_Filter_Eval_Command - * - * Command object for evaluating event source's filter. - */ -class TAO_Notify_Export TAO_Notify_Source_Filter_Eval_Command : public TAO_Notify_Command -{ -public: - // = Initialization and termination code - /// Constructor. - TAO_Notify_Source_Filter_Eval_Command (TAO_Notify_Event_Processor* event_processor, TAO_Notify_Event* event, TAO_Notify_EventSource* event_source); - - /// Destructor. - ~TAO_Notify_Source_Filter_Eval_Command (); - - /// Command callback - virtual int execute (ACE_ENV_SINGLE_ARG_DECL); - -protected: - // = Data Members - TAO_Notify_EventSource* event_source_; -}; - -#include "ace/post.h" -#endif /* TAO_NOTIFY_SOURCE_FILTER_EVAL_COMMAND_H */ diff --git a/TAO/orbsvcs/orbsvcs/Notify/Notify_StructuredEvents.cpp b/TAO/orbsvcs/orbsvcs/Notify/Notify_StructuredEvents.cpp deleted file mode 100644 index f7a3864d8e3..00000000000 --- a/TAO/orbsvcs/orbsvcs/Notify/Notify_StructuredEvents.cpp +++ /dev/null @@ -1,273 +0,0 @@ -// $Id$ -#include "Notify_StructuredEvents.h" -#include "Notify_QoSAdmin_i.h" -#include "tao/debug.h" - -ACE_RCSID (Notify, Notify_Event, "$Id$") - - -TAO_Notify_StructuredEvents::TAO_Notify_StructuredEvents ( - const CosNotification::EventBatch& notifications) - : data_ (notifications), - match_called_ (0) -{ - if (this->data_.length () > 0) - { - this->event_type_ = this->data_[0].header.fixed_header.event_type; - } - this->init_QoS (); -} - -TAO_Notify_StructuredEvents::~TAO_Notify_StructuredEvents () -{ -} - -void -TAO_Notify_StructuredEvents::init_QoS (void) -{ - if (this->data_.length () > 0) - { - CosNotification::PropertySeq& qos = this->data_[0].header.variable_header; - - for (CORBA::ULong index = 0; index < qos.length (); ++index) - { - ACE_CString property_name (qos[index].name); - - if (property_name.compare (CosNotification::Priority) == 0) - { - qos[index].value >>= this->priority_; - } - else if (property_name.compare (CosNotification::StartTime) == 0) - { - // qos[index].value >>= this->start_time_; - } - else if (property_name.compare (CosNotification::StopTime) == 0) - { - // qos[index].value >>= this->stop_time_; - } - else if (property_name.compare (CosNotification::Timeout) == 0) - { - qos[index].value >>= this->timeout_; - } - } - } -} - -TAO_Notify_Event* -TAO_Notify_StructuredEvents::clone (void) -{ - TAO_Notify_StructuredEvents* clone; - - ACE_NEW_RETURN (clone, TAO_Notify_StructuredEvents (this->data_), 0); - - return clone; -} - -void -TAO_Notify_StructuredEvents::operator=(const TAO_Notify_StructuredEvents& structured_events) -{ - if (TAO_debug_level > 0) - ACE_DEBUG ((LM_DEBUG, "In TAO_Notify_StructuredEvents::operator=\n")); - - if (this != &structured_events) - { - this->data_ = structured_events.data_; - this->matching_ = structured_events.matching_; - this->event_type_ = structured_events.event_type_; - } -} - -CORBA::Boolean -TAO_Notify_StructuredEvents::is_special_event_type (void) const -{ - return this->event_type_.is_special (); -} - -const TAO_Notify_EventType& -TAO_Notify_StructuredEvents::event_type (void) const -{ - return this->event_type_; -} - -CORBA::Boolean -TAO_Notify_StructuredEvents::do_match (CosNotifyFilter::Filter_ptr filter - ACE_ENV_ARG_DECL) -{ - if (TAO_debug_level > 0) - ACE_DEBUG ((LM_DEBUG, "Notify (%P|%t) - " - "TAO_Notify_StructuredEvents::do_match ()\n")); - - CORBA::Boolean status = 0; - CORBA::ULong index = this->matching_.length (); - CORBA::ULong length = this->data_.length (); - - for (CORBA::ULong i = 0; i < length; i++) - { - CORBA::Boolean matched = filter->match_structured (this->data_[i] - ACE_ENV_ARG_PARAMETER); - ACE_CHECK_RETURN (0); - - if (matched) - { - // Return TRUE if any event in the sequence matches - status = 1; - - // Keep track of the position within the data sequence - this->matching_.length (index + 1); - this->matching_[index++] = i; - } - } - this->match_called_ = 1; - - return status; -} - -void -TAO_Notify_StructuredEvents::do_push (CosEventComm::PushConsumer_ptr consumer - ACE_ENV_ARG_DECL) const -{ - CORBA::ULong sending_length = (this->match_called_ ? - this->matching_.length () : - this->data_.length ()); - for (CORBA::ULong i = 0; i < sending_length; i++) - { - CORBA::Any any; - any <<= this->data_[(this->match_called_ ? - this->matching_[i] : i)]; - consumer->push (any ACE_ENV_ARG_PARAMETER); - ACE_CHECK; - } -} - -void -TAO_Notify_StructuredEvents::do_push (CosNotifyComm::StructuredPushConsumer_ptr consumer - ACE_ENV_ARG_DECL) const -{ - CORBA::ULong sending_length = (this->match_called_ ? - this->matching_.length () : - this->data_.length ()); - for (CORBA::ULong i = 0; i < sending_length; i++) - { - consumer->push_structured_event (this->data_[(this->match_called_ ? - this->matching_[i] : i)] - ACE_ENV_ARG_PARAMETER); - ACE_CHECK; - } -} - -void -TAO_Notify_StructuredEvents::do_push ( - CosNotifyComm::SequencePushConsumer_ptr consumer, - const TAO_Notify_QoSAdmin_i& qos_admin, - CosNotification::EventBatch& unsent, - int flush_queue - ACE_ENV_ARG_DECL) const -{ - if (TAO_debug_level > 0) - ACE_DEBUG ((LM_DEBUG, "Notify (%P|%t) - " - "TAO_Notify_StructuredEvents::do_push with " - "flush_queue = %d\n", flush_queue)); - - CORBA::ULong unsent_length = unsent.length (); - CORBA::ULong maximum_batch_size = qos_admin.maximum_batch_size (); - CORBA::ULong sending_length = (this->match_called_ ? - this->matching_.length () : - this->data_.length ()); - CosNotification::EventBatch matched (maximum_batch_size); - - // Deal with the unsent events first - CORBA::ULong queue_size = (flush_queue && - unsent_length < maximum_batch_size ? - unsent_length : maximum_batch_size); - - while (unsent_length > 0 && unsent_length >= queue_size) - { - // We can only send queue_size at a time! - matched.length (queue_size); - - // Pack 'em up and send 'em out. - for (CORBA::ULong i = 0; i < queue_size; i++) - { - matched[i] = unsent[i]; - } - consumer->push_structured_events (matched ACE_ENV_ARG_PARAMETER); - ACE_CHECK; - - // Shift the rest of the unsent messages to the front. - // We are reusing 'matched' for this purpose. - matched.length (unsent_length - queue_size); - for (CORBA::ULong j = queue_size; j < unsent_length; j++) - { - matched[j - queue_size] = unsent[j]; - } - unsent = matched; - unsent_length -= queue_size; - - // If we are flushing the queue and we don't have enough to - // fill upto queue_size, then we need to reset queue_size to - // the size of the rest of the unsent messages. - if (flush_queue && unsent_length < queue_size) - { - queue_size = unsent_length; - } - } - - if (sending_length > 0) - { - CORBA::ULong start = 0; - if (unsent_length + sending_length >= maximum_batch_size) - { - matched = unsent; - matched.length (maximum_batch_size); - - // Add to the matched sequence until we are full - CORBA::ULong index = 0; - for (CORBA::ULong i = unsent_length; i < maximum_batch_size; i++) - { - index = i - unsent_length; - matched[i] = this->data_[(this->match_called_ ? - this->matching_[index] : index)]; - start++; - } - consumer->push_structured_events (matched ACE_ENV_ARG_PARAMETER); - ACE_CHECK; - - unsent.length (0); - unsent_length = 0; - - // Send some more events out - while (start < sending_length && - sending_length - start >= maximum_batch_size) - { - for (CORBA::ULong i = 0; i < maximum_batch_size; i++) - { - matched[i] = this->data_[(this->match_called_ ? - this->matching_[start] : start)]; - start++; - } - consumer->push_structured_events (matched ACE_ENV_ARG_PARAMETER); - ACE_CHECK; - } - } - - // append the rest to the unsent sequence - unsent.length (unsent_length + (sending_length - start)); - for (CORBA::ULong j = start; j < sending_length; j++) - { - unsent[unsent_length + (j - start)] = - this->data_[(this->match_called_ ? - this->matching_[j] : j)]; - } - } -} - - -#if defined (ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION) - -template class TAO_Unbounded_Sequence<CORBA::ULong>; - -#elif defined (ACE_HAS_TEMPLATE_INSTANTIATION_PRAGMA) - -#pragma instantiate TAO_Unbounded_Sequence<CORBA::ULong> - -#endif /*ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION */ diff --git a/TAO/orbsvcs/orbsvcs/Notify/Notify_StructuredEvents.h b/TAO/orbsvcs/orbsvcs/Notify/Notify_StructuredEvents.h deleted file mode 100644 index ebfe6d95680..00000000000 --- a/TAO/orbsvcs/orbsvcs/Notify/Notify_StructuredEvents.h +++ /dev/null @@ -1,75 +0,0 @@ -/* -*- C++ -*- */ -//============================================================================= -/** - * @file Notify_StructuredEvents.h - * - * $Id$ - * - * For use with the Sequence (Push/Pull)(Consumer/Supplier) - * - * - * @author Chad Elliott <elliott_c@ociweb.com> - */ -//============================================================================= - - -#ifndef TAO_NOTIFY_STRUCTURED_EVENTS_H -#define TAO_NOTIFY_STRUCTURED_EVENT_H - -#include "ace/pre.h" -#include "orbsvcs/Notify/Notify_Event.h" -#include "notify_export.h" - -#if !defined (ACE_LACKS_PRAGMA_ONCE) -# pragma once -#endif /* ACE_LACKS_PRAGMA_ONCE */ - -/** - * @class TAO_Notify_StructuredEvents - * - * @brief TAO_Notify_StructuredEvents - * - * This class is the concrete prototype for the Structured Event Types. - */ -class TAO_Notify_Export TAO_Notify_StructuredEvents : public TAO_Notify_Event -{ -public: - TAO_Notify_StructuredEvents (const CosNotification::EventBatch& notifications); - virtual ~TAO_Notify_StructuredEvents (); - - virtual TAO_Notify_Event* clone (void); - void operator=(const TAO_Notify_StructuredEvents& structured_events); - - virtual CORBA::Boolean is_special_event_type (void) const; - virtual const TAO_Notify_EventType& event_type (void) const; - virtual CORBA::Boolean do_match (CosNotifyFilter::Filter_ptr filter ACE_ENV_ARG_DECL); - virtual void do_push (CosEventComm::PushConsumer_ptr consumer ACE_ENV_ARG_DECL) const; - virtual void do_push (CosNotifyComm::StructuredPushConsumer_ptr consumer ACE_ENV_ARG_DECL) const; - virtual void do_push (CosNotifyComm::SequencePushConsumer_ptr consumer, - const TAO_Notify_QoSAdmin_i& qos_admin, - CosNotification::EventBatch& unsent, - int flush_queue - ACE_ENV_ARG_DECL) const; - -protected: - - /// Load the QoS properties these events from <data_>. - void init_QoS (void); - - // = Data Members - /// The data - CosNotification::EventBatch data_; - - /// The events that matched the filter - TAO_Unbounded_Sequence<CORBA::ULong> matching_; - - /// Was do_match () called? - int match_called_; - - /// The event types of <data_> - TAO_Notify_EventType event_type_; -}; - -#include "ace/post.h" - -#endif /* TAO_NOTIFY_EVENT_H */ diff --git a/TAO/orbsvcs/orbsvcs/Notify/Notify_StructuredProxyPushConsumer_i.cpp b/TAO/orbsvcs/orbsvcs/Notify/Notify_StructuredProxyPushConsumer_i.cpp deleted file mode 100644 index 277be4d1b89..00000000000 --- a/TAO/orbsvcs/orbsvcs/Notify/Notify_StructuredProxyPushConsumer_i.cpp +++ /dev/null @@ -1,133 +0,0 @@ -/* -*- C++ -*- */ -// $Id$ */ - -#include "Notify_StructuredProxyPushConsumer_i.h" -#include "Notify_Event_Manager.h" -#include "Notify_SupplierAdmin_i.h" - -ACE_RCSID(Notify, Notify_StructuredProxyPushConsumer_i, "$Id$") - -typedef ACE_Reverse_Lock<ACE_Lock> TAO_Notify_Unlock; - -TAO_Notify_StructuredProxyPushConsumer_i::TAO_Notify_StructuredProxyPushConsumer_i (TAO_Notify_SupplierAdmin_i* supplier_admin) - :proxy_inherited (supplier_admin) -{ -} - -TAO_Notify_StructuredProxyPushConsumer_i::~TAO_Notify_StructuredProxyPushConsumer_i (void) -{ -} - -void -TAO_Notify_StructuredProxyPushConsumer_i::connect_structured_push_supplier (CosNotifyComm::StructuredPushSupplier_ptr push_supplier ACE_ENV_ARG_DECL) - ACE_THROW_SPEC (( - CORBA::SystemException, - CosEventChannelAdmin::AlreadyConnected - )) -{ - ACE_GUARD_THROW_EX (ACE_Lock, ace_mon, *this->lock_, - CORBA::INTERNAL ()); - ACE_CHECK; - - if (this->is_connected_ == 1) - ACE_THROW (CosEventChannelAdmin::AlreadyConnected ()); - else - this->push_supplier_ = - CosNotifyComm::StructuredPushSupplier::_duplicate (push_supplier); - - this->is_connected_ = 1; - - ACE_TRY - { - TAO_Notify_Unlock reverse_lock (*this->lock_); - - { - ACE_GUARD_THROW_EX (TAO_Notify_Unlock, ace_mon, reverse_lock, - CORBA::INTERNAL ()); - ACE_TRY_CHECK; - - this->on_connected (ACE_ENV_SINGLE_ARG_PARAMETER); - ACE_TRY_CHECK; - } - } - ACE_CATCHALL - { - this->push_supplier_ = - CosNotifyComm::StructuredPushSupplier::_nil (); - - this->is_connected_ = 0; - } - ACE_ENDTRY; -} - -void -TAO_Notify_StructuredProxyPushConsumer_i::dispatch_update_i (CosNotification::EventTypeSeq added, CosNotification::EventTypeSeq removed ACE_ENV_ARG_DECL) -{ - ACE_TRY - { - this->push_supplier_->subscription_change (added, removed - ACE_ENV_ARG_PARAMETER); - ACE_TRY_CHECK; - } - ACE_CATCHALL - { - // misbehaving client, ignore for now. - } - ACE_ENDTRY; -} - -void -TAO_Notify_StructuredProxyPushConsumer_i::push_structured_event (const CosNotification::StructuredEvent & notification ACE_ENV_ARG_DECL) - ACE_THROW_SPEC (( - CORBA::SystemException, - CosEventComm::Disconnected - )) -{ - { - ACE_GUARD_THROW_EX (ACE_Lock, ace_mon, *this->lock_, - CORBA::INTERNAL ()); - ACE_CHECK; - - if (this->is_connected_ == 0) - ACE_THROW (CosEventComm::Disconnected ()); - } - - CosNotification::StructuredEvent *notification_copy; - ACE_NEW_THROW_EX (notification_copy, - CosNotification::StructuredEvent (notification), - CORBA::NO_MEMORY ()); - - TAO_Notify_StructuredEvent* notify_event = - new TAO_Notify_StructuredEvent (notification_copy); - - this->event_manager_->process_event (notify_event, this ACE_ENV_ARG_PARAMETER); - ACE_CHECK; - - notify_event->_decr_refcnt (); -} - -void -TAO_Notify_StructuredProxyPushConsumer_i::disconnect_structured_push_consumer (ACE_ENV_SINGLE_ARG_DECL) - ACE_THROW_SPEC (( - CORBA::SystemException - )) -{ - // ask our parent to deactivate us. - this->supplier_admin_-> - deactivate_proxy_pushconsumer (this ACE_ENV_ARG_PARAMETER); - ACE_CHECK; - - this->on_disconnected (ACE_ENV_SINGLE_ARG_PARAMETER); -} - -#if defined (ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION) - -template class TAO_Notify_ProxyConsumer<POA_CosNotifyChannelAdmin::StructuredProxyPushConsumer>; -template class TAO_Notify_Proxy<POA_CosNotifyChannelAdmin::StructuredProxyPushConsumer>; - -#elif defined (ACE_HAS_TEMPLATE_INSTANTIATION_PRAGMA) - -#pragma instantiate TAO_Notify_ProxyConsumer<POA_CosNotifyChannelAdmin::StructuredProxyPushConsumer> -#pragma instantiate TAO_Notify_Proxy<POA_CosNotifyChannelAdmin::StructuredProxyPushConsumer> - -#endif /*ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION */ diff --git a/TAO/orbsvcs/orbsvcs/Notify/Notify_StructuredProxyPushConsumer_i.h b/TAO/orbsvcs/orbsvcs/Notify/Notify_StructuredProxyPushConsumer_i.h deleted file mode 100644 index 7a2bc2c216c..00000000000 --- a/TAO/orbsvcs/orbsvcs/Notify/Notify_StructuredProxyPushConsumer_i.h +++ /dev/null @@ -1,99 +0,0 @@ -/* -*- C++ -*- */ -//============================================================================= -/** - * @file Notify_StructuredProxyPushConsumer_i.h - * - * $Id$ - * - * Implements the CosNotifyChannelAdmin::StructuredProxyPushConsumer - * interface. - * - * @author Pradeep Gore <pradeep@cs.wustl.edu> - */ -//============================================================================= - -#ifndef TAO_NOTIFY_STRUCTUREDPROXYPUSHCONSUMER_I_H -#define TAO_NOTIFY_STRUCTUREDPROXYPUSHCONSUMER_I_H - -#include "ace/pre.h" -#include "orbsvcs/CosNotifyChannelAdminS.h" - -#if !defined (ACE_LACKS_PRAGMA_ONCE) -# pragma once -#endif /* ACE_LACKS_PRAGMA_ONCE */ - -#include "Notify_ProxyConsumer_T.h" -#include "notify_export.h" - -class TAO_Notify_SupplierAdmin_i; - -#if defined(_MSC_VER) -#if (_MSC_VER >= 1200) -#pragma warning(push) -#endif /* _MSC_VER >= 1200 */ -#pragma warning(disable:4250) -#endif /* _MSC_VER */ - -/** - * @class TAO_Notify_StructuredProxyPushConsumer_i - * - * @brief TAO_Notify_StructuredProxyPushConsumer_i - * - * Implements CosNotifyChannelAdmin::StructuredProxyPushConsumer - */ -class TAO_Notify_Export TAO_Notify_StructuredProxyPushConsumer_i : public TAO_Notify_ProxyConsumer <POA_CosNotifyChannelAdmin::StructuredProxyPushConsumer> -{ - -public: - /// Constructor - TAO_Notify_StructuredProxyPushConsumer_i (TAO_Notify_SupplierAdmin_i* supplier_admin); - - /// Destructor - virtual ~TAO_Notify_StructuredProxyPushConsumer_i (void); - - // = interface methods - virtual void connect_structured_push_supplier ( - CosNotifyComm::StructuredPushSupplier_ptr push_supplier - ACE_ENV_ARG_DECL - ) - ACE_THROW_SPEC (( - CORBA::SystemException, - CosEventChannelAdmin::AlreadyConnected - )); - -virtual void push_structured_event ( - const CosNotification::StructuredEvent & notification - ACE_ENV_ARG_DECL - ) - ACE_THROW_SPEC (( - CORBA::SystemException, - CosEventComm::Disconnected - )); - - virtual void disconnect_structured_push_consumer ( - ACE_ENV_SINGLE_ARG_DECL - ) - ACE_THROW_SPEC (( - CORBA::SystemException - )); - -protected: - // = Helper methods - /// Dispatch updates to the supplier. - virtual void dispatch_update_i (CosNotification::EventTypeSeq added, CosNotification::EventTypeSeq removed ACE_ENV_ARG_DECL); - - // = Data members - /// The supplier that we're connected to. - CosNotifyComm::StructuredPushSupplier_var push_supplier_; - -private: - typedef TAO_Notify_ProxyConsumer <POA_CosNotifyChannelAdmin::StructuredProxyPushConsumer> - proxy_inherited; -}; - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -#pragma warning(pop) -#endif /* _MSC_VER */ - -#include "ace/post.h" -#endif /* TAO_NOTIFY_STRUCTUREDPROXYPUSHCONSUMER_I_H */ diff --git a/TAO/orbsvcs/orbsvcs/Notify/Notify_StructuredProxyPushSupplier_i.cpp b/TAO/orbsvcs/orbsvcs/Notify/Notify_StructuredProxyPushSupplier_i.cpp deleted file mode 100644 index 00770c13a3a..00000000000 --- a/TAO/orbsvcs/orbsvcs/Notify/Notify_StructuredProxyPushSupplier_i.cpp +++ /dev/null @@ -1,166 +0,0 @@ -/* -*- C++ -*- */ -// $Id$ */ - -#include "Notify_StructuredProxyPushSupplier_i.h" -#include "Notify_ConsumerAdmin_i.h" - -ACE_RCSID(Notify, Notify_StructuredProxyPushSupplier_i, "$Id$") - -typedef ACE_Reverse_Lock<ACE_Lock> TAO_Notify_Unlock; - -TAO_Notify_StructuredProxyPushSupplier_i::TAO_Notify_StructuredProxyPushSupplier_i (TAO_Notify_ConsumerAdmin_i* consumeradmin) - :proxy_inherited (consumeradmin) -{ -} - -TAO_Notify_StructuredProxyPushSupplier_i::~TAO_Notify_StructuredProxyPushSupplier_i (void) -{ -} - -void -TAO_Notify_StructuredProxyPushSupplier_i::connect_structured_push_consumer (CosNotifyComm::StructuredPushConsumer_ptr push_consumer ACE_ENV_ARG_DECL) - ACE_THROW_SPEC (( - CORBA::SystemException, - CosEventChannelAdmin::AlreadyConnected, - CosEventChannelAdmin::TypeError - )) -{ - ACE_GUARD_THROW_EX (ACE_Lock, ace_mon, *this->lock_, - CORBA::INTERNAL ()); - ACE_CHECK; - - if (CORBA::is_nil (push_consumer)) - ACE_THROW (CosEventChannelAdmin::TypeError ()); - else - { - if (this->is_connected_ == 1) - ACE_THROW (CosEventChannelAdmin::AlreadyConnected ()); - else - { - this->push_consumer_ = - CosNotifyComm::StructuredPushConsumer::_duplicate (push_consumer); - } - - this->is_connected_ = 1; - } - - ACE_TRY - { - TAO_Notify_Unlock reverse_lock (*this->lock_); - - { - ACE_GUARD_THROW_EX (TAO_Notify_Unlock, ace_mon, reverse_lock, - CORBA::INTERNAL ()); - ACE_CHECK; - - this->on_connected (ACE_ENV_SINGLE_ARG_PARAMETER); - ACE_TRY_CHECK; - } - } - ACE_CATCHALL - { - this->push_consumer_ = - CosNotifyComm::StructuredPushConsumer::_nil (); - - this->is_connected_ = 0; - - ACE_RE_THROW; - } - ACE_ENDTRY; -} - -void -TAO_Notify_StructuredProxyPushSupplier_i::dispatch_event_i (TAO_Notify_Event &event ACE_ENV_ARG_DECL) -{ - ACE_TRY - { - event.do_push (this->push_consumer_.in () ACE_ENV_ARG_PARAMETER); - ACE_TRY_CHECK; - } - ACE_CATCHALL - { - ACE_DEBUG ((LM_DEBUG, "Exception dispatching structured event\n")); - // misbehaving client, - this->shutdown (ACE_ENV_SINGLE_ARG_PARAMETER); // FUZZ: ignore check_for_ace_check - } - ACE_ENDTRY; -} - -void -TAO_Notify_StructuredProxyPushSupplier_i::dispatch_update_i (CosNotification::EventTypeSeq added, CosNotification::EventTypeSeq removed ACE_ENV_ARG_DECL) -{ - ACE_TRY - { - this->push_consumer_->offer_change (added, removed ACE_ENV_ARG_PARAMETER); - ACE_TRY_CHECK; - } - ACE_CATCHANY - { - ACE_PRINT_EXCEPTION (ACE_ANY_EXCEPTION, - "call to offer_change failed\n"); - // misbehaving client, ignore for now. - } - ACE_ENDTRY; -} - -void -TAO_Notify_StructuredProxyPushSupplier_i::shutdown_i (ACE_ENV_SINGLE_ARG_DECL) -{ - this->on_disconnected (ACE_ENV_SINGLE_ARG_PARAMETER); - ACE_CHECK; - - // ask our parent to deactivate us. - this->consumer_admin_-> - deactivate_proxy_pushsupplier (this ACE_ENV_ARG_PARAMETER); -} - -void -TAO_Notify_StructuredProxyPushSupplier_i::disconnect_structured_push_supplier(ACE_ENV_SINGLE_ARG_DECL) - ACE_THROW_SPEC (( - CORBA::SystemException - )) -{ - // unregister with CA - this->consumer_admin_->unregister_listener (this ACE_ENV_ARG_PARAMETER); - ACE_CHECK; - - this->shutdown_i (ACE_ENV_SINGLE_ARG_PARAMETER); -} - -void -TAO_Notify_StructuredProxyPushSupplier_i::shutdown (ACE_ENV_SINGLE_ARG_DECL) -{ - // Tell the consumer that we're going away ... - // @@ Later, lookup a "notify_on_disconnect" option. - - { - ACE_GUARD (ACE_Lock, ace_mon, *this->lock_); - - if (this->is_connected_ == 0) - return; - } - - this->shutdown_i (ACE_ENV_SINGLE_ARG_PARAMETER); - ACE_CHECK; - - ACE_TRY - { - this->push_consumer_->disconnect_structured_push_consumer (ACE_ENV_SINGLE_ARG_PARAMETER); - ACE_TRY_CHECK; - } - ACE_CATCHALL - { - // ignore - } - ACE_ENDTRY; -} - -#if defined (ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION) -template class TAO_Notify_ProxySupplier<POA_CosNotifyChannelAdmin::StructuredProxyPushSupplier>; -template class TAO_Notify_Proxy<POA_CosNotifyChannelAdmin::StructuredProxyPushSupplier>; - -#elif defined (ACE_HAS_TEMPLATE_INSTANTIATION_PRAGMA) -#pragma instantiate TAO_Notify_ProxySupplier<POA_CosNotifyChannelAdmin::StructuredProxyPushSupplier> - -#pragma instantiate TAO_Notify_Proxy<POA_CosNotifyChannelAdmin::StructuredProxyPushSupplier> -#endif /*ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION */ diff --git a/TAO/orbsvcs/orbsvcs/Notify/Notify_StructuredProxyPushSupplier_i.h b/TAO/orbsvcs/orbsvcs/Notify/Notify_StructuredProxyPushSupplier_i.h deleted file mode 100644 index 74edbd29cdd..00000000000 --- a/TAO/orbsvcs/orbsvcs/Notify/Notify_StructuredProxyPushSupplier_i.h +++ /dev/null @@ -1,98 +0,0 @@ -//============================================================================= -/** - * @file Notify_StructuredProxyPushSupplier_i.h - * - * $Id$ - * - * Implements the POA_CosNotifyChannelAdmin::StructuredProxyPushSupplier - * interface. - * - * - * @author Pradeep Gore <pradeep@cs.wustl.edu> - */ -//============================================================================= - -#ifndef TAO_NOTIFY_STRUCTUREDPROXYPUSHSUPPLIER_I_H -#define TAO_NOTIFY_STRUCTUREDPROXYPUSHSUPPLIER_I_H - -#include "ace/pre.h" -#include "orbsvcs/CosNotifyChannelAdminS.h" - -#if !defined (ACE_LACKS_PRAGMA_ONCE) -# pragma once -#endif /* ACE_LACKS_PRAGMA_ONCE */ - -#include "Notify_ProxySupplier_T.h" - -class TAO_Notify_ConsumerAdmin_i; - -#if defined(_MSC_VER) -#if (_MSC_VER >= 1200) -#pragma warning(push) -#endif /* _MSC_VER >= 1200 */ -#pragma warning(disable:4250) -#endif /* _MSC_VER */ - -/** - * @class TAO_Notify_StructuredProxyPushSupplier_i - * - * @brief TAO_Notify_StructuredProxyPushSupplier_i - * - * Implements POA_CosNotifyChannelAdmin::StructuredProxyPushSupplier - */ -class TAO_Notify_Export TAO_Notify_StructuredProxyPushSupplier_i : public TAO_Notify_ProxySupplier<POA_CosNotifyChannelAdmin::StructuredProxyPushSupplier> -{ - - public: - /// Constructor - TAO_Notify_StructuredProxyPushSupplier_i (TAO_Notify_ConsumerAdmin_i* consumer_admin); - - /// Destructor - virtual ~TAO_Notify_StructuredProxyPushSupplier_i (void); - - virtual void connect_structured_push_consumer ( - CosNotifyComm::StructuredPushConsumer_ptr push_consumer - ACE_ENV_ARG_DECL - ) - ACE_THROW_SPEC (( - CORBA::SystemException, - CosEventChannelAdmin::AlreadyConnected, - CosEventChannelAdmin::TypeError - )); - - virtual void disconnect_structured_push_supplier ( - ACE_ENV_SINGLE_ARG_DECL - ) - ACE_THROW_SPEC (( - CORBA::SystemException - )); - - /// Shutdown. - virtual void shutdown (ACE_ENV_SINGLE_ARG_DECL); - - protected: - // = Helper methods - /// Shutdown - void shutdown_i (ACE_ENV_SINGLE_ARG_DECL); - - /// Deliver the event to the consumer. - virtual void dispatch_event_i (TAO_Notify_Event &event ACE_ENV_ARG_DECL); - - /// Deliver the update to the consumer. - virtual void dispatch_update_i (CosNotification::EventTypeSeq added, CosNotification::EventTypeSeq removed ACE_ENV_ARG_DECL); - - // = Data Members - /// The consumer that we're connect to. - CosNotifyComm::StructuredPushConsumer_var push_consumer_; - - private: - typedef TAO_Notify_ProxySupplier<POA_CosNotifyChannelAdmin::StructuredProxyPushSupplier> - proxy_inherited; -}; - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -#pragma warning(pop) -#endif /* _MSC_VER */ - -#include "ace/post.h" -#endif /* TAO_NOTIFY_STRUCTUREDPROXYPUSHSUPPLIER_I_H */ diff --git a/TAO/orbsvcs/orbsvcs/Notify/Notify_SupplierAdmin_i.cpp b/TAO/orbsvcs/orbsvcs/Notify/Notify_SupplierAdmin_i.cpp deleted file mode 100644 index 4e30fc27bc0..00000000000 --- a/TAO/orbsvcs/orbsvcs/Notify/Notify_SupplierAdmin_i.cpp +++ /dev/null @@ -1,452 +0,0 @@ -// $Id$ - -#include "Notify_SupplierAdmin_i.h" -#include "Notify_ProxyPushConsumer_i.h" -#include "Notify_StructuredProxyPushConsumer_i.h" -#include "Notify_SequenceProxyPushConsumer_i.h" -#include "Notify_EventChannel_i.h" -#include "Notify_Channel_Objects_Factory.h" -#include "Notify_POA_Factory.h" -#include "Notify_Factory.h" -#include "Notify_Event_Manager.h" - -#include "tao/debug.h" - -#include "ace/Auto_Ptr.h" - -ACE_RCSID(Notify, Notify_SupplierAdmin_i, "$Id$") - -// Implementation skeleton constructor -TAO_Notify_SupplierAdmin_i::TAO_Notify_SupplierAdmin_i (TAO_Notify_EventChannel_i* event_channel) - :event_channel_ (event_channel), - channel_objects_factory_ (0), - poa_factory_ (0), - lock_ (0), - destory_child_POAs_ (0) -{ - event_channel_->_add_ref (); // we don't want our parent to go away! -} - -// Implementation skeleton destructor -TAO_Notify_SupplierAdmin_i::~TAO_Notify_SupplierAdmin_i () -{ - if (TAO_debug_level > 0) - ACE_DEBUG ((LM_DEBUG,"in SA dtor\n")); - // Cleanup all resources.. - - delete this->lock_; - - this->event_channel_->supplier_admin_destroyed (this->my_id_); - event_channel_->_remove_ref (); -} - -void -TAO_Notify_SupplierAdmin_i::proxy_pushconsumer_destroyed (CosNotifyChannelAdmin::ProxyID proxyID) -{ - this->proxy_pushconsumer_ids_.put (proxyID); // This id is no longer in use. -} - -void -TAO_Notify_SupplierAdmin_i::init (CosNotifyChannelAdmin::AdminID my_id, - CosNotifyChannelAdmin::InterFilterGroupOperator filter_operator, - PortableServer::POA_ptr my_POA - ACE_ENV_ARG_DECL) -{ - this->my_POA_ = PortableServer::POA::_duplicate (my_POA); - - this->channel_objects_factory_ = - TAO_Notify_Factory::get_channel_objects_factory (); - - this->poa_factory_ = TAO_Notify_Factory::get_poa_factory (); - - this->lock_ = this->channel_objects_factory_-> - create_supplier_admin_lock (ACE_ENV_SINGLE_ARG_PARAMETER); - ACE_CHECK; - - this->proxy_pushconsumer_POA_ = this->poa_factory_-> - create_proxy_pushconsumer_POA (this->my_POA_.in (), my_id - ACE_ENV_ARG_PARAMETER); - ACE_CHECK; - - my_id_ = my_id; - filter_operator_ = filter_operator; -} - -CosNotifyChannelAdmin::SupplierAdmin_ptr -TAO_Notify_SupplierAdmin_i::get_ref (ACE_ENV_SINGLE_ARG_DECL) -{ - // @@ Pradeep: if you get a chance to quantify this stuff you will - // notice that this is a very expensive operation, you may want to - // cache the result if it is invoked very often... - - CORBA::Object_var obj = this->poa_factory_-> - servant_to_reference (this->my_POA_.in (), this ACE_ENV_ARG_PARAMETER); - ACE_CHECK_RETURN (CosNotifyChannelAdmin::SupplierAdmin::_nil ()); - - return CosNotifyChannelAdmin::SupplierAdmin::_narrow (obj.in ()); -} - -// @@ Pradeep: it is possible that you want methods like this -// inlined... - -TAO_Notify_Event_Manager* -TAO_Notify_SupplierAdmin_i::get_event_manager (void) -{ - return this->event_channel_->get_event_manager (); -} - -TAO_Notify_FilterAdmin_i& -TAO_Notify_SupplierAdmin_i::get_filter_admin (void) -{ - return this->filter_admin_; -} - -void -TAO_Notify_SupplierAdmin_i::deactivate_proxy_pushconsumer (PortableServer::Servant servant ACE_ENV_ARG_DECL) -{ - this->poa_factory_-> - deactivate_object (servant, this->proxy_pushconsumer_POA_.in () - ACE_ENV_ARG_PARAMETER); -} - -CosNotifyChannelAdmin::AdminID -TAO_Notify_SupplierAdmin_i::MyID (ACE_ENV_SINGLE_ARG_DECL_NOT_USED/*ACE_ENV_SINGLE_ARG_PARAMETER*/) - ACE_THROW_SPEC (( - CORBA::SystemException - )) -{ - return my_id_; -} - -CosNotifyChannelAdmin::EventChannel_ptr -TAO_Notify_SupplierAdmin_i::MyChannel (ACE_ENV_SINGLE_ARG_DECL) - ACE_THROW_SPEC (( - CORBA::SystemException - )) -{ - return event_channel_->get_ref (ACE_ENV_SINGLE_ARG_PARAMETER); -} - -CosNotifyChannelAdmin::InterFilterGroupOperator -TAO_Notify_SupplierAdmin_i::MyOperator (ACE_ENV_SINGLE_ARG_DECL_NOT_USED/*ACE_ENV_SINGLE_ARG_PARAMETER*/) - ACE_THROW_SPEC (( - CORBA::SystemException - )) -{ - return filter_operator_; -} - -CosNotifyChannelAdmin::ProxyIDSeq* -TAO_Notify_SupplierAdmin_i::push_consumers (ACE_ENV_SINGLE_ARG_DECL) - ACE_THROW_SPEC (( - CORBA::SystemException - )) -{ - ACE_GUARD_THROW_EX (ACE_Lock, ace_mon, *this->lock_, - CORBA::INTERNAL ()); - ACE_CHECK_RETURN (0); - - return this->proxy_pushconsumer_ids_.get_sequence (ACE_ENV_SINGLE_ARG_PARAMETER); -} - -CosNotifyChannelAdmin::ProxyConsumer_ptr -TAO_Notify_SupplierAdmin_i::get_proxy_consumer (CosNotifyChannelAdmin::ProxyID proxy_id ACE_ENV_ARG_DECL) - ACE_THROW_SPEC (( - CORBA::SystemException, - CosNotifyChannelAdmin::ProxyNotFound - )) -{ - CORBA::Object_var obj = - this->poa_factory_->id_to_reference (proxy_id, - proxy_pushconsumer_POA_.in () - ACE_ENV_ARG_PARAMETER); - ACE_CHECK_RETURN (CosNotifyChannelAdmin::ProxyConsumer::_nil ()); - - return CosNotifyChannelAdmin::ProxyConsumer::_narrow (obj.in ()); -} - -CORBA::Object_ptr -TAO_Notify_SupplierAdmin_i::obtain_sequence_proxy_pushconsumer_i (CosNotifyChannelAdmin::ProxyID proxy_id ACE_ENV_ARG_DECL) -{ - TAO_Notify_SequenceProxyPushConsumer_i* seq_proxy_pushconsumer = - this->channel_objects_factory_->create_seq_proxy_pushconsumer (this - ACE_ENV_ARG_PARAMETER); - ACE_CHECK_RETURN (CORBA::Object::_nil ()); - - PortableServer::ServantBase_var proxy_pushconsumer_var (seq_proxy_pushconsumer); - - seq_proxy_pushconsumer->init (proxy_id ACE_ENV_ARG_PARAMETER); - ACE_CHECK_RETURN (CORBA::Object::_nil ()); - - return this->poa_factory_-> - activate_object_with_id (proxy_id, - this->proxy_pushconsumer_POA_.in (), - seq_proxy_pushconsumer - ACE_ENV_ARG_PARAMETER); -} - -CORBA::Object_ptr -TAO_Notify_SupplierAdmin_i::obtain_struct_proxy_pushconsumer_i (CosNotifyChannelAdmin::ProxyID proxy_id ACE_ENV_ARG_DECL) -{ - TAO_Notify_StructuredProxyPushConsumer_i* struct_proxy_pushconsumer = - this->channel_objects_factory_->create_struct_proxy_pushconsumer (this - ACE_ENV_ARG_PARAMETER); - ACE_CHECK_RETURN (CORBA::Object::_nil ()); - - PortableServer::ServantBase_var proxy_pushconsumer_var (struct_proxy_pushconsumer); - - struct_proxy_pushconsumer->init (proxy_id ACE_ENV_ARG_PARAMETER); - ACE_CHECK_RETURN (CORBA::Object::_nil ()); - - return this->poa_factory_-> - activate_object_with_id (proxy_id, - this->proxy_pushconsumer_POA_.in (), - struct_proxy_pushconsumer - ACE_ENV_ARG_PARAMETER); -} - -CORBA::Object_ptr -TAO_Notify_SupplierAdmin_i::obtain_proxy_pushconsumer_i (CosNotifyChannelAdmin::ProxyID proxy_id ACE_ENV_ARG_DECL) -{ - TAO_Notify_ProxyPushConsumer_i* proxy_pushconsumer = - this->channel_objects_factory_->create_proxy_pushconsumer (this - ACE_ENV_ARG_PARAMETER); - ACE_CHECK_RETURN (CORBA::Object::_nil ()); - - PortableServer::ServantBase_var proxy_pushconsumer_var (proxy_pushconsumer); - - proxy_pushconsumer->init (proxy_id ACE_ENV_ARG_PARAMETER); - ACE_CHECK_RETURN (CORBA::Object::_nil ()); - - return this->poa_factory_-> - activate_object_with_id (proxy_id, - this->proxy_pushconsumer_POA_.in (), - proxy_pushconsumer - ACE_ENV_ARG_PARAMETER); -} - -CosNotifyChannelAdmin::ProxyConsumer_ptr -TAO_Notify_SupplierAdmin_i::obtain_notification_push_consumer (CosNotifyChannelAdmin::ClientType ctype, CosNotifyChannelAdmin::ProxyID_out proxy_id ACE_ENV_ARG_DECL) - ACE_THROW_SPEC (( - CORBA::SystemException, - CosNotifyChannelAdmin::AdminLimitExceeded - )) -{ - CORBA::Object_var obj; - - { - ACE_GUARD_THROW_EX (ACE_Lock, ace_mon, *this->lock_, - CORBA::INTERNAL ()); - ACE_CHECK_RETURN (CosNotifyChannelAdmin::ProxyConsumer::_nil ()); - - proxy_id = this->proxy_pushconsumer_ids_.get (); - } - - switch (ctype) - { - case CosNotifyChannelAdmin::ANY_EVENT: - { - obj = this->obtain_proxy_pushconsumer_i (proxy_id ACE_ENV_ARG_PARAMETER); - ACE_CHECK_RETURN (CosNotifyChannelAdmin::ProxyConsumer::_nil ()); - } - break; - - case CosNotifyChannelAdmin::STRUCTURED_EVENT: - { - obj = this->obtain_struct_proxy_pushconsumer_i (proxy_id - ACE_ENV_ARG_PARAMETER); - ACE_CHECK_RETURN (CosNotifyChannelAdmin::ProxyConsumer::_nil ()); - } - break; - - case CosNotifyChannelAdmin::SEQUENCE_EVENT: - { - obj = this->obtain_sequence_proxy_pushconsumer_i (proxy_id - ACE_ENV_ARG_PARAMETER); - ACE_CHECK_RETURN (CosNotifyChannelAdmin::ProxyConsumer::_nil ()); - } - break; - - default: - ACE_THROW_RETURN (CORBA::BAD_PARAM (), - CosNotifyChannelAdmin::ProxyConsumer::_nil ()); - } - - this->proxy_pushconsumer_ids_.next (); // commit the current id. - return CosNotifyChannelAdmin::ProxyConsumer::_narrow (obj.in () - ACE_ENV_ARG_PARAMETER); -} - -void -TAO_Notify_SupplierAdmin_i::destroy (ACE_ENV_SINGLE_ARG_DECL) - ACE_THROW_SPEC ((CORBA::SystemException)) -{ - this->destory_child_POAs_ = 1; - if (this->destory_child_POAs_ == 1) - this->poa_factory_->destroy_POA (this->proxy_pushconsumer_POA_.in () - ACE_ENV_ARG_PARAMETER); - ACE_CHECK; - - // deactivate ourselves - this->poa_factory_->deactivate_object (this, this->my_POA_.in () - ACE_ENV_ARG_PARAMETER); -} - -CosNotification::QoSProperties* -TAO_Notify_SupplierAdmin_i::get_qos (ACE_ENV_SINGLE_ARG_DECL) - ACE_THROW_SPEC (( - CORBA::SystemException - )) -{ - return this->qos_admin_.get_qos (ACE_ENV_SINGLE_ARG_PARAMETER); -} - -void -TAO_Notify_SupplierAdmin_i::set_qos (const CosNotification::QoSProperties & qos ACE_ENV_ARG_DECL) - ACE_THROW_SPEC (( - CORBA::SystemException, - CosNotification::UnsupportedQoS - )) -{ - this->qos_admin_.set_qos (qos ACE_ENV_ARG_PARAMETER); -} - -void -TAO_Notify_SupplierAdmin_i::validate_qos (const CosNotification::QoSProperties & required_qos, CosNotification::NamedPropertyRangeSeq_out available_qos ACE_ENV_ARG_DECL) - ACE_THROW_SPEC (( - CORBA::SystemException, - CosNotification::UnsupportedQoS - )) -{ - this->qos_admin_.validate_qos (required_qos, available_qos ACE_ENV_ARG_PARAMETER); -} - -void -TAO_Notify_SupplierAdmin_i::offer_change (const CosNotification::EventTypeSeq & added, const CosNotification::EventTypeSeq & removed ACE_ENV_ARG_DECL) - ACE_THROW_SPEC (( - CORBA::SystemException, - CosNotifyComm::InvalidEventType - )) -{ - this->get_event_manager ()->update_publication_list (added, - removed ACE_ENV_ARG_PARAMETER); -} - -CosNotifyFilter::FilterID -TAO_Notify_SupplierAdmin_i::add_filter (CosNotifyFilter::Filter_ptr new_filter ACE_ENV_ARG_DECL) - ACE_THROW_SPEC (( - CORBA::SystemException - )) -{ - return this->filter_admin_.add_filter (new_filter ACE_ENV_ARG_PARAMETER); -} - -void -TAO_Notify_SupplierAdmin_i::remove_filter (CosNotifyFilter::FilterID filter ACE_ENV_ARG_DECL) - ACE_THROW_SPEC (( - CORBA::SystemException, - CosNotifyFilter::FilterNotFound - )) -{ - this->filter_admin_.remove_filter (filter ACE_ENV_ARG_PARAMETER); -} - -CosNotifyFilter::Filter_ptr -TAO_Notify_SupplierAdmin_i::get_filter (CosNotifyFilter::FilterID filter ACE_ENV_ARG_DECL) - ACE_THROW_SPEC (( - CORBA::SystemException, - CosNotifyFilter::FilterNotFound - )) -{ - return this->filter_admin_.get_filter (filter ACE_ENV_ARG_PARAMETER); -} - -CosNotifyFilter::FilterIDSeq* -TAO_Notify_SupplierAdmin_i::get_all_filters (ACE_ENV_SINGLE_ARG_DECL) - ACE_THROW_SPEC (( - CORBA::SystemException - )) -{ - return this->filter_admin_.get_all_filters (ACE_ENV_SINGLE_ARG_PARAMETER); -} - -void -TAO_Notify_SupplierAdmin_i::remove_all_filters (ACE_ENV_SINGLE_ARG_DECL) - ACE_THROW_SPEC (( - CORBA::SystemException - )) -{ - this->filter_admin_.remove_all_filters (ACE_ENV_SINGLE_ARG_PARAMETER); -} - -CosEventChannelAdmin::ProxyPushConsumer_ptr -TAO_Notify_SupplierAdmin_i::obtain_push_consumer (ACE_ENV_SINGLE_ARG_DECL) - ACE_THROW_SPEC (( - CORBA::SystemException - )) -{ - TAO_Notify_CosEC_ProxyPushConsumer_i* cosec_proxy; - - ACE_NEW_THROW_EX (cosec_proxy, - TAO_Notify_CosEC_ProxyPushConsumer_i (this), - CORBA::NO_MEMORY ()); - - PortableServer::ServantBase_var proxy_var (cosec_proxy); - - cosec_proxy->init (ACE_ENV_SINGLE_ARG_PARAMETER); - ACE_CHECK_RETURN (CosEventChannelAdmin::ProxyPushConsumer::_nil ()); - - PortableServer::POA_var def_poa = - this->event_channel_->get_default_POA (); - - CORBA::Object_var obj = this->poa_factory_-> - activate_object (def_poa.in (), cosec_proxy ACE_ENV_ARG_PARAMETER); - ACE_CHECK_RETURN (CosEventChannelAdmin::ProxyPushConsumer::_nil ()); - - return CosEventChannelAdmin::ProxyPushConsumer::_narrow (obj.in ()); -} - -// = Pull Methods. -CosNotifyChannelAdmin::ProxyIDSeq* -TAO_Notify_SupplierAdmin_i::pull_consumers (ACE_ENV_SINGLE_ARG_DECL) - ACE_THROW_SPEC (( - CORBA::SystemException - )) -{ - // @@ Pradeep: there is no rush to implement pull, but look at the - // code in the new CosEC, we may need to start thinking about pull, - // and how can we reduce duplicated code for both pull and push - // models. - ACE_THROW_RETURN (CORBA::NO_IMPLEMENT (), 0); -} - -CosNotifyChannelAdmin::ProxyConsumer_ptr -TAO_Notify_SupplierAdmin_i::obtain_notification_pull_consumer (CosNotifyChannelAdmin::ClientType /*ctype*/, CosNotifyChannelAdmin::ProxyID_out /*proxy_id*/ ACE_ENV_ARG_DECL) - ACE_THROW_SPEC (( - CORBA::SystemException, - CosNotifyChannelAdmin::AdminLimitExceeded - )) -{ - ACE_THROW_RETURN (CORBA::NO_IMPLEMENT (), - CosNotifyChannelAdmin::ProxyConsumer::_nil ()); -} - -CosEventChannelAdmin::ProxyPullConsumer_ptr -TAO_Notify_SupplierAdmin_i::obtain_pull_consumer (ACE_ENV_SINGLE_ARG_DECL) - ACE_THROW_SPEC (( - CORBA::SystemException - )) -{ - // @@ Pradeep: you may want to group all the Pull methods together, - // it would be easier to identify them or read the code that way. - ACE_THROW_RETURN (CORBA::NO_IMPLEMENT (), - CosEventChannelAdmin::ProxyPullConsumer::_nil ()); -} - -#if defined (ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION) -template class TAO_Notify_ID_Pool_Ex<CosNotifyChannelAdmin::ProxyID, CosNotifyChannelAdmin::ProxyIDSeq>; - -#elif defined (ACE_HAS_TEMPLATE_INSTANTIATION_PRAGMA) -#pragma instantiate TAO_Notify_ID_Pool_Ex<CosNotifyChannelAdmin::ProxyID, CosNotifyChannelAdmin::ProxyIDSeq> - -#endif /*ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION */ diff --git a/TAO/orbsvcs/orbsvcs/Notify/Notify_SupplierAdmin_i.h b/TAO/orbsvcs/orbsvcs/Notify/Notify_SupplierAdmin_i.h deleted file mode 100644 index 12f53a97eaa..00000000000 --- a/TAO/orbsvcs/orbsvcs/Notify/Notify_SupplierAdmin_i.h +++ /dev/null @@ -1,307 +0,0 @@ -/* -*- C++ -*- */ -//============================================================================= -/** - * @file Notify_SupplierAdmin_i.h - * - * $Id$ - * - * Implements the CosNotifyChannelAdmin::SupplierAdmin interface. - * - * - * @author Pradeep Gore <pradeep@cs.wustl.edu> - */ -//============================================================================= - - -#ifndef TAO_NOTIFY_SUPPLIERADMIN_I_H -#define TAO_NOTIFY_SUPPLIERADMIN_I_H -#include "ace/pre.h" -#include "orbsvcs/CosNotifyChannelAdminS.h" - -#if !defined (ACE_LACKS_PRAGMA_ONCE) -#pragma once -#endif /* ACE_LACKS_PRAGMA_ONCE */ - -#include "Notify_ID_Pool_T.h" -#include "Notify_QoSAdmin_i.h" -#include "Notify_FilterAdmin_i.h" - -class TAO_Notify_EventChannel_i; -class TAO_Notify_CO_Factory; -class TAO_Notify_POA_Factory; -class TAO_Notify_Event_Manager; - -#if defined(_MSC_VER) -#if (_MSC_VER >= 1200) -#pragma warning(push) -#endif /* _MSC_VER >= 1200 */ -#pragma warning(disable:4250) -#endif /* _MSC_VER */ - -/** - * @class TAO_Notify_SupplierAdmin_i - * - * @brief TAO_Notify_SupplierAdmin_i - * - * Implements the CosNotifyChannelAdmin::SupplierAdmin interface. - */ -class TAO_Notify_Export TAO_Notify_SupplierAdmin_i : public POA_CosNotifyChannelAdmin::SupplierAdmin, public PortableServer::RefCountServantBase -{ - -public: - // @@ Pradeep: you may want to drop the _i suffix, it buys you - // nothing.. - - /// Constructor - /// <event_channel> is this objects parent. - TAO_Notify_SupplierAdmin_i (TAO_Notify_EventChannel_i* event_channel); - - /// Destructor - virtual ~TAO_Notify_SupplierAdmin_i (); - - ///Initialize the Supplier Admin. - void init (CosNotifyChannelAdmin::AdminID myID, - CosNotifyChannelAdmin::InterFilterGroupOperator myOperator, - PortableServer::POA_ptr my_POA - ACE_ENV_ARG_DECL); - - // @@ Pradeep: could this method be const? Try to use const - // operations when possible. - /// Get our filter admin. - TAO_Notify_FilterAdmin_i& get_filter_admin (void); - - /// Deactivate servant from <proxy_pushconsumer_POA_>. - void deactivate_proxy_pushconsumer (PortableServer::Servant servant - ACE_ENV_ARG_DECL); - - /// This id is no longer in use.It can be reused by <proxy_pushconsumer_ids_> - void proxy_pushconsumer_destroyed (CosNotifyChannelAdmin::ProxyID proxyID); - - // = Interface methods - virtual CosNotifyChannelAdmin::AdminID MyID ( - ACE_ENV_SINGLE_ARG_DECL - ) - ACE_THROW_SPEC (( - CORBA::SystemException - )); - - /// Return the CORBA object for this servant. - CosNotifyChannelAdmin::SupplierAdmin_ptr get_ref (ACE_ENV_SINGLE_ARG_DECL); - - /// Accesor for the event manager. - TAO_Notify_Event_Manager* get_event_manager (void); - - // @@ Pradeep: Don't forget to indent this stuff, at the very least - // it should not start in the first column! - virtual CosNotifyChannelAdmin::EventChannel_ptr MyChannel ( - ACE_ENV_SINGLE_ARG_DECL - ) - ACE_THROW_SPEC (( - CORBA::SystemException - )); - -virtual CosNotifyChannelAdmin::InterFilterGroupOperator MyOperator ( - ACE_ENV_SINGLE_ARG_DECL - ) - ACE_THROW_SPEC (( - CORBA::SystemException - )); - -virtual CosNotifyChannelAdmin::ProxyIDSeq * pull_consumers ( - ACE_ENV_SINGLE_ARG_DECL - ) - ACE_THROW_SPEC (( - CORBA::SystemException - )); - -virtual CosNotifyChannelAdmin::ProxyIDSeq * push_consumers ( - ACE_ENV_SINGLE_ARG_DECL - ) - ACE_THROW_SPEC (( - CORBA::SystemException - )); - -virtual CosNotifyChannelAdmin::ProxyConsumer_ptr get_proxy_consumer ( - CosNotifyChannelAdmin::ProxyID proxy_id - ACE_ENV_ARG_DECL - ) - ACE_THROW_SPEC (( - CORBA::SystemException, - CosNotifyChannelAdmin::ProxyNotFound - )); - -virtual CosNotifyChannelAdmin::ProxyConsumer_ptr obtain_notification_pull_consumer ( - CosNotifyChannelAdmin::ClientType ctype, - CosNotifyChannelAdmin::ProxyID_out proxy_id - ACE_ENV_ARG_DECL - ) - ACE_THROW_SPEC (( - CORBA::SystemException, - CosNotifyChannelAdmin::AdminLimitExceeded - )); - -virtual CosNotifyChannelAdmin::ProxyConsumer_ptr obtain_notification_push_consumer ( - CosNotifyChannelAdmin::ClientType ctype, - CosNotifyChannelAdmin::ProxyID_out proxy_id - ACE_ENV_ARG_DECL - ) - ACE_THROW_SPEC (( - CORBA::SystemException, - CosNotifyChannelAdmin::AdminLimitExceeded - )); - -virtual void destroy ( - ACE_ENV_SINGLE_ARG_DECL - ) - ACE_THROW_SPEC (( - CORBA::SystemException - )); - -virtual CosNotification::QoSProperties * get_qos ( - ACE_ENV_SINGLE_ARG_DECL - ) - ACE_THROW_SPEC (( - CORBA::SystemException - )); - -virtual void set_qos ( - const CosNotification::QoSProperties & qos - ACE_ENV_ARG_DECL - ) - ACE_THROW_SPEC (( - CORBA::SystemException, - CosNotification::UnsupportedQoS - )); - -virtual void validate_qos ( - const CosNotification::QoSProperties & required_qos, - CosNotification::NamedPropertyRangeSeq_out available_qos - ACE_ENV_ARG_DECL - ) - ACE_THROW_SPEC (( - CORBA::SystemException, - CosNotification::UnsupportedQoS - )); - -virtual void offer_change ( - const CosNotification::EventTypeSeq & added, - const CosNotification::EventTypeSeq & removed - ACE_ENV_ARG_DECL - ) - ACE_THROW_SPEC (( - CORBA::SystemException, - CosNotifyComm::InvalidEventType - )); - -virtual CosNotifyFilter::FilterID add_filter ( - CosNotifyFilter::Filter_ptr new_filter - ACE_ENV_ARG_DECL - ) - ACE_THROW_SPEC (( - CORBA::SystemException - )); - -virtual void remove_filter ( - CosNotifyFilter::FilterID filter - ACE_ENV_ARG_DECL - ) - ACE_THROW_SPEC (( - CORBA::SystemException, - CosNotifyFilter::FilterNotFound - )); - -virtual CosNotifyFilter::Filter_ptr get_filter ( - CosNotifyFilter::FilterID filter - ACE_ENV_ARG_DECL - ) - ACE_THROW_SPEC (( - CORBA::SystemException, - CosNotifyFilter::FilterNotFound - )); - -virtual CosNotifyFilter::FilterIDSeq * get_all_filters ( - ACE_ENV_SINGLE_ARG_DECL - ) - ACE_THROW_SPEC (( - CORBA::SystemException - )); - -virtual void remove_all_filters ( - ACE_ENV_SINGLE_ARG_DECL - ) - ACE_THROW_SPEC (( - CORBA::SystemException - )); - -virtual CosEventChannelAdmin::ProxyPushConsumer_ptr obtain_push_consumer ( - ACE_ENV_SINGLE_ARG_DECL - ) - ACE_THROW_SPEC (( - CORBA::SystemException - )); - -virtual CosEventChannelAdmin::ProxyPullConsumer_ptr obtain_pull_consumer ( - ACE_ENV_SINGLE_ARG_DECL - ) - ACE_THROW_SPEC (( - CORBA::SystemException - )); - -protected: - // = Helper methods - /// Obtain a proxy pushconsumer object - CORBA::Object_ptr obtain_proxy_pushconsumer_i (CosNotifyChannelAdmin::ProxyID proxy_id ACE_ENV_ARG_DECL); - - /// Obtain a structured proxy pushconsumer object. - CORBA::Object_ptr obtain_struct_proxy_pushconsumer_i (CosNotifyChannelAdmin::ProxyID proxy_id ACE_ENV_ARG_DECL); - - /// Obtain a sequence pushconsumer object - CORBA::Object_ptr obtain_sequence_proxy_pushconsumer_i (CosNotifyChannelAdmin::ProxyID proxy_id ACE_ENV_ARG_DECL); - - // = Data members - /// The channel to which we belong. - TAO_Notify_EventChannel_i* event_channel_; - - /// The factory for channel objects. - TAO_Notify_CO_Factory* channel_objects_factory_; - - /// The factory for POA based containers. - TAO_Notify_POA_Factory* poa_factory_; - - /// The locking strategy. - ACE_Lock* lock_; - - /// Flag to tell if the child poa's should be destroyed. - CORBA::Boolean destory_child_POAs_; - - /// The inter filter operator to use. - CosNotifyChannelAdmin::InterFilterGroupOperator filter_operator_; - - /// My ID. - CosNotifyChannelAdmin::AdminID my_id_; - - /// This is the POA in which we live. - PortableServer::POA_var my_POA_; - - /// The POA in which all our push consumers live. - /// We create and own this POA. - PortableServer::POA_var proxy_pushconsumer_POA_; - - // @@ Pradeep: you may want to use a typedef for that template. - /// Id generator for proxy push consumers. - TAO_Notify_ID_Pool_Ex<CosNotifyChannelAdmin::ProxyID, - CosNotifyChannelAdmin::ProxyIDSeq> proxy_pushconsumer_ids_; - - /// Handle QoS admin methods. - TAO_Notify_QoSAdmin_i qos_admin_; - - /// Handles the Filter Admin methods. - TAO_Notify_FilterAdmin_i filter_admin_; -}; - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -#pragma warning(pop) -#endif /* _MSC_VER */ - -#include "ace/post.h" -#endif /* TAO_NOTIFY_SUPPLIERADMIN_I_H */ diff --git a/TAO/orbsvcs/orbsvcs/Notify/Notify_Update_Dispatch_Command.cpp b/TAO/orbsvcs/orbsvcs/Notify/Notify_Update_Dispatch_Command.cpp deleted file mode 100644 index 9df8ecd1499..00000000000 --- a/TAO/orbsvcs/orbsvcs/Notify/Notify_Update_Dispatch_Command.cpp +++ /dev/null @@ -1,32 +0,0 @@ -// $Id$ - -#include "Notify_Update_Dispatch_Command.h" -#include "Notify_Collection.h" -#include "Notify_Listeners.h" -#include "Notify_Event.h" - -ACE_RCSID(Notify, Notify_Update_Dispatch_Command, "$Id$") - -TAO_Notify_Update_Dispatch_Command::TAO_Notify_Update_Dispatch_Command (TAO_Notify_UpdateListener* update_listener, TAO_Notify_EventType_List& added, TAO_Notify_EventType_List& removed) - :TAO_Notify_Command (0,0), - update_listener_ (update_listener), - added_ (added), - removed_ (removed) -{ - update_listener_->_incr_refcnt (); -} - -TAO_Notify_Update_Dispatch_Command::~TAO_Notify_Update_Dispatch_Command () -{ - update_listener_->_decr_refcnt (); -} - -int -TAO_Notify_Update_Dispatch_Command::execute (ACE_ENV_SINGLE_ARG_DECL) -{ - this->update_listener_->dispatch_update (this->added_, this->removed_ - ACE_ENV_ARG_PARAMETER); - ACE_CHECK_RETURN (-1); - - return 0; -} diff --git a/TAO/orbsvcs/orbsvcs/Notify/Notify_Update_Dispatch_Command.h b/TAO/orbsvcs/orbsvcs/Notify/Notify_Update_Dispatch_Command.h deleted file mode 100644 index 33eb47b5d8f..00000000000 --- a/TAO/orbsvcs/orbsvcs/Notify/Notify_Update_Dispatch_Command.h +++ /dev/null @@ -1,58 +0,0 @@ -/* -*- C++ -*- */ -//============================================================================= -/** - * @file Notify_Update_Dispatch_Command.h - * - * $Id$ - * - * - * - * - * @author Pradeep Gore <pradeep@cs.wustl.edu> - */ -//============================================================================= - - -#ifndef TAO_NOTIFY_UPDATE_DISPATCH_COMMAND_H -#define TAO_NOTIFY_UPDATE_DISPATCH_COMMAND_H -#include "ace/pre.h" -#include "Notify_Command.h" - -#if !defined (ACE_LACKS_PRAGMA_ONCE) -# pragma once -#endif /* ACE_LACKS_PRAGMA_ONCE */ - -#include "notify_export.h" -#include "tao/corba.h" -#include "Notify_Collection.h" - -class TAO_Notify_UpdateListener; - - /** - * @class TAO_Notify_Update_Dispatch_Command - * - * @brief TAO_Notify_Update_Dispatch_Command - * - */ -class TAO_Notify_Export TAO_Notify_Update_Dispatch_Command : public TAO_Notify_Command -{ - public: - // = Initialization and termination code - TAO_Notify_Update_Dispatch_Command (TAO_Notify_UpdateListener* listener, TAO_Notify_EventType_List& added, TAO_Notify_EventType_List& removed); - - ~TAO_Notify_Update_Dispatch_Command (); - - /// Command callback - virtual int execute (ACE_ENV_SINGLE_ARG_DECL); - -protected: - // = Data Members - TAO_Notify_UpdateListener* update_listener_; - TAO_Notify_EventType_List added_; - TAO_Notify_EventType_List removed_; -}; - -/********************************************************************/ - -#include "ace/post.h" -#endif /* TAO_NOTIFY_UPDATE_DISPATCH_COMMAND_H */ diff --git a/TAO/orbsvcs/orbsvcs/Notify/Notify_Worker_Task.cpp b/TAO/orbsvcs/orbsvcs/Notify/Notify_Worker_Task.cpp deleted file mode 100644 index 4c23104c958..00000000000 --- a/TAO/orbsvcs/orbsvcs/Notify/Notify_Worker_Task.cpp +++ /dev/null @@ -1,49 +0,0 @@ -// $Id$ - -#include "Notify_Worker_Task.h" -#include "Notify_Command.h" -#include "Notify_AdminProperties.h" -#include "Notify_QoSAdmin_i.h" - -ACE_RCSID(Notify, Notify_Worker_Task, "$Id$") - -TAO_Notify_Worker_Task::TAO_Notify_Worker_Task (void) -{ -} - -TAO_Notify_Worker_Task::~TAO_Notify_Worker_Task () -{ -} - -int -TAO_Notify_Worker_Task::init_task (TAO_Notify_AdminProperties* const, - TAO_Notify_QoSAdmin_i* const) -{ - return 0; -} - -void -TAO_Notify_Worker_Task::shutdown (ACE_ENV_SINGLE_ARG_DECL_NOT_USED) -{ -} - -int -TAO_Notify_Worker_Task::process_event (TAO_Notify_Command *mb ACE_ENV_ARG_DECL, ACE_Time_Value * /*tv*/) -{ - int result = mb->execute (ACE_ENV_SINGLE_ARG_PARAMETER); - ACE_CHECK_RETURN (-1); - - ACE_Message_Block::release (mb); - return result; -} - -void -TAO_Notify_Worker_Task::update_admin (TAO_Notify_AdminProperties& /*admin*/) -{ -} - -void -TAO_Notify_Worker_Task::update_qos (TAO_Notify_QoSAdmin_i& /*qos_admin*/) -{ -} - diff --git a/TAO/orbsvcs/orbsvcs/Notify/Notify_Worker_Task.h b/TAO/orbsvcs/orbsvcs/Notify/Notify_Worker_Task.h deleted file mode 100644 index cac105b333d..00000000000 --- a/TAO/orbsvcs/orbsvcs/Notify/Notify_Worker_Task.h +++ /dev/null @@ -1,66 +0,0 @@ -/* -*- C++ -*- */ -//============================================================================= -/** - * @file Notify_Worker_Task.h - * - * $Id$ - * - * Worker task handles command execution. - * - * - * @author Pradeep Gore <pradeep@cs.wustl.edu> - */ -//============================================================================= - - -#ifndef TAO_NOTIFY_WORKER_TASK_H -#define TAO_NOTIFY_WORKER_TASK_H - -#include "ace/pre.h" -#include "ace/Task.h" - -#if !defined (ACE_LACKS_PRAGMA_ONCE) -# pragma once -#endif /* ACE_LACKS_PRAGMA_ONCE */ - -#include "tao/corba.h" -#include "Notify_Command.h" -#include "notify_export.h" - -class TAO_Notify_AdminProperties; -class TAO_Notify_QoSAdmin_i; - -/** - * @class TAO_Notify_Worker_Task - * - * @brief TAO_Notify_Worker_Task - * - * A worker task that we use for various event processing jobs. - * Also see TAO_Notify_Command - This task executes Notify_Command objects. - * This implementation simply executes the command. - */ -class TAO_Notify_Export TAO_Notify_Worker_Task -{ -public: - // = Initialization and termination code - /// Constructor. - TAO_Notify_Worker_Task (void); - virtual ~TAO_Notify_Worker_Task (); - - /// Init the task - virtual int init_task (TAO_Notify_AdminProperties* const admin_properties, - TAO_Notify_QoSAdmin_i* const qos_properties); - - /// Shutdown this task. - virtual void shutdown (ACE_ENV_SINGLE_ARG_DECL); - - /// Process the command. - virtual int process_event (TAO_Notify_Command *mb ACE_ENV_ARG_DECL, ACE_Time_Value *tv = 0); - - virtual void update_admin (TAO_Notify_AdminProperties& admin); - virtual void update_qos (TAO_Notify_QoSAdmin_i& qos_admin); - -}; - -#include "ace/post.h" -#endif /* TAO_NOTIFY_WORKER_TASK_H */ diff --git a/TAO/orbsvcs/orbsvcs/SSLIOP/IIOP_SSL_Connector.cpp b/TAO/orbsvcs/orbsvcs/SSLIOP/IIOP_SSL_Connector.cpp deleted file mode 100644 index 523048ac84c..00000000000 --- a/TAO/orbsvcs/orbsvcs/SSLIOP/IIOP_SSL_Connector.cpp +++ /dev/null @@ -1,280 +0,0 @@ -// -*- C++ -*- -// -// $Id$ - -#include "IIOP_SSL_Connector.h" - -#include "SSLIOP_Util.h" - -#include "tao/debug.h" -#include "tao/ORB_Core.h" -#include "tao/Environment.h" -#include "tao/IIOP_Endpoint.h" -#include "tao/Transport_Cache_Manager.h" -#include "tao/Invocation.h" -#include "tao/Thread_Lane_Resources.h" -#include "tao/Connect_Strategy.h" -#include "ace/Strategies_T.h" - -ACE_RCSID (TAO_SSLIOP, - IIOP_SSL_Connector, - "$Id$") - - -#if defined (ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION) - -template class TAO_Connect_Concurrency_Strategy<TAO_IIOP_SSL_Connection_Handler>; -template class TAO_Connect_Creation_Strategy<TAO_IIOP_SSL_Connection_Handler>; -template class ACE_Strategy_Connector<TAO_IIOP_SSL_Connection_Handler, ACE_SOCK_CONNECTOR>; -template class ACE_Connect_Strategy<TAO_IIOP_SSL_Connection_Handler, ACE_SOCK_CONNECTOR>; -template class ACE_Connector<TAO_IIOP_SSL_Connection_Handler, ACE_SOCK_CONNECTOR>; -template class ACE_Svc_Tuple<TAO_IIOP_SSL_Connection_Handler>; - -template class ACE_Map_Manager<int, ACE_Svc_Tuple<TAO_IIOP_SSL_Connection_Handler> *, TAO_SYNCH_RW_MUTEX>; -template class ACE_Map_Iterator_Base<int, ACE_Svc_Tuple<TAO_IIOP_SSL_Connection_Handler> *, TAO_SYNCH_RW_MUTEX>; -template class ACE_Map_Entry<int,ACE_Svc_Tuple<TAO_IIOP_SSL_Connection_Handler>*>; -template class ACE_Map_Iterator<int,ACE_Svc_Tuple<TAO_IIOP_SSL_Connection_Handler>*,TAO_SYNCH_RW_MUTEX>; -template class ACE_Map_Reverse_Iterator<int,ACE_Svc_Tuple<TAO_IIOP_SSL_Connection_Handler>*,TAO_SYNCH_RW_MUTEX>; - -#elif defined (ACE_HAS_TEMPLATE_INSTANTIATION_PRAGMA) - -#pragma instantiate TAO_Connect_Concurrency_Strategy<TAO_IIOP_SSL_Connection_Handler> -#pragma instantiate TAO_Connect_Creation_Strategy<TAO_IIOP_SSL_Connection_Handler> -#pragma instantiate ACE_Strategy_Connector<TAO_IIOP_SSL_Connection_Handler, ACE_SOCK_CONNECTOR> -#pragma instantiate ACE_Connect_Strategy<TAO_IIOP_SSL_Connection_Handler, ACE_SOCK_CONNECTOR> -#pragma instantiate ACE_Connector<TAO_IIOP_SSL_Connection_Handler, ACE_SOCK_Connector> -#pragma instantiate ACE_Svc_Tuple<TAO_IIOP_SSL_Connection_Handler> - - -#pragma instantiate ACE_Connector<TAO_IIOP_SSL_Connection_Handler, ACE_SOCK_Connector> -#pragma instantiate ACE_Creation_Strategy<TAO_IIOP_SSL_Connection_Handler> -#pragma instantiate ACE_Svc_Tuple<TAO_IIOP_SSL_Connection_Handler> -#pragma instantiate ACE_Map_Manager<int, ACE_Svc_Tuple<TAO_IIOP_SSL_Connection_Handler> *, TAO_SYNCH_RW_MUTEX> -#pragma instantiate ACE_Map_Iterator_Base<int, ACE_Svc_Tuple<TAO_IIOP_SSL_Connection_Handler> *, TAO_SYNCH_RW_MUTEX> -#pragma instantiate ACE_Map_Entry<int,ACE_Svc_Tuple<TAO_IIOP_SSL_Connection_Handler>*> -#pragma instantiate ACE_Map_Iterator<int,ACE_Svc_Tuple<TAO_IIOP_SSL_Connection_Handler>*,TAO_SYNCH_RW_MUTEX> -#pragma instantiate ACE_Map_Reverse_Iterator<int,ACE_Svc_Tuple<TAO_IIOP_SSL_Connection_Handler>*,TAO_SYNCH_RW_MUTEX> - -#endif /* ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION */ - - -TAO_IIOP_SSL_Connector::TAO_IIOP_SSL_Connector (CORBA::Boolean flag) - : TAO_IIOP_Connector (flag), - connect_strategy_ (), - base_connector_ () -{ -} - -TAO_IIOP_SSL_Connector::~TAO_IIOP_SSL_Connector (void) -{ -} - -int -TAO_IIOP_SSL_Connector::open (TAO_ORB_Core *orb_core) -{ - this->orb_core (orb_core); - - // Create our connect strategy - if (this->create_connect_strategy () == -1) - return -1; - - if (this->init_tcp_properties () != 0) - return -1; - - if (TAO_SSLIOP_Util::setup_handler_state (orb_core, - &(this->tcp_properties_), - this->handler_state_) != 0) - return -1; - - /// Our connect creation strategy - TAO_IIOP_SSL_CONNECT_CREATION_STRATEGY *connect_creation_strategy = 0; - - ACE_NEW_RETURN (connect_creation_strategy, - TAO_IIOP_SSL_CONNECT_CREATION_STRATEGY - (orb_core->thr_mgr (), - orb_core, - &(this->handler_state_), - this->lite_flag_), - -1); - - /// Our activation strategy - TAO_IIOP_SSL_CONNECT_CONCURRENCY_STRATEGY *concurrency_strategy = 0; - - ACE_NEW_RETURN (concurrency_strategy, - TAO_IIOP_SSL_CONNECT_CONCURRENCY_STRATEGY (orb_core), - -1); - - - return this->base_connector_.open (this->orb_core ()->reactor (), - connect_creation_strategy, - &this->connect_strategy_, - concurrency_strategy); -} - -int -TAO_IIOP_SSL_Connector::close (void) -{ - delete this->base_connector_.creation_strategy (); - delete this->base_connector_.concurrency_strategy (); - return this->base_connector_.close (); -} - -int -TAO_IIOP_SSL_Connector::set_validate_endpoint (TAO_Endpoint *endpoint) -{ - if (endpoint->tag () != IOP::TAG_INTERNET_IOP) - return -1; - - TAO_IIOP_Endpoint *iiop_endpoint = - ACE_dynamic_cast (TAO_IIOP_Endpoint *, - endpoint); - - if (iiop_endpoint == 0) - return -1; - - const ACE_INET_Addr &remote_address = - iiop_endpoint->object_addr (); - - // Verify that the remote ACE_INET_Addr was initialized properly. - // Failure can occur if hostname lookup failed when initializing the - // remote ACE_INET_Addr. - if (remote_address.get_type () != AF_INET) - { - if (TAO_debug_level > 0) - { - ACE_DEBUG ((LM_DEBUG, - ACE_TEXT ("TAO (%P|%t) IIOP connection failed.\n") - ACE_TEXT ("TAO (%P|%t) This is most likely ") - ACE_TEXT ("due to a hostname lookup ") - ACE_TEXT ("failure.\n"))); - } - - return -1; - } - - return 0; -} - -int -TAO_IIOP_SSL_Connector::make_connection ( - TAO_GIOP_Invocation *invocation, - TAO_Transport_Descriptor_Interface *desc) -{ - if (TAO_debug_level > 0) - ACE_DEBUG ((LM_DEBUG, - ACE_TEXT ("TAO (%P|%t) Connector::connect - ") - ACE_TEXT ("looking for IIOP connection.\n"))); - - - - TAO_IIOP_Endpoint *iiop_endpoint = - ACE_dynamic_cast (TAO_IIOP_Endpoint *, - desc->endpoint ()); - - if (TAO_debug_level > 4) - ACE_DEBUG ((LM_DEBUG, - ACE_TEXT ("(%P|%t) IIOP_SSL_Connector::connect ") - ACE_TEXT ("making a new connection \n"))); - - const ACE_INET_Addr &remote_address = - iiop_endpoint->object_addr (); - - // Get the right synch options - ACE_Synch_Options synch_options; - - ACE_Time_Value *max_wait_time = 0; - - ACE_Time_Value connection_timeout; - int timeout = 0; - - this->orb_core ()->connection_timeout (invocation->stub (), - timeout, - connection_timeout); - if (!timeout) - max_wait_time = - invocation->max_wait_time (); - else - max_wait_time = &connection_timeout; - - - this->active_connect_strategy_->synch_options (max_wait_time, - synch_options); - - TAO_IIOP_SSL_Connection_Handler *svc_handler = 0; - - // Active connect - int result = this->base_connector_.connect (svc_handler, - remote_address, - synch_options); - - if (result == -1 && errno == EWOULDBLOCK) - { - result = - this->active_connect_strategy_->wait (svc_handler, - max_wait_time); - } - - // Reduce the refcount to the svc_handler that we have. The - // increment to the handler is done in make_svc_handler (). Now - // that we dont need the reference to it anymore we can decrement - // the refcount whether the connection is successful ot not. - svc_handler->decr_refcount (); - - if (TAO_debug_level > 0) - ACE_DEBUG ((LM_DEBUG, - ACE_TEXT ("(%P|%t) IIOP_SSL_Connector::connect ") - ACE_TEXT ("The result is <%d> \n"), result)); - - if (result == -1) - { - // Give users a clue to the problem. - if (TAO_debug_level) - { - ACE_DEBUG ((LM_ERROR, - ACE_TEXT ("(%P|%t) %s:%u, connection to ") - ACE_TEXT ("%s:%d failed (%p)\n"), - __FILE__, - __LINE__, - iiop_endpoint->host (), - iiop_endpoint->port (), - ACE_TEXT ("errno"))); - } - return -1; - } - - TAO_Transport *base_transport = - TAO_Transport::_duplicate (svc_handler->transport ()); - - // Add the handler to Cache. - // - // Note that the IIOP-only transport descriptor is used! - int retval = - this->orb_core ()->lane_resources ().transport_cache ().cache_transport (desc, - base_transport); - - if (retval != 0 && TAO_debug_level > 0) - { - ACE_DEBUG ((LM_DEBUG, - ACE_TEXT ("(%P|%t) IIOP_SSL_Connector::connect ") - ACE_TEXT ("could not add the new connection to ") - ACE_TEXT ("Cache \n"))); - } - - // If the wait strategy wants us to be registered with the reactor - // then we do so. - retval = base_transport->wait_strategy ()->register_handler (); - - if (retval != 0 && TAO_debug_level > 0) - { - ACE_DEBUG ((LM_DEBUG, - ACE_LIB_TEXT ("(%P|%t) IIOP_Connector::connect ") - ACE_LIB_TEXT ("could not add the new connection to reactor \n"))); - } - - // Handover the transport pointer to the Invocation class. - TAO_Transport *&transport = invocation->transport (); - - transport = base_transport; - - return 0; -} diff --git a/TAO/orbsvcs/orbsvcs/SSLIOP/SSLIOP_Acceptor.cpp b/TAO/orbsvcs/orbsvcs/SSLIOP/SSLIOP_Acceptor.cpp deleted file mode 100644 index e606e973301..00000000000 --- a/TAO/orbsvcs/orbsvcs/SSLIOP/SSLIOP_Acceptor.cpp +++ /dev/null @@ -1,691 +0,0 @@ -// This may look like C, but it's really -*- C++ -*- -// -// $Id$ - -#include "SSLIOP_Acceptor.h" -#include "SSLIOP_Profile.h" -#include "SSLIOP_Current.h" -#include "SSLIOP_Util.h" - -#include "tao/MProfile.h" -#include "tao/ORB_Core.h" -#include "tao/Server_Strategy_Factory.h" -#include "tao/debug.h" - -#if !defined(__ACE_INLINE__) -#include "SSLIOP_Acceptor.i" -#endif /* __ACE_INLINE__ */ - -ACE_RCSID (TAO_SSLIOP, - SSLIOP_Acceptor, - "$Id$") - -#if defined (ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION) - -template class ACE_Acceptor<TAO_SSLIOP_Connection_Handler, ACE_SSL_SOCK_ACCEPTOR>; -template class ACE_Strategy_Acceptor<TAO_SSLIOP_Connection_Handler, ACE_SSL_SOCK_ACCEPTOR>; -template class ACE_Accept_Strategy<TAO_SSLIOP_Connection_Handler, ACE_SSL_SOCK_ACCEPTOR>; -template class ACE_Creation_Strategy<TAO_SSLIOP_Connection_Handler>; -template class ACE_Concurrency_Strategy<TAO_SSLIOP_Connection_Handler>; -template class ACE_Scheduling_Strategy<TAO_SSLIOP_Connection_Handler>; -template class TAO_Creation_Strategy<TAO_SSLIOP_Connection_Handler>; -template class TAO_Concurrency_Strategy<TAO_SSLIOP_Connection_Handler>; -template class TAO_Accept_Strategy<TAO_SSLIOP_Connection_Handler, ACE_SSL_SOCK_ACCEPTOR>; - -#elif defined (ACE_HAS_TEMPLATE_INSTANTIATION_PRAGMA) - -#pragma instantiate ACE_Acceptor<TAO_SSLIOP_Connection_Handler, ACE_SSL_SOCK_ACCEPTOR> -#pragma instantiate ACE_Strategy_Acceptor<TAO_SSLIOP_Connection_Handler, ACE_SSL_SOCK_ACCEPTOR> -#pragma instantiate ACE_Accept_Strategy<TAO_SSLIOP_Connection_Handler, ACE_SSL_SOCK_ACCEPTOR> -#pragma instantiate ACE_Creation_Strategy<TAO_SSLIOP_Connection_Handler> -#pragma instantiate ACE_Concurrency_Strategy<TAO_SSLIOP_Connection_Handler> -#pragma instantiate ACE_Scheduling_Strategy<TAO_SSLIOP_Connection_Handler> -#pragma instantiate TAO_Creation_Strategy<TAO_SSLIOP_Connection_Handler> -#pragma instantiate TAO_Concurrency_Strategy<TAO_SSLIOP_Connection_Handler> -#pragma instantiate TAO_Accept_Strategy<TAO_SSLIOP_Connection_Handler, ACE_SSL_SOCK_ACCEPTOR> - -#endif /* ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION */ - -TAO_SSLIOP_Acceptor::TAO_SSLIOP_Acceptor (Security::QOP qop) - : TAO_IIOP_SSL_Acceptor (), - ssl_acceptor_ (), - creation_strategy_ (0), - concurrency_strategy_ (0), - accept_strategy_ (0), - handler_state_ () -{ - // Clear all bits in the SSLIOP::SSL association option fields. - this->ssl_component_.target_supports = 0; - this->ssl_component_.target_requires = 0; - - // SSLIOP requires these Security::AssociationOptions by default. - ACE_SET_BITS (this->ssl_component_.target_requires, - Security::Integrity - | Security::Confidentiality - | Security::NoDelegation); - - // SSLIOP supports these Security::AssociationOptions by default. - ACE_SET_BITS (this->ssl_component_.target_supports, - Security::Integrity - | Security::Confidentiality - | Security::EstablishTrustInTarget - | Security::NoDelegation); - - // Initialize the default SSL port to zero (wild card port). - this->ssl_component_.port = 0; - - // @@ This should go away once we support setting security - // association options through policies. - if (qop == Security::SecQOPNoProtection) - ACE_SET_BITS (this->ssl_component_.target_supports, - Security::NoProtection); -} - -TAO_SSLIOP_Acceptor::~TAO_SSLIOP_Acceptor (void) -{ - // Make sure we are closed before we start destroying the - // strategies. - this->close (); - - delete this->creation_strategy_; - delete this->concurrency_strategy_; - delete this->accept_strategy_; -} - -int -TAO_SSLIOP_Acceptor::create_profile (const TAO_ObjectKey &object_key, - TAO_MProfile &mprofile, - CORBA::Short priority) -{ - // Sanity check. - if (this->endpoint_count_ == 0) - return -1; - - // Check if multiple endpoints should be put in one profile or - // if they should be spread across multiple profiles. - if (priority == TAO_INVALID_PRIORITY) - return this->create_new_profile (object_key, - mprofile, - priority); - else - return this->create_shared_profile (object_key, - mprofile, - priority); -} - -int -TAO_SSLIOP_Acceptor::create_new_profile (const TAO_ObjectKey &object_key, - TAO_MProfile &mprofile, - CORBA::Short priority) -{ - // Adding this->endpoint_count_ to the TAO_MProfile. - int count = mprofile.profile_count (); - if ((mprofile.size () - count) < this->endpoint_count_ - && mprofile.grow (count + this->endpoint_count_) == -1) - return -1; - - // Create a profile for each acceptor endpoint. - for (size_t i = 0; i < this->endpoint_count_; ++i) - { - TAO_SSLIOP_Profile *pfile = 0; - - // @@ We need to create an SSLIOP::SSL component for the object - // we're creating an MProfile for. This will allow us to - // properly embed secure invocation policies in the generated - // IOR, i.e. secure invocation policies on a per-object - // basis, rather than on a per-endpoint basis. If no secure - // invocation policies have been set then we should use the - // below default SSLIOP::SSL component. - ACE_NEW_RETURN (pfile, - TAO_SSLIOP_Profile (this->hosts_[i], - this->addrs_[i].get_port_number (), - object_key, - this->addrs_[i], - this->version_, - this->orb_core_, - &(this->ssl_component_)), - -1); - pfile->endpoint ()->priority (priority); - - if (mprofile.give_profile (pfile) == -1) - { - pfile->_decr_refcnt (); - pfile = 0; - return -1; - } - - if (this->orb_core_->orb_params ()->std_profile_components () == 0) - continue; - - pfile->tagged_components ().set_orb_type (TAO_ORB_TYPE); - - CONV_FRAME::CodeSetComponentInfo code_set_info; - code_set_info.ForCharData.native_code_set = - TAO_DEFAULT_CHAR_CODESET_ID; - code_set_info.ForWcharData.native_code_set = - TAO_DEFAULT_WCHAR_CODESET_ID; - pfile->tagged_components ().set_code_sets (code_set_info); - - IOP::TaggedComponent component; - component.tag = SSLIOP::TAG_SSL_SEC_TRANS; - - // @@???? Check this code, only intended as guideline... - TAO_OutputCDR cdr; - cdr << TAO_OutputCDR::from_boolean (TAO_ENCAP_BYTE_ORDER); - - // @@ We need to create an SSLIOP::SSL component for the object - // we're creating an MProfile for. This will allow us to - // properly embed secure invocation policies in the generated - // IOR, i.e. secure invocation policies on a per-object - // basis, rather than on a per-endpoint basis. If no secure - // invocation policies have been set then we should use the - // below default SSLIOP::SSL component. - cdr << this->ssl_component_; - - // TAO extension, replace the contents of the octet sequence with - // the CDR stream - CORBA::ULong length = cdr.total_length (); - component.component_data.length (length); - CORBA::Octet *buf = component.component_data.get_buffer (); - for (const ACE_Message_Block *i = cdr.begin (); - i != 0; - i = i->cont ()) - { - ACE_OS::memcpy (buf, i->rd_ptr (), i->length ()); - buf += i->length (); - } - - pfile->tagged_components ().set_component (component); - } - - return 0; -} - - -int -TAO_SSLIOP_Acceptor::create_shared_profile (const TAO_ObjectKey &object_key, - TAO_MProfile &mprofile, - CORBA::Short priority) -{ - size_t index = 0; - TAO_Profile *pfile = 0; - TAO_SSLIOP_Profile *ssliop_profile = 0; - - // First see if <mprofile> already contains a SSLIOP profile. - for (TAO_PHandle i = 0; i != mprofile.profile_count (); ++i) - { - pfile = mprofile.get_profile (i); - if (pfile->tag () == IOP::TAG_INTERNET_IOP) - { - ssliop_profile = ACE_dynamic_cast (TAO_SSLIOP_Profile *, - pfile); - if (ssliop_profile == 0) - return -1; - break; - } - } - - // If <mprofile> doesn't contain SSLIOP_Profile, we need to create - // one. - if (ssliop_profile == 0) - { - // @@ We need to create an SSLIOP::SSL component for the object - // we're creating an MProfile for. This will allow us to - // properly embed secure invocation policies in the generated - // IOR, i.e. secure invocation policies on a per-object - // basis, rather than on a per-endpoint basis. If no secure - // invocation policies have been set then we should use the - // below default SSLIOP::SSL component. - ACE_NEW_RETURN (ssliop_profile, - TAO_SSLIOP_Profile (this->hosts_[0], - this->addrs_[0].get_port_number (), - object_key, - this->addrs_[0], - this->version_, - this->orb_core_, - &(this->ssl_component_)), - -1); - - TAO_SSLIOP_Endpoint *ssliop_endp = - ACE_dynamic_cast (TAO_SSLIOP_Endpoint *, - ssliop_profile->endpoint ()); - - ssliop_endp->priority (priority); - ssliop_endp->iiop_endpoint ()->priority (priority); - - if (mprofile.give_profile (ssliop_profile) == -1) - { - ssliop_profile->_decr_refcnt (); - ssliop_profile = 0; - return -1; - } - - if (this->orb_core_->orb_params ()->std_profile_components () != 0) - { - ssliop_profile->tagged_components ().set_orb_type (TAO_ORB_TYPE); - - CONV_FRAME::CodeSetComponentInfo code_set_info; - code_set_info.ForCharData.native_code_set = - TAO_DEFAULT_CHAR_CODESET_ID; - code_set_info.ForWcharData.native_code_set = - TAO_DEFAULT_WCHAR_CODESET_ID; - ssliop_profile->tagged_components ().set_code_sets (code_set_info); - - IOP::TaggedComponent component; - component.tag = SSLIOP::TAG_SSL_SEC_TRANS; - // @@???? Check this code, only intended as guideline... - TAO_OutputCDR cdr; - cdr << TAO_OutputCDR::from_boolean (TAO_ENCAP_BYTE_ORDER); - - // @@ We need to create an SSLIOP::SSL component for the - // object we're creating an MProfile for. This will - // allow us to properly embed secure invocation policies - // in the generated IOR, i.e. secure invocation policies - // on a per-object basis, rather than on a per-endpoint - // basis. If no secure invocation policies have been set - // then we should use the below default SSLIOP::SSL - // component. - cdr << this->ssl_component_; - - // TAO extension, replace the contents of the octet sequence with - // the CDR stream - CORBA::ULong length = cdr.total_length (); - component.component_data.length (length); - CORBA::Octet *buf = component.component_data.get_buffer (); - for (const ACE_Message_Block *i = cdr.begin (); - i != 0; - i = i->cont ()) - { - ACE_OS::memcpy (buf, i->rd_ptr (), i->length ()); - buf += i->length (); - } - - ssliop_profile->tagged_components ().set_component (component); - } - - index = 1; - } - - // Add any remaining endpoints to the SSLIOP_Profile. - for (; - index < this->endpoint_count_; - ++index) - { - TAO_SSLIOP_Endpoint *ssl_endp = 0; - TAO_IIOP_Endpoint *iiop_endp = 0; - ACE_NEW_RETURN (iiop_endp, - TAO_IIOP_Endpoint (this->hosts_[index], - this->addrs_[index].get_port_number (), - this->addrs_[index]), - -1); - iiop_endp->priority (priority); - - ACE_NEW_RETURN (ssl_endp, - TAO_SSLIOP_Endpoint (&(this->ssl_component_), - iiop_endp), - -1); - - ssl_endp->priority (priority); - ssliop_profile->add_endpoint (ssl_endp); - } - - return 0; -} - -int -TAO_SSLIOP_Acceptor::is_collocated (const TAO_Endpoint *endpoint) -{ - const TAO_SSLIOP_Endpoint *endp = - ACE_dynamic_cast (const TAO_SSLIOP_Endpoint *, - endpoint); - - // Make sure the dynamically cast pointer is valid. - if (endp == 0) - return 0; - - for (size_t i = 0; i < this->endpoint_count_; ++i) - { - // @@ TODO The following code looks funky, why only the address - // is compared? What about the IIOP address? Why force a - // DNS lookup every time an SSLIOP object is decoded: - // - // http://deuce.doc.wustl.edu/bugzilla/show_bug.cgi?id=1220 - // - if (endp->iiop_endpoint ()->object_addr () == this->addrs_[i]) - return 1; // Collocated - } - - return 0; // Not collocated -} - -int -TAO_SSLIOP_Acceptor::close (void) -{ - int r = this->ssl_acceptor_.close (); - if (this->TAO_IIOP_SSL_Acceptor::close () != 0) - r = -1; - - return r; -} - -int -TAO_SSLIOP_Acceptor::open (TAO_ORB_Core *orb_core, - ACE_Reactor *reactor, - int major, - int minor, - const char *address, - const char *options) -{ - // Ensure that neither the endpoint configuration nor the ORB - // configuration violate security measures. - if (this->verify_secure_configuration (orb_core, - major, - minor) != 0) - return -1; - - // Open the non-SSL enabled endpoints, then open the SSL enabled - // endpoints. - if (this->TAO_IIOP_SSL_Acceptor::open (orb_core, - reactor, - major, - minor, - address, - options) != 0) - return -1; - - // The SSL port is set in the parse_options() method. All we have - // to do is call open_i() - ACE_INET_Addr addr (this->ssl_component_.port, - this->addrs_[0].get_host_addr ()); - - return this->ssliop_open_i (orb_core, - addr, - reactor); -} - -int -TAO_SSLIOP_Acceptor::open_default (TAO_ORB_Core *orb_core, - ACE_Reactor *reactor, - int major, - int minor, - const char *options) -{ - // Ensure that neither the endpoint configuration nor the ORB - // configuration violate security measures. - if (this->verify_secure_configuration (orb_core, - major, - minor) != 0) - return -1; - - // Open the non-SSL enabled endpoints, then open the SSL enabled - // endpoints. - if (this->TAO_IIOP_SSL_Acceptor::open_default (orb_core, - reactor, - major, - minor, - options) == -1) - return -1; - - // Now that each network interface's hostname has been cached, open - // an endpoint on each network interface using the INADDR_ANY - // address. - ACE_INET_Addr addr; - - // this->ssl_component_.port is initialized to zero or it is set in - // this->parse_options(). - if (addr.set (this->ssl_component_.port, - ACE_static_cast(ACE_UINT32, INADDR_ANY), - 1) != 0) - return -1; - - return this->ssliop_open_i (orb_core, - addr, - reactor); -} - -int -TAO_SSLIOP_Acceptor::ssliop_open_i (TAO_ORB_Core *orb_core, - const ACE_INET_Addr& addr, - ACE_Reactor *reactor) -{ - this->orb_core_ = orb_core; - - int giop_lite = 0; - // Explicitly disable GIOPlite support since it introduces security - // holes. - - if (TAO_SSLIOP_Util::setup_handler_state (this->orb_core_, - &(this->tcp_properties_), - this->handler_state_) != 0) - return -1; - - ACE_NEW_RETURN (this->creation_strategy_, - TAO_SSLIOP_CREATION_STRATEGY (this->orb_core_, - &(this->handler_state_), - giop_lite), - -1); - - ACE_NEW_RETURN (this->concurrency_strategy_, - TAO_SSLIOP_CONCURRENCY_STRATEGY (this->orb_core_), - -1); - - ACE_NEW_RETURN (this->accept_strategy_, - TAO_SSLIOP_ACCEPT_STRATEGY (this->orb_core_), - -1); - - if (this->ssl_acceptor_.open (addr, - reactor, - this->creation_strategy_, - this->accept_strategy_, - this->concurrency_strategy_) == -1) - { - if (TAO_debug_level > 0) - ACE_DEBUG ((LM_DEBUG, - ACE_TEXT ("\n\nTAO (%P|%t) ") - ACE_TEXT ("SSLIOP_Acceptor::open_i - %p\n\n"), - ACE_TEXT ("cannot open acceptor"))); - return -1; - } - - ACE_INET_Addr ssl_address; - - // We do this to make sure the port number the endpoint is listening - // on gets set in the addr. - if (this->ssl_acceptor_.acceptor ().get_local_addr (ssl_address) != 0) - { - // @@ Should this be a catastrophic error??? - if (TAO_debug_level > 0) - ACE_DEBUG ((LM_DEBUG, - ACE_TEXT ("\n\nTAO (%P|%t) ") - ACE_TEXT ("SSLIOP_Acceptor::open_i - %p\n\n"), - ACE_TEXT ("cannot get local addr"))); - return -1; - } - - // Reset the SSL endpoint port to the one chosen by the OS (or by - // the user if provided. - this->ssl_component_.port = ssl_address.get_port_number (); - - (void) this->ssl_acceptor_.acceptor().enable (ACE_CLOEXEC); - // This avoids having child processes acquire the listen socket - // thereby denying the server the opportunity to restart on a - // well-known endpoint. This does not affect the aberrent behavior - // on Win32 platforms. - - if (TAO_debug_level > 5) - { - for (size_t i = 0; i < this->endpoint_count_; ++i) - { - ACE_DEBUG ((LM_DEBUG, - ACE_TEXT ("TAO (%P|%t) ") - ACE_TEXT ("SSLIOP_Acceptor::open_i - ") - ACE_TEXT ("listening on: <%s:%u>\n"), - this->hosts_[i], - this->ssl_component_.port)); - } - } - - return 0; -} - -int -TAO_SSLIOP_Acceptor::parse_options (const char *str) -{ - if (str == 0) - return 0; // No options to parse. Not a problem. - - // Use an option format similar to the one used for CGI scripts in - // HTTP URLs. - // e.g.: option1=foo&option2=bar - - ACE_CString options (str); - - size_t len = options.length (); - - const char option_delimiter = '&'; - - // Count the number of options. - - CORBA::ULong option_count = 1; - // Number of endpoints in the string (initialized to 1). - - // Only check for endpoints after the protocol specification and - // before the object key. - for (size_t i = 0; i < len; ++i) - if (options[i] == option_delimiter) - option_count++; - - // The idea behind the following loop is to split the options into - // (option, name) pairs. - // For example, - // `option1=foo&option2=bar' - // will be parsed into: - // `option1=foo' - // `option2=bar' - - int begin = 0; - int end = -1; - - // @@ We should add options to set the security association options, - // or are those controlled by Policies? - // @@ They are controlled by the SecureInvocation policies defined - // in the Security Service specification. - for (CORBA::ULong j = 0; j < option_count; ++j) - { - begin += end + 1; - - if (j < option_count - 1) - end = options.find (option_delimiter, begin); - else - end = len - begin; // Handle last endpoint differently - - if (end == begin) - ACE_ERROR_RETURN ((LM_ERROR, - ACE_TEXT ("TAO (%P|%t) Zero length") - ACE_TEXT ("IIOP/SSL option.\n")), - -1); - else if (end != ACE_CString::npos) - { - ACE_CString opt = options.substring (begin, end); - - int slot = opt.find ("="); - - if (slot == ACE_static_cast (int, len - 1) - || slot == ACE_CString::npos) - ACE_ERROR_RETURN ((LM_ERROR, - ACE_TEXT ("TAO (%P|%t) IIOP/SSL") - ACE_TEXT ("option <%s> is ") - ACE_TEXT ("missing a value.\n"), - opt.c_str ()), - -1); - - ACE_CString name = opt.substring (0, slot); - ACE_CString value = opt.substring (slot + 1); - - if (name.length () == 0) - ACE_ERROR_RETURN ((LM_ERROR, - "TAO (%P|%t) Zero length IIOP/SSL " - "option name.\n"), - -1); - - if (name == "priority") - { - ACE_ERROR_RETURN ((LM_ERROR, - ACE_TEXT ("TAO (%P|%t) Invalid SSLIOP endpoint format: ") - ACE_TEXT ("endpoint priorities no longer supported. \n"), - value.c_str ()), - -1); - } - else if (ACE_OS::strcmp (name.c_str (), "ssl_port") == 0) - { - int ssl_port = ACE_OS::atoi (value.c_str ()); - - if (ssl_port >= 0 && ssl_port < 65536) - this->ssl_component_.port = ssl_port; - else - ACE_ERROR_RETURN ((LM_ERROR, - ACE_TEXT ("TAO (%P|%t) Invalid ") - ACE_TEXT ("IIOP/SSL endpoint ") - ACE_TEXT ("port: <%s>\n"), - value.c_str ()), - -1); - } - else - ACE_ERROR_RETURN ((LM_ERROR, - ACE_TEXT ("TAO (%P|%t) Invalid ") - ACE_TEXT ("IIOP/SSL ") - ACE_TEXT ("option: <%s>\n"), - name.c_str ()), - -1); - } - } - return 0; -} - -int -TAO_SSLIOP_Acceptor::verify_secure_configuration (TAO_ORB_Core *orb_core, - int major, - int minor) -{ - // Sanity check. - if (major < 1) - { - // There is no such thing as IIOP 0.x. - errno = EINVAL; - return -1; - } - - // In order to support a secure connection, the SSLIOP::SSL tagged - // component must be embedded in the IOR. This isn't possible if - // the user elects to disable standard profile components. - // Similarly, IIOP 1.0 does not support tagged components, which - // makes it impossible to embed the SSLIOP::SSL tagged component - // within the IOR. If the given object explicitly disallows - // insecure invocations and standard profile components are - // disabled, then return with an error since secure invocations - // cannot be supported without standard profile components. - // - // Note that it isn't enough to support NoProtection. NoProtection - // must be required since "support" does not preclude the secure - // port from being used. - - if ((orb_core->orb_params ()->std_profile_components () == 0 - || (major == 1 && minor == 0)) - && ACE_BIT_DISABLED (this->ssl_component_.target_requires, - Security::NoProtection)) - { - if (TAO_debug_level > 0) - ACE_ERROR ((LM_ERROR, - ACE_TEXT ("(%P|%t) Cannot support secure ") - ACE_TEXT ("IIOP over SSL connection if\n") - ACE_TEXT ("(%P|%t) standard profile ") - ACE_TEXT ("components are disabled\n") - ACE_TEXT ("(%P|%t) or IIOP 1.0 endpoint is ") - ACE_TEXT ("used.\n"))); - - errno = EINVAL; - return -1; - } - - return 0; -} diff --git a/TAO/orbsvcs/orbsvcs/SSLIOP/SSLIOP_Acceptor.h b/TAO/orbsvcs/orbsvcs/SSLIOP/SSLIOP_Acceptor.h deleted file mode 100644 index 8584ca11718..00000000000 --- a/TAO/orbsvcs/orbsvcs/SSLIOP/SSLIOP_Acceptor.h +++ /dev/null @@ -1,150 +0,0 @@ -// -*- C++ -*- - -//============================================================================= -/** - * @file SSLIOP_Acceptor.h - * - * $Id$ - * - * IIOP/SSL specific acceptor processing - * - * - * @author Carlos O'Ryan <coryan@uci.edu> - * @author Ossama Othman <ossama@uci.edu> - */ -//============================================================================= - - -#ifndef TAO_SSLIOP_ACCEPTOR_H -#define TAO_SSLIOP_ACCEPTOR_H - -#include "ace/pre.h" - -#include "ace/config-all.h" - -#if !defined (ACE_LACKS_PRAGMA_ONCE) -# pragma once -#endif /* ACE_LACKS_PRAGMA_ONCE */ - -#include "IIOP_SSL_Acceptor.h" -#include "SSLIOP_Connection_Handler.h" - -#include "ace/SSL/SSL_SOCK_Acceptor.h" - -#include "orbsvcs/SSLIOPC.h" - - - -/** - * @class TAO_SSLIOP_Acceptor - * - * @brief The SSLIOP-specific bridge class for the concrete acceptor. - */ -class TAO_SSLIOP_Export TAO_SSLIOP_Acceptor - : public TAO_IIOP_SSL_Acceptor -{ - -public: - - /// Constructor. - TAO_SSLIOP_Acceptor (Security::QOP qop); - - /// Destructor. - ~TAO_SSLIOP_Acceptor (void); - - typedef ACE_Strategy_Acceptor<TAO_SSLIOP_Connection_Handler, ACE_SSL_SOCK_ACCEPTOR> TAO_SSLIOP_BASE_ACCEPTOR; - typedef TAO_Creation_Strategy<TAO_SSLIOP_Connection_Handler> TAO_SSLIOP_CREATION_STRATEGY; - typedef TAO_Concurrency_Strategy<TAO_SSLIOP_Connection_Handler> TAO_SSLIOP_CONCURRENCY_STRATEGY; - typedef TAO_Accept_Strategy<TAO_SSLIOP_Connection_Handler, ACE_SSL_SOCK_ACCEPTOR> TAO_SSLIOP_ACCEPT_STRATEGY; - - /** - * @name The TAO_Acceptor Methods - * - * Check the documentation in tao/Pluggable.h for details. - */ - //@{ - virtual int open (TAO_ORB_Core *orb_core, - ACE_Reactor *reactor, - int version_major, - int version_minor, - const char *address, - const char *options = 0); - virtual int open_default (TAO_ORB_Core *orb_core, - ACE_Reactor *reactor, - int version_major, - int version_minor, - const char *options = 0); - virtual int close (void); - virtual int create_profile (const TAO_ObjectKey &object_key, - TAO_MProfile &mprofile, - CORBA::Short priority); - virtual int is_collocated (const TAO_Endpoint* endpoint); - //@} - - /// Retrieve the SSLIOP::SSL component associated with the endpoints - /// set up by this acceptor. - const SSLIOP::SSL &ssl_component (void) const; - -private: - - /// Implement the common part of the open*() methods. - int ssliop_open_i (TAO_ORB_Core *orb_core, - const ACE_INET_Addr& addr, - ACE_Reactor *reactor); - - /// Parse protocol specific options. - int parse_options (const char *options); - - - /// Ensure that neither the endpoint configuration nor the ORB - /// configuration violate security measures. - int verify_secure_configuration (TAO_ORB_Core *orb_core, - int major, - int minor); - - /// Helper method to add a new profile to the mprofile for - /// each endpoint. - int create_new_profile (const TAO_ObjectKey &object_key, - TAO_MProfile &mprofile, - CORBA::Short priority); - - /// Helper method to create a profile that contains all of - /// our endpoints. - int create_shared_profile (const TAO_ObjectKey &object_key, - TAO_MProfile &mprofile, - CORBA::Short priority); - -private: - - /// The concrete acceptor, as a pointer to it's base class. - TAO_SSLIOP_BASE_ACCEPTOR ssl_acceptor_; - - /** - * @name Acceptor Strategies - * - * Strategies used when accepting an incoming connection. - */ - TAO_SSLIOP_CREATION_STRATEGY *creation_strategy_; - TAO_SSLIOP_CONCURRENCY_STRATEGY *concurrency_strategy_; - TAO_SSLIOP_ACCEPT_STRATEGY *accept_strategy_; - - /// The SSL component. - /** - * This is the SSLIOP endpoint-specific tagged component that is - * embedded in a given IOR. - */ - SSLIOP::SSL ssl_component_; - - /// State that will be passed to each SSLIOP connection handler upon - /// creation. - TAO_SSLIOP_Connection_Handler_State handler_state_; - -}; - -#if defined(__ACE_INLINE__) -#include "SSLIOP_Acceptor.i" -#endif /* __ACE_INLINE__ */ - -#include "ace/post.h" - -#endif /* TAO_SSLIOP_ACCEPTOR_H */ diff --git a/TAO/orbsvcs/orbsvcs/SSLIOP/SSLIOP_Connector.cpp b/TAO/orbsvcs/orbsvcs/SSLIOP/SSLIOP_Connector.cpp deleted file mode 100644 index 8a4ba4a32ec..00000000000 --- a/TAO/orbsvcs/orbsvcs/SSLIOP/SSLIOP_Connector.cpp +++ /dev/null @@ -1,677 +0,0 @@ -// -*- C++ -*- - -#include "SSLIOP_Connector.h" -#include "SSLIOP_Credentials.h" -#include "SSLIOP_Profile.h" -#include "SSLIOP_Util.h" -#include "SSLIOP_X509.h" - -#include "tao/debug.h" -#include "tao/ORB_Core.h" -#include "tao/Client_Strategy_Factory.h" -#include "tao/Environment.h" -#include "tao/Base_Transport_Property.h" -#include "tao/Transport_Cache_Manager.h" -#include "tao/Invocation.h" -#include "tao/Thread_Lane_Resources.h" -#include "tao/Stub.h" -#include "tao/Transport_Connector.h" -#include "tao/Blocked_Connect_Strategy.h" -#include "ace/Auto_Ptr.h" - -ACE_RCSID (TAO_SSLIOP, - SSLIOP_Connector, - "$Id$") - -#if defined (ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION) - -template class TAO_Connect_Concurrency_Strategy<TAO_SSLIOP_Connection_Handler>; -template class TAO_Connect_Creation_Strategy<TAO_SSLIOP_Connection_Handler>; -template class ACE_Strategy_Connector<TAO_SSLIOP_Connection_Handler, ACE_SSL_SOCK_CONNECTOR>; -template class ACE_Connect_Strategy<TAO_SSLIOP_Connection_Handler, ACE_SSL_SOCK_CONNECTOR>; -template class ACE_Connector<TAO_SSLIOP_Connection_Handler, ACE_SSL_SOCK_CONNECTOR>; -template class ACE_Svc_Tuple<TAO_SSLIOP_Connection_Handler>; - -template class ACE_Map_Manager<int, ACE_Svc_Tuple<TAO_SSLIOP_Connection_Handler> *, TAO_SYNCH_RW_MUTEX>; -template class ACE_Map_Iterator_Base<int, ACE_Svc_Tuple<TAO_SSLIOP_Connection_Handler> *, TAO_SYNCH_RW_MUTEX>; -template class ACE_Map_Entry<int,ACE_Svc_Tuple<TAO_SSLIOP_Connection_Handler>*>; -template class ACE_Map_Iterator<int,ACE_Svc_Tuple<TAO_SSLIOP_Connection_Handler>*,TAO_SYNCH_RW_MUTEX>; -template class ACE_Map_Reverse_Iterator<int,ACE_Svc_Tuple<TAO_SSLIOP_Connection_Handler>*,TAO_SYNCH_RW_MUTEX>; -template class ACE_Auto_Basic_Ptr<TAO_SSLIOP_Connection_Handler>; - -#elif defined (ACE_HAS_TEMPLATE_INSTANTIATION_PRAGMA) - -#pragma instantiate TAO_Connect_Concurrency_Strategy<TAO_SSLIOP_Connection_Handler> -#pragma instantiate TAO_Connect_Creation_Strategy<TAO_SSLIOP_Connection_Handler> -#pragma instantiate ACE_Strategy_Connector<TAO_SSLIOP_Connection_Handler, ACE_SSL_SOCK_CONNECTOR> -#pragma instantiate ACE_Connect_Strategy<TAO_SSLIOP_Connection_Handler, ACE_SSL_SOCK_CONNECTOR> -#pragma instantiate ACE_Connector<TAO_SSLIOP_Connection_Handler, ACE_SSL_SOCK_CONNECTOR> - -#pragma instantiate ACE_Creation_Strategy<TAO_SSLIOP_Connection_Handler> -#pragma instantiate ACE_Svc_Tuple<TAO_SSLIOP_Connection_Handler> - -#pragma instantiate ACE_Map_Manager<int, ACE_Svc_Tuple<TAO_SSLIOP_Connection_Handler> *, TAO_SYNCH_RW_MUTEX> -#pragma instantiate ACE_Map_Iterator_Base<int, ACE_Svc_Tuple<TAO_SSLIOP_Connection_Handler> *, TAO_SYNCH_RW_MUTEX> -#pragma instantiate ACE_Map_Entry<int,ACE_Svc_Tuple<TAO_SSLIOP_Connection_Handler>*> -#pragma instantiate ACE_Map_Iterator<int,ACE_Svc_Tuple<TAO_SSLIOP_Connection_Handler>*,TAO_SYNCH_RW_MUTEX> -#pragma instantiate ACE_Map_Reverse_Iterator<int,ACE_Svc_Tuple<TAO_SSLIOP_Connection_Handler>*,TAO_SYNCH_RW_MUTEX> -#pragma instantiate ACE_Auto_Basic_Ptr<TAO_SSLIOP_Connection_Handler> - -#endif /* ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION */ - - -TAO_SSLIOP_Connector::TAO_SSLIOP_Connector (Security::QOP qop) - : TAO_IIOP_SSL_Connector (), - qop_ (qop), - connect_strategy_ (), - base_connector_ (), - handler_state_ () -{ -} - -int -TAO_SSLIOP_Connector::open (TAO_ORB_Core *orb_core) -{ - // Since the ACE_Strategy_Connector (and ACE_Connector) cannot - // handle non-blocking connections with protocols that have more - // than once handshake, such as SSL, force blocking connections for - // SSLIOP. This deficiency will be addressed soon. - ACE_NEW_RETURN (this->active_connect_strategy_, - TAO_Blocked_Connect_Strategy (orb_core), - -1); - - if (this->TAO_IIOP_SSL_Connector::open (orb_core) == -1) - return -1; - - if (TAO_SSLIOP_Util::setup_handler_state (orb_core, - &(this->tcp_properties_), - this->handler_state_) != 0) - return -1; - - // Our connect creation strategy - TAO_SSLIOP_CONNECT_CREATION_STRATEGY *connect_creation_strategy = 0; - - ACE_NEW_RETURN (connect_creation_strategy, - TAO_SSLIOP_CONNECT_CREATION_STRATEGY - (orb_core->thr_mgr (), - orb_core, - &(this->handler_state_), - 0 /* Forcibly disable TAO's GIOPlite feature. - It introduces a security hole. */), - -1); - - // Our activation strategy - TAO_SSLIOP_CONNECT_CONCURRENCY_STRATEGY *concurrency_strategy = 0; - - ACE_NEW_RETURN (concurrency_strategy, - TAO_SSLIOP_CONNECT_CONCURRENCY_STRATEGY (orb_core), - -1); - - ACE_Reactor *r = this->orb_core ()->reactor (); - - return this->base_connector_.open (r, - connect_creation_strategy, - &this->connect_strategy_, - concurrency_strategy); -} - -int -TAO_SSLIOP_Connector::close (void) -{ - (void) this->TAO_IIOP_SSL_Connector::close (); - - delete this->base_connector_.creation_strategy (); - delete this->base_connector_.concurrency_strategy (); - return this->base_connector_.close (); -} - -int -TAO_SSLIOP_Connector::connect (TAO_GIOP_Invocation *invocation, - TAO_Transport_Descriptor_Interface *desc - ACE_ENV_ARG_DECL) -{ - if (TAO_debug_level > 0) - ACE_DEBUG ((LM_DEBUG, - ACE_TEXT ("TAO (%P|%t) Connector::connect - ") - ACE_TEXT ("looking for SSLIOP connection.\n"))); - - TAO_Endpoint *endpoint = desc->endpoint (); - - if (endpoint->tag () != IOP::TAG_INTERNET_IOP) - return -1; - - TAO_SSLIOP_Endpoint *ssl_endpoint = - ACE_dynamic_cast (TAO_SSLIOP_Endpoint *, - endpoint); - - if (ssl_endpoint == 0) - return -1; - - // @@ TODO: The EstablishTrust policy should be evaluated once per - // connection, not once per invocation. This should - // improve performance. - // - // Check if the user overrode the default establishment of trust - // policy for the current object. - CORBA::Policy_var policy = - invocation->stub ()->get_policy (Security::SecEstablishTrustPolicy - ACE_ENV_ARG_PARAMETER); - ACE_CHECK_RETURN (-1); - - SecurityLevel2::EstablishTrustPolicy_var trust_policy = - SecurityLevel2::EstablishTrustPolicy::_narrow (policy.in () - ACE_ENV_ARG_PARAMETER); - ACE_CHECK_RETURN (-1); - - // We use a pointer and temporary to make it obvious to determine - // if no establishment of trust policy was set. Specifically, if - // the "trust" pointer below is zero, then the SSLIOP pluggable - // protocol default value will be used. - Security::EstablishTrust trust = { 0 , 0 }; - if (!CORBA::is_nil (trust_policy.in ())) - { - trust = trust_policy->trust (ACE_ENV_SINGLE_ARG_PARAMETER); - ACE_CHECK_RETURN (-1); - } - - // Flag that states whether any form of establishment of trust - // should occur. - CORBA::Boolean establish_trust = - trust.trust_in_target || trust.trust_in_client; - - // @@ Should this be in a "policy validator?" - // - // If the SSL port is zero, then no SSLIOP tagged component was - // available in the IOR, meaning that there is no way to establish - // trust. Throw an exception. - if (ssl_endpoint->ssl_component ().port == 0 - && establish_trust) - { - if (TAO_debug_level > 0) - { - ACE_ERROR ((LM_ERROR, - ACE_TEXT ("TAO_SSLIOP (%P|%t) ERROR: ") - ACE_TEXT ("Cannot establish trust since ") - ACE_TEXT ("no SSLIOP tagged component was ") - ACE_TEXT ("found in the IOR.\n"))); - } - - ACE_THROW_RETURN (CORBA::INV_POLICY (), // @@ Correct exception? - -1); - } - - // Check if the user overrode the default Quality-of-Protection for - // the current object. - policy = invocation->stub ()->get_policy (Security::SecQOPPolicy - ACE_ENV_ARG_PARAMETER); - ACE_CHECK_RETURN (-1); - - SecurityLevel2::QOPPolicy_var qop_policy = - SecurityLevel2::QOPPolicy::_narrow (policy.in () - ACE_ENV_ARG_PARAMETER); - ACE_CHECK_RETURN (-1); - - // Temporary variable used to avoid overwriting the default value - // set when the ORB was initialized. - Security::QOP qop = this->qop_; - - if (!CORBA::is_nil (qop_policy.in ())) - { - qop = qop_policy->qop (ACE_ENV_SINGLE_ARG_PARAMETER); - ACE_CHECK_RETURN (-1); - } - - // If the SSL port is zero, then no SSLIOP tagged component was - // available in the IOR, meaning that there is no way to make a - // secure invocation. Throw an exception. - if (qop != Security::SecQOPNoProtection - && ssl_endpoint->ssl_component ().port == 0) - { - if (TAO_debug_level > 0) - { - ACE_ERROR ((LM_ERROR, - ACE_TEXT ("TAO_SSLIOP (%P|%t) ERROR: ") - ACE_TEXT ("Cannot make secure invocation since ") - ACE_TEXT ("no SSLIOP tagged component was ") - ACE_TEXT ("found in the IOR.\n"))); - } - - ACE_THROW_RETURN (CORBA::INV_POLICY (), // @@ Correct exception? - -1); - } - - if ((!establish_trust && qop == Security::SecQOPNoProtection) - || ssl_endpoint->ssl_component ().port == 0) - { - return this->iiop_connect (ssl_endpoint, - invocation - ACE_ENV_ARG_PARAMETER); - } - - return this->ssliop_connect (ssl_endpoint, - qop, - trust, - invocation, - desc - ACE_ENV_ARG_PARAMETER); -} - - -TAO_Profile * -TAO_SSLIOP_Connector::create_profile (TAO_InputCDR& cdr) -{ - TAO_Profile *pfile; - ACE_NEW_RETURN (pfile, - TAO_SSLIOP_Profile (this->orb_core ()), - 0); - - int r = pfile->decode (cdr); - if (r == -1) - { - pfile->_decr_refcnt (); - pfile = 0; - } - - return pfile; -} - -TAO_Profile * -TAO_SSLIOP_Connector::make_profile (ACE_ENV_SINGLE_ARG_DECL) -{ - // The endpoint should be of the form: - // N.n@host:port/object_key - // or: - // host:port/object_key - - TAO_Profile *profile = 0; - ACE_NEW_THROW_EX (profile, - TAO_SSLIOP_Profile (this->orb_core (), - 0), // SSL component - CORBA::NO_MEMORY ( - CORBA::SystemException::_tao_minor_code ( - TAO_DEFAULT_MINOR_CODE, - ENOMEM), - CORBA::COMPLETED_NO)); - ACE_CHECK_RETURN (0); - - return profile; -} - -int -TAO_SSLIOP_Connector::iiop_connect (TAO_SSLIOP_Endpoint *ssl_endpoint, - TAO_GIOP_Invocation *invocation - ACE_ENV_ARG_DECL) -{ - const SSLIOP::SSL &ssl_component = ssl_endpoint->ssl_component (); - - // Only allow connection to the insecure IIOP port if the endpoint - // explicitly allows it, i.e. if the Security::NoProtection security - // association bit is set in the SSLIOP::SSL::target_supports field. - // The server performs the same permission check, so this check is - // an optimization since a connection will not be established - // needlessly, i.e. rejected due to lack of permission. - // - // Note that it is still possible for the standard non-SSLIOP aware - // IIOP pluggable protocol to attempt to connect to the insecure - // port. In that case, the server will have to prevent the - // connection, and subsequently the request, from completing. - if (ACE_BIT_DISABLED (ssl_component.target_supports, - Security::NoProtection)) - ACE_THROW_RETURN (CORBA::NO_PERMISSION ( - CORBA_SystemException::_tao_minor_code ( - TAO_DEFAULT_MINOR_CODE, - EPERM), - CORBA::COMPLETED_NO), - -1); - - TAO_IIOP_Endpoint *iiop_endpoint = ssl_endpoint->iiop_endpoint (); - - // An IIOP-only transport descriptor must be used instead of the one - // passed to this method since the latter is used for SSLIOP - // connections. Doing so prevents an IIOP-only cached transport - // from being associated with an SSLIOP connection. - TAO_Base_Transport_Property iiop_desc (iiop_endpoint); - - // Note that the IIOP-only transport descriptor is used! - return this->TAO_IIOP_SSL_Connector::connect (invocation, - &iiop_desc - ACE_ENV_ARG_PARAMETER); -} - -int -TAO_SSLIOP_Connector::ssliop_connect (TAO_SSLIOP_Endpoint *ssl_endpoint, - Security::QOP qop, - const Security::EstablishTrust &trust, - TAO_GIOP_Invocation *invocation, - TAO_Transport_Descriptor_Interface *desc - ACE_ENV_ARG_DECL) -{ - TAO_Transport *&transport = invocation->transport (); - - const SSLIOP::SSL &ssl_component = ssl_endpoint->ssl_component (); - - // @@ The following check for "required insecurity" seems odd, but - // I haven't seen anything in the Security spec that says this - // policy isn't possible. - // -Ossama - - // If the endpoint requires an insecure connection, i.e. the - // Security::NoProtection security association bit in the - // SSLIOP::SSL::target_requires field is enabled, then prevent an - // SSL connection from occuring. - if (ACE_BIT_ENABLED (ssl_component.target_requires, - Security::NoProtection)) - ACE_THROW_RETURN (CORBA::NO_PERMISSION ( - CORBA_SystemException::_tao_minor_code ( - TAO_DEFAULT_MINOR_CODE, - EPERM), - CORBA::COMPLETED_NO), - -1); - - // If the invocation wants integrity without confidentiality but the - // server does not support "no protection," then it won't be - // possible provide integrity. In order to support integrity - // without confidentiality, encryption must be disabled but secure - // hashes must remain enabled. This is achieved using the "eNULL" - // cipher. However, the "eNULL" cipher is only enabled on the - // server side if "no protection" is enabled. - if (ACE_BIT_DISABLED (ssl_component.target_supports, - Security::NoProtection) - && qop == Security::SecQOPIntegrity) - ACE_THROW_RETURN (CORBA::INV_POLICY (), -1); - - const ACE_INET_Addr &remote_address = - ssl_endpoint->object_addr (); - - // Verify that the remote ACE_INET_Addr was initialized - // properly. Failure can occur if hostname lookup failed when - // initializing the remote ACE_INET_Addr. - if (remote_address.get_type () != AF_INET) - { - if (TAO_debug_level > 0) - { - ACE_DEBUG ((LM_DEBUG, - ACE_TEXT ("TAO (%P|%t) SSLIOP connection failed.\n") - ACE_TEXT ("TAO (%P|%t) This is most likely ") - ACE_TEXT ("due to a hostname lookup ") - ACE_TEXT ("failure.\n"))); - } - - return -1; - } - - int result = 0; - TAO_SSLIOP_Connection_Handler *svc_handler = 0; - TAO_Transport *base_transport = 0; - - // Check the Cache first for connections - if (this->orb_core ()->lane_resources ().transport_cache ().find_transport ( - desc, - base_transport) == 0) - { - if (TAO_debug_level > 5) - ACE_DEBUG ((LM_DEBUG, - ACE_TEXT ("(%P|%t) SSLIOP_Connector::connect ") - ACE_TEXT ("got an existing transport with ID %d\n"), - base_transport->id ())); - } - else - { - if (TAO_debug_level > 4) - ACE_DEBUG ((LM_DEBUG, - ACE_TEXT ("(%P|%t) SSLIOP_Connector::connect ") - ACE_TEXT ("making a new connection \n"))); - - // Purge connections (if necessary) - this->orb_core ()->lane_resources ().transport_cache ().purge (); - - // The svc_handler is created beforehand so that we can get - // access to the underlying ACE_SSL_SOCK_Stream (the peer) and - // its SSL pointer member prior to descending into the - // ACE_Strategy_Connector (the "base_connector_"). This is - // thread-safe and reentrant, hence no synchronization is - // necessary. - if (this->base_connector_.creation_strategy ()->make_svc_handler ( - svc_handler) != 0) - { - if (TAO_debug_level > 0) - ACE_DEBUG ((LM_ERROR, - ACE_TEXT ("(%P|%t) Unable to create SSLIOP ") - ACE_TEXT ("service handler.\n"))); - - return -1; - } - - ACE_Auto_Basic_Ptr<TAO_SSLIOP_Connection_Handler> - safe_handler (svc_handler); - - // Setup the establishment of trust connection properties, if - // any. - int verify_mode = 0; - - // On the server side, "trust_in_client" requires that a peer - // (client) certificate exist. Fail if one doesn't exist. - // - // In SSLIOP's case, trust_in_client also implies - // trust_in_target. - if (trust.trust_in_client) - verify_mode = SSL_VERIFY_PEER | SSL_VERIFY_FAIL_IF_NO_PEER_CERT; - - // Require verification of the target's certificate. - else if (trust.trust_in_target) - verify_mode = SSL_VERIFY_PEER; - - // Trust in neither the client nor the target is explicitly - // specified. Use the default setting. - else - verify_mode = - ACE_SSL_Context::instance ()->default_verify_mode (); - - ::SSL_set_verify (svc_handler->peer ().ssl (), - verify_mode, - 0); - - // The "eNULL" cipher disables encryption but still uses a - // secure hash (e.g. SHA1 or MD5) to ensure integrity. (Try the - // command "openssl ciphers -v eNULL".) - // - // Note that it is not possible to completely disable protection - // here. - if ((qop == Security::SecQOPNoProtection - || qop == Security::SecQOPIntegrity) - && ::SSL_set_cipher_list (svc_handler->peer ().ssl (), - "eNULL") == 0) - { - if (TAO_debug_level > 0) - ACE_DEBUG ((LM_ERROR, - ACE_TEXT ("(%P|%t) Unable to set eNULL ") - ACE_TEXT ("SSL cipher.\n"))); - - ACE_THROW_RETURN (CORBA::INV_POLICY (), -1); - } - - TAO_SSLIOP_Credentials_var credentials = - this->retrieve_credentials (invocation->stub (), - svc_handler->peer ().ssl () - ACE_ENV_ARG_PARAMETER); - ACE_CHECK_RETURN (-1); - - svc_handler = safe_handler.release (); - - // Get the max_wait_time - ACE_Time_Value *max_wait_time = 0; - - ACE_Time_Value connection_timeout; - int timeout = 0; - - this->orb_core ()->connection_timeout (invocation->stub (), - timeout, - connection_timeout); - if (!timeout) - max_wait_time = - invocation->max_wait_time (); - else - max_wait_time = &connection_timeout; - - // Get the right synch options - ACE_Synch_Options synch_options; - - this->active_connect_strategy_->synch_options (max_wait_time, - synch_options); - - // We obtain the transport in the <svc_handler> variable. - // As we know now that the connection is not available in - // Cache we can make a new connection - result = this->base_connector_.connect (svc_handler, - remote_address, - synch_options); - - // We dont have to wait since we only use a blocked connect - // strategy. - if (result == -1 && errno == EWOULDBLOCK) - { - result = - this->active_connect_strategy_->wait (svc_handler, - max_wait_time); - } - - // Reduce the refcount to the svc_handler that we have. The - // increment to the handler is done in make_svc_handler (). Now - // that we dont need the reference to it anymore we can decrement - // the refcount whether the connection is successful ot not. - svc_handler->decr_refcount (); - - if (TAO_debug_level > 0) - ACE_DEBUG ((LM_DEBUG, - ACE_TEXT ("(%P|%t) SSLIOP_Connector::connect - ") - ACE_TEXT ("The result is <%d> \n"), result)); - - if (result == -1) - { - if (TAO_debug_level > 0) - { - char buffer [MAXHOSTNAMELEN + 6 + 1]; - ssl_endpoint->addr_to_string (buffer, - sizeof (buffer) - 1); - ACE_DEBUG ((LM_ERROR, - ACE_TEXT ("(%P|%t) %N:%l, connection to ") - ACE_TEXT ("%s, SSL port %d failed (%p)\n"), - buffer, - remote_address.get_port_number (), - ACE_TEXT ("errno"))); - } - - return -1; - } - - base_transport = TAO_Transport::_duplicate (svc_handler->transport ()); - - ssl_endpoint->qop (qop); - ssl_endpoint->trust (trust); - ssl_endpoint->credentials (credentials.in ()); - - // Add the handler to Cache - int retval = - this->orb_core ()->lane_resources ().transport_cache ().cache_transport ( - desc, - base_transport); - - if (retval != 0 && TAO_debug_level > 0) - { - ACE_DEBUG ((LM_DEBUG, - ACE_TEXT ("(%P|%t) SSLIOP_Connector::connect ") - ACE_TEXT ("could not add the new connection to ") - ACE_TEXT ("Cache.\n"))); - } - } - - // If the wait strategy wants us to be registered with the reactor - // then we do so. - int ret = base_transport->wait_strategy ()->register_handler (); - - if (ret != 0 && TAO_debug_level > 0) - { - ACE_DEBUG ((LM_DEBUG, - ACE_LIB_TEXT ("(%P|%t) IIOP_Connector::connect ") - ACE_LIB_TEXT ("could not add the new connection to reactor \n"))); - } - - // No need to _duplicate and release since base_transport - // is going out of scope. transport now has control of base_transport. - transport = base_transport; - - return 0; -} - -TAO_SSLIOP_Credentials * -TAO_SSLIOP_Connector::retrieve_credentials (TAO_Stub *stub, - SSL *ssl - ACE_ENV_ARG_DECL) -{ - // Check if the user overrode the default invocation credentials. - CORBA::Policy_var policy = - stub->get_policy (Security::SecInvocationCredentialsPolicy - ACE_ENV_ARG_PARAMETER); - ACE_CHECK_RETURN (TAO_SSLIOP_Credentials::_nil ()); - - SecurityLevel2::InvocationCredentialsPolicy_var creds_policy = - SecurityLevel2::InvocationCredentialsPolicy::_narrow ( - policy.in () - ACE_ENV_ARG_PARAMETER); - ACE_CHECK_RETURN (TAO_SSLIOP_Credentials::_nil ()); - - TAO_SSLIOP_Credentials_var ssliop_credentials; - - // Set the Credentials (X.509 certificates and corresponding private - // keys) to be used for this invocation. - if (!CORBA::is_nil (creds_policy.in ())) - { - SecurityLevel2::CredentialsList_var creds_list = - creds_policy->creds (ACE_ENV_SINGLE_ARG_PARAMETER); - ACE_CHECK_RETURN (TAO_SSLIOP_Credentials::_nil ()); - - if (creds_list->length () > 0) - { - // Only use the first credential. All others are supposed - // to be used for delegation but SSLIOP in CSIv1 does not - // support delegation. (Compare to CSIv2.) - SecurityLevel2::Credentials_ptr credentials = - creds_list[(CORBA::ULong) 0]; - - ssliop_credentials = - TAO_SSLIOP_Credentials::_narrow (credentials - ACE_ENV_ARG_PARAMETER); - ACE_CHECK_RETURN (TAO_SSLIOP_Credentials::_nil ()); - - if (!CORBA::is_nil (ssliop_credentials.in ())) - { - TAO_SSLIOP_X509_var x509 = ssliop_credentials->x509 (); - if (::SSL_use_certificate (ssl, x509.in ()) != 1) - return TAO_SSLIOP_Credentials::_nil (); - - TAO_SSLIOP_EVP_PKEY_var evp = ssliop_credentials->evp (); - if (evp.in () != 0 - && ::SSL_use_PrivateKey (ssl, evp.in ()) != 1) - { - // Invalidate the certificate we just set. - (void) ::SSL_use_certificate (ssl, 0); - return TAO_SSLIOP_Credentials::_nil (); - } - } - } - } - else - { - // Use the default certificate and private key, i.e. the one set - // in the SSL_CTX that was used when creating the SSL data - // structure. - TAO_SSLIOP_Credentials_ptr c = ssliop_credentials.out (); - ACE_NEW_THROW_EX (c, - TAO_SSLIOP_Credentials (::SSL_get_certificate (ssl), - ::SSL_get_privatekey (ssl)), - CORBA::NO_MEMORY ()); - ACE_CHECK_RETURN (TAO_SSLIOP_Credentials::_nil ()); - } - - return ssliop_credentials._retn (); -} diff --git a/TAO/orbsvcs/orbsvcs/SSLIOP/SSLIOP_Factory.cpp b/TAO/orbsvcs/orbsvcs/SSLIOP/SSLIOP_Factory.cpp deleted file mode 100644 index 76870c5a576..00000000000 --- a/TAO/orbsvcs/orbsvcs/SSLIOP/SSLIOP_Factory.cpp +++ /dev/null @@ -1,425 +0,0 @@ -#include "SSLIOP_Factory.h" -#include "SSLIOP_Acceptor.h" -#include "SSLIOP_Connector.h" -#include "SSLIOP_ORBInitializer.h" - -#include "orbsvcs/Security/Security_ORBInitializer.h" // @todo: - // should go away - -#include "tao/debug.h" - -#include "ace/SSL/SSL_Context.h" - - -ACE_RCSID (TAO_SSLIOP, - SSLIOP_Factory, - "$Id$") - - -static const char prefix_[] = "iiop"; - -TAO_SSLIOP_Protocol_Factory::TAO_SSLIOP_Protocol_Factory (void) - : TAO_Protocol_Factory (IOP::TAG_INTERNET_IOP), - major_ (TAO_DEF_GIOP_MAJOR), - minor_ (TAO_DEF_GIOP_MINOR), - qop_ (Security::SecQOPIntegrityAndConfidentiality) -{ -} - -TAO_SSLIOP_Protocol_Factory::~TAO_SSLIOP_Protocol_Factory (void) -{ -} - -int -TAO_SSLIOP_Protocol_Factory::match_prefix (const ACE_CString &prefix) -{ - // Check for the proper prefix for this protocol. - return (ACE_OS::strcasecmp (prefix.c_str (), ::prefix_) == 0); -} - -const char * -TAO_SSLIOP_Protocol_Factory::prefix (void) const -{ - return ::prefix_; -} - -char -TAO_SSLIOP_Protocol_Factory::options_delimiter (void) const -{ - return '/'; -} - -TAO_Acceptor * -TAO_SSLIOP_Protocol_Factory::make_acceptor (void) -{ - TAO_Acceptor *acceptor = 0; - - ACE_NEW_RETURN (acceptor, - TAO_SSLIOP_Acceptor (this->qop_), - 0); - - return acceptor; -} - -int -TAO_SSLIOP_Protocol_Factory::init (int argc, - char* argv[]) -{ - char *certificate_path = 0; - char *private_key_path = 0; - char *dhparams_path = 0; - - int certificate_type = -1; - int private_key_type = -1; - int dhparams_type = -1; - - int prevdebug = -1; - - // Force the Singleton instance to be initialized/instantiated. - // Some SSLIOP option combinations below will result in the - // Singleton instance never being initialized. In that case, - // problems may occur later on due to lack of initialization of the - // underlying SSL library (e.g. OpenSSL), which occurs when an - // ACE_SSL_Context is instantiated. - // - // The code is cleaner this way anyway. - ACE_SSL_Context * ssl_ctx = ACE_SSL_Context::instance (); - ACE_ASSERT (ssl_ctx != 0); - - for (int curarg = 0; curarg != argc; ++curarg) - { - if ((ACE_OS::strcasecmp (argv[curarg], - "-verbose") == 0) - || (ACE_OS::strcasecmp (argv[curarg], - "-v") == 0)) - { - if (TAO_debug_level == 0) - { - prevdebug = TAO_debug_level; - TAO_debug_level = 1; - } - } - - else if (ACE_OS::strcasecmp (argv[curarg], - "-SSLNoProtection") == 0) - { - // Enable the eNULL cipher. Note that enabling the "eNULL" - // cipher only disables encryption. However, certificate - // exchanges will still occur. - if (::SSL_CTX_set_cipher_list (ssl_ctx->context (), - "DEFAULT:eNULL") == 0) - { - if (TAO_debug_level > 0) - ACE_DEBUG ((LM_ERROR, - ACE_TEXT ("(%P|%t) Unable to set eNULL ") - ACE_TEXT ("SSL cipher in SSLIOP ") - ACE_TEXT ("factory.\n"))); - - return -1; - } - - // This does not disable secure invocations on the server - // side. It merely enables insecure ones. On the client - // side, secure invocations will be disabled unless - // overridden by a SecurityLevel2::QOPPolicy in the object - // reference. - this->qop_ = Security::SecQOPNoProtection; - } - - else if (ACE_OS::strcasecmp (argv[curarg], - "-SSLCertificate") == 0) - { - curarg++; - if (curarg < argc) - { - char *lasts = 0; - const char *type_name = - ACE_OS::strtok_r (argv[curarg], ":", &lasts); - certificate_path = - ACE_OS::strtok_r (0, ":", &lasts); - - if (ACE_OS::strcasecmp (type_name, "ASN1") == 0) - { - certificate_type = SSL_FILETYPE_ASN1; - } - else if (ACE_OS::strcasecmp (type_name, "PEM") == 0) - { - certificate_type = SSL_FILETYPE_PEM; - } - } - } - - else if (ACE_OS::strcasecmp (argv[curarg], - "-SSLPrivateKey") == 0) - { - curarg++; - if (curarg < argc) - { - char *lasts = 0; - const char *type_name = - ACE_OS::strtok_r (argv[curarg], ":", &lasts); - private_key_path = - ACE_OS::strtok_r (0, ":", &lasts); - - if (ACE_OS::strcasecmp (type_name, "ASN1") == 0) - { - private_key_type = SSL_FILETYPE_ASN1; - } - else if (ACE_OS::strcasecmp (type_name, "PEM") == 0) - { - private_key_type = SSL_FILETYPE_PEM; - } - } - } - - else if (ACE_OS::strcasecmp (argv[curarg], - "-SSLAuthenticate") == 0) - { - curarg++; - if (curarg < argc) - { - int mode = SSL_VERIFY_NONE; - if (ACE_OS::strcasecmp (argv[curarg], "NONE") == 0) - { - mode = SSL_VERIFY_NONE; - } - else if (ACE_OS::strcasecmp (argv[curarg], "SERVER") == 0) - { - mode = SSL_VERIFY_PEER; - } - else if (ACE_OS::strcasecmp (argv[curarg], "CLIENT") == 0 - || ACE_OS::strcasecmp (argv[curarg], - "SERVER_AND_CLIENT") == 0) - { - mode = SSL_VERIFY_PEER | SSL_VERIFY_FAIL_IF_NO_PEER_CERT; - } - - ssl_ctx->default_verify_mode (mode); - } - } - - else if (ACE_OS::strcasecmp (argv[curarg], - "-SSLDHparams") == 0) - { - curarg++; - if (curarg < argc) - { - char *lasts = 0; - const char *type_name = - ACE_OS::strtok_r (argv[curarg], ":", &lasts); - dhparams_path = ACE_OS::strtok_r (0, ":", &lasts); - - if (ACE_OS::strcasecmp (type_name, "ASN1") == 0) - { - dhparams_type = SSL_FILETYPE_ASN1; - } - else if (ACE_OS::strcasecmp (type_name, "PEM") == 0) - { - dhparams_type = SSL_FILETYPE_PEM; - } - } - } - - } - - // Load in the DH params. If there was a file explicitly specified, - // then we do that here, otherwise we load them in from the cert file. - // Note that we only do this on the server side, I think so we might - // need to defer this 'til later in the acceptor or something... - if (dhparams_path == 0) - { - // If the user didn't explicitly specify a DH parameters file, we - // also might find it concatenated in the certificate file. - // So, we set the dhparams to that if it wasn't explicitly set. - dhparams_path = certificate_path; - dhparams_type = certificate_type; - } - - if (dhparams_path != 0) - { - if (ssl_ctx->dh_params (dhparams_path, - dhparams_type) != 0) - { - if (dhparams_path != certificate_path) - { - // We only want to fail catastrophically if the user specified - // a dh parameter file and we were unable to actually find it - // and load from it. - if (TAO_debug_level > 0) - ACE_DEBUG ((LM_ERROR, - ACE_TEXT ("(%P|%t) SSLIOP_Factory: ") - ACE_TEXT ("unable to set ") - ACE_TEXT ("DH parameters <%s>"), - dhparams_path)); - return -1; - } - else - { - if (TAO_debug_level > 0) - ACE_DEBUG ((LM_INFO, - ACE_TEXT ("(%P|%t) SSLIOP_Factory: ") - ACE_TEXT ("No DH parameters found in ") - ACE_TEXT ("certificate <%s>; either none ") - ACE_TEXT ("are needed (RSA) or \"badness\"") - ACE_TEXT ("will ensue later.\n"), - dhparams_path)); - } - } - else - { - if (TAO_debug_level > 0) - ACE_DEBUG ((LM_INFO, - ACE_TEXT ("(%P|%t) SSLIOP loaded ") - ACE_TEXT ("Diffie-Hellman params ") - ACE_TEXT ("from %s\n"), - dhparams_path)); - } - } - - // The certificate must be set before the private key since the - // ACE_SSL_Context attempts to check the private key for - // consistency. That check requires the certificate to be available - // in the underlying SSL_CTX. - if (certificate_path != 0) - { - if (ssl_ctx->certificate (certificate_path, - certificate_type) != 0) - { - if (TAO_debug_level > 0) - ACE_DEBUG ((LM_ERROR, - ACE_TEXT ("(%P|%t) Unable to set ") - ACE_TEXT ("SSL certificate <%s> ") - ACE_TEXT ("in SSLIOP factory.\n"), - certificate_path)); - - return -1; - } - else - { - if (TAO_debug_level > 0) - ACE_DEBUG ((LM_INFO, - ACE_TEXT ("(%P|%t) SSLIOP loaded ") - ACE_TEXT ("SSL certificate ") - ACE_TEXT ("from %s\n"), - certificate_path)); - } - } - - if (private_key_path != 0) - { - if (ssl_ctx->private_key (private_key_path, - private_key_type) != 0) - { - if (TAO_debug_level > 0) - { - ACE_DEBUG ((LM_ERROR, - ACE_TEXT ("(%P|%t) Unable to set ") - ACE_TEXT ("SSL private key ") - ACE_TEXT ("<%s> in SSLIOP factory.\n"), - private_key_path)); - } - - return -1; - } - else - { - if (TAO_debug_level > 0) - ACE_DEBUG ((LM_INFO, - ACE_TEXT ("(%P|%t) SSLIOP loaded ") - ACE_TEXT ("Private Key ") - ACE_TEXT ("from %s\n"), - private_key_path)); - } - } - - if (this->register_orb_initializer () != 0) - return -1; - - if (prevdebug != -1) - TAO_debug_level = prevdebug; - - return 0; -} - -int -TAO_SSLIOP_Protocol_Factory::register_orb_initializer (void) -{ - ACE_DECLARE_NEW_CORBA_ENV; - ACE_TRY - { - // @todo: This hard-coding should be fixed once SECIOP is - // supported. - // Register the Security ORB initializer. - PortableInterceptor::ORBInitializer_ptr tmp; - ACE_NEW_THROW_EX (tmp, - TAO_Security_ORBInitializer, - CORBA::NO_MEMORY ( - CORBA::SystemException::_tao_minor_code ( - TAO_DEFAULT_MINOR_CODE, - ENOMEM), - CORBA::COMPLETED_NO)); - ACE_TRY_CHECK; - - PortableInterceptor::ORBInitializer_var initializer = tmp; - - PortableInterceptor::register_orb_initializer (initializer.in () - ACE_ENV_ARG_PARAMETER); - ACE_TRY_CHECK; - - // Register the SSLIOP ORB initializer. - // PortableInterceptor::ORBInitializer_ptr tmp; - ACE_NEW_THROW_EX (tmp, - TAO_SSLIOP_ORBInitializer (this->qop_), - CORBA::NO_MEMORY ( - CORBA::SystemException::_tao_minor_code ( - TAO_DEFAULT_MINOR_CODE, - ENOMEM), - CORBA::COMPLETED_NO)); - ACE_TRY_CHECK; - - //PortableInterceptor::ORBInitializer_var initializer = tmp; - initializer = tmp; - - PortableInterceptor::register_orb_initializer (initializer.in () - ACE_ENV_ARG_PARAMETER); - ACE_TRY_CHECK; - } - ACE_CATCHANY - { - ACE_PRINT_EXCEPTION (ACE_ANY_EXCEPTION, - "Unable to register SSLIOP ORB " - "initializer."); - return -1; - } - ACE_ENDTRY; - - return 0; -} - - -TAO_Connector * -TAO_SSLIOP_Protocol_Factory::make_connector (void) -{ - TAO_Connector *connector = 0; - - ACE_NEW_RETURN (connector, - TAO_SSLIOP_Connector (this->qop_), - 0); - return connector; -} - -int -TAO_SSLIOP_Protocol_Factory::requires_explicit_endpoint (void) const -{ - return 0; -} - -ACE_STATIC_SVC_DEFINE (TAO_SSLIOP_Protocol_Factory, - ACE_TEXT ("SSLIOP_Factory"), - ACE_SVC_OBJ_T, - &ACE_SVC_NAME (TAO_SSLIOP_Protocol_Factory), - ACE_Service_Type::DELETE_THIS | - ACE_Service_Type::DELETE_OBJ, - 0) - -ACE_FACTORY_DEFINE (TAO_SSLIOP, TAO_SSLIOP_Protocol_Factory) diff --git a/TAO/orbsvcs/orbsvcs/SSLIOP/SSLIOP_Factory.h b/TAO/orbsvcs/orbsvcs/SSLIOP/SSLIOP_Factory.h deleted file mode 100644 index 1d3ad9f9200..00000000000 --- a/TAO/orbsvcs/orbsvcs/SSLIOP/SSLIOP_Factory.h +++ /dev/null @@ -1,93 +0,0 @@ -// -*- C++ -*- - -//============================================================================= -/** - * @file SSLIOP_Factory.h - * - * $Id$ - * - * SSLIOP implementation of PP Framework Protocol_Factory interface. - * - * @author Carlos O'Ryan <coryan@uci.edu> - * @author Ossama Othman <ossama@uci.edu> - */ -//============================================================================= - - -#ifndef TAO_SSLIOP_FACTORY_H -#define TAO_SSLIOP_FACTORY_H - -#include "ace/pre.h" - -#include "SSLIOP_Export.h" - -#if !defined (ACE_LACKS_PRAGMA_ONCE) -# pragma once -#endif /* ACE_LACKS_PRAGMA_ONCE */ - -#include "orbsvcs/SecurityC.h" - -#include "tao/Protocol_Factory.h" - -#include "ace/Service_Config.h" - -class TAO_Acceptor; -class TAO_Connector; - -/** - * @class TAO_SSLIOP_Protocol_Factory - * - * @brief SSLIOP-specific protocol factory implementation. - * - * This class implements the SSLIOP-specific protocol factory - * implementation for use in TAO's pluggable protocols framework. - */ -class TAO_SSLIOP_Export TAO_SSLIOP_Protocol_Factory - : public TAO_Protocol_Factory -{ -public: - TAO_SSLIOP_Protocol_Factory (void); - virtual ~TAO_SSLIOP_Protocol_Factory (void); - - // = Service Configurator hooks. - virtual int init (int argc, char* argv[]); - // Dynamic linking hook - - /// Create and register the SSLIOP ORB initializer. - int register_orb_initializer (void); - - virtual int match_prefix (const ACE_CString &prefix); - // Verify prefix is a match - - virtual const char *prefix (void) const; - // Returns the prefix used by the protocol. - - virtual char options_delimiter (void) const; - // Return the character used to mark where an endpoint ends and - // where its options begin. - - // = Check Protocol_Factory.h for a description of these methods. - virtual TAO_Acceptor *make_acceptor (void); - virtual TAO_Connector *make_connector (void); - virtual int requires_explicit_endpoint (void) const; - -private: - - /// Changing the version number can be used to provide backwards - /// compatibility with old clients. - int major_; - int minor_; - - /// Default quality-of-protection settings for the SSLIOP pluggable - /// protocol. - Security::QOP qop_; - -}; - -ACE_STATIC_SVC_DECLARE_EXPORT (TAO_SSLIOP, TAO_SSLIOP_Protocol_Factory) -ACE_STATIC_SVC_REQUIRE (TAO_SSLIOP_Protocol_Factory) -ACE_FACTORY_DECLARE (TAO_SSLIOP, TAO_SSLIOP_Protocol_Factory) - -#include "ace/post.h" - -#endif /* TAO_SSLIOP_FACTORY_H */ @@ -1597,7 +1597,6 @@ Tommy Persson <tpe@ida.lie.se> Christian Barheine <cbarheine@sympatec.com Ole Husgaard <osh@sparre.dk> Victor Kirk <vkirk@technology.serco.com> -Sandeep Neema <neemask@corvette.vuse.vanderbilt.edu> I would particularly like to thank Paul Stephenson, who worked with me at Ericsson in the early 1990's. Paul devised the recursive Makefile diff --git a/protocols/ace/RMCast/README b/protocols/ace/RMCast/README deleted file mode 100644 index 2dd0c5d9cfc..00000000000 --- a/protocols/ace/RMCast/README +++ /dev/null @@ -1,57 +0,0 @@ -# $Id$ - - This directory will contain a simple, small-scale reliable -multicast framework for ACE. The framework is based on the ASX -components of the ACE library: the protocol is implemented as a stack -of interchangeable "modules", each one in charge of a very small task. -For example, one module implements fragmentation and reassembly, other -modules implement retransmission, send ACK and NAK messages, and -maintain receiver membership. - - The modules are replaced to achieve different levels of -reliability. For example, the retransmission module can be either the -"Best_Effort", "Semi_Reliable" or "Reliable" implementation. In the -first case no retransmissions are performed, but lost messages are -detected and reported to the receiver. The "Semi_Reliable" case -messages are held for a pre-specified amount of time, and -re-transmited if requested, but it is possible to loose some messages -if multiple re-transmissions fail. As in the "Best_Effort" case the -lost messages are detected and flagged to the application. Finally -in the "Reliable" mode the senders are flowed controlled until enough -messages are successfully transmitted. - - In general the stack looks like this: - - -SENDER: - ----------------------------------------------------------------- -Buffering : Save lost messages -Retransmission : Retransmit ----------------------------------------------------------------- -Fragmentation : Fragment messages in smaller chunks -Reassembly : and ensure that the IOVMAX limit is not - : reached ----------------------------------------------------------------- -Tranport : Encapsulate the specific transport media - : such as TCP/IP, ATM, or shared memory - : Demuxes incoming data to the right chain - : Change control messages and data messages - : to the right dynamic types. ----------------------------------------------------------------- - -RECEIVER: - ----------------------------------------------------------------- -Lost detection : Detect lost messages and send control - : messages back ----------------------------------------------------------------- -Reassembly : Reassemble messages, fragment control -Fragmentation : data ----------------------------------------------------------------- -Transport : Group membership, ACT reception, - : handle keep-alive messages... ----------------------------------------------------------------- - - -@@ TODO: Piggybacking... diff --git a/protocols/ace/RMCast/RMCast_Export.h b/protocols/ace/RMCast/RMCast_Export.h deleted file mode 100644 index 51257c4d682..00000000000 --- a/protocols/ace/RMCast/RMCast_Export.h +++ /dev/null @@ -1,44 +0,0 @@ -// -*- C++ -*- -// $Id$ -// Definition for Win32 Export directives. -// This file is generated automatically by -// generate_export_file.pl -// ------------------------------ -#if !defined (ACE_RMCAST_EXPORT_H) -#define ACE_RMCAST_EXPORT_H - -#include "ace/config-all.h" - -#if defined (ACE_AS_STATIC_LIBS) && !defined (ACE_RMCAST_HAS_DLL) -# define ACE_RMCAST_HAS_DLL 0 -#endif /* ACE_AS_STATIC_LIBS && ACE_RMCAST_HAS_DLL */ - -#if !defined (ACE_RMCAST_HAS_DLL) -#define ACE_RMCAST_HAS_DLL 1 -#endif /* ! ACE_RMCAST_HAS_DLL */ - -#if defined (ACE_RMCAST_HAS_DLL) -# if (ACE_RMCAST_HAS_DLL == 1) -# if defined (ACE_RMCAST_BUILD_DLL) -# define ACE_RMCast_Export ACE_Proper_Export_Flag -# define ACE_RMCAST_SINGLETON_DECLARATION(T) ACE_EXPORT_SINGLETON_DECLARATION (T) -# define ACE_RMCAST_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_EXPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) -# else -# define ACE_RMCast_Export ACE_Proper_Import_Flag -# define ACE_RMCAST_SINGLETON_DECLARATION(T) ACE_IMPORT_SINGLETON_DECLARATION (T) -# define ACE_RMCAST_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_IMPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) -# endif /* ACE_RMCAST_BUILD_DLL */ -# else -# define ACE_RMCast_Export -# define ACE_RMCAST_SINGLETON_DECLARATION(T) -# define ACE_RMCAST_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) -# endif /* ! ACE_RMCAST_HAS_DLL == 1 */ -#else -# define ACE_RMCast_Export -# define ACE_RMCAST_SINGLETON_DECLARATION(T) -# define ACE_RMCAST_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) -#endif /* ACE_RMCAST_HAS_DLL */ - -#endif /* ACE_RMCAST_EXPORT_H */ - -// End of auto generated file. diff --git a/tests/run_tests.lst b/tests/run_tests.lst deleted file mode 100644 index cc304f80bda..00000000000 --- a/tests/run_tests.lst +++ /dev/null @@ -1,90 +0,0 @@ -ARGV_Test -Basic_Types_Test -Bound_Ptr_Test -chorus/Env_Value_Test -Capabilities_Test -Config_Test -Atomic_Op_Test -Auto_IncDec_Test -Object_Manager_Test -CDR_Array_Test -CDR_File_Test -CDR_Test -Dirent_Test -Semaphore_Test -TSS_Test -Log_Msg_Test -Timeprobe_Test -Time_Value_Test -High_Res_Timer_Test -SString_Test -Collection_Test -Unicos/libDLL_Test/DLL_Test -OTHER/chorus/LynxOS/Unicos/Naming_Test -Handle_Set_Test -OrdMultiSet_Test -chorus/Unicos/Mem_Map_Test -MEM_Stream_Test -Malloc_Test -Unicos/SV_Shared_Memory_Test -chorus/Unicos/MM_Shared_Memory_Test -DISABLED/Signal_Test -Sigset_Ops_Test -Timer_Queue_Test -DISABLED/MT_Reactor_Timer_Test -SOCK_Connector_Test -LynxOS/SOCK_Send_Recv_Test -Task_Test -Unicos/Thread_Manager_Test -DISABLED/Process_Manager_Test -LynxOS/Thread_Pool_Test -Future_Test -Future_Set_Test -RB_Tree_Test -Reactors_Test -Reactor_Exceptions_Test -Reactor_Notify_Test -Reactor_Timer_Test -chorus/Reactor_Performance_Test -Notify_Performance_Test -Reader_Writer_Test -chorus/Priority_Reactor_Test -chorus/SOCK_Test -chorus/MT_SOCK_Test -SPIPE_Test -UPIPE_SAP_Test -Barrier_Test -Svc_Handler_Test -Buffer_Stream_Test -Priority_Buffer_Test -Dynamic_Priority_Test -Recursive_Mutex_Test -Reverse_Lock_Test -DISABLED/netsvcs_main/TOKEN/chorus/Unicos/Time_Service_Test -DISABLED/TOKEN/chorus/Unicos/Tokens_Test -Cache_Map_Manager_Test -LynxOS/Cached_Conn_Test -Cached_Accept_Conn_Test -Map_Manager_Test -Hash_Map_Manager_Test -Lazy_Map_Manager_Test -Hash_Map_Bucket_Iterator_Test -Map_Test -Message_Queue_Notifications_Test -chorus/Message_Queue_Test -chorus/Message_Queue_Test_Ex -chorus/Simple_Message_Block_Test -chorus/Message_Block_Test -chorus/Pipe_Test -chorus/Process_Mutex_Test -chorus/Thread_Mutex_Test -chorus/LynxOS/Process_Strategy_Test -Service_Config_Test -Unicos/Priority_Task_Test -IOStream_Test -Enum_Interfaces_Test -chorus/Upgradable_RW_Test -chorus/Conn_Test -DISABLED/New_Fail_Test -OS_Test -Refcounted_Auto_Ptr_Test |