#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(StringParam("label", "Label"), BufferParam("buf", "Data Buffer"), DataSetClientRef::makeParam("dataSet", "DataSet Name")); DataSetWriterClient(ParamSetViewType& p) : mParams(p) {} template Result process(FluidContext&) { auto& idx = get<0>(); auto buf = get<1>(); auto dataset = get<2>().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"}; } }; using NRTThreadedDataSetWriter = NRTThreadingAdaptor>; } // namespace client } // namespace fluid