inline void order_processor::send_order(const ats::order& order) { std::type_index order_type(typeid(order)); /* switch (order_type) { case typeid(ats::market_order): send_market_order(static_cast<const ats::market_order&>(order)); break; default: break; }*/ if (order_type == typeid(ats::market_order)) send_market_order(static_cast<const ats::market_order&>(order)); else if (order_type == typeid(ats::stop_order)) send_stop_order(static_cast<const ats::stop_order&>(order)); }
void merge(std::ostream & out, order_type & order = order_type()) { flush(); close(); std::string const sorttemp = prefix + libmaus2::util::ArgInfo::getDefaultTmpFileName(std::string()) + ".sorttmp"; libmaus2::util::TempFileRemovalContainer::addTempFile(sorttemp); typedef typename libmaus2::sorting::SerialisingSortingBufferedOutputFile<data_type,order_type> sorter_type; typename sorter_type::unique_ptr_type SSBOF( new sorter_type(sorttemp,order) ); data_type D; for ( uint64_t i = 0; i < Vfn.size(); ++i ) { libmaus2::aio::InputStreamInstance::unique_ptr_type PISI(new libmaus2::aio::InputStreamInstance(Vfn[i])); std::istream & ISI = *PISI; while ( ISI && ISI.peek() != std::istream::traits_type::eof() ) { D.deserialise(ISI); SSBOF->put(D); } PISI.reset(); libmaus2::aio::FileRemoval::removeFile(Vfn[i]); } typename sorter_type::merger_ptr_type Pmerger(SSBOF->getMerger()); while ( Pmerger->getNext(D) ) D.serialise(out); Pmerger.reset(); SSBOF.reset(); libmaus2::aio::FileRemoval::removeFile(sorttemp); out.flush(); }
void merge(std::string const & fn, order_type & order = order_type()) { libmaus2::aio::OutputStreamInstance OSI(fn); merge<data_type,order_type>(OSI,order); }