34 unsigned idx = evt->
index;
44 self->scratch.clear();
48 self->members[idx].pvif->put(self->scratch, evt->
dbe_mask, pfl);
53 DBManyLocker L(info.
locker);
54 FOREACH(PDBGroupPV::Info::triggers_t::const_iterator, it, end, info.
triggers)
59 self->members[
i].pvif->put(self->scratch, evt->
dbe_mask, FL.pfl);
66 assert(self->initial_waits>0);
67 self->initial_waits--;
72 assert(self->initial_waits>0);
73 self->initial_waits--;
77 if(self->initial_waits==0) {
78 self->interested_iterating =
true;
80 FOREACH(PDBGroupPV::interested_t::const_iterator, it, end, self->interested) {
82 mon.
post(G, self->scratch);
88 assert(self->interested_iterating);
90 while(!self->interested_add.empty()) {
91 PDBGroupPV::interested_t::iterator first(self->interested_add.begin());
92 self->interested.insert(*first);
93 self->interested_add.erase(first);
96 temp.swap(self->interested_remove);
97 for(PDBGroupPV::interested_remove_t::iterator it(temp.begin()),
98 end(temp.end()); it != end; ++it)
100 self->interested.erase(static_cast<PDBGroupMonitor*>(it->get()));
103 self->interested_iterating =
false;
105 self->finalizeMonitor();
110 }
catch(std::tr1::bad_weak_ptr&){
116 }
catch(std::exception& e){
117 std::cerr<<
"Unhandled exception in pdb_group_event(): "<<e.what()<<
"\n"
#define assert(exp)
Declare that a condition should be true.
#define FOREACH(ITERTYPE, IT, END, C)
shared_ptr< T > static_pointer_cast(shared_ptr< U > const &r) BOOST_NOEXCEPT
std::set< BaseMonitor::shared_pointer > interested_remove_t
#define SHOW_EXCEPTION(EI)
bool had_initial_PROPERTY
bool post(guard_t &guard, const epics::pvData::BitSet &updated, no_overflow)
post update if queue not full, if full return false w/o overflow