/*! Place Fix messages on outbound message queue as a single batch. \param msgs messages to send \param destroy if true delete after send \return count of messages written */ size_t write_batch(const std::vector<Message *>& msgs, bool destroy) { if (msgs.empty()) return 0; if (msgs.size() == 1) return write(msgs.front(), destroy) ? 1 : 0; size_t result(0); f8_scoped_spin_lock guard(_con_spl); for (std::vector<Message *>::const_iterator itr(msgs.begin()), eitr(msgs.end()), litr(eitr-1); itr != eitr; ++itr) { Message* msg = *itr; msg->set_end_of_batch(itr == litr); if (_pmodel == pm_pipeline) // pipeline mode ignores destroy flag { _msg_queue.try_push(msg); ++result; continue; } if (_session.send_process(msg)) ++result; } if (destroy && _pmodel != pm_pipeline) { for (std::vector<Message *>::const_iterator itr(msgs.begin()), eitr(msgs.end()); itr != eitr; ++itr) { std::unique_ptr<Message> smsg(*itr); } } ///@todo: need assert on result==msgs.size() return result; }
static inline void printFace(std::ostream &out, Face *f) { out << "Face: " << f->getID() << std::endl; FaceEdgeIterator eitr(f); Edge *e = NULL; int edge = 0; while ((e = eitr.next())) { out << "Edge " << edge << " with id: " << e->getID() << " from " << e->Org()->pos << " to " << e->Dest()->pos << std::endl; ++edge; } }