#pragma once #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include namespace fluid { namespace client { class DataSetWriterClient : public FluidBaseClient, OfflineIn, OfflineOut { public: FLUID_DECLARE_PARAMS( DataSetClientRef::makeParam("dataSet", "DataSet Name"), StringParam("labelPrefix","Label Prefix"), LongParam("labelOffset", "Label Counter Offset", 0), BufferParam("buf", "Data Buffer") ); DataSetWriterClient(ParamSetViewType& p) : mParams(p) {} template Result process(FluidContext&) { auto dataset = get<0>().get(); if (auto datasetPtr = dataset.lock()) { std::stringstream ss; ss << get<1>(); index labelOffset = get<2>(); if(labelOffset >= 0) ss << labelOffset + (mCounter++); auto buf = get<3>(); return datasetPtr->addPoint(ss.str(), buf); } else return {Result::Status::kError, "No dataset"}; } private: index mCounter{0}; }; using NRTThreadedDataSetWriter = NRTThreadingAdaptor>; } // namespace client } // namespace fluid