diff options
author | coryan <coryan@ae88bc3d-4319-0410-8dbf-d08b4c9d3795> | 1998-10-12 04:37:31 +0000 |
---|---|---|
committer | coryan <coryan@ae88bc3d-4319-0410-8dbf-d08b4c9d3795> | 1998-10-12 04:37:31 +0000 |
commit | 24cbc40a48c552c4b766b0a91a8c051cd1398270 (patch) | |
tree | 1a1baa9b20025571a3e3050982e6ce419ae2e18d /TAO/orbsvcs/orbsvcs/Event/Dispatching_Modules.cpp | |
parent | 9f2bed358674b5a5db5aff141622c68fa84800a5 (diff) | |
download | ATCD-24cbc40a48c552c4b766b0a91a8c051cd1398270.tar.gz |
ChangeLogTag:Sun Oct 11 23:18:19 1998 Carlos O'Ryan <coryan@cs.wustl.edu>
Diffstat (limited to 'TAO/orbsvcs/orbsvcs/Event/Dispatching_Modules.cpp')
-rw-r--r-- | TAO/orbsvcs/orbsvcs/Event/Dispatching_Modules.cpp | 56 |
1 files changed, 44 insertions, 12 deletions
diff --git a/TAO/orbsvcs/orbsvcs/Event/Dispatching_Modules.cpp b/TAO/orbsvcs/orbsvcs/Event/Dispatching_Modules.cpp index 505e3b32ed8..e3a5e1e547b 100644 --- a/TAO/orbsvcs/orbsvcs/Event/Dispatching_Modules.cpp +++ b/TAO/orbsvcs/orbsvcs/Event/Dispatching_Modules.cpp @@ -42,27 +42,64 @@ ACE_TIMEPROBE_EVENT_DESCRIPTIONS (TAO_Dispatching_Modules_Timeprobe_Description, // ************************************************************ +ACE_ES_Dispatch_Request:: +ACE_ES_Dispatch_Request (ACE_Push_Consumer_Proxy *consumer, + const TAO_EC_Event &event, + RtecScheduler::handle_t rt_info) + : priority_ (0), + rt_info_ (rt_info), + dispatching_module_ (0), + use_single_event_ (0), + consumer_ (consumer), + event_set_ (1) +{ + this->event_set_.set (event, 0); +} + void ACE_ES_Dispatch_Request::make_copy (RtecEventComm::EventSet &dest) const { if (use_single_event_) { - dest.length (1); - dest[0] = single_event_; + // The RtecEventComm::EventSet will hold a pointer to the + // buffer, without owning it, thus it is not removed! + // @@ TODO Check what happens in the collocated case. + dest.replace (1, 1, + ACE_const_cast(RtecEventComm::Event*, + &this->single_event_.event ()), + 0); + } + else if (this->event_set_.size () == 1) + { + dest.replace (1, 1, + ACE_const_cast(RtecEventComm::Event*, + &this->event_set_[0].event ()), + 0); } else { - dest.length (event_set_.length ()); + dest.length (this->event_set_.size ()); - for (CORBA::ULong index=0; index < event_set_.length (); index++) + int c = 0; + for (CORBA::ULong i = 0; i < this->event_set_.size (); ++i) { - RtecEventComm::Event &dest_event = dest[index]; - ACE_ES_Event_Container_var &source_event_var = ((ACE_ES_Event_Container_var &) event_set_[index]); - dest_event = *(source_event_var.operator->()); + if (this->event_set_[i].empty ()) + continue; + dest[c] = this->event_set_[i].event (); + c++; } + dest.length (c); } } +void +ACE_ES_Dispatch_Request::append_event (const TAO_EC_Event& event) +{ + size_t size = this->event_set_.size (); + if (this->event_set_.size (size + 1) == 0) + this->event_set_.set (event, size); +} + int ACE_ES_Dispatch_Request::execute (u_long &command_action) { @@ -672,12 +709,7 @@ ACE_ES_RTU_Dispatching::push (ACE_ES_Dispatch_Request *request, } #if defined (ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION) -template class ACE_CORBA_Sequence<ACE_CORBA_var<ACE_ES_Event_Container> >; -template void operator+=(ACE_CORBA_Sequence<ACE_CORBA_var<ACE_ES_Event_Container> > &, ACE_CORBA_var<ACE_ES_Event_Container> const &); #elif defined(ACE_HAS_TEMPLATE_INSTANTIATION_PRAGMA) -#pragma instantiate ACE_CORBA_Sequence<ACE_CORBA_var<ACE_ES_Event_Container> > -#pragma instantiate void operator+=(ACE_CORBA_Sequence<ACE_CORBA_var<ACE_ES_Event_Container> > &, ACE_CORBA_var<ACE_ES_Event_Container> const &) - #endif /* ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION */ |