summaryrefslogtreecommitdiff
path: root/TAO/orbsvcs/FTRT_Event_Service/Event_Service/FT_EventService.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'TAO/orbsvcs/FTRT_Event_Service/Event_Service/FT_EventService.cpp')
-rw-r--r--TAO/orbsvcs/FTRT_Event_Service/Event_Service/FT_EventService.cpp93
1 files changed, 18 insertions, 75 deletions
diff --git a/TAO/orbsvcs/FTRT_Event_Service/Event_Service/FT_EventService.cpp b/TAO/orbsvcs/FTRT_Event_Service/Event_Service/FT_EventService.cpp
index 9d1e3c0b718..277c114122b 100644
--- a/TAO/orbsvcs/FTRT_Event_Service/Event_Service/FT_EventService.cpp
+++ b/TAO/orbsvcs/FTRT_Event_Service/Event_Service/FT_EventService.cpp
@@ -14,73 +14,12 @@
#include "orbsvcs/FtRtEvent/Utils/Log.h"
#include "orbsvcs/FtRtEvent/Utils/RT_Task.h"
#include "orbsvcs/Event/EC_Default_Factory.h"
-
-#ifndef WIN32
-#include <sys/time.h>
-#endif
+#include "Crash_Injector.h"
ACE_RCSID (Event_Service,
FT_EventService,
"$Id$")
-static int time_to_crash;
-
-extern "C" void crash_handler(int)
-{
- ACE_DEBUG((LM_DEBUG, "FTRT_Event_Service crashed\n"));
- exit(1);
-}
-
-class Fault_Event_Service : public TAO_FTEC_Event_Channel
-{
-public:
- Fault_Event_Service(CORBA::ORB_var orb,
- PortableServer::POA_var poa,
- RtecScheduler::Scheduler_var scheduler,
- int fault_no);
-
-private:
- virtual void push (
- const FtRtecEventChannelAdmin::ObjectId & oid,
- const RtecEventComm::EventSet & data
- ACE_ENV_ARG_DECL)
- ACE_THROW_SPEC ((CORBA::SystemException, FtRtecEventComm::InvalidObjectID));
- int msg_count_;
- int fault_no_;
-};
-
-Fault_Event_Service::Fault_Event_Service(CORBA::ORB_var orb,
- PortableServer::POA_var poa,
- RtecScheduler::Scheduler_var scheduler,
- int fault_no)
-: TAO_FTEC_Event_Channel(orb, poa,scheduler), msg_count_(0), fault_no_(fault_no)
-{
-}
-
-void Fault_Event_Service::push (const FtRtecEventChannelAdmin::ObjectId & oid,
- const RtecEventComm::EventSet & data
- ACE_ENV_ARG_DECL)
- ACE_THROW_SPEC ((CORBA::SystemException, FtRtecEventComm::InvalidObjectID))
-{
- if (fault_no_ == msg_count_++) {
-#ifndef WIN32
- if (time_to_crash > 0) {
- signal(SIGALRM, &crash_handler);
- struct itimerval in, out;
- in.it_value.tv_sec = time_to_crash/1000;
- in.it_value.tv_usec = (time_to_crash%1000)*1000;
- setitimer(ITIMER_REAL, &in, &out);
- }
- else
-#endif
- {
- ACE_DEBUG((LM_DEBUG, "FTRT_Event_Service crashing on %d-th message\n", msg_count_-1));
- exit(1);
- }
- }
- TAO_FTEC_Event_Channel::push(oid, data ACE_ENV_ARG_PARAMETER);
-}
-
int ACE_TMAIN (int argc, ACE_TCHAR* argv[])
@@ -95,7 +34,6 @@ FT_EventService::FT_EventService()
, sched_impl_(0)
, membership_(TAO_FTEC_Event_Channel::NONE)
, task_(orb_)
-, fault_no_(-1)
{
}
@@ -153,8 +91,10 @@ FT_EventService::run(int argc, ACE_TCHAR* argv[])
CosNaming::NamingContext::_narrow (naming_obj.in () ACE_ENV_ARG_PARAMETER);
ACE_TRY_CHECK;
- RtecScheduler::Scheduler_var scheduler =
- setup_scheduler(naming_context.in()
+ RtecScheduler::Scheduler_var scheduler =
+
+ setup_scheduler(naming_context.in()
+
ACE_ENV_ARG_PARAMETER);
ACE_CHECK_RETURN(-1);
@@ -165,7 +105,7 @@ FT_EventService::run(int argc, ACE_TCHAR* argv[])
// Activate the Event channel implementation
- Fault_Event_Service ec(orb_, root_poa, scheduler, fault_no_);
+ TAO_FTEC_Event_Channel ec(orb_, root_poa, scheduler);
FtRtecEventChannelAdmin::EventChannel_var ec_ior =
ec.activate(membership_
@@ -175,7 +115,16 @@ FT_EventService::run(int argc, ACE_TCHAR* argv[])
if (report_factory(orb_.in(), ec_ior.in() )==-1)
return -1;
- orb_->run(ACE_ENV_SINGLE_ARG_PARAMETER);
+ Crash_Injector* injector = Crash_Injector::instance();
+
+ while (injector ==0 || !injector->work_done() ) {
+ if (orb_->work_pending(ACE_ENV_SINGLE_ARG_PARAMETER))
+
+ orb_->perform_work(ACE_ENV_SINGLE_ARG_PARAMETER);
+ }
+
+ orb_->shutdown(0 ACE_ENV_ARG_PARAMETER);
+
ACE_TRY_CHECK;
}
ACE_CATCHANY
@@ -186,7 +135,7 @@ FT_EventService::run(int argc, ACE_TCHAR* argv[])
ACE_ENDTRY;
- ACE_Thread_Manager::instance()->wait();
+// ACE_Thread_Manager::instance()->wait();
return 0;
}
@@ -207,7 +156,7 @@ FT_EventService::parse_args (int argc, ACE_TCHAR* argv [])
}
}
- ACE_Get_Opt get_opt (argc, argv, ACE_LIB_TEXT("d:f:jprs:t:"));
+ ACE_Get_Opt get_opt (argc, argv, ACE_LIB_TEXT("d:jprs:"));
int opt;
while ((opt = get_opt ()) != EOF)
@@ -217,9 +166,6 @@ FT_EventService::parse_args (int argc, ACE_TCHAR* argv [])
case 'd':
TAO_FTRTEC::Log::level(ACE_OS::atoi(get_opt.opt_arg ()));
break;
- case 'f':
- this->fault_no_ = ACE_OS::atoi(get_opt.opt_arg ());
- break;
case 'j':
this->membership_ = TAO_FTEC_Event_Channel::BACKUP;
break;
@@ -251,9 +197,6 @@ FT_EventService::parse_args (int argc, ACE_TCHAR* argv [])
this->global_scheduler_ = 0;
}
break;
- case 't':
- time_to_crash = atoi(get_opt.opt_arg ());
- break;
case '?':
default:
ACE_DEBUG ((LM_DEBUG,